diff --git a/LUA/TFS_02/creaturescript firstitems/Installation Instructions.txt b/LUA/TFS_02/creaturescript firstitems/Installation Instructions.txt new file mode 100644 index 0000000..4b60316 --- /dev/null +++ b/LUA/TFS_02/creaturescript firstitems/Installation Instructions.txt @@ -0,0 +1,4 @@ +Step 1: Copy firstitems.lua to /data/creaturescripts/scripts/ folder +-- Edit firstitems.lua with item IDs you want characters to start with on your server. + +Step 2: Restart OT server, and it should work. :) \ No newline at end of file diff --git a/LUA/TFS_02/creaturescript firstitems/firstitems.lua b/LUA/TFS_02/creaturescript firstitems/firstitems.lua new file mode 100644 index 0000000..c0043be --- /dev/null +++ b/LUA/TFS_02/creaturescript firstitems/firstitems.lua @@ -0,0 +1,77 @@ +function onLogin(cid) + local storage = 30055 -- storage value + + local sorcItems = { + 2460, -- Brass helmet + 2465, -- Brass armor + 2190, -- Wand of vortex + 2511, -- Brass shield + 2478, -- Brass legs + 2643, -- Leather boots + 1988, -- Brown backpack + 2050 -- torch + } + local druidItems = { + 2460, -- Brass helmet + 2465, -- Brass armor + 2511, -- Brass shield + 2182, -- Snakebite rod + 2478, -- Brass legs + 2643, -- Leather boots + 1988, -- Brown backpack + 2050 -- torch + } + local pallyItems = { + 2460, -- Brass helmet + 2465, -- Brass armor + 2456, -- Bow + 2478, -- Brass legs + 2643, -- Leather boots + 1988, -- Brown backpack + } + local kinaItems = { + 2460, -- Brass helmet + 2465, -- Brass armor + 2511, -- Brass shield + 2412, -- Katana + 2478, -- Brass legs + 2643, -- Leather boots + 1988, -- Brown backpack + 2050 -- torch + } + + if getPlayerStorageValue(cid, storage) == -1 then + setPlayerStorageValue(cid, storage, 1) + if getPlayerVocation(cid) == 1 then + -- Sorcerer + for i = 1, table.getn(sorcItems), 1 do + doPlayerAddItem(cid, sorcItems[i], 1, FALSE) + end + + elseif getPlayerVocation(cid) == 2 then + -- Druid + for i = 1, table.getn(druidItems), 1 do + doPlayerAddItem(cid, druidItems[i], 1, FALSE) + end + + elseif getPlayerVocation(cid) == 3 then + -- Paladin + for i = 1, table.getn(pallyItems), 1 do + doPlayerAddItem(cid, pallyItems[i], 1, FALSE) + end + -- 8 arrows + doPlayerAddItem(cid, 2544, 8, FALSE) + + elseif getPlayerVocation(cid) == 4 then + -- Knight + for i = 1, table.getn(kinaItems), 1 do + doPlayerAddItem(cid, kinaItems[i], 1, FALSE) + end + end + + -- Common for all + doPlayerAddItem(cid, 2674, 5, FALSE) -- 5 apples + doPlayerAddItem(cid, 2120, 1, FALSE) -- 1 rope + end + return true +end diff --git a/LUA/TFS_02/talkaction shopsystem/talkaction XML.txt b/LUA/TFS_02/talkaction shopsystem/talkaction XML.txt new file mode 100644 index 0000000..2fdffee --- /dev/null +++ b/LUA/TFS_02/talkaction shopsystem/talkaction XML.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LUA/TFS_02/talkaction shopsystem/znoteshop.lua b/LUA/TFS_02/talkaction shopsystem/znoteshop.lua new file mode 100644 index 0000000..3841348 --- /dev/null +++ b/LUA/TFS_02/talkaction shopsystem/znoteshop.lua @@ -0,0 +1,49 @@ +-- Znote Shop v1.0 for Znote AAC on TFS 0.2.13+ Mystic Spirit. +function onSay(cid, words, param) + local storage = 54073 -- Make sure to select non-used storage. This is used to prevent SQL load attacks. + local cooldown = 15 -- in seconds. + + if getPlayerStorageValue(cid, storage) <= os.time() then + setPlayerStorageValue(cid, storage, os.time() + cooldown) + local accid = getAccountNumberByPlayerName(getCreatureName(cid)) + + -- Create the query + local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. accid .. " LIMIT 1;") + + -- Detect if we got any results + if orderQuery ~= false then + -- Fetch order values + local q_id = result.getDataInt(orderQuery, "id") + local q_type = result.getDataInt(orderQuery, "type") + local q_itemid = result.getDataInt(orderQuery, "itemid") + local q_count = result.getDataInt(orderQuery, "count") + result.free(orderQuery) + + -- ORDER TYPE 1 (Regular item shop products) + if q_type == 1 then + -- Get wheight + local playerCap = getPlayerFreeCap(cid) + local itemweight = getItemWeight(q_itemid, q_count) + if playerCap >= itemweight then + db.query("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + doPlayerAddItem(cid, q_itemid, q_count) + doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have recieved ".. q_count .." "..getItemName(q_itemid).."(s)!") + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Need more CAP!") + end + end + -- Add custom order types here + -- Type 2 is reserved for premium days and is handled on website, not needed here. + -- Type 3 is reserved for character gender(sex) change and is handled on website as well. + -- So use type 4+ for custom stuff, like etc packages. + -- if q_type == 4 then + -- end + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You have no orders.") + end + + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Can only be executed once every "..cooldown.." seconds. Remaining cooldown: ".. getPlayerStorageValue(cid, storage) - os.time()) + end + return false +end \ No newline at end of file diff --git a/LUA/TFS_03/creaturescript firstitems/Installation Instructions.txt b/LUA/TFS_03/creaturescript firstitems/Installation Instructions.txt new file mode 100644 index 0000000..742ac3a --- /dev/null +++ b/LUA/TFS_03/creaturescript firstitems/Installation Instructions.txt @@ -0,0 +1,10 @@ +Step 1: Copy firstitems.lua to /data/creaturescripts/scripts/ folder +-- Edit firstitems.lua with item IDs you want characters to start with on your server. + +Step 2: Edit the /data/creaturescripts/creaturescripts.XML file + - ADD: + +Step 3: Edit the /data/creaturescripts/scripts/login.lua file + - ADD: registerCreatureEvent(cid, "firstItems") + +Step 4: Restart OT server, and it should work. :) \ No newline at end of file diff --git a/LUA/TFS_03/creaturescript firstitems/firstitems.lua b/LUA/TFS_03/creaturescript firstitems/firstitems.lua new file mode 100644 index 0000000..c0043be --- /dev/null +++ b/LUA/TFS_03/creaturescript firstitems/firstitems.lua @@ -0,0 +1,77 @@ +function onLogin(cid) + local storage = 30055 -- storage value + + local sorcItems = { + 2460, -- Brass helmet + 2465, -- Brass armor + 2190, -- Wand of vortex + 2511, -- Brass shield + 2478, -- Brass legs + 2643, -- Leather boots + 1988, -- Brown backpack + 2050 -- torch + } + local druidItems = { + 2460, -- Brass helmet + 2465, -- Brass armor + 2511, -- Brass shield + 2182, -- Snakebite rod + 2478, -- Brass legs + 2643, -- Leather boots + 1988, -- Brown backpack + 2050 -- torch + } + local pallyItems = { + 2460, -- Brass helmet + 2465, -- Brass armor + 2456, -- Bow + 2478, -- Brass legs + 2643, -- Leather boots + 1988, -- Brown backpack + } + local kinaItems = { + 2460, -- Brass helmet + 2465, -- Brass armor + 2511, -- Brass shield + 2412, -- Katana + 2478, -- Brass legs + 2643, -- Leather boots + 1988, -- Brown backpack + 2050 -- torch + } + + if getPlayerStorageValue(cid, storage) == -1 then + setPlayerStorageValue(cid, storage, 1) + if getPlayerVocation(cid) == 1 then + -- Sorcerer + for i = 1, table.getn(sorcItems), 1 do + doPlayerAddItem(cid, sorcItems[i], 1, FALSE) + end + + elseif getPlayerVocation(cid) == 2 then + -- Druid + for i = 1, table.getn(druidItems), 1 do + doPlayerAddItem(cid, druidItems[i], 1, FALSE) + end + + elseif getPlayerVocation(cid) == 3 then + -- Paladin + for i = 1, table.getn(pallyItems), 1 do + doPlayerAddItem(cid, pallyItems[i], 1, FALSE) + end + -- 8 arrows + doPlayerAddItem(cid, 2544, 8, FALSE) + + elseif getPlayerVocation(cid) == 4 then + -- Knight + for i = 1, table.getn(kinaItems), 1 do + doPlayerAddItem(cid, kinaItems[i], 1, FALSE) + end + end + + -- Common for all + doPlayerAddItem(cid, 2674, 5, FALSE) -- 5 apples + doPlayerAddItem(cid, 2120, 1, FALSE) -- 1 rope + end + return true +end diff --git a/LUA/TFS_03/talkaction shopsystem/Alternatives/znoteshop.lua b/LUA/TFS_03/talkaction shopsystem/Alternatives/znoteshop.lua new file mode 100644 index 0000000..f6d3c70 --- /dev/null +++ b/LUA/TFS_03/talkaction shopsystem/Alternatives/znoteshop.lua @@ -0,0 +1,50 @@ +-- Znote Shop v1.0 for Znote AAC on TFS 0.3.6+ Crying Damson. +function onSay(cid, words, param) + local storage = 54073 -- Make sure to select non-used storage. This is used to prevent SQL load attacks. + local cooldown = 15 -- in seconds. + + if getPlayerStorageValue(cid, storage) <= os.time() then + setPlayerStorageValue(cid, storage, os.time() + cooldown) + local accid = getAccountNumberByPlayerName(getCreatureName(cid)) + + -- Create the query + local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. accid .. ";") + + -- Detect if we got any results + if orderQuery ~= false then + -- Fetch order values + local q_id = result.getDataInt(orderQuery, "id") + local q_type = result.getDataInt(orderQuery, "type") + local q_itemid = result.getDataInt(orderQuery, "itemid") + local q_count = result.getDataInt(orderQuery, "count") + result.free(orderQuery) + + -- ORDER TYPE 1 (Regular item shop products) + if q_type == 1 then + -- Get wheight + local playerCap = getPlayerFreeCap(cid) + local itemweight = getItemWeightById(q_itemid, q_count) + if playerCap >= itemweight then + local delete = db.storeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + result.free(delete) + doPlayerAddItem(cid, q_itemid, q_count) + doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have recieved ".. q_count .." "..getItemNameById(q_itemid).."(s)!") + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Need more CAP!") + end + end + -- Add custom order types here + -- Type 2 is reserved for premium days and is handled on website, not needed here. + -- Type 3 is reserved for character gender(sex) change and is handled on website as well. + -- So use type 4+ for custom stuff, like etc packages. + -- if q_type == 4 then + -- end + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You have no orders.") + end + + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Can only be executed once every "..cooldown.." seconds. Remaining cooldown: ".. getPlayerStorageValue(cid, storage) - os.time()) + end + return false +end \ No newline at end of file diff --git a/LUA/TFS_03/talkaction shopsystem/talkaction XML.txt b/LUA/TFS_03/talkaction shopsystem/talkaction XML.txt new file mode 100644 index 0000000..d511abd --- /dev/null +++ b/LUA/TFS_03/talkaction shopsystem/talkaction XML.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/LUA/TFS_03/talkaction shopsystem/znoteshop.lua b/LUA/TFS_03/talkaction shopsystem/znoteshop.lua new file mode 100644 index 0000000..8c0b865 --- /dev/null +++ b/LUA/TFS_03/talkaction shopsystem/znoteshop.lua @@ -0,0 +1,49 @@ +-- Znote Shop v1.0 for Znote AAC on TFS 0.3.6+ Crying Damson. +function onSay(cid, words, param) + local storage = 54073 -- Make sure to select non-used storage. This is used to prevent SQL load attacks. + local cooldown = 15 -- in seconds. + + if getPlayerStorageValue(cid, storage) <= os.time() then + setPlayerStorageValue(cid, storage, os.time() + cooldown) + local accid = getAccountNumberByPlayerName(getCreatureName(cid)) + + -- Create the query + local orderQuery = db.storeQuery("SELECT `id`, `type`, `itemid`, `count` FROM `znote_shop_orders` WHERE `account_id` = " .. accid .. " LIMIT 1;") + + -- Detect if we got any results + if orderQuery ~= false then + -- Fetch order values + local q_id = result.getDataInt(orderQuery, "id") + local q_type = result.getDataInt(orderQuery, "type") + local q_itemid = result.getDataInt(orderQuery, "itemid") + local q_count = result.getDataInt(orderQuery, "count") + result.free(orderQuery) + + -- ORDER TYPE 1 (Regular item shop products) + if q_type == 1 then + -- Get wheight + local playerCap = getPlayerFreeCap(cid) + local itemweight = getItemWeightById(q_itemid, q_count) + if playerCap >= itemweight then + db.executeQuery("DELETE FROM `znote_shop_orders` WHERE `id` = " .. q_id .. ";") + doPlayerAddItem(cid, q_itemid, q_count) + doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You have recieved ".. q_count .." "..getItemNameById(q_itemid).."(s)!") + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Need more CAP!") + end + end + -- Add custom order types here + -- Type 2 is reserved for premium days and is handled on website, not needed here. + -- Type 3 is reserved for character gender(sex) change and is handled on website as well. + -- So use type 4+ for custom stuff, like etc packages. + -- if q_type == 4 then + -- end + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You have no orders.") + end + + else + doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Can only be executed once every "..cooldown.." seconds. Remaining cooldown: ".. getPlayerStorageValue(cid, storage) - os.time()) + end + return false +end \ No newline at end of file diff --git a/captcha/AHGBold.ttf b/captcha/AHGBold.ttf new file mode 100644 index 0000000..764b23d Binary files /dev/null and b/captcha/AHGBold.ttf differ diff --git a/captcha/LICENSE.txt b/captcha/LICENSE.txt new file mode 100644 index 0000000..889bc2c --- /dev/null +++ b/captcha/LICENSE.txt @@ -0,0 +1,25 @@ +COPYRIGHT: + Copyright (c) 2011 Drew Phillips + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + diff --git a/captcha/README.FONT.txt b/captcha/README.FONT.txt new file mode 100644 index 0000000..d4770de --- /dev/null +++ b/captcha/README.FONT.txt @@ -0,0 +1,12 @@ +AHGBold.ttf is used by Securimage under the following license: + +Alte Haas Grotesk is a typeface that look like an helvetica printed in an old Muller-Brockmann Book. + +These fonts are freeware and can be distributed as long as they are +together with this text file. + +I would appreciate very much to see what you have done with it anyway. + +yann le coroller +www.yannlecoroller.com +yann@lecoroller.com \ No newline at end of file diff --git a/captcha/README.txt b/captcha/README.txt new file mode 100644 index 0000000..2acb06a --- /dev/null +++ b/captcha/README.txt @@ -0,0 +1,180 @@ +NAME: + + Securimage - A PHP class for creating captcha images and audio with many options. + +VERSION: 3.2RC2 + +AUTHOR: + + Drew Phillips + +DOWNLOAD: + + The latest version can always be + found at http://www.phpcaptcha.org + +DOCUMENTATION: + + Online documentation of the class, methods, and variables can + be found at http://www.phpcaptcha.org/Securimage_Docs/ + +REQUIREMENTS: + PHP 5.2 or greater + GD 2.0 + FreeType (Required, for TTF fonts) + +SYNOPSIS: + + require_once 'securimage.php'; + + $image = new Securimage(); + + $image->show(); + + // Code Validation + + $image = new Securimage(); + if ($image->check($_POST['code']) == true) { + echo "Correct!"; + } else { + echo "Sorry, wrong code."; + } + +DESCRIPTION: + + What is Securimage? + + Securimage is a PHP class that is used to generate and validate CAPTCHA images. + The classes uses an existing PHP session or creates its own if none is found to store the + CAPTCHA code. Variables within the class are used to control the style and display of the image. + The class supports TTF fonts and effects for strengthening the security of the image. + An audible code can also be streamed to the browser for visually impared users. + + +COPYRIGHT: + Copyright (c) 2012 Drew Phillips + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + ----------------------------------------------------------------------------- + The WavFile.php class used in Securimage by Drew Phillips and Paul Voegler is + used under the BSD License. See WavFile.php for details. + Many thanks to Paul Voegler (http://voegler.eu/audio/pub) for contributing to + Securimage. + + ----------------------------------------------------------------------------- + Flash code created for Securimage by Age Bosma & Mario Romero (animario@hotmail.com) + Many thanks for releasing this to the project! + + ------------------------------------------------------------------------------ + Portions of Securimage contain code from Han-Kwang Nienhuys' PHP captcha + + Han-Kwang Nienhuys' PHP captcha + Copyright June 2007 + + This copyright message and attribution must be preserved upon + modification. Redistribution under other licenses is expressly allowed. + Other licenses include GPL 2 or higher, BSD, and non-free licenses. + The original, unrestricted version can be obtained from + http://www.lagom.nl/linux/hkcaptcha/ + + ------------------------------------------------------------------------------- + AHGBold.ttf (AlteHaasGroteskBold.ttf) font was created by Yann Le Coroller and is distributed as freeware + + Alte Haas Grotesk is a typeface that look like an helvetica printed in an old Muller-Brockmann Book. + + These fonts are freeware and can be distributed as long as they are + together with this text file. + + I would appreciate very much to see what you have done with it anyway. + + yann le coroller + www.yannlecoroller.com + yann@lecoroller.com + + ------------------------------------------------------------------------------- + Portions of securimage_play.swf use the PopForge flash library for playing audio + + /** + * Copyright(C) 2007 Andre Michelle and Joa Ebert + * + * PopForge is an ActionScript3 code sandbox developed by Andre Michelle and Joa Ebert + * http://sandbox.popforge.de + * + * PopforgeAS3Audio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * PopforgeAS3Audio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + + ------------------------------------------------------------------------------- + Some graphics used are from the Humility Icon Pack by WorLord + + License: GNU/GPL (http://findicons.com/pack/1723/humility) + http://findicons.com/icon/192558/gnome_volume_control + http://findicons.com/icon/192562/gtk_refresh + + ------------------------------------------------------------------------------- + Background noise sound files are from SoundJay.com + http://www.soundjay.com/tos.html + + All sound effects on this website are created by us and protected under + the copyright laws, international treaty provisions and other applicable + laws. By downloading sounds, music or any material from this site implies + that you have read and accepted these terms and conditions: + + Sound Effects + You are allowed to use the sounds free of charge and royalty free in your + projects (such as films, videos, games, presentations, animations, stage + plays, radio plays, audio books, apps) be it for commercial or + non-commercial purposes. + + But you are NOT allowed to + - post the sounds (as sound effects or ringtones) on any website for + others to download, copy or use + - use them as a raw material to create sound effects or ringtones that + you will sell, distribute or offer for downloading + - sell, re-sell, license or re-license the sounds (as individual sound + effects or as a sound effects library) to anyone else + - claim the sounds as yours + - link directly to individual sound files + - distribute the sounds in apps or computer programs that are clearly + sound related in nature (such as sound machine, sound effect + generator, ringtone maker, funny sounds app, sound therapy app, etc.) + or in apps or computer programs that use the sounds as the program's + sound resource library for other people's use (such as animation + creator, digital book creator, song maker software, etc.). If you are + developing such computer programs, contact us for licensing options. + + If you use the sound effects, please consider giving us a credit and + linking back to us but it's not required. + + \ No newline at end of file diff --git a/captcha/WavFile.php b/captcha/WavFile.php new file mode 100644 index 0000000..9eff88e --- /dev/null +++ b/captcha/WavFile.php @@ -0,0 +1,1861 @@ + +* File: WavFile.php
+* +* Copyright (c) 2012, Drew Phillips +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, +* are permitted provided that the following conditions are met: +* +* - Redistributions of source code must retain the above copyright notice, +* this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation +* and/or other materials provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* +* Any modifications to the library should be indicated clearly in the source code +* to inform users that the changes are not a part of the original software.

+* +* @copyright 2012 Drew Phillips +* @author Drew Phillips +* @author Paul Voegler +* @version 1.0RC1 (April 2012) +* @package PHPWavUtils +* @license BSD License +* +* Changelog: +* +* 1.0 RC1 (4/20/2012) +* - Initial release candidate +* - Supports 8, 16, 24, 32 bit PCM, 32-bit IEEE FLOAT, Extensible Format +* - Support for 18 channels of audio +* - Ability to read an offset from a file to reduce memory footprint with large files +* - Single-pass audio filter processing +* - Highly accurate and efficient mix and normalization filters (http://www.voegler.eu/pub/audio/) +* - Utility filters for degrading audio, and inserting silence +* +* 0.6 (4/12/2012) +* - Support 8, 16, 24, 32 bit and PCM float (Paul Voegler) +* - Add normalize filter, misc improvements and fixes (Paul Voegler) +* - Normalize parameters to filter() to use filter constants as array indices +* - Add option to mix filter to loop the target file if the source is longer +* +* 0.5 (4/3/2012) +* - Fix binary pack routine (Paul Voegler) +* - Add improved mixing function (Paul Voegler) +* +*/ + +class WavFile +{ + /*%******************************************************************************************%*/ + // Class constants + + /** @var int Filter flag for mixing two files */ + const FILTER_MIX = 0x01; + + /** @var int Filter flag for normalizing audio data */ + const FILTER_NORMALIZE = 0x02; + + /** @var int Filter flag for degrading audio data */ + const FILTER_DEGRADE = 0x04; + + /** @var int Maximum number of channels */ + const MAX_CHANNEL = 18; + + /** @var int Maximum sample rate */ + const MAX_SAMPLERATE = 192000; + + /** Channel Locations for ChannelMask */ + const SPEAKER_DEFAULT = 0x000000; + const SPEAKER_FRONT_LEFT = 0x000001; + const SPEAKER_FRONT_RIGHT = 0x000002; + const SPEAKER_FRONT_CENTER = 0x000004; + const SPEAKER_LOW_FREQUENCY = 0x000008; + const SPEAKER_BACK_LEFT = 0x000010; + const SPEAKER_BACK_RIGHT = 0x000020; + const SPEAKER_FRONT_LEFT_OF_CENTER = 0x000040; + const SPEAKER_FRONT_RIGHT_OF_CENTER = 0x000080; + const SPEAKER_BACK_CENTER = 0x000100; + const SPEAKER_SIDE_LEFT = 0x000200; + const SPEAKER_SIDE_RIGHT = 0x000400; + const SPEAKER_TOP_CENTER = 0x000800; + const SPEAKER_TOP_FRONT_LEFT = 0x001000; + const SPEAKER_TOP_FRONT_CENTER = 0x002000; + const SPEAKER_TOP_FRONT_RIGHT = 0x004000; + const SPEAKER_TOP_BACK_LEFT = 0x008000; + const SPEAKER_TOP_BACK_CENTER = 0x010000; + const SPEAKER_TOP_BACK_RIGHT = 0x020000; + const SPEAKER_ALL = 0x03FFFF; + + /** @var int PCM Audio Format */ + const WAVE_FORMAT_PCM = 0x0001; + + /** @var int IEEE FLOAT Audio Format */ + const WAVE_FORMAT_IEEE_FLOAT = 0x0003; + + /** @var int EXTENSIBLE Audio Format - actual audio format defined by SubFormat */ + const WAVE_FORMAT_EXTENSIBLE = 0xFFFE; + + /** @var string PCM Audio Format SubType - LE hex representation of GUID {00000001-0000-0010-8000-00AA00389B71} */ + const WAVE_SUBFORMAT_PCM = "0100000000001000800000aa00389b71"; + + /** @var string IEEE FLOAT Audio Format SubType - LE hex representation of GUID {00000003-0000-0010-8000-00AA00389B71} */ + const WAVE_SUBFORMAT_IEEE_FLOAT = "0300000000001000800000aa00389b71"; + + + /*%******************************************************************************************%*/ + // Properties + + /** @var array Log base modifier lookup table for a given threshold (in 0.05 steps) used by normalizeSample. + * Adjusts the slope (1st derivative) of the log function at the threshold to 1 for a smooth transition + * from linear to logarithmic amplitude output. */ + protected static $LOOKUP_LOGBASE = array( + 2.513, 2.667, 2.841, 3.038, 3.262, + 3.520, 3.819, 4.171, 4.589, 5.093, + 5.711, 6.487, 7.483, 8.806, 10.634, + 13.302, 17.510, 24.970, 41.155, 96.088 + ); + + /** @var int The actual physical file size */ + protected $_actualSize; + + /** @var int The size of the file in RIFF header */ + protected $_chunkSize; + + /** @var int The size of the "fmt " chunk */ + protected $_fmtChunkSize; + + /** @var int The size of the extended "fmt " data */ + protected $_fmtExtendedSize; + + /** @var int The size of the "fact" chunk */ + protected $_factChunkSize; + + /** @var int Size of the data chunk */ + protected $_dataSize; + + /** @var int Size of the data chunk in the opened wav file */ + protected $_dataSize_fp; + + /** @var int Does _dataSize really reflect strlen($_samples)? Case when a wav file is read with readData = false */ + protected $_dataSize_valid; + + /** @var int Starting offset of data chunk */ + protected $_dataOffset; + + /** @var int The audio format - WavFile::WAVE_FORMAT_* */ + protected $_audioFormat; + + /** @var int The audio subformat - WavFile::WAVE_SUBFORMAT_* */ + protected $_audioSubFormat; + + /** @var int Number of channels in the audio file */ + protected $_numChannels; + + /** @var int The channel mask */ + protected $_channelMask; + + /** @var int Samples per second */ + protected $_sampleRate; + + /** @var int Number of bits per sample */ + protected $_bitsPerSample; + + /** @var int Number of valid bits per sample */ + protected $_validBitsPerSample; + + /** @var int NumChannels * BitsPerSample/8 */ + protected $_blockAlign; + + /** @var int Number of sample blocks */ + protected $_numBlocks; + + /** @var int Bytes per second */ + protected $_byteRate; + + /** @var string Binary string of samples */ + protected $_samples; + + /** @var resource The file pointer used for reading wavs from file or memory */ + protected $_fp; + + + /*%******************************************************************************************%*/ + // Special methods + + /** + * WavFile Constructor. + * + * + * $wav1 = new WavFile(2, 44100, 16); // new wav with 2 channels, at 44100 samples/sec and 16 bits per sample + * $wav2 = new WavFile('./audio/sound.wav'); // open and read wav file + * + * + * @param string|int $numChannelsOrFileName (Optional) If string, the filename of the wav file to open. The number of channels otherwise. Defaults to 1. + * @param int|bool $sampleRateOrReadData (Optional) If opening a file and boolean, decides whether to read the data chunk or not. Defaults to true. The sample rate in samples per second otherwise. 8000 = standard telephone, 16000 = wideband telephone, 32000 = FM radio and 44100 = CD quality. Defaults to 8000. + * @param int $bitsPerSample (Optional) The number of bits per sample. Has to be 8, 16 or 24 for PCM audio or 32 for IEEE FLOAT audio. 8 = telephone, 16 = CD and 24 or 32 = studio quality. Defaults to 8. + * @throws WavFormatException + * @throws WavFileException + */ + public function __construct($numChannelsOrFileName = null, $sampleRateOrReadData = null, $bitsPerSample = null) + { + $this->_actualSize = 44; + $this->_chunkSize = 36; + $this->_fmtChunkSize = 16; + $this->_fmtExtendedSize = 0; + $this->_factChunkSize = 0; + $this->_dataSize = 0; + $this->_dataSize_fp = 0; + $this->_dataSize_valid = true; + $this->_dataOffset = 44; + $this->_audioFormat = self::WAVE_FORMAT_PCM; + $this->_audioSubFormat = null; + $this->_numChannels = 1; + $this->_channelMask = self::SPEAKER_DEFAULT; + $this->_sampleRate = 8000; + $this->_bitsPerSample = 8; + $this->_validBitsPerSample = 8; + $this->_blockAlign = 1; + $this->_numBlocks = 0; + $this->_byteRate = 8000; + $this->_samples = ''; + $this->_fp = null; + + + if (is_string($numChannelsOrFileName)) { + $this->openWav($numChannelsOrFileName, is_bool($sampleRateOrReadData) ? $sampleRateOrReadData : true); + + } else { + $this->setNumChannels(is_null($numChannelsOrFileName) ? 1 : $numChannelsOrFileName) + ->setSampleRate(is_null($sampleRateOrReadData) ? 8000 : $sampleRateOrReadData) + ->setBitsPerSample(is_null($bitsPerSample) ? 8 : $bitsPerSample); + } + } + + public function __destruct() { + if (is_resource($this->_fp)) $this->closeWav(); + } + + public function __clone() { + $this->_fp = null; + } + + /** + * Output the wav file headers and data. + * + * @return string The encoded file. + */ + public function __toString() + { + return $this->makeHeader() . + $this->getDataSubchunk(); + } + + + /*%******************************************************************************************%*/ + // Static methods + + /** + * Unpacks a single binary sample to numeric value. + * + * @param string $sampleBinary (Required) The sample to decode. + * @param int $bitDepth (Optional) The bits per sample to decode. If omitted, derives it from the length of $sampleBinary. + * @return int|float The numeric sample value. Float for 32-bit samples. Returns null for unsupported bit depths. + */ + public static function unpackSample($sampleBinary, $bitDepth = null) + { + if ($bitDepth === null) { + $bitDepth = strlen($sampleBinary) * 8; + } + + switch ($bitDepth) { + case 8: + // unsigned char + return ord($sampleBinary); + + case 16: + // signed short, little endian + $data = unpack('v', $sampleBinary); + $sample = $data[1]; + if ($sample >= 0x8000) { + $sample -= 0x10000; + } + return $sample; + + case 24: + // 3 byte packed signed integer, little endian + $data = unpack('C3', $sampleBinary); + $sample = $data[1] | ($data[2] << 8) | ($data[3] << 16); + if ($sample >= 0x800000) { + $sample -= 0x1000000; + } + return $sample; + + case 32: + // 32-bit float + $data = unpack('f', $sampleBinary); + return $data[1]; + + default: + return null; + } + } + + /** + * Packs a single numeric sample to binary. + * + * @param int|float $sample (Required) The sample to encode. Has to be within valid range for $bitDepth. Float values only for 32 bits. + * @param int $bitDepth (Required) The bits per sample to encode with. + * @return string The encoded binary sample. Returns null for unsupported bit depths. + */ + public static function packSample($sample, $bitDepth) + { + switch ($bitDepth) { + case 8: + // unsigned char + return chr($sample); + + case 16: + // signed short, little endian + if ($sample < 0) { + $sample += 0x10000; + } + return pack('v', $sample); + + case 24: + // 3 byte packed signed integer, little endian + if ($sample < 0) { + $sample += 0x1000000; + } + return pack('C3', $sample & 0xff, ($sample >> 8) & 0xff, ($sample >> 16) & 0xff); + + case 32: + // 32-bit float + return pack('f', $sample); + + default: + return null; + } + } + + /** + * Unpacks a binary sample block to numeric values. + * + * @param string $sampleBlock (Required) The binary sample block (all channels). + * @param int $bitDepth (Required) The bits per sample to decode. + * @param int $numChannels (Optional) The number of channels to decode. If omitted, derives it from the length of $sampleBlock and $bitDepth. + * @return array The sample values as an array of integers of floats for 32 bits. First channel is array index 1. + */ + public static function unpackSampleBlock($sampleBlock, $bitDepth, $numChannels = null) { + $sampleBytes = $bitDepth / 8; + if ($numChannels === null) { + $numChannels = strlen($sampleBlock) / $sampleBytes; + } + + $samples = array(); + for ($i = 0; $i < $numChannels; $i++) { + $sampleBinary = substr($sampleBlock, $i * $sampleBytes, $sampleBytes); + $samples[$i + 1] = self::unpackSample($sampleBinary, $bitDepth); + } + + return $samples; + } + + /** + * Packs an array of numeric channel samples to a binary sample block. + * + * @param array $samples (Required) The array of channel sample values. Expects float values for 32 bits and integer otherwise. + * @param int $bitDepth (Required) The bits per sample to encode with. + * @return string The encoded binary sample block. + */ + public static function packSampleBlock($samples, $bitDepth) { + $sampleBlock = ''; + foreach($samples as $sample) { + $sampleBlock .= self::packSample($sample, $bitDepth); + } + + return $sampleBlock; + } + + /** + * Normalizes a float audio sample. Maximum input range assumed for compression is [-2, 2]. + * See http://www.voegler.eu/pub/audio/ for more information. + * + * @param float $sampleFloat (Required) The float sample to normalize. + * @param float $threshold (Required) The threshold or gain factor for normalizing the amplitude.
    + *
  • >= 1 - Normalize by multiplying by the threshold (boost - positive gain).
    + * A value of 1 in effect means no normalization (and results in clipping).
  • + *
  • <= -1 - Normalize by dividing by the the absolute value of threshold (attenuate - negative gain).
    + * A factor of 2 (-2) is about 6dB reduction in volume.
  • + *
  • [0, 1) - (open inverval - not including 1) - The threshold + * above which amplitudes are comressed logarithmically.
    + * e.g. 0.6 to leave amplitudes up to 60% "as is" and compress above.
  • + *
  • (-1, 0) - (open inverval - not including -1 and 0) - The threshold + * above which amplitudes are comressed linearly.
    + * e.g. -0.6 to leave amplitudes up to 60% "as is" and compress above.
+ * @return float The normalized sample. + **/ + public static function normalizeSample($sampleFloat, $threshold) { + // apply positive gain + if ($threshold >= 1) { + return $sampleFloat * $threshold; + } + + // apply negative gain + if ($threshold <= -1) { + return $sampleFloat / -$threshold; + } + + $sign = $sampleFloat < 0 ? -1 : 1; + $sampleAbs = abs($sampleFloat); + + // logarithmic compression + if ($threshold >= 0 && $threshold < 1 && $sampleAbs > $threshold) { + $loga = self::$LOOKUP_LOGBASE[(int)($threshold * 20)]; // log base modifier + return $sign * ($threshold + (1 - $threshold) * log(1 + $loga * ($sampleAbs - $threshold) / (2 - $threshold)) / log(1 + $loga)); + } + + // linear compression + $thresholdAbs = abs($threshold); + if ($threshold > -1 && $threshold < 0 && $sampleAbs > $thresholdAbs) { + return $sign * ($thresholdAbs + (1 - $thresholdAbs) / (2 - $thresholdAbs) * ($sampleAbs - $thresholdAbs)); + } + + // else ? + return $sampleFloat; + } + + + /*%******************************************************************************************%*/ + // Getter and Setter methods for properties + + public function getActualSize() { + return $this->_actualSize; + } + + protected function setActualSize($actualSize = null) { + if (is_null($actualSize)) { + $this->_actualSize = 8 + $this->_chunkSize; // + "RIFF" header (ID + size) + } else { + $this->_actualSize = $actualSize; + } + + return $this; + } + + public function getChunkSize() { + return $this->_chunkSize; + } + + protected function setChunkSize($chunkSize = null) { + if (is_null($chunkSize)) { + $this->_chunkSize = 4 + // "WAVE" chunk + 8 + $this->_fmtChunkSize + // "fmt " subchunk + ($this->_factChunkSize > 0 ? 8 + $this->_factChunkSize : 0) + // "fact" subchunk + 8 + $this->_dataSize + // "data" subchunk + ($this->_dataSize & 1); // padding byte + } else { + $this->_chunkSize = $chunkSize; + } + + $this->setActualSize(); + + return $this; + } + + public function getFmtChunkSize() { + return $this->_fmtChunkSize; + } + + protected function setFmtChunkSize($fmtChunkSize = null) { + if (is_null($fmtChunkSize)) { + $this->_fmtChunkSize = 16 + $this->_fmtExtendedSize; + } else { + $this->_fmtChunkSize = $fmtChunkSize; + } + + $this->setChunkSize() // implicit setActualSize() + ->setDataOffset(); + + return $this; + } + + public function getFmtExtendedSize() { + return $this->_fmtExtendedSize; + } + + protected function setFmtExtendedSize($fmtExtendedSize = null) { + if (is_null($fmtExtendedSize)) { + if ($this->_audioFormat == self::WAVE_FORMAT_EXTENSIBLE) { + $this->_fmtExtendedSize = 2 + 22; // extension size for WAVE_FORMAT_EXTENSIBLE + } elseif ($this->_audioFormat != self::WAVE_FORMAT_PCM) { + $this->_fmtExtendedSize = 2 + 0; // empty extension + } else { + $this->_fmtExtendedSize = 0; // no extension, only for WAVE_FORMAT_PCM + } + } else { + $this->_fmtExtendedSize = $fmtExtendedSize; + } + + $this->setFmtChunkSize(); // implicit setSize(), setActualSize(), setDataOffset() + + return $this; + } + + public function getFactChunkSize() { + return $this->_factChunkSize; + } + + protected function setFactChunkSize($factChunkSize = null) { + if (is_null($factChunkSize)) { + if ($this->_audioFormat != self::WAVE_FORMAT_PCM) { + $this->_factChunkSize = 4; + } else { + $this->_factChunkSize = 0; + } + } else { + $this->_factChunkSize = $factChunkSize; + } + + $this->setChunkSize() // implicit setActualSize() + ->setDataOffset(); + + return $this; + } + + public function getDataSize() { + return $this->_dataSize; + } + + protected function setDataSize($dataSize = null) { + if (is_null($dataSize)) { + $this->_dataSize = strlen($this->_samples); + } else { + $this->_dataSize = $dataSize; + } + + $this->setChunkSize() // implicit setActualSize() + ->setNumBlocks(); + $this->_dataSize_valid = true; + + return $this; + } + + public function getDataOffset() { + return $this->_dataOffset; + } + + protected function setDataOffset($dataOffset = null) { + if (is_null($dataOffset)) { + $this->_dataOffset = 8 + // "RIFF" header (ID + size) + 4 + // "WAVE" chunk + 8 + $this->_fmtChunkSize + // "fmt " subchunk + ($this->_factChunkSize > 0 ? 8 + $this->_factChunkSize : 0) + // "fact" subchunk + 8; // "data" subchunk + } else { + $this->_dataOffset = $dataOffset; + } + + return $this; + } + + public function getAudioFormat() { + return $this->_audioFormat; + } + + protected function setAudioFormat($audioFormat = null) { + if (is_null($audioFormat)) { + if (($this->_bitsPerSample <= 16 || $this->_bitsPerSample == 32) + && $this->_validBitsPerSample == $this->_bitsPerSample + && $this->_channelMask == self::SPEAKER_DEFAULT + && $this->_numChannels <= 2) { + if ($this->_bitsPerSample <= 16) { + $this->_audioFormat = self::WAVE_FORMAT_PCM; + } else { + $this->_audioFormat = self::WAVE_FORMAT_IEEE_FLOAT; + } + } else { + $this->_audioFormat = self::WAVE_FORMAT_EXTENSIBLE; + } + } else { + $this->_audioFormat = $audioFormat; + } + + $this->setAudioSubFormat() + ->setFactChunkSize() // implicit setSize(), setActualSize(), setDataOffset() + ->setFmtExtendedSize(); // implicit setFmtChunkSize(), setSize(), setActualSize(), setDataOffset() + + return $this; + } + + public function getAudioSubFormat() { + return $this->_audioSubFormat; + } + + protected function setAudioSubFormat($audioSubFormat = null) { + if (is_null($audioSubFormat)) { + if ($this->_bitsPerSample == 32) { + $this->_audioSubFormat = self::WAVE_SUBFORMAT_IEEE_FLOAT; // 32 bits are IEEE FLOAT in this class + } else { + $this->_audioSubFormat = self::WAVE_SUBFORMAT_PCM; // 8, 16 and 24 bits are PCM in this class + } + } else { + $this->_audioSubFormat = $audioSubFormat; + } + + return $this; + } + + public function getNumChannels() { + return $this->_numChannels; + } + + public function setNumChannels($numChannels) { + if ($numChannels < 1 || $numChannels > self::MAX_CHANNEL) { + throw new WavFileException('Unsupported number of channels. Only up to ' . self::MAX_CHANNEL . ' channels are supported.'); + } elseif ($this->_samples !== '') { + trigger_error('Wav already has sample data. Changing the number of channels does not convert and may corrupt the data.', E_USER_NOTICE); + } + + $this->_numChannels = (int)$numChannels; + + $this->setAudioFormat() // implicit setAudioSubFormat(), setFactChunkSize(), setFmtExtendedSize(), setFmtChunkSize(), setSize(), setActualSize(), setDataOffset() + ->setByteRate() + ->setBlockAlign(); // implicit setNumBlocks() + + return $this; + } + + public function getChannelMask() { + return $this->_channelMask; + } + + public function setChannelMask($channelMask = self::SPEAKER_DEFAULT) { + if ($channelMask != 0) { + // count number of set bits - Hamming weight + $c = (int)$channelMask; + $n = 0; + while ($c > 0) { + $n += $c & 1; + $c >>= 1; + } + if ($n != $this->_numChannels || (((int)$channelMask | self::SPEAKER_ALL) != self::SPEAKER_ALL)) { + throw new WavFileException('Invalid channel mask. The number of channels does not match the number of locations in the mask.'); + } + } + + $this->_channelMask = (int)$channelMask; + + $this->setAudioFormat(); // implicit setAudioSubFormat(), setFactChunkSize(), setFmtExtendedSize(), setFmtChunkSize(), setSize(), setActualSize(), setDataOffset() + + return $this; + } + + public function getSampleRate() { + return $this->_sampleRate; + } + + public function setSampleRate($sampleRate) { + if ($sampleRate < 1 || $sampleRate > self::MAX_SAMPLERATE) { + throw new WavFileException('Invalid sample rate.'); + } elseif ($this->_samples !== '') { + trigger_error('Wav already has sample data. Changing the sample rate does not convert the data and may yield undesired results.', E_USER_NOTICE); + } + + $this->_sampleRate = (int)$sampleRate; + + $this->setByteRate(); + + return $this; + } + + public function getBitsPerSample() { + return $this->_bitsPerSample; + } + + public function setBitsPerSample($bitsPerSample) { + if (!in_array($bitsPerSample, array(8, 16, 24, 32))) { + throw new WavFileException('Unsupported bits per sample. Only 8, 16, 24 and 32 bits are supported.'); + } elseif ($this->_samples !== '') { + trigger_error('Wav already has sample data. Changing the bits per sample does not convert and may corrupt the data.', E_USER_NOTICE); + } + + $this->_bitsPerSample = (int)$bitsPerSample; + + $this->setValidBitsPerSample() // implicit setAudioFormat(), setAudioSubFormat(), setFmtChunkSize(), setFactChunkSize(), setSize(), setActualSize(), setDataOffset() + ->setByteRate() + ->setBlockAlign(); // implicit setNumBlocks() + + return $this; + } + + public function getValidBitsPerSample() { + return $this->_validBitsPerSample; + } + + protected function setValidBitsPerSample($validBitsPerSample = null) { + if (is_null($validBitsPerSample)) { + $this->_validBitsPerSample = $this->_bitsPerSample; + } else { + if ($validBitsPerSample < 1 || $validBitsPerSample > $this->_bitsPerSample) { + throw new WavFileException('ValidBitsPerSample cannot be greater than BitsPerSample.'); + } + $this->_validBitsPerSample = (int)$validBitsPerSample; + } + + $this->setAudioFormat(); // implicit setAudioSubFormat(), setFactChunkSize(), setFmtExtendedSize(), setFmtChunkSize(), setSize(), setActualSize(), setDataOffset() + + return $this; + } + + public function getBlockAlign() { + return $this->_blockAlign; + } + + protected function setBlockAlign($blockAlign = null) { + if (is_null($blockAlign)) { + $this->_blockAlign = $this->_numChannels * $this->_bitsPerSample / 8; + } else { + $this->_blockAlign = $blockAlign; + } + + $this->setNumBlocks(); + + return $this; + } + + public function getNumBlocks() + { + return $this->_numBlocks; + } + + protected function setNumBlocks($numBlocks = null) { + if (is_null($numBlocks)) { + $this->_numBlocks = (int)($this->_dataSize / $this->_blockAlign); // do not count incomplete sample blocks + } else { + $this->_numBlocks = $numBlocks; + } + + return $this; + } + + public function getByteRate() { + return $this->_byteRate; + } + + protected function setByteRate($byteRate = null) { + if (is_null($byteRate)) { + $this->_byteRate = $this->_sampleRate * $this->_numChannels * $this->_bitsPerSample / 8; + } else { + $this->_byteRate = $byteRate; + } + + return $this; + } + + public function getSamples() { + return $this->_samples; + } + + public function setSamples(&$samples = '') { + if (strlen($samples) % $this->_blockAlign != 0) { + throw new WavFileException('Incorrect samples size. Has to be a multiple of BlockAlign.'); + } + + $this->_samples = $samples; + + $this->setDataSize(); // implicit setSize(), setActualSize(), setNumBlocks() + + return $this; + } + + + /*%******************************************************************************************%*/ + // Getters + + public function getMinAmplitude() + { + if ($this->_bitsPerSample == 8) { + return 0; + } elseif ($this->_bitsPerSample == 32) { + return -1.0; + } else { + return -(1 << ($this->_bitsPerSample - 1)); + } + } + + public function getZeroAmplitude() + { + if ($this->_bitsPerSample == 8) { + return 0x80; + } elseif ($this->_bitsPerSample == 32) { + return 0.0; + } else { + return 0; + } + } + + public function getMaxAmplitude() + { + if($this->_bitsPerSample == 8) { + return 0xFF; + } elseif($this->_bitsPerSample == 32) { + return 1.0; + } else { + return (1 << ($this->_bitsPerSample - 1)) - 1; + } + } + + + /*%******************************************************************************************%*/ + // Wave file methods + + /** + * Construct a wav header from this object. Includes "fact" chunk in necessary. + * http://www-mmsp.ece.mcgill.ca/documents/audioformats/wave/wave.html + * + * @return string The RIFF header data. + */ + public function makeHeader() + { + // reset and recalculate + $this->setAudioFormat(); // implicit setAudioSubFormat(), setFactChunkSize(), setFmtExtendedSize(), setFmtChunkSize(), setSize(), setActualSize(), setDataOffset() + $this->setNumBlocks(); + + // RIFF header + $header = pack('N', 0x52494646); // ChunkID - "RIFF" + $header .= pack('V', $this->getChunkSize()); // ChunkSize + $header .= pack('N', 0x57415645); // Format - "WAVE" + + // "fmt " subchunk + $header .= pack('N', 0x666d7420); // SubchunkID - "fmt " + $header .= pack('V', $this->getFmtChunkSize()); // SubchunkSize + $header .= pack('v', $this->getAudioFormat()); // AudioFormat + $header .= pack('v', $this->getNumChannels()); // NumChannels + $header .= pack('V', $this->getSampleRate()); // SampleRate + $header .= pack('V', $this->getByteRate()); // ByteRate + $header .= pack('v', $this->getBlockAlign()); // BlockAlign + $header .= pack('v', $this->getBitsPerSample()); // BitsPerSample + if($this->getFmtExtendedSize() == 24) { + $header .= pack('v', 22); // extension size = 24 bytes, cbSize: 24 - 2 = 22 bytes + $header .= pack('v', $this->getValidBitsPerSample()); // ValidBitsPerSample + $header .= pack('V', $this->getChannelMask()); // ChannelMask + $header .= pack('H32', $this->getAudioSubFormat()); // SubFormat + } elseif ($this->getFmtExtendedSize() == 2) { + $header .= pack('v', 0); // extension size = 2 bytes, cbSize: 2 - 2 = 0 bytes + } + + // "fact" subchunk + if ($this->getFactChunkSize() == 4) { + $header .= pack('N', 0x66616374); // SubchunkID - "fact" + $header .= pack('V', 4); // SubchunkSize + $header .= pack('V', $this->getNumBlocks()); // SampleLength (per channel) + } + + return $header; + } + + /** + * Construct wav DATA chunk. + * + * @return string The DATA header and chunk. + */ + public function getDataSubchunk() + { + // check preconditions + if (!$this->_dataSize_valid) { + $this->setDataSize(); // implicit setSize(), setActualSize(), setNumBlocks() + } + + + // create subchunk + return pack('N', 0x64617461) . // SubchunkID - "data" + pack('V', $this->getDataSize()) . // SubchunkSize + $this->_samples . // Subchunk data + ($this->getDataSize() & 1 ? chr(0) : ''); // padding byte + } + + /** + * Save the wav data to a file. + * + * @param string $filename (Required) The file path to save the wav to. + * @throws WavFileException + */ + public function save($filename) + { + $fp = @fopen($filename, 'w+b'); + if (!is_resource($fp)) { + throw new WavFileException('Failed to open "' . $filename . '" for writing.'); + } + + fwrite($fp, $this->makeHeader()); + fwrite($fp, $this->getDataSubchunk()); + fclose($fp); + + return $this; + } + + /** + * Reads a wav header and data from a file. + * + * @param string $filename (Required) The path to the wav file to read. + * @param bool $readData (Optional) If true, also read the data chunk. + * @throws WavFormatException + * @throws WavFileException + */ + public function openWav($filename, $readData = true) + { + // check preconditions + if (!file_exists($filename)) { + throw new WavFileException('Failed to open "' . $filename . '". File not found.'); + } elseif (!is_readable($filename)) { + throw new WavFileException('Failed to open "' . $filename . '". File is not readable.'); + } elseif (is_resource($this->_fp)) { + $this->closeWav(); + } + + + // open the file + $this->_fp = @fopen($filename, 'rb'); + if (!is_resource($this->_fp)) { + throw new WavFileException('Failed to open "' . $filename . '".'); + } + + // read the file + return $this->readWav($readData); + } + + /** + * Close a with openWav() previously opened wav file or free the buffer of setWavData(). + * Not necessary if the data has been read (readData = true) already. + */ + public function closeWav() { + if (is_resource($this->_fp)) fclose($this->_fp); + + return $this; + } + + /** + * Set the wav file data and properties from a wav file in a string. + * + * @param string $data (Required) The wav file data. Passed by reference. + * @param bool $free (Optional) True to free the passed $data after copying. + * @throws WavFormatException + * @throws WavFileException + */ + public function setWavData(&$data, $free = true) + { + // check preconditions + if (is_resource($this->_fp)) $this->closeWav(); + + + // open temporary stream in memory + $this->_fp = @fopen('php://memory', 'w+b'); + if (!is_resource($this->_fp)) { + throw new WavFileException('Failed to open memory stream to write wav data. Use openWav() instead.'); + } + + // prepare stream + fwrite($this->_fp, $data); + rewind($this->_fp); + + // free the passed data + if ($free) $data = null; + + // read the stream like a file + return $this->readWav(true); + } + + /** + * Read wav file from a stream. + * + * @param $readData (Optional) If true, also read the data chunk. + * @throws WavFormatException + * @throws WavFileException + */ + protected function readWav($readData = true) + { + if (!is_resource($this->_fp)) { + throw new WavFileException('No wav file open. Use openWav() first.'); + } + + try { + $this->readWavHeader(); + } catch (WavFileException $ex) { + $this->closeWav(); + throw $ex; + } + + if ($readData) return $this->readWavData(); + + return $this; + } + + /** + * Parse a wav header. + * http://www-mmsp.ece.mcgill.ca/documents/audioformats/wave/wave.html + * + * @throws WavFormatException + * @throws WavFileException + */ + protected function readWavHeader() + { + if (!is_resource($this->_fp)) { + throw new WavFileException('No wav file open. Use openWav() first.'); + } + + // get actual file size + $stat = fstat($this->_fp); + $actualSize = $stat['size']; + + $this->_actualSize = $actualSize; + + + // read the common header + $header = fread($this->_fp, 36); // minimum size of the wav header + if (strlen($header) < 36) { + throw new WavFormatException('Not wav format. Header too short.', 1); + } + + + // check "RIFF" header + $RIFF = unpack('NChunkID/VChunkSize/NFormat', $header); + + if ($RIFF['ChunkID'] != 0x52494646) { // "RIFF" + throw new WavFormatException('Not wav format. "RIFF" signature missing.', 2); + } + + if ($actualSize - 8 < $RIFF['ChunkSize']) { + trigger_error('"RIFF" chunk size does not match actual file size. Found ' . $RIFF['ChunkSize'] . ', expected ' . ($actualSize - 8) . '.', E_USER_NOTICE); + $RIFF['ChunkSize'] = $actualSize - 8; + //throw new WavFormatException('"RIFF" chunk size does not match actual file size. Found ' . $RIFF['ChunkSize'] . ', expected ' . ($actualSize - 8) . '.', 3); + } + + if ($RIFF['Format'] != 0x57415645) { // "WAVE" + throw new WavFormatException('Not wav format. "RIFF" chunk format is not "WAVE".', 4); + } + + $this->_chunkSize = $RIFF['ChunkSize']; + + + // check common "fmt " subchunk + $fmt = unpack('NSubchunkID/VSubchunkSize/vAudioFormat/vNumChannels/' + .'VSampleRate/VByteRate/vBlockAlign/vBitsPerSample', + substr($header, 12)); + + if ($fmt['SubchunkID'] != 0x666d7420) { // "fmt " + throw new WavFormatException('Bad wav header. Expected "fmt " subchunk.', 11); + } + + if ($fmt['SubchunkSize'] < 16) { + throw new WavFormatException('Bad "fmt " subchunk size.', 12); + } + + if ( $fmt['AudioFormat'] != self::WAVE_FORMAT_PCM + && $fmt['AudioFormat'] != self::WAVE_FORMAT_IEEE_FLOAT + && $fmt['AudioFormat'] != self::WAVE_FORMAT_EXTENSIBLE) + { + throw new WavFormatException('Unsupported audio format. Only PCM or IEEE FLOAT (EXTENSIBLE) audio is supported.', 13); + } + + if ($fmt['NumChannels'] < 1 || $fmt['NumChannels'] > self::MAX_CHANNEL) { + throw new WavFormatException('Invalid number of channels in "fmt " subchunk.', 14); + } + + if ($fmt['SampleRate'] < 1 || $fmt['SampleRate'] > self::MAX_SAMPLERATE) { + throw new WavFormatException('Invalid sample rate in "fmt " subchunk.', 15); + } + + if ( ($fmt['AudioFormat'] == self::WAVE_FORMAT_PCM && !in_array($fmt['BitsPerSample'], array(8, 16, 24))) + || ($fmt['AudioFormat'] == self::WAVE_FORMAT_IEEE_FLOAT && $fmt['BitsPerSample'] != 32) + || ($fmt['AudioFormat'] == self::WAVE_FORMAT_EXTENSIBLE && !in_array($fmt['BitsPerSample'], array(8, 16, 24, 32)))) + { + throw new WavFormatException('Only 8, 16 and 24-bit PCM and 32-bit IEEE FLOAT (EXTENSIBLE) audio is supported.', 16); + } + + $blockAlign = $fmt['NumChannels'] * $fmt['BitsPerSample'] / 8; + if ($blockAlign != $fmt['BlockAlign']) { + trigger_error('Invalid block align in "fmt " subchunk. Found ' . $fmt['BlockAlign'] . ', expected ' . $blockAlign . '.', E_USER_NOTICE); + $fmt['BlockAlign'] = $blockAlign; + //throw new WavFormatException('Invalid block align in "fmt " subchunk. Found ' . $fmt['BlockAlign'] . ', expected ' . $blockAlign . '.', 17); + } + + $byteRate = $fmt['SampleRate'] * $blockAlign; + if ($byteRate != $fmt['ByteRate']) { + trigger_error('Invalid average byte rate in "fmt " subchunk. Found ' . $fmt['ByteRate'] . ', expected ' . $byteRate . '.', E_USER_NOTICE); + $fmt['ByteRate'] = $byteRate; + //throw new WavFormatException('Invalid average byte rate in "fmt " subchunk. Found ' . $fmt['ByteRate'] . ', expected ' . $byteRate . '.', 18); + } + + $this->_fmtChunkSize = $fmt['SubchunkSize']; + $this->_audioFormat = $fmt['AudioFormat']; + $this->_numChannels = $fmt['NumChannels']; + $this->_sampleRate = $fmt['SampleRate']; + $this->_byteRate = $fmt['ByteRate']; + $this->_blockAlign = $fmt['BlockAlign']; + $this->_bitsPerSample = $fmt['BitsPerSample']; + + + // read extended "fmt " subchunk data + $extendedFmt = ''; + if ($fmt['SubchunkSize'] > 16) { + // possibly handle malformed subchunk without a padding byte + $extendedFmt = fread($this->_fp, $fmt['SubchunkSize'] - 16 + ($fmt['SubchunkSize'] & 1)); // also read padding byte + if (strlen($extendedFmt) < $fmt['SubchunkSize'] - 16) { + throw new WavFormatException('Not wav format. Header too short.', 1); + } + } + + + // check extended "fmt " for EXTENSIBLE Audio Format + if ($fmt['AudioFormat'] == self::WAVE_FORMAT_EXTENSIBLE) { + if (strlen($extendedFmt) < 24) { + throw new WavFormatException('Invalid EXTENSIBLE "fmt " subchunk size. Found ' . $fmt['SubchunkSize'] . ', expected at least 40.', 19); + } + + $extensibleFmt = unpack('vSize/vValidBitsPerSample/VChannelMask/H32SubFormat', substr($extendedFmt, 0, 24)); + + if ( $extensibleFmt['SubFormat'] != self::WAVE_SUBFORMAT_PCM + && $extensibleFmt['SubFormat'] != self::WAVE_SUBFORMAT_IEEE_FLOAT) + { + throw new WavFormatException('Unsupported audio format. Only PCM or IEEE FLOAT (EXTENSIBLE) audio is supported.', 13); + } + + if ( ($extensibleFmt['SubFormat'] == self::WAVE_SUBFORMAT_PCM && !in_array($fmt['BitsPerSample'], array(8, 16, 24))) + || ($extensibleFmt['SubFormat'] == self::WAVE_SUBFORMAT_IEEE_FLOAT && $fmt['BitsPerSample'] != 32)) + { + throw new WavFormatException('Only 8, 16 and 24-bit PCM and 32-bit IEEE FLOAT (EXTENSIBLE) audio is supported.', 16); + } + + if ($extensibleFmt['Size'] != 22) { + trigger_error('Invaid extension size in EXTENSIBLE "fmt " subchunk.', E_USER_NOTICE); + $extensibleFmt['Size'] = 22; + //throw new WavFormatException('Invaid extension size in EXTENSIBLE "fmt " subchunk.', 20); + } + + if ($extensibleFmt['ValidBitsPerSample'] != $fmt['BitsPerSample']) { + trigger_error('Invaid or unsupported valid bits per sample in EXTENSIBLE "fmt " subchunk.', E_USER_NOTICE); + $extensibleFmt['ValidBitsPerSample'] = $fmt['BitsPerSample']; + //throw new WavFormatException('Invaid or unsupported valid bits per sample in EXTENSIBLE "fmt " subchunk.', 21); + } + + if ($extensibleFmt['ChannelMask'] != 0) { + // count number of set bits - Hamming weight + $c = (int)$extensibleFmt['ChannelMask']; + $n = 0; + while ($c > 0) { + $n += $c & 1; + $c >>= 1; + } + if ($n != $fmt['NumChannels'] || (((int)$extensibleFmt['ChannelMask'] | self::SPEAKER_ALL) != self::SPEAKER_ALL)) { + trigger_error('Invalid channel mask in EXTENSIBLE "fmt " subchunk. The number of channels does not match the number of locations in the mask.', E_USER_NOTICE); + $extensibleFmt['ChannelMask'] = 0; + //throw new WavFormatException('Invalid channel mask in EXTENSIBLE "fmt " subchunk. The number of channels does not match the number of locations in the mask.', 22); + } + } + + $this->_fmtExtendedSize = strlen($extendedFmt); + $this->_validBitsPerSample = $extensibleFmt['ValidBitsPerSample']; + $this->_channelMask = $extensibleFmt['ChannelMask']; + $this->_audioSubFormat = $extensibleFmt['SubFormat']; + + } else { + $this->_fmtExtendedSize = strlen($extendedFmt); + $this->_validBitsPerSample = $fmt['BitsPerSample']; + $this->_channelMask = 0; + $this->_audioSubFormat = null; + } + + + // read additional subchunks until "data" subchunk is found + $factSubchunk = array(); + $dataSubchunk = array(); + + while (!feof($this->_fp)) { + $subchunkHeader = fread($this->_fp, 8); + if (strlen($subchunkHeader) < 8) { + throw new WavFormatException('Missing "data" subchunk.', 101); + } + + $subchunk = unpack('NSubchunkID/VSubchunkSize', $subchunkHeader); + + if ($subchunk['SubchunkID'] == 0x66616374) { // "fact" + // possibly handle malformed subchunk without a padding byte + $subchunkData = fread($this->_fp, $subchunk['SubchunkSize'] + ($subchunk['SubchunkSize'] & 1)); // also read padding byte + if (strlen($subchunkData) < 4) { + throw new WavFormatException('Invalid "fact" subchunk.', 102); + } + + $factParams = unpack('VSampleLength', substr($subchunkData, 0, 4)); + $factSubchunk = array_merge($subchunk, $factParams); + + } elseif ($subchunk['SubchunkID'] == 0x64617461) { // "data" + $dataSubchunk = $subchunk; + + break; + + } elseif ($subchunk['SubchunkID'] == 0x7761766C) { // "wavl" + throw new WavFormatException('Wave List Chunk ("wavl" subchunk) is not supported.', 106); + } else { + // skip all other (unknown) subchunks + // possibly handle malformed subchunk without a padding byte + if ( $subchunk['SubchunkSize'] < 0 + || fseek($this->_fp, $subchunk['SubchunkSize'] + ($subchunk['SubchunkSize'] & 1), SEEK_CUR) !== 0) { // also skip padding byte + throw new WavFormatException('Invalid subchunk (0x' . dechex($subchunk['SubchunkID']) . ') encountered.', 103); + } + } + } + + if (empty($dataSubchunk)) { + throw new WavFormatException('Missing "data" subchunk.', 101); + } + + + // check "data" subchunk + $dataOffset = ftell($this->_fp); + if ($dataSubchunk['SubchunkSize'] < 0 || $actualSize - $dataOffset < $dataSubchunk['SubchunkSize']) { + trigger_error('Invalid "data" subchunk size.', E_USER_NOTICE); + $dataSubchunk['SubchunkSize'] = $actualSize - $dataOffset; + //throw new WavFormatException('Invalid "data" subchunk size.', 104); + } + + $this->_dataOffset = $dataOffset; + $this->_dataSize = $dataSubchunk['SubchunkSize']; + $this->_dataSize_fp = $dataSubchunk['SubchunkSize']; + $this->_dataSize_valid = false; + $this->_samples = ''; + + + // check "fact" subchunk + $numBlocks = (int)($dataSubchunk['SubchunkSize'] / $fmt['BlockAlign']); + + if (empty($factSubchunk)) { // construct fake "fact" subchunk + $factSubchunk = array('SubchunkSize' => 0, 'SampleLength' => $numBlocks); + } + + if ($factSubchunk['SampleLength'] != $numBlocks) { + trigger_error('Invalid sample length in "fact" subchunk.', E_USER_NOTICE); + $factSubchunk['SampleLength'] = $numBlocks; + //throw new WavFormatException('Invalid sample length in "fact" subchunk.', 105); + } + + $this->_factChunkSize = $factSubchunk['SubchunkSize']; + $this->_numBlocks = $factSubchunk['SampleLength']; + + + return $this; + + } + + /** + * Read the wav data from the file into the buffer. + * + * @param $dataOffset (Optional) The byte offset to skip before starting to read. Must be a multiple of BlockAlign. + * @param $dataSize (Optional) The size of the data to read in bytes. Must be a multiple of BlockAlign. Defaults to all data. + * @throws WavFileException + */ + public function readWavData($dataOffset = 0, $dataSize = null) + { + // check preconditions + if (!is_resource($this->_fp)) { + throw new WavFileException('No wav file open. Use openWav() first.'); + } + + if ($dataOffset < 0 || $dataOffset % $this->getBlockAlign() > 0) { + throw new WavFileException('Invalid data offset. Has to be a multiple of BlockAlign.'); + } + + if (is_null($dataSize)) { + $dataSize = $this->_dataSize_fp - ($this->_dataSize_fp % $this->getBlockAlign()); // only read complete blocks + } elseif ($dataSize < 0 || $dataSize % $this->getBlockAlign() > 0) { + throw new WavFileException('Invalid data size to read. Has to be a multiple of BlockAlign.'); + } + + + // skip offset + if ($dataOffset > 0 && fseek($this->_fp, $dataOffset, SEEK_CUR) !== 0) { + throw new WavFileException('Seeking to data offset failed.'); + } + + // read data + $this->_samples .= fread($this->_fp, $dataSize); // allow appending + $this->setDataSize(); // implicit setSize(), setActualSize(), setNumBlocks() + + // close file or memory stream + return $this->closeWav(); + } + + + /*%******************************************************************************************%*/ + // Sample manipulation methods + + /** + * Return a single sample block from the file. + * + * @param int $blockNum (Required) The sample block number. Zero based. + * @return string The binary sample block (all channels). Returns null if the sample block number was out of range. + */ + public function getSampleBlock($blockNum) + { + // check preconditions + if (!$this->_dataSize_valid) { + $this->setDataSize(); // implicit setSize(), setActualSize(), setNumBlocks() + } + + $offset = $blockNum * $this->_blockAlign; + if ($offset + $this->_blockAlign > $this->_dataSize || $offset < 0) { + return null; + } + + + // read data + return substr($this->_samples, $offset, $this->_blockAlign); + } + + /** + * Set a single sample block.
+ * Allows to append a sample block. + * + * @param string $sampleBlock (Required) The binary sample block (all channels). + * @param int $blockNum (Required) The sample block number. Zero based. + * @throws WavFileException + */ + public function setSampleBlock($sampleBlock, $blockNum) + { + // check preconditions + $blockAlign = $this->_blockAlign; + if (!isset($sampleBlock[$blockAlign - 1]) || isset($sampleBlock[$blockAlign])) { // faster than: if (strlen($sampleBlock) != $blockAlign) + throw new WavFileException('Incorrect sample block size. Got ' . strlen($sampleBlock) . ', expected ' . $blockAlign . '.'); + } + + if (!$this->_dataSize_valid) { + $this->setDataSize(); // implicit setSize(), setActualSize(), setNumBlocks() + } + + $numBlocks = (int)($this->_dataSize / $blockAlign); + $offset = $blockNum * $blockAlign; + if ($blockNum > $numBlocks || $blockNum < 0) { // allow appending + throw new WavFileException('Sample block number is out of range.'); + } + + + // replace or append data + if ($blockNum == $numBlocks) { + // append + $this->_samples .= $sampleBlock; + $this->_dataSize += $blockAlign; + $this->_chunkSize += $blockAlign; + $this->_actualSize += $blockAlign; + $this->_numBlocks++; + } else { + // replace + for ($i = 0; $i < $blockAlign; ++$i) { + $this->_samples[$offset + $i] = $sampleBlock[$i]; + } + } + + return $this; + } + + /** + * Get a float sample value for a specific sample block and channel number. + * + * @param int $blockNum (Required) The sample block number to fetch. Zero based. + * @param int $channelNum (Required) The channel number within the sample block to fetch. First channel is 1. + * @return float The float sample value. Returns null if the sample block number was out of range. + * @throws WavFileException + */ + public function getSampleValue($blockNum, $channelNum) + { + // check preconditions + if ($channelNum < 1 || $channelNum > $this->_numChannels) { + throw new WavFileException('Channel number is out of range.'); + } + + if (!$this->_dataSize_valid) { + $this->setDataSize(); // implicit setSize(), setActualSize(), setNumBlocks() + } + + $sampleBytes = $this->_bitsPerSample / 8; + $offset = $blockNum * $this->_blockAlign + ($channelNum - 1) * $sampleBytes; + if ($offset + $sampleBytes > $this->_dataSize || $offset < 0) { + return null; + } + + // read binary value + $sampleBinary = substr($this->_samples, $offset, $sampleBytes); + + // convert binary to value + switch ($this->_bitsPerSample) { + case 8: + // unsigned char + return (float)((ord($sampleBinary) - 0x80) / 0x80); + + case 16: + // signed short, little endian + $data = unpack('v', $sampleBinary); + $sample = $data[1]; + if ($sample >= 0x8000) { + $sample -= 0x10000; + } + return (float)($sample / 0x8000); + + case 24: + // 3 byte packed signed integer, little endian + $data = unpack('C3', $sampleBinary); + $sample = $data[1] | ($data[2] << 8) | ($data[3] << 16); + if ($sample >= 0x800000) { + $sample -= 0x1000000; + } + return (float)($sample / 0x800000); + + case 32: + // 32-bit float + $data = unpack('f', $sampleBinary); + return (float)$data[1]; + + default: + return null; + } + } + + /** + * Sets a float sample value for a specific sample block number and channel.
+ * Converts float values to appropriate integer values and clips properly.
+ * Allows to append samples (in order). + * + * @param float $sampleFloat (Required) The float sample value to set. Converts float values and clips if necessary. + * @param int $blockNum (Required) The sample block number to set or append. Zero based. + * @param int $channelNum (Required) The channel number within the sample block to set or append. First channel is 1. + * @throws WavFileException + */ + public function setSampleValue($sampleFloat, $blockNum, $channelNum) + { + // check preconditions + if ($channelNum < 1 || $channelNum > $this->_numChannels) { + throw new WavFileException('Channel number is out of range.'); + } + + if (!$this->_dataSize_valid) { + $this->setDataSize(); // implicit setSize(), setActualSize(), setNumBlocks() + } + + $dataSize = $this->_dataSize; + $bitsPerSample = $this->_bitsPerSample; + $sampleBytes = $bitsPerSample / 8; + $offset = $blockNum * $this->_blockAlign + ($channelNum - 1) * $sampleBytes; + if (($offset + $sampleBytes > $dataSize && $offset != $dataSize) || $offset < 0) { // allow appending + throw new WavFileException('Sample block or channel number is out of range.'); + } + + + // convert to value, quantize and clip + if ($bitsPerSample == 32) { + $sample = $sampleFloat < -1.0 ? -1.0 : ($sampleFloat > 1.0 ? 1.0 : $sampleFloat); + } else { + $p = 1 << ($bitsPerSample - 1); // 2 to the power of _bitsPerSample divided by 2 + + // project and quantize (round) float to integer values + $sample = $sampleFloat < 0 ? (int)($sampleFloat * $p - 0.5) : (int)($sampleFloat * $p + 0.5); + + // clip if necessary to [-$p, $p - 1] + if ($sample < -$p) { + $sample = -$p; + } elseif ($sample > $p - 1) { + $sample = $p - 1; + } + } + + // convert to binary + switch ($bitsPerSample) { + case 8: + // unsigned char + $sampleBinary = chr($sample + 0x80); + break; + + case 16: + // signed short, little endian + if ($sample < 0) { + $sample += 0x10000; + } + $sampleBinary = pack('v', $sample); + break; + + case 24: + // 3 byte packed signed integer, little endian + if ($sample < 0) { + $sample += 0x1000000; + } + $sampleBinary = pack('C3', $sample & 0xff, ($sample >> 8) & 0xff, ($sample >> 16) & 0xff); + break; + + case 32: + // 32-bit float + $sampleBinary = pack('f', $sample); + break; + + default: + $sampleBinary = null; + $sampleBytes = 0; + break; + } + + // replace or append data + if ($offset == $dataSize) { + // append + $this->_samples .= $sampleBinary; + $this->_dataSize += $sampleBytes; + $this->_chunkSize += $sampleBytes; + $this->_actualSize += $sampleBytes; + $this->_numBlocks = (int)($this->_dataSize / $this->_blockAlign); + } else { + // replace + for ($i = 0; $i < $sampleBytes; ++$i) { + $this->_samples{$offset + $i} = $sampleBinary{$i}; + } + } + + return $this; + } + + + /*%******************************************************************************************%*/ + // Audio processing methods + + /** + * Run samples through audio processing filters. + * + * + * $wav->filter( + * array( + * WavFile::FILTER_MIX => array( // Filter for mixing 2 WavFile instances. + * 'wav' => $wav2, // (Required) The WavFile to mix into this WhavFile. If no optional arguments are given, can be passed without the array. + * 'loop' => true, // (Optional) Loop the selected portion (with warping to the beginning at the end). + * 'blockOffset' => 0, // (Optional) Block number to start mixing from. + * 'numBlocks' => null // (Optional) Number of blocks to mix in or to select for looping. Defaults to the end or all data for looping. + * ), + * WavFile::FILTER_NORMALIZE => 0.6, // (Required) Normalization of (mixed) audio samples - see threshold parameter for normalizeSample(). + * WavFile::FILTER_DEGRADE => 0.9 // (Required) Introduce random noise. The quality relative to the amplitude. 1 = no noise, 0 = max. noise. + * ), + * 0, // (Optional) The block number of this WavFile to start with. + * null // (Optional) The number of blocks to process. + * ); + * + * + * @param array $filters (Required) An array of 1 or more audio processing filters. + * @param int $blockOffset (Optional) The block number to start precessing from. + * @param int $numBlocks (Optional) The maximum number of blocks to process. + * @throws WavFileException + */ + public function filter($filters, $blockOffset = 0, $numBlocks = null) + { + // check preconditions + $totalBlocks = $this->getNumBlocks(); + $numChannels = $this->getNumChannels(); + if (is_null($numBlocks)) $numBlocks = $totalBlocks - $blockOffset; + + if (!is_array($filters) || empty($filters) || $blockOffset < 0 || $blockOffset > $totalBlocks || $numBlocks <= 0) { + // nothing to do + return $this; + } + + // check filtes + $filter_mix = false; + if (array_key_exists(self::FILTER_MIX, $filters)) { + if (!is_array($filters[self::FILTER_MIX])) { + // assume the 'wav' parameter + $filters[self::FILTER_MIX] = array('wav' => $filters[self::FILTER_MIX]); + } + + $mix_wav = @$filters[self::FILTER_MIX]['wav']; + if (!($mix_wav instanceof WavFile)) { + throw new WavFileException("WavFile to mix is missing or invalid."); + } elseif ($mix_wav->getSampleRate() != $this->getSampleRate()) { + throw new WavFileException("Sample rate of WavFile to mix does not match."); + } else if ($mix_wav->getNumChannels() != $this->getNumChannels()) { + throw new WavFileException("Number of channels of WavFile to mix does not match."); + } + + $mix_loop = @$filters[self::FILTER_MIX]['loop']; + if (is_null($mix_loop)) $mix_loop = false; + + $mix_blockOffset = @$filters[self::FILTER_MIX]['blockOffset']; + if (is_null($mix_blockOffset)) $mix_blockOffset = 0; + + $mix_totalBlocks = $mix_wav->getNumBlocks(); + $mix_numBlocks = @$filters[self::FILTER_MIX]['numBlocks']; + if (is_null($mix_numBlocks)) $mix_numBlocks = $mix_loop ? $mix_totalBlocks : $mix_totalBlocks - $mix_blockOffset; + $mix_maxBlock = min($mix_blockOffset + $mix_numBlocks, $mix_totalBlocks); + + $filter_mix = true; + } + + $filter_normalize = false; + if (array_key_exists(self::FILTER_NORMALIZE, $filters)) { + $normalize_threshold = @$filters[self::FILTER_NORMALIZE]; + + if (!is_null($normalize_threshold) && abs($normalize_threshold) != 1) $filter_normalize = true; + } + + $filter_degrade = false; + if (array_key_exists(self::FILTER_DEGRADE, $filters)) { + $degrade_quality = @$filters[self::FILTER_DEGRADE]; + if (is_null($degrade_quality)) $degrade_quality = 1; + + if ($degrade_quality >= 0 && $degrade_quality < 1) $filter_degrade = true; + } + + + // loop through all sample blocks + for ($block = 0; $block < $numBlocks; ++$block) { + // loop through all channels + for ($channel = 1; $channel <= $numChannels; ++$channel) { + // read current sample + $currentBlock = $blockOffset + $block; + $sampleFloat = $this->getSampleValue($currentBlock, $channel); + + + /************* MIX FILTER ***********************/ + if ($filter_mix) { + if ($mix_loop) { + $mixBlock = ($mix_blockOffset + ($block % $mix_numBlocks)) % $mix_totalBlocks; + } else { + $mixBlock = $mix_blockOffset + $block; + } + + if ($mixBlock < $mix_maxBlock) { + $sampleFloat += $mix_wav->getSampleValue($mixBlock, $channel); + } + } + + /************* NORMALIZE FILTER *******************/ + if ($filter_normalize) { + $sampleFloat = $this->normalizeSample($sampleFloat, $normalize_threshold); + } + + /************* DEGRADE FILTER *******************/ + if ($filter_degrade) { + $sampleFloat += rand(1000000 * ($degrade_quality - 1), 1000000 * (1 - $degrade_quality)) / 1000000; + } + + + // write current sample + $this->setSampleValue($sampleFloat, $currentBlock, $channel); + } + } + + return $this; + } + + /** + * Append a wav file to the current wav.
+ * The wav files must have the same sample rate, number of bits per sample, and number of channels. + * + * @param WavFile $wav (Required) The wav file to append. + * @throws WavFileException + */ + public function appendWav(WavFile $wav) { + // basic checks + if ($wav->getSampleRate() != $this->getSampleRate()) { + throw new WavFileException("Sample rate for wav files do not match."); + } else if ($wav->getBitsPerSample() != $this->getBitsPerSample()) { + throw new WavFileException("Bits per sample for wav files do not match."); + } else if ($wav->getNumChannels() != $this->getNumChannels()) { + throw new WavFileException("Number of channels for wav files do not match."); + } + + $this->_samples .= $wav->_samples; + $this->setDataSize(); // implicit setSize(), setActualSize(), setNumBlocks() + + return $this; + } + + /** + * Mix 2 wav files together.
+ * Both wavs must have the same sample rate and same number of channels. + * + * @param WavFile $wav (Required) The WavFile to mix. + * @param float $normalizeThreshold (Optional) See normalizeSample for an explanation. + * @throws WavFileException + */ + public function mergeWav(WavFile $wav, $normalizeThreshold = null) { + return $this->filter(array( + WavFile::FILTER_MIX => $wav, + WavFile::FILTER_NORMALIZE => $normalizeThreshold + )); + } + + /** + * Add silence to the wav file. + * + * @param float $duration (Optional) How many seconds of silence. If negative, add to the beginning of the file. Defaults to 1s. + */ + public function insertSilence($duration = 1.0) + { + $numSamples = $this->getSampleRate() * abs($duration); + $numChannels = $this->getNumChannels(); + + $data = str_repeat(self::packSample($this->getZeroAmplitude(), $this->getBitsPerSample()), $numSamples * $numChannels); + if ($duration >= 0) { + $this->_samples .= $data; + } else { + $this->_samples = $data . $this->_samples; + } + + $this->setDataSize(); // implicit setSize(), setActualSize(), setNumBlocks() + + return $this; + } + + /** + * Degrade the quality of the wav file by introducing random noise. + * + * @param float quality (Optional) The quality relative to the amplitude. 1 = no noise, 0 = max. noise. + */ + public function degrade($quality = 1.0) + { + return $this->filter(self::FILTER_DEGRADE, array( + WavFile::FILTER_DEGRADE => $quality + )); + } + + /** + * Generate noise at the end of the wav for the specified duration and volume. + * + * @param float $duration (Optional) Number of seconds of noise to generate. + * @param float $percent (Optional) The percentage of the maximum amplitude to use. 100 = full amplitude. + */ + public function generateNoise($duration = 1.0, $percent = 100) + { + $numChannels = $this->getNumChannels(); + $numSamples = $this->getSampleRate() * $duration; + $minAmp = $this->getMinAmplitude(); + $maxAmp = $this->getMaxAmplitude(); + $bitDepth = $this->getBitsPerSample(); + + for ($s = 0; $s < $numSamples; ++$s) { + if ($bitDepth == 32) { + $val = rand(-$percent * 10000, $percent * 10000) / 1000000; + } else { + $val = rand($minAmp, $maxAmp); + $val = (int)($val * $percent / 100); + } + + $this->_samples .= str_repeat(self::packSample($val, $bitDepth), $numChannels); + } + + $this->setDataSize(); // implicit setSize(), setActualSize(), setNumBlocks() + + return $this; + } + + /** + * Convert sample data to different bits per sample. + * + * @param int $bitsPerSample (Required) The new number of bits per sample; + * @throws WavFileException + */ + public function convertBitsPerSample($bitsPerSample) { + if ($this->getBitsPerSample() == $bitsPerSample) { + return $this; + } + + $tempWav = new WavFile($this->getNumChannels(), $this->getSampleRate(), $bitsPerSample); + $tempWav->filter( + array(self::FILTER_MIX => $this), + 0, + $this->getNumBlocks() + ); + + $this->setSamples() // implicit setDataSize(), setSize(), setActualSize(), setNumBlocks() + ->setBitsPerSample($bitsPerSample); // implicit setValidBitsPerSample(), setAudioFormat(), setAudioSubFormat(), setFmtChunkSize(), setFactChunkSize(), setSize(), setActualSize(), setDataOffset(), setByteRate(), setBlockAlign(), setNumBlocks() + $this->_samples = $tempWav->_samples; + $this->setDataSize(); // implicit setSize(), setActualSize(), setNumBlocks() + + return $this; + } + + + /*%******************************************************************************************%*/ + // Miscellaneous methods + + /** + * Output information about the wav object. + */ + public function displayInfo() + { + $s = "File Size: %u\n" + ."Chunk Size: %u\n" + ."fmt Subchunk Size: %u\n" + ."Extended fmt Size: %u\n" + ."fact Subchunk Size: %u\n" + ."Data Offset: %u\n" + ."Data Size: %u\n" + ."Audio Format: %s\n" + ."Audio SubFormat: %s\n" + ."Channels: %u\n" + ."Channel Mask: 0x%s\n" + ."Sample Rate: %u\n" + ."Bits Per Sample: %u\n" + ."Valid Bits Per Sample: %u\n" + ."Sample Block Size: %u\n" + ."Number of Sample Blocks: %u\n" + ."Byte Rate: %uBps\n"; + + $s = sprintf($s, $this->getActualSize(), + $this->getChunkSize(), + $this->getFmtChunkSize(), + $this->getFmtExtendedSize(), + $this->getFactChunkSize(), + $this->getDataOffset(), + $this->getDataSize(), + $this->getAudioFormat() == self::WAVE_FORMAT_PCM ? 'PCM' : ($this->getAudioFormat() == self::WAVE_FORMAT_IEEE_FLOAT ? 'IEEE FLOAT' : 'EXTENSIBLE'), + $this->getAudioSubFormat() == self::WAVE_SUBFORMAT_PCM ? 'PCM' : 'IEEE FLOAT', + $this->getNumChannels(), + dechex($this->getChannelMask()), + $this->getSampleRate(), + $this->getBitsPerSample(), + $this->getValidBitsPerSample(), + $this->getBlockAlign(), + $this->getNumBlocks(), + $this->getByteRate()); + + if (php_sapi_name() == 'cli') { + return $s; + } else { + return nl2br($s); + } + } +} + + +/*%******************************************************************************************%*/ +// Exceptions + +/** + * WavFileException indicates an illegal state or argument in this class. + */ +class WavFileException extends Exception {} + +/** + * WavFormatException indicates a malformed or unsupported wav file header. + */ +class WavFormatException extends WavFileException {} diff --git a/captcha/audio/0.wav b/captcha/audio/0.wav new file mode 100644 index 0000000..7cd0b37 Binary files /dev/null and b/captcha/audio/0.wav differ diff --git a/captcha/audio/1.wav b/captcha/audio/1.wav new file mode 100644 index 0000000..b589080 Binary files /dev/null and b/captcha/audio/1.wav differ diff --git a/captcha/audio/10.wav b/captcha/audio/10.wav new file mode 100644 index 0000000..526e55d Binary files /dev/null and b/captcha/audio/10.wav differ diff --git a/captcha/audio/11.wav b/captcha/audio/11.wav new file mode 100644 index 0000000..587268e Binary files /dev/null and b/captcha/audio/11.wav differ diff --git a/captcha/audio/12.wav b/captcha/audio/12.wav new file mode 100644 index 0000000..346908a Binary files /dev/null and b/captcha/audio/12.wav differ diff --git a/captcha/audio/13.wav b/captcha/audio/13.wav new file mode 100644 index 0000000..88eaf08 Binary files /dev/null and b/captcha/audio/13.wav differ diff --git a/captcha/audio/14.wav b/captcha/audio/14.wav new file mode 100644 index 0000000..b179d33 Binary files /dev/null and b/captcha/audio/14.wav differ diff --git a/captcha/audio/15.wav b/captcha/audio/15.wav new file mode 100644 index 0000000..2e2c1b6 Binary files /dev/null and b/captcha/audio/15.wav differ diff --git a/captcha/audio/16.wav b/captcha/audio/16.wav new file mode 100644 index 0000000..5481083 Binary files /dev/null and b/captcha/audio/16.wav differ diff --git a/captcha/audio/17.wav b/captcha/audio/17.wav new file mode 100644 index 0000000..2e2405b Binary files /dev/null and b/captcha/audio/17.wav differ diff --git a/captcha/audio/18.wav b/captcha/audio/18.wav new file mode 100644 index 0000000..e25da9f Binary files /dev/null and b/captcha/audio/18.wav differ diff --git a/captcha/audio/19.wav b/captcha/audio/19.wav new file mode 100644 index 0000000..4d6231e Binary files /dev/null and b/captcha/audio/19.wav differ diff --git a/captcha/audio/2.wav b/captcha/audio/2.wav new file mode 100644 index 0000000..8ef091d Binary files /dev/null and b/captcha/audio/2.wav differ diff --git a/captcha/audio/20.wav b/captcha/audio/20.wav new file mode 100644 index 0000000..a660611 Binary files /dev/null and b/captcha/audio/20.wav differ diff --git a/captcha/audio/3.wav b/captcha/audio/3.wav new file mode 100644 index 0000000..56b6eb9 Binary files /dev/null and b/captcha/audio/3.wav differ diff --git a/captcha/audio/4.wav b/captcha/audio/4.wav new file mode 100644 index 0000000..1622b39 Binary files /dev/null and b/captcha/audio/4.wav differ diff --git a/captcha/audio/5.wav b/captcha/audio/5.wav new file mode 100644 index 0000000..1eb0022 Binary files /dev/null and b/captcha/audio/5.wav differ diff --git a/captcha/audio/6.wav b/captcha/audio/6.wav new file mode 100644 index 0000000..3682320 Binary files /dev/null and b/captcha/audio/6.wav differ diff --git a/captcha/audio/7.wav b/captcha/audio/7.wav new file mode 100644 index 0000000..fe530bb Binary files /dev/null and b/captcha/audio/7.wav differ diff --git a/captcha/audio/8.wav b/captcha/audio/8.wav new file mode 100644 index 0000000..1206aa7 Binary files /dev/null and b/captcha/audio/8.wav differ diff --git a/captcha/audio/9.wav b/captcha/audio/9.wav new file mode 100644 index 0000000..ae0172b Binary files /dev/null and b/captcha/audio/9.wav differ diff --git a/captcha/audio/A.wav b/captcha/audio/A.wav new file mode 100644 index 0000000..a7fafe0 Binary files /dev/null and b/captcha/audio/A.wav differ diff --git a/captcha/audio/B.wav b/captcha/audio/B.wav new file mode 100644 index 0000000..cefb619 Binary files /dev/null and b/captcha/audio/B.wav differ diff --git a/captcha/audio/C.wav b/captcha/audio/C.wav new file mode 100644 index 0000000..affc191 Binary files /dev/null and b/captcha/audio/C.wav differ diff --git a/captcha/audio/D.wav b/captcha/audio/D.wav new file mode 100644 index 0000000..87efc95 Binary files /dev/null and b/captcha/audio/D.wav differ diff --git a/captcha/audio/E.wav b/captcha/audio/E.wav new file mode 100644 index 0000000..1af4e02 Binary files /dev/null and b/captcha/audio/E.wav differ diff --git a/captcha/audio/F.wav b/captcha/audio/F.wav new file mode 100644 index 0000000..d139b32 Binary files /dev/null and b/captcha/audio/F.wav differ diff --git a/captcha/audio/G.wav b/captcha/audio/G.wav new file mode 100644 index 0000000..b54d507 Binary files /dev/null and b/captcha/audio/G.wav differ diff --git a/captcha/audio/H.wav b/captcha/audio/H.wav new file mode 100644 index 0000000..99f1318 Binary files /dev/null and b/captcha/audio/H.wav differ diff --git a/captcha/audio/I.wav b/captcha/audio/I.wav new file mode 100644 index 0000000..809c560 Binary files /dev/null and b/captcha/audio/I.wav differ diff --git a/captcha/audio/J.wav b/captcha/audio/J.wav new file mode 100644 index 0000000..85ef1b6 Binary files /dev/null and b/captcha/audio/J.wav differ diff --git a/captcha/audio/K.wav b/captcha/audio/K.wav new file mode 100644 index 0000000..3a40e2d Binary files /dev/null and b/captcha/audio/K.wav differ diff --git a/captcha/audio/L.wav b/captcha/audio/L.wav new file mode 100644 index 0000000..e56c0e3 Binary files /dev/null and b/captcha/audio/L.wav differ diff --git a/captcha/audio/M.wav b/captcha/audio/M.wav new file mode 100644 index 0000000..a4dd9b5 Binary files /dev/null and b/captcha/audio/M.wav differ diff --git a/captcha/audio/MINUS.wav b/captcha/audio/MINUS.wav new file mode 100644 index 0000000..cb2c086 Binary files /dev/null and b/captcha/audio/MINUS.wav differ diff --git a/captcha/audio/N.wav b/captcha/audio/N.wav new file mode 100644 index 0000000..807a947 Binary files /dev/null and b/captcha/audio/N.wav differ diff --git a/captcha/audio/O.wav b/captcha/audio/O.wav new file mode 100644 index 0000000..538be6b Binary files /dev/null and b/captcha/audio/O.wav differ diff --git a/captcha/audio/P.wav b/captcha/audio/P.wav new file mode 100644 index 0000000..77696ac Binary files /dev/null and b/captcha/audio/P.wav differ diff --git a/captcha/audio/PLUS.wav b/captcha/audio/PLUS.wav new file mode 100644 index 0000000..f340b6c Binary files /dev/null and b/captcha/audio/PLUS.wav differ diff --git a/captcha/audio/Q.wav b/captcha/audio/Q.wav new file mode 100644 index 0000000..33b3c89 Binary files /dev/null and b/captcha/audio/Q.wav differ diff --git a/captcha/audio/R.wav b/captcha/audio/R.wav new file mode 100644 index 0000000..b3523c5 Binary files /dev/null and b/captcha/audio/R.wav differ diff --git a/captcha/audio/S.wav b/captcha/audio/S.wav new file mode 100644 index 0000000..4147bf9 Binary files /dev/null and b/captcha/audio/S.wav differ diff --git a/captcha/audio/T.wav b/captcha/audio/T.wav new file mode 100644 index 0000000..d01e529 Binary files /dev/null and b/captcha/audio/T.wav differ diff --git a/captcha/audio/TIMES.wav b/captcha/audio/TIMES.wav new file mode 100644 index 0000000..85692b8 Binary files /dev/null and b/captcha/audio/TIMES.wav differ diff --git a/captcha/audio/U.wav b/captcha/audio/U.wav new file mode 100644 index 0000000..8ab9d17 Binary files /dev/null and b/captcha/audio/U.wav differ diff --git a/captcha/audio/V.wav b/captcha/audio/V.wav new file mode 100644 index 0000000..763e599 Binary files /dev/null and b/captcha/audio/V.wav differ diff --git a/captcha/audio/W.wav b/captcha/audio/W.wav new file mode 100644 index 0000000..8e742b6 Binary files /dev/null and b/captcha/audio/W.wav differ diff --git a/captcha/audio/X.wav b/captcha/audio/X.wav new file mode 100644 index 0000000..225e690 Binary files /dev/null and b/captcha/audio/X.wav differ diff --git a/captcha/audio/Y.wav b/captcha/audio/Y.wav new file mode 100644 index 0000000..9d766ac Binary files /dev/null and b/captcha/audio/Y.wav differ diff --git a/captcha/audio/Z.wav b/captcha/audio/Z.wav new file mode 100644 index 0000000..69be2dd Binary files /dev/null and b/captcha/audio/Z.wav differ diff --git a/captcha/audio/error.wav b/captcha/audio/error.wav new file mode 100644 index 0000000..35209ab Binary files /dev/null and b/captcha/audio/error.wav differ diff --git a/captcha/audio/noise/check-point-1.wav b/captcha/audio/noise/check-point-1.wav new file mode 100644 index 0000000..9533b12 Binary files /dev/null and b/captcha/audio/noise/check-point-1.wav differ diff --git a/captcha/audio/noise/crowd-talking-1.wav b/captcha/audio/noise/crowd-talking-1.wav new file mode 100644 index 0000000..7f451df Binary files /dev/null and b/captcha/audio/noise/crowd-talking-1.wav differ diff --git a/captcha/audio/noise/crowd-talking-6.wav b/captcha/audio/noise/crowd-talking-6.wav new file mode 100644 index 0000000..fd9a10d Binary files /dev/null and b/captcha/audio/noise/crowd-talking-6.wav differ diff --git a/captcha/audio/noise/crowd-talking-7.wav b/captcha/audio/noise/crowd-talking-7.wav new file mode 100644 index 0000000..986f6ae Binary files /dev/null and b/captcha/audio/noise/crowd-talking-7.wav differ diff --git a/captcha/audio/noise/kids-playing-1.wav b/captcha/audio/noise/kids-playing-1.wav new file mode 100644 index 0000000..cb9d17b Binary files /dev/null and b/captcha/audio/noise/kids-playing-1.wav differ diff --git a/captcha/backgrounds/bg3.jpg b/captcha/backgrounds/bg3.jpg new file mode 100644 index 0000000..a2d62d6 Binary files /dev/null and b/captcha/backgrounds/bg3.jpg differ diff --git a/captcha/backgrounds/bg4.jpg b/captcha/backgrounds/bg4.jpg new file mode 100644 index 0000000..37a22f8 Binary files /dev/null and b/captcha/backgrounds/bg4.jpg differ diff --git a/captcha/backgrounds/bg5.jpg b/captcha/backgrounds/bg5.jpg new file mode 100644 index 0000000..0a04181 Binary files /dev/null and b/captcha/backgrounds/bg5.jpg differ diff --git a/captcha/backgrounds/bg6.png b/captcha/backgrounds/bg6.png new file mode 100644 index 0000000..22f9d67 Binary files /dev/null and b/captcha/backgrounds/bg6.png differ diff --git a/captcha/captcha.html b/captcha/captcha.html new file mode 100644 index 0000000..fef088d --- /dev/null +++ b/captcha/captcha.html @@ -0,0 +1,13 @@ + + +

+ CAPTCHA Image + + + +   + Reload Image
+ Enter Code*:
+ +

+ \ No newline at end of file diff --git a/captcha/database/.htaccess b/captcha/database/.htaccess new file mode 100644 index 0000000..8d2f256 --- /dev/null +++ b/captcha/database/.htaccess @@ -0,0 +1 @@ +deny from all diff --git a/captcha/database/index.html b/captcha/database/index.html new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/captcha/database/index.html @@ -0,0 +1 @@ + diff --git a/captcha/database/securimage.sqlite b/captcha/database/securimage.sqlite new file mode 100644 index 0000000..783f48e Binary files /dev/null and b/captcha/database/securimage.sqlite differ diff --git a/captcha/example_form.ajax.php b/captcha/example_form.ajax.php new file mode 100644 index 0000000..31cc1f8 --- /dev/null +++ b/captcha/example_form.ajax.php @@ -0,0 +1,214 @@ + + + + + + Securimage Example Form + + + + + + + + +
+Example Form + +

+ This is an example PHP form that processes user information, checks for errors, and validates the captcha code.
+ This example form also demonstrates how to submit a form to itself to display error messages. +

+ + + +
+ + +

+ Name*:
+ +

+ +

+ Email*:
+ +

+ +

+ URL:
+ +

+ +

+ Message*:
+ +

+ +

+ CAPTCHA Image + + + +   + Reload Image
+ Enter Code*:
+ +

+ +

+
+ +

+ +
+
+ + + + + $value) { + if (!is_array($key)) { + // sanitize the input data + if ($key != 'ct_message') $value = strip_tags($value); + $_POST[$key] = htmlspecialchars(stripslashes(trim($value))); + } + } + + $name = @$_POST['ct_name']; // name from the form + $email = @$_POST['ct_email']; // email from the form + $URL = @$_POST['ct_URL']; // url from the form + $message = @$_POST['ct_message']; // the message from the form + $captcha = @$_POST['ct_captcha']; // the user's entry for the captcha code + $name = substr($name, 0, 64); // limit name to 64 characters + + $errors = array(); // initialize empty error array + + if (isset($GLOBALS['DEBUG_MODE']) && $GLOBALS['DEBUG_MODE'] == false) { + // only check for errors if the form is not in debug mode + + if (strlen($name) < 3) { + // name too short, add error + $errors['name_error'] = 'Your name is required'; + } + + if (strlen($email) == 0) { + // no email address given + $errors['email_error'] = 'Email address is required'; + } else if ( !preg_match('/^(?:[\w\d]+\.?)+@(?:(?:[\w\d]\-?)+\.)+\w{2,4}$/i', $email)) { + // invalid email format + $errors['email_error'] = 'Email address entered is invalid'; + } + + if (strlen($message) < 20) { + // message length too short + $errors['message_error'] = 'Please enter a message'; + } + } + + // Only try to validate the captcha if the form has no errors + // This is especially important for ajax calls + if (sizeof($errors) == 0) { + require_once dirname(__FILE__) . '/securimage.php'; + $securimage = new Securimage(); + + if ($securimage->check($captcha) == false) { + $errors['captcha_error'] = 'Incorrect security code entered'; + } + } + + if (sizeof($errors) == 0) { + // no errors, send the form + $time = date('r'); + $message = "A message was submitted from the contact form. The following information was provided.

" + . "Name: $name
" + . "Email: $email
" + . "URL: $URL
" + . "Message:
" + . "
$message
" + . "

IP Address: {$_SERVER['REMOTE_ADDR']}
" + . "Time: $time
" + . "Browser: {$_SERVER['HTTP_USER_AGENT']}
"; + + if (isset($GLOBALS['DEBUG_MODE']) && $GLOBALS['DEBUG_MODE'] == false) { + // send the message with mail() + mail($GLOBALS['ct_recipient'], $GLOBALS['ct_msg_subject'], $message, "From: {$GLOBALS['ct_recipient']}\r\nReply-To: {$email}\r\nContent-type: text/html; charset=ISO-8859-1\r\nMIME-Version: 1.0"); + } + + $return = array('error' => 0, 'message' => 'OK'); + die(json_encode($return)); + } else { + $errmsg = ''; + foreach($errors as $key => $error) { + // set up error messages to display with each field + $errmsg .= " - {$error}\n"; + } + + $return = array('error' => 1, 'message' => $errmsg); + die(json_encode($return)); + } + } // POST +} // function process_si_contact_form() diff --git a/captcha/example_form.php b/captcha/example_form.php new file mode 100644 index 0000000..10ba189 --- /dev/null +++ b/captcha/example_form.php @@ -0,0 +1,192 @@ + + + + + + Securimage Example Form + + + + +
+Example Form + +

+ This is an example PHP form that processes user information, checks for errors, and validates the captcha code.
+ This example form also demonstrates how to submit a form to itself to display error messages. +

+ + +There was a problem with your submission. Errors are displayed below in red.

+ +The captcha was correct and the message has been sent!

+ + +
+ + +

+ Name*:   
+ +

+ +

+ Email*:   
+ +

+ +

+ URL:   
+ +

+ +

+ Message*:   
+ +

+ +

+ CAPTCHA Image + + + +   + Reload Image
+ Enter Code*:
+ + +

+ +

+
+ +

+ +
+
+ + + + + $value) { + if (!is_array($key)) { + // sanitize the input data + if ($key != 'ct_message') $value = strip_tags($value); + $_POST[$key] = htmlspecialchars(stripslashes(trim($value))); + } + } + + $name = @$_POST['ct_name']; // name from the form + $email = @$_POST['ct_email']; // email from the form + $URL = @$_POST['ct_URL']; // url from the form + $message = @$_POST['ct_message']; // the message from the form + $captcha = @$_POST['ct_captcha']; // the user's entry for the captcha code + $name = substr($name, 0, 64); // limit name to 64 characters + + $errors = array(); // initialize empty error array + + if (isset($GLOBALS['DEBUG_MODE']) && $GLOBALS['DEBUG_MODE'] == false) { + // only check for errors if the form is not in debug mode + + if (strlen($name) < 3) { + // name too short, add error + $errors['name_error'] = 'Your name is required'; + } + + if (strlen($email) == 0) { + // no email address given + $errors['email_error'] = 'Email address is required'; + } else if ( !preg_match('/^(?:[\w\d]+\.?)+@(?:(?:[\w\d]\-?)+\.)+\w{2,4}$/i', $email)) { + // invalid email format + $errors['email_error'] = 'Email address entered is invalid'; + } + + if (strlen($message) < 20) { + // message length too short + $errors['message_error'] = 'Please enter a message'; + } + } + + // Only try to validate the captcha if the form has no errors + // This is especially important for ajax calls + if (sizeof($errors) == 0) { + require_once dirname(__FILE__) . '/securimage.php'; + $securimage = new Securimage(); + + if ($securimage->check($captcha) == false) { + $errors['captcha_error'] = 'Incorrect security code entered
'; + } + } + + if (sizeof($errors) == 0) { + // no errors, send the form + $time = date('r'); + $message = "A message was submitted from the contact form. The following information was provided.

" + . "Name: $name
" + . "Email: $email
" + . "URL: $URL
" + . "Message:
" + . "
$message
" + . "

IP Address: {$_SERVER['REMOTE_ADDR']}
" + . "Time: $time
" + . "Browser: {$_SERVER['HTTP_USER_AGENT']}
"; + + $message = wordwrap($message, 70); + + if (isset($GLOBALS['DEBUG_MODE']) && $GLOBALS['DEBUG_MODE'] == false) { + // send the message with mail() + mail($GLOBALS['ct_recipient'], $GLOBALS['ct_msg_subject'], $message, "From: {$GLOBALS['ct_recipient']}\r\nReply-To: {$email}\r\nContent-type: text/html; charset=ISO-8859-1\r\nMIME-Version: 1.0"); + } + + $_SESSION['ctform']['error'] = false; // no error with form + $_SESSION['ctform']['success'] = true; // message sent + } else { + // save the entries, this is to re-populate the form + $_SESSION['ctform']['ct_name'] = $name; // save name from the form submission + $_SESSION['ctform']['ct_email'] = $email; // save email + $_SESSION['ctform']['ct_URL'] = $URL; // save URL + $_SESSION['ctform']['ct_message'] = $message; // save message + + foreach($errors as $key => $error) { + // set up error messages to display with each field + $_SESSION['ctform'][$key] = "$error"; + } + + $_SESSION['ctform']['error'] = true; // set error floag + } + } // POST +} + +$_SESSION['ctform']['success'] = false; // clear success value after running diff --git a/captcha/examples/display_value.php b/captcha/examples/display_value.php new file mode 100644 index 0000000..d4620bc --- /dev/null +++ b/captcha/examples/display_value.php @@ -0,0 +1,60 @@ + date('h:i:s a'), + 'captchaId' => sha1(uniqid($_SERVER['REMOTE_ADDR'] . $_SERVER['REMOTE_PORT'])), + 'image_width' => 250, + 'no_session' => true, + 'no_exit' => true, + 'use_sqlite_db' => false, + 'send_headers' => false); + +// construct new Securimage object with the given options +$img = new Securimage($options); + +// show the image using the supplied display_value +// this demonstrates how to use output buffering to capture the output + +ob_start(); // start the output buffer +$img->show(); // output the image so it is captured by the buffer +$imgBinary = ob_get_contents(); // get contents of the buffer +ob_end_clean(); // turn off buffering and clear the buffer + +header('Content-Type: image/png'); +header('Content-Length: ' . strlen($imgBinary)); + +echo $imgBinary; + diff --git a/captcha/examples/securimage_show_example.php b/captcha/examples/securimage_show_example.php new file mode 100644 index 0000000..0c08cbb --- /dev/null +++ b/captcha/examples/securimage_show_example.php @@ -0,0 +1,65 @@ + + * File: securimage_show_example.php
+ * + * Copyright (c) 2012, Drew Phillips + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * Any modifications to the library should be indicated clearly in the source code + * to inform users that the changes are not a part of the original software.

+ * + * If you found this script useful, please take a quick moment to rate it.
+ * http://www.hotscripts.com/rate/49400.html Thanks. + * + * @link http://www.phpcaptcha.org Securimage PHP CAPTCHA + * @link http://www.phpcaptcha.org/latest.zip Download Latest Version + * @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation + * @copyright 2012 Drew Phillips + * @author Drew Phillips + * @version 3.2RC2 (April 2012) + * @package Securimage + * + */ + +require_once '../securimage.php'; + +$img = new Securimage(); + +//Change some settings +$img->image_width = 250; +$img->image_height = 80; +$img->perturbation = 0.85; +$img->image_bg_color = new Securimage_Color("#f6f6f6"); +$img->use_transparent_text = true; +$img->text_transparency_percentage = 30; // 100 = completely transparent +$img->num_lines = 7; +$img->line_color = new Securimage_Color("#eaeaea"); +$img->image_signature = 'phpcaptcha.org'; +$img->signature_color = new Securimage_Color(rand(0, 64), rand(64, 128), rand(128, 255)); +$img->use_wordlist = true; + +$img->show('backgrounds/bg3.jpg'); // alternate use: $img->show('/path/to/background_image.jpg'); + diff --git a/captcha/examples/securimage_show_example2.php b/captcha/examples/securimage_show_example2.php new file mode 100644 index 0000000..2b27157 --- /dev/null +++ b/captcha/examples/securimage_show_example2.php @@ -0,0 +1,63 @@ + + * File: securimage_show_example2.php
+ * + * Copyright (c) 2012, Drew Phillips + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * Any modifications to the library should be indicated clearly in the source code + * to inform users that the changes are not a part of the original software.

+ * + * If you found this script useful, please take a quick moment to rate it.
+ * http://www.hotscripts.com/rate/49400.html Thanks. + * + * @link http://www.phpcaptcha.org Securimage PHP CAPTCHA + * @link http://www.phpcaptcha.org/latest.zip Download Latest Version + * @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation + * @copyright 2012 Drew Phillips + * @author Drew Phillips + * @version 3.2RC2 (April 2012) + * @package Securimage + * + */ + +require_once '../securimage.php'; + +$img = new Securimage(); + +//Change some settings +$img->image_width = 280; +$img->image_height = 100; +$img->perturbation = 0.9; // high level of distortion +$img->code_length = rand(5,6); // random code length +$img->image_bg_color = new Securimage_Color("#ffffff"); +$img->num_lines = 12; +$img->noise_level = 5; +$img->text_color = new Securimage_Color("#000000"); +$img->noise_color = $img->text_color; +$img->line_color = new Securimage_Color("#cccccc"); + +$img->show(); diff --git a/captcha/examples/static_captcha.php b/captcha/examples/static_captcha.php new file mode 100644 index 0000000..1dd6234 --- /dev/null +++ b/captcha/examples/static_captcha.php @@ -0,0 +1,98 @@ +Success" + ."The captcha code entered was correct!" + ."

"; + } else { + echo "

Incorrect Code

" + ."Incorrect captcha code, try again." + ."

"; + } + +} else if (isset($_GET['display'])) { + // display the captcha with the supplied ID from the URL + + // construct options specifying the existing captcha ID + // also tell securimage not to start a session + $options = array('captchaId' => $captchaId, + 'no_session' => true); + $captcha = new Securimage($options); + + // show the image, this sends proper HTTP headers + $captcha->show(); + exit; +} + +// generate a new captcha ID and challenge +$captchaId = Securimage::getCaptchaId(); + +// output the captcha ID, and a form to validate it +// the form submits to itself and is validated above +echo << + + + + Static Captcha Example + + +

Static Captcha Example

+ +
+ Synopsis: +
    +
  • Request new captchaId using Securimage::getCaptchaId()
  • +
  • Display form with hidden field containing captchaId
  • +
  • Display captcha image passing the captchaId to the image
  • +
  • Validate captcha input against captchaId using Securimage::checkByCaptchaId()
  • +
+
+

 

+
+ Captcha ID: $captchaId

+ Captcha Image
+ +
+ + + Enter Code: + + +
+
+ + +EOD; diff --git a/captcha/images/audio_icon.png b/captcha/images/audio_icon.png new file mode 100644 index 0000000..9922ef1 Binary files /dev/null and b/captcha/images/audio_icon.png differ diff --git a/captcha/images/refresh.png b/captcha/images/refresh.png new file mode 100644 index 0000000..f5e7d82 Binary files /dev/null and b/captcha/images/refresh.png differ diff --git a/captcha/index.php b/captcha/index.php new file mode 100644 index 0000000..090bbd5 --- /dev/null +++ b/captcha/index.php @@ -0,0 +1 @@ + diff --git a/captcha/securimage.php b/captcha/securimage.php new file mode 100644 index 0000000..459a512 --- /dev/null +++ b/captcha/securimage.php @@ -0,0 +1,1857 @@ + + * File: securimage.php
+ * + * Copyright (c) 2012, Drew Phillips + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * Any modifications to the library should be indicated clearly in the source code + * to inform users that the changes are not a part of the original software.

+ * + * If you found this script useful, please take a quick moment to rate it.
+ * http://www.hotscripts.com/rate/49400.html Thanks. + * + * @link http://www.phpcaptcha.org Securimage PHP CAPTCHA + * @link http://www.phpcaptcha.org/latest.zip Download Latest Version + * @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation + * @copyright 2012 Drew Phillips + * @author Drew Phillips + * @version 3.2RC3 (May 2012) + * @package Securimage + * + */ + +/** + ChangeLog + + 3.2RC3 + - Fix canSendHeaders() check which was breaking if a PHP startup error was issued + + 3.2RC2 + - Add error handler (https://github.com/dapphp/securimage/issues/15) + - Fix flash examples to use the correct value name for audio parameter + + 3.2RC1 + - New audio captcha code. Faster, fully dynamic audio, full WAV support + (Paul Voegler, Drew Phillips) + - New Flash audio streaming button. User defined image and size supported + - Additional options for customizing captcha (noise_level, send_headers, + no_exit, no_session, display_value + - Add captcha ID support. Uses sqlite and unique captcha IDs to track captchas, + no session used + - Add static methods for creating and validating captcha by ID + - Automatic clearing of old codes from SQLite database + + 3.0.3Beta + - Add improved mixing function to WavFile class (Paul Voegler) + - Improve performance and security of captcha audio (Paul Voegler, Drew Phillips) + - Add option to use random file as background noise in captcha audio + - Add new securimage options for audio files + + 3.0.2Beta + - Fix issue with session variables when upgrading from 2.0 - 3.0 + - Improve audio captcha, switch to use WavFile class, make mathematical captcha audio work + + 3.0.1 + - Bugfix: removed use of deprecated variable in addSignature method that would cause errors with display_errors on + + 3.0 + - Rewrite class using PHP5 OOP + - Remove support for GD fonts, require FreeType + - Remove support for multi-color codes + - Add option to make codes case-sensitive + - Add namespaces to support multiple captchas on a single page or page specific captchas + - Add option to show simple math problems instead of codes + - Remove support for mp3 files due to vulnerability in decoding mp3 audio files + - Create new flash file to stream wav files instead of mp3 + - Changed to BSD license + + 2.0.2 + - Fix pathing to make integration into libraries easier (Nathan Phillip Brink ohnobinki@ohnopublishing.net) + + 2.0.1 + - Add support for browsers with cookies disabled (requires php5, sqlite) maps users to md5 hashed ip addresses and md5 hashed codes for security + - Add fallback to gd fonts if ttf support is not enabled or font file not found (Mike Challis http://www.642weather.com/weather/scripts.php) + - Check for previous definition of image type constants (Mike Challis) + - Fix mime type settings for audio output + - Fixed color allocation issues with multiple colors and background images, consolidate allocation to one function + - Ability to let codes expire after a given length of time + - Allow HTML color codes to be passed to Securimage_Color (suggested by Mike Challis) + + 2.0.0 + - Add mathematical distortion to characters (using code from HKCaptcha) + - Improved session support + - Added Securimage_Color class for easier color definitions + - Add distortion to audio output to prevent binary comparison attack (proposed by Sven "SavageTiger" Hagemann [insecurity.nl]) + - Flash button to stream mp3 audio (Douglas Walsh www.douglaswalsh.net) + - Audio output is mp3 format by default + - Change font to AlteHaasGrotesk by yann le coroller + - Some code cleanup + + 1.0.4 (unreleased) + - Ability to output audible codes in mp3 format to stream from flash + + 1.0.3.1 + - Error reading from wordlist in some cases caused words to be cut off 1 letter short + + 1.0.3 + - Removed shadow_text from code which could cause an undefined property error due to removal from previous version + + 1.0.2 + - Audible CAPTCHA Code wav files + - Create codes from a word list instead of random strings + + 1.0 + - Added the ability to use a selected character set, rather than a-z0-9 only. + - Added the multi-color text option to use different colors for each letter. + - Switched to automatic session handling instead of using files for code storage + - Added GD Font support if ttf support is not available. Can use internal GD fonts or load new ones. + - Added the ability to set line thickness + - Added option for drawing arced lines over letters + - Added ability to choose image type for output + + */ + + +/** + * Securimage CAPTCHA Class. + * + * @version 3.0 + * @package Securimage + * @subpackage classes + * @author Drew Phillips + * + */ +class Securimage +{ + // All of the public variables below are securimage options + // They can be passed as an array to the Securimage constructor, set below, + // or set from securimage_show.php and securimage_play.php + + /** + * Renders captcha as a JPEG image + * @var int + */ + const SI_IMAGE_JPEG = 1; + /** + * Renders captcha as a PNG image (default) + * @var int + */ + const SI_IMAGE_PNG = 2; + /** + * Renders captcha as a GIF image + * @var int + */ + const SI_IMAGE_GIF = 3; + + /** + * Create a normal alphanumeric captcha + * @var int + */ + const SI_CAPTCHA_STRING = 0; + /** + * Create a captcha consisting of a simple math problem + * @var int + */ + const SI_CAPTCHA_MATHEMATIC = 1; + + /** + * The width of the captcha image + * @var int + */ + public $image_width = 215; + /** + * The height of the captcha image + * @var int + */ + public $image_height = 80; + /** + * The type of the image, default = png + * @var int + */ + public $image_type = self::SI_IMAGE_PNG; + + /** + * The background color of the captcha + * @var Securimage_Color + */ + public $image_bg_color = '#ffffff'; + /** + * The color of the captcha text + * @var Securimage_Color + */ + public $text_color = '#707070'; + /** + * The color of the lines over the captcha + * @var Securimage_Color + */ + public $line_color = '#707070'; + /** + * The color of the noise that is drawn + * @var Securimage_Color + */ + public $noise_color = '#707070'; + + /** + * How transparent to make the text 0 = completely opaque, 100 = invisible + * @var int + */ + public $text_transparency_percentage = 50; + /** + * Whether or not to draw the text transparently, true = use transparency, false = no transparency + * @var bool + */ + public $use_transparent_text = false; + + /** + * The length of the captcha code + * @var int + */ + public $code_length = 6; + /** + * Whether the captcha should be case sensitive (not recommended, use only for maximum protection) + * @var bool + */ + public $case_sensitive = false; + /** + * The character set to use for generating the captcha code + * @var string + */ + public $charset = 'ABCDEFGHKLMNPRSTUVWYZabcdefghklmnprstuvwyz23456789'; + /** + * How long in seconds a captcha remains valid, after this time it will not be accepted + * @var unknown_type + */ + public $expiry_time = 900; + + /** + * The session name securimage should use, only set this if your application uses a custom session name + * It is recommended to set this value below so it is used by all securimage scripts + * @var string + */ + public $session_name = null; + + /** + * true to use the wordlist file, false to generate random captcha codes + * @var bool + */ + public $use_wordlist = false; + + /** + * The level of distortion, 0.75 = normal, 1.0 = very high distortion + * @var double + */ + public $perturbation = 0.75; + /** + * How many lines to draw over the captcha code to increase security + * @var int + */ + public $num_lines = 8; + /** + * The level of noise (random dots) to place on the image, 0-10 + * @var int + */ + public $noise_level = 0; + + /** + * The signature text to draw on the bottom corner of the image + * @var string + */ + public $image_signature = ''; + /** + * The color of the signature text + * @var Securimage_Color + */ + public $signature_color = '#707070'; + /** + * The path to the ttf font file to use for the signature text, defaults to $ttf_file (AHGBold.ttf) + * @var string + */ + public $signature_font; + + /** + * Use an SQLite database to store data (for users that do not support cookies) + * @var bool + */ + public $use_sqlite_db = false; + + /** + * The type of captcha to create, either alphanumeric, or a math problem
+ * Securimage::SI_CAPTCHA_STRING or Securimage::SI_CAPTCHA_MATHEMATIC + * @var int + */ + public $captcha_type = self::SI_CAPTCHA_STRING; // or self::SI_CAPTCHA_MATHEMATIC; + + /** + * The captcha namespace, use this if you have multiple forms on a single page, blank if you do not use multiple forms on one page + * @var string + * + * namespace = 'contact_form'; + * + * // in form validator + * $img->namespace = 'contact_form'; + * if ($img->check($code) == true) { + * echo "Valid!"; + * } + * + */ + public $namespace; + + /** + * The font file to use to draw the captcha code, leave blank for default font AHGBold.ttf + * @var string + */ + public $ttf_file; + /** + * The path to the wordlist file to use, leave blank for default words/words.txt + * @var string + */ + public $wordlist_file; + /** + * The directory to scan for background images, if set a random background will be chosen from this folder + * @var string + */ + public $background_directory; + /** + * The path to the SQLite database file to use, if $use_sqlite_database = true, should be chmod 666 + * @var string + */ + public $sqlite_database; + /** + * The path to the securimage audio directory, can be set in securimage_play.php + * @var string + * + * $img->audio_path = '/home/yoursite/public_html/securimage/audio/'; + * + */ + public $audio_path; + /** + * The path to the directory containing audio files that will be selected + * randomly and mixed with the captcha audio. + * + * @var string + */ + public $audio_noise_path; + /** + * Whether or not to mix background noise files into captcha audio (true = mix, false = no) + * Mixing random background audio with noise can help improve security of audio captcha. + * Default: securimage/audio/noise + * + * @since 3.0.3 + * @see Securimage::$audio_noise_path + * @var bool + */ + public $audio_use_noise; + /** + * The method and threshold (or gain factor) used to normalize the mixing with background noise. + * See http://www.voegler.eu/pub/audio/ for more information. + * + * Valid:
    + *
  • >= 1 - Normalize by multiplying by the threshold (boost - positive gain).
    + * A value of 1 in effect means no normalization (and results in clipping).
  • + *
  • <= -1 - Normalize by dividing by the the absolute value of threshold (attenuate - negative gain).
    + * A factor of 2 (-2) is about 6dB reduction in volume.
  • + *
  • [0, 1) - (open inverval - not including 1) - The threshold + * above which amplitudes are comressed logarithmically.
    + * e.g. 0.6 to leave amplitudes up to 60% "as is" and compress above.
  • + *
  • (-1, 0) - (open inverval - not including -1 and 0) - The threshold + * above which amplitudes are comressed linearly.
    + * e.g. -0.6 to leave amplitudes up to 60% "as is" and compress above.
+ * + * Default: 0.6 + * + * @since 3.0.4 + * @var float + */ + public $audio_mix_normalization = 0.6; + /** + * Whether or not to degrade audio by introducing random noise (improves security of audio captcha) + * Default: true + * + * @since 3.0.3 + * @var bool + */ + public $degrade_audio; + /** + * Minimum delay to insert between captcha audio letters in milliseconds + * + * @since 3.0.3 + * @var float + */ + public $audio_gap_min = 0; + /** + * Maximum delay to insert between captcha audio letters in milliseconds + * + * @since 3.0.3 + * @var float + */ + public $audio_gap_max = 600; + + /** + * Captcha ID if using static captcha + * @var string Unique captcha id + */ + protected static $_captchaId = null; + + protected $im; + protected $tmpimg; + protected $bgimg; + protected $iscale = 5; + + protected $securimage_path = null; + + /** + * The captcha challenge value (either the case-sensitive/insensitive word captcha, or the solution to the math captcha) + * + * @var string Captcha challenge value + */ + protected $code; + + /** + * The display value of the captcha to draw on the image (the word captcha, or the math equation to present to the user) + * + * @var string Captcha display value to draw on the image + */ + protected $code_display; + + /** + * A value that can be passed to the constructor that can be used to generate a captcha image with a given value + * This value does not get stored in the session or database and is only used when calling Securimage::show(). + * If a display_value was passed to the constructor and the captcha image is generated, the display_value will be used + * as the string to draw on the captcha image. Used only if captcha codes are generated and managed by a 3rd party app/library + * + * @var string Captcha code value to display on the image + */ + protected $display_value; + + /** + * Captcha code supplied by user [set from Securimage::check()] + * + * @var string + */ + protected $captcha_code; + + /** + * Flag that can be specified telling securimage not to call exit after generating a captcha image or audio file + * + * @var bool If true, script will not terminate; if false script will terminate (default) + */ + protected $no_exit; + + /** + * Flag indicating whether or not a PHP session should be started and used + * + * @var bool If true, no session will be started; if false, session will be started and used to store data (default) + */ + protected $no_session; + + /** + * Flag indicating whether or not HTTP headers will be sent when outputting captcha image/audio + * + * @var bool If true (default) headers will be sent, if false, no headers are sent + */ + protected $send_headers; + + // sqlite database handle (if using sqlite) + protected $sqlite_handle; + + // gd color resources that are allocated for drawing the image + protected $gdbgcolor; + protected $gdtextcolor; + protected $gdlinecolor; + protected $gdsignaturecolor; + + /** + * Create a new securimage object, pass options to set in the constructor.
+ * This can be used to display a captcha, play an audible captcha, or validate an entry + * @param array $options + * + * $options = array( + * 'text_color' => new Securimage_Color('#013020'), + * 'code_length' => 5, + * 'num_lines' => 5, + * 'noise_level' => 3, + * 'font_file' => Securimage::getPath() . '/custom.ttf' + * ); + * + * $img = new Securimage($options); + * + */ + public function __construct($options = array()) + { + $this->securimage_path = dirname(__FILE__); + + if (is_array($options) && sizeof($options) > 0) { + foreach($options as $prop => $val) { + if ($prop == 'captchaId') { + Securimage::$_captchaId = $val; + $this->use_sqlite_db = true; + } else { + $this->$prop = $val; + } + } + } + + $this->image_bg_color = $this->initColor($this->image_bg_color, '#ffffff'); + $this->text_color = $this->initColor($this->text_color, '#616161'); + $this->line_color = $this->initColor($this->line_color, '#616161'); + $this->noise_color = $this->initColor($this->noise_color, '#616161'); + $this->signature_color = $this->initColor($this->signature_color, '#616161'); + + if (is_null($this->ttf_file)) { + $this->ttf_file = $this->securimage_path . '/AHGBold.ttf'; + } + + $this->signature_font = $this->ttf_file; + + if (is_null($this->wordlist_file)) { + $this->wordlist_file = $this->securimage_path . '/words/words.txt'; + } + + if (is_null($this->sqlite_database)) { + $this->sqlite_database = $this->securimage_path . '/database/securimage.sqlite'; + } + + if (is_null($this->audio_path)) { + $this->audio_path = $this->securimage_path . '/audio/'; + } + + if (is_null($this->audio_noise_path)) { + $this->audio_noise_path = $this->audio_path . '/noise/'; + } + + if (is_null($this->audio_use_noise)) { + $this->audio_use_noise = true; + } + + if (is_null($this->degrade_audio)) { + $this->degrade_audio = true; + } + + if (is_null($this->code_length) || (int)$this->code_length < 1) { + $this->code_length = 6; + } + + if (is_null($this->perturbation) || !is_numeric($this->perturbation)) { + $this->perturbation = 0.75; + } + + if (is_null($this->namespace) || !is_string($this->namespace)) { + $this->namespace = 'default'; + } + + if (is_null($this->no_exit)) { + $this->no_exit = false; + } + + if (is_null($this->no_session)) { + $this->no_session = false; + } + + if (is_null($this->send_headers)) { + $this->send_headers = true; + } + + if ($this->no_session != true) { + // Initialize session or attach to existing + if ( session_id() == '' ) { // no session has been started yet, which is needed for validation + if (!is_null($this->session_name) && trim($this->session_name) != '') { + session_name(trim($this->session_name)); // set session name if provided + } + session_start(); + } + } + } + + /** + * Return the absolute path to the Securimage directory + * @return string The path to the securimage base directory + */ + public static function getPath() + { + return dirname(__FILE__); + } + + /** + * Generate a new captcha ID or retrieve the current ID + * + * @param $new bool If true, generates a new challenge and returns and ID + * @param $options array Additional options to be passed to Securimage + * + * @return null|string Returns null if no captcha id set and new was false, or string captcha ID + */ + public static function getCaptchaId($new = true, array $options = array()) + { + if ((bool)$new == true) { + $id = sha1(uniqid($_SERVER['REMOTE_ADDR'], true)); + $opts = array('no_session' => true, + 'use_sqlite_db' => true); + if (sizeof($options) > 0) $opts = array_merge($opts, $options); + $si = new self($opts); + Securimage::$_captchaId = $id; + $si->createCode(); + + return $id; + } else { + return Securimage::$_captchaId; + } + } + + /** + * Validate a captcha code input against a captcha ID + * @param string $id The captcha ID to check + * @param string $value The captcha value supplied by the user + * + * @return bool true if the code was valid for the given captcha ID, false if not or if database failed to open + */ + public static function checkByCaptchaId($id, $value) + { + $si = new self(array('captchaId' => $id, + 'no_session' => true, + 'use_sqlite_db' => true)); + + if ($si->openDatabase()) { + $code = $si->getCodeFromDatabase(); + + if (is_array($code)) { + $si->code = $code['code']; + $si->code_display = $code['code_disp']; + } + + if ($si->check($value)) { + return true; + } else { + return false; + } + } else { + return false; + } + } + + + /** + * Used to serve a captcha image to the browser + * @param string $background_image The path to the background image to use + * + * $img = new Securimage(); + * $img->code_length = 6; + * $img->num_lines = 5; + * $img->noise_level = 5; + * + * $img->show(); // sends the image to browser + * exit; + * + */ + public function show($background_image = '') + { + set_error_handler(array(&$this, 'errorHandler')); + + if($background_image != '' && is_readable($background_image)) { + $this->bgimg = $background_image; + } + + $this->doImage(); + } + + /** + * Check a submitted code against the stored value + * @param string $code The captcha code to check + * + * $code = $_POST['code']; + * $img = new Securimage(); + * if ($img->check($code) == true) { + * $captcha_valid = true; + * } else { + * $captcha_valid = false; + * } + * + */ + public function check($code) + { + $this->code_entered = $code; + $this->validate(); + return $this->correct_code; + } + + /** + * Output a wav file of the captcha code to the browser + * + * + * $img = new Securimage(); + * $img->outputAudioFile(); // outputs a wav file to the browser + * exit; + * + */ + public function outputAudioFile() + { + set_error_handler(array(&$this, 'errorHandler')); + + require_once dirname(__FILE__) . '/WavFile.php'; + + try { + $audio = $this->getAudibleCode(); + } catch (Exception $ex) { + if (($fp = @fopen(dirname(__FILE__) . '/si.error_log', 'a+')) !== false) { + fwrite($fp, date('Y-m-d H:i:s') . ': Securimage audio error "' . $ex->getMessage() . '"' . "\n"); + fclose($fp); + } + + $audio = $this->audioError(); + } + + if ($this->canSendHeaders() || $this->send_headers == false) { + if ($this->send_headers) { + $uniq = md5(uniqid(microtime())); + header("Content-Disposition: attachment; filename=\"securimage_audio-{$uniq}.wav\""); + header('Cache-Control: no-store, no-cache, must-revalidate'); + header('Expires: Sun, 1 Jan 2000 12:00:00 GMT'); + header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . 'GMT'); + header('Content-type: audio/x-wav'); + + if (extension_loaded('zlib')) { + ini_set('zlib.output_compression', true); // compress output if supported by browser + } else { + header('Content-Length: ' . strlen($audio)); + } + } + + echo $audio; + } else { + echo '
' + .'Failed to generate audio file, content has already been ' + .'output.
This is most likely due to misconfiguration or ' + .'a PHP error was sent to the browser.
'; + } + + restore_error_handler(); + + if (!$this->no_exit) exit; + } + + /** + * Return the code from the session or sqlite database if used. If none exists yet, an empty string is returned + * + * @param $array bool True to receive an array containing the code and properties + * @return array|string Array if $array = true, otherwise a string containing the code + */ + public function getCode($array = false) + { + $code = ''; + $time = 0; + $disp = 'error'; + + if ($this->no_session != true) { + if (isset($_SESSION['securimage_code_value'][$this->namespace]) && + trim($_SESSION['securimage_code_value'][$this->namespace]) != '') { + if ($this->isCodeExpired( + $_SESSION['securimage_code_ctime'][$this->namespace]) == false) { + $code = $_SESSION['securimage_code_value'][$this->namespace]; + $time = $_SESSION['securimage_code_ctime'][$this->namespace]; + $disp = $_SESSION['securimage_code_disp'] [$this->namespace]; + } + } + } + + if ($this->use_sqlite_db == true && function_exists('sqlite_open')) { + // no code in session - may mean user has cookies turned off + $this->openDatabase(); + $code = $this->getCodeFromDatabase(); + } else { /* no code stored in session or sqlite database, validation will fail */ } + + if ($array == true) { + return array('code' => $code, 'ctime' => $time, 'display' => $disp); + } else { + return $code; + } + } + + /** + * The main image drawing routing, responsible for constructing the entire image and serving it + */ + protected function doImage() + { + if( ($this->use_transparent_text == true || $this->bgimg != '') && function_exists('imagecreatetruecolor')) { + $imagecreate = 'imagecreatetruecolor'; + } else { + $imagecreate = 'imagecreate'; + } + + $this->im = $imagecreate($this->image_width, $this->image_height); + $this->tmpimg = $imagecreate($this->image_width * $this->iscale, $this->image_height * $this->iscale); + + $this->allocateColors(); + imagepalettecopy($this->tmpimg, $this->im); + + $this->setBackground(); + + $code = ''; + + if ($this->getCaptchaId(false) !== null) { + // a captcha Id was supplied + + // check to see if a display_value for the captcha image was set + if (is_string($this->display_value) && strlen($this->display_value) > 0) { + $this->code_display = $this->display_value; + $this->code = ($this->case_sensitive) ? + $this->display_value : + strtolower($this->display_value); + $code = $this->code; + } else if ($this->openDatabase()) { + // no display_value, check the database for existing captchaId + $code = $this->getCodeFromDatabase(); + + // got back a result from the database with a valid code for captchaId + if (is_array($code)) { + $this->code = $code['code']; + $this->code_display = $code['code_disp']; + $code = $code['code']; + } + } + } + + if ($code == '') { + // if the code was not set using display_value or was not found in + // the database, create a new code + $this->createCode(); + } + + if ($this->noise_level > 0) { + $this->drawNoise(); + } + + $this->drawWord(); + + if ($this->perturbation > 0 && is_readable($this->ttf_file)) { + $this->distortedCopy(); + } + + if ($this->num_lines > 0) { + $this->drawLines(); + } + + if (trim($this->image_signature) != '') { + $this->addSignature(); + } + + $this->output(); + } + + /** + * Allocate the colors to be used for the image + */ + protected function allocateColors() + { + // allocate bg color first for imagecreate + $this->gdbgcolor = imagecolorallocate($this->im, + $this->image_bg_color->r, + $this->image_bg_color->g, + $this->image_bg_color->b); + + $alpha = intval($this->text_transparency_percentage / 100 * 127); + + if ($this->use_transparent_text == true) { + $this->gdtextcolor = imagecolorallocatealpha($this->im, + $this->text_color->r, + $this->text_color->g, + $this->text_color->b, + $alpha); + $this->gdlinecolor = imagecolorallocatealpha($this->im, + $this->line_color->r, + $this->line_color->g, + $this->line_color->b, + $alpha); + $this->gdnoisecolor = imagecolorallocatealpha($this->im, + $this->noise_color->r, + $this->noise_color->g, + $this->noise_color->b, + $alpha); + } else { + $this->gdtextcolor = imagecolorallocate($this->im, + $this->text_color->r, + $this->text_color->g, + $this->text_color->b); + $this->gdlinecolor = imagecolorallocate($this->im, + $this->line_color->r, + $this->line_color->g, + $this->line_color->b); + $this->gdnoisecolor = imagecolorallocate($this->im, + $this->noise_color->r, + $this->noise_color->g, + $this->noise_color->b); + } + + $this->gdsignaturecolor = imagecolorallocate($this->im, + $this->signature_color->r, + $this->signature_color->g, + $this->signature_color->b); + + } + + /** + * The the background color, or background image to be used + */ + protected function setBackground() + { + // set background color of image by drawing a rectangle since imagecreatetruecolor doesn't set a bg color + imagefilledrectangle($this->im, 0, 0, + $this->image_width, $this->image_height, + $this->gdbgcolor); + imagefilledrectangle($this->tmpimg, 0, 0, + $this->image_width * $this->iscale, $this->image_height * $this->iscale, + $this->gdbgcolor); + + if ($this->bgimg == '') { + if ($this->background_directory != null && + is_dir($this->background_directory) && + is_readable($this->background_directory)) + { + $img = $this->getBackgroundFromDirectory(); + if ($img != false) { + $this->bgimg = $img; + } + } + } + + if ($this->bgimg == '') { + return; + } + + $dat = @getimagesize($this->bgimg); + if($dat == false) { + return; + } + + switch($dat[2]) { + case 1: $newim = @imagecreatefromgif($this->bgimg); break; + case 2: $newim = @imagecreatefromjpeg($this->bgimg); break; + case 3: $newim = @imagecreatefrompng($this->bgimg); break; + default: return; + } + + if(!$newim) return; + + imagecopyresized($this->im, $newim, 0, 0, 0, 0, + $this->image_width, $this->image_height, + imagesx($newim), imagesy($newim)); + } + + /** + * Scan the directory for a background image to use + */ + protected function getBackgroundFromDirectory() + { + $images = array(); + + if ( ($dh = opendir($this->background_directory)) !== false) { + while (($file = readdir($dh)) !== false) { + if (preg_match('/(jpg|gif|png)$/i', $file)) $images[] = $file; + } + + closedir($dh); + + if (sizeof($images) > 0) { + return rtrim($this->background_directory, '/') . '/' . $images[rand(0, sizeof($images)-1)]; + } + } + + return false; + } + + /** + * Generates the code or math problem and saves the value to the session + */ + protected function createCode() + { + $this->code = false; + + switch($this->captcha_type) { + case self::SI_CAPTCHA_MATHEMATIC: + { + do { + $signs = array('+', '-', 'x'); + $left = rand(1, 10); + $right = rand(1, 5); + $sign = $signs[rand(0, 2)]; + + switch($sign) { + case 'x': $c = $left * $right; break; + case '-': $c = $left - $right; break; + default: $c = $left + $right; break; + } + } while ($c <= 0); // no negative #'s or 0 + + $this->code = $c; + $this->code_display = "$left $sign $right"; + break; + } + + default: + { + if ($this->use_wordlist && is_readable($this->wordlist_file)) { + $this->code = $this->readCodeFromFile(); + } + + if ($this->code == false) { + $this->code = $this->generateCode($this->code_length); + } + + $this->code_display = $this->code; + $this->code = ($this->case_sensitive) ? $this->code : strtolower($this->code); + } // default + } + + $this->saveData(); + } + + /** + * Draws the captcha code on the image + */ + protected function drawWord() + { + $width2 = $this->image_width * $this->iscale; + $height2 = $this->image_height * $this->iscale; + + if (!is_readable($this->ttf_file)) { + imagestring($this->im, 4, 10, ($this->image_height / 2) - 5, 'Failed to load TTF font file!', $this->gdtextcolor); + } else { + if ($this->perturbation > 0) { + $font_size = $height2 * .4; + $bb = imageftbbox($font_size, 0, $this->ttf_file, $this->code_display); + $tx = $bb[4] - $bb[0]; + $ty = $bb[5] - $bb[1]; + $x = floor($width2 / 2 - $tx / 2 - $bb[0]); + $y = round($height2 / 2 - $ty / 2 - $bb[1]); + + imagettftext($this->tmpimg, $font_size, 0, $x, $y, $this->gdtextcolor, $this->ttf_file, $this->code_display); + } else { + $font_size = $this->image_height * .4; + $bb = imageftbbox($font_size, 0, $this->ttf_file, $this->code_display); + $tx = $bb[4] - $bb[0]; + $ty = $bb[5] - $bb[1]; + $x = floor($this->image_width / 2 - $tx / 2 - $bb[0]); + $y = round($this->image_height / 2 - $ty / 2 - $bb[1]); + + imagettftext($this->im, $font_size, 0, $x, $y, $this->gdtextcolor, $this->ttf_file, $this->code_display); + } + } + + // DEBUG + //$this->im = $this->tmpimg; + //$this->output(); + + } + + /** + * Copies the captcha image to the final image with distortion applied + */ + protected function distortedCopy() + { + $numpoles = 3; // distortion factor + // make array of poles AKA attractor points + for ($i = 0; $i < $numpoles; ++ $i) { + $px[$i] = rand($this->image_width * 0.2, $this->image_width * 0.8); + $py[$i] = rand($this->image_height * 0.2, $this->image_height * 0.8); + $rad[$i] = rand($this->image_height * 0.2, $this->image_height * 0.8); + $tmp = ((- $this->frand()) * 0.15) - .15; + $amp[$i] = $this->perturbation * $tmp; + } + + $bgCol = imagecolorat($this->tmpimg, 0, 0); + $width2 = $this->iscale * $this->image_width; + $height2 = $this->iscale * $this->image_height; + imagepalettecopy($this->im, $this->tmpimg); // copy palette to final image so text colors come across + // loop over $img pixels, take pixels from $tmpimg with distortion field + for ($ix = 0; $ix < $this->image_width; ++ $ix) { + for ($iy = 0; $iy < $this->image_height; ++ $iy) { + $x = $ix; + $y = $iy; + for ($i = 0; $i < $numpoles; ++ $i) { + $dx = $ix - $px[$i]; + $dy = $iy - $py[$i]; + if ($dx == 0 && $dy == 0) { + continue; + } + $r = sqrt($dx * $dx + $dy * $dy); + if ($r > $rad[$i]) { + continue; + } + $rscale = $amp[$i] * sin(3.14 * $r / $rad[$i]); + $x += $dx * $rscale; + $y += $dy * $rscale; + } + $c = $bgCol; + $x *= $this->iscale; + $y *= $this->iscale; + if ($x >= 0 && $x < $width2 && $y >= 0 && $y < $height2) { + $c = imagecolorat($this->tmpimg, $x, $y); + } + if ($c != $bgCol) { // only copy pixels of letters to preserve any background image + imagesetpixel($this->im, $ix, $iy, $c); + } + } + } + } + + /** + * Draws distorted lines on the image + */ + protected function drawLines() + { + for ($line = 0; $line < $this->num_lines; ++ $line) { + $x = $this->image_width * (1 + $line) / ($this->num_lines + 1); + $x += (0.5 - $this->frand()) * $this->image_width / $this->num_lines; + $y = rand($this->image_height * 0.1, $this->image_height * 0.9); + + $theta = ($this->frand() - 0.5) * M_PI * 0.7; + $w = $this->image_width; + $len = rand($w * 0.4, $w * 0.7); + $lwid = rand(0, 2); + + $k = $this->frand() * 0.6 + 0.2; + $k = $k * $k * 0.5; + $phi = $this->frand() * 6.28; + $step = 0.5; + $dx = $step * cos($theta); + $dy = $step * sin($theta); + $n = $len / $step; + $amp = 1.5 * $this->frand() / ($k + 5.0 / $len); + $x0 = $x - 0.5 * $len * cos($theta); + $y0 = $y - 0.5 * $len * sin($theta); + + $ldx = round(- $dy * $lwid); + $ldy = round($dx * $lwid); + + for ($i = 0; $i < $n; ++ $i) { + $x = $x0 + $i * $dx + $amp * $dy * sin($k * $i * $step + $phi); + $y = $y0 + $i * $dy - $amp * $dx * sin($k * $i * $step + $phi); + imagefilledrectangle($this->im, $x, $y, $x + $lwid, $y + $lwid, $this->gdlinecolor); + } + } + } + + /** + * Draws random noise on the image + */ + protected function drawNoise() + { + if ($this->noise_level > 10) { + $noise_level = 10; + } else { + $noise_level = $this->noise_level; + } + + $t0 = microtime(true); + + $noise_level *= 125; // an arbitrary number that works well on a 1-10 scale + + $points = $this->image_width * $this->image_height * $this->iscale; + $height = $this->image_height * $this->iscale; + $width = $this->image_width * $this->iscale; + for ($i = 0; $i < $noise_level; ++$i) { + $x = rand(10, $width); + $y = rand(10, $height); + $size = rand(7, 10); + if ($x - $size <= 0 && $y - $size <= 0) continue; // dont cover 0,0 since it is used by imagedistortedcopy + imagefilledarc($this->tmpimg, $x, $y, $size, $size, 0, 360, $this->gdnoisecolor, IMG_ARC_PIE); + } + + $t1 = microtime(true); + + $t = $t1 - $t0; + + /* + // DEBUG + imagestring($this->tmpimg, 5, 25, 30, "$t", $this->gdnoisecolor); + header('content-type: image/png'); + imagepng($this->tmpimg); + exit; + */ + } + + /** + * Print signature text on image + */ + protected function addSignature() + { + $bbox = imagettfbbox(10, 0, $this->signature_font, $this->image_signature); + $textlen = $bbox[2] - $bbox[0]; + $x = $this->image_width - $textlen - 5; + $y = $this->image_height - 3; + + imagettftext($this->im, 10, 0, $x, $y, $this->gdsignaturecolor, $this->signature_font, $this->image_signature); + } + + /** + * Sends the appropriate image and cache headers and outputs image to the browser + */ + protected function output() + { + if ($this->canSendHeaders() || $this->send_headers == false) { + if ($this->send_headers) { + // only send the content-type headers if no headers have been output + // this will ease debugging on misconfigured servers where warnings + // may have been output which break the image and prevent easily viewing + // source to see the error. + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); + header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); + header("Cache-Control: no-store, no-cache, must-revalidate"); + header("Cache-Control: post-check=0, pre-check=0", false); + header("Pragma: no-cache"); + } + + switch ($this->image_type) { + case self::SI_IMAGE_JPEG: + if ($this->send_headers) header("Content-Type: image/jpeg"); + imagejpeg($this->im, null, 90); + break; + case self::SI_IMAGE_GIF: + if ($this->send_headers) header("Content-Type: image/gif"); + imagegif($this->im); + break; + default: + if ($this->send_headers) header("Content-Type: image/png"); + imagepng($this->im); + break; + } + } else { + echo '
' + .'Failed to generate captcha image, content has already been ' + .'output.
This is most likely due to misconfiguration or ' + .'a PHP error was sent to the browser.
'; + } + + imagedestroy($this->im); + restore_error_handler(); + + if (!$this->no_exit) exit; + } + + /** + * Gets the code and returns the binary audio file for the stored captcha code + * + * @return The audio representation of the captcha in Wav format + */ + protected function getAudibleCode() + { + $letters = array(); + $code = $this->getCode(true); + + if ($code['code'] == '') { + $this->createCode(); + $code = $this->getCode(true); + } + + if (preg_match('/(\d+) (\+|-|x) (\d+)/i', $code['display'], $eq)) { + $math = true; + + $left = $eq[1]; + $sign = str_replace(array('+', '-', 'x'), array('plus', 'minus', 'times'), $eq[2]); + $right = $eq[3]; + + $letters = array($left, $sign, $right); + } else { + $math = false; + + $length = strlen($code['display']); + + for($i = 0; $i < $length; ++$i) { + $letter = $code['display']{$i}; + $letters[] = $letter; + } + } + + try { + return $this->generateWAV($letters); + } catch(Exception $ex) { + throw $ex; + } + } + + /** + * Gets a captcha code from a wordlist + */ + protected function readCodeFromFile() + { + $fp = @fopen($this->wordlist_file, 'rb'); + if (!$fp) return false; + + $fsize = filesize($this->wordlist_file); + if ($fsize < 128) return false; // too small of a list to be effective + + fseek($fp, rand(0, $fsize - 64), SEEK_SET); // seek to a random position of file from 0 to filesize-64 + $data = fread($fp, 64); // read a chunk from our random position + fclose($fp); + $data = preg_replace("/\r?\n/", "\n", $data); + + $start = @strpos($data, "\n", rand(0, 56)) + 1; // random start position + $end = @strpos($data, "\n", $start); // find end of word + + if ($start === false) { + return false; + } else if ($end === false) { + $end = strlen($data); + } + + return strtolower(substr($data, $start, $end - $start)); // return a line of the file + } + + /** + * Generates a random captcha code from the set character set + */ + protected function generateCode() + { + $code = ''; + + for($i = 1, $cslen = strlen($this->charset); $i <= $this->code_length; ++$i) { + $code .= $this->charset{rand(0, $cslen - 1)}; + } + + //return 'testing'; // debug, set the code to given string + + return $code; + } + + /** + * Checks the entered code against the value stored in the session or sqlite database, handles case sensitivity + * Also clears the stored codes if the code was entered correctly to prevent re-use + */ + protected function validate() + { + if (!is_string($this->code) || strlen($this->code) == 0) { + $code = $this->getCode(); + // returns stored code, or an empty string if no stored code was found + // checks the session and sqlite database if enabled + } else { + $code = $this->code; + } + + if ($this->case_sensitive == false && preg_match('/[A-Z]/', $code)) { + // case sensitive was set from securimage_show.php but not in class + // the code saved in the session has capitals so set case sensitive to true + $this->case_sensitive = true; + } + + $code_entered = trim( (($this->case_sensitive) ? $this->code_entered + : strtolower($this->code_entered)) + ); + $this->correct_code = false; + + if ($code != '') { + if ($code == $code_entered) { + $this->correct_code = true; + if ($this->no_session != true) { + $_SESSION['securimage_code_value'][$this->namespace] = ''; + $_SESSION['securimage_code_ctime'][$this->namespace] = ''; + } + $this->clearCodeFromDatabase(); + } + } + } + + /** + * Save data to session namespace and database if used + */ + protected function saveData() + { + if ($this->no_session != true) { + if (isset($_SESSION['securimage_code_value']) && is_scalar($_SESSION['securimage_code_value'])) { + // fix for migration from v2 - v3 + unset($_SESSION['securimage_code_value']); + unset($_SESSION['securimage_code_ctime']); + } + + $_SESSION['securimage_code_disp'] [$this->namespace] = $this->code_display; + $_SESSION['securimage_code_value'][$this->namespace] = $this->code; + $_SESSION['securimage_code_ctime'][$this->namespace] = time(); + } + + $this->saveCodeToDatabase(); + } + + /** + * Saves the code to the sqlite database + */ + protected function saveCodeToDatabase() + { + $success = false; + + $this->openDatabase(); + + if ($this->use_sqlite_db && $this->sqlite_handle !== false) { + $id = $this->getCaptchaId(false); + $ip = $_SERVER['REMOTE_ADDR']; + + if (empty($id)) { + $id = $ip; + } + + $time = time(); + $code = $this->code; + $code_disp = $this->code_display; + + $query = "INSERT OR REPLACE INTO codes(id, ip, code, code_display," + ."namespace, created) VALUES('$id', '$ip', '$code', " + ."'$code_disp', '{$this->namespace}', $time)"; + + $success = sqlite_query($this->sqlite_handle, $query); + } + + return $success !== false; + } + + /** + * Open sqlite database + */ + protected function openDatabase() + { + $this->sqlite_handle = false; + + if ($this->use_sqlite_db == true && !function_exists('sqlite_open')) { + trigger_error('Securimage use_sqlite_db option is enable, but SQLIte is not supported by this PHP installation', E_USER_WARNING); + } + + if ($this->use_sqlite_db && function_exists('sqlite_open')) { + if (!file_exists($this->sqlite_database)) { + $fp = fopen($this->sqlite_database, 'w+'); + if (!$fp) { + trigger_error('Securimage failed to open sqlite database "' . $this->sqlite_database, E_USER_WARNING); + return false; + } + fclose($fp); + chmod($this->sqlite_database, 0666); + } + + $this->sqlite_handle = sqlite_open($this->sqlite_database, 0666, $error); + + if ($this->sqlite_handle !== false) { + $res = sqlite_query($this->sqlite_handle, "PRAGMA table_info(codes)"); + + if (sqlite_num_rows($res) == 0) { + $res = sqlite_query( + $this->sqlite_handle, + "CREATE TABLE codes (id VARCHAR(40) PRIMARY KEY, ip VARCHAR(32), + code VARCHAR(32) NOT NULL, code_display VARCHAR(32) NOT NULL, + namespace VARCHAR(32) NOT NULL, created INTEGER)" + ); + } + + if (mt_rand(0, 100) / 100.0 == 1.0) { + // randomly purge old codes + $this->purgeOldCodesFromDatabase(); + } + } + + return $this->sqlite_handle != false; + } + + return $this->sqlite_handle; + } + + /** + * Get a code from the sqlite database for ip address/captchaId. + * + * @return string|array Empty string if no code was found or has expired, + * otherwise returns the stored captcha code. If a captchaId is set, this + * returns an array with indices "code" and "code_disp" + */ + protected function getCodeFromDatabase() + { + $code = ''; + + if ($this->use_sqlite_db && $this->sqlite_handle !== false) { + if (Securimage::$_captchaId !== null) { + $query = "SELECT * FROM codes WHERE id = '" . sqlite_escape_string(Securimage::$_captchaId) . "'"; + } else { + $ip = $_SERVER['REMOTE_ADDR']; + $ns = sqlite_escape_string($this->namespace); + $query = "SELECT * FROM codes WHERE ip = '$ip' AND namespace = '$ns'"; + } + + $res = sqlite_query($this->sqlite_handle, $query); + if ($res && sqlite_num_rows($res) > 0) { + $res = sqlite_fetch_array($res); + + if ($this->isCodeExpired($res['created']) == false) { + if (Securimage::$_captchaId !== null) { + // return an array when using captchaId + $code = array('code' => $res['code'], + 'code_disp' => $res['code_display']); + } else { + // return only the code if no captchaId specified + $code = $res['code']; + } + } + } + } + return $code; + } + + /** + * Remove an entered code from the database + */ + protected function clearCodeFromDatabase() + { + if (is_resource($this->sqlite_handle)) { + $ip = $_SERVER['REMOTE_ADDR']; + $ns = sqlite_escape_string($this->namespace); + + sqlite_query($this->sqlite_handle, "DELETE FROM codes WHERE ip = '$ip' AND namespace = '$ns'"); + } + } + + /** + * Deletes old codes from sqlite database + */ + protected function purgeOldCodesFromDatabase() + { + if ($this->use_sqlite_db && $this->sqlite_handle !== false) { + $now = time(); + $limit = (!is_numeric($this->expiry_time) || $this->expiry_time < 1) ? 86400 : $this->expiry_time; + + sqlite_query($this->sqlite_handle, "DELETE FROM codes WHERE $now - created > $limit"); + } + } + + /** + * Checks to see if the captcha code has expired and cannot be used + * @param unknown_type $creation_time + */ + protected function isCodeExpired($creation_time) + { + $expired = true; + + if (!is_numeric($this->expiry_time) || $this->expiry_time < 1) { + $expired = false; + } else if (time() - $creation_time < $this->expiry_time) { + $expired = false; + } + + return $expired; + } + + /** + * Generate a wav file given the $letters in the code + * @todo Add ability to merge 2 sound files together to have random background sounds + * @param array $letters + * @return string The binary contents of the wav file + */ + protected function generateWAV($letters) + { + $wavCaptcha = new WavFile(); + $first = true; // reading first wav file + + foreach ($letters as $letter) { + $letter = strtoupper($letter); + + try { + $l = new WavFile($this->audio_path . '/' . $letter . '.wav'); + + if ($first) { + // set sample rate, bits/sample, and # of channels for file based on first letter + $wavCaptcha->setSampleRate($l->getSampleRate()) + ->setBitsPerSample($l->getBitsPerSample()) + ->setNumChannels($l->getNumChannels()); + $first = false; + } + + // append letter to the captcha audio + $wavCaptcha->appendWav($l); + + // random length of silence between $audio_gap_min and $audio_gap_max + if ($this->audio_gap_max > 0 && $this->audio_gap_max > $this->audio_gap_min) { + $wavCaptcha->insertSilence( mt_rand($this->audio_gap_min, $this->audio_gap_max) / 1000.0 ); + } + } catch (Exception $ex) { + // failed to open file, or the wav file is broken or not supported + // 2 wav files were not compatible, different # channels, bits/sample, or sample rate + throw $ex; + } + } + + /********* Set up audio filters *****************************/ + $filters = array(); + + if ($this->audio_use_noise == true) { + // use background audio - find random file + $noiseFile = $this->getRandomNoiseFile(); + + if ($noiseFile !== false && is_readable($noiseFile)) { + try { + $wavNoise = new WavFile($noiseFile, false); + } catch(Exception $ex) { + throw $ex; + } + + // start at a random offset from the beginning of the wavfile + // in order to add more randomness + $randOffset = 0; + if ($wavNoise->getNumBlocks() > 2 * $wavCaptcha->getNumBlocks()) { + $randBlock = rand(0, $wavNoise->getNumBlocks() - $wavCaptcha->getNumBlocks()); + $wavNoise->readWavData($randBlock * $wavNoise->getBlockAlign(), $wavCaptcha->getNumBlocks() * $wavNoise->getBlockAlign()); + } else { + $wavNoise->readWavData(); + $randOffset = rand(0, $wavNoise->getNumBlocks() - 1); + } + + + $mixOpts = array('wav' => $wavNoise, + 'loop' => true, + 'blockOffset' => $randOffset); + + $filters[WavFile::FILTER_MIX] = $mixOpts; + $filters[WavFile::FILTER_NORMALIZE] = $this->audio_mix_normalization; + } + } + + if ($this->degrade_audio == true) { + // add random noise. + // any noise level below 95% is intensely distorted and not pleasant to the ear + $filters[WavFile::FILTER_DEGRADE] = rand(95, 98) / 100.0; + } + + if (!empty($filters)) { + $wavCaptcha->filter($filters); // apply filters to captcha audio + } + + return $wavCaptcha->__toString(); + } + + public function getRandomNoiseFile() + { + $return = false; + + if ( ($dh = opendir($this->audio_noise_path)) !== false ) { + $list = array(); + + while ( ($file = readdir($dh)) !== false ) { + if ($file == '.' || $file == '..') continue; + if (strtolower(substr($file, -4)) != '.wav') continue; + + $list[] = $file; + } + + closedir($dh); + + if (sizeof($list) > 0) { + $file = $list[array_rand($list, 1)]; + $return = $this->audio_noise_path . DIRECTORY_SEPARATOR . $file; + } + } + + return $return; + } + + /** + * Return a wav file saying there was an error generating file + * + * @return string The binary audio contents + */ + protected function audioError() + { + return @file_get_contents(dirname(__FILE__) . '/audio/error.wav'); + } + + /** + * Checks to see if headers can be sent and if any error has been output to the browser + * + * @return bool true if headers haven't been sent and no output/errors will break audio/images, false if unsafe + */ + protected function canSendHeaders() + { + if (headers_sent()) { + // output has been flushed and headers have already been sent + return false; + } else if (strlen((string)ob_get_contents()) > 0) { + // headers haven't been sent, but there is data in the buffer that will break image and audio data + return false; + } + + return true; + } + + /** + * Return a random float between 0 and 0.9999 + * + * @return float Random float between 0 and 0.9999 + */ + function frand() + { + return 0.0001 * rand(0,9999); + } + + /** + * Convert an html color code to a Securimage_Color + * @param string $color + * @param Securimage_Color $default The defalt color to use if $color is invalid + */ + protected function initColor($color, $default) + { + if ($color == null) { + return new Securimage_Color($default); + } else if (is_string($color)) { + try { + return new Securimage_Color($color); + } catch(Exception $e) { + return new Securimage_Color($default); + } + } else if (is_array($color) && sizeof($color) == 3) { + return new Securimage_Color($color[0], $color[1], $color[2]); + } else { + return new Securimage_Color($default); + } + } + + /** + * Error handler used when outputting captcha image or audio. + * This error handler helps determine if any errors raised would + * prevent captcha image or audio from displaying. If they have + * no effect on the output buffer or headers, true is returned so + * the script can continue processing. + * See https://github.com/dapphp/securimage/issues/15 + * + * @param int $errno + * @param string $errstr + * @param string $errfile + * @param int $errline + * @param array $errcontext + * @return boolean true if handled, false if PHP should handle + */ + public function errorHandler($errno, $errstr, $errfile = '', $errline = 0, $errcontext = array()) + { + // get the current error reporting level + $level = error_reporting(); + + // if error was supressed or $errno not set in current error level + if ($level == 0 || ($level & $errno) == 0) { + return true; + } + + return false; + } +} + + +/** + * Color object for Securimage CAPTCHA + * + * @version 3.0 + * @since 2.0 + * @package Securimage + * @subpackage classes + * + */ +class Securimage_Color +{ + public $r; + public $g; + public $b; + + /** + * Create a new Securimage_Color object.
+ * Constructor expects 1 or 3 arguments.
+ * When passing a single argument, specify the color using HTML hex format,
+ * when passing 3 arguments, specify each RGB component (from 0-255) individually.
+ * $color = new Securimage_Color('#0080FF') or
+ * $color = new Securimage_Color(0, 128, 255) + * + * @param string $color + * @throws Exception + */ + public function __construct($color = '#ffffff') + { + $args = func_get_args(); + + if (sizeof($args) == 0) { + $this->r = 255; + $this->g = 255; + $this->b = 255; + } else if (sizeof($args) == 1) { + // set based on html code + if (substr($color, 0, 1) == '#') { + $color = substr($color, 1); + } + + if (strlen($color) != 3 && strlen($color) != 6) { + throw new InvalidArgumentException( + 'Invalid HTML color code passed to Securimage_Color' + ); + } + + $this->constructHTML($color); + } else if (sizeof($args) == 3) { + $this->constructRGB($args[0], $args[1], $args[2]); + } else { + throw new InvalidArgumentException( + 'Securimage_Color constructor expects 0, 1 or 3 arguments; ' . sizeof($args) . ' given' + ); + } + } + + /** + * Construct from an rgb triplet + * @param int $red The red component, 0-255 + * @param int $green The green component, 0-255 + * @param int $blue The blue component, 0-255 + */ + protected function constructRGB($red, $green, $blue) + { + if ($red < 0) $red = 0; + if ($red > 255) $red = 255; + if ($green < 0) $green = 0; + if ($green > 255) $green = 255; + if ($blue < 0) $blue = 0; + if ($blue > 255) $blue = 255; + + $this->r = $red; + $this->g = $green; + $this->b = $blue; + } + + /** + * Construct from an html hex color code + * @param string $color + */ + protected function constructHTML($color) + { + if (strlen($color) == 3) { + $red = str_repeat(substr($color, 0, 1), 2); + $green = str_repeat(substr($color, 1, 1), 2); + $blue = str_repeat(substr($color, 2, 1), 2); + } else { + $red = substr($color, 0, 2); + $green = substr($color, 2, 2); + $blue = substr($color, 4, 2); + } + + $this->r = hexdec($red); + $this->g = hexdec($green); + $this->b = hexdec($blue); + } +} diff --git a/captcha/securimage_play.php b/captcha/securimage_play.php new file mode 100644 index 0000000..4f4ffa3 --- /dev/null +++ b/captcha/securimage_play.php @@ -0,0 +1,47 @@ + + * File: securimage_play.php
+ * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or any later version.

+ * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details.

+ * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

+ * + * Any modifications to the library should be indicated clearly in the source code + * to inform users that the changes are not a part of the original software.

+ * + * If you found this script useful, please take a quick moment to rate it.
+ * http://www.hotscripts.com/rate/49400.html Thanks. + * + * @link http://www.phpcaptcha.org Securimage PHP CAPTCHA + * @link http://www.phpcaptcha.org/latest.zip Download Latest Version + * @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation + * @copyright 2012 Drew Phillips + * @author Drew Phillips + * @version 3.2RC2 (April 2012) + * @package Securimage + * + */ + +require_once dirname(__FILE__) . '/securimage.php'; + +$img = new Securimage(); + +// To use an alternate language, uncomment the following and download the files from phpcaptcha.org +// $img->audio_path = $img->securimage_path . '/audio/es/'; + +// If you have more than one captcha on a page, one must use a custom namespace +// $img->namespace = 'form2'; + +$img->outputAudioFile(); diff --git a/captcha/securimage_play.swf b/captcha/securimage_play.swf new file mode 100644 index 0000000..e749bc5 Binary files /dev/null and b/captcha/securimage_play.swf differ diff --git a/captcha/securimage_show.php b/captcha/securimage_show.php new file mode 100644 index 0000000..c54a4cb --- /dev/null +++ b/captcha/securimage_show.php @@ -0,0 +1,77 @@ + + * File: securimage_show.php
+ * + * Copyright (c) 2011, Drew Phillips + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * Any modifications to the library should be indicated clearly in the source code + * to inform users that the changes are not a part of the original software.

+ * + * If you found this script useful, please take a quick moment to rate it.
+ * http://www.hotscripts.com/rate/49400.html Thanks. + * + * @link http://www.phpcaptcha.org Securimage PHP CAPTCHA + * @link http://www.phpcaptcha.org/latest.zip Download Latest Version + * @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation + * @copyright 2012 Drew Phillips + * @author Drew Phillips + * @version 3.2RC2 (April 2012) + * @package Securimage + * + */ + +// Remove the "//" from the following line for debugging problems +// error_reporting(E_ALL); ini_set('display_errors', 1); + +require_once dirname(__FILE__) . '/securimage.php'; + +$img = new Securimage(); + +// You can customize the image by making changes below, some examples are included - remove the "//" to uncomment + +//$img->ttf_file = './Quiff.ttf'; +//$img->captcha_type = Securimage::SI_CAPTCHA_MATHEMATIC; // show a simple math problem instead of text +//$img->case_sensitive = true; // true to use case sensitve codes - not recommended +//$img->image_height = 90; // width in pixels of the image +//$img->image_width = $img->image_height * M_E; // a good formula for image size +//$img->perturbation = .75; // 1.0 = high distortion, higher numbers = more distortion +//$img->image_bg_color = new Securimage_Color("#0099CC"); // image background color +//$img->text_color = new Securimage_Color("#EAEAEA"); // captcha text color +//$img->num_lines = 8; // how many lines to draw over the image +//$img->line_color = new Securimage_Color("#0000CC"); // color of lines over the image +//$img->image_type = SI_IMAGE_JPEG; // render as a jpeg image +//$img->signature_color = new Securimage_Color(rand(0, 64), +// rand(64, 128), +// rand(128, 255)); // random signature color + +// see securimage.php for more options that can be set + + + +$img->show(); // outputs the image and content headers to the browser +// alternate use: +// $img->show('/path/to/background_image.jpg'); diff --git a/captcha/words/words.txt b/captcha/words/words.txt new file mode 100644 index 0000000..9a444ce --- /dev/null +++ b/captcha/words/words.txt @@ -0,0 +1,15457 @@ +aahing +aaliis +aarrgh +abacas +abacus +abakas +abamps +abased +abaser +abases +abasia +abated +abater +abates +abatis +abator +abayas +abbacy +abbess +abbeys +abbots +abduce +abduct +abeles +abelia +abhors +abided +abider +abides +abject +abjure +ablate +ablaut +ablaze +ablest +ablins +abloom +ablush +abmhos +aboard +aboded +abodes +abohms +abolla +abomas +aboral +aborts +abound +aboves +abrade +abroad +abrupt +abseil +absent +absorb +absurd +abulia +abulic +abvolt +abwatt +abying +abysms +acacia +acajou +acarid +acarus +accede +accent +accept +access +accord +accost +accrue +accuse +acedia +acetal +acetic +acetin +acetum +acetyl +achene +achier +aching +acidic +acidly +acinar +acinic +acinus +ackees +acnode +acorns +acquit +across +acting +actins +action +active +actors +actual +acuate +acuity +aculei +acumen +acuter +acutes +adages +adagio +adapts +addend +adders +addict +adding +addled +addles +adduce +adduct +adeems +adenyl +adepts +adhere +adieus +adieux +adipic +adjoin +adjure +adjust +admass +admire +admits +admixt +adnate +adnexa +adnoun +adobes +adobos +adonis +adopts +adored +adorer +adores +adorns +adrift +adroit +adsorb +adults +advect +advent +adverb +advert +advice +advise +adytum +adzing +adzuki +aecial +aecium +aedile +aedine +aeneus +aeonic +aerate +aerial +aeried +aerier +aeries +aerify +aerily +aerobe +aerugo +aether +afeard +affair +affect +affine +affirm +afflux +afford +affray +afghan +afield +aflame +afloat +afraid +afreet +afresh +afrits +afters +aftosa +agamas +agamic +agamid +agapae +agapai +agapes +agaric +agates +agaves +agedly +ageing +ageism +ageist +agency +agenda +agenes +agents +aggada +aggers +aggies +aggros +aghast +agings +agisms +agists +agitas +aglare +agleam +aglets +agnail +agnate +agnize +agonal +agones +agonic +agorae +agoras +agorot +agouti +agouty +agrafe +agreed +agrees +agrias +aguish +ahchoo +ahimsa +aholds +ahorse +aiders +aidful +aiding +aidman +aidmen +aiglet +aigret +aikido +ailing +aimers +aimful +aiming +aiolis +airbag +airbus +airers +airest +airier +airily +airing +airman +airmen +airted +airths +airway +aisled +aisles +aivers +ajivas +ajowan +ajugas +akelas +akenes +akimbo +alamos +alands +alanin +alants +alanyl +alarms +alarum +alaska +alated +alates +albata +albedo +albeit +albino +albite +albums +alcade +alcaic +alcids +alcove +alders +aldols +aldose +aldrin +alegar +alephs +alerts +alevin +alexia +alexin +alfaki +algins +algoid +algors +algums +alibis +alible +alidad +aliens +alight +aligns +alined +aliner +alines +aliped +aliyah +aliyas +aliyos +aliyot +alkali +alkane +alkene +alkies +alkine +alkoxy +alkyds +alkyls +alkyne +allays +allees +allege +allele +alleys +allied +allies +allium +allods +allots +allows +alloys +allude +allure +allyls +almahs +almehs +almner +almond +almost +almuce +almude +almuds +almugs +alnico +alodia +alohas +aloins +alpaca +alphas +alphyl +alpine +alsike +altars +alters +althea +aludel +alulae +alular +alumin +alumna +alumni +alvine +always +amadou +amarna +amatol +amazed +amazes +amazon +ambage +ambari +ambary +ambeer +ambers +ambery +ambits +ambled +ambler +ambles +ambush +amebae +ameban +amebas +amebic +ameers +amends +aments +amerce +amices +amicus +amides +amidic +amidin +amidol +amidst +amigas +amigos +amines +aminic +ammine +ammino +ammono +amnion +amnios +amoeba +amoles +amoral +amount +amours +ampere +amping +ampler +ampule +ampuls +amrita +amtrac +amucks +amulet +amused +amuser +amuses +amusia +amylic +amylum +anabas +anadem +analog +ananke +anarch +anatto +anchor +anchos +ancone +andros +anears +aneled +aneles +anemia +anemic +anenst +anergy +angary +angels +angers +angina +angled +angler +angles +anglos +angora +angsts +anilin +animal +animas +animes +animis +animus +anions +anises +anisic +ankled +ankles +anklet +ankush +anlace +anlage +annals +anneal +annexe +annona +annoys +annual +annuli +annuls +anodal +anodes +anodic +anoint +anoles +anomic +anomie +anonym +anopia +anorak +anoxia +anoxic +ansate +answer +anteed +anthem +anther +antiar +antick +antics +anting +antler +antral +antres +antrum +anural +anuran +anuria +anuric +anvils +anyhow +anyone +anyons +anyway +aorist +aortae +aortal +aortas +aortic +aoudad +apache +apathy +apercu +apexes +aphids +aphtha +apiary +apical +apices +apiece +aplite +aplomb +apneal +apneas +apneic +apnoea +apodal +apogee +apollo +apolog +aporia +appall +appals +appeal +appear +appels +append +apples +applet +appose +aprons +aptest +arabic +arable +arames +aramid +arbors +arbour +arbute +arcade +arcana +arcane +arched +archer +arches +archil +archly +archon +arcing +arcked +arctic +ardebs +ardent +ardors +ardour +arecas +arenas +arenes +areola +areole +arepas +aretes +argala +argali +argals +argent +argils +argled +argles +argols +argons +argosy +argots +argued +arguer +argues +argufy +argyle +argyll +arhats +ariary +arider +aridly +ariels +aright +ariled +ariose +ariosi +arioso +arisen +arises +arista +aristo +arkose +armada +armers +armets +armful +armies +arming +armlet +armors +armory +armour +armpit +armure +arnica +aroids +aroint +aromas +around +arouse +aroynt +arpens +arpent +arrack +arrant +arrays +arrear +arrest +arriba +arrive +arroba +arrows +arrowy +arroyo +arseno +arshin +arsine +arsino +arsons +artels +artery +artful +artier +artily +artist +asanas +asarum +ascend +ascent +ascots +asdics +ashcan +ashier +ashing +ashlar +ashler +ashman +ashmen +ashore +ashram +asides +askant +askers +asking +aslant +asleep +aslope +aslosh +aspect +aspens +aspers +aspics +aspire +aspish +asrama +astern +asters +asthma +astony +astral +astray +astute +aswarm +aswirl +aswoon +asylum +atabal +ataman +atavic +ataxia +ataxic +atelic +atlatl +atmans +atolls +atomic +atonal +atoned +atoner +atones +atonia +atonic +atopic +atrial +atrium +attach +attack +attain +attars +attend +attent +attest +attics +attire +attorn +attrit +attune +atwain +atween +atypic +aubade +auburn +aucuba +audads +audial +audile +auding +audios +audits +augend +augers +aughts +augite +augurs +augury +august +auklet +aulder +auntie +auntly +aurate +aureus +aurist +aurora +aurous +aurums +auspex +ausubo +auteur +author +autism +autist +autoed +autumn +auxins +avails +avatar +avaunt +avenge +avenue +averse +averts +avians +aviary +aviate +avidin +avidly +avions +avisos +avocet +avoids +avoset +avouch +avowal +avowed +avower +avulse +awaits +awaked +awaken +awakes +awards +aweary +aweigh +aweing +awhile +awhirl +awless +awmous +awning +awoken +axeman +axemen +axenic +axilla +axioms +axions +axised +axises +axites +axlike +axonal +axones +axonic +axseed +azalea +azides +azines +azlons +azoles +azonal +azonic +azoted +azotes +azoths +azotic +azukis +azures +azygos +baaing +baalim +baases +babble +babels +babied +babier +babies +babkas +babool +baboon +baboos +babuls +baccae +bached +baches +backed +backer +backup +bacons +bacula +badass +badder +baddie +badged +badger +badges +badman +badmen +baffed +baffle +bagels +bagful +bagged +bagger +baggie +bagman +bagmen +bagnio +baguet +bagwig +bailed +bailee +bailer +bailey +bailie +bailor +bairns +baited +baiter +baizas +baizes +bakers +bakery +baking +balata +balboa +balded +balder +baldly +baleen +balers +baling +balked +balker +ballad +ballet +ballon +ballot +balsam +balsas +bamboo +bammed +banana +bancos +bandas +banded +bander +bandit +bandog +banged +banger +bangle +banian +baning +banish +banjax +banjos +banked +banker +bankit +banned +banner +bannet +bantam +banter +banyan +banzai +baobab +barbal +barbed +barbel +barber +barbes +barbet +barbie +barbut +barcas +barded +bardes +bardic +barege +barely +barest +barfed +barfly +barged +bargee +barges +barhop +baring +barite +barium +barked +barker +barley +barlow +barman +barmen +barmie +barned +barney +barong +barons +barony +barque +barred +barrel +barren +barres +barret +barrio +barrow +barter +baryes +baryon +baryta +baryte +basalt +basely +basest +bashaw +bashed +basher +bashes +basics +basify +basils +basing +basins +basion +basked +basket +basque +basted +baster +bastes +batboy +bateau +bathed +bather +bathes +bathos +batiks +bating +batman +batmen +batons +batted +batten +batter +battik +battle +battue +baubee +bauble +baulks +baulky +bawbee +bawdry +bawled +bawler +bawtie +bayamo +bayard +baying +bayman +baymen +bayous +bazaar +bazars +bazoos +beachy +beacon +beaded +beader +beadle +beagle +beaked +beaker +beamed +beaned +beanie +beanos +beards +bearer +beaten +beater +beauts +beauty +bebops +becalm +became +becaps +becked +becket +beckon +beclog +become +bedamn +bedaub +bedbug +bedded +bedder +bedeck +bedell +bedels +bedews +bedims +bedlam +bedpan +bedrid +bedrug +bedsit +beduin +bedumb +beebee +beechy +beefed +beeped +beeper +beetle +beeves +beezer +befall +befell +befits +beflag +beflea +befogs +befool +before +befoul +befret +begall +begaze +begets +beggar +begged +begins +begird +begirt +beglad +begone +begrim +begulf +begums +behalf +behave +behead +beheld +behest +behind +behold +behoof +behove +behowl +beiges +beigne +beings +bekiss +beknot +belady +belaud +belays +beldam +beleap +belfry +belgas +belied +belief +belier +belies +belike +belive +belled +belles +bellow +belong +belons +belows +belted +belter +beluga +bemata +bemean +bemire +bemist +bemixt +bemoan +bemock +bemuse +bename +benday +bended +bendee +bender +bendys +benign +bennes +bennet +bennis +bentos +benumb +benzal +benzin +benzol +benzyl +berake +berate +bereft +berets +berime +berlin +bermed +bermes +bertha +berths +beryls +beseem +besets +beside +besmut +besnow +besoms +besots +bested +bestir +bestow +bestud +betake +betels +bethel +betide +betime +betise +betons +betony +betook +betray +bettas +betted +better +bettor +bevels +bevies +bevors +bewail +beware +beweep +bewept +bewigs +beworm +bewrap +bewray +beylic +beylik +beyond +bezant +bezazz +bezels +bezils +bezoar +bhakta +bhakti +bhangs +bharal +bhoots +bialis +bialys +biased +biases +biaxal +bibbed +bibber +bibles +bicarb +biceps +bicker +bicorn +bicron +bidden +bidder +biders +bidets +biding +bields +biface +biffed +biffin +biflex +bifold +biform +bigamy +bigeye +bigger +biggie +biggin +bights +bigots +bigwig +bijous +bijoux +bikers +bikies +biking +bikini +bilboa +bilbos +bilged +bilges +bilked +bilker +billed +biller +billet +billie +billon +billow +bimahs +bimbos +binary +binate +binder +bindis +bindle +biners +binged +binger +binges +bingos +binits +binned +binocs +biogas +biogen +biomes +bionic +bionts +biopic +biopsy +biotas +biotic +biotin +bipack +bipeds +bipods +birded +birder +birdie +bireme +birkie +birled +birler +birles +birred +birses +births +bisect +bishop +bisons +bisque +bister +bistre +bistro +biters +biting +bitmap +bitted +bitten +bitter +bizone +bizzes +blabby +blacks +bladed +blader +blades +blaffs +blains +blamed +blamer +blames +blanch +blanks +blared +blares +blasts +blasty +blawed +blazed +blazer +blazes +blazon +bleach +bleaks +blears +bleary +bleats +blebby +bleeds +bleeps +blench +blende +blends +blenny +blight +blimey +blimps +blinds +blinis +blinks +blintz +blites +blithe +bloats +blocks +blocky +blokes +blonde +blonds +bloods +bloody +blooey +blooie +blooms +bloomy +bloops +blotch +blotto +blotty +blouse +blousy +blowby +blowed +blower +blowsy +blowup +blowzy +bludge +bluely +bluest +bluesy +bluets +blueys +bluffs +bluing +bluish +blumed +blumes +blunge +blunts +blurbs +blurry +blurts +blypes +boards +boarts +boasts +boated +boatel +boater +bobbed +bobber +bobbin +bobble +bobcat +bocces +boccia +boccie +boccis +boches +bodega +bodice +bodied +bodies +bodily +boding +bodkin +boffed +boffin +boffos +bogans +bogart +bogeys +bogged +boggle +bogies +bogles +boheas +bohunk +boiled +boiler +boings +boinks +boites +bolder +boldly +bolero +bolete +boleti +bolide +bolled +bolshy +bolson +bolted +bolter +bombax +bombed +bomber +bombes +bombyx +bonaci +bonbon +bonded +bonder +bonduc +bongos +bonier +boning +bonita +bonito +bonnes +bonnet +bonnie +bonobo +bonsai +bonzer +bonzes +boobed +boobie +booboo +boocoo +boodle +booger +boogey +boogie +boohoo +booing +boojum +booked +booker +bookie +bookoo +boomed +boomer +boosts +booted +bootee +booths +bootie +boozed +boozer +boozes +bopeep +bopped +bopper +borage +borals +borane +borate +bordel +border +boreal +boreas +boreen +borers +boride +boring +borked +borons +borrow +borsch +borsht +borzoi +boshes +bosker +bosket +bosons +bosque +bossed +bosses +boston +bosuns +botany +botchy +botels +botfly +bother +bottle +bottom +boubou +boucle +boudin +bouffe +boughs +bought +bougie +boules +boulle +bounce +bouncy +bounds +bounty +bourgs +bourne +bourns +bourse +boused +bouses +bouton +bovids +bovine +bowers +bowery +bowfin +bowing +bowled +bowleg +bowler +bowman +bowmen +bowpot +bowsed +bowses +bowwow +bowyer +boxcar +boxers +boxful +boxier +boxily +boxing +boyard +boyars +boyish +boylas +braced +bracer +braces +brachs +bracts +braggy +brahma +braids +brails +brains +brainy +braise +braize +braked +brakes +branch +brands +brandy +branks +branny +brants +brashy +brasil +brassy +bratty +bravas +braved +braver +braves +bravos +brawer +brawls +brawly +brawns +brawny +brayed +brayer +brazas +brazed +brazen +brazer +brazes +brazil +breach +breads +bready +breaks +breams +breath +bredes +breech +breeds +breeks +breeze +breezy +bregma +brents +breves +brevet +brewed +brewer +brewis +briard +briars +briary +bribed +bribee +briber +bribes +bricks +bricky +bridal +brides +bridge +bridle +briefs +briers +briery +bright +brillo +brills +brined +briner +brines +brings +brinks +briony +brises +brisks +briths +britts +broach +broads +broche +brocks +brogan +brogue +broils +broken +broker +brolly +bromal +bromes +bromic +bromid +bromin +bromos +bronco +broncs +bronze +bronzy +brooch +broods +broody +brooks +brooms +broomy +broses +broths +brothy +browed +browns +browny +browse +brucin +brughs +bruins +bruise +bruits +brulot +brumal +brumby +brumes +brunch +brunet +brunts +brushy +brutal +bruted +brutes +bruxed +bruxes +bryony +bubale +bubals +bubbas +bubble +bubbly +bubkes +buboed +buboes +buccal +bucked +bucker +bucket +buckle +buckos +buckra +budded +budder +buddha +buddle +budged +budger +budges +budget +budgie +buffed +buffer +buffet +buffos +bugeye +bugged +bugger +bugled +bugler +bugles +bugout +bugsha +builds +bulbar +bulbed +bulbel +bulbil +bulbul +bulged +bulger +bulges +bulgur +bulked +bullae +bulled +bullet +bumble +bumkin +bumped +bumper +bumphs +bunchy +buncos +bundle +bundts +bunged +bungee +bungle +bunion +bunked +bunker +bunkos +bunkum +bunted +bunter +bunyas +buoyed +bupkes +bupkus +buppie +buqsha +burans +burble +burbly +burbot +burden +burdie +bureau +burets +burgee +burger +burghs +burgle +burgoo +burial +buried +burier +buries +burins +burkas +burked +burker +burkes +burlap +burled +burler +burley +burned +burner +burnet +burnie +burped +burqas +burred +burrer +burros +burrow +bursae +bursal +bursar +bursas +burses +bursts +burton +busbar +busboy +bushed +bushel +busher +bushes +bushwa +busied +busier +busies +busily +busing +busked +busker +buskin +busman +busmen +bussed +busses +busted +buster +bustic +bustle +butane +butene +buteos +butled +butler +butles +butted +butter +buttes +button +bututs +butyls +buyers +buying +buyoff +buyout +buzuki +buzzed +buzzer +buzzes +bwanas +byelaw +bygone +bylaws +byline +byname +bypass +bypast +bypath +byplay +byrled +byrnie +byroad +byssal +byssus +bytalk +byways +byword +bywork +byzant +cabala +cabals +cabana +cabbed +cabbie +cabers +cabins +cabled +cabler +cables +cablet +cabman +cabmen +cabobs +cacaos +cached +caches +cachet +cachou +cackle +cactus +caddie +caddis +cadent +cadets +cadged +cadger +cadges +cadmic +cadres +caecal +caecum +caeoma +caesar +caftan +cagers +cagier +cagily +caging +cahier +cahoot +cahows +caiman +caique +cairds +cairns +cairny +cajole +cakier +caking +calami +calash +calcar +calces +calcic +calesa +calico +califs +caliph +calked +calker +calkin +callan +callas +called +callee +caller +callet +callow +callus +calmed +calmer +calmly +calory +calpac +calque +calved +calves +calxes +camail +camber +cambia +camels +cameos +camera +camion +camisa +camise +camlet +cammie +camped +camper +campos +campus +canals +canape +canard +canary +cancan +cancel +cancer +cancha +candid +candle +candor +caners +canful +cangue +canids +canine +caning +canker +cannas +canned +cannel +canner +cannie +cannon +cannot +canoed +canoer +canoes +canola +canons +canopy +cansos +cantal +canted +canter +canthi +cantic +cantle +canton +cantor +cantos +cantus +canula +canvas +canyon +capers +capful +capias +capita +caplet +caplin +capons +capote +capped +capper +capric +capris +capsid +captan +captor +carack +carafe +carate +carats +carbon +carbos +carboy +carcel +carded +carder +cardia +cardio +cardon +careen +career +carers +caress +carets +carful +cargos +carhop +caribe +caried +caries +carina +caring +carked +carles +carlin +carman +carmen +carnal +carnet +carney +carnie +carobs +caroch +caroli +carols +caroms +carpal +carped +carpel +carper +carpet +carpus +carrel +carrom +carrot +carses +carted +cartel +carter +cartes +carton +cartop +carved +carvel +carven +carver +carves +casaba +casava +casbah +casefy +caseic +casein +casern +cashaw +cashed +cashes +cashew +cashoo +casing +casini +casino +casita +casked +casket +casque +caster +castes +castle +castor +casual +catalo +catchy +catena +caters +catgut +cation +catkin +catlin +catnap +catnip +catsup +catted +cattie +cattle +caucus +caudad +caudal +caudex +caudle +caught +caulds +caules +caulis +caulks +causal +caused +causer +causes +causey +caveat +cavern +cavers +caviar +cavies +cavils +caving +cavity +cavort +cawing +cayman +cayuse +ceased +ceases +cebids +ceboid +cecity +cedarn +cedars +cedary +ceders +ceding +cedula +ceibas +ceiled +ceiler +ceilis +celebs +celery +celiac +cellae +cellar +celled +cellos +celoms +cement +cenote +censed +censer +censes +censor +census +centai +cental +centas +center +centos +centra +centre +centum +ceorls +cerate +cercal +cercis +cercus +cereal +cereus +cerias +cering +ceriph +cerise +cerite +cerium +cermet +cerous +certes +ceruse +cervid +cervix +cesium +cessed +cesses +cestas +cestoi +cestos +cestus +cesura +cetane +chabuk +chacma +chadar +chador +chadri +chaeta +chafed +chafer +chafes +chaffs +chaffy +chaine +chains +chairs +chaise +chakra +chalah +chaleh +chalet +chalks +chalky +challa +chally +chalot +chammy +champs +champy +chance +chancy +change +changs +chants +chanty +chapel +chapes +charas +chards +chared +chares +charge +charka +charks +charms +charro +charrs +charry +charts +chased +chaser +chases +chasms +chasmy +chasse +chaste +chatty +chaunt +chawed +chawer +chazan +cheapo +cheaps +cheats +chebec +checks +cheder +cheeks +cheeky +cheeps +cheero +cheers +cheery +cheese +cheesy +chefed +chegoe +chelae +chelas +chemic +chemos +cheque +cherry +cherts +cherty +cherub +chests +chesty +chetah +cheths +chevre +chewed +chewer +chiasm +chiaus +chicas +chicer +chichi +chicks +chicle +chicly +chicos +chided +chider +chides +chiefs +chield +chiels +chigoe +childe +chiles +chilis +chilli +chills +chilly +chimar +chimbs +chimed +chimer +chimes +chimla +chimps +chinas +chinch +chined +chines +chinks +chinky +chinos +chints +chintz +chippy +chiral +chirks +chirms +chiros +chirps +chirpy +chirre +chirrs +chirus +chisel +chital +chitin +chiton +chitty +chives +chivvy +choana +chocks +choice +choirs +choked +choker +chokes +chokey +cholas +choler +cholla +cholos +chomps +chooks +choose +choosy +chopin +choppy +choral +chords +chorea +chored +chores +choric +chorus +chosen +choses +chotts +chough +chouse +choush +chowed +chowse +chrism +chroma +chrome +chromo +chromy +chubby +chucks +chucky +chufas +chuffs +chuffy +chukar +chukka +chummy +chumps +chunks +chunky +chuppa +church +churls +churns +churro +churrs +chuted +chutes +chyles +chymes +chymic +cibols +cicada +cicala +cicale +cicely +cicero +ciders +cigars +cilice +cilium +cinder +cinema +cineol +cinque +cipher +circle +circus +cirque +cirrus +ciscos +cisted +cistus +citers +cither +citied +cities +citify +citing +citola +citole +citral +citric +citrin +citron +citrus +civets +civics +civies +civism +clachs +clacks +clades +claims +clammy +clamor +clamps +clangs +clanks +clanky +claque +claret +claros +clasps +claspt +classy +clasts +clause +claver +claves +clavus +clawed +clawer +claxon +clayed +clayey +cleans +clears +cleats +cleave +cleeks +clefts +clench +cleome +cleped +clepes +clergy +cleric +clerid +clerks +clever +clevis +clewed +cliche +clicks +client +cliffs +cliffy +clifts +climax +climbs +climes +clinal +clinch +clines +clings +clingy +clinic +clinks +clique +cliquy +clitic +clivia +cloaca +cloaks +cloche +clocks +cloddy +cloggy +clomps +clonal +cloned +cloner +clones +clonic +clonks +clonus +cloots +cloque +closed +closer +closes +closet +clothe +cloths +clotty +clouds +cloudy +clough +clours +clouts +cloven +clover +cloves +clowns +cloyed +clozes +clubby +clucks +cluing +clumps +clumpy +clumsy +clunks +clunky +clutch +clypei +cnidae +coacts +coalas +coaled +coaler +coapts +coarse +coasts +coated +coatee +coater +coatis +coaxal +coaxed +coaxer +coaxes +cobalt +cobber +cobble +cobias +cobles +cobnut +cobras +cobweb +cocain +coccal +coccic +coccid +coccus +coccyx +cochin +cocoas +cocoon +codded +codder +coddle +codecs +codeia +codens +coders +codify +coding +codlin +codons +coedit +coelom +coempt +coerce +coeval +coffee +coffer +coffin +coffle +cogent +cogged +cogito +cognac +cogons +cogway +cohead +coheir +cohere +cohogs +cohort +cohosh +cohost +cohune +coifed +coiffe +coigne +coigns +coiled +coiler +coined +coiner +coital +coitus +cojoin +coking +colbys +colder +coldly +colead +coleus +colics +colies +colins +collar +collet +collie +collop +colobi +cologs +colone +coloni +colons +colony +colors +colour +colter +colugo +column +colure +colzas +comade +comake +comate +combat +combed +comber +combes +combos +comedo +comedy +comely +comers +cometh +comets +comfit +comics +coming +comity +commas +commie +commit +commix +common +comose +comous +compas +comped +compel +comply +compos +compts +comtes +concha +concho +conchs +conchy +concur +condor +condos +coneys +confab +confer +confit +congas +congee +conger +conges +congii +congos +congou +conics +conies +conine +coning +conins +conium +conked +conker +conned +conner +conoid +consol +consul +contes +contos +contra +convex +convey +convoy +coocoo +cooeed +cooees +cooers +cooeys +cooing +cooked +cooker +cookey +cookie +cooled +cooler +coolie +coolly +coolth +coombe +coombs +cooped +cooper +coopts +cooter +cootie +copalm +copals +copays +copeck +copens +copers +copied +copier +copies +coping +coplot +copout +copped +copper +coppra +coprah +copras +copses +copter +copula +coquet +corals +corban +corbel +corbie +corded +corder +cordon +corers +corgis +coring +corium +corked +corker +cormel +cornea +corned +cornel +corner +cornet +cornua +cornus +corody +corona +corpse +corpus +corral +corrie +corsac +corses +corset +cortex +cortin +corvee +corves +corvet +corvid +corymb +coryza +cosecs +cosets +coseys +coshed +cosher +coshes +cosied +cosier +cosies +cosign +cosily +cosine +cosmic +cosmid +cosmos +cosset +costae +costal +costar +costed +coster +costly +cotans +coteau +coting +cottae +cottar +cottas +cotter +cotton +cotype +cougar +coughs +coulee +coulis +counts +county +couped +coupes +couple +coupon +course +courts +cousin +couter +couths +covary +covens +covers +covert +covets +coveys +coving +covins +cowage +coward +cowboy +cowers +cowier +cowing +cowled +cowman +cowmen +cowpat +cowpea +cowpie +cowpox +cowrie +coxing +coydog +coyest +coying +coyish +coyote +coypou +coypus +cozens +cozeys +cozied +cozier +cozies +cozily +cozzes +craals +crabby +cracks +cracky +cradle +crafts +crafty +craggy +crakes +crambe +crambo +cramps +crampy +cranch +craned +cranes +crania +cranks +cranky +cranny +crapes +crappy +crases +crasis +cratch +crated +crater +crates +craton +cravat +craved +craven +craver +craves +crawls +crawly +crayon +crazed +crazes +creaks +creaky +creams +creamy +crease +creasy +create +creche +credal +credit +credos +creeds +creeks +creels +creeps +creepy +creese +creesh +cremes +crenel +creole +creped +crepes +crepey +crepon +cresol +cressy +crests +cresyl +cretic +cretin +crewed +crewel +cricks +criers +crikey +crimes +crimps +crimpy +cringe +crinum +cripes +crises +crisic +crisis +crisps +crispy +crissa +crista +critic +croaks +croaky +crocks +crocus +crofts +crojik +crones +crooks +croons +crores +crosse +crotch +croton +crouch +croupe +croups +croupy +crouse +croute +crowds +crowdy +crowed +crower +crowns +crozer +crozes +cruces +crucks +cruddy +cruder +crudes +cruets +cruise +crumbs +crumby +crummy +crumps +crunch +cruors +crural +cruses +cruset +crusts +crusty +crutch +cruxes +crwths +crying +crypto +crypts +cuatro +cubage +cubebs +cubers +cubics +cubing +cubism +cubist +cubiti +cubits +cuboid +cuckoo +cuddie +cuddle +cuddly +cudgel +cueing +cuesta +cuffed +cuisse +culets +cullay +culled +culler +cullet +cullis +culmed +culpae +cultch +cultic +cultus +culver +cumber +cumbia +cumins +cummer +cummin +cumuli +cundum +cuneal +cunner +cupels +cupful +cupids +cupola +cuppas +cupped +cupper +cupric +cuprum +cupula +cupule +curacy +curagh +curara +curare +curari +curate +curbed +curber +curded +curdle +curers +curets +curfew +curiae +curial +curies +curing +curios +curite +curium +curled +curler +curlew +curran +curred +currie +cursed +curser +curses +cursor +curtal +curter +curtly +curtsy +curule +curved +curves +curvet +curvey +cuscus +cusecs +cushat +cushaw +cuspal +cusped +cuspid +cuspis +cussed +cusser +cusses +cussos +custom +custos +cutely +cutest +cutesy +cuteys +cuties +cutins +cutlas +cutler +cutlet +cutoff +cutout +cutter +cuttle +cutups +cuvees +cyanic +cyanid +cyanin +cyborg +cycads +cycled +cycler +cycles +cyclic +cyclin +cyclos +cyders +cyeses +cyesis +cygnet +cymars +cymbal +cymene +cymlin +cymoid +cymols +cymose +cymous +cynics +cypher +cypres +cyprus +cystic +cytons +dabbed +dabber +dabble +dachas +dacite +dacker +dacoit +dacron +dactyl +daddle +dadgum +dadoed +dadoes +daedal +daemon +daffed +dafter +daftly +daggas +dagger +daggle +dagoba +dagoes +dahlia +dahoon +daiker +daikon +daimen +daimio +daimon +daimyo +dainty +daises +dakoit +dalasi +daledh +daleth +dalles +dalton +damage +damans +damars +damask +dammar +dammed +dammer +dammit +damned +damner +damped +dampen +damper +damply +damsel +damson +danced +dancer +dances +dander +dandle +danged +danger +dangle +dangly +danios +danish +danker +dankly +daphne +dapped +dapper +dapple +darbar +darers +darics +daring +darked +darken +darker +darkey +darkie +darkle +darkly +darned +darnel +darner +darted +darter +dartle +dashed +dasher +dashes +dashis +dassie +datary +datcha +daters +dating +dative +dattos +datums +datura +daubed +dauber +daubes +daubry +daunts +dauted +dautie +davens +davies +davits +dawdle +dawing +dawned +dawted +dawtie +daybed +dayfly +daylit +dazing +dazzle +deacon +deaden +deader +deadly +deafen +deafer +deafly +deairs +dealer +deaned +dearer +dearie +dearly +dearth +deasil +deaths +deathy +deaved +deaves +debags +debark +debars +debase +debate +debeak +debits +debone +debris +debtor +debugs +debunk +debuts +debyes +decade +decafs +decals +decamp +decane +decant +decare +decays +deceit +decent +decern +decide +decile +decked +deckel +decker +deckle +declaw +decoct +decode +decors +decoys +decree +decury +dedans +deduce +deduct +deeded +deejay +deemed +deepen +deeper +deeply +deewan +deface +defame +defang +defats +defeat +defect +defend +defers +deffer +defied +defier +defies +defile +define +deflea +defoam +defogs +deform +defrag +defray +defter +deftly +defuel +defund +defuse +defuze +degage +degame +degami +degerm +degree +degums +degust +dehorn +dehort +deiced +deicer +deices +deific +deigns +deisms +deists +deixis +deject +dekare +deking +dekkos +delate +delays +delead +delete +delfts +delict +delime +delish +delist +deltas +deltic +delude +deluge +deluxe +delved +delver +delves +demand +demark +demast +demean +dement +demies +demise +demits +demobs +demode +demoed +demons +demote +demure +demurs +denari +denars +denary +dengue +denial +denied +denier +denies +denims +denned +denote +denser +dental +dented +dentil +dentin +denude +deodar +depart +depend +deperm +depict +deploy +depone +deport +depose +depots +depths +depute +deputy +derail +derate +derats +derays +deride +derive +dermal +dermas +dermic +dermis +derris +desalt +desand +descry +desert +design +desire +desist +desman +desmid +desorb +desoxy +despot +detach +detail +detain +detect +detent +deters +detest +detick +detour +deuced +deuces +devein +devels +devest +device +devils +devise +devoid +devoir +devons +devote +devour +devout +dewans +dewars +dewier +dewily +dewing +dewlap +dewool +deworm +dexies +dexter +dextro +dezinc +dharma +dharna +dhobis +dholes +dhooly +dhoora +dhooti +dhotis +dhurna +dhutis +diacid +diadem +dialed +dialer +dialog +diamin +diaper +diapir +diatom +diazin +dibbed +dibber +dibble +dibbuk +dicast +dicers +dicier +dicing +dicots +dictum +didact +diddle +diddly +didies +didoes +dieing +dienes +dieoff +diesel +dieses +diesis +dieted +dieter +differ +digamy +digest +digged +digger +dights +digits +diglot +dikdik +dikers +diking +diktat +dilate +dildoe +dildos +dilled +dilute +dimers +dimity +dimmed +dimmer +dimout +dimple +dimply +dimwit +dinars +dindle +dinero +diners +dinged +dinger +dinges +dingey +dinghy +dingle +dingus +dining +dinked +dinkey +dinkly +dinkum +dinned +dinner +dinted +diobol +diodes +dioecy +dioxan +dioxid +dioxin +diplex +diploe +dipnet +dipody +dipole +dipped +dipper +dipsas +dipsos +diquat +dirams +dirdum +direct +direly +direst +dirges +dirham +dirked +dirled +dirndl +disarm +disbar +disbud +disced +discos +discus +diseur +dished +dishes +disked +dismal +dismay +dismes +disown +dispel +dissed +disses +distal +distil +disuse +dither +dittos +ditzes +diuron +divans +divers +divert +divest +divide +divine +diving +divots +diwans +dixits +dizens +djebel +djinni +djinns +djinny +doable +doated +dobber +dobbin +dobies +doblas +doblon +dobras +dobros +dobson +docent +docile +docked +docker +docket +doctor +dodder +dodged +dodgem +dodger +dodges +dodoes +doffed +doffer +dogdom +dogear +dogeys +dogged +dogger +doggie +dogies +dogleg +dogmas +dognap +doiled +doings +doited +doling +dollar +dolled +dollop +dolman +dolmas +dolmen +dolors +dolour +domain +domine +doming +domino +donate +donees +dongle +donjon +donkey +donnas +donned +donnee +donors +donsie +donuts +donzel +doobie +doodad +doodle +doodoo +doofus +doolee +doolie +doomed +doowop +doozer +doozie +dopant +dopers +dopier +dopily +doping +dorado +dorbug +dories +dormer +dormie +dormin +dorper +dorsad +dorsal +dorsel +dorser +dorsum +dosage +dosers +dosing +dossal +dossed +dossel +dosser +dosses +dossil +dotage +dotard +doters +dotier +doting +dotted +dottel +dotter +dottle +double +doubly +doubts +doughs +dought +doughy +doulas +doumas +dourah +douras +dourer +dourly +doused +douser +douses +dovens +dovish +dowels +dowers +dowery +dowing +downed +downer +dowsed +dowser +dowses +doxies +doyens +doyley +dozens +dozers +dozier +dozily +dozing +drably +drachm +draffs +draffy +drafts +drafty +dragee +draggy +dragon +drails +drains +drakes +dramas +drawee +drawer +drawls +drawly +drayed +dreads +dreams +dreamt +dreamy +drears +dreary +drecks +drecky +dredge +dreggy +dreich +dreidl +dreigh +drench +dressy +driegh +driers +driest +drifts +drifty +drills +drinks +drippy +drivel +driven +driver +drives +drogue +droids +droits +drolls +drolly +dromon +droned +droner +drones +drongo +drools +drooly +droops +droopy +dropsy +drosky +drossy +drouks +drouth +droved +drover +droves +drownd +drowns +drowse +drowsy +drudge +druggy +druids +drumly +drunks +drupes +druses +dryads +dryers +dryest +drying +dryish +drylot +dually +dubbed +dubber +dubbin +ducats +ducked +ducker +duckie +ductal +ducted +duddie +dudeen +duding +dudish +dueled +dueler +duelli +duello +duende +duenna +dueted +duffel +duffer +duffle +dugong +dugout +duiker +duking +dulcet +dulias +dulled +duller +dulses +dumbed +dumber +dumbly +dumbos +dumdum +dumped +dumper +dunams +dunces +dunged +dunite +dunked +dunker +dunlin +dunned +dunner +dunted +duolog +duomos +dupers +dupery +duping +duplex +dupped +durbar +duress +durian +during +durion +durned +durocs +durras +durrie +durums +dusked +dusted +duster +dustup +duties +duvets +dwarfs +dweebs +dweeby +dwells +dwined +dwines +dyable +dyadic +dybbuk +dyeing +dyings +dyking +dynamo +dynast +dynein +dynels +dynode +dyvour +eagers +eagled +eagles +eaglet +eagres +earbud +earful +earing +earlap +earned +earner +earths +earthy +earwax +earwig +easels +easier +easies +easily +easing +easter +eaters +eatery +eating +ebbets +ebbing +ebooks +ecarte +ecesic +ecesis +echard +eching +echini +echoed +echoer +echoes +echoey +echoic +eclair +eclats +ectype +eczema +eddied +eddies +eddoes +edemas +edenic +edgers +edgier +edgily +edging +edible +edicts +ediles +edited +editor +educed +educes +educts +eelier +eerier +eerily +efface +effect +effete +effigy +efflux +effort +effuse +egesta +egests +eggars +eggcup +eggers +egging +eggnog +egises +egoism +egoist +egress +egrets +eiders +eidola +eighth +eights +eighty +eikons +either +ejecta +ejects +ekuele +elains +elands +elapid +elapse +elated +elater +elates +elbows +elders +eldest +elects +elegit +elemis +eleven +elevon +elfins +elfish +elicit +elided +elides +elints +elites +elixir +elmier +elodea +eloign +eloins +eloped +eloper +elopes +eluant +eluate +eluded +eluder +eludes +eluent +eluted +elutes +eluvia +elvers +elvish +elytra +emails +embalm +embank +embark +embars +embays +embeds +embers +emblem +embody +emboli +emboly +embosk +emboss +embows +embrue +embryo +emceed +emcees +emdash +emeers +emends +emerge +emerod +emeses +emesis +emetic +emetin +emeute +emigre +emmers +emmets +emodin +emoted +emoter +emotes +empale +empery +empire +employ +emydes +enable +enacts +enamel +enamor +enates +enatic +encage +encamp +encase +encash +encina +encode +encore +encyst +endash +endear +enders +ending +endite +endive +endows +endrin +endued +endues +endure +enduro +energy +enface +enfold +engage +engild +engine +engird +engirt +englut +engram +engulf +enhalo +enigma +enisle +enjoin +enjoys +enlace +enlist +enmesh +enmity +ennead +ennuis +ennuye +enokis +enolic +enosis +enough +enrage +enrapt +enrich +enrobe +enroll +enrols +enroot +enserf +ensign +ensile +ensoul +ensued +ensues +ensure +entail +entera +enters +entice +entire +entity +entoil +entomb +entrap +entree +enured +enures +envied +envier +envies +enviro +envois +envoys +enwind +enwomb +enwrap +enzyme +enzyms +eocene +eolian +eolith +eonian +eonism +eosine +eosins +epacts +eparch +ephahs +ephebe +ephebi +ephods +ephori +ephors +epical +epigon +epilog +epimer +epizoa +epochs +epodes +eponym +epopee +eposes +equals +equate +equids +equine +equips +equity +erased +eraser +erases +erbium +erects +erenow +ergate +ergots +ericas +eringo +ermine +eroded +erodes +eroses +erotic +errand +errant +errata +erring +errors +ersatz +eructs +erugos +erupts +ervils +eryngo +escape +escarp +escars +eschar +eschew +escort +escots +escrow +escudo +eskars +eskers +espial +espied +espies +esprit +essays +essoin +estate +esteem +esters +estops +estral +estray +estrin +estrum +estrus +etalon +etamin +etapes +etched +etcher +etches +eterne +ethane +ethene +ethers +ethics +ethion +ethnic +ethnos +ethoxy +ethyls +ethyne +etoile +etudes +etwees +etymon +euchre +eulogy +eunuch +eupnea +eureka +euripi +euroky +eutaxy +evaded +evader +evades +evened +evener +evenly +events +everts +evicts +eviler +evilly +evince +evited +evites +evoked +evoker +evokes +evolve +evulse +evzone +exacta +exacts +exalts +examen +exarch +exceed +excels +except +excess +excide +excise +excite +excuse +exedra +exempt +exequy +exerts +exeunt +exhale +exhort +exhume +exiled +exiler +exiles +exilic +exines +exists +exited +exodoi +exodos +exodus +exogen +exonic +exonym +exotic +expand +expats +expect +expels +expend +expert +expire +expiry +export +expose +exsect +exsert +extant +extend +extent +extern +extoll +extols +extort +extras +exuded +exudes +exults +exurbs +exuvia +eyases +eyebar +eyecup +eyeful +eyeing +eyelet +eyelid +eyries +fabber +fabled +fabler +fables +fabric +facade +facers +facete +facets +faceup +facial +facile +facing +factor +facula +fadein +faders +fading +faenas +faerie +failed +faille +fainer +faints +faired +fairer +fairly +faiths +fajita +fakeer +fakers +fakery +faking +fakirs +falces +falcon +fallal +fallen +faller +fallow +falser +falsie +falter +family +famine +faming +famish +famous +famuli +fandom +fanega +fanfic +fangas +fanged +fanion +fanjet +fanned +fanner +fanons +fantod +fantom +fanums +faqirs +faquir +farads +farced +farcer +farces +farcie +farded +fardel +farers +farfal +farfel +farina +faring +farles +farmed +farmer +farrow +farted +fasces +fascia +fashed +fashes +fasted +fasten +faster +father +fathom +fating +fatwas +faucal +fauces +faucet +faulds +faults +faulty +faunae +faunal +faunas +fauves +favela +favism +favors +favour +fawned +fawner +faxing +faying +fazing +fealty +feared +fearer +feased +feases +feasts +feater +featly +feazed +feazes +feckly +fecund +fedora +feeble +feebly +feeder +feeing +feeler +feezed +feezes +feigns +feijoa +feints +feirie +feists +feisty +felids +feline +fellah +fellas +felled +feller +felloe +fellow +felons +felony +felsic +felted +female +femmes +femora +femurs +fenced +fencer +fences +fended +fender +fennec +fennel +feoffs +ferals +ferbam +feriae +ferial +ferias +ferine +ferity +ferlie +fermis +ferrel +ferret +ferric +ferrum +ferula +ferule +fervid +fervor +fescue +fessed +fesses +festal +fester +fetial +fetich +feting +fetish +fetors +fetted +fetter +fettle +feuars +feudal +feuded +feuing +fevers +fewest +feyest +fezzed +fezzes +fiacre +fiance +fiasco +fibbed +fibber +fibers +fibres +fibril +fibrin +fibula +fiches +fichus +ficins +fickle +fickly +ficoes +fiddle +fiddly +fidged +fidges +fidget +fields +fiends +fierce +fiesta +fifers +fifing +fifths +figged +fights +figure +filers +filets +filial +filing +filled +filler +filles +fillet +fillip +fillos +filmed +filmer +filmic +filmis +filose +filter +filths +filthy +fimble +finale +finals +fincas +finder +finely +finery +finest +finger +finial +fining +finish +finite +finito +finked +finned +fiords +fipple +fiques +firers +firing +firkin +firman +firmed +firmer +firmly +firsts +firths +fiscal +fished +fisher +fishes +fistic +fitchy +fitful +fitted +fitter +fivers +fixate +fixers +fixing +fixity +fixure +fizgig +fizzed +fizzer +fizzes +fizzle +fjelds +fjords +flabby +flacks +flacon +flaggy +flagon +flails +flairs +flaked +flaker +flakes +flakey +flambe +flamed +flamen +flamer +flames +flanes +flanks +flappy +flared +flares +flashy +flasks +flatly +flatus +flaunt +flauta +flavin +flavor +flawed +flaxen +flaxes +flayed +flayer +fleams +fleche +flecks +flecky +fledge +fledgy +fleece +fleech +fleecy +fleers +fleets +flench +flense +fleshy +fletch +fleury +flexed +flexes +flexor +fleyed +flicks +fliers +fliest +flight +flimsy +flinch +flings +flints +flinty +flippy +flirts +flirty +flitch +flited +flites +floats +floaty +flocci +flocks +flocky +flongs +floods +flooey +flooie +floors +floosy +floozy +floppy +florae +floral +floras +floret +florid +florin +flossy +flotas +flours +floury +flouts +flowed +flower +fluent +fluffs +fluffy +fluids +fluish +fluked +flukes +flukey +flumed +flumes +flumps +flunks +flunky +fluors +flurry +fluted +fluter +flutes +flutey +fluxed +fluxes +fluyts +flyboy +flybys +flyers +flying +flyman +flymen +flyoff +flysch +flyted +flytes +flyway +foaled +foamed +foamer +fobbed +fodder +fodgel +foehns +foeman +foemen +foetal +foetid +foetor +foetus +fogbow +fogdog +fogeys +fogged +fogger +fogies +foible +foiled +foined +foison +foists +folate +folded +folder +foldup +foleys +foliar +folios +folium +folkie +folksy +folles +follis +follow +foment +fomite +fonded +fonder +fondle +fondly +fondue +fondus +fontal +foodie +fooled +footed +footer +footie +footle +footsy +foozle +fopped +forage +forams +forays +forbad +forbid +forbye +forced +forcer +forces +forded +fordid +foreby +foredo +forego +forest +forgat +forged +forger +forges +forget +forgot +forint +forked +forker +formal +format +formed +formee +former +formes +formic +formol +formyl +fornix +forrit +fortes +fortis +forums +forwhy +fossae +fossas +fosses +fossil +foster +fought +fouled +fouler +foully +founds +founts +fourth +foveae +foveal +foveas +fowled +fowler +foxier +foxily +foxing +foyers +fozier +fracas +fracti +fraena +frails +fraise +framed +framer +frames +francs +franks +frappe +frater +frauds +frayed +frazil +freaks +freaky +freely +freers +freest +freeze +french +frenum +frenzy +freres +fresco +fretty +friars +friary +fridge +friend +friers +frieze +friges +fright +frigid +frijol +frills +frilly +fringe +fringy +frisee +frises +frisks +frisky +frites +friths +fritts +frivol +frized +frizer +frizes +frizzy +frocks +froggy +frolic +fronds +fronts +frosts +frosty +froths +frothy +frouzy +frowns +frowst +frowsy +frowzy +frozen +frugal +fruits +fruity +frumps +frumpy +frusta +fryers +frying +frypan +fubbed +fucoid +fucose +fucous +fuddle +fudged +fudges +fueled +fueler +fugato +fugged +fugios +fugled +fugles +fugued +fugues +fuhrer +fulcra +fulfil +fulgid +fulham +fullam +fulled +fuller +fulmar +fumble +fumers +fumets +fumier +fuming +fumuli +funded +funder +fundus +funest +fungal +fungic +fungus +funked +funker +funkia +funned +funnel +funner +furane +furans +furfur +furies +furled +furler +furore +furors +furred +furrow +furzes +fusain +fusees +fusels +fusile +fusils +fusing +fusion +fussed +fusser +fusses +fustic +fusuma +futile +futons +future +futzed +futzes +fuzees +fuzils +fuzing +fuzzed +fuzzes +fylfot +fynbos +fyttes +gabbed +gabber +gabble +gabbro +gabies +gabion +gabled +gables +gaboon +gadded +gadder +gaddis +gadfly +gadget +gadids +gadoid +gaeing +gaffed +gaffer +gaffes +gagaku +gagers +gagged +gagger +gaggle +gaging +gagman +gagmen +gaiety +gaijin +gained +gainer +gainly +gainst +gaited +gaiter +galago +galahs +galaxy +galeae +galeas +galena +galere +galiot +galled +gallet +galley +gallic +gallon +gallop +gallus +galoot +galops +galore +galosh +galyac +galyak +gamays +gambas +gambes +gambia +gambir +gambit +gamble +gambol +gamely +gamers +gamest +gamete +gamier +gamily +gamine +gaming +gamins +gammas +gammed +gammer +gammon +gamuts +gander +ganefs +ganevs +ganged +ganger +gangly +gangue +ganjah +ganjas +gannet +ganofs +ganoid +gantry +gaoled +gaoler +gapers +gaping +gapped +garage +garbed +garble +garcon +gardai +garden +garget +gargle +garish +garlic +garner +garnet +garote +garred +garret +garron +garter +garths +garvey +gasbag +gascon +gashed +gasher +gashes +gasify +gasket +gaskin +gaslit +gasman +gasmen +gasped +gasper +gassed +gasser +gasses +gasted +gaster +gateau +gaters +gather +gating +gators +gauche +gaucho +gauged +gauger +gauges +gaults +gaumed +gauzes +gavage +gavels +gavial +gavots +gawked +gawker +gawped +gawper +gawsie +gayals +gazabo +gazars +gazebo +gazers +gazing +gazoos +gazump +geared +gecked +geckos +geegaw +geeing +geeked +geests +geezer +geisha +gelada +gelant +gelate +gelati +gelato +gelcap +gelded +gelder +gelees +gelled +gemmae +gemmed +gemote +gemots +gender +genera +genets +geneva +genial +genies +genips +genius +genoas +genome +genoms +genres +genros +gentes +gentil +gentle +gently +gentoo +gentry +geodes +geodic +geoids +gerahs +gerbil +gerent +german +germen +gerund +gestes +gestic +getter +getups +gewgaw +geyser +gharri +gharry +ghauts +ghazis +gherao +ghetto +ghibli +ghosts +ghosty +ghouls +ghylls +giants +giaour +gibbed +gibber +gibbet +gibbon +gibers +gibing +giblet +gibson +giddap +gieing +gifted +giftee +gigged +giggle +giggly +giglet +giglot +gigolo +gigots +gigues +gilded +gilder +gilled +giller +gillie +gimbal +gimels +gimlet +gimmal +gimmes +gimmie +gimped +gingal +ginger +gingko +ginkgo +ginned +ginner +gipons +gipped +gipper +girded +girder +girdle +girlie +girned +girons +girted +girths +gismos +gitano +gitted +gittin +givens +givers +giving +gizmos +glaces +glacis +glades +gladly +glaire +glairs +glairy +glaive +glamor +glance +glands +glared +glares +glassy +glazed +glazer +glazes +gleams +gleamy +gleans +glebae +glebes +gledes +gleeds +gleeks +gleets +gleety +glegly +gleyed +glibly +glided +glider +glides +gliffs +glimed +glimes +glints +glinty +glioma +glitch +glitzy +gloams +gloats +global +globby +globed +globes +globin +gloggs +glomus +glooms +gloomy +gloppy +gloria +glossa +glossy +glosts +glouts +gloved +glover +gloves +glowed +glower +glozed +glozes +glucan +gluers +gluier +gluily +gluing +glumes +glumly +glumpy +glunch +gluons +glutei +gluten +glutes +glycan +glycin +glycol +glycyl +glyphs +gnarls +gnarly +gnarrs +gnatty +gnawed +gnawer +gneiss +gnomes +gnomic +gnomon +gnoses +gnosis +goaded +goaled +goalie +goanna +goatee +gobang +gobans +gobbed +gobbet +gobble +gobies +goblet +goblin +goboes +gobony +godets +godown +godson +gofers +goffer +goggle +goggly +goglet +goings +golden +golder +golems +golfed +golfer +golosh +gombos +gomers +gomuti +gonefs +goners +gonged +goniff +gonifs +gonion +gonium +gonofs +gonoph +goodby +goodie +goodly +goofed +googly +googol +gooier +gooney +goonie +gooral +goosed +gooses +goosey +gopher +gorals +gorged +gorger +gorges +gorget +gorgon +gorhen +gorier +gorily +goring +gormed +gorses +gospel +gossan +gossip +gotcha +gothic +gotten +gouged +gouger +gouges +gourde +gourds +govern +gowans +gowany +gowned +goyish +graals +grabby +graben +graced +graces +graded +grader +grades +gradin +gradus +grafts +graham +grails +grains +grainy +gramas +gramma +gramme +grampa +gramps +grands +grange +granny +grants +granum +grapes +grapey +graphs +grappa +grasps +grassy +grated +grater +grates +gratin +gratis +graved +gravel +graven +graver +graves +gravid +grayed +grayer +grayly +grazed +grazer +grazes +grease +greasy +greats +greave +grebes +greeds +greedy +greens +greeny +greets +gregos +greige +gremmy +greyed +greyer +greyly +grided +grides +griefs +grieve +griffe +griffs +grifts +grigri +grille +grills +grilse +grimed +grimes +grimly +grinch +grinds +gringa +gringo +griots +griped +griper +gripes +gripey +grippe +grippy +grisly +grison +grists +griths +gritty +grivet +groans +groats +grocer +groggy +grooms +groove +groovy +groped +groper +gropes +grosze +groszy +grotto +grotty +grouch +ground +groups +grouse +grouts +grouty +groved +grovel +groves +grower +growls +growly +growth +groyne +grubby +grudge +gruels +gruffs +gruffy +grugru +grumes +grumps +grumpy +grunge +grungy +grunts +grutch +guacos +guaiac +guanay +guanin +guanos +guards +guavas +guenon +guests +guffaw +guggle +guglet +guided +guider +guides +guidon +guilds +guiled +guiles +guilts +guilty +guimpe +guinea +guiros +guised +guises +guitar +gulags +gulden +gulfed +gulled +gullet +gulley +gulped +gulper +gumbos +gummas +gummed +gummer +gundog +gunite +gunman +gunmen +gunned +gunnel +gunnen +gunner +gunsel +gurged +gurges +gurgle +gurnet +gurney +gushed +gusher +gushes +gusset +gussie +gusted +guttae +gutted +gutter +guttle +guying +guyots +guzzle +gweduc +gybing +gyozas +gypped +gypper +gypsum +gyrase +gyrate +gyrene +gyring +gyrons +gyrose +gyttja +gyving +habile +habits +haboob +haceks +hacked +hackee +hackie +hackle +hackly +hading +hadith +hadjee +hadjes +hadjis +hadron +haeing +haemal +haemic +haemin +haeres +haffet +haffit +hafted +hafter +hagbut +hagdon +hagged +haggis +haggle +haikus +hailed +hailer +haints +hairdo +haired +hajjes +hajjis +hakeem +hakims +halala +halals +halers +haleru +halest +halide +halids +haling +halite +hallah +hallal +hallel +halloa +halloo +hallos +hallot +hallow +hallux +halmas +haloed +haloes +haloid +halons +halted +halter +halutz +halvah +halvas +halved +halves +hamada +hamals +hamate +hamaul +hamlet +hammal +hammam +hammed +hammer +hamper +hamuli +hamzah +hamzas +hances +handax +handed +hander +handle +hangar +hanger +hangul +hangup +haniwa +hanked +hanker +hankie +hansas +hansel +hanses +hansom +hanted +hantle +haoles +happed +happen +hapten +haptic +harbor +harden +harder +hardly +hareem +harems +haring +harked +harken +harlot +harmed +harmer +harmin +harped +harper +harpin +harrow +hartal +hashed +hashes +haslet +hasped +hassel +hassle +hasted +hasten +hastes +hatbox +haters +hatful +hating +hatpin +hatred +hatted +hatter +haughs +hauled +hauler +haulms +haulmy +haunch +haunts +hausen +havens +havers +having +havior +havocs +hawala +hawing +hawked +hawker +hawkey +hawkie +hawser +hawses +hayers +haying +haymow +hazans +hazard +hazels +hazers +hazier +hazily +hazing +hazmat +hazzan +headed +header +healed +healer +health +heaped +heaper +hearer +hearse +hearth +hearts +hearty +heated +heater +heaths +heathy +heaume +heaved +heaven +heaver +heaves +heckle +hectic +hector +heddle +heders +hedged +hedger +hedges +heeded +heeder +heehaw +heeled +heeler +heezed +heezes +hefted +hefter +hegari +hegira +heifer +height +heiled +heinie +heired +heishi +heists +hejira +heliac +helios +helium +helled +heller +hellos +helmed +helmet +helots +helped +helper +helved +helves +hemins +hemmed +hemmer +hemoid +hempen +hempie +henbit +henges +henley +hennas +henrys +hented +hepcat +hepper +heptad +herald +herbal +herbed +herded +herder +herdic +hereat +hereby +herein +hereof +hereon +heresy +hereto +heriot +hermae +hermai +hermit +hernia +heroes +heroic +herons +herpes +hetero +hetman +heuchs +heughs +hewers +hewing +hexade +hexads +hexane +hexers +hexing +hexone +hexose +hexyls +heyday +heydey +hiatal +hiatus +hiccup +hickey +hickie +hidden +hiders +hiding +hieing +hiemal +higgle +higher +highly +highth +hights +hijabs +hijack +hijrah +hijras +hikers +hiking +hilled +hiller +hilloa +hillos +hilted +hinder +hinged +hinger +hinges +hinted +hinter +hipped +hipper +hippos +hirees +hirers +hiring +hirple +hirsel +hirsle +hispid +hissed +hisser +hisses +histed +hither +hitman +hitmen +hitter +hiving +hoagie +hoards +hoarse +hoaxed +hoaxer +hoaxes +hobbed +hobber +hobbit +hobble +hobnob +hoboed +hoboes +hocked +hocker +hockey +hodads +hodden +hoddin +hoeing +hogans +hogged +hogger +hogget +hognut +hogtie +hoicks +hoiden +hoised +hoises +hoists +hokier +hokily +hoking +hokums +holard +holden +holder +holdup +holier +holies +holily +holing +holism +holist +holked +hollas +holler +holloa +holloo +hollos +hollow +holmic +holpen +homage +hombre +homely +homers +homily +homing +hominy +hommos +honans +honcho +hondas +hondle +honers +honest +honied +honing +honked +honker +honors +honour +hooded +hoodoo +hooeys +hoofed +hoofer +hooked +hookey +hookup +hoolie +hooped +hooper +hoopla +hoopoe +hoopoo +hoorah +hooray +hootch +hooted +hooter +hooved +hoover +hooves +hopers +hoping +hopped +hopper +hopple +horahs +horary +horded +hordes +horned +hornet +horrid +horror +horsed +horses +horsey +horste +horsts +hosels +hosers +hoseys +hosier +hosing +hostas +hosted +hostel +hostly +hotbed +hotbox +hotdog +hotels +hotrod +hotted +hotter +hottie +houdah +hounds +houris +hourly +housed +housel +houser +houses +hovels +hovers +howdah +howdie +howffs +howked +howled +howler +howlet +hoyden +hoyles +hryvna +hubbly +hubbub +hubcap +hubris +huckle +huddle +huffed +hugely +hugest +hugged +hugger +huipil +hulked +hulled +huller +hulloa +hulloo +hullos +humane +humans +humate +humble +humbly +humbug +humeri +hummed +hummer +hummus +humors +humour +humped +humper +humphs +humvee +hunger +hungry +hunker +hunkey +hunkie +hunted +hunter +huppah +hurdle +hurled +hurler +hurley +hurrah +hurray +hursts +hurter +hurtle +hushed +hushes +husked +husker +hussar +hustle +hutted +hutzpa +huzzah +huzzas +hyaena +hyalin +hybrid +hybris +hydrae +hydras +hydria +hydric +hydrid +hydros +hyenas +hyenic +hyetal +hymens +hymnal +hymned +hyoids +hypers +hyphae +hyphal +hyphen +hyping +hypnic +hypoed +hysons +hyssop +iambic +iambus +iatric +ibexes +ibices +ibidem +ibises +icebox +icecap +iceman +icemen +ichors +icicle +iciest +icings +ickers +ickier +ickily +icones +iconic +ideals +ideate +idiocy +idioms +idiots +idlers +idlest +idling +idylls +iffier +igging +igloos +ignify +ignite +ignore +iguana +ihrams +ilexes +iliads +illest +illite +illude +illume +imaged +imager +images +imagos +imaret +imaums +imbalm +imbark +imbeds +imbibe +imbody +imbrue +imbued +imbues +imides +imidic +imines +immane +immesh +immies +immune +immure +impact +impair +impala +impale +impark +impart +impawn +impede +impels +impend +imphee +imping +impish +impled +impone +import +impose +impost +improv +impugn +impure +impute +inaner +inanes +inarch +inarms +inborn +inbred +incage +incant +incase +incent +incept +incest +inched +incher +inches +incise +incite +inclip +incogs +income +incony +incubi +incult +incurs +incuse +indaba +indeed +indene +indent +indict +indies +indign +indigo +indite +indium +indole +indols +indoor +indows +indris +induce +induct +indued +indues +indult +inerts +infall +infamy +infant +infare +infect +infers +infest +infill +infirm +inflow +influx +infold +inform +infuse +ingate +ingest +ingles +ingots +ingulf +inhale +inhaul +inhere +inhume +inions +inject +injure +injury +inkers +inkier +inking +inkjet +inkles +inkpot +inlace +inlaid +inland +inlays +inlets +inlier +inmate +inmesh +inmost +innage +innate +inners +inning +inpour +inputs +inroad +inruns +inrush +insane +inseam +insect +insert +insets +inside +insist +insole +insoul +inspan +instal +instar +instep +instil +insult +insure +intact +intake +intend +intent +intern +inters +intima +intime +intine +intomb +intone +intort +intown +intron +intros +intuit +inturn +inulin +inured +inures +inurns +invade +invars +invent +invert +invest +invite +invoke +inwall +inward +inwind +inwove +inwrap +iodate +iodide +iodids +iodine +iodins +iodise +iodism +iodize +iodous +iolite +ionics +ionise +ionium +ionize +ionone +ipecac +irades +irater +ireful +irenic +irides +iridic +irised +irises +iritic +iritis +irking +irokos +ironed +ironer +irones +ironic +irreal +irrupt +isatin +ischia +island +islets +isling +isobar +isogon +isohel +isolog +isomer +isopod +isseis +issued +issuer +issues +isthmi +istles +italic +itched +itches +itemed +iterum +itself +ixodid +ixoras +ixtles +izzard +jabbed +jabber +jabiru +jabots +jacals +jacana +jackal +jacked +jacker +jacket +jading +jadish +jaeger +jagers +jagged +jagger +jagras +jaguar +jailed +jailer +jailor +jalaps +jalops +jalopy +jambed +jambes +jammed +jammer +jangle +jangly +japans +japers +japery +japing +jarful +jargon +jarina +jarrah +jarred +jarvey +jasmin +jasper +jassid +jauked +jaunce +jaunts +jaunty +jauped +jawans +jawing +jaygee +jayvee +jazzbo +jazzed +jazzer +jazzes +jeaned +jebels +jeeing +jeeped +jeered +jeerer +jehads +jejuna +jejune +jelled +jellos +jennet +jerboa +jereed +jerids +jerked +jerrid +jersey +jessed +jesses +jested +jester +jesuit +jetlag +jetons +jetsam +jetsom +jetted +jetton +jetway +jewels +jezail +jibbed +jibber +jibers +jibing +jicama +jigged +jigger +jiggle +jiggly +jigsaw +jihads +jilted +jilter +jiminy +jimmie +jimper +jimply +jingal +jingko +jingle +jingly +jinked +jinker +jinnee +jinnis +jitney +jitter +jivers +jivier +jiving +jnanas +jobbed +jobber +jockey +jockos +jocose +jocund +jogged +jogger +joggle +johnny +joined +joiner +joints +joists +jojoba +jokers +jokier +jokily +joking +jolted +jolter +jorams +jordan +jorums +joseph +joshed +josher +joshes +josses +jostle +jotted +jotter +jouals +jouked +joules +jounce +jouncy +journo +jousts +jovial +jowars +jowing +jowled +joyful +joying +joyous +joypop +jubbah +jubhah +jubile +judder +judged +judger +judges +judoka +jugate +jugful +jugged +juggle +jugula +jugums +juiced +juicer +juices +jujube +juking +juleps +jumbal +jumble +jumbos +jumped +jumper +juncos +jungle +jungly +junior +junked +junker +junket +juntas +juntos +jupons +jurant +jurats +jurels +juried +juries +jurist +jurors +justed +juster +justle +justly +jutted +kababs +kabaka +kabala +kabars +kabaya +kabiki +kabobs +kabuki +kaffir +kafirs +kaftan +kahuna +kaiaks +kainit +kaiser +kakapo +kalams +kalian +kalifs +kaliph +kalium +kalmia +kalong +kalpac +kalpak +kalpas +kamala +kamiks +kamsin +kanaka +kanban +kanjis +kantar +kanzus +kaolin +kaonic +kapoks +kappas +kaputt +karate +karats +karmas +karmic +karoos +kaross +karroo +karsts +kasbah +kashas +kasher +kation +kauris +kavass +kayaks +kayles +kayoed +kayoes +kazoos +kebabs +kebars +kebbie +keblah +kebobs +kecked +keckle +keddah +kedged +kedges +keeked +keeled +keened +keener +keenly +keeper +keeves +kefirs +kegged +kegger +kegler +keleps +kelims +keloid +kelped +kelpie +kelson +kelter +kelvin +kenafs +kendos +kenned +kennel +kentes +kepped +keppen +kerbed +kerfed +kermes +kermis +kerned +kernel +kernes +kerria +kersey +ketene +ketols +ketone +ketose +kettle +kevels +kevils +kewpie +keying +keypad +keypal +keyset +keyway +khadis +khakis +khalif +khaphs +khazen +khedah +khedas +kheths +khoums +kiangs +kiaugh +kibbeh +kibbes +kibbis +kibble +kibeis +kibitz +kiblah +kiblas +kibosh +kicked +kicker +kickup +kidded +kidder +kiddie +kiddos +kidnap +kidney +kidvid +kilims +killed +killer +killie +kilned +kilted +kilter +kiltie +kimchi +kimono +kinara +kinase +kinder +kindle +kindly +kinema +kinged +kingly +kinins +kinked +kiosks +kipped +kippen +kipper +kirned +kirsch +kirtle +kishka +kishke +kismat +kismet +kissed +kisser +kisses +kitbag +kiters +kithed +kithes +kiting +kitsch +kitted +kittel +kitten +kittle +klatch +klaxon +klepht +klepto +klicks +klongs +kloofs +kludge +kludgy +kluged +kluges +klutzy +knacks +knarry +knaurs +knaves +knawel +knawes +kneads +kneels +knells +knifed +knifer +knifes +knight +knives +knobby +knocks +knolls +knolly +knosps +knotty +knouts +knower +knowns +knubby +knurls +knurly +koalas +kobold +koines +kolhoz +kolkoz +kombus +konked +koodoo +kookie +kopeck +kopeks +kopjes +koppas +koppie +korats +kormas +koruna +koruny +kosher +kotows +koumis +koumys +kouroi +kouros +kousso +kowtow +kraals +krafts +kraits +kraken +krater +krauts +kreeps +krewes +krills +krises +kronen +kroner +kronor +kronur +krooni +kroons +krubis +krubut +kuchen +kudzus +kugels +kukris +kulaki +kulaks +kultur +kumiss +kummel +kurgan +kurtas +kussos +kuvasz +kvases +kvells +kvetch +kwacha +kwanza +kyacks +kybosh +kyries +kythed +kythes +laager +labara +labels +labile +labium +labors +labour +labret +labrum +lacers +laches +lacier +lacily +lacing +lacked +lacker +lackey +lactam +lactic +lacuna +lacune +ladder +laddie +ladens +laders +ladies +lading +ladino +ladled +ladler +ladles +ladron +lagans +lagend +lagers +lagged +lagger +lagoon +laguna +lagune +lahars +laical +laichs +laighs +lairds +laired +lakers +lakier +laking +lallan +lalled +lambda +lambed +lamber +lambie +lamedh +lameds +lamely +lament +lamest +lamiae +lamias +lamina +laming +lammed +lampad +lampas +lamped +lanais +lanate +lanced +lancer +lances +lancet +landau +landed +lander +lanely +langue +langur +lanker +lankly +lanner +lanose +lanugo +laogai +lapdog +lapels +lapful +lapins +lapped +lapper +lappet +lapsed +lapser +lapses +lapsus +laptop +larded +larder +lardon +larees +larger +larges +largos +lariat +larine +larked +larker +larrup +larums +larvae +larval +larvas +larynx +lascar +lasers +lashed +lasher +lashes +lasing +lasses +lassie +lassis +lassos +lasted +laster +lastly +lateen +lately +latens +latent +latest +lathed +lather +lathes +lathis +latigo +latina +latino +latish +latkes +latria +latten +latter +lattes +lattin +lauans +lauded +lauder +laughs +launce +launch +laurae +lauras +laurel +lavabo +lavage +lavash +laveer +lavers +laving +lavish +lawful +lawine +lawing +lawman +lawmen +lawyer +laxest +laxity +layers +laying +layins +layman +laymen +layoff +layout +layups +lazars +lazied +lazier +lazies +lazily +lazing +lazuli +leachy +leaded +leaden +leader +leafed +league +leaked +leaker +leally +lealty +leaned +leaner +leanly +leaped +leaper +learns +learnt +leased +leaser +leases +leasts +leaved +leaven +leaver +leaves +lebens +leched +lecher +leches +lechwe +lectin +lector +ledger +ledges +leered +leeway +lefter +legacy +legals +legate +legato +legend +legers +legged +leggin +legion +legist +legits +legman +legmen +legong +legume +lehuas +lekked +lekvar +lemans +lemmas +lemons +lemony +lemurs +lender +length +lenite +lenity +lensed +lenses +lenten +lentic +lentil +lentos +leones +lepers +leptin +lepton +lesion +lessee +lessen +lesser +lesson +lessor +lethal +lethes +letted +letter +letups +leucin +leudes +leukon +levant +leveed +levees +levels +levers +levied +levier +levies +levins +levity +lewder +lewdly +lexeme +lexica +lezzes +lezzie +liable +liaise +lianas +lianes +liangs +liards +libber +libels +libers +libido +liblab +librae +libras +lichee +lichen +liches +lichis +lichts +licked +licker +lictor +lidars +lidded +lieder +liefer +liefly +lieges +lienal +lierne +liever +lifers +lifted +lifter +ligand +ligans +ligase +ligate +ligers +lights +lignan +lignin +ligula +ligule +ligure +likely +likens +likers +likest +liking +likuta +lilacs +lilied +lilies +lilted +limans +limbas +limbed +limber +limbic +limbos +limbus +limens +limeys +limier +limina +liming +limits +limmer +limned +limner +limnic +limpas +limped +limper +limpet +limpid +limply +limpsy +limuli +linacs +linage +linden +lineal +linear +linens +lineny +liners +lineup +lingam +lingas +linger +lingua +linier +lining +linins +linked +linker +linkup +linnet +linsey +linted +lintel +linter +lintol +linums +lipase +lipide +lipids +lipins +lipoid +lipoma +lipped +lippen +lipper +liquid +liquor +liroth +lisles +lisped +lisper +lissom +listed +listee +listel +listen +lister +litany +litchi +liters +lither +lithia +lithic +lithos +litmus +litres +litten +litter +little +lively +livens +livers +livery +livest +livier +living +livres +livyer +lizard +llamas +llanos +loaded +loader +loafed +loafer +loamed +loaned +loaner +loathe +loaves +lobate +lobbed +lobber +lobule +locale +locals +locate +lochan +lochia +locked +locker +locket +lockup +locoed +locoes +locule +loculi +locums +locust +lodens +lodged +lodger +lodges +lofted +lofter +logans +logged +logger +loggia +loggie +logics +logier +logily +logins +logion +logjam +logons +logway +loided +loiter +lolled +loller +lollop +lomein +loment +lonely +loners +longan +longed +longer +longes +longly +looeys +loofah +loofas +looies +looing +looked +looker +lookup +loomed +looped +looper +loosed +loosen +looser +looses +looted +looter +lopers +loping +lopped +lopper +loquat +lorans +lorded +lordly +loreal +lorica +lories +losels +losers +losing +losses +lotahs +lotion +lotted +lotter +lottes +lottos +louche +louden +louder +loudly +loughs +louies +loumas +lounge +loungy +louped +loupen +loupes +loured +loused +louses +louted +louver +louvre +lovage +lovats +lovely +lovers +loving +lowboy +lowers +lowery +lowest +lowing +lowish +loxing +lubber +lubing +lubric +lucent +lucern +lucite +lucked +luckie +lucres +luetic +luffas +luffed +lugers +lugged +lugger +luggie +luging +lulled +luller +lumbar +lumber +lumens +lumina +lummox +lumped +lumpen +lumper +lunacy +lunars +lunate +lunets +lungan +lunged +lungee +lunger +lunges +lungis +lungyi +lunier +lunies +lunker +lunted +lunula +lunule +lupine +lupins +lupous +lurdan +lurers +luring +lurked +lurker +lushed +lusher +lushes +lushly +lusted +luster +lustra +lustre +luteal +lutein +luteum +luting +lutist +lutzes +luxate +luxury +lyases +lycees +lyceum +lychee +lyches +lycras +lyings +lymphs +lynxes +lyrate +lyrics +lyrism +lyrist +lysate +lysine +lysing +lysins +lyssas +lyttae +lyttas +macaco +macaws +macers +maches +machos +macing +mackle +macled +macles +macons +macron +macros +macula +macule +madame +madams +madcap +madded +madden +madder +madras +madres +madtom +maduro +maenad +maffia +mafias +maftir +maggot +magian +magics +magilp +maglev +magmas +magnet +magnum +magots +magpie +maguey +mahoes +mahout +mahzor +maiden +maigre +maihem +mailed +mailer +mailes +maills +maimed +maimer +mainly +maists +maizes +majors +makars +makers +makeup +making +makuta +malady +malars +malate +malfed +malgre +malice +malign +maline +malkin +malled +mallee +mallei +mallet +mallow +maloti +malted +maltha +maltol +mambas +mambos +mameys +mamies +mamluk +mammae +mammal +mammas +mammee +mammer +mammet +mammey +mammie +mammon +mamzer +manage +manana +manats +manche +manege +manful +mangas +mangel +manger +manges +mangey +mangle +mangos +maniac +manias +manics +manila +manioc +manito +manitu +mannan +mannas +manned +manner +manors +manque +manses +mantas +mantel +mantes +mantic +mantid +mantis +mantle +mantra +mantua +manual +manure +maples +mapped +mapper +maquis +maraca +maraud +marble +marbly +marcel +margay +marges +margin +marina +marine +marish +markas +marked +marker +market +markka +markup +marled +marlin +marmot +maroon +marque +marram +marred +marrer +marron +marrow +marses +marshy +marted +marten +martin +martyr +marvel +masala +mascon +mascot +masers +mashed +masher +mashes +mashie +masjid +masked +maskeg +masker +masons +masque +massif +masted +master +mastic +mastix +maters +mateys +matier +mating +matins +matres +matrix +matron +matsah +matted +matter +mattes +mattin +mature +matzah +matzas +matzoh +matzos +matzot +mauger +maugre +mauled +mauler +maumet +maunds +maundy +mauves +mavens +mavies +mavins +mawing +maxima +maxims +maxing +maxixe +maybes +mayday +mayest +mayfly +mayhap +mayhem +maying +mayors +maypop +mayvin +mazard +mazers +mazier +mazily +mazing +mazuma +mbiras +meadow +meager +meagre +mealie +meaner +meanie +meanly +measle +measly +meatal +meated +meatus +meccas +medaka +medals +meddle +medfly +mediad +mediae +medial +median +medias +medick +medico +medics +medina +medium +medius +medlar +medley +medusa +meeker +meekly +meeter +meetly +megara +megilp +megohm +megrim +mehndi +meikle +meinie +melded +melder +melees +melena +melled +mellow +melody +meloid +melons +melted +melter +melton +member +memoir +memory +menace +menads +menage +mended +mender +menhir +menial +meninx +mensae +mensal +mensas +mensch +mensed +menses +mental +mentee +mentor +mentum +menudo +meoued +meowed +mercer +merces +merdes +merely +merest +merged +mergee +merger +merges +merino +merits +merles +merlin +merlon +merlot +merman +mermen +mescal +meshed +meshes +mesial +mesian +mesnes +mesons +messan +messed +messes +mestee +metage +metals +metate +meteor +metepa +meters +method +methyl +metier +meting +metols +metope +metred +metres +metric +metros +mettle +metump +mewing +mewled +mewler +mezcal +mezuza +mezzos +miaous +miaows +miasma +miasms +miauls +micell +miched +miches +mickey +mickle +micron +micros +midair +midcap +midday +midden +middle +midges +midget +midgut +midleg +midrib +midsts +midway +miffed +miggle +mights +mighty +mignon +mihrab +mikado +miking +mikron +mikvah +mikveh +mikvos +mikvot +miladi +milady +milage +milded +milden +milder +mildew +mildly +milers +milieu +milium +milked +milker +milled +miller +milles +millet +milneb +milord +milpas +milted +milter +mimbar +mimeos +mimers +mimics +miming +mimosa +minced +minder +miners +mingle +minify +minima +minims +mining +minion +minish +minium +minkes +minnow +minors +minted +minter +minuet +minute +minxes +minyan +mioses +miosis +miotic +mirage +mirier +miring +mirins +mirker +mirror +mirths +mirzas +misact +misadd +misaim +misate +miscue +miscut +misdid +miseat +misers +misery +misfed +misfit +mishap +miskal +mislay +misled +mislie +mislit +mismet +mispen +missal +missay +missed +missel +misses +misset +missis +missus +misted +mister +misuse +miters +mither +mitier +mitral +mitred +mitres +mitten +mixers +mixing +mixups +mizens +mizuna +mizzen +mizzle +mizzly +moaned +moaner +moated +mobbed +mobber +mobcap +mobile +mobled +mochas +mocked +mocker +mockup +modals +models +modems +modern +modest +modica +modify +modish +module +moduli +modulo +mogged +moggie +moghul +moguls +mohair +mohawk +mohels +mohurs +moiety +moiled +moiler +moirai +moires +mojoes +molars +molded +molder +molies +moline +mollah +mollie +moloch +molted +molten +molter +moment +mommas +momser +momzer +monads +mondes +mondos +moneys +monger +mongoe +mongol +mongos +mongst +monied +monies +monish +monism +monist +monkey +monody +montes +months +mooing +moolah +moolas +mooley +mooned +mooner +moored +mooted +mooter +mopeds +mopers +mopery +mopier +moping +mopish +mopoke +mopped +mopper +moppet +morale +morals +morays +morbid +moreen +morels +morgan +morgen +morgue +morion +morose +morpho +morphs +morris +morros +morrow +morsel +mortal +mortar +morula +mosaic +moseys +moshav +moshed +mosher +moshes +mosque +mossed +mosser +mosses +mostly +motels +motets +mother +motifs +motile +motion +motive +motley +motmot +motors +mottes +mottle +mottos +moujik +moulds +mouldy +moulin +moults +mounds +mounts +mourns +moused +mouser +mouses +mousey +mousse +mouths +mouthy +mouton +movers +movies +moving +mowers +mowing +moxies +muches +muchly +mucins +mucked +mucker +muckle +mucluc +mucoid +mucors +mucosa +mucose +mucous +mudbug +mudcap +mudcat +mudded +mudder +muddle +muddly +mudhen +mudras +muesli +muffed +muffin +muffle +muftis +mugful +muggar +mugged +muggee +mugger +muggur +mughal +mujiks +mukluk +muktuk +mulcts +muleta +muleys +muling +mulish +mullah +mullas +mulled +mullen +muller +mullet +mulley +mumble +mumbly +mummed +mummer +mumped +mumper +mungos +muntin +muonic +murals +murder +murein +murids +murine +muring +murker +murkly +murmur +murphy +murras +murres +murrey +murrha +muscae +muscat +muscid +muscle +muscly +musers +museum +mushed +musher +mushes +musick +musics +musing +musjid +muskeg +musket +muskie +muskit +muskox +muslin +mussed +mussel +musses +musted +mustee +muster +musths +mutant +mutase +mutate +mutely +mutest +mutine +muting +mutiny +mutism +mutons +mutter +mutton +mutual +mutuel +mutule +muumuu +muzhik +muzjik +muzzle +myases +myasis +mycele +myelin +mylars +mynahs +myomas +myopes +myopia +myopic +myoses +myosin +myosis +myotic +myriad +myrica +myrrhs +myrtle +myself +mysids +mysost +mystic +mythic +mythoi +mythos +myxoid +myxoma +nabbed +nabber +nabobs +nachas +naches +nachos +nacred +nacres +nadirs +naevus +naffed +nagana +nagged +nagger +naiads +nailed +nailer +nairas +nairus +naiver +naives +nakfas +naleds +namely +namers +naming +nances +nandin +nanism +nankin +nannie +napalm +napery +napkin +nappas +napped +napper +nappes +nappie +narcos +narial +narine +narked +narrow +narwal +nasals +nasial +nasion +nastic +natant +nation +native +natron +natter +nature +naught +nausea +nautch +navaid +navars +navels +navies +nawabs +naysay +nazify +nearby +neared +nearer +nearly +neaten +neater +neatly +nebula +nebule +nebuly +necked +necker +nectar +needed +needer +needle +negate +neighs +nekton +nellie +nelson +neocon +neoned +nepeta +nephew +nereid +nereis +neroli +nerols +nerved +nerves +nesses +nested +nester +nestle +nestor +nether +netops +netted +netter +nettle +nettly +neumes +neumic +neural +neuron +neuter +nevoid +newbie +newels +newest +newies +newish +newsie +newton +niacin +nibbed +nibble +nicads +nicely +nicest +nicety +niched +niches +nicked +nickel +nicker +nickle +nicols +nidate +nidget +nidify +niding +nieces +nielli +niello +nieves +niffer +niggle +niggly +nighed +nigher +nights +nighty +nihils +nilgai +nilgau +nilled +nimble +nimbly +nimbus +nimmed +nimrod +ninety +ninjas +ninons +ninths +niobic +nipped +nipper +niseis +niters +nitery +nitons +nitres +nitric +nitrid +nitril +nitros +nitwit +nixies +nixing +nizams +nobble +nobler +nobles +nobody +nocent +nocked +nodded +nodder +noddle +nodose +nodous +nodule +noesis +noetic +nogged +noggin +noised +noises +nomads +nomina +nomism +nonage +nonart +nonces +noncom +nonego +nonets +nonfan +nonfat +nongay +nonman +nonmen +nonpar +nontax +nonuse +nonwar +nonyls +noodge +noodle +noogie +nookie +noosed +nooser +nooses +nopals +nordic +norias +norite +normal +normed +norths +noshed +nosher +noshes +nosier +nosily +nosing +nostoc +notary +notate +noters +nother +notice +notify +noting +notion +nougat +nought +nounal +nouses +novels +novena +novice +noways +nowise +noyade +nozzle +nuance +nubbin +nubble +nubbly +nubias +nubile +nubuck +nuchae +nuchal +nuclei +nudely +nudest +nudged +nudger +nudges +nudies +nudism +nudist +nudity +nudnik +nugget +nuking +nullah +nulled +numbat +numbed +number +numbly +numina +nuncio +nuncle +nurled +nursed +nurser +nurses +nutant +nutate +nutlet +nutmeg +nutria +nuzzle +nyalas +oafish +oakier +oakums +oaring +oaters +obeahs +obelia +obelus +obento +obeyed +obeyer +obiism +object +objets +oblast +oblate +oblige +oblong +oboist +oboles +obolus +obsess +obtain +obtect +obtest +obtund +obtuse +obvert +occult +occupy +occurs +oceans +ocelli +ocelot +ochers +ochery +ochone +ochrea +ochred +ochres +ocicat +ockers +ocreae +octads +octane +octans +octant +octave +octavo +octets +octopi +octroi +octyls +ocular +oculus +oddest +oddish +oddity +odeons +odeums +odious +odists +odiums +odored +odours +odyles +oedema +oeuvre +offals +offcut +offend +offers +office +offing +offish +offkey +offset +oftest +ogdoad +oghams +ogival +ogives +oglers +ogling +ogress +ogrish +ogrism +ohmage +oidium +oilcan +oilcup +oilers +oilier +oilily +oiling +oilman +oilmen +oilway +oinked +okapis +okayed +oldest +oldies +oldish +oleate +olefin +oleine +oleins +oleums +olingo +olives +omasum +ombers +ombres +omegas +omelet +omened +omenta +onager +onagri +onions +oniony +onlays +online +onload +onrush +onsets +onside +onuses +onward +onyxes +oocyst +oocyte +oodles +oogamy +oogeny +oohing +oolite +oolith +oology +oolong +oomiac +oomiak +oompah +oomphs +oorali +ootids +oozier +oozily +oozing +opaque +opened +opener +openly +operas +operon +ophite +opiate +opined +opines +opioid +opiums +oppose +oppugn +opsins +optics +optima +optime +opting +option +opuses +orache +oracle +orally +orange +orangs +orangy +orated +orates +orator +orbier +orbing +orbits +orcein +orchid +orchil +orchis +orcins +ordain +ordeal +orders +ordure +oreads +oreide +orfray +organs +orgone +oribis +oriels +orient +origan +origin +oriole +orisha +orison +orlons +orlops +ormers +ormolu +ornate +ornery +oroide +orphan +orphic +orpine +orpins +orrery +orrice +oryxes +oscine +oscula +oscule +osetra +osiers +osmics +osmium +osmole +osmols +osmose +osmous +osmund +osprey +ossein +ossify +osteal +ostium +ostler +ostomy +otalgy +others +otiose +otitic +otitis +ottars +ottava +otters +ouched +ouches +oughts +ounces +ouphes +ourang +ourari +ourebi +ousels +ousted +ouster +outact +outadd +outage +outask +outate +outbeg +outbid +outbox +outbuy +outbye +outcry +outdid +outeat +outers +outfit +outfly +outfox +outgas +outgun +outhit +outing +outjut +outlaw +outlay +outled +outlet +outlie +outman +output +outran +outrig +outrow +outrun +outsat +outsaw +outsay +outsee +outset +outsin +outsit +outvie +outwar +outwit +ouzels +ovally +overdo +overed +overly +ovibos +ovines +ovisac +ovoids +ovolos +ovonic +ovular +ovules +owlets +owlish +owners +owning +oxalic +oxalis +oxbows +oxcart +oxeyes +oxford +oxides +oxidic +oximes +oxlike +oxlips +oxtail +oxters +oxygen +oyezes +oyster +ozalid +ozones +ozonic +pablum +pacers +pachas +pacier +pacify +pacing +packed +packer +packet +packly +padauk +padded +padder +paddle +padles +padnag +padouk +padres +paeans +paella +paeons +paesan +pagans +pagers +paging +pagoda +pagods +paiked +painch +pained +paints +painty +paired +paisan +paisas +pajama +pakeha +pakora +palace +palais +palapa +palate +paleae +paleal +palely +palest +palets +palier +paling +palish +palled +pallet +pallia +pallid +pallor +palmar +palmed +palmer +palpal +palped +palpus +palter +paltry +pampas +pamper +panada +panama +pandas +pander +pandit +panels +panfry +panful +pangas +panged +pangen +panics +panier +panini +panino +panned +panner +pannes +panted +pantie +pantos +pantry +panzer +papacy +papain +papaws +papaya +papers +papery +papism +papist +pappus +papula +papule +papyri +parade +paramo +parang +paraph +parcel +pardah +pardee +pardie +pardon +parent +pareos +parers +pareus +pareve +parged +parges +parget +pargos +pariah +parian +paries +paring +parish +parity +parkas +parked +parker +parlay +parled +parles +parley +parlor +parody +parole +parols +parous +parral +parred +parrel +parrot +parsec +parsed +parser +parses +parson +partan +parted +partly +parton +parura +parure +parvis +parvos +pascal +paseos +pashas +pashed +pashes +pastas +pasted +pastel +paster +pastes +pastie +pastil +pastis +pastor +pastry +pataca +patchy +patens +patent +paters +pathos +patina +patine +patins +patios +patois +patrol +patron +patted +pattee +patten +patter +pattie +patzer +paulin +paunch +pauper +pausal +paused +pauser +pauses +pavane +pavans +paveed +pavers +paving +pavins +pavior +pavise +pawers +pawing +pawned +pawnee +pawner +pawnor +pawpaw +paxwax +payday +payees +payers +paying +paynim +payoff +payola +payors +payout +pazazz +peaced +peaces +peachy +peages +peahen +peaked +pealed +peanut +pearls +pearly +peasen +peases +peavey +pebble +pebbly +pecans +pechan +peched +pecked +pecten +pectic +pectin +pedalo +pedals +pedant +pedate +peddle +pedlar +pedler +pedros +peeing +peeked +peeled +peeler +peened +peered +peerie +pegged +peined +peised +peises +pekans +pekins +pekoes +pelage +pelite +pellet +pelmet +pelota +pelted +pelter +peltry +pelves +pelvic +pelvis +penang +pencel +pencil +pended +pengos +penman +penmen +pennae +penned +penner +pennon +pensee +pensil +pentad +pentyl +penult +penury +peones +people +pepino +peplos +peplum +peplus +pepped +pepper +pepsin +peptic +peptid +perdie +perdue +perdus +pereia +pereon +perils +period +perish +periti +perked +permed +permit +pernio +pernod +peroxy +perron +perses +person +perter +pertly +peruke +peruse +pesade +peseta +pesewa +pester +pestle +pestos +petals +petard +peters +petite +petnap +petrel +petrol +petsai +petted +petter +pettle +pewees +pewits +pewter +phages +pharos +phased +phases +phasic +phasis +phatic +phenix +phenol +phenom +phenyl +phials +phizes +phlegm +phloem +phobia +phobic +phoebe +phonal +phoned +phones +phoney +phonic +phonon +phonos +phooey +photic +photog +photon +photos +phrase +phreak +phylae +phylar +phylic +phyllo +phylon +phylum +physed +physes +physic +physis +phytin +phytol +phyton +piaffe +pianic +pianos +piazza +piazze +pibals +picara +picaro +pickax +picked +picker +picket +pickle +pickup +picnic +picots +picric +piculs +piddle +piddly +pidgin +pieced +piecer +pieces +pieing +pierce +pietas +piffle +pigeon +pigged +piggie +piggin +piglet +pignus +pignut +pigout +pigpen +pigsty +pikake +pikers +piking +pilaff +pilafs +pilaus +pilaws +pileum +pileup +pileus +pilfer +piling +pillar +pilled +pillow +pilose +pilots +pilous +pilule +pimped +pimple +pimply +pinang +pinata +pincer +pinder +pineal +pinene +pinery +pineta +pinged +pinger +pingos +pinier +pining +pinion +pinite +pinked +pinken +pinker +pinkey +pinkie +pinkly +pinkos +pinnae +pinnal +pinnas +pinned +pinner +pinole +pinons +pinots +pintas +pintle +pintos +pinups +pinyin +pinyon +piolet +pionic +pipage +pipals +pipers +pipets +pipier +piping +pipits +pipkin +pipped +pippin +piqued +piques +piquet +piracy +pirana +pirate +piraya +pirogi +piscos +pistil +pistol +piston +pistou +pitaya +pitchy +pithed +pitied +pitier +pities +pitman +pitmen +pitons +pitsaw +pittas +pitted +pivots +pixels +pixies +pizazz +pizzas +pizzaz +pizzle +placed +placer +places +placet +placid +placks +plagal +plages +plague +plaguy +plaice +plaids +plains +plaint +plaits +planar +planch +planed +planer +planes +planet +planks +plants +plaque +plashy +plasma +plasms +platan +plated +platen +plater +plates +platys +playas +played +player +plazas +pleach +pleads +please +pleats +plebes +pledge +pleiad +plench +plenty +plenum +pleons +pleura +plexal +plexes +plexor +plexus +pliant +plicae +plical +pliers +plight +plinks +plinth +plisky +plisse +ploidy +plonks +plotty +plough +plover +plowed +plower +ployed +plucks +plucky +plumbs +plumed +plumes +plummy +plumps +plunge +plunks +plunky +plural +pluses +plushy +plutei +pluton +plyers +plying +pneuma +poachy +poboys +pocked +pocket +podded +podite +podium +podsol +podzol +poetic +poetry +pogeys +pogies +pogrom +poilus +poinds +pointe +points +pointy +poised +poiser +poises +poisha +poison +pokers +pokeys +pokier +pokies +pokily +poking +polars +polder +poleax +poleis +polers +poleyn +police +policy +polies +poling +polios +polish +polite +polity +polkas +polled +pollee +pollen +poller +pollex +polyol +polypi +polyps +pomace +pomade +pomelo +pommee +pommel +pommie +pompom +pompon +ponced +ponces +poncho +ponded +ponder +ponent +ponged +pongee +pongid +ponied +ponies +pontes +pontil +ponton +popery +popgun +popish +poplar +poplin +poppas +popped +popper +poppet +popple +popsie +poring +porism +porked +porker +pornos +porose +porous +portal +ported +porter +portly +posada +posers +poseur +posher +poshly +posies +posing +posits +posole +posses +posset +possum +postal +posted +poster +postie +postin +postop +potage +potash +potato +potboy +poteen +potent +potful +pother +pothos +potion +potman +potmen +potpie +potsie +potted +potter +pottle +pottos +potzer +pouchy +poufed +pouffe +pouffs +pouffy +poults +pounce +pounds +poured +pourer +pouted +pouter +powder +powers +powter +powwow +poxier +poxing +poyous +pozole +praams +prahus +praise +prajna +prance +prangs +pranks +prases +prated +prater +prates +prawns +praxes +praxis +prayed +prayer +preach +preact +preamp +prearm +prebid +prebuy +precis +precut +predry +preens +prefab +prefer +prefix +prelaw +prelim +preman +premed +premen +premie +premix +preops +prepay +preppy +preset +presto +prests +pretax +pretor +pretty +prevue +prewar +prexes +preyed +preyer +prezes +priapi +priced +pricer +prices +pricey +prided +prides +priers +priest +prills +primal +primas +primed +primer +primes +primly +primos +primps +primus +prince +prinks +prints +prions +priors +priory +prised +prises +prisms +prison +prissy +privet +prized +prizer +prizes +probed +prober +probes +probit +proems +profit +progun +projet +prolan +proleg +proles +prolix +prolog +promos +prompt +prongs +pronto +proofs +propel +proper +propyl +prosed +proser +proses +prosit +prosos +protea +protei +proton +protyl +proved +proven +prover +proves +prowar +prower +prowls +prudes +pruned +pruner +prunes +prunus +prutah +prutot +pryers +prying +psalms +pseudo +pseuds +pshaws +psocid +psyche +psycho +psychs +psylla +psyops +psywar +pterin +ptisan +ptooey +ptoses +ptosis +ptotic +public +pucker +puddle +puddly +pueblo +puffed +puffer +puffin +pugged +puggry +pugree +puisne +pujahs +puking +pulers +puling +pulled +puller +pullet +pulley +pullup +pulpal +pulped +pulper +pulpit +pulque +pulsar +pulsed +pulser +pulses +pumelo +pumice +pummel +pumped +pumper +punchy +pundit +pungle +punier +punily +punish +punjis +punkah +punkas +punker +punkey +punkie +punkin +punned +punner +punnet +punted +punter +puntos +pupate +pupils +pupped +puppet +purana +purdah +purdas +pureed +purees +purely +purest +purfle +purged +purger +purges +purify +purine +purins +purism +purist +purity +purled +purlin +purple +purply +purred +pursed +purser +purses +pursue +purvey +pushed +pushes +pushup +pusley +putlog +putoff +putons +putout +putrid +putsch +putted +puttee +putter +puttie +putzed +putzes +puzzle +pyemia +pyemic +pyjama +pyknic +pylons +pylori +pyoses +pyosis +pyrans +pyrene +pyrite +pyrola +pyrone +pyrope +pyrrol +python +pyuria +pyxies +qabala +qanats +qindar +qintar +qiviut +quacks +quacky +quaere +quaffs +quagga +quaggy +quahog +quaich +quaigh +quails +quaint +quaked +quaker +quakes +qualia +qualms +qualmy +quango +quanta +quants +quarks +quarry +quarte +quarto +quarts +quartz +quasar +quatre +quaver +qubits +qubyte +queans +queasy +queazy +queens +queers +quelea +quells +quench +querns +quests +queued +queuer +queues +quezal +quiche +quicks +quiets +quiffs +quills +quilts +quince +quinic +quinin +quinoa +quinol +quinsy +quinta +quinte +quints +quippu +quippy +quipus +quired +quires +quirks +quirky +quirts +quitch +quiver +quohog +quoins +quoits +quokka +quolls +quorum +quotas +quoted +quoter +quotes +quotha +qurush +qwerty +rabato +rabats +rabbet +rabbin +rabbis +rabbit +rabble +rabies +raceme +racers +rachet +rachis +racier +racily +racing +racked +racker +racket +rackle +racons +racoon +radars +radded +raddle +radial +radian +radios +radish +radium +radius +radome +radons +radula +raffia +raffle +rafted +rafter +ragbag +ragees +ragged +raggee +raggle +raging +raglan +ragman +ragmen +ragout +ragtag +ragtop +raided +raider +railed +railer +rained +raised +raiser +raises +raisin +raitas +rajahs +rakees +rakers +raking +rakish +rallye +ralphs +ramada +ramate +rambla +ramble +ramees +ramets +ramies +ramify +ramjet +rammed +rammer +ramona +ramose +ramous +ramped +ramrod +ramson +ramtil +rances +rancho +rancid +rancor +randan +random +ranees +ranged +ranger +ranges +ranids +ranked +ranker +rankle +rankly +ransom +ranted +ranter +ranula +rarefy +rarely +rarest +rarify +raring +rarity +rascal +rasers +rasher +rashes +rashly +rasing +rasped +rasper +rassle +raster +rasure +ratals +ratans +ratany +ratbag +ratels +raters +rather +ratify +ratine +rating +ration +ratios +ratite +ratlin +ratoon +rattan +ratted +ratten +ratter +rattle +rattly +ratton +raunch +ravage +ravels +ravens +ravers +ravine +raving +ravins +ravish +rawest +rawins +rawish +raxing +rayahs +raying +rayons +razeed +razees +razers +razing +razors +razzed +razzes +reacts +readds +reader +reagin +realer +reales +realia +really +realms +realty +reamed +reamer +reaped +reaper +reared +rearer +rearms +reason +reatas +reaved +reaver +reaves +reavow +rebait +rebars +rebate +rebato +rebbes +rebeck +rebecs +rebels +rebids +rebill +rebind +rebody +reboil +rebook +reboot +rebops +rebore +reborn +rebozo +rebred +rebuff +rebuke +rebury +rebuts +rebuys +recall +recane +recant +recaps +recast +recces +recede +recent +recept +recess +rechew +recipe +recite +recits +recked +reckon +reclad +recoal +recoat +recode +recoil +recoin +recomb +recons +recook +recopy +record +recork +recoup +rectal +rector +rectos +recurs +recuse +recuts +redact +redans +redate +redbay +redbud +redbug +redcap +redded +redden +redder +reddle +redear +redeem +redefy +redeny +redeye +redfin +rediae +redial +redias +reding +redips +redipt +redleg +redock +redoes +redone +redons +redout +redowa +redraw +redrew +redtop +redubs +reduce +redyed +redyes +reearn +reecho +reechy +reeded +reedit +reefed +reeled +reeler +reemit +reests +reeved +reeves +reface +refall +refect +refeed +refeel +refell +refels +refelt +refers +reffed +refile +refill +refilm +refind +refine +refire +refits +reflag +reflet +reflew +reflex +reflow +reflux +refold +reform +refuel +refuge +refund +refuse +refute +regain +regale +regard +regave +regear +regent +reggae +regild +regilt +regime +regina +region +regius +regive +reglet +reglow +reglue +regnal +regnum +regret +regrew +regrow +reguli +rehabs +rehang +rehash +rehear +reheat +reheel +rehems +rehire +rehung +reigns +reined +reinks +reived +reiver +reives +reject +rejigs +rejoin +rekeys +reknit +reknot +relace +relaid +reland +relate +relays +relend +relent +relets +releve +relics +relict +relied +relief +relier +relies +reline +relink +relish +relist +relive +reload +reloan +relock +relook +reluct +relume +remade +remail +remain +remake +remand +remans +remaps +remark +remate +remedy +remeet +remelt +remend +remind +remint +remise +remiss +remits +remixt +remold +remora +remote +remove +remuda +renail +rename +rended +render +renege +renest +renews +renigs +renins +rennet +rennin +renown +rental +rented +renter +rentes +renvoi +reoils +reopen +repack +repaid +repair +repand +repark +repass +repast +repave +repays +repeal +repeat +repegs +repels +repent +reperk +repine +repins +replan +replay +repled +replot +replow +repoll +report +repose +repots +repour +repped +repros +repugn +repump +repute +requin +rerack +reread +rerent +rerigs +rerise +reroll +reroof +rerose +reruns +resaid +resail +resale +resawn +resaws +resays +rescue +reseal +reseat +reseau +resect +reseda +reseed +reseek +reseen +resees +resell +resend +resent +resets +resewn +resews +reshes +reship +reshod +reshoe +reshot +reshow +reside +resids +resift +resign +resile +resins +resiny +resist +resite +resits +resize +resoak +resods +resold +resole +resorb +resort +resown +resows +respot +rested +rester +result +resume +retack +retags +retail +retain +retake +retape +reteam +retear +retell +retems +retene +retest +retial +retied +reties +retile +retime +retina +retine +retint +retire +retold +retook +retool +retore +retorn +retort +retral +retrim +retros +retted +retune +return +retuse +retype +reused +reuses +revamp +reveal +revels +reverb +revere +revers +revert +revery +revest +revets +review +revile +revise +revive +revoke +revolt +revote +revues +revved +rewake +reward +rewarm +rewash +rewear +reweds +reweld +rewets +rewind +rewins +rewire +rewoke +reword +rewore +rework +reworn +rewove +rewrap +rexine +rezero +rezone +rhaphe +rhebok +rhemes +rhesus +rhetor +rheums +rheumy +rhinal +rhinos +rhodic +rhombi +rhombs +rhotic +rhumba +rhumbs +rhuses +rhymed +rhymer +rhymes +rhythm +rhyton +rialto +riatas +ribald +riband +ribbed +ribber +ribbon +ribier +riblet +ribose +ricers +richen +richer +riches +richly +ricing +ricins +ricked +rickey +ricrac +rictal +rictus +ridded +ridden +ridder +riddle +rident +riders +ridged +ridgel +ridges +ridgil +riding +ridley +riever +rifely +rifest +riffed +riffle +rifled +rifler +rifles +riflip +rifted +rigged +rigger +righto +rights +righty +rigors +rigour +riling +rilled +rilles +rillet +rimers +rimier +rimose +rimous +rimple +rinded +ringed +ringer +rinsed +rinser +rinses +riojas +rioted +rioter +ripely +ripens +ripest +riping +ripoff +ripost +ripped +ripper +ripple +ripply +riprap +ripsaw +risers +rishis +rising +risked +risker +risque +ristra +ritard +ritter +ritual +ritzes +rivage +rivals +rivers +rivets +riving +riyals +roadeo +roadie +roamed +roamer +roared +roarer +roasts +robalo +roband +robbed +robber +robbin +robing +robins +robles +robots +robust +rochet +rocked +rocker +rocket +rococo +rodded +rodent +rodeos +rodman +rodmen +rogers +rogued +rogues +roiled +rolfed +rolfer +rolled +roller +romaji +romano +romans +romeos +rondel +rondos +ronion +ronnel +ronyon +roofed +roofer +roofie +rooked +rookie +roomed +roomer +roomie +roosed +rooser +rooses +roosts +rooted +rooter +rootle +ropers +ropery +ropier +ropily +roping +roques +roquet +rosary +roscoe +rosery +rosets +roshis +rosier +rosily +rosing +rosins +rosiny +roster +rostra +rotary +rotate +rotche +rotgut +rotors +rotund +rouble +rouche +rouens +rouged +rouges +roughs +roughy +rounds +rouped +roupet +roused +rouser +rouses +rousts +routed +router +routes +rouths +rovers +roving +rowans +rowels +rowens +rowers +rowing +rowths +royals +rozzer +ruanas +rubace +rubati +rubato +rubbed +rubber +rubble +rubbly +rubels +rubied +rubier +rubies +rubigo +rubles +ruboff +rubout +rubric +ruched +ruches +rucked +ruckle +ruckus +rudder +ruddle +rudely +rudery +rudest +rueful +ruffed +ruffes +ruffle +ruffly +rufous +rugate +rugged +rugger +rugola +rugosa +rugose +rugous +ruined +ruiner +rulers +rulier +ruling +rumaki +rumbas +rumble +rumbly +rumens +rumina +rummer +rumors +rumour +rumple +rumply +rumpus +rundle +runkle +runlet +runnel +runner +runoff +runout +runway +rupees +rupiah +rurban +rushed +rushee +rusher +rushes +rusine +russet +rusted +rustic +rustle +rutile +rutins +rutted +ryking +ryokan +sabals +sabbat +sabbed +sabers +sabine +sabins +sabirs +sables +sabots +sabras +sabred +sabres +sacbut +sachem +sachet +sacked +sacker +sacque +sacral +sacred +sacrum +sadden +sadder +saddhu +saddle +sadhes +sadhus +safari +safely +safest +safety +safrol +sagbut +sagely +sagest +saggar +sagged +sagger +sagier +sahibs +saices +saigas +sailed +sailer +sailor +saimin +sained +saints +saithe +saiyid +sajous +sakers +salaam +salads +salals +salami +salary +saleps +salify +salina +saline +saliva +sallet +sallow +salmis +salmon +salols +salons +saloon +saloop +salpae +salpas +salpid +salsas +salted +salter +saltie +saluki +salute +salved +salver +salves +salvia +salvor +salvos +samara +sambal +sambar +sambas +sambos +sambur +samech +samekh +sameks +samiel +samite +samlet +samosa +sampan +sample +samshu +sancta +sandal +sanded +sander +sandhi +sanely +sanest +sangar +sangas +sanger +sanghs +sanies +saning +sanity +sanjak +sannop +sannup +sansar +sansei +santir +santol +santos +santur +sapors +sapota +sapote +sapour +sapped +sapper +sarans +sarape +sardar +sarees +sarges +sargos +sarins +sarode +sarods +sarong +sarsar +sarsen +sartor +sashay +sashed +sashes +sasins +sassed +sasses +satang +satara +satays +sateen +sating +satins +satiny +satire +satori +satrap +satyrs +sauced +saucer +sauces +sauchs +sauger +saughs +saughy +saults +saunas +saurel +sauted +sautes +savage +savant +savate +savers +savine +saving +savins +savior +savors +savory +savour +savoys +sawers +sawfly +sawing +sawlog +sawney +sawyer +saxony +sayeds +sayers +sayest +sayids +saying +sayyid +scabby +scalar +scalds +scaled +scaler +scales +scalls +scalps +scampi +scamps +scants +scanty +scaped +scapes +scarab +scarce +scared +scarer +scares +scarey +scarfs +scarph +scarps +scarry +scarts +scathe +scatts +scatty +scaups +scaurs +scenas +scends +scenes +scenic +scents +schavs +schema +scheme +schism +schist +schlep +schlub +schmoe +schmos +schnoz +school +schorl +schrik +schrod +schtik +schuit +schuln +schuls +schuss +schwas +scilla +scions +sclaff +sclera +scoffs +scolds +scolex +sconce +scones +scooch +scoops +scoots +scoped +scopes +scorch +scored +scorer +scores +scoria +scorns +scotch +scoter +scotia +scours +scouse +scouth +scouts +scowed +scowls +scrags +scrams +scrape +scraps +scrawl +screak +scream +screed +screen +screes +screws +screwy +scribe +scried +scries +scrimp +scrims +scrips +script +scrive +scrods +scroll +scroop +scrota +scrubs +scruff +scrums +scubas +scuffs +sculch +sculks +sculls +sculps +sculpt +scurfs +scurfy +scurry +scurvy +scutch +scutes +scutum +scyphi +scythe +seabag +seabed +seadog +sealed +sealer +seaman +seamed +seamer +seance +search +seared +searer +season +seated +seater +seawan +seaway +sebums +secant +seccos +secede +secern +second +secpar +secret +sector +secund +secure +sedans +sedate +seders +sedges +sedile +seduce +sedums +seeded +seeder +seeing +seeker +seeled +seemed +seemer +seemly +seeped +seesaw +seethe +seggar +segnos +segued +segues +seiche +seidel +seined +seiner +seines +seised +seiser +seises +seisin +seisms +seisor +seitan +seized +seizer +seizes +seizin +seizor +sejant +selahs +seldom +select +selfed +selkie +seller +selles +selsyn +selvas +selves +sememe +semple +sempre +senary +senate +sendal +sended +sender +sendup +seneca +senega +senhor +senile +senior +seniti +sennas +sennet +sennit +senora +senors +senryu +sensed +sensei +senses +sensor +sensum +sentry +sepals +sepias +sepoys +sepses +sepsis +septal +septet +septic +septum +sequel +sequin +seracs +serail +serais +serape +seraph +serdab +serein +serene +serest +serged +serger +serges +serial +series +serifs +serine +sering +serins +sermon +serosa +serous +serows +serums +serval +served +server +serves +servos +sesame +sestet +setoff +setons +setose +setous +setout +settee +setter +settle +setups +sevens +severe +severs +sewage +sewans +sewars +sewers +sewing +shabby +shacko +shacks +shaded +shader +shades +shadow +shaduf +shafts +shaggy +shaird +shairn +shaken +shaker +shakes +shakos +shaled +shales +shaley +shalom +shaman +shamas +shamed +shames +shammy +shamos +shamoy +shamus +shandy +shanks +shanny +shanti +shanty +shaped +shapen +shaper +shapes +shards +shared +sharer +shares +sharia +sharif +sharks +sharns +sharny +sharps +sharpy +shaugh +shauls +shaved +shaven +shaver +shaves +shavie +shawed +shawls +shawms +shazam +sheafs +sheals +shears +sheath +sheave +sheens +sheeny +sheers +sheesh +sheets +sheeve +sheikh +sheiks +sheila +shekel +shells +shelly +shelta +shelty +shelve +shelvy +shends +sheols +sheqel +sherds +sherif +sherpa +sherry +sheuch +sheugh +shewed +shewer +shibah +shield +shiels +shiers +shiest +shifts +shifty +shikar +shiksa +shikse +shills +shimmy +shindy +shined +shiner +shines +shinny +shires +shirks +shirrs +shirts +shirty +shists +shivah +shivas +shiver +shives +shlepp +shleps +shlock +shlubs +shlump +shmear +shmoes +shmuck +shnaps +shnook +shoals +shoaly +shoats +shocks +shoddy +shoers +shofar +shogis +shogun +shojis +sholom +shooed +shooks +shools +shoots +shoppe +shoran +shored +shores +shorls +shorts +shorty +shotes +shotts +should +shouts +shoved +shovel +shover +shoves +showed +shower +shoyus +shrank +shreds +shrewd +shrews +shriek +shrift +shrike +shrill +shrimp +shrine +shrink +shrive +shroff +shroud +shrove +shrubs +shrugs +shrunk +shtetl +shtick +shtiks +shucks +shunts +shuted +shutes +shyers +shyest +shying +sialic +sialid +sibyls +siccan +sicced +sicked +sickee +sicken +sicker +sickie +sickle +sickly +sickos +siddur +siding +sidled +sidler +sidles +sieged +sieges +sienna +sierra +siesta +sieurs +sieved +sieves +sifaka +sifted +sifter +sighed +sigher +sights +sigils +sigloi +siglos +siglum +sigmas +signal +signed +signee +signer +signet +signor +silage +silane +sileni +silent +silica +silked +silken +silkie +siller +siloed +silted +silvae +silvan +silvas +silver +silvex +simars +simian +simile +simlin +simmer +simnel +simony +simoom +simoon +simper +simple +simply +sinews +sinewy +sinful +singed +singer +singes +single +singly +sinker +sinned +sinner +sinter +siphon +siping +sipped +sipper +sippet +sirdar +sirees +sirens +siring +sirrah +sirras +sirree +sirups +sirupy +sisals +siskin +sisses +sister +sistra +sitars +sitcom +siting +sitten +sitter +situps +sivers +sixmos +sixtes +sixths +sizars +sizers +sizier +sizing +sizzle +skalds +skated +skater +skates +skatol +skeane +skeans +skeens +skeets +skeigh +skeins +skells +skelms +skelps +skenes +skerry +sketch +skewed +skewer +skibob +skiddy +skidoo +skiers +skiffs +skiing +skills +skimos +skimps +skimpy +skinks +skinny +skirls +skirrs +skirts +skited +skites +skived +skiver +skives +skivvy +sklent +skoals +skorts +skulks +skulls +skunks +skunky +skybox +skycap +skying +skylit +skyman +skymen +skyway +slacks +slaggy +slaked +slaker +slakes +slalom +slangs +slangy +slants +slanty +slatch +slated +slater +slates +slatey +slaved +slaver +slaves +slavey +slayed +slayer +sleave +sleaze +sleazo +sleazy +sledge +sleeks +sleeky +sleeps +sleepy +sleets +sleety +sleeve +sleigh +sleuth +slewed +sliced +slicer +slices +slicks +slider +slides +sliest +slieve +slight +slimed +slimes +slimly +slimsy +slings +slinks +slinky +sliped +slipes +slippy +slipup +slitty +sliver +slobby +slogan +sloids +slojds +sloops +sloped +sloper +slopes +sloppy +sloshy +sloths +slouch +slough +sloven +slowed +slower +slowly +sloyds +sludge +sludgy +sluffs +sluice +sluicy +sluing +slummy +slumps +slurbs +slurps +slurry +slushy +slyest +slypes +smacks +smalls +smalti +smalto +smalts +smarms +smarmy +smarts +smarty +smazes +smears +smeary +smeeks +smegma +smells +smelly +smelts +smerks +smidge +smilax +smiled +smiler +smiles +smiley +smirch +smirks +smirky +smiter +smites +smiths +smithy +smocks +smoggy +smoked +smoker +smokes +smokey +smolts +smooch +smoosh +smooth +smudge +smudgy +smugly +smutch +snacks +snafus +snaggy +snails +snaked +snakes +snakey +snappy +snared +snarer +snares +snarfs +snarks +snarky +snarls +snarly +snatch +snathe +snaths +snawed +snazzy +sneaks +sneaky +sneaps +snecks +sneers +sneery +sneesh +sneeze +sneezy +snells +snicks +snider +sniffs +sniffy +sniped +sniper +snipes +snippy +snitch +snivel +snobby +snoods +snooks +snools +snoops +snoopy +snoots +snooty +snooze +snoozy +snored +snorer +snores +snorts +snotty +snouts +snouty +snowed +snubby +snuffs +snuffy +snugly +soaked +soaker +soaped +soaper +soared +soarer +soaves +sobbed +sobber +sobeit +sobers +sobful +socage +soccer +social +socked +socket +socles +socman +socmen +sodded +sodden +sodium +soever +sofars +soffit +softas +soften +softer +softie +softly +sogged +soigne +soiled +soiree +sokols +solace +soland +solano +solans +solate +soldan +solder +solely +solemn +soleus +solgel +solidi +solids +soling +solion +soloed +solons +solums +solute +solved +solver +solves +somans +somata +somber +sombre +somite +somoni +sonant +sonars +sonata +sonder +sondes +sonics +sonnet +sonsie +sooner +sooted +soothe +sooths +sopite +sopors +sopped +sorbed +sorbet +sorbic +sordid +sordor +sorels +sorely +sorest +sorgho +sorgos +soring +sorned +sorner +sorrel +sorrow +sorted +sorter +sortie +sotols +sotted +souari +soucar +soudan +soughs +sought +souled +sounds +souped +source +soured +sourer +sourly +soused +souses +souter +souths +soviet +sovran +sowans +sowars +sowcar +sowens +sowers +sowing +sozine +sozins +spaced +spacer +spaces +spacey +spaded +spader +spades +spadix +spahee +spahis +spails +spaits +spales +spalls +spanks +spared +sparer +spares +sparge +sparid +sparks +sparky +sparry +sparse +spasms +spates +spathe +spavie +spavin +spawns +spayed +speaks +speans +spears +specie +specks +speech +speedo +speeds +speedy +speels +speers +speils +speirs +speise +speiss +spells +spelts +speltz +spence +spends +spendy +spense +spewed +spewer +sphene +sphere +sphery +sphinx +sphynx +spicae +spicas +spiced +spicer +spices +spicey +spicks +spider +spiels +spiers +spiffs +spiffy +spigot +spiked +spiker +spikes +spikey +spiled +spiles +spills +spilth +spinal +spined +spinel +spines +spinet +spinny +spinor +spinto +spiral +spirea +spired +spirem +spires +spirit +spirts +spital +spited +spites +spivvy +splake +splash +splats +splays +spleen +splent +splice +spline +splint +splits +splore +splosh +spodes +spoils +spoilt +spoked +spoken +spokes +sponge +spongy +spoofs +spoofy +spooks +spooky +spools +spoons +spoony +spoors +sporal +spored +spores +sports +sporty +spotty +spouse +spouts +sprags +sprain +sprang +sprats +sprawl +sprays +spread +sprees +sprent +sprier +sprigs +spring +sprint +sprite +sprits +spritz +sprout +spruce +sprucy +sprues +sprugs +sprung +spryer +spryly +spuing +spumed +spumes +spurns +spurry +spying +squabs +squads +squall +squama +square +squark +squash +squats +squawk +squaws +squeak +squeal +squegs +squibs +squids +squill +squint +squire +squirm +squirt +squish +squush +sradha +stable +stably +stacks +stacte +stades +stadia +staffs +staged +stager +stages +stagey +staggy +staigs +stains +stairs +staked +stakes +stalag +staled +staler +stales +stalks +stalky +stalls +stamen +stamps +stance +stanch +stands +staned +stanes +stangs +stanks +stanol +stanza +stapes +staphs +staple +starch +stared +starer +stares +starry +starts +starve +stases +stasis +statal +stated +stater +states +static +statin +stator +statue +status +staved +staves +stayed +stayer +steads +steady +steaks +steals +steams +steamy +steeds +steeks +steels +steely +steeps +steers +steeve +steins +stelae +stelai +stelar +steles +stelic +stella +stemma +stemmy +stench +stenos +stents +steppe +stereo +steres +steric +sterna +sterns +sterol +stewed +stichs +sticks +sticky +stiffs +stifle +stigma +stiles +stills +stilly +stilts +stimes +stingo +stings +stints +stiped +stipel +stipes +stirks +stirps +stitch +stithy +stiver +stoats +stocks +stocky +stodge +stodgy +stogey +stogie +stoics +stoked +stoker +stokes +stoled +stolen +stoles +stolid +stolon +stomal +stomas +stomps +stoned +stoner +stones +stoney +stooge +stooks +stoops +stoped +stoper +stopes +storax +stored +storer +stores +storey +storks +storms +stormy +stotin +stotts +stound +stoups +stoure +stours +stoury +stouts +stover +stoves +stowed +stowps +strafe +strain +strait +strake +strand +strang +straps +strass +strata +strath +strati +straws +strawy +strays +streak +stream +streek +streel +street +streps +stress +strewn +strews +striae +strick +strict +stride +strife +strike +string +stripe +strips +stript +stripy +strive +strobe +strode +stroke +stroll +stroma +strong +strook +strops +stroud +strove +strown +strows +stroys +struck +struma +strums +strung +strunt +struts +stubby +stucco +studio +studly +stuffs +stuffy +stulls +stumps +stumpy +stunts +stupas +stupes +stupor +sturdy +sturts +stying +stylar +styled +styler +styles +stylet +stylus +stymie +styrax +suable +suably +suaver +subahs +subbed +subdeb +subdue +subers +subfix +subgum +subito +sublet +sublot +submit +subnet +suborn +subpar +subsea +subset +subtle +subtly +suburb +subway +succah +succor +sucres +sudary +sudden +sudors +sudsed +sudser +sudses +sueded +suedes +suffer +suffix +sugars +sugary +sughed +suints +suited +suiter +suites +suitor +sukkah +sukkot +sulcal +sulcus +suldan +sulfas +sulfid +sulfur +sulked +sulker +sullen +sulpha +sultan +sultry +sumach +sumacs +summae +summas +summed +summer +summit +summon +sunbow +sundae +sunder +sundew +sundog +sundry +sunken +sunket +sunlit +sunnah +sunnas +sunned +sunray +sunset +suntan +sunups +superb +supers +supine +supped +supper +supple +supply +surahs +surely +surest +surety +surfed +surfer +surged +surger +surges +surimi +surras +surrey +surtax +survey +sushis +suslik +sussed +susses +sutler +sutras +suttas +suttee +suture +svaraj +svelte +swabby +swaged +swager +swages +swails +swains +swales +swamis +swamps +swampy +swanks +swanky +swanny +swaraj +swards +swarfs +swarms +swarth +swarty +swatch +swathe +swaths +swayed +swayer +swears +sweats +sweaty +swedes +sweeny +sweeps +sweepy +sweets +swells +swerve +sweven +swifts +swills +swimmy +swinge +swings +swingy +swinks +swiped +swipes +swiple +swirls +swirly +swishy +switch +swithe +swived +swivel +swives +swivet +swoons +swoony +swoops +swoopy +swoosh +swords +swound +swouns +syboes +sycees +sylphs +sylphy +sylvae +sylvan +sylvas +sylvin +symbol +synced +synchs +syncom +syndet +syndic +syngas +synods +syntax +synths +synura +sypher +syphon +syrens +syrinx +syrups +syrupy +sysops +system +syzygy +tabard +tabbed +tabbis +tabers +tablas +tabled +tables +tablet +taboos +tabors +tabour +tabued +tabuli +tabuns +taches +tacked +tacker +tacket +tackey +tackle +tactic +taenia +taffia +tafias +tagged +tagger +tagrag +tahini +tahsil +taigas +tailed +tailer +taille +tailor +taints +taipan +takahe +takers +takeup +taking +takins +talars +talced +talcky +talcum +talent +talers +talion +talked +talker +talkie +taller +tallis +tallit +tallol +tallow +talons +taluka +taluks +tamale +tamals +tamari +tambac +tambak +tambur +tamein +tamely +tamers +tamest +taming +tammie +tampan +tamped +tamper +tampon +tandem +tanged +tangle +tangly +tangos +tanist +tankas +tanked +tanker +tanned +tanner +tannic +tannin +tannoy +tanrec +tantra +tanuki +tapalo +tapers +tapeta +taping +tapirs +tapped +tapper +tappet +tarama +targes +target +tariff +taring +tarmac +tarnal +tarocs +taroks +tarots +tarpan +tarpon +tarred +tarres +tarsal +tarsia +tarsus +tartan +tartar +tarted +tarter +tartly +tarzan +tasked +tassel +tasses +tasset +tassie +tasted +taster +tastes +tatami +tatars +taters +tatsoi +tatted +tatter +tattie +tattle +tattoo +taught +taunts +tauons +taupes +tauted +tauten +tauter +tautly +tautog +tavern +tawdry +tawers +tawing +tawney +tawpie +tawsed +tawses +taxeme +taxers +taxied +taxies +taxing +taxite +taxman +taxmen +taxols +taxons +tazzas +teabox +teacup +teamed +teapot +teapoy +teared +tearer +teased +teasel +teaser +teases +teated +teazel +teazle +teched +techie +techno +tectal +tectum +tedded +tedder +tedium +teeing +teemed +teemer +teener +teensy +teepee +teeter +teethe +teflon +tegmen +teguas +teiids +teinds +tekkie +telcos +teledu +telega +telfer +telial +telium +teller +tellys +telnet +telome +telson +temped +tempeh +temper +temple +tempos +tempts +tenace +tenail +tenant +tended +tender +tendon +tendus +tenets +teniae +tenias +tenner +tennis +tenons +tenors +tenour +tenpin +tenrec +tensed +tenser +tenses +tensor +tented +tenter +tenths +tentie +tenues +tenuis +tenure +tenuti +tenuto +teopan +tepals +tepees +tepefy +tephra +tepoys +terais +teraph +terbia +terbic +tercel +terces +tercet +teredo +terete +tergal +tergum +termed +termer +termly +termor +ternes +terrae +terras +terret +territ +terror +terser +teslas +testae +tested +testee +tester +teston +tetany +tetchy +tether +tetrad +tetras +tetris +tetryl +tetter +tewing +thacks +thairm +thaler +thalli +thanes +thanks +tharms +thatch +thawed +thawer +thebes +thecae +thecal +thefts +thegns +theine +theins +theirs +theism +theist +themed +themes +thenal +thenar +thence +theory +theres +therme +therms +theses +thesis +thesps +thetas +thetic +thicks +thieve +thighs +thills +things +thinks +thinly +thiols +thiram +thirds +thirls +thirst +thirty +tholed +tholes +tholoi +tholos +thongs +thorax +thoria +thoric +thorns +thorny +thoron +thorpe +thorps +thoued +though +thrall +thrash +thrave +thrawn +thraws +thread +threap +threat +threep +threes +thresh +thrice +thrift +thrill +thrips +thrive +throat +throbs +throes +throne +throng +throve +thrown +throws +thrums +thrust +thujas +thulia +thumbs +thumps +thunks +thurls +thusly +thuyas +thwack +thwart +thymes +thymey +thymic +thymol +thymus +thyrse +thyrsi +tiaras +tibiae +tibial +tibias +ticals +ticced +ticked +ticker +ticket +tickle +tictac +tictoc +tidbit +tiddly +tidied +tidier +tidies +tidily +tiding +tieing +tiepin +tierce +tiered +tiffed +tiffin +tigers +tights +tiglon +tigons +tikkas +tilaks +tildes +tilers +tiling +tilled +tiller +tilted +tilter +tilths +timbal +timber +timbre +timely +timers +timing +tincal +tincts +tinder +tineal +tineas +tineid +tinful +tinged +tinges +tingle +tingly +tinier +tinily +tining +tinker +tinkle +tinkly +tinman +tinmen +tinned +tinner +tinpot +tinsel +tinted +tinter +tipcat +tipoff +tipped +tipper +tippet +tipple +tiptoe +tiptop +tirade +tiring +tirled +tisane +tissue +titans +tmeses +tmesis +toasts +toasty +tobies +tocher +tocsin +todays +toddle +todies +toecap +toeing +toffee +togaed +togate +togged +toggle +togues +toiled +toiler +toiles +toited +tokays +tokens +tolane +tolans +tolars +toledo +toling +tolled +toller +toluic +toluid +toluol +toluyl +tolyls +tomans +tomato +tombac +tombak +tombal +tombed +tomboy +tomcat +tomcod +tommed +tomtit +tondos +toneme +toners +tongas +tonged +tonger +tongue +tonics +tonier +toning +tonish +tonlet +tonner +tonnes +tonsil +tooled +tooler +toonie +tooted +tooter +tooths +toothy +tootle +tootsy +topees +topers +topful +tophes +tophus +topics +toping +topped +topper +topple +toques +toquet +torahs +torchy +torero +torics +tories +toroid +torose +toroth +torous +torpid +torpor +torque +torrid +torses +torsks +torsos +tortas +torten +tortes +torula +toshes +tossed +tosses +tossup +totals +totems +toters +tother +toting +totted +totter +toucan +touche +touchy +toughs +toughy +toupee +toured +tourer +toused +touses +tousle +touted +touter +touzle +towage +toward +towels +towers +towery +towhee +towies +towing +townee +townie +toxics +toxine +toxins +toxoid +toyers +toying +toyish +toyons +traced +tracer +traces +tracks +tracts +traded +trader +trades +tragic +tragus +traiks +trails +trains +traits +tramel +tramps +trampy +trance +tranks +tranny +tranqs +trapan +trapes +trashy +trauma +travel +traves +trawls +treads +treats +treaty +treble +trebly +treens +trefah +tremor +trench +trends +trendy +trepan +trepid +tressy +trevet +triacs +triads +triage +trials +tribal +tribes +triced +tricep +trices +tricks +tricky +tricot +triene +triens +triers +trifid +trifle +trigly +trigon +trigos +trijet +trikes +trilby +trills +trimer +trimly +trinal +trined +trines +triode +triols +triose +tripes +triple +triply +tripod +tripos +trippy +triste +triter +triton +triune +trivet +trivia +troaks +trocar +troche +trocks +trogon +troika +troked +trokes +trolls +trolly +trompe +tromps +tronas +trones +troops +tropes +trophy +tropic +tropin +troths +trotyl +trough +troupe +trouts +trouty +trover +troves +trowed +trowel +trowth +truant +truced +truces +trucks +trudge +truest +truffe +truing +truism +trulls +trumps +trunks +trusts +trusty +truths +trying +tryout +tryste +trysts +tsades +tsadis +tsetse +tsking +tsktsk +tsores +tsoris +tsuris +tubate +tubbed +tubber +tubers +tubful +tubing +tubist +tubule +tuchun +tucked +tucker +tucket +tuffet +tufoli +tufted +tufter +tugged +tugger +tugrik +tuille +tuladi +tulips +tulles +tumble +tumefy +tumors +tumour +tumped +tumuli +tumult +tundra +tuners +tuneup +tunica +tunics +tuning +tunned +tunnel +tupelo +tupiks +tupped +tuques +turaco +turban +turbid +turbit +turbos +turbot +tureen +turfed +turgid +turgor +turion +turkey +turned +turner +turnip +turnon +turnup +turret +turtle +turves +tusche +tushed +tushes +tushie +tusked +tusker +tussal +tusseh +tusser +tusses +tussis +tussle +tussor +tussur +tutees +tutors +tutted +tuttis +tutued +tuxedo +tuyere +tuyers +twains +twanky +tweaks +tweaky +tweeds +tweedy +tweens +tweeny +tweets +tweeze +twelve +twenty +twerps +twibil +twiers +twiggy +twilit +twills +twined +twiner +twines +twinge +twirls +twirly +twirps +twists +twisty +twitch +twofer +twyers +tycoon +tymbal +tympan +tyning +typhon +typhus +typier +typify +typing +typist +tyrant +tyring +tythed +tythes +tzetze +tzuris +uakari +ubiety +ubique +udders +uglier +uglies +uglify +uglily +ugsome +uhlans +ukases +ulamas +ulcers +ulemas +ullage +ulster +ultima +ultimo +ultras +umamis +umbels +umbers +umbles +umbrae +umbral +umbras +umiack +umiacs +umiaks +umiaqs +umlaut +umping +umpire +unable +unaged +unakin +unarms +unawed +unaxed +unbale +unbans +unbars +unbear +unbelt +unbend +unbent +unbind +unbolt +unborn +unbred +unbusy +uncage +uncake +uncaps +uncase +uncast +unchic +unciae +uncial +uncini +unclad +uncles +unclip +unclog +uncoil +uncool +uncork +uncuff +uncurb +uncurl +uncute +undead +undies +undine +undock +undoer +undoes +undone +undraw +undrew +unduly +undyed +unease +uneasy +uneven +unfair +unfelt +unfits +unfixt +unfold +unfond +unfree +unfurl +ungird +ungirt +unglue +ungual +ungues +unguis +ungula +unhair +unhand +unhang +unhats +unhelm +unhewn +unholy +unhood +unhook +unhung +unhurt +unhusk +unific +unions +unipod +unique +unisex +unison +united +uniter +unites +unjams +unjust +unkend +unkent +unkept +unkind +unkink +unknit +unknot +unlace +unlade +unlaid +unlash +unlays +unlead +unless +unlike +unlink +unlive +unload +unlock +unmade +unmake +unmans +unmask +unmeet +unmesh +unmews +unmixt +unmold +unmoor +unmown +unnail +unopen +unpack +unpaid +unpegs +unpens +unpent +unpick +unpile +unpins +unplug +unpure +unread +unreal +unreel +unrent +unrest +unrigs +unripe +unrips +unrobe +unroll +unroof +unroot +unrove +unruly +unsafe +unsaid +unsawn +unsays +unseal +unseam +unseat +unseen +unsell +unsent +unsets +unsewn +unsews +unsexy +unshed +unship +unshod +unshut +unsnag +unsnap +unsold +unsown +unspun +unstep +unstop +unsung +unsunk +unsure +untack +untame +untidy +untied +unties +untold +untorn +untrim +untrod +untrue +untuck +untune +unused +unveil +unvext +unwary +unwell +unwept +unwind +unwise +unwish +unwits +unworn +unwove +unwrap +unyoke +unzips +upases +upbear +upbeat +upbind +upboil +upbore +upbows +upcast +upcoil +upcurl +updart +update +updive +updove +upends +upflow +upfold +upgaze +upgird +upgirt +upgrew +upgrow +upheap +upheld +uphill +uphold +uphove +uphroe +upkeep +upland +upleap +uplift +uplink +upload +upmost +uppers +uppile +upping +uppish +uppity +upprop +uprate +uprear +uprise +uproar +uproot +uprose +uprush +upsend +upsent +upsets +upshot +upside +upsize +upsoar +upstep +upstir +uptake +uptalk +uptear +uptick +uptilt +uptime +uptore +uptorn +uptoss +uptown +upturn +upwaft +upward +upwell +upwind +uracil +uraeus +urania +uranic +uranyl +urares +uraris +urases +urates +uratic +urbane +urbias +urchin +urease +uredia +uredos +ureide +uremia +uremic +urgent +urgers +urging +urials +uropod +urping +ursids +ursine +urtext +uruses +usable +usably +usages +usance +useful +ushers +usneas +usques +usuals +usurer +usurps +uterus +utmost +utopia +utters +uveous +uvulae +uvular +uvulas +vacant +vacate +vacuum +vadose +vagary +vagile +vagrom +vaguer +vahine +vailed +vainer +vainly +vakeel +vakils +valets +valgus +valine +valise +valkyr +valley +valors +valour +valses +valued +valuer +values +valuta +valval +valvar +valved +valves +vamose +vamped +vamper +vandal +vandas +vanish +vanity +vanman +vanmen +vanned +vanner +vapors +vapory +vapour +varias +varied +varier +varies +varlet +varnas +varoom +varved +varves +vassal +vaster +vastly +vatful +vatted +vaults +vaulty +vaunts +vaunty +vaward +vealed +vealer +vector +veejay +veenas +veepee +veered +vegans +vegete +vegged +veggie +vegies +veiled +veiler +veinal +veined +veiner +velars +velate +velcro +veldts +vellum +veloce +velour +velure +velvet +vended +vendee +vender +vendor +vendue +veneer +venene +venery +venged +venges +venial +venine +venins +venire +venoms +venose +venous +vented +venter +venues +venule +verbal +verbid +verdin +verged +verger +verges +verier +verify +verily +verism +verist +verite +verity +vermes +vermin +vermis +vernal +vernix +versal +versed +verser +verses +verset +versos +verste +versts +versus +vertex +vertus +verves +vervet +vesica +vesper +vespid +vessel +vestal +vestas +vested +vestee +vestry +vetoed +vetoer +vetoes +vetted +vetter +vexers +vexils +vexing +viable +viably +vialed +viands +viatic +viator +vibist +vibrio +vicars +vicing +victim +victor +vicuna +videos +viewed +viewer +vigias +vigils +vigors +vigour +viking +vilely +vilest +vilify +villae +villas +villus +vimina +vinals +vincas +vineal +vinery +vinier +vinify +vining +vinous +vinyls +violas +violet +violin +vipers +virago +vireos +virgas +virgin +virile +virion +viroid +virtue +virtus +visaed +visage +visard +viscid +viscus +viseed +vising +vision +visits +visive +visors +vistas +visual +vitals +vitric +vittae +vittle +vivace +vivary +vivers +vivify +vixens +vizard +vizier +vizirs +vizors +vizsla +vocabs +vocals +vodkas +vodoun +vodous +voduns +vogued +voguer +vogues +voiced +voicer +voices +voided +voider +voiles +volant +volery +voling +volley +volost +voltes +volume +volute +volvas +volvox +vomers +vomica +voodoo +vortex +votary +voters +voting +votive +voudon +vowels +vowers +vowing +voyage +voyeur +vrooms +vrouws +wabble +wabbly +wadded +wadder +waddie +waddle +waddly +waders +wadies +wading +wadmal +wadmel +wadmol +wadset +waeful +wafers +wafery +waffed +waffie +waffle +waffly +wafted +wafter +wagers +wagged +wagger +waggle +waggly +waggon +waging +wagons +wahine +wahoos +waifed +wailed +wailer +waired +waists +waited +waiter +waived +waiver +waives +wakame +wakens +wakers +wakiki +waking +walers +walies +waling +walked +walker +walkup +wallah +wallas +walled +wallet +wallie +wallop +wallow +walnut +walrus +wamble +wambly +wammus +wampum +wampus +wander +wandle +wanier +waning +wanion +wanned +wanner +wanted +wanter +wanton +wapiti +wapped +warble +warded +warden +warder +warier +warily +waring +warked +warmed +warmer +warmly +warmth +warmup +warned +warner +warped +warper +warred +warren +warsaw +warsle +warted +wasabi +washed +washer +washes +washup +wastes +wastry +watape +wataps +waters +watery +watter +wattle +waucht +waught +wauked +wauled +wavers +wavery +waveys +wavier +wavies +wavily +waving +wawled +waxers +waxier +waxily +waxing +waylay +wazoos +weaken +weaker +weakly +weakon +wealds +wealth +weaned +weaner +weapon +wearer +weasel +weason +weaved +weaver +weaves +webbed +webcam +webers +webfed +weblog +wechts +wedded +wedder +wedeln +wedels +wedged +wedges +wedgie +weeded +weeder +weekly +weened +weenie +weensy +weeper +weepie +weeted +weever +weevil +weewee +weighs +weight +weirds +weirdy +welded +welder +weldor +welkin +welled +wellie +welted +welter +wended +weskit +wester +wether +wetted +whacks +whacky +whaled +whaler +whales +whammo +whammy +whangs +wharfs +wharve +whaups +wheals +wheats +wheels +wheens +wheeps +wheeze +wheezy +whelks +whelky +whelms +whelps +whenas +whence +wheres +wherry +wherve +wheyey +whidah +whiffs +whiled +whiles +whilom +whilst +whimsy +whined +whiner +whines +whiney +whinge +whinny +whippy +whirls +whirly +whirrs +whirry +whisht +whisks +whisky +whists +whited +whiten +whiter +whites +whitey +whizzy +wholes +wholly +whomps +whomso +whoofs +whoops +whoosh +whorls +whorts +whosis +whumps +whydah +wiccan +wiccas +wiches +wicked +wicker +wicket +wicopy +widder +widdie +widdle +widely +widens +widest +widget +widish +widows +widths +wields +wieldy +wiener +wienie +wifely +wifeys +wifing +wigans +wigeon +wigged +wiggle +wiggly +wights +wiglet +wigwag +wigwam +wikiup +wilded +wilder +wildly +wilful +wilier +wilily +wiling +willed +willer +willet +willie +willow +wilted +wimble +wimmin +wimped +wimple +winced +wincer +winces +wincey +winded +winder +windle +window +windup +winery +winged +winger +winier +wining +winish +winked +winker +winkle +winned +winner +winnow +winoes +winter +wintle +wintry +winzes +wipers +wiping +wirers +wirier +wirily +wiring +wisdom +wisely +wisent +wisest +wished +wisher +wishes +wising +wisped +wissed +wisses +wisted +witans +witchy +withal +withed +wither +withes +within +witing +witney +witted +wittol +wivern +wivers +wiving +wizard +wizens +wizzen +wizzes +woaded +woalds +wobble +wobbly +wodges +woeful +wolfed +wolfer +wolver +wolves +womans +wombat +wombed +womera +wonder +wonned +wonner +wonted +wonton +wooded +wooden +woodie +woodsy +wooers +woofed +woofer +wooing +wooled +woolen +wooler +woolie +woolly +worded +worked +worker +workup +worlds +wormed +wormer +wormil +worrit +worsen +worser +worses +worset +worsts +worths +worthy +wotted +wounds +wovens +wowing +wowser +wracks +wraith +wrangs +wrasse +wraths +wrathy +wreaks +wreath +wrecks +wrench +wrests +wretch +wricks +wriest +wright +wrings +wrists +wristy +writer +writes +writhe +wrongs +wryest +wrying +wursts +wurzel +wusses +wuther +wyches +wyling +wyting +wyvern +xebecs +xenial +xenias +xenons +xylans +xylems +xylene +xyloid +xylols +xylose +xylyls +xyster +xystoi +xystos +xystus +yabber +yabbie +yachts +yacked +yaffed +yagers +yahoos +yairds +yakked +yakker +yakuza +yamens +yammer +yamuns +yanked +yanqui +yantra +yapock +yapoks +yapons +yapped +yapper +yarded +yarder +yarely +yarest +yarned +yarner +yarrow +yasmak +yatter +yauped +yauper +yaupon +yautia +yawing +yawled +yawned +yawner +yawped +yawper +yclept +yeaned +yearly +yearns +yeasts +yeasty +yecchs +yeelin +yelled +yeller +yellow +yelped +yelper +yenned +yentas +yentes +yeoman +yeomen +yerbas +yerked +yessed +yesses +yester +yeuked +yields +yipped +yippee +yippie +yirred +yirths +yobbos +yocked +yodels +yodled +yodler +yodles +yogees +yogini +yogins +yogurt +yoicks +yokels +yoking +yolked +yonder +yonker +youngs +youpon +youths +yowies +yowing +yowled +yowler +yttria +yttric +yuccas +yucked +yukked +yulans +yupons +yuppie +yutzes +zaddik +zaffar +zaffer +zaffir +zaffre +zaftig +zagged +zaikai +zaires +zamias +zanana +zander +zanier +zanies +zanily +zanzas +zapped +zapper +zareba +zariba +zayins +zazens +zealot +zeatin +zebeck +zebecs +zebras +zechin +zenana +zenith +zephyr +zeroed +zeroes +zeroth +zested +zester +zeugma +zibeth +zibets +zigged +zigzag +zillah +zinced +zincic +zincky +zinebs +zinged +zinger +zinnia +zipped +zipper +zirams +zircon +zither +zizith +zizzle +zlotys +zoaria +zocalo +zodiac +zoecia +zoftig +zombie +zombis +zonary +zonate +zoners +zoning +zonked +zonula +zonule +zooids +zooier +zoomed +zoonal +zooned +zorils +zoster +zouave +zounds +zoysia +zydeco +zygoid +zygoma +zygose +zygote +zymase diff --git a/engine/cache/deaths.cache.php b/engine/cache/deaths.cache.php new file mode 100644 index 0000000..441f184 --- /dev/null +++ b/engine/cache/deaths.cache.php @@ -0,0 +1 @@ +[{"time":"0","level":"8","killed_by":"Testing","is_player":"1","mostdamage_by":"Testing","mostdamage_is_player":"1","unjustified":"1","mostdamage_unjustified":"1","victim":"Znote"},{"time":"0","level":"8","killed_by":"Rat","is_player":"0","mostdamage_by":"Cave Rat","mostdamage_is_player":"0","unjustified":"0","mostdamage_unjustified":"0","victim":"Testing"}] \ No newline at end of file diff --git a/engine/cache/gallery.cache.php b/engine/cache/gallery.cache.php new file mode 100644 index 0000000..66aa3f6 --- /dev/null +++ b/engine/cache/gallery.cache.php @@ -0,0 +1 @@ +[{"title":"Quest Done!","desc":"Yaay! Finally!","date":"1370715254","image":"4!47qyHg!jpg"},{"title":"Testing stuff.","desc":"I am testing if this system still works.","date":"1370561230","image":"1!hqxwUn!png"}] \ No newline at end of file diff --git a/engine/cache/highscores.cache.php b/engine/cache/highscores.cache.php new file mode 100644 index 0000000..4f63729 --- /dev/null +++ b/engine/cache/highscores.cache.php @@ -0,0 +1 @@ +[false,false,false,false,false,false,false,false,false] \ No newline at end of file diff --git a/engine/cache/houses.cache.php b/engine/cache/houses.cache.php new file mode 100644 index 0000000..f381ed1 --- /dev/null +++ b/engine/cache/houses.cache.php @@ -0,0 +1 @@ +[{"id":"1","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1","town":"0","size":"123","price":"127000","rent":"127000","doors":"5","beds":"4","tiles":"204","guild":"0","clear":"0"},{"id":"2","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Market Street 4 (Shop)","town":"1","size":"96","price":"5105","rent":"5105","doors":"7","beds":"3","tiles":"208","guild":"0","clear":"0"},{"id":"3","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #3","town":"0","size":"115","price":"117000","rent":"117000","doors":"4","beds":"2","tiles":"179","guild":"0","clear":"0"},{"id":"4","world_id":"0","owner":"585","paid":"1347140255","warnings":"0","lastwarning":"0","name":"Market Street 3","town":"1","size":"70","price":"3475","rent":"3475","doors":"3","beds":"2","tiles":"150","guild":"0","clear":"0"},{"id":"5","world_id":"0","owner":"586","paid":"1347132734","warnings":"0","lastwarning":"0","name":"Market Street 2","town":"1","size":"96","price":"4925","rent":"4925","doors":"5","beds":"3","tiles":"207","guild":"0","clear":"0"},{"id":"6","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Market Street 1","town":"1","size":"133","price":"6680","rent":"6680","doors":"5","beds":"3","tiles":"258","guild":"0","clear":"0"},{"id":"7","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Old Lighthouse","town":"1","size":"73","price":"3610","rent":"3610","doors":"1","beds":"2","tiles":"177","guild":"0","clear":"0"},{"id":"8","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Seagull Walk 1","town":"1","size":"106","price":"5095","rent":"5095","doors":"6","beds":"2","tiles":"210","guild":"0","clear":"0"},{"id":"9","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Seagull Walk 2","town":"1","size":"50","price":"2765","rent":"2765","doors":"4","beds":"3","tiles":"132","guild":"0","clear":"0"},{"id":"10","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Dream Street 4","town":"1","size":"68","price":"3765","rent":"3765","doors":"5","beds":"4","tiles":"168","guild":"0","clear":"0"},{"id":"11","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Elm Street 2","town":"1","size":"51","price":"2665","rent":"2665","doors":"2","beds":"2","tiles":"112","guild":"0","clear":"0"},{"id":"12","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Elm Street 1","town":"1","size":"53","price":"2710","rent":"2710","doors":"2","beds":"2","tiles":"120","guild":"0","clear":"0"},{"id":"13","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Elm Street 3","town":"1","size":"52","price":"2855","rent":"2855","doors":"1","beds":"3","tiles":"126","guild":"0","clear":"0"},{"id":"14","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Elm Street 4","town":"1","size":"51","price":"3765","rent":"3765","doors":"2","beds":"2","tiles":"120","guild":"0","clear":"0"},{"id":"15","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Dream Street 3","town":"1","size":"53","price":"2710","rent":"2710","doors":"2","beds":"2","tiles":"117","guild":"0","clear":"0"},{"id":"16","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Dream Street 2","town":"1","size":"67","price":"3340","rent":"3340","doors":"4","beds":"2","tiles":"147","guild":"0","clear":"0"},{"id":"17","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"4","guild":"0","clear":"0"},{"id":"18","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 13","town":"1","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"19","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 12","town":"1","size":"8","price":"685","rent":"685","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"0"},{"id":"20","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Iceland House 1","town":"0","size":"19","price":"39000","rent":"0","doors":"4","beds":"2","tiles":"39","guild":"0","clear":"1"},{"id":"21","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"4","guild":"0","clear":"0"},{"id":"22","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"1674936244","price":"0","rent":"0","doors":"0","beds":"0","tiles":"2","guild":"0","clear":"0"},{"id":"23","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 14","town":"1","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"24","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 15","town":"1","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"25","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 16","town":"1","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"29","guild":"0","clear":"0"},{"id":"26","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 17","town":"1","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"27","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 18","town":"1","size":"4","price":"315","rent":"315","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"28","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 01","town":"1","size":"6","price":"405","rent":"405","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"29","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 02","town":"1","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"30","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 03","town":"1","size":"6","price":"405","rent":"405","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"31","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 04","town":"1","size":"8","price":"450","rent":"450","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"32","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 05","town":"1","size":"4","price":"315","rent":"315","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"33","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 06","town":"1","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"34","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 07","town":"1","size":"8","price":"685","rent":"685","doors":"1","beds":"2","tiles":"23","guild":"0","clear":"0"},{"id":"35","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 21","town":"1","size":"5","price":"315","rent":"315","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"36","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 22","town":"1","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"37","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 23","town":"1","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"38","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 24","town":"1","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"39","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 26","town":"1","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"40","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 28","town":"1","size":"4","price":"315","rent":"315","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"41","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 27","town":"1","size":"8","price":"685","rent":"685","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"0"},{"id":"42","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 25","town":"1","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"43","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 31","town":"1","size":"16","price":"855","rent":"855","doors":"1","beds":"1","tiles":"40","guild":"0","clear":"0"},{"id":"44","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 32","town":"1","size":"18","price":"1135","rent":"1135","doors":"2","beds":"2","tiles":"50","guild":"0","clear":"0"},{"id":"45","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 33","town":"1","size":"14","price":"765","rent":"765","doors":"2","beds":"1","tiles":"32","guild":"0","clear":"0"},{"id":"46","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 34","town":"1","size":"30","price":"1675","rent":"1675","doors":"2","beds":"2","tiles":"60","guild":"0","clear":"0"},{"id":"47","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Salvation Street 1 (Shop)","town":"1","size":"119","price":"6240","rent":"6240","doors":"7","beds":"4","tiles":"249","guild":"0","clear":"0"},{"id":"48","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #48","town":"0","size":"50","price":"60000","rent":"0","doors":"1","beds":"2","tiles":"60","guild":"0","clear":"1"},{"id":"49","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Dream Street 1 (Shop)","town":"1","size":"81","price":"4330","rent":"4330","doors":"6","beds":"2","tiles":"192","guild":"0","clear":"0"},{"id":"50","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Blessed Shield Guildhall","town":"1","size":"126","price":"8090","rent":"8090","doors":"7","beds":"9","tiles":"259","guild":"0","clear":"0"},{"id":"51","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Dagger Alley 1","town":"1","size":"52","price":"2665","rent":"2665","doors":"2","beds":"2","tiles":"116","guild":"0","clear":"0"},{"id":"52","world_id":"0","owner":"515","paid":"1347292350","warnings":"0","lastwarning":"0","name":"Steel Home","town":"1","size":"219","price":"13845","rent":"13845","doors":"10","beds":"13","tiles":"462","guild":"0","clear":"0"},{"id":"53","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Iron Alley 1","town":"1","size":"61","price":"3450","rent":"3450","doors":"2","beds":"4","tiles":"120","guild":"0","clear":"0"},{"id":"54","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Iron Alley 2","town":"1","size":"64","price":"3450","rent":"3450","doors":"2","beds":"2","tiles":"144","guild":"0","clear":"0"},{"id":"55","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Swamp Watch","town":"1","size":"179","price":"11090","rent":"11090","doors":"12","beds":"12","tiles":"420","guild":"0","clear":"0"},{"id":"56","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #56","town":"0","size":"33","price":"48000","rent":"0","doors":"2","beds":"2","tiles":"48","guild":"0","clear":"1"},{"id":"57","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Salvation Street 2","town":"1","size":"76","price":"3790","rent":"3790","doors":"2","beds":"2","tiles":"135","guild":"0","clear":"0"},{"id":"58","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #58","town":"0","size":"41","price":"60000","rent":"0","doors":"3","beds":"4","tiles":"60","guild":"0","clear":"1"},{"id":"59","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron 59","town":"9","size":"81","price":"110000","rent":"0","doors":"3","beds":"11","tiles":"110","guild":"0","clear":"1"},{"id":"60","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Salvation Street 3","town":"1","size":"76","price":"3790","rent":"3790","doors":"2","beds":"2","tiles":"162","guild":"0","clear":"0"},{"id":"61","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Silver Street 3","town":"1","size":"41","price":"1980","rent":"1980","doors":"2","beds":"1","tiles":"84","guild":"0","clear":"0"},{"id":"62","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Golden Axe Guildhall","town":"1","size":"175","price":"10485","rent":"10485","doors":"12","beds":"10","tiles":"390","guild":"0","clear":"0"},{"id":"63","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Silver Street 1","town":"1","size":"54","price":"2565","rent":"2565","doors":"2","beds":"1","tiles":"129","guild":"0","clear":"0"},{"id":"64","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Silver Street 2","town":"1","size":"41","price":"1980","rent":"1980","doors":"2","beds":"1","tiles":"105","guild":"0","clear":"0"},{"id":"65","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron 65","town":"9","size":"119","price":"153000","rent":"0","doors":"5","beds":"6","tiles":"153","guild":"0","clear":"1"},{"id":"66","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Silver Street 4","town":"1","size":"66","price":"3295","rent":"3295","doors":"4","beds":"2","tiles":"153","guild":"0","clear":"0"},{"id":"67","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mystic Lane 2","town":"1","size":"58","price":"2980","rent":"2980","doors":"2","beds":"2","tiles":"137","guild":"0","clear":"0"},{"id":"68","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron 68","town":"9","size":"26","price":"39000","rent":"0","doors":"3","beds":"4","tiles":"39","guild":"0","clear":"1"},{"id":"69","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mystic Lane 1","town":"1","size":"51","price":"2945","rent":"2945","doors":"4","beds":"3","tiles":"112","guild":"0","clear":"0"},{"id":"70","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Loot Lane 1 (Shop)","town":"1","size":"88","price":"4565","rent":"4565","doors":"7","beds":"3","tiles":"198","guild":"0","clear":"0"},{"id":"71","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Market Street 6","town":"1","size":"102","price":"5485","rent":"5485","doors":"5","beds":"5","tiles":"217","guild":"0","clear":"0"},{"id":"72","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Market Street 7","town":"1","size":"44","price":"2305","rent":"2305","doors":"3","beds":"2","tiles":"114","guild":"0","clear":"0"},{"id":"73","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Market Street 5 (Shop)","town":"1","size":"119","price":"6375","rent":"6375","doors":"5","beds":"3","tiles":"243","guild":"0","clear":"0"},{"id":"74","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron 74","town":"9","size":"26","price":"32000","rent":"0","doors":"1","beds":"3","tiles":"32","guild":"0","clear":"1"},{"id":"75","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron 75","town":"9","size":"27","price":"43000","rent":"0","doors":"1","beds":"4","tiles":"43","guild":"0","clear":"1"},{"id":"76","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron 76","town":"9","size":"34","price":"51000","rent":"0","doors":"2","beds":"4","tiles":"51","guild":"0","clear":"1"},{"id":"77","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"GH 4","town":"9","size":"154","price":"280000","rent":"0","doors":"13","beds":"29","tiles":"280","guild":"0","clear":"1"},{"id":"78","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron 78","town":"9","size":"32","price":"43000","rent":"0","doors":"0","beds":"4","tiles":"43","guild":"0","clear":"1"},{"id":"79","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron 79","town":"9","size":"37","price":"62000","rent":"0","doors":"2","beds":"4","tiles":"62","guild":"0","clear":"1"},{"id":"80","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin Guild House 6","town":"2","size":"344","price":"410000","rent":"0","doors":"21","beds":"42","tiles":"410","guild":"0","clear":"1"},{"id":"81","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 75","town":"2","size":"21","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"82","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 76","town":"2","size":"20","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"83","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 77","town":"2","size":"20","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"84","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 78","town":"2","size":"122","price":"162000","rent":"0","doors":"10","beds":"20","tiles":"162","guild":"0","clear":"1"},{"id":"85","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron 85","town":"9","size":"11","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"86","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 79","town":"2","size":"31","price":"45000","rent":"0","doors":"1","beds":"4","tiles":"45","guild":"0","clear":"1"},{"id":"87","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 80","town":"2","size":"26","price":"37000","rent":"0","doors":"1","beds":"4","tiles":"37","guild":"0","clear":"1"},{"id":"88","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 81","town":"2","size":"42","price":"52000","rent":"0","doors":"1","beds":"4","tiles":"52","guild":"0","clear":"1"},{"id":"89","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 82","town":"2","size":"91","price":"100000","rent":"0","doors":"2","beds":"4","tiles":"100","guild":"0","clear":"1"},{"id":"90","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 83","town":"2","size":"346","price":"429000","rent":"0","doors":"17","beds":"38","tiles":"429","guild":"0","clear":"1"},{"id":"92","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Infernium House I","town":"6","size":"42","price":"215000","rent":"0","doors":"1","beds":"0","tiles":"43","guild":"0","clear":"1"},{"id":"93","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja 3","town":"2","size":"0","price":"34000","rent":"0","doors":"0","beds":"0","tiles":"34","guild":"0","clear":"1"},{"id":"94","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Infernium House III","town":"6","size":"52","price":"265000","rent":"0","doors":"0","beds":"0","tiles":"53","guild":"0","clear":"1"},{"id":"95","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja 5","town":"2","size":"0","price":"23000","rent":"0","doors":"0","beds":"0","tiles":"23","guild":"0","clear":"1"},{"id":"96","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Infernium Flats I","town":"6","size":"25","price":"130000","rent":"0","doors":"0","beds":"0","tiles":"26","guild":"0","clear":"1"},{"id":"97","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Infernium Flats II","town":"6","size":"25","price":"130000","rent":"0","doors":"0","beds":"0","tiles":"26","guild":"0","clear":"1"},{"id":"98","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja 8","town":"2","size":"0","price":"20000","rent":"0","doors":"0","beds":"0","tiles":"20","guild":"0","clear":"1"},{"id":"99","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Infernium Flats IV","town":"6","size":"25","price":"130000","rent":"0","doors":"0","beds":"0","tiles":"26","guild":"0","clear":"1"},{"id":"100","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Infernium Flats V","town":"6","size":"25","price":"130000","rent":"0","doors":"0","beds":"0","tiles":"26","guild":"0","clear":"1"},{"id":"101","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Infernium Flats VI","town":"6","size":"25","price":"130000","rent":"0","doors":"0","beds":"0","tiles":"26","guild":"0","clear":"1"},{"id":"102","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Infernium Flats VII","town":"6","size":"25","price":"130000","rent":"0","doors":"0","beds":"0","tiles":"26","guild":"0","clear":"1"},{"id":"103","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Infernium Flats VIII","town":"6","size":"25","price":"130000","rent":"0","doors":"0","beds":"0","tiles":"26","guild":"0","clear":"1"},{"id":"104","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Infernium Flats IX","town":"6","size":"25","price":"130000","rent":"0","doors":"0","beds":"0","tiles":"26","guild":"0","clear":"1"},{"id":"105","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja 15","town":"2","size":"0","price":"93000","rent":"0","doors":"0","beds":"0","tiles":"93","guild":"0","clear":"1"},{"id":"106","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 1","town":"3","size":"27","price":"37000","rent":"0","doors":"1","beds":"4","tiles":"37","guild":"0","clear":"1"},{"id":"107","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 2","town":"3","size":"26","price":"36000","rent":"0","doors":"0","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"108","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 3","town":"3","size":"19","price":"31000","rent":"0","doors":"1","beds":"6","tiles":"31","guild":"0","clear":"1"},{"id":"109","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 4","town":"3","size":"27","price":"41000","rent":"0","doors":"0","beds":"6","tiles":"41","guild":"0","clear":"1"},{"id":"110","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 5","town":"3","size":"10","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"111","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 6","town":"3","size":"34","price":"51000","rent":"0","doors":"1","beds":"8","tiles":"51","guild":"0","clear":"1"},{"id":"112","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 7","town":"3","size":"24","price":"31000","rent":"0","doors":"1","beds":"6","tiles":"31","guild":"0","clear":"1"},{"id":"113","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 8","town":"3","size":"7","price":"10000","rent":"0","doors":"1","beds":"2","tiles":"10","guild":"0","clear":"1"},{"id":"114","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 9","town":"3","size":"10","price":"13000","rent":"0","doors":"1","beds":"2","tiles":"13","guild":"0","clear":"1"},{"id":"115","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 10","town":"3","size":"10","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"116","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 11","town":"3","size":"6","price":"11000","rent":"0","doors":"1","beds":"2","tiles":"11","guild":"0","clear":"1"},{"id":"117","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 12","town":"3","size":"10","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"118","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 13","town":"3","size":"6","price":"13000","rent":"0","doors":"1","beds":"2","tiles":"13","guild":"0","clear":"1"},{"id":"119","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 14","town":"3","size":"10","price":"14000","rent":"0","doors":"1","beds":"2","tiles":"14","guild":"0","clear":"1"},{"id":"120","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 15","town":"3","size":"6","price":"11000","rent":"0","doors":"1","beds":"2","tiles":"11","guild":"0","clear":"1"},{"id":"121","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 16","town":"3","size":"10","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"122","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 17","town":"3","size":"6","price":"13000","rent":"0","doors":"1","beds":"2","tiles":"13","guild":"0","clear":"1"},{"id":"123","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 18","town":"3","size":"10","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"124","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 19","town":"3","size":"12","price":"22000","rent":"0","doors":"1","beds":"4","tiles":"22","guild":"0","clear":"1"},{"id":"125","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 20","town":"3","size":"12","price":"19000","rent":"0","doors":"1","beds":"2","tiles":"19","guild":"0","clear":"1"},{"id":"126","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 21","town":"3","size":"12","price":"22000","rent":"0","doors":"1","beds":"4","tiles":"22","guild":"0","clear":"1"},{"id":"127","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 22","town":"3","size":"12","price":"19000","rent":"0","doors":"1","beds":"4","tiles":"19","guild":"0","clear":"1"},{"id":"128","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 23","town":"3","size":"21","price":"33000","rent":"0","doors":"1","beds":"6","tiles":"33","guild":"0","clear":"1"},{"id":"129","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 24","town":"3","size":"12","price":"19000","rent":"0","doors":"1","beds":"4","tiles":"19","guild":"0","clear":"1"},{"id":"130","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 25","town":"3","size":"10","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"131","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 26","town":"3","size":"21","price":"30000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"132","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 27","town":"3","size":"12","price":"21000","rent":"0","doors":"1","beds":"4","tiles":"21","guild":"0","clear":"1"},{"id":"133","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 28","town":"3","size":"19","price":"30000","rent":"0","doors":"1","beds":"6","tiles":"30","guild":"0","clear":"1"},{"id":"134","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 29","town":"3","size":"16","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"135","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 30","town":"3","size":"20","price":"29000","rent":"0","doors":"1","beds":"4","tiles":"29","guild":"0","clear":"1"},{"id":"136","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 31","town":"3","size":"24","price":"36000","rent":"0","doors":"1","beds":"6","tiles":"36","guild":"0","clear":"1"},{"id":"137","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 32","town":"3","size":"11","price":"17000","rent":"0","doors":"1","beds":"4","tiles":"17","guild":"0","clear":"1"},{"id":"138","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 33","town":"3","size":"11","price":"16000","rent":"0","doors":"1","beds":"4","tiles":"16","guild":"0","clear":"1"},{"id":"139","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 34","town":"3","size":"17","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"140","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 35","town":"3","size":"14","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"141","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 36","town":"3","size":"21","price":"31000","rent":"0","doors":"1","beds":"4","tiles":"31","guild":"0","clear":"1"},{"id":"142","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 37","town":"3","size":"24","price":"31000","rent":"0","doors":"1","beds":"2","tiles":"31","guild":"0","clear":"1"},{"id":"143","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 38","town":"3","size":"9","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"144","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 39","town":"3","size":"16","price":"24000","rent":"0","doors":"1","beds":"4","tiles":"24","guild":"0","clear":"1"},{"id":"145","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 40","town":"3","size":"14","price":"20000","rent":"0","doors":"0","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"146","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 41","town":"3","size":"18","price":"33000","rent":"0","doors":"3","beds":"2","tiles":"33","guild":"0","clear":"1"},{"id":"147","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 42","town":"3","size":"6","price":"12000","rent":"0","doors":"1","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"148","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"42","price":"230000","rent":"0","doors":"2","beds":"2","tiles":"46","guild":"0","clear":"1"},{"id":"149","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"42","price":"230000","rent":"0","doors":"2","beds":"2","tiles":"46","guild":"0","clear":"1"},{"id":"150","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"26","price":"155000","rent":"0","doors":"1","beds":"4","tiles":"31","guild":"0","clear":"1"},{"id":"151","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"20","price":"135000","rent":"0","doors":"1","beds":"4","tiles":"27","guild":"0","clear":"1"},{"id":"152","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"14","price":"120000","rent":"0","doors":"1","beds":"4","tiles":"24","guild":"0","clear":"1"},{"id":"153","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"20","price":"150000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"154","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"20","price":"150000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"155","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel 50","town":"3","size":"10","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"156","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"78","price":"445000","rent":"0","doors":"3","beds":"4","tiles":"89","guild":"0","clear":"1"},{"id":"157","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"94","price":"800000","rent":"0","doors":"6","beds":"4","tiles":"160","guild":"0","clear":"1"},{"id":"158","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"47","price":"275000","rent":"0","doors":"1","beds":"3","tiles":"55","guild":"0","clear":"1"},{"id":"159","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"33","price":"305000","rent":"0","doors":"4","beds":"2","tiles":"61","guild":"0","clear":"1"},{"id":"160","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"72","price":"575000","rent":"0","doors":"1","beds":"3","tiles":"115","guild":"0","clear":"1"},{"id":"161","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"64","price":"435000","rent":"0","doors":"1","beds":"4","tiles":"87","guild":"0","clear":"1"},{"id":"162","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"66","price":"420000","rent":"0","doors":"3","beds":"2","tiles":"84","guild":"0","clear":"1"},{"id":"163","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"39","price":"265000","rent":"0","doors":"2","beds":"4","tiles":"53","guild":"0","clear":"1"},{"id":"164","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"39","price":"285000","rent":"0","doors":"2","beds":"4","tiles":"57","guild":"0","clear":"1"},{"id":"165","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"38","price":"280000","rent":"0","doors":"2","beds":"4","tiles":"56","guild":"0","clear":"1"},{"id":"166","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"50","price":"325000","rent":"0","doors":"3","beds":"4","tiles":"65","guild":"0","clear":"1"},{"id":"167","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"50","price":"325000","rent":"0","doors":"3","beds":"4","tiles":"65","guild":"0","clear":"1"},{"id":"168","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"50","price":"335000","rent":"0","doors":"3","beds":"4","tiles":"67","guild":"0","clear":"1"},{"id":"169","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"16","price":"95000","rent":"0","doors":"1","beds":"2","tiles":"19","guild":"0","clear":"1"},{"id":"170","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"16","price":"100000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"171","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"16","price":"95000","rent":"0","doors":"1","beds":"2","tiles":"19","guild":"0","clear":"1"},{"id":"172","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"16","price":"95000","rent":"0","doors":"1","beds":"2","tiles":"19","guild":"0","clear":"1"},{"id":"173","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"48","price":"335000","rent":"0","doors":"3","beds":"6","tiles":"67","guild":"0","clear":"1"},{"id":"174","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"48","price":"325000","rent":"0","doors":"3","beds":"6","tiles":"65","guild":"0","clear":"1"},{"id":"175","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"51","price":"455000","rent":"0","doors":"1","beds":"4","tiles":"91","guild":"0","clear":"1"},{"id":"176","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"49","price":"270000","rent":"0","doors":"1","beds":"0","tiles":"54","guild":"0","clear":"1"},{"id":"177","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"52","price":"285000","rent":"0","doors":"1","beds":"0","tiles":"57","guild":"0","clear":"1"},{"id":"178","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel Guild House 1","town":"3","size":"263","price":"331000","rent":"0","doors":"11","beds":"20","tiles":"331","guild":"0","clear":"1"},{"id":"179","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'dendriel Guild House 2","town":"3","size":"426","price":"501000","rent":"0","doors":"21","beds":"36","tiles":"501","guild":"0","clear":"1"},{"id":"180","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"18","price":"120000","rent":"0","doors":"2","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"181","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"14","price":"85000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"182","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"12","price":"135000","rent":"0","doors":"1","beds":"2","tiles":"27","guild":"0","clear":"1"},{"id":"183","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"16","price":"140000","rent":"0","doors":"1","beds":"4","tiles":"28","guild":"0","clear":"1"},{"id":"184","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kazordoon 5","town":"4","size":"7","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"185","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"61","price":"370000","rent":"0","doors":"3","beds":"2","tiles":"74","guild":"0","clear":"1"},{"id":"186","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"29","price":"275000","rent":"0","doors":"6","beds":"2","tiles":"55","guild":"0","clear":"1"},{"id":"187","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"36","price":"350000","rent":"0","doors":"3","beds":"4","tiles":"70","guild":"0","clear":"1"},{"id":"188","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"65","price":"510000","rent":"0","doors":"1","beds":"4","tiles":"102","guild":"0","clear":"1"},{"id":"189","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"66","price":"550000","rent":"0","doors":"3","beds":"2","tiles":"110","guild":"0","clear":"1"},{"id":"190","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"64","price":"555000","rent":"0","doors":"5","beds":"4","tiles":"111","guild":"0","clear":"1"},{"id":"191","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"4","price":"40000","rent":"0","doors":"1","beds":"2","tiles":"8","guild":"0","clear":"1"},{"id":"192","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"6","price":"45000","rent":"0","doors":"1","beds":"2","tiles":"9","guild":"0","clear":"1"},{"id":"193","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"8","price":"55000","rent":"0","doors":"1","beds":"2","tiles":"11","guild":"0","clear":"1"},{"id":"194","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lucky Lane 1 (Shop)","town":"1","size":"132","price":"6960","rent":"6960","doors":"6","beds":"4","tiles":"270","guild":"0","clear":"0"},{"id":"195","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kazordoon 16","town":"4","size":"4","price":"10000","rent":"0","doors":"1","beds":"2","tiles":"10","guild":"0","clear":"1"},{"id":"196","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kazordoon 17","town":"4","size":"7","price":"10000","rent":"0","doors":"1","beds":"2","tiles":"10","guild":"0","clear":"1"},{"id":"197","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kazordoon 18","town":"4","size":"7","price":"10000","rent":"0","doors":"1","beds":"2","tiles":"10","guild":"0","clear":"1"},{"id":"198","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"6","price":"45000","rent":"0","doors":"1","beds":"2","tiles":"9","guild":"0","clear":"1"},{"id":"199","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"16","price":"165000","rent":"0","doors":"1","beds":"2","tiles":"33","guild":"0","clear":"1"},{"id":"200","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"8","price":"85000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"201","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"6","price":"45000","rent":"0","doors":"1","beds":"2","tiles":"9","guild":"0","clear":"1"},{"id":"202","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"6","price":"45000","rent":"0","doors":"1","beds":"2","tiles":"9","guild":"0","clear":"1"},{"id":"203","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"8","price":"55000","rent":"0","doors":"1","beds":"2","tiles":"11","guild":"0","clear":"1"},{"id":"204","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"67","price":"555000","rent":"0","doors":"2","beds":"2","tiles":"111","guild":"0","clear":"1"},{"id":"205","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"67","price":"510000","rent":"0","doors":"3","beds":"2","tiles":"102","guild":"0","clear":"1"},{"id":"206","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kazordoon 27","town":"4","size":"4","price":"10000","rent":"0","doors":"1","beds":"2","tiles":"10","guild":"0","clear":"1"},{"id":"207","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kazordoon 28","town":"4","size":"7","price":"14000","rent":"0","doors":"1","beds":"2","tiles":"14","guild":"0","clear":"1"},{"id":"208","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Underwood 1","town":"5","size":"26","price":"1495","rent":"1495","doors":"1","beds":"2","tiles":"54","guild":"0","clear":"0"},{"id":"209","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Underwood 2","town":"5","size":"27","price":"1495","rent":"1495","doors":"1","beds":"2","tiles":"55","guild":"0","clear":"0"},{"id":"210","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Underwood 5","town":"5","size":"19","price":"1370","rent":"1370","doors":"1","beds":"3","tiles":"48","guild":"0","clear":"0"},{"id":"211","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Underwood 3","town":"5","size":"26","price":"1685","rent":"1685","doors":"1","beds":"3","tiles":"57","guild":"0","clear":"0"},{"id":"212","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Underwood 4","town":"5","size":"35","price":"2235","rent":"2235","doors":"1","beds":"4","tiles":"70","guild":"0","clear":"0"},{"id":"213","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Underwood 10","town":"5","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"23","guild":"0","clear":"0"},{"id":"214","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Underwood 6","town":"5","size":"24","price":"1595","rent":"1595","doors":"1","beds":"3","tiles":"55","guild":"0","clear":"0"},{"id":"215","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 1a","town":"5","size":"7","price":"500","rent":"500","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"216","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 1b","town":"5","size":"10","price":"650","rent":"650","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"217","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 1c","town":"5","size":"10","price":"650","rent":"650","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"218","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 2d","town":"5","size":"6","price":"450","rent":"450","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"219","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 2c","town":"5","size":"10","price":"650","rent":"650","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"220","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 2b","town":"5","size":"6","price":"450","rent":"450","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"221","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 2a","town":"5","size":"11","price":"650","rent":"650","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"222","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 3d","town":"5","size":"6","price":"450","rent":"450","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"223","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 3c","town":"5","size":"10","price":"650","rent":"650","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"224","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 3b","town":"5","size":"6","price":"450","rent":"450","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"225","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 3a","town":"5","size":"10","price":"650","rent":"650","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"226","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 4b","town":"5","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"27","guild":"0","clear":"0"},{"id":"227","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 4c","town":"5","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"31","guild":"0","clear":"0"},{"id":"228","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 4d","town":"5","size":"12","price":"750","rent":"750","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"229","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Great Willow 4a","town":"5","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"230","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Underwood 7","town":"5","size":"21","price":"1460","rent":"1460","doors":"1","beds":"3","tiles":"49","guild":"0","clear":"0"},{"id":"231","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 3","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"232","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 4","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"233","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 2","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"234","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 1","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"19","guild":"0","clear":"0"},{"id":"235","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 17","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"236","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 18","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"237","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 15","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"238","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 16","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"19","guild":"0","clear":"0"},{"id":"239","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 13","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"19","guild":"0","clear":"0"},{"id":"240","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 14","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"241","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 11","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"19","guild":"0","clear":"0"},{"id":"242","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 12","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"243","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 27","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"244","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 28","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"245","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 25","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"246","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 26","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"247","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 23","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"248","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 24","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"249","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 21","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"19","guild":"0","clear":"0"},{"id":"250","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Caves 22","town":"5","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"251","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Underwood 9","town":"5","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"28","guild":"0","clear":"0"},{"id":"252","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 13","town":"5","size":"21","price":"1400","rent":"1400","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"253","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 2","town":"5","size":"35","price":"45000","rent":"0","doors":"3","beds":"4","tiles":"45","guild":"0","clear":"1"},{"id":"254","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Underwood 8","town":"5","size":"13","price":"865","rent":"865","doors":"1","beds":"2","tiles":"34","guild":"0","clear":"0"},{"id":"255","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mangrove 4","town":"5","size":"13","price":"950","rent":"950","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"256","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coastwood 10","town":"5","size":"19","price":"1630","rent":"1630","doors":"1","beds":"3","tiles":"48","guild":"0","clear":"0"},{"id":"257","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mangrove 1","town":"5","size":"24","price":"1750","rent":"1750","doors":"1","beds":"3","tiles":"54","guild":"0","clear":"0"},{"id":"258","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coastwood 1","town":"5","size":"11","price":"980","rent":"980","doors":"1","beds":"2","tiles":"34","guild":"0","clear":"0"},{"id":"259","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coastwood 2","town":"5","size":"11","price":"980","rent":"980","doors":"1","beds":"2","tiles":"28","guild":"0","clear":"0"},{"id":"260","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mangrove 2","town":"5","size":"20","price":"1350","rent":"1350","doors":"1","beds":"2","tiles":"47","guild":"0","clear":"0"},{"id":"261","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 10","town":"5","size":"17","price":"21000","rent":"0","doors":"1","beds":"4","tiles":"21","guild":"0","clear":"1"},{"id":"262","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mangrove 3","town":"5","size":"16","price":"1150","rent":"1150","doors":"1","beds":"2","tiles":"41","guild":"0","clear":"0"},{"id":"263","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coastwood 9","town":"5","size":"14","price":"935","rent":"935","doors":"1","beds":"1","tiles":"34","guild":"0","clear":"0"},{"id":"264","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coastwood 8","town":"5","size":"17","price":"1255","rent":"1255","doors":"1","beds":"2","tiles":"41","guild":"0","clear":"0"},{"id":"265","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coastwood 6 (Shop)","town":"5","size":"24","price":"1595","rent":"1595","doors":"3","beds":"1","tiles":"51","guild":"0","clear":"0"},{"id":"266","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coastwood 7","town":"5","size":"9","price":"660","rent":"660","doors":"1","beds":"1","tiles":"29","guild":"0","clear":"0"},{"id":"267","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coastwood 5","town":"5","size":"21","price":"1530","rent":"1530","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"268","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coastwood 4","town":"5","size":"14","price":"1145","rent":"1145","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"269","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coastwood 3","town":"5","size":"17","price":"1310","rent":"1310","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"270","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 11","town":"5","size":"11","price":"900","rent":"900","doors":"1","beds":"2","tiles":"34","guild":"0","clear":"0"},{"id":"271","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 5 (Shop)","town":"5","size":"18","price":"1350","rent":"1350","doors":"3","beds":"1","tiles":"53","guild":"0","clear":"0"},{"id":"272","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 7","town":"5","size":"14","price":"800","rent":"800","doors":"1","beds":"1","tiles":"28","guild":"0","clear":"0"},{"id":"273","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 6","town":"5","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"23","guild":"0","clear":"0"},{"id":"274","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 8","town":"5","size":"14","price":"800","rent":"800","doors":"1","beds":"1","tiles":"35","guild":"0","clear":"0"},{"id":"275","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 9","town":"5","size":"16","price":"1150","rent":"1150","doors":"1","beds":"2","tiles":"34","guild":"0","clear":"0"},{"id":"276","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 10","town":"5","size":"16","price":"1150","rent":"1150","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"277","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 4 (Shop)","town":"5","size":"20","price":"1250","rent":"1250","doors":"2","beds":"1","tiles":"48","guild":"0","clear":"0"},{"id":"278","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 3 (Shop)","town":"5","size":"20","price":"1250","rent":"1250","doors":"2","beds":"1","tiles":"60","guild":"0","clear":"0"},{"id":"279","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 2","town":"5","size":"10","price":"650","rent":"650","doors":"1","beds":"1","tiles":"29","guild":"0","clear":"0"},{"id":"280","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 1","town":"5","size":"10","price":"650","rent":"650","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"281","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Treetop 12 (Shop)","town":"5","size":"20","price":"1350","rent":"1350","doors":"3","beds":"1","tiles":"53","guild":"0","clear":"0"},{"id":"282","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 31","town":"5","size":"129","price":"142000","rent":"0","doors":"4","beds":"0","tiles":"142","guild":"0","clear":"1"},{"id":"283","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 32","town":"5","size":"17","price":"17000","rent":"0","doors":"1","beds":"0","tiles":"17","guild":"0","clear":"1"},{"id":"284","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 33","town":"5","size":"17","price":"17000","rent":"0","doors":"1","beds":"0","tiles":"17","guild":"0","clear":"1"},{"id":"285","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 34","town":"5","size":"17","price":"17000","rent":"0","doors":"1","beds":"0","tiles":"17","guild":"0","clear":"1"},{"id":"286","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 35","town":"5","size":"17","price":"17000","rent":"0","doors":"1","beds":"0","tiles":"17","guild":"0","clear":"1"},{"id":"287","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 36","town":"5","size":"16","price":"17000","rent":"0","doors":"1","beds":"0","tiles":"17","guild":"0","clear":"1"},{"id":"288","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 37","town":"5","size":"17","price":"17000","rent":"0","doors":"1","beds":"0","tiles":"17","guild":"0","clear":"1"},{"id":"289","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 38","town":"5","size":"24","price":"25000","rent":"0","doors":"1","beds":"0","tiles":"25","guild":"0","clear":"1"},{"id":"290","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 39","town":"5","size":"24","price":"25000","rent":"0","doors":"1","beds":"0","tiles":"25","guild":"0","clear":"1"},{"id":"291","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 40","town":"5","size":"18","price":"20000","rent":"0","doors":"2","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"292","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 41","town":"5","size":"25","price":"30000","rent":"0","doors":"2","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"293","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 42","town":"5","size":"24","price":"30000","rent":"0","doors":"2","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"294","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 43","town":"5","size":"17","price":"20000","rent":"0","doors":"2","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"295","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 44","town":"5","size":"16","price":"20000","rent":"0","doors":"2","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"296","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 45","town":"5","size":"14","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"297","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 46","town":"5","size":"15","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"298","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 47","town":"5","size":"15","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"299","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 48","town":"5","size":"15","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"300","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 49","town":"5","size":"15","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"301","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 50","town":"5","size":"17","price":"19000","rent":"0","doors":"1","beds":"2","tiles":"19","guild":"0","clear":"1"},{"id":"302","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 51","town":"5","size":"23","price":"29000","rent":"0","doors":"2","beds":"3","tiles":"29","guild":"0","clear":"1"},{"id":"303","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 52","town":"5","size":"23","price":"30000","rent":"0","doors":"2","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"304","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 53","town":"5","size":"17","price":"20000","rent":"0","doors":"2","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"305","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 54","town":"5","size":"18","price":"20000","rent":"0","doors":"2","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"306","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 55","town":"5","size":"14","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"307","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 56","town":"5","size":"63","price":"82000","rent":"0","doors":"7","beds":"4","tiles":"82","guild":"0","clear":"1"},{"id":"308","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 57","town":"5","size":"63","price":"89000","rent":"0","doors":"7","beds":"4","tiles":"89","guild":"0","clear":"1"},{"id":"309","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 58","town":"5","size":"67","price":"102000","rent":"0","doors":"7","beds":"4","tiles":"102","guild":"0","clear":"1"},{"id":"310","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 59","town":"5","size":"63","price":"145000","rent":"0","doors":"7","beds":"4","tiles":"145","guild":"0","clear":"1"},{"id":"311","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 60","town":"5","size":"45","price":"50000","rent":"0","doors":"2","beds":"0","tiles":"50","guild":"0","clear":"1"},{"id":"312","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 61","town":"5","size":"55","price":"62000","rent":"0","doors":"1","beds":"0","tiles":"62","guild":"0","clear":"1"},{"id":"313","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 62","town":"5","size":"20","price":"21000","rent":"0","doors":"1","beds":"0","tiles":"21","guild":"0","clear":"1"},{"id":"316","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 63","town":"5","size":"18","price":"19000","rent":"0","doors":"1","beds":"0","tiles":"19","guild":"0","clear":"1"},{"id":"317","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 66","town":"5","size":"19","price":"19000","rent":"0","doors":"1","beds":"0","tiles":"19","guild":"0","clear":"1"},{"id":"318","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 67","town":"5","size":"12","price":"13000","rent":"0","doors":"1","beds":"0","tiles":"13","guild":"0","clear":"1"},{"id":"319","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 68","town":"5","size":"12","price":"13000","rent":"0","doors":"1","beds":"0","tiles":"13","guild":"0","clear":"1"},{"id":"320","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 69","town":"5","size":"13","price":"13000","rent":"0","doors":"1","beds":"0","tiles":"13","guild":"0","clear":"1"},{"id":"321","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 70","town":"5","size":"13","price":"13000","rent":"0","doors":"1","beds":"0","tiles":"13","guild":"0","clear":"1"},{"id":"322","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 71","town":"5","size":"12","price":"13000","rent":"0","doors":"1","beds":"0","tiles":"13","guild":"0","clear":"1"},{"id":"323","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 72","town":"5","size":"13","price":"13000","rent":"0","doors":"1","beds":"0","tiles":"13","guild":"0","clear":"1"},{"id":"324","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 73","town":"5","size":"15","price":"16000","rent":"0","doors":"1","beds":"0","tiles":"16","guild":"0","clear":"1"},{"id":"325","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 74","town":"5","size":"15","price":"16000","rent":"0","doors":"1","beds":"0","tiles":"16","guild":"0","clear":"1"},{"id":"326","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 75","town":"5","size":"7","price":"7000","rent":"0","doors":"1","beds":"0","tiles":"7","guild":"0","clear":"1"},{"id":"327","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 76","town":"5","size":"6","price":"7000","rent":"0","doors":"1","beds":"0","tiles":"7","guild":"0","clear":"1"},{"id":"328","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 77","town":"5","size":"12","price":"30000","rent":"0","doors":"1","beds":"0","tiles":"30","guild":"0","clear":"1"},{"id":"329","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 78","town":"5","size":"12","price":"30000","rent":"0","doors":"1","beds":"0","tiles":"30","guild":"0","clear":"1"},{"id":"330","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 79","town":"5","size":"13","price":"24000","rent":"0","doors":"1","beds":"0","tiles":"24","guild":"0","clear":"1"},{"id":"331","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 80","town":"5","size":"13","price":"29000","rent":"0","doors":"1","beds":"0","tiles":"29","guild":"0","clear":"1"},{"id":"332","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 81","town":"5","size":"18","price":"30000","rent":"0","doors":"1","beds":"0","tiles":"30","guild":"0","clear":"1"},{"id":"333","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 82","town":"5","size":"12","price":"25000","rent":"0","doors":"1","beds":"0","tiles":"25","guild":"0","clear":"1"},{"id":"334","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 83","town":"5","size":"13","price":"30000","rent":"0","doors":"1","beds":"0","tiles":"30","guild":"0","clear":"1"},{"id":"335","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 84","town":"5","size":"12","price":"29000","rent":"0","doors":"1","beds":"0","tiles":"29","guild":"0","clear":"1"},{"id":"336","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 85","town":"5","size":"17","price":"19000","rent":"0","doors":"1","beds":"0","tiles":"19","guild":"0","clear":"1"},{"id":"337","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 86","town":"5","size":"13","price":"27000","rent":"0","doors":"1","beds":"0","tiles":"27","guild":"0","clear":"1"},{"id":"338","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 87","town":"5","size":"12","price":"25000","rent":"0","doors":"1","beds":"0","tiles":"25","guild":"0","clear":"1"},{"id":"339","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Inittria's Condominium III","town":"1","size":"28","price":"3750","rent":"3750","doors":"8","beds":"4","tiles":"63","guild":"0","clear":"1"},{"id":"340","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 89","town":"5","size":"21","price":"41000","rent":"0","doors":"2","beds":"0","tiles":"41","guild":"0","clear":"1"},{"id":"341","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Inittria's Condominium V","town":"1","size":"30","price":"4250","rent":"4250","doors":"9","beds":"2","tiles":"62","guild":"0","clear":"1"},{"id":"342","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore 1","town":"5","size":"248","price":"325000","rent":"0","doors":"14","beds":"24","tiles":"325","guild":"0","clear":"1"},{"id":"343","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore 2","town":"5","size":"129","price":"164000","rent":"0","doors":"11","beds":"19","tiles":"164","guild":"0","clear":"1"},{"id":"344","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore 3","town":"5","size":"30","price":"37000","rent":"0","doors":"1","beds":"6","tiles":"37","guild":"0","clear":"1"},{"id":"345","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore 4","town":"5","size":"23","price":"37000","rent":"0","doors":"1","beds":"4","tiles":"37","guild":"0","clear":"1"},{"id":"346","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore 5","town":"5","size":"24","price":"25000","rent":"0","doors":"1","beds":"0","tiles":"25","guild":"0","clear":"1"},{"id":"347","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore 6","town":"5","size":"21","price":"26000","rent":"0","doors":"0","beds":"2","tiles":"26","guild":"0","clear":"1"},{"id":"348","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore 7","town":"5","size":"119","price":"146000","rent":"0","doors":"7","beds":"12","tiles":"146","guild":"0","clear":"1"},{"id":"349","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore 8","town":"5","size":"18","price":"21000","rent":"0","doors":"1","beds":"2","tiles":"21","guild":"0","clear":"1"},{"id":"350","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore 9","town":"5","size":"113","price":"143000","rent":"0","doors":"8","beds":"8","tiles":"143","guild":"0","clear":"1"},{"id":"351","world_id":"0","owner":"50","paid":"1346932027","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"2","beds":"0","tiles":"44","guild":"0","clear":"0"},{"id":"352","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"2","beds":"0","tiles":"23","guild":"0","clear":"0"},{"id":"353","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 91","town":"5","size":"11","price":"21000","rent":"0","doors":"0","beds":"0","tiles":"21","guild":"0","clear":"1"},{"id":"354","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 94","town":"5","size":"23","price":"37000","rent":"0","doors":"2","beds":"0","tiles":"37","guild":"0","clear":"1"},{"id":"355","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 95","town":"5","size":"17","price":"23000","rent":"0","doors":"2","beds":"0","tiles":"23","guild":"0","clear":"1"},{"id":"356","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 96","town":"5","size":"319","price":"591000","rent":"0","doors":"17","beds":"46","tiles":"591","guild":"0","clear":"1"},{"id":"358","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula 3","town":"5","size":"111","price":"137000","rent":"0","doors":"6","beds":"14","tiles":"137","guild":"0","clear":"1"},{"id":"363","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula 8","town":"5","size":"19","price":"30000","rent":"0","doors":"0","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"364","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula 9","town":"5","size":"223","price":"249000","rent":"0","doors":"8","beds":"12","tiles":"249","guild":"0","clear":"1"},{"id":"365","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"103","price":"119000","rent":"0","doors":"3","beds":"0","tiles":"119","guild":"0","clear":"1"},{"id":"366","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais Guild House 2","town":"5","size":"299","price":"347000","rent":"0","doors":"20","beds":"0","tiles":"347","guild":"0","clear":"1"},{"id":"367","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais Guild House 3","town":"5","size":"136","price":"158000","rent":"0","doors":"11","beds":"6","tiles":"158","guild":"0","clear":"1"},{"id":"368","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais Guild House 4","town":"5","size":"515","price":"640000","rent":"0","doors":"28","beds":"42","tiles":"640","guild":"0","clear":"1"},{"id":"369","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais Guild House 5","town":"5","size":"535","price":"835000","rent":"0","doors":"38","beds":"69","tiles":"835","guild":"0","clear":"1"},{"id":"370","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"33","price":"35000","rent":"35000","doors":"2","beds":"2","tiles":"46","guild":"0","clear":"0"},{"id":"371","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"16","price":"16000","rent":"16000","doors":"2","beds":"0","tiles":"32","guild":"0","clear":"0"},{"id":"372","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"36","price":"39000","rent":"39000","doors":"3","beds":"3","tiles":"51","guild":"0","clear":"0"},{"id":"373","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"36","price":"39000","rent":"39000","doors":"3","beds":"3","tiles":"54","guild":"0","clear":"0"},{"id":"374","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"36","price":"39000","rent":"39000","doors":"3","beds":"3","tiles":"51","guild":"0","clear":"0"},{"id":"375","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"65","price":"71000","rent":"71000","doors":"7","beds":"6","tiles":"100","guild":"0","clear":"0"},{"id":"376","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"7","price":"8000","rent":"8000","doors":"2","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"377","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"2","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"378","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"30","price":"31000","rent":"31000","doors":"2","beds":"1","tiles":"40","guild":"0","clear":"0"},{"id":"379","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"8","price":"9000","rent":"9000","doors":"2","beds":"1","tiles":"21","guild":"0","clear":"0"},{"id":"380","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"10","price":"11000","rent":"11000","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"381","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"13","price":"14000","rent":"14000","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"382","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"10","price":"11000","rent":"11000","doors":"1","beds":"1","tiles":"13","guild":"0","clear":"0"},{"id":"383","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"8","price":"9000","rent":"9000","doors":"1","beds":"1","tiles":"11","guild":"0","clear":"0"},{"id":"384","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"8","price":"9000","rent":"9000","doors":"1","beds":"1","tiles":"11","guild":"0","clear":"0"},{"id":"385","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"10","price":"11000","rent":"11000","doors":"1","beds":"1","tiles":"13","guild":"0","clear":"0"},{"id":"386","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"13","price":"14000","rent":"14000","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"387","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"10","price":"11000","rent":"11000","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"388","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"8","price":"9000","rent":"9000","doors":"2","beds":"1","tiles":"21","guild":"0","clear":"0"},{"id":"390","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"16","price":"17000","rent":"17000","doors":"1","beds":"1","tiles":"22","guild":"0","clear":"0"},{"id":"391","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"12","price":"13000","rent":"13000","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"392","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"9","price":"10000","rent":"10000","doors":"1","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"393","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"13","price":"14000","rent":"14000","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"394","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"10","price":"11000","rent":"11000","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"395","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"20","price":"22000","rent":"22000","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"396","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"14","price":"15000","rent":"15000","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"397","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"11","price":"12000","rent":"12000","doors":"1","beds":"1","tiles":"14","guild":"0","clear":"0"},{"id":"398","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"9","price":"10000","rent":"10000","doors":"1","beds":"1","tiles":"14","guild":"0","clear":"0"},{"id":"399","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"13","price":"14000","rent":"14000","doors":"1","beds":"1","tiles":"17","guild":"0","clear":"0"},{"id":"400","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"34","price":"36000","rent":"36000","doors":"1","beds":"2","tiles":"46","guild":"0","clear":"0"},{"id":"401","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"402","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"1","beds":"2","tiles":"23","guild":"0","clear":"0"},{"id":"403","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"17","price":"18000","rent":"18000","doors":"1","beds":"1","tiles":"23","guild":"0","clear":"0"},{"id":"404","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"32","price":"33000","rent":"33000","doors":"3","beds":"1","tiles":"45","guild":"0","clear":"0"},{"id":"405","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"44","price":"46000","rent":"46000","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"406","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"23","price":"24000","rent":"24000","doors":"3","beds":"1","tiles":"37","guild":"0","clear":"0"},{"id":"407","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"15","price":"16000","rent":"16000","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"408","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"93","price":"97000","rent":"97000","doors":"5","beds":"4","tiles":"141","guild":"0","clear":"0"},{"id":"409","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"23","price":"25000","rent":"25000","doors":"3","beds":"2","tiles":"45","guild":"0","clear":"0"},{"id":"410","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"1598618192","price":"0","rent":"0","doors":"1","beds":"0","tiles":"34","guild":"0","clear":"0"},{"id":"411","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"10","price":"11000","rent":"11000","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"412","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"9","price":"10000","rent":"10000","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"413","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"108","price":"116000","rent":"116000","doors":"6","beds":"8","tiles":"176","guild":"0","clear":"0"},{"id":"414","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"10","price":"11000","rent":"11000","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"415","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"8","price":"9000","rent":"9000","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"416","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"12","price":"13000","rent":"13000","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"417","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"2","beds":"1","tiles":"14","guild":"0","clear":"0"},{"id":"418","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"16","price":"17000","rent":"17000","doors":"4","beds":"1","tiles":"26","guild":"0","clear":"0"},{"id":"419","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"20","price":"21000","rent":"21000","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"420","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"26","price":"27000","rent":"27000","doors":"2","beds":"1","tiles":"34","guild":"0","clear":"0"},{"id":"421","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"12","price":"13000","rent":"13000","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"422","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"23","price":"25000","rent":"25000","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"423","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"9","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"424","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"12","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"425","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"16","price":"19000","rent":"0","doors":"0","beds":"2","tiles":"19","guild":"0","clear":"1"},{"id":"426","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"20","price":"29000","rent":"0","doors":"0","beds":"4","tiles":"29","guild":"0","clear":"1"},{"id":"427","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"13","price":"18000","rent":"0","doors":"0","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"428","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"9","price":"17000","rent":"17000","doors":"0","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"429","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"32","price":"47000","rent":"47000","doors":"1","beds":"2","tiles":"47","guild":"0","clear":"1"},{"id":"430","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"44","price":"53000","rent":"53000","doors":"1","beds":"4","tiles":"53","guild":"0","clear":"1"},{"id":"431","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"14","price":"16000","rent":"16000","doors":"3","beds":"2","tiles":"28","guild":"0","clear":"0"},{"id":"432","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"15","price":"24000","rent":"24000","doors":"0","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"433","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"103","price":"148000","rent":"148000","doors":"1","beds":"10","tiles":"148","guild":"0","clear":"1"},{"id":"434","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"27","price":"46000","rent":"46000","doors":"1","beds":"4","tiles":"46","guild":"0","clear":"1"},{"id":"435","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"21","price":"42000","rent":"42000","doors":"1","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"436","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"17","price":"36000","rent":"36000","doors":"1","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"437","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"21","price":"37000","rent":"37000","doors":"1","beds":"4","tiles":"37","guild":"0","clear":"1"},{"id":"438","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"64","price":"85000","rent":"85000","doors":"2","beds":"6","tiles":"85","guild":"0","clear":"1"},{"id":"439","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"27","price":"45000","rent":"45000","doors":"2","beds":"4","tiles":"45","guild":"0","clear":"1"},{"id":"440","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"36","price":"68000","rent":"68000","doors":"4","beds":"6","tiles":"68","guild":"0","clear":"1"},{"id":"441","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"20","price":"40000","rent":"40000","doors":"2","beds":"4","tiles":"40","guild":"0","clear":"1"},{"id":"442","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"17","price":"31000","rent":"31000","doors":"0","beds":"4","tiles":"31","guild":"0","clear":"1"},{"id":"443","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"112","price":"176000","rent":"176000","doors":"4","beds":"18","tiles":"176","guild":"0","clear":"1"},{"id":"444","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"85","price":"150000","rent":"150000","doors":"7","beds":"15","tiles":"150","guild":"0","clear":"1"},{"id":"445","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"43","price":"75000","rent":"75000","doors":"2","beds":"6","tiles":"75","guild":"0","clear":"1"},{"id":"446","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"28","price":"52000","rent":"52000","doors":"3","beds":"2","tiles":"52","guild":"0","clear":"1"},{"id":"447","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"50","price":"75000","rent":"75000","doors":"2","beds":"8","tiles":"75","guild":"0","clear":"1"},{"id":"448","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"45","price":"75000","rent":"75000","doors":"3","beds":"8","tiles":"75","guild":"0","clear":"1"},{"id":"449","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"51","price":"75000","rent":"75000","doors":"2","beds":"8","tiles":"75","guild":"0","clear":"1"},{"id":"450","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"45","price":"62000","rent":"62000","doors":"2","beds":"4","tiles":"62","guild":"0","clear":"1"},{"id":"451","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"23","price":"44000","rent":"44000","doors":"2","beds":"4","tiles":"44","guild":"0","clear":"1"},{"id":"452","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"40","price":"58000","rent":"58000","doors":"0","beds":"6","tiles":"58","guild":"0","clear":"1"},{"id":"453","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"52","price":"72000","rent":"72000","doors":"1","beds":"6","tiles":"72","guild":"0","clear":"1"},{"id":"454","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"32","price":"49000","rent":"49000","doors":"1","beds":"6","tiles":"49","guild":"0","clear":"1"},{"id":"455","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"39","price":"53000","rent":"53000","doors":"1","beds":"8","tiles":"53","guild":"0","clear":"1"},{"id":"456","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"40","price":"57000","rent":"57000","doors":"1","beds":"4","tiles":"57","guild":"0","clear":"1"},{"id":"457","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"67","price":"80000","rent":"80000","doors":"1","beds":"6","tiles":"80","guild":"0","clear":"1"},{"id":"458","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"74","price":"122000","rent":"122000","doors":"5","beds":"12","tiles":"122","guild":"0","clear":"1"},{"id":"459","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"31","price":"55000","rent":"55000","doors":"1","beds":"4","tiles":"55","guild":"0","clear":"1"},{"id":"460","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"97","price":"154000","rent":"154000","doors":"4","beds":"10","tiles":"154","guild":"0","clear":"1"},{"id":"461","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"52","price":"71000","rent":"71000","doors":"1","beds":"8","tiles":"71","guild":"0","clear":"1"},{"id":"462","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"48","price":"69000","rent":"69000","doors":"1","beds":"8","tiles":"69","guild":"0","clear":"1"},{"id":"463","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"45","price":"61000","rent":"61000","doors":"1","beds":"8","tiles":"61","guild":"0","clear":"1"},{"id":"464","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"41","price":"50000","rent":"50000","doors":"0","beds":"4","tiles":"50","guild":"0","clear":"1"},{"id":"465","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"24","price":"33000","rent":"33000","doors":"0","beds":"6","tiles":"33","guild":"0","clear":"1"},{"id":"466","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"29","price":"46000","rent":"46000","doors":"0","beds":"6","tiles":"46","guild":"0","clear":"1"},{"id":"467","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"24","price":"32000","rent":"32000","doors":"0","beds":"6","tiles":"32","guild":"0","clear":"1"},{"id":"468","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"53","price":"66000","rent":"66000","doors":"1","beds":"6","tiles":"66","guild":"0","clear":"1"},{"id":"469","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 07","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"48","guild":"0","clear":"0"},{"id":"470","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 01","town":"10","size":"23","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"48","guild":"0","clear":"0"},{"id":"471","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 02","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"42","guild":"0","clear":"0"},{"id":"472","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 06","town":"10","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"473","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 05","town":"10","size":"24","price":"1260","rent":"1260","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"474","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 04","town":"10","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"475","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 03","town":"10","size":"26","price":"1160","rent":"1160","doors":"1","beds":"1","tiles":"42","guild":"0","clear":"0"},{"id":"476","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 13","town":"10","size":"26","price":"1160","rent":"1160","doors":"1","beds":"1","tiles":"42","guild":"0","clear":"0"},{"id":"477","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 12","town":"10","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"478","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 11","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"42","guild":"0","clear":"0"},{"id":"479","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 14","town":"10","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"480","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 15","town":"10","size":"24","price":"1260","rent":"1260","doors":"1","beds":"2","tiles":"47","guild":"0","clear":"0"},{"id":"481","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 16","town":"10","size":"15","price":"680","rent":"680","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"482","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 17","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"48","guild":"0","clear":"0"},{"id":"483","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 2, Flat 18","town":"10","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"484","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 1, Flat 05","town":"10","size":"20","price":"1100","rent":"1100","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"485","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 1, Flat 01","town":"10","size":"20","price":"1100","rent":"1100","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"486","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 1, Flat 04","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"42","guild":"0","clear":"0"},{"id":"487","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 1, Flat 03","town":"10","size":"48","price":"2660","rent":"2660","doors":"3","beds":"4","tiles":"96","guild":"0","clear":"0"},{"id":"488","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 1, Flat 02","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"41","guild":"0","clear":"0"},{"id":"489","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"19","price":"21000","rent":"21000","doors":"0","beds":"0","tiles":"21","guild":"0","clear":"1"},{"id":"490","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 1, Flat 12","town":"10","size":"37","price":"1780","rent":"1780","doors":"2","beds":"2","tiles":"66","guild":"0","clear":"0"},{"id":"491","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 1, Flat 11","town":"10","size":"20","price":"1100","rent":"1100","doors":"1","beds":"2","tiles":"41","guild":"0","clear":"0"},{"id":"492","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 1, Flat 13","town":"10","size":"37","price":"1780","rent":"1780","doors":"2","beds":"2","tiles":"72","guild":"0","clear":"0"},{"id":"493","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 1, Flat 14","town":"10","size":"48","price":"2760","rent":"2760","doors":"3","beds":"5","tiles":"108","guild":"0","clear":"0"},{"id":"494","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 4, Flat 01","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"48","guild":"0","clear":"0"},{"id":"495","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 4, Flat 05","town":"10","size":"21","price":"1100","rent":"1100","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"496","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 4, Flat 04","town":"10","size":"38","price":"1780","rent":"1780","doors":"2","beds":"2","tiles":"72","guild":"0","clear":"0"},{"id":"497","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 4, Flat 03","town":"10","size":"23","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"42","guild":"0","clear":"0"},{"id":"498","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 4, Flat 02","town":"10","size":"38","price":"1780","rent":"1780","doors":"2","beds":"2","tiles":"66","guild":"0","clear":"0"},{"id":"499","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 4, Flat 13","town":"10","size":"37","price":"1780","rent":"1780","doors":"2","beds":"2","tiles":"78","guild":"0","clear":"0"},{"id":"500","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 4, Flat 14","town":"10","size":"37","price":"1780","rent":"1780","doors":"2","beds":"2","tiles":"72","guild":"0","clear":"0"},{"id":"501","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 4, Flat 11","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"41","guild":"0","clear":"0"},{"id":"502","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 4, Flat 12","town":"10","size":"52","price":"2560","rent":"2560","doors":"3","beds":"3","tiles":"96","guild":"0","clear":"0"},{"id":"503","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 7, Flat 05","town":"10","size":"20","price":"1225","rent":"1225","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"504","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 7, Flat 01","town":"10","size":"22","price":"1125","rent":"1125","doors":"1","beds":"1","tiles":"40","guild":"0","clear":"0"},{"id":"505","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 7, Flat 02","town":"10","size":"22","price":"1125","rent":"1125","doors":"1","beds":"1","tiles":"41","guild":"0","clear":"0"},{"id":"506","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 7, Flat 03","town":"10","size":"50","price":"2955","rent":"2955","doors":"3","beds":"4","tiles":"108","guild":"0","clear":"0"},{"id":"507","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 7, Flat 04","town":"10","size":"23","price":"1125","rent":"1125","doors":"1","beds":"1","tiles":"42","guild":"0","clear":"0"},{"id":"508","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 7, Flat 14","town":"10","size":"48","price":"2955","rent":"2955","doors":"3","beds":"4","tiles":"108","guild":"0","clear":"0"},{"id":"509","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 7, Flat 13","town":"10","size":"22","price":"1125","rent":"1125","doors":"1","beds":"1","tiles":"42","guild":"0","clear":"0"},{"id":"510","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 7, Flat 11","town":"10","size":"22","price":"1125","rent":"1125","doors":"1","beds":"1","tiles":"41","guild":"0","clear":"0"},{"id":"511","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 7, Flat 12","town":"10","size":"49","price":"2955","rent":"2955","doors":"3","beds":"4","tiles":"95","guild":"0","clear":"0"},{"id":"512","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 5, Flat 01","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"48","guild":"0","clear":"0"},{"id":"513","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 5, Flat 05","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"48","guild":"0","clear":"0"},{"id":"514","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 5, Flat 02","town":"10","size":"32","price":"1620","rent":"1620","doors":"2","beds":"2","tiles":"61","guild":"0","clear":"0"},{"id":"515","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 5, Flat 03","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"41","guild":"0","clear":"0"},{"id":"516","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 5, Flat 04","town":"10","size":"32","price":"1620","rent":"1620","doors":"2","beds":"2","tiles":"66","guild":"0","clear":"0"},{"id":"517","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 5, Flat 11","town":"10","size":"37","price":"1780","rent":"1780","doors":"2","beds":"2","tiles":"66","guild":"0","clear":"0"},{"id":"518","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 5, Flat 12","town":"10","size":"34","price":"1620","rent":"1620","doors":"2","beds":"2","tiles":"65","guild":"0","clear":"0"},{"id":"519","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 5, Flat 13","town":"10","size":"37","price":"1780","rent":"1780","doors":"2","beds":"2","tiles":"78","guild":"0","clear":"0"},{"id":"520","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 5, Flat 14","town":"10","size":"33","price":"1620","rent":"1620","doors":"2","beds":"2","tiles":"66","guild":"0","clear":"0"},{"id":"521","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 6a","town":"10","size":"62","price":"3115","rent":"3115","doors":"3","beds":"2","tiles":"117","guild":"0","clear":"0"},{"id":"522","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 6b","town":"10","size":"69","price":"3430","rent":"3430","doors":"2","beds":"2","tiles":"139","guild":"0","clear":"0"},{"id":"523","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia, Villa","town":"10","size":"93","price":"5385","rent":"5385","doors":"11","beds":"4","tiles":"233","guild":"0","clear":"0"},{"id":"525","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia, Western Guildhall","town":"10","size":"154","price":"10435","rent":"10435","doors":"16","beds":"14","tiles":"376","guild":"0","clear":"0"},{"id":"526","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 3, Flat 01","town":"10","size":"20","price":"1100","rent":"1100","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"527","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 3, Flat 05","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"40","guild":"0","clear":"0"},{"id":"529","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 3, Flat 02","town":"10","size":"32","price":"1620","rent":"1620","doors":"2","beds":"2","tiles":"65","guild":"0","clear":"0"},{"id":"530","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 3, Flat 03","town":"10","size":"20","price":"1100","rent":"1100","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"531","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 3, Flat 04","town":"10","size":"33","price":"1620","rent":"1620","doors":"2","beds":"2","tiles":"72","guild":"0","clear":"0"},{"id":"532","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 3, Flat 13","town":"10","size":"20","price":"1100","rent":"1100","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"533","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 3, Flat 14","town":"10","size":"46","price":"2400","rent":"2400","doors":"3","beds":"3","tiles":"102","guild":"0","clear":"0"},{"id":"534","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 3, Flat 11","town":"10","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"41","guild":"0","clear":"0"},{"id":"535","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 3, Flat 12","town":"10","size":"42","price":"2600","rent":"2600","doors":"3","beds":"5","tiles":"90","guild":"0","clear":"0"},{"id":"541","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 8, Flat 11","town":"10","size":"37","price":"1990","rent":"1990","doors":"2","beds":"2","tiles":"66","guild":"0","clear":"0"},{"id":"542","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 8, Flat 12","town":"10","size":"32","price":"1810","rent":"1810","doors":"2","beds":"2","tiles":"65","guild":"0","clear":"0"},{"id":"544","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 8, Flat 14","town":"10","size":"32","price":"1810","rent":"1810","doors":"2","beds":"2","tiles":"66","guild":"0","clear":"0"},{"id":"545","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 8, Flat 13","town":"10","size":"36","price":"1990","rent":"1990","doors":"2","beds":"2","tiles":"78","guild":"0","clear":"0"},{"id":"574","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Oskahl I j","town":"9","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"575","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Oskahl I f","town":"9","size":"18","price":"840","rent":"840","doors":"1","beds":"1","tiles":"34","guild":"0","clear":"0"},{"id":"576","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Oskahl I i","town":"9","size":"18","price":"840","rent":"840","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"577","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Oskahl I g","town":"9","size":"21","price":"1140","rent":"1140","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"578","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Oskahl I h","town":"9","size":"32","price":"1760","rent":"1760","doors":"3","beds":"3","tiles":"63","guild":"0","clear":"0"},{"id":"579","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Oskahl I d","town":"9","size":"21","price":"1140","rent":"1140","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"580","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Oskahl I b","town":"9","size":"18","price":"840","rent":"840","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"581","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Oskahl I c","town":"9","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"29","guild":"0","clear":"0"},{"id":"582","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Oskahl I e","town":"9","size":"18","price":"840","rent":"840","doors":"1","beds":"1","tiles":"33","guild":"0","clear":"0"},{"id":"583","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Oskahl I a","town":"9","size":"32","price":"1580","rent":"1580","doors":"1","beds":"2","tiles":"52","guild":"0","clear":"0"},{"id":"584","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Chameken I","town":"9","size":"17","price":"850","rent":"850","doors":"1","beds":"1","tiles":"33","guild":"0","clear":"0"},{"id":"585","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Charsirakh III","town":"9","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"586","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Murkhol I d","town":"9","size":"8","price":"440","rent":"440","doors":"1","beds":"1","tiles":"21","guild":"0","clear":"0"},{"id":"587","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Murkhol I c","town":"9","size":"8","price":"440","rent":"440","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"588","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Murkhol I b","town":"9","size":"8","price":"440","rent":"440","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"589","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Murkhol I a","town":"9","size":"8","price":"440","rent":"440","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"590","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Charsirakh II","town":"9","size":"21","price":"1140","rent":"1140","doors":"1","beds":"2","tiles":"39","guild":"0","clear":"0"},{"id":"591","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah II h","town":"9","size":"21","price":"1400","rent":"1400","doors":"2","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"592","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah II g","town":"9","size":"26","price":"1650","rent":"1650","doors":"1","beds":"2","tiles":"45","guild":"0","clear":"0"},{"id":"593","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah II f","town":"9","size":"45","price":"2850","rent":"2850","doors":"3","beds":"3","tiles":"80","guild":"0","clear":"0"},{"id":"594","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah II b","town":"9","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"595","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah II c","town":"9","size":"6","price":"450","rent":"450","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"596","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah II d","town":"9","size":"4","price":"350","rent":"350","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"597","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah II e","town":"9","size":"4","price":"350","rent":"350","doors":"1","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"599","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah II a","town":"9","size":"22","price":"850","rent":"850","doors":"1","beds":"1","tiles":"37","guild":"0","clear":"0"},{"id":"600","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thrarhor I c (Shop)","town":"9","size":"25","price":"1050","rent":"1050","doors":"1","beds":"2","tiles":"57","guild":"0","clear":"0"},{"id":"601","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thrarhor I d (Shop)","town":"9","size":"10","price":"1050","rent":"1050","doors":"0","beds":"1","tiles":"21","guild":"0","clear":"0"},{"id":"602","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thrarhor I a (Shop)","town":"9","size":"10","price":"1050","rent":"1050","doors":"0","beds":"1","tiles":"32","guild":"0","clear":"0"},{"id":"603","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thrarhor I b (Shop)","town":"9","size":"10","price":"1050","rent":"1050","doors":"0","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"604","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah I c","town":"9","size":"51","price":"3250","rent":"3250","doors":"4","beds":"3","tiles":"91","guild":"0","clear":"0"},{"id":"605","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah I d","town":"9","size":"42","price":"2900","rent":"2900","doors":"4","beds":"4","tiles":"80","guild":"0","clear":"0"},{"id":"606","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah I b","town":"9","size":"50","price":"3000","rent":"3000","doors":"3","beds":"3","tiles":"84","guild":"0","clear":"0"},{"id":"607","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thanah I a","town":"9","size":"14","price":"850","rent":"850","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"608","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harrah I","town":"9","size":"96","price":"5740","rent":"5740","doors":"6","beds":"10","tiles":"190","guild":"0","clear":"0"},{"id":"609","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Charsirakh I b","town":"9","size":"32","price":"1580","rent":"1580","doors":"1","beds":"2","tiles":"51","guild":"0","clear":"0"},{"id":"610","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Charsirakh I a","town":"9","size":"4","price":"280","rent":"280","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"611","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep I d","town":"9","size":"34","price":"2020","rent":"2020","doors":"3","beds":"4","tiles":"68","guild":"0","clear":"0"},{"id":"612","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep I c","town":"9","size":"31","price":"1720","rent":"1720","doors":"2","beds":"3","tiles":"58","guild":"0","clear":"0"},{"id":"613","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep I b","town":"9","size":"26","price":"1380","rent":"1380","doors":"2","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"614","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep I a","town":"9","size":"5","price":"280","rent":"280","doors":"1","beds":"1","tiles":"14","guild":"0","clear":"0"},{"id":"615","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep II e","town":"9","size":"26","price":"1340","rent":"1340","doors":"1","beds":"2","tiles":"44","guild":"0","clear":"0"},{"id":"616","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep II f","town":"9","size":"27","price":"1340","rent":"1340","doors":"1","beds":"2","tiles":"44","guild":"0","clear":"0"},{"id":"617","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep II d","town":"9","size":"18","price":"840","rent":"840","doors":"1","beds":"1","tiles":"32","guild":"0","clear":"0"},{"id":"618","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep II c","town":"9","size":"18","price":"840","rent":"840","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"619","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep II b","town":"9","size":"36","price":"1920","rent":"1920","doors":"3","beds":"3","tiles":"67","guild":"0","clear":"0"},{"id":"620","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep II a","town":"9","size":"8","price":"400","rent":"400","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"621","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mothrem I","town":"9","size":"21","price":"1140","rent":"1140","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"0"},{"id":"622","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Arakmehn I","town":"9","size":"21","price":"1320","rent":"1320","doors":"1","beds":"3","tiles":"41","guild":"0","clear":"0"},{"id":"623","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep III d","town":"9","size":"23","price":"1040","rent":"1040","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"624","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep III c","town":"9","size":"16","price":"940","rent":"940","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"625","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep III e","town":"9","size":"18","price":"840","rent":"840","doors":"1","beds":"1","tiles":"32","guild":"0","clear":"0"},{"id":"626","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep III f","town":"9","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"627","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep III b","town":"9","size":"26","price":"1340","rent":"1340","doors":"3","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"628","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Othehothep III a","town":"9","size":"4","price":"280","rent":"280","doors":"1","beds":"1","tiles":"14","guild":"0","clear":"0"},{"id":"629","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unklath I d","town":"9","size":"30","price":"1680","rent":"1680","doors":"1","beds":"3","tiles":"49","guild":"0","clear":"0"},{"id":"630","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unklath I e","town":"9","size":"32","price":"1580","rent":"1580","doors":"1","beds":"2","tiles":"51","guild":"0","clear":"0"},{"id":"631","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unklath I g","town":"9","size":"34","price":"1480","rent":"1480","doors":"1","beds":"1","tiles":"51","guild":"0","clear":"0"},{"id":"632","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unklath I f","town":"9","size":"32","price":"1580","rent":"1580","doors":"1","beds":"2","tiles":"51","guild":"0","clear":"0"},{"id":"633","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unklath I c","town":"9","size":"29","price":"1460","rent":"1460","doors":"2","beds":"2","tiles":"50","guild":"0","clear":"0"},{"id":"634","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unklath I b","town":"9","size":"28","price":"1460","rent":"1460","doors":"2","beds":"2","tiles":"50","guild":"0","clear":"0"},{"id":"635","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unklath I a","town":"9","size":"21","price":"1140","rent":"1140","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"0"},{"id":"636","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Arakmehn II","town":"9","size":"23","price":"1040","rent":"1040","doors":"1","beds":"1","tiles":"38","guild":"0","clear":"0"},{"id":"637","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Arakmehn III","town":"9","size":"21","price":"1140","rent":"1140","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"0"},{"id":"638","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unklath II b","town":"9","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"639","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unklath II c","town":"9","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"640","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unklath II d","town":"9","size":"32","price":"1580","rent":"1580","doors":"1","beds":"2","tiles":"52","guild":"0","clear":"0"},{"id":"641","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unklath II a","town":"9","size":"23","price":"1040","rent":"1040","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"642","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Arakmehn IV","town":"9","size":"24","price":"1220","rent":"1220","doors":"1","beds":"2","tiles":"41","guild":"0","clear":"0"},{"id":"643","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rathal I b","town":"9","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"644","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rathal I c","town":"9","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"645","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rathal I e","town":"9","size":"12","price":"780","rent":"780","doors":"1","beds":"2","tiles":"27","guild":"0","clear":"0"},{"id":"646","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rathal I d","town":"9","size":"12","price":"780","rent":"780","doors":"1","beds":"2","tiles":"27","guild":"0","clear":"0"},{"id":"647","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rathal I a","town":"9","size":"21","price":"1140","rent":"1140","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"648","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rathal II b","town":"9","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"649","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rathal II c","town":"9","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"650","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rathal II d","town":"9","size":"29","price":"1460","rent":"1460","doors":"2","beds":"2","tiles":"52","guild":"0","clear":"0"},{"id":"651","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rathal II a","town":"9","size":"24","price":"1040","rent":"1040","doors":"1","beds":"1","tiles":"38","guild":"0","clear":"0"},{"id":"653","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Esuph II a","town":"9","size":"4","price":"280","rent":"280","doors":"1","beds":"1","tiles":"14","guild":"0","clear":"0"},{"id":"654","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Uthemath II","town":"9","size":"76","price":"4460","rent":"4460","doors":"3","beds":"8","tiles":"138","guild":"0","clear":"0"},{"id":"655","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Uthemath I e","town":"9","size":"16","price":"940","rent":"940","doors":"1","beds":"2","tiles":"32","guild":"0","clear":"0"},{"id":"656","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Uthemath I d","town":"9","size":"18","price":"840","rent":"840","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"657","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Uthemath I f","town":"9","size":"49","price":"2440","rent":"2440","doors":"4","beds":"3","tiles":"86","guild":"0","clear":"0"},{"id":"658","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Uthemath I b","town":"9","size":"17","price":"800","rent":"800","doors":"2","beds":"1","tiles":"32","guild":"0","clear":"0"},{"id":"659","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Uthemath I c","town":"9","size":"15","price":"900","rent":"900","doors":"2","beds":"2","tiles":"34","guild":"0","clear":"0"},{"id":"660","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Uthemath I a","town":"9","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"661","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham I c","town":"9","size":"26","price":"1700","rent":"1700","doors":"2","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"662","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham I e","town":"9","size":"27","price":"1650","rent":"1650","doors":"1","beds":"2","tiles":"44","guild":"0","clear":"0"},{"id":"663","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham I d","town":"9","size":"50","price":"3050","rent":"3050","doors":"2","beds":"3","tiles":"80","guild":"0","clear":"0"},{"id":"664","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham I b","town":"9","size":"47","price":"3000","rent":"3000","doors":"3","beds":"3","tiles":"83","guild":"0","clear":"0"},{"id":"666","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Horakhal","town":"9","size":"174","price":"9420","rent":"9420","doors":"5","beds":"14","tiles":"277","guild":"0","clear":"0"},{"id":"667","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Esuph III b","town":"9","size":"26","price":"1340","rent":"1340","doors":"3","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"668","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Esuph III a","town":"9","size":"4","price":"280","rent":"280","doors":"1","beds":"1","tiles":"14","guild":"0","clear":"0"},{"id":"669","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Esuph IV b","town":"9","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"670","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Esuph IV c","town":"9","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"671","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Esuph IV d","town":"9","size":"16","price":"800","rent":"800","doors":"2","beds":"1","tiles":"34","guild":"0","clear":"0"},{"id":"672","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Esuph IV a","town":"9","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"673","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham II e","town":"9","size":"26","price":"1650","rent":"1650","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"674","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham II g","town":"9","size":"21","price":"1400","rent":"1400","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"0"},{"id":"675","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham II f","town":"9","size":"26","price":"1650","rent":"1650","doors":"1","beds":"2","tiles":"44","guild":"0","clear":"0"},{"id":"676","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham II d","town":"9","size":"32","price":"1950","rent":"1950","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"677","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham II c","town":"9","size":"17","price":"1250","rent":"1250","doors":"2","beds":"2","tiles":"38","guild":"0","clear":"0"},{"id":"678","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham II b","town":"9","size":"26","price":"1600","rent":"1600","doors":"2","beds":"2","tiles":"47","guild":"0","clear":"0"},{"id":"679","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham II a","town":"9","size":"14","price":"850","rent":"850","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"680","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham III g","town":"9","size":"26","price":"1650","rent":"1650","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"681","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham III f","town":"9","size":"36","price":"2350","rent":"2350","doors":"1","beds":"3","tiles":"56","guild":"0","clear":"0"},{"id":"682","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham III h","town":"9","size":"64","price":"3750","rent":"3750","doors":"3","beds":"3","tiles":"98","guild":"0","clear":"0"},{"id":"683","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham III d","town":"9","size":"14","price":"850","rent":"850","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"684","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham III e","town":"9","size":"15","price":"850","rent":"850","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"685","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham III b","town":"9","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"0"},{"id":"686","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham III c","town":"9","size":"14","price":"850","rent":"850","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"687","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham III a","town":"9","size":"22","price":"1400","rent":"1400","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"688","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham IV i","town":"9","size":"26","price":"1800","rent":"1800","doors":"2","beds":"3","tiles":"51","guild":"0","clear":"0"},{"id":"689","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham IV h","town":"9","size":"34","price":"1850","rent":"1850","doors":"1","beds":"1","tiles":"49","guild":"0","clear":"0"},{"id":"690","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham IV f","town":"9","size":"26","price":"1700","rent":"1700","doors":"2","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"691","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham IV g","town":"9","size":"24","price":"1650","rent":"1650","doors":"3","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"692","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham IV c","town":"9","size":"14","price":"850","rent":"850","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"693","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham IV e","town":"9","size":"14","price":"850","rent":"850","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"694","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham IV d","town":"9","size":"14","price":"850","rent":"850","doors":"1","beds":"1","tiles":"27","guild":"0","clear":"0"},{"id":"695","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham IV b","town":"9","size":"14","price":"850","rent":"850","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"696","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham IV a","town":"9","size":"22","price":"1400","rent":"1400","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"697","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ramen Tah","town":"9","size":"90","price":"7650","rent":"7650","doors":"4","beds":"16","tiles":"182","guild":"0","clear":"0"},{"id":"698","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Banana Bay 1","town":"8","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"699","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Banana Bay 2","town":"8","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"700","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Banana Bay 3","town":"8","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"701","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Banana Bay 4","town":"8","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"702","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shark Manor","town":"8","size":"127","price":"8780","rent":"8780","doors":"8","beds":"15","tiles":"286","guild":"0","clear":"0"},{"id":"703","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coconut Quay 1","town":"8","size":"32","price":"1765","rent":"1765","doors":"1","beds":"2","tiles":"64","guild":"0","clear":"0"},{"id":"704","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coconut Quay 2","town":"8","size":"16","price":"1045","rent":"1045","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"705","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coconut Quay 3","town":"8","size":"32","price":"2145","rent":"2145","doors":"1","beds":"4","tiles":"70","guild":"0","clear":"0"},{"id":"706","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Coconut Quay 4","town":"8","size":"36","price":"2135","rent":"2135","doors":"1","beds":"3","tiles":"72","guild":"0","clear":"0"},{"id":"707","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Crocodile Bridge 3","town":"8","size":"22","price":"1270","rent":"1270","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"708","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Crocodile Bridge 2","town":"8","size":"12","price":"865","rent":"865","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"709","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Crocodile Bridge 1","town":"8","size":"17","price":"1045","rent":"1045","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"710","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Bamboo Garden 1","town":"8","size":"25","price":"1640","rent":"1640","doors":"2","beds":"3","tiles":"63","guild":"0","clear":"0"},{"id":"711","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Crocodile Bridge 4","town":"8","size":"88","price":"4755","rent":"4755","doors":"3","beds":"4","tiles":"176","guild":"0","clear":"0"},{"id":"712","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Crocodile Bridge 5","town":"8","size":"80","price":"3970","rent":"3970","doors":"2","beds":"2","tiles":"157","guild":"0","clear":"0"},{"id":"713","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Woodway 1","town":"8","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"714","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Woodway 2","town":"8","size":"11","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"715","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Woodway 3","town":"8","size":"27","price":"1540","rent":"1540","doors":"2","beds":"2","tiles":"65","guild":"0","clear":"0"},{"id":"716","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Woodway 4","town":"8","size":"6","price":"405","rent":"405","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"717","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Flamingo Flats 5","town":"8","size":"38","price":"1845","rent":"1845","doors":"1","beds":"1","tiles":"84","guild":"0","clear":"0"},{"id":"718","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Bamboo Fortress","town":"8","size":"381","price":"21970","rent":"21970","doors":"14","beds":"20","tiles":"848","guild":"0","clear":"0"},{"id":"719","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Bamboo Garden 3","town":"8","size":"27","price":"1540","rent":"1540","doors":"2","beds":"2","tiles":"63","guild":"0","clear":"0"},{"id":"720","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Bamboo Garden 2","town":"8","size":"16","price":"1045","rent":"1045","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"721","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Flamingo Flats 4","town":"8","size":"12","price":"865","rent":"865","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"722","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Flamingo Flats 2","town":"8","size":"16","price":"1045","rent":"1045","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"723","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Flamingo Flats 3","town":"8","size":"8","price":"685","rent":"685","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"724","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Flamingo Flats 1","town":"8","size":"8","price":"685","rent":"685","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"725","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Jungle Edge 4","town":"8","size":"12","price":"865","rent":"865","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"726","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Jungle Edge 5","town":"8","size":"12","price":"865","rent":"865","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"727","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Jungle Edge 6","town":"8","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"728","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Jungle Edge 2","town":"8","size":"59","price":"3170","rent":"3170","doors":"3","beds":"3","tiles":"128","guild":"0","clear":"0"},{"id":"729","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Jungle Edge 3","town":"8","size":"12","price":"865","rent":"865","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"730","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Jungle Edge 1","town":"8","size":"44","price":"2495","rent":"2495","doors":"1","beds":"3","tiles":"98","guild":"0","clear":"0"},{"id":"731","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Haggler's Hangout 6","town":"8","size":"113","price":"6450","rent":"6450","doors":"3","beds":"4","tiles":"208","guild":"0","clear":"0"},{"id":"732","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Haggler's Hangout 5 (Shop)","town":"8","size":"24","price":"1550","rent":"1550","doors":"1","beds":"1","tiles":"56","guild":"0","clear":"0"},{"id":"733","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Haggler's Hangout 4a (Shop)","town":"8","size":"30","price":"1850","rent":"1850","doors":"2","beds":"1","tiles":"56","guild":"0","clear":"0"},{"id":"734","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Haggler's Hangout 4b (Shop)","town":"8","size":"24","price":"1550","rent":"1550","doors":"2","beds":"1","tiles":"56","guild":"0","clear":"0"},{"id":"735","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Haggler's Hangout 3","town":"8","size":"137","price":"7550","rent":"7550","doors":"1","beds":"4","tiles":"256","guild":"0","clear":"0"},{"id":"736","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Haggler's Hangout 2","town":"8","size":"23","price":"1300","rent":"1300","doors":"1","beds":"1","tiles":"49","guild":"0","clear":"0"},{"id":"737","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Haggler's Hangout 1","town":"8","size":"22","price":"1400","rent":"1400","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"738","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"River Homes 1","town":"8","size":"66","price":"3485","rent":"3485","doors":"1","beds":"3","tiles":"128","guild":"0","clear":"0"},{"id":"739","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"River Homes 2a","town":"8","size":"21","price":"1270","rent":"1270","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"740","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"River Homes 2b","town":"8","size":"24","price":"1595","rent":"1595","doors":"1","beds":"3","tiles":"56","guild":"0","clear":"0"},{"id":"741","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"River Homes 3","town":"8","size":"82","price":"5055","rent":"5055","doors":"3","beds":"7","tiles":"176","guild":"0","clear":"0"},{"id":"742","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Treehouse","town":"8","size":"484","price":"24120","rent":"24120","doors":"5","beds":"23","tiles":"897","guild":"0","clear":"0"},{"id":"743","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Corner Shop (Shop)","town":"12","size":"36","price":"2215","rent":"2215","doors":"3","beds":"2","tiles":"96","guild":"0","clear":"0"},{"id":"744","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tusk Flats 1","town":"12","size":"14","price":"765","rent":"765","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"745","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tusk Flats 2","town":"12","size":"16","price":"835","rent":"835","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"746","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tusk Flats 3","town":"12","size":"11","price":"660","rent":"660","doors":"1","beds":"2","tiles":"34","guild":"0","clear":"0"},{"id":"747","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tusk Flats 4","town":"12","size":"6","price":"315","rent":"315","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"748","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tusk Flats 6","town":"12","size":"12","price":"660","rent":"660","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"749","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tusk Flats 5","town":"12","size":"11","price":"455","rent":"455","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"750","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shady Rocks 5","town":"12","size":"57","price":"2890","rent":"2890","doors":"3","beds":"2","tiles":"110","guild":"0","clear":"0"},{"id":"751","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shady Rocks 4 (Shop)","town":"12","size":"50","price":"2710","rent":"2710","doors":"4","beds":"2","tiles":"110","guild":"0","clear":"0"},{"id":"752","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shady Rocks 3","town":"12","size":"77","price":"4115","rent":"4115","doors":"4","beds":"3","tiles":"154","guild":"0","clear":"0"},{"id":"753","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shady Rocks 2","town":"12","size":"29","price":"2010","rent":"2010","doors":"3","beds":"4","tiles":"77","guild":"0","clear":"0"},{"id":"754","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shady Rocks 1","town":"12","size":"65","price":"3630","rent":"3630","doors":"3","beds":"4","tiles":"132","guild":"0","clear":"0"},{"id":"755","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Crystal Glance","town":"12","size":"237","price":"19625","rent":"19625","doors":"11","beds":"24","tiles":"569","guild":"0","clear":"0"},{"id":"756","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Arena Walk 3","town":"12","size":"59","price":"3550","rent":"3550","doors":"2","beds":"3","tiles":"126","guild":"0","clear":"0"},{"id":"757","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Arena Walk 2","town":"12","size":"21","price":"1400","rent":"1400","doors":"2","beds":"2","tiles":"54","guild":"0","clear":"0"},{"id":"758","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Arena Walk 1","town":"12","size":"55","price":"3250","rent":"3250","doors":"4","beds":"3","tiles":"128","guild":"0","clear":"0"},{"id":"759","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Bears Paw 2","town":"12","size":"44","price":"2305","rent":"2305","doors":"3","beds":"2","tiles":"100","guild":"0","clear":"0"},{"id":"760","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Bears Paw 1","town":"12","size":"33","price":"1810","rent":"1810","doors":"2","beds":"2","tiles":"72","guild":"0","clear":"0"},{"id":"761","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Spirit Homes 5","town":"12","size":"21","price":"1450","rent":"1450","doors":"2","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"762","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Glacier Side 3","town":"12","size":"30","price":"1950","rent":"1950","doors":"3","beds":"2","tiles":"75","guild":"0","clear":"0"},{"id":"763","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Glacier Side 2","town":"12","size":"83","price":"4750","rent":"4750","doors":"3","beds":"3","tiles":"154","guild":"0","clear":"0"},{"id":"764","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Glacier Side 1","town":"12","size":"26","price":"1600","rent":"1600","doors":"3","beds":"2","tiles":"65","guild":"0","clear":"0"},{"id":"765","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Spirit Homes 1","town":"12","size":"27","price":"1700","rent":"1700","doors":"2","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"766","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Spirit Homes 2","town":"12","size":"31","price":"1900","rent":"1900","doors":"3","beds":"2","tiles":"72","guild":"0","clear":"0"},{"id":"767","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Spirit Homes 3","town":"12","size":"75","price":"4250","rent":"4250","doors":"3","beds":"3","tiles":"128","guild":"0","clear":"0"},{"id":"768","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Spirit Homes 4","town":"12","size":"19","price":"1100","rent":"1100","doors":"2","beds":"1","tiles":"49","guild":"0","clear":"0"},{"id":"770","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Glacier Side 4","town":"12","size":"38","price":"2050","rent":"2050","doors":"2","beds":"1","tiles":"75","guild":"0","clear":"0"},{"id":"771","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shelf Site","town":"12","size":"83","price":"4800","rent":"4800","doors":"4","beds":"3","tiles":"160","guild":"0","clear":"0"},{"id":"772","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Raven Corner 1","town":"12","size":"15","price":"855","rent":"855","doors":"2","beds":"1","tiles":"45","guild":"0","clear":"0"},{"id":"773","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Raven Corner 2","town":"12","size":"25","price":"1685","rent":"1685","doors":"3","beds":"3","tiles":"60","guild":"0","clear":"0"},{"id":"774","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Raven Corner 3","town":"12","size":"15","price":"855","rent":"855","doors":"2","beds":"1","tiles":"45","guild":"0","clear":"0"},{"id":"775","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Bears Paw 3","town":"12","size":"35","price":"2090","rent":"2090","doors":"3","beds":"3","tiles":"82","guild":"0","clear":"0"},{"id":"776","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Bears Paw 4","town":"12","size":"99","price":"5205","rent":"5205","doors":"5","beds":"4","tiles":"189","guild":"0","clear":"0"},{"id":"778","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Bears Paw 5","town":"12","size":"34","price":"2045","rent":"2045","doors":"3","beds":"3","tiles":"81","guild":"0","clear":"0"},{"id":"779","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Trout Plaza 5 (Shop)","town":"12","size":"73","price":"3880","rent":"3880","doors":"4","beds":"2","tiles":"144","guild":"0","clear":"0"},{"id":"780","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Pilchard Bin 1","town":"12","size":"8","price":"685","rent":"685","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"781","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Pilchard Bin 2","town":"12","size":"8","price":"685","rent":"685","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"0"},{"id":"782","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Pilchard Bin 3","town":"12","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"783","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Pilchard Bin 4","town":"12","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"784","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Pilchard Bin 5","town":"12","size":"8","price":"685","rent":"685","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"0"},{"id":"785","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Pilchard Bin 10","town":"12","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"786","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Pilchard Bin 9","town":"12","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"787","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Pilchard Bin 8","town":"12","size":"6","price":"450","rent":"450","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"0"},{"id":"789","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Pilchard Bin 7","town":"12","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"790","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Pilchard Bin 6","town":"12","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"791","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Trout Plaza 1","town":"12","size":"43","price":"2395","rent":"2395","doors":"4","beds":"2","tiles":"112","guild":"0","clear":"0"},{"id":"792","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Trout Plaza 2","town":"12","size":"26","price":"1540","rent":"1540","doors":"2","beds":"2","tiles":"64","guild":"0","clear":"0"},{"id":"793","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Trout Plaza 3","town":"12","size":"18","price":"900","rent":"900","doors":"2","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"794","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Trout Plaza 4","town":"12","size":"18","price":"900","rent":"900","doors":"2","beds":"1","tiles":"45","guild":"0","clear":"0"},{"id":"795","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Skiffs End 1","town":"12","size":"28","price":"1540","rent":"1540","doors":"3","beds":"2","tiles":"70","guild":"0","clear":"0"},{"id":"796","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Skiffs End 2","town":"12","size":"13","price":"910","rent":"910","doors":"2","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"797","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Furrier Quarter 3","town":"12","size":"20","price":"1010","rent":"1010","doors":"2","beds":"2","tiles":"54","guild":"0","clear":"0"},{"id":"798","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mammoth Belly","town":"12","size":"278","price":"22810","rent":"22810","doors":"15","beds":"30","tiles":"634","guild":"0","clear":"0"},{"id":"799","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Furrier Quarter 2","town":"12","size":"21","price":"1045","rent":"1045","doors":"2","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"800","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Furrier Quarter 1","town":"12","size":"34","price":"1635","rent":"1635","doors":"3","beds":"3","tiles":"84","guild":"0","clear":"0"},{"id":"801","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fimbul Shelf 3","town":"12","size":"28","price":"1255","rent":"1255","doors":"2","beds":"2","tiles":"66","guild":"0","clear":"0"},{"id":"802","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fimbul Shelf 4","town":"12","size":"22","price":"1045","rent":"1045","doors":"2","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"803","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fimbul Shelf 2","town":"12","size":"21","price":"1045","rent":"1045","doors":"2","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"804","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fimbul Shelf 1","town":"12","size":"20","price":"975","rent":"975","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"805","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Frost Manor","town":"12","size":"382","price":"26370","rent":"26370","doors":"16","beds":"24","tiles":"806","guild":"0","clear":"0"},{"id":"806","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 11","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"807","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 12","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"808","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 9","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"809","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 10","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"19","guild":"0","clear":"0"},{"id":"810","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 7","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"811","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 8","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"812","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 5","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"813","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 6","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"814","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 3","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"815","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 4","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"19","guild":"0","clear":"0"},{"id":"816","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 1","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"817","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 2","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"818","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 24","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"819","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 23","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"820","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 22","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"821","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 21","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"822","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 20","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"823","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 19","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"824","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 18","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"825","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 17","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"826","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 16","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"828","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 15","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"829","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 14","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"830","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lower Barracks 13","town":"3","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"831","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Marble Guildhall","town":"3","size":"282","price":"16810","rent":"16810","doors":"18","beds":"17","tiles":"540","guild":"0","clear":"0"},{"id":"832","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Iron Guildhall","town":"3","size":"243","price":"15560","rent":"15560","doors":"15","beds":"17","tiles":"464","guild":"0","clear":"0"},{"id":"833","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Market 1 (Shop)","town":"3","size":"8","price":"650","rent":"650","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"834","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Market 3 (Shop)","town":"3","size":"22","price":"1450","rent":"1450","doors":"1","beds":"1","tiles":"40","guild":"0","clear":"0"},{"id":"835","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Market 2 (Shop)","town":"3","size":"17","price":"1100","rent":"1100","doors":"1","beds":"1","tiles":"40","guild":"0","clear":"0"},{"id":"836","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Market 4 (Shop)","town":"3","size":"28","price":"1800","rent":"1800","doors":"1","beds":"1","tiles":"48","guild":"0","clear":"0"},{"id":"837","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Granite Guildhall","town":"3","size":"296","price":"17845","rent":"17845","doors":"18","beds":"17","tiles":"589","guild":"0","clear":"0"},{"id":"838","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 1","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"839","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 2","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"840","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 3","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"841","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 4","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"842","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 5","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"843","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 6","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"844","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 7","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"845","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 8","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"847","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 10","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"848","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 11","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"849","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 12","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"850","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 13","town":"3","size":"11","price":"580","rent":"580","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"0"},{"id":"851","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nobility Quarter 4","town":"3","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"852","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nobility Quarter 5","town":"3","size":"15","price":"765","rent":"765","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"853","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nobility Quarter 7","town":"3","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"854","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nobility Quarter 6","town":"3","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"855","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nobility Quarter 8","town":"3","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"856","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nobility Quarter 9","town":"3","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"857","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nobility Quarter 2","town":"3","size":"30","price":"1865","rent":"1865","doors":"1","beds":"3","tiles":"56","guild":"0","clear":"0"},{"id":"858","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nobility Quarter 3","town":"3","size":"30","price":"1865","rent":"1865","doors":"1","beds":"3","tiles":"56","guild":"0","clear":"0"},{"id":"859","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nobility Quarter 1","town":"3","size":"30","price":"1865","rent":"1865","doors":"1","beds":"3","tiles":"62","guild":"0","clear":"0"},{"id":"863","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Farms 6, Fishing Hut","town":"3","size":"16","price":"1255","rent":"1255","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"864","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Farms 5","town":"3","size":"21","price":"1530","rent":"1530","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"865","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Farms 4","town":"3","size":"21","price":"1530","rent":"1530","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"866","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Farms 3","town":"3","size":"21","price":"1530","rent":"1530","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"867","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Farms 2","town":"3","size":"21","price":"1530","rent":"1530","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"868","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Farms 1","town":"3","size":"34","price":"2510","rent":"2510","doors":"2","beds":"3","tiles":"60","guild":"0","clear":"0"},{"id":"869","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 12 (Shop)","town":"3","size":"6","price":"280","rent":"280","doors":"0","beds":"0","tiles":"12","guild":"0","clear":"0"},{"id":"870","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 13 (Shop)","town":"3","size":"6","price":"280","rent":"280","doors":"0","beds":"0","tiles":"12","guild":"0","clear":"0"},{"id":"871","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 14 (Shop)","town":"3","size":"16","price":"640","rent":"640","doors":"0","beds":"0","tiles":"30","guild":"0","clear":"0"},{"id":"872","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 7","town":"3","size":"12","price":"780","rent":"780","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"0"},{"id":"874","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 8","town":"3","size":"5","price":"280","rent":"280","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"877","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 9","town":"3","size":"3","price":"200","rent":"200","doors":"1","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"878","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 10","town":"3","size":"2","price":"200","rent":"200","doors":"1","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"879","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 11","town":"3","size":"2","price":"200","rent":"200","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"880","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 2","town":"3","size":"4","price":"280","rent":"280","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"881","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 3","town":"3","size":"11","price":"740","rent":"740","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"882","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 4","town":"3","size":"2","price":"200","rent":"200","doors":"1","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"883","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 5","town":"3","size":"2","price":"200","rent":"200","doors":"1","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"884","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 6","town":"3","size":"2","price":"200","rent":"200","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"885","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Camp 1","town":"3","size":"46","price":"1660","rent":"1660","doors":"1","beds":"2","tiles":"91","guild":"0","clear":"0"},{"id":"886","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Outlaw Castle","town":"3","size":"158","price":"8000","rent":"8000","doors":"11","beds":"9","tiles":"410","guild":"0","clear":"0"},{"id":"888","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 1","town":"3","size":"20","price":"1820","rent":"1820","doors":"1","beds":"3","tiles":"44","guild":"0","clear":"0"},{"id":"889","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 3","town":"3","size":"23","price":"2000","rent":"2000","doors":"1","beds":"3","tiles":"48","guild":"0","clear":"0"},{"id":"890","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 4","town":"3","size":"24","price":"2000","rent":"2000","doors":"1","beds":"3","tiles":"45","guild":"0","clear":"0"},{"id":"891","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 2","town":"3","size":"20","price":"1820","rent":"1820","doors":"1","beds":"3","tiles":"47","guild":"0","clear":"0"},{"id":"892","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 5","town":"3","size":"16","price":"1360","rent":"1360","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"893","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 6","town":"3","size":"16","price":"1360","rent":"1360","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"0"},{"id":"894","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 8","town":"3","size":"16","price":"1360","rent":"1360","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"895","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 7","town":"3","size":"16","price":"1360","rent":"1360","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"896","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 12","town":"3","size":"11","price":"1060","rent":"1060","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"0"},{"id":"897","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 11","town":"3","size":"11","price":"1060","rent":"1060","doors":"1","beds":"2","tiles":"32","guild":"0","clear":"0"},{"id":"898","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 9","town":"3","size":"10","price":"1000","rent":"1000","doors":"1","beds":"2","tiles":"29","guild":"0","clear":"0"},{"id":"899","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Tunnel Gardens 10","town":"3","size":"10","price":"1000","rent":"1000","doors":"1","beds":"2","tiles":"29","guild":"0","clear":"0"},{"id":"900","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wolftower","town":"3","size":"316","price":"21550","rent":"21550","doors":"19","beds":"23","tiles":"699","guild":"0","clear":"0"},{"id":"901","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Paupers Palace, Flat 11","town":"1","size":"4","price":"315","rent":"315","doors":"1","beds":"1","tiles":"14","guild":"0","clear":"0"},{"id":"902","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Barracks 9","town":"3","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"905","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Botham I a","town":"9","size":"21","price":"950","rent":"950","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"906","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Esuph I","town":"9","size":"18","price":"680","rent":"680","doors":"1","beds":"1","tiles":"39","guild":"0","clear":"0"},{"id":"907","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Esuph II b","town":"9","size":"26","price":"1380","rent":"1380","doors":"2","beds":"2","tiles":"51","guild":"0","clear":"0"},{"id":"1252","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 1","town":"1","size":"176","price":"223000","rent":"0","doors":"4","beds":"6","tiles":"223","guild":"0","clear":"1"},{"id":"1253","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 2","town":"1","size":"112","price":"146000","rent":"0","doors":"4","beds":"4","tiles":"146","guild":"0","clear":"1"},{"id":"1254","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar Guildhall 2","town":"1","size":"445","price":"570000","rent":"0","doors":"12","beds":"54","tiles":"570","guild":"0","clear":"1"},{"id":"1255","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 3","town":"1","size":"97","price":"139000","rent":"0","doors":"4","beds":"4","tiles":"139","guild":"0","clear":"1"},{"id":"1256","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 4","town":"1","size":"79","price":"114000","rent":"0","doors":"5","beds":"8","tiles":"114","guild":"0","clear":"1"},{"id":"1257","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 5","town":"1","size":"110","price":"159000","rent":"0","doors":"7","beds":"8","tiles":"159","guild":"0","clear":"1"},{"id":"1258","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar Guildhall 1","town":"1","size":"414","price":"565000","rent":"0","doors":"20","beds":"62","tiles":"565","guild":"0","clear":"1"},{"id":"1259","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 6","town":"1","size":"133","price":"163000","rent":"0","doors":"4","beds":"4","tiles":"163","guild":"0","clear":"1"},{"id":"1260","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 7","town":"1","size":"120","price":"177000","rent":"0","doors":"5","beds":"8","tiles":"177","guild":"0","clear":"1"},{"id":"1261","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 8","town":"1","size":"87","price":"114000","rent":"0","doors":"2","beds":"4","tiles":"114","guild":"0","clear":"1"},{"id":"1262","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 9","town":"1","size":"113","price":"131000","rent":"0","doors":"2","beds":"4","tiles":"131","guild":"0","clear":"1"},{"id":"1263","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 10","town":"1","size":"129","price":"175000","rent":"0","doors":"5","beds":"4","tiles":"175","guild":"0","clear":"1"},{"id":"1264","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 11","town":"1","size":"235","price":"286000","rent":"0","doors":"4","beds":"8","tiles":"286","guild":"0","clear":"1"},{"id":"1265","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar Guildhall 3","town":"1","size":"309","price":"508000","rent":"0","doors":"21","beds":"68","tiles":"508","guild":"0","clear":"1"},{"id":"1266","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 12","town":"1","size":"143","price":"181000","rent":"0","doors":"3","beds":"8","tiles":"181","guild":"0","clear":"1"},{"id":"1267","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 13","town":"1","size":"127","price":"164000","rent":"0","doors":"4","beds":"8","tiles":"164","guild":"0","clear":"1"},{"id":"1268","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 14","town":"1","size":"120","price":"170000","rent":"0","doors":"6","beds":"4","tiles":"170","guild":"0","clear":"1"},{"id":"1269","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 15","town":"1","size":"173","price":"237000","rent":"0","doors":"7","beds":"10","tiles":"237","guild":"0","clear":"1"},{"id":"1270","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Yalahar 16","town":"1","size":"147","price":"179000","rent":"0","doors":"8","beds":"4","tiles":"179","guild":"0","clear":"1"},{"id":"1271","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 1","town":"13","size":"12","price":"21000","rent":"0","doors":"1","beds":"4","tiles":"21","guild":"0","clear":"1"},{"id":"1272","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1272","town":"9","size":"0","price":"5000","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"1"},{"id":"1273","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1273","town":"9","size":"0","price":"5000","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"1"},{"id":"1274","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1274","town":"9","size":"0","price":"5000","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"1"},{"id":"1275","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1275","town":"9","size":"0","price":"5000","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"1"},{"id":"1276","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 3","town":"13","size":"11","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1277","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 4","town":"13","size":"16","price":"27000","rent":"0","doors":"1","beds":"4","tiles":"27","guild":"0","clear":"1"},{"id":"1278","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 5","town":"13","size":"51","price":"92000","rent":"0","doors":"5","beds":"8","tiles":"92","guild":"0","clear":"1"},{"id":"1279","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 6","town":"13","size":"65","price":"91000","rent":"0","doors":"2","beds":"0","tiles":"91","guild":"0","clear":"1"},{"id":"1280","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 7","town":"13","size":"47","price":"81000","rent":"0","doors":"4","beds":"4","tiles":"81","guild":"0","clear":"1"},{"id":"1281","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 8","town":"13","size":"77","price":"120000","rent":"0","doors":"4","beds":"6","tiles":"120","guild":"0","clear":"1"},{"id":"1282","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 9","town":"13","size":"29","price":"51000","rent":"0","doors":"3","beds":"8","tiles":"51","guild":"0","clear":"1"},{"id":"1283","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 10","town":"13","size":"65","price":"94000","rent":"0","doors":"3","beds":"8","tiles":"94","guild":"0","clear":"1"},{"id":"1284","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 11","town":"13","size":"233","price":"367000","rent":"0","doors":"11","beds":"48","tiles":"367","guild":"0","clear":"1"},{"id":"1285","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 12","town":"13","size":"43","price":"66000","rent":"0","doors":"3","beds":"4","tiles":"66","guild":"0","clear":"1"},{"id":"1286","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 13","town":"13","size":"22","price":"42000","rent":"0","doors":"2","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"1287","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1287","town":"9","size":"0","price":"5000","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"1"},{"id":"1288","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 14","town":"13","size":"20","price":"36000","rent":"0","doors":"2","beds":"2","tiles":"36","guild":"0","clear":"1"},{"id":"1289","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 15","town":"13","size":"30","price":"44000","rent":"0","doors":"3","beds":"4","tiles":"44","guild":"0","clear":"1"},{"id":"1290","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 16","town":"13","size":"26","price":"42000","rent":"0","doors":"2","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"1291","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 17","town":"13","size":"59","price":"82000","rent":"0","doors":"1","beds":"6","tiles":"82","guild":"0","clear":"1"},{"id":"1292","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 18","town":"13","size":"20","price":"33000","rent":"0","doors":"1","beds":"4","tiles":"33","guild":"0","clear":"1"},{"id":"1293","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 19","town":"13","size":"53","price":"72000","rent":"0","doors":"4","beds":"6","tiles":"72","guild":"0","clear":"1"},{"id":"1294","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 20","town":"13","size":"81","price":"135000","rent":"0","doors":"4","beds":"6","tiles":"135","guild":"0","clear":"1"},{"id":"1295","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 21","town":"13","size":"27","price":"50000","rent":"0","doors":"2","beds":"4","tiles":"50","guild":"0","clear":"1"},{"id":"1296","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 22","town":"13","size":"46","price":"76000","rent":"0","doors":"4","beds":"4","tiles":"76","guild":"0","clear":"1"},{"id":"1297","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 23","town":"13","size":"17","price":"33000","rent":"0","doors":"2","beds":"2","tiles":"33","guild":"0","clear":"1"},{"id":"1298","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 24","town":"13","size":"17","price":"33000","rent":"0","doors":"2","beds":"2","tiles":"33","guild":"0","clear":"1"},{"id":"1299","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 25","town":"13","size":"20","price":"31000","rent":"0","doors":"1","beds":"0","tiles":"31","guild":"0","clear":"1"},{"id":"1300","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 26","town":"13","size":"27","price":"48000","rent":"0","doors":"3","beds":"4","tiles":"48","guild":"0","clear":"1"},{"id":"1301","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 27","town":"13","size":"35","price":"57000","rent":"0","doors":"3","beds":"6","tiles":"57","guild":"0","clear":"1"},{"id":"1302","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 28","town":"13","size":"98","price":"148000","rent":"0","doors":"5","beds":"8","tiles":"148","guild":"0","clear":"1"},{"id":"1303","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 29","town":"13","size":"16","price":"31000","rent":"0","doors":"2","beds":"2","tiles":"31","guild":"0","clear":"1"},{"id":"1304","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 30","town":"13","size":"25","price":"52000","rent":"0","doors":"3","beds":"6","tiles":"52","guild":"0","clear":"1"},{"id":"1305","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 31","town":"13","size":"15","price":"31000","rent":"0","doors":"2","beds":"2","tiles":"31","guild":"0","clear":"1"},{"id":"1306","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 32","town":"13","size":"34","price":"56000","rent":"0","doors":"2","beds":"4","tiles":"56","guild":"0","clear":"1"},{"id":"1307","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 33","town":"13","size":"35","price":"54000","rent":"0","doors":"3","beds":"6","tiles":"54","guild":"0","clear":"1"},{"id":"1308","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 34","town":"13","size":"70","price":"107000","rent":"0","doors":"5","beds":"6","tiles":"107","guild":"0","clear":"1"},{"id":"1309","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 35","town":"13","size":"83","price":"115000","rent":"0","doors":"3","beds":"6","tiles":"115","guild":"0","clear":"1"},{"id":"1310","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 36","town":"13","size":"23","price":"47000","rent":"0","doors":"2","beds":"4","tiles":"47","guild":"0","clear":"1"},{"id":"1311","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 37","town":"13","size":"275","price":"540000","rent":"0","doors":"15","beds":"60","tiles":"540","guild":"0","clear":"1"},{"id":"1312","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 38","town":"13","size":"20","price":"35000","rent":"0","doors":"1","beds":"4","tiles":"35","guild":"0","clear":"1"},{"id":"1313","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 39","town":"13","size":"23","price":"42000","rent":"0","doors":"2","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"1314","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 40","town":"13","size":"33","price":"68000","rent":"0","doors":"3","beds":"6","tiles":"68","guild":"0","clear":"1"},{"id":"1315","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 41","town":"13","size":"27","price":"50000","rent":"0","doors":"2","beds":"4","tiles":"50","guild":"0","clear":"1"},{"id":"1316","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 42","town":"13","size":"23","price":"43000","rent":"0","doors":"2","beds":"4","tiles":"43","guild":"0","clear":"1"},{"id":"1317","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 43","town":"13","size":"23","price":"42000","rent":"0","doors":"2","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"1318","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 44","town":"13","size":"22","price":"40000","rent":"0","doors":"2","beds":"4","tiles":"40","guild":"0","clear":"1"},{"id":"1319","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 45","town":"13","size":"8","price":"21000","rent":"0","doors":"1","beds":"4","tiles":"21","guild":"0","clear":"1"},{"id":"1320","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 46","town":"13","size":"8","price":"21000","rent":"0","doors":"1","beds":"4","tiles":"21","guild":"0","clear":"1"},{"id":"1321","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1321","town":"9","size":"97","price":"610000","rent":"0","doors":"4","beds":"4","tiles":"122","guild":"0","clear":"1"},{"id":"1322","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1322","town":"9","size":"98","price":"550000","rent":"0","doors":"1","beds":"4","tiles":"110","guild":"0","clear":"1"},{"id":"1323","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 47","town":"13","size":"10","price":"21000","rent":"0","doors":"1","beds":"2","tiles":"21","guild":"0","clear":"1"},{"id":"1324","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 48","town":"13","size":"10","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"1325","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 49","town":"13","size":"8","price":"16000","rent":"0","doors":"1","beds":"4","tiles":"16","guild":"0","clear":"1"},{"id":"1326","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1326","town":"9","size":"93","price":"635000","rent":"0","doors":"3","beds":"12","tiles":"127","guild":"0","clear":"1"},{"id":"1327","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1327","town":"12","size":"322","price":"536000","rent":"0","doors":"7","beds":"44","tiles":"536","guild":"0","clear":"1"},{"id":"1329","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1329","town":"12","size":"178","price":"270000","rent":"0","doors":"6","beds":"12","tiles":"270","guild":"0","clear":"1"},{"id":"1330","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1330","town":"12","size":"115","price":"176000","rent":"0","doors":"2","beds":"6","tiles":"176","guild":"0","clear":"1"},{"id":"1331","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1331","town":"12","size":"133","price":"195000","rent":"0","doors":"4","beds":"8","tiles":"195","guild":"0","clear":"1"},{"id":"1332","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1332","town":"12","size":"12","price":"25000","rent":"0","doors":"0","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1333","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1333","town":"12","size":"12","price":"26000","rent":"0","doors":"0","beds":"4","tiles":"26","guild":"0","clear":"1"},{"id":"1334","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1334","town":"12","size":"12","price":"25000","rent":"0","doors":"0","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1335","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1335","town":"12","size":"12","price":"26000","rent":"0","doors":"0","beds":"4","tiles":"26","guild":"0","clear":"1"},{"id":"1336","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1336","town":"12","size":"12","price":"28000","rent":"0","doors":"0","beds":"4","tiles":"28","guild":"0","clear":"1"},{"id":"1337","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1337","town":"12","size":"12","price":"25000","rent":"0","doors":"0","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1338","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1338","town":"12","size":"12","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1339","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1339","town":"12","size":"12","price":"24000","rent":"0","doors":"1","beds":"4","tiles":"24","guild":"0","clear":"1"},{"id":"1340","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1340","town":"12","size":"12","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1341","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1341","town":"12","size":"12","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1342","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1342","town":"12","size":"12","price":"26000","rent":"0","doors":"1","beds":"4","tiles":"26","guild":"0","clear":"1"},{"id":"1343","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1343","town":"12","size":"12","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1344","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1344","town":"12","size":"102","price":"154000","rent":"0","doors":"3","beds":"8","tiles":"154","guild":"0","clear":"1"},{"id":"1345","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1345","town":"12","size":"87","price":"135000","rent":"0","doors":"4","beds":"4","tiles":"135","guild":"0","clear":"1"},{"id":"1346","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1346","town":"12","size":"82","price":"143000","rent":"0","doors":"5","beds":"8","tiles":"143","guild":"0","clear":"1"},{"id":"1347","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1347","town":"9","size":"124","price":"695000","rent":"0","doors":"6","beds":"2","tiles":"139","guild":"0","clear":"1"},{"id":"1348","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1348","town":"9","size":"145","price":"890000","rent":"0","doors":"3","beds":"6","tiles":"178","guild":"0","clear":"1"},{"id":"1349","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1349","town":"12","size":"121","price":"175000","rent":"0","doors":"3","beds":"4","tiles":"175","guild":"0","clear":"1"},{"id":"1351","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1351","town":"12","size":"43","price":"66000","rent":"0","doors":"2","beds":"4","tiles":"66","guild":"0","clear":"1"},{"id":"1353","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1353","town":"12","size":"107","price":"175000","rent":"0","doors":"5","beds":"8","tiles":"175","guild":"0","clear":"1"},{"id":"1354","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1354","town":"12","size":"58","price":"87000","rent":"0","doors":"3","beds":"8","tiles":"87","guild":"0","clear":"1"},{"id":"1355","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1355","town":"12","size":"49","price":"77000","rent":"0","doors":"1","beds":"6","tiles":"77","guild":"0","clear":"1"},{"id":"1356","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1356","town":"12","size":"40","price":"66000","rent":"0","doors":"1","beds":"6","tiles":"66","guild":"0","clear":"1"},{"id":"1357","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1357","town":"12","size":"22","price":"40000","rent":"0","doors":"1","beds":"6","tiles":"40","guild":"0","clear":"1"},{"id":"1358","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1358","town":"12","size":"12","price":"25000","rent":"0","doors":"0","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1359","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1359","town":"12","size":"13","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1361","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1361","town":"12","size":"30","price":"51000","rent":"0","doors":"1","beds":"6","tiles":"51","guild":"0","clear":"1"},{"id":"1362","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond Flat 9","town":"13","size":"17","price":"37000","rent":"0","doors":"2","beds":"4","tiles":"37","guild":"0","clear":"1"},{"id":"1364","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond Flat 2","town":"13","size":"82","price":"125000","rent":"0","doors":"4","beds":"6","tiles":"125","guild":"0","clear":"1"},{"id":"1365","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond Flat 3","town":"13","size":"7","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"1366","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond Flat 4","town":"13","size":"5","price":"17000","rent":"0","doors":"1","beds":"4","tiles":"17","guild":"0","clear":"1"},{"id":"1367","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond Flat 5","town":"13","size":"7","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"1368","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond Flat 6","town":"13","size":"7","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"1369","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1369","town":"9","size":"9","price":"80000","rent":"0","doors":"1","beds":"6","tiles":"16","guild":"0","clear":"1"},{"id":"1372","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat 1","town":"10","size":"20","price":"36000","rent":"0","doors":"1","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"1373","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat 2","town":"10","size":"22","price":"36000","rent":"0","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"1"},{"id":"1374","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat 3","town":"10","size":"22","price":"42000","rent":"0","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"1"},{"id":"1375","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat 4","town":"10","size":"29","price":"49000","rent":"0","doors":"2","beds":"2","tiles":"49","guild":"0","clear":"1"},{"id":"1378","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat 5","town":"10","size":"158","price":"238000","rent":"0","doors":"2","beds":"10","tiles":"238","guild":"0","clear":"1"},{"id":"1380","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1380","town":"15","size":"0","price":"5000","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"1"},{"id":"1381","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1381","town":"15","size":"0","price":"5000","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"1"},{"id":"1382","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #1382","town":"15","size":"0","price":"5000","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"1"},{"id":"1383","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat 6","town":"10","size":"170","price":"235000","rent":"0","doors":"5","beds":"2","tiles":"235","guild":"0","clear":"1"},{"id":"1384","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope's Mansion","town":"10","size":"4","price":"12000","rent":"0","doors":"1","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"1385","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1385","town":"10","size":"4","price":"12000","rent":"0","doors":"1","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"1386","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1386","town":"10","size":"4","price":"14000","rent":"0","doors":"1","beds":"2","tiles":"14","guild":"0","clear":"1"},{"id":"1387","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1387","town":"10","size":"10","price":"25000","rent":"0","doors":"1","beds":"6","tiles":"25","guild":"0","clear":"1"},{"id":"1388","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1388","town":"10","size":"9","price":"25000","rent":"0","doors":"1","beds":"6","tiles":"25","guild":"0","clear":"1"},{"id":"1389","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1389","town":"10","size":"13","price":"36000","rent":"0","doors":"1","beds":"12","tiles":"36","guild":"0","clear":"1"},{"id":"1390","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1390","town":"10","size":"8","price":"16000","rent":"0","doors":"1","beds":"0","tiles":"16","guild":"0","clear":"1"},{"id":"1391","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1391","town":"10","size":"14","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1392","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1392","town":"10","size":"6","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"1393","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1393","town":"10","size":"6","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"1394","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1394","town":"10","size":"6","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"1395","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1395","town":"10","size":"32","price":"49000","rent":"0","doors":"1","beds":"4","tiles":"49","guild":"0","clear":"1"},{"id":"1396","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1396","town":"10","size":"11","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1397","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1397","town":"10","size":"16","price":"30000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"1398","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1398","town":"10","size":"21","price":"36000","rent":"0","doors":"1","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"1399","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1399","town":"10","size":"89","price":"141000","rent":"0","doors":"3","beds":"8","tiles":"141","guild":"0","clear":"1"},{"id":"1400","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1400","town":"10","size":"44","price":"60000","rent":"0","doors":"1","beds":"0","tiles":"60","guild":"0","clear":"1"},{"id":"1401","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1401","town":"10","size":"16","price":"30000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"1403","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1403","town":"10","size":"32","price":"54000","rent":"0","doors":"1","beds":"8","tiles":"54","guild":"0","clear":"1"},{"id":"1404","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1404","town":"10","size":"36","price":"56000","rent":"0","doors":"1","beds":"6","tiles":"56","guild":"0","clear":"1"},{"id":"1405","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1405","town":"10","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"1406","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1406","town":"10","size":"13","price":"24000","rent":"0","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"1407","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1407","town":"10","size":"7","price":"17000","rent":"0","doors":"1","beds":"2","tiles":"17","guild":"0","clear":"1"},{"id":"1408","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1408","town":"10","size":"66","price":"98000","rent":"0","doors":"1","beds":"6","tiles":"98","guild":"0","clear":"1"},{"id":"1409","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1409","town":"10","size":"13","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1410","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1410","town":"10","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"1411","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1411","town":"10","size":"25","price":"48000","rent":"0","doors":"2","beds":"4","tiles":"48","guild":"0","clear":"1"},{"id":"1412","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1412","town":"10","size":"6","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"1413","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1413","town":"10","size":"20","price":"36000","rent":"0","doors":"1","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"1414","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1414","town":"10","size":"23","price":"42000","rent":"0","doors":"1","beds":"6","tiles":"42","guild":"0","clear":"1"},{"id":"1415","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1415","town":"10","size":"80","price":"142000","rent":"0","doors":"3","beds":"14","tiles":"142","guild":"0","clear":"1"},{"id":"1417","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1417","town":"10","size":"112","price":"133000","rent":"0","doors":"3","beds":"8","tiles":"133","guild":"0","clear":"1"},{"id":"1418","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1418","town":"10","size":"44","price":"71000","rent":"0","doors":"1","beds":"6","tiles":"71","guild":"0","clear":"1"},{"id":"1419","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1419","town":"10","size":"58","price":"95000","rent":"0","doors":"2","beds":"6","tiles":"95","guild":"0","clear":"1"},{"id":"1420","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1420","town":"10","size":"13","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1421","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1421","town":"10","size":"13","price":"27000","rent":"0","doors":"1","beds":"4","tiles":"27","guild":"0","clear":"1"},{"id":"1422","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1422","town":"10","size":"11","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1423","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1423","town":"10","size":"6","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"1424","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1424","town":"10","size":"39","price":"60000","rent":"0","doors":"1","beds":"2","tiles":"60","guild":"0","clear":"1"},{"id":"1425","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1425","town":"10","size":"13","price":"25000","rent":"0","doors":"1","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1426","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1426","town":"10","size":"8","price":"20000","rent":"0","doors":"1","beds":"4","tiles":"20","guild":"0","clear":"1"},{"id":"1427","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1427","town":"10","size":"16","price":"30000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"1428","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1428","town":"10","size":"9","price":"20000","rent":"0","doors":"1","beds":"4","tiles":"20","guild":"0","clear":"1"},{"id":"1429","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1429","town":"10","size":"10","price":"25000","rent":"0","doors":"1","beds":"6","tiles":"25","guild":"0","clear":"1"},{"id":"1430","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1430","town":"10","size":"10","price":"30000","rent":"0","doors":"1","beds":"10","tiles":"30","guild":"0","clear":"1"},{"id":"1431","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1431","town":"10","size":"2","price":"10000","rent":"0","doors":"1","beds":"2","tiles":"10","guild":"0","clear":"1"},{"id":"1432","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1432","town":"10","size":"4","price":"13000","rent":"0","doors":"1","beds":"2","tiles":"13","guild":"0","clear":"1"},{"id":"1433","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1433","town":"10","size":"4","price":"16000","rent":"0","doors":"1","beds":"4","tiles":"16","guild":"0","clear":"1"},{"id":"1434","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1434","town":"10","size":"6","price":"11000","rent":"0","doors":"1","beds":"2","tiles":"11","guild":"0","clear":"1"},{"id":"1435","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1435","town":"10","size":"6","price":"11000","rent":"0","doors":"1","beds":"2","tiles":"11","guild":"0","clear":"1"},{"id":"1436","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1436","town":"10","size":"4","price":"12000","rent":"0","doors":"1","beds":"4","tiles":"12","guild":"0","clear":"1"},{"id":"1437","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1437","town":"10","size":"4","price":"12000","rent":"0","doors":"1","beds":"4","tiles":"12","guild":"0","clear":"1"},{"id":"1438","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1438","town":"10","size":"27","price":"49000","rent":"0","doors":"2","beds":"4","tiles":"49","guild":"0","clear":"1"},{"id":"1439","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1439","town":"10","size":"16","price":"30000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"1440","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Port Hope Flat #1440","town":"10","size":"23","price":"49000","rent":"0","doors":"2","beds":"6","tiles":"49","guild":"0","clear":"1"},{"id":"1441","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Saara House 7","town":"1","size":"19","price":"175000","rent":"10000","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"1442","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Saara House 10","town":"1","size":"19","price":"120000","rent":"10000","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"1443","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1443","town":"12","size":"8","price":"20000","rent":"0","doors":"1","beds":"4","tiles":"20","guild":"0","clear":"1"},{"id":"1444","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Demona House 2","town":"1","size":"53","price":"315000","rent":"10000","doors":"2","beds":"6","tiles":"63","guild":"0","clear":"1"},{"id":"1445","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1445","town":"12","size":"15","price":"26000","rent":"0","doors":"1","beds":"4","tiles":"26","guild":"0","clear":"1"},{"id":"1446","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1446","town":"12","size":"13","price":"22000","rent":"0","doors":"2","beds":"4","tiles":"22","guild":"0","clear":"1"},{"id":"1447","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1447","town":"12","size":"15","price":"26000","rent":"0","doors":"1","beds":"4","tiles":"26","guild":"0","clear":"1"},{"id":"1448","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1448","town":"12","size":"11","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"1449","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1449","town":"12","size":"9","price":"17000","rent":"0","doors":"1","beds":"4","tiles":"17","guild":"0","clear":"1"},{"id":"1450","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1450","town":"12","size":"14","price":"25000","rent":"0","doors":"2","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1451","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1451","town":"12","size":"15","price":"23000","rent":"0","doors":"1","beds":"2","tiles":"23","guild":"0","clear":"1"},{"id":"1452","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1452","town":"12","size":"7","price":"14000","rent":"0","doors":"1","beds":"2","tiles":"14","guild":"0","clear":"1"},{"id":"1453","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1453","town":"12","size":"23","price":"31000","rent":"0","doors":"2","beds":"2","tiles":"31","guild":"0","clear":"1"},{"id":"1454","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1454","town":"12","size":"8","price":"14000","rent":"0","doors":"1","beds":"2","tiles":"14","guild":"0","clear":"1"},{"id":"1455","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1455","town":"12","size":"7","price":"14000","rent":"0","doors":"1","beds":"2","tiles":"14","guild":"0","clear":"1"},{"id":"1456","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1456","town":"12","size":"15","price":"31000","rent":"0","doors":"1","beds":"10","tiles":"31","guild":"0","clear":"1"},{"id":"1457","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1457","town":"12","size":"20","price":"30000","rent":"0","doors":"2","beds":"2","tiles":"30","guild":"0","clear":"1"},{"id":"1458","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1458","town":"12","size":"4","price":"10000","rent":"0","doors":"1","beds":"2","tiles":"10","guild":"0","clear":"1"},{"id":"1459","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1459","town":"12","size":"5","price":"11000","rent":"0","doors":"1","beds":"2","tiles":"11","guild":"0","clear":"1"},{"id":"1460","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1460","town":"12","size":"9","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"1461","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1461","town":"12","size":"18","price":"25000","rent":"0","doors":"2","beds":"4","tiles":"25","guild":"0","clear":"1"},{"id":"1462","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1462","town":"12","size":"12","price":"19000","rent":"0","doors":"1","beds":"4","tiles":"19","guild":"0","clear":"1"},{"id":"1463","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1463","town":"12","size":"10","price":"21000","rent":"0","doors":"1","beds":"2","tiles":"21","guild":"0","clear":"1"},{"id":"1464","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1464","town":"12","size":"13","price":"26000","rent":"0","doors":"1","beds":"2","tiles":"26","guild":"0","clear":"1"},{"id":"1465","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1465","town":"12","size":"7","price":"14000","rent":"0","doors":"1","beds":"2","tiles":"14","guild":"0","clear":"1"},{"id":"1466","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1466","town":"12","size":"6","price":"13000","rent":"0","doors":"1","beds":"4","tiles":"13","guild":"0","clear":"1"},{"id":"1467","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1467","town":"12","size":"8","price":"14000","rent":"0","doors":"1","beds":"2","tiles":"14","guild":"0","clear":"1"},{"id":"1468","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1468","town":"12","size":"291","price":"402000","rent":"0","doors":"12","beds":"62","tiles":"402","guild":"0","clear":"1"},{"id":"1469","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #1469","town":"12","size":"107","price":"158000","rent":"0","doors":"5","beds":"4","tiles":"158","guild":"0","clear":"1"},{"id":"1578","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 2","town":"14","size":"8","price":"12000","rent":"0","doors":"1","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"1579","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 3","town":"14","size":"7","price":"13000","rent":"0","doors":"1","beds":"2","tiles":"13","guild":"0","clear":"1"},{"id":"1580","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 4","town":"14","size":"11","price":"21000","rent":"0","doors":"1","beds":"4","tiles":"21","guild":"0","clear":"1"},{"id":"1582","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 6","town":"14","size":"7","price":"11000","rent":"0","doors":"1","beds":"2","tiles":"11","guild":"0","clear":"1"},{"id":"1583","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 7","town":"14","size":"11","price":"21000","rent":"0","doors":"1","beds":"4","tiles":"21","guild":"0","clear":"1"},{"id":"1585","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 9","town":"14","size":"32","price":"48000","rent":"0","doors":"1","beds":"4","tiles":"48","guild":"0","clear":"1"},{"id":"1587","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 11","town":"14","size":"38","price":"57000","rent":"0","doors":"1","beds":"4","tiles":"57","guild":"0","clear":"1"},{"id":"1588","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 12","town":"14","size":"46","price":"72000","rent":"0","doors":"1","beds":"4","tiles":"72","guild":"0","clear":"1"},{"id":"1589","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 13","town":"14","size":"47","price":"60000","rent":"0","doors":"1","beds":"4","tiles":"60","guild":"0","clear":"1"},{"id":"1590","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 14","town":"14","size":"54","price":"78000","rent":"0","doors":"2","beds":"4","tiles":"78","guild":"0","clear":"1"},{"id":"1591","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 15","town":"14","size":"57","price":"85000","rent":"0","doors":"2","beds":"2","tiles":"85","guild":"0","clear":"1"},{"id":"1592","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 16","town":"14","size":"73","price":"111000","rent":"0","doors":"2","beds":"6","tiles":"111","guild":"0","clear":"1"},{"id":"1593","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 17","town":"14","size":"38","price":"47000","rent":"0","doors":"1","beds":"4","tiles":"47","guild":"0","clear":"1"},{"id":"1594","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 18","town":"14","size":"157","price":"264000","rent":"0","doors":"7","beds":"16","tiles":"264","guild":"0","clear":"1"},{"id":"1595","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 19","town":"14","size":"441","price":"650000","rent":"0","doors":"15","beds":"38","tiles":"650","guild":"0","clear":"1"},{"id":"1596","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 20","town":"14","size":"8","price":"12000","rent":"0","doors":"1","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"1597","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 21","town":"14","size":"7","price":"13000","rent":"0","doors":"1","beds":"2","tiles":"13","guild":"0","clear":"1"},{"id":"1598","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 22","town":"14","size":"11","price":"19000","rent":"0","doors":"1","beds":"4","tiles":"19","guild":"0","clear":"1"},{"id":"1600","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 24","town":"14","size":"7","price":"11000","rent":"0","doors":"1","beds":"2","tiles":"11","guild":"0","clear":"1"},{"id":"1601","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya House 25","town":"14","size":"11","price":"22000","rent":"0","doors":"1","beds":"4","tiles":"22","guild":"0","clear":"1"},{"id":"1602","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais Guildhouse 6","town":"5","size":"167","price":"256000","rent":"0","doors":"9","beds":"24","tiles":"256","guild":"0","clear":"1"},{"id":"1603","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kazordoon Guild House 2","town":"4","size":"295","price":"352000","rent":"0","doors":"18","beds":"32","tiles":"352","guild":"0","clear":"1"},{"id":"1604","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 64","town":"5","size":"17","price":"20000","rent":"0","doors":"1","beds":"0","tiles":"20","guild":"0","clear":"1"},{"id":"1605","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais 65","town":"5","size":"21","price":"25000","rent":"0","doors":"1","beds":"0","tiles":"25","guild":"0","clear":"1"},{"id":"1606","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1606","town":"7","size":"101","price":"194000","rent":"0","doors":"11","beds":"6","tiles":"194","guild":"0","clear":"1"},{"id":"1607","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1607","town":"7","size":"14","price":"33000","rent":"0","doors":"2","beds":"4","tiles":"33","guild":"0","clear":"1"},{"id":"1608","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1608","town":"7","size":"68","price":"135000","rent":"0","doors":"7","beds":"4","tiles":"135","guild":"0","clear":"1"},{"id":"1609","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1609","town":"7","size":"54","price":"83000","rent":"0","doors":"1","beds":"2","tiles":"83","guild":"0","clear":"1"},{"id":"1610","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1610","town":"7","size":"48","price":"78000","rent":"0","doors":"1","beds":"4","tiles":"78","guild":"0","clear":"1"},{"id":"1611","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1611","town":"7","size":"68","price":"103000","rent":"0","doors":"2","beds":"4","tiles":"103","guild":"0","clear":"1"},{"id":"1613","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1613","town":"7","size":"95","price":"148000","rent":"0","doors":"5","beds":"4","tiles":"148","guild":"0","clear":"1"},{"id":"1615","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1615","town":"7","size":"56","price":"87000","rent":"0","doors":"1","beds":"4","tiles":"87","guild":"0","clear":"1"},{"id":"1616","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1616","town":"7","size":"20","price":"39000","rent":"0","doors":"1","beds":"4","tiles":"39","guild":"0","clear":"1"},{"id":"1617","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1617","town":"7","size":"22","price":"38000","rent":"0","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"1"},{"id":"1618","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1618","town":"7","size":"52","price":"88000","rent":"0","doors":"3","beds":"6","tiles":"88","guild":"0","clear":"1"},{"id":"1619","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1619","town":"7","size":"23","price":"35000","rent":"0","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"1620","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1620","town":"7","size":"22","price":"35000","rent":"0","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"1621","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1621","town":"7","size":"22","price":"38000","rent":"0","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"1"},{"id":"1622","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1622","town":"7","size":"23","price":"35000","rent":"0","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"1623","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1623","town":"7","size":"36","price":"63000","rent":"0","doors":"2","beds":"6","tiles":"63","guild":"0","clear":"1"},{"id":"1624","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1624","town":"7","size":"24","price":"39000","rent":"0","doors":"1","beds":"0","tiles":"39","guild":"0","clear":"1"},{"id":"1625","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1625","town":"7","size":"40","price":"60000","rent":"0","doors":"2","beds":"2","tiles":"60","guild":"0","clear":"1"},{"id":"1626","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1626","town":"7","size":"23","price":"35000","rent":"0","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"1627","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1627","town":"7","size":"23","price":"38000","rent":"0","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"1"},{"id":"1628","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1628","town":"7","size":"34","price":"58000","rent":"0","doors":"2","beds":"4","tiles":"58","guild":"0","clear":"1"},{"id":"1629","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1629","town":"7","size":"22","price":"35000","rent":"0","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"1630","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1630","town":"7","size":"33","price":"55000","rent":"0","doors":"2","beds":"4","tiles":"55","guild":"0","clear":"1"},{"id":"1631","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1631","town":"7","size":"69","price":"109000","rent":"0","doors":"2","beds":"4","tiles":"109","guild":"0","clear":"1"},{"id":"1632","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1632","town":"7","size":"61","price":"102000","rent":"0","doors":"3","beds":"4","tiles":"102","guild":"0","clear":"1"},{"id":"1633","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1633","town":"7","size":"207","price":"397000","rent":"0","doors":"15","beds":"32","tiles":"397","guild":"0","clear":"1"},{"id":"1634","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1634","town":"7","size":"177","price":"331000","rent":"0","doors":"16","beds":"20","tiles":"331","guild":"0","clear":"1"},{"id":"1635","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1635","town":"7","size":"20","price":"35000","rent":"0","doors":"1","beds":"4","tiles":"35","guild":"0","clear":"1"},{"id":"1636","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1636","town":"7","size":"22","price":"38000","rent":"0","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"1"},{"id":"1637","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1637","town":"7","size":"33","price":"61000","rent":"0","doors":"2","beds":"4","tiles":"61","guild":"0","clear":"1"},{"id":"1638","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1638","town":"7","size":"20","price":"38000","rent":"0","doors":"1","beds":"4","tiles":"38","guild":"0","clear":"1"},{"id":"1639","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1639","town":"7","size":"34","price":"58000","rent":"0","doors":"2","beds":"4","tiles":"58","guild":"0","clear":"1"},{"id":"1640","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1640","town":"7","size":"22","price":"38000","rent":"0","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"1"},{"id":"1641","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1641","town":"7","size":"22","price":"35000","rent":"0","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"1642","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1642","town":"7","size":"23","price":"35000","rent":"0","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"1643","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1643","town":"7","size":"10","price":"23000","rent":"0","doors":"1","beds":"2","tiles":"23","guild":"0","clear":"1"},{"id":"1644","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1644","town":"7","size":"25","price":"43000","rent":"0","doors":"1","beds":"4","tiles":"43","guild":"0","clear":"1"},{"id":"1645","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1645","town":"7","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"1646","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1646","town":"7","size":"26","price":"40000","rent":"0","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"1"},{"id":"1647","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1647","town":"7","size":"21","price":"38000","rent":"0","doors":"1","beds":"4","tiles":"38","guild":"0","clear":"1"},{"id":"1648","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1648","town":"7","size":"21","price":"35000","rent":"0","doors":"1","beds":"4","tiles":"35","guild":"0","clear":"1"},{"id":"1649","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1649","town":"7","size":"22","price":"38000","rent":"0","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"1"},{"id":"1650","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1650","town":"7","size":"56","price":"85000","rent":"0","doors":"2","beds":"4","tiles":"85","guild":"0","clear":"1"},{"id":"1651","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1651","town":"7","size":"22","price":"35000","rent":"0","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"1652","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1652","town":"7","size":"40","price":"62000","rent":"0","doors":"2","beds":"2","tiles":"62","guild":"0","clear":"1"},{"id":"1653","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1653","town":"7","size":"54","price":"88000","rent":"0","doors":"3","beds":"4","tiles":"88","guild":"0","clear":"1"},{"id":"1654","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1654","town":"7","size":"37","price":"60000","rent":"0","doors":"2","beds":"4","tiles":"60","guild":"0","clear":"1"},{"id":"1655","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1655","town":"7","size":"22","price":"36000","rent":"0","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"1"},{"id":"1656","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1656","town":"7","size":"26","price":"40000","rent":"0","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"1"},{"id":"1657","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1657","town":"7","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"1658","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1658","town":"7","size":"25","price":"40000","rent":"0","doors":"1","beds":"4","tiles":"40","guild":"0","clear":"1"},{"id":"1659","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1659","town":"7","size":"14","price":"28000","rent":"0","doors":"1","beds":"2","tiles":"28","guild":"0","clear":"1"},{"id":"1660","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1660","town":"7","size":"22","price":"36000","rent":"0","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"1"},{"id":"1661","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1661","town":"7","size":"14","price":"28000","rent":"0","doors":"1","beds":"2","tiles":"28","guild":"0","clear":"1"},{"id":"1662","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1662","town":"7","size":"22","price":"37000","rent":"0","doors":"1","beds":"2","tiles":"37","guild":"0","clear":"1"},{"id":"1663","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1663","town":"7","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"1664","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1664","town":"7","size":"44","price":"80000","rent":"0","doors":"3","beds":"8","tiles":"80","guild":"0","clear":"1"},{"id":"1665","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1665","town":"7","size":"23","price":"35000","rent":"0","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"1666","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1666","town":"7","size":"47","price":"82000","rent":"0","doors":"3","beds":"6","tiles":"82","guild":"0","clear":"1"},{"id":"1667","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1667","town":"7","size":"21","price":"38000","rent":"0","doors":"1","beds":"4","tiles":"38","guild":"0","clear":"1"},{"id":"1668","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1668","town":"7","size":"36","price":"60000","rent":"0","doors":"2","beds":"4","tiles":"60","guild":"0","clear":"1"},{"id":"1669","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1669","town":"7","size":"32","price":"55000","rent":"0","doors":"2","beds":"4","tiles":"55","guild":"0","clear":"1"},{"id":"1670","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1670","town":"7","size":"37","price":"62000","rent":"0","doors":"2","beds":"4","tiles":"62","guild":"0","clear":"1"},{"id":"1671","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1671","town":"7","size":"34","price":"59000","rent":"0","doors":"2","beds":"4","tiles":"59","guild":"0","clear":"1"},{"id":"1673","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1673","town":"7","size":"52","price":"91000","rent":"0","doors":"3","beds":"4","tiles":"91","guild":"0","clear":"1"},{"id":"1674","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1674","town":"7","size":"22","price":"38000","rent":"0","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"1"},{"id":"1675","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1675","town":"7","size":"37","price":"62000","rent":"0","doors":"2","beds":"4","tiles":"62","guild":"0","clear":"1"},{"id":"1676","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1676","town":"7","size":"38","price":"66000","rent":"0","doors":"2","beds":"4","tiles":"66","guild":"0","clear":"1"},{"id":"1677","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1677","town":"7","size":"50","price":"85000","rent":"0","doors":"3","beds":"8","tiles":"85","guild":"0","clear":"1"},{"id":"1678","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1678","town":"7","size":"23","price":"38000","rent":"0","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"1"},{"id":"1679","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1679","town":"7","size":"48","price":"92000","rent":"0","doors":"3","beds":"10","tiles":"92","guild":"0","clear":"1"},{"id":"1680","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1680","town":"7","size":"22","price":"30000","rent":"0","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"1"},{"id":"1681","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1681","town":"7","size":"37","price":"63000","rent":"0","doors":"2","beds":"4","tiles":"63","guild":"0","clear":"1"},{"id":"1683","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1683","town":"7","size":"32","price":"55000","rent":"0","doors":"2","beds":"4","tiles":"55","guild":"0","clear":"1"},{"id":"1684","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1684","town":"7","size":"34","price":"58000","rent":"0","doors":"2","beds":"4","tiles":"58","guild":"0","clear":"1"},{"id":"1685","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia Flat #1685","town":"7","size":"38","price":"60000","rent":"0","doors":"2","beds":"4","tiles":"60","guild":"0","clear":"1"},{"id":"1686","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1686","town":"8","size":"17","price":"30000","rent":"0","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"1"},{"id":"1687","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1687","town":"8","size":"13","price":"29000","rent":"0","doors":"1","beds":"2","tiles":"29","guild":"0","clear":"1"},{"id":"1688","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1688","town":"8","size":"18","price":"33000","rent":"0","doors":"1","beds":"2","tiles":"33","guild":"0","clear":"1"},{"id":"1689","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1689","town":"8","size":"20","price":"36000","rent":"0","doors":"1","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"1690","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1690","town":"8","size":"31","price":"56000","rent":"0","doors":"3","beds":"6","tiles":"56","guild":"0","clear":"1"},{"id":"1691","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1691","town":"8","size":"14","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1692","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1692","town":"8","size":"21","price":"35000","rent":"0","doors":"1","beds":"4","tiles":"35","guild":"0","clear":"1"},{"id":"1693","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1693","town":"8","size":"31","price":"49000","rent":"0","doors":"1","beds":"4","tiles":"49","guild":"0","clear":"1"},{"id":"1694","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1694","town":"8","size":"99","price":"176000","rent":"0","doors":"6","beds":"20","tiles":"176","guild":"0","clear":"1"},{"id":"1695","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1695","town":"8","size":"8","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"1696","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1696","town":"8","size":"8","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"1697","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1697","town":"8","size":"8","price":"21000","rent":"0","doors":"1","beds":"2","tiles":"21","guild":"0","clear":"1"},{"id":"1698","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1698","town":"8","size":"8","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"1699","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1699","town":"8","size":"13","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1700","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1700","town":"8","size":"25","price":"42000","rent":"0","doors":"1","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"1701","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1701","town":"8","size":"21","price":"43000","rent":"0","doors":"2","beds":"4","tiles":"43","guild":"0","clear":"1"},{"id":"1702","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1702","town":"8","size":"41","price":"78000","rent":"0","doors":"3","beds":"6","tiles":"78","guild":"0","clear":"1"},{"id":"1703","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1703","town":"8","size":"6","price":"12000","rent":"0","doors":"1","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"1704","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1704","town":"8","size":"6","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"1705","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1705","town":"8","size":"4","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"1706","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1706","town":"8","size":"5","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"1708","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1708","town":"8","size":"34","price":"62000","rent":"0","doors":"3","beds":"8","tiles":"62","guild":"0","clear":"1"},{"id":"1710","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1710","town":"8","size":"32","price":"54000","rent":"0","doors":"2","beds":"6","tiles":"54","guild":"0","clear":"1"},{"id":"1711","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1711","town":"8","size":"43","price":"78000","rent":"0","doors":"4","beds":"8","tiles":"78","guild":"0","clear":"1"},{"id":"1712","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1712","town":"8","size":"51","price":"86000","rent":"0","doors":"4","beds":"6","tiles":"86","guild":"0","clear":"1"},{"id":"1713","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1713","town":"8","size":"27","price":"40000","rent":"0","doors":"1","beds":"4","tiles":"40","guild":"0","clear":"1"},{"id":"1714","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1714","town":"8","size":"27","price":"42000","rent":"0","doors":"1","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"1715","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1715","town":"8","size":"19","price":"30000","rent":"0","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"1"},{"id":"1716","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1716","town":"8","size":"18","price":"33000","rent":"0","doors":"1","beds":"2","tiles":"33","guild":"0","clear":"1"},{"id":"1717","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1717","town":"8","size":"22","price":"36000","rent":"0","doors":"1","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"1718","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1718","town":"8","size":"17","price":"33000","rent":"0","doors":"1","beds":"4","tiles":"33","guild":"0","clear":"1"},{"id":"1719","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1719","town":"8","size":"17","price":"27000","rent":"0","doors":"1","beds":"2","tiles":"27","guild":"0","clear":"1"},{"id":"1720","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1720","town":"8","size":"0","price":"3000","rent":"0","doors":"0","beds":"0","tiles":"3","guild":"0","clear":"1"},{"id":"1721","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1721","town":"8","size":"13","price":"24000","rent":"0","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"1722","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1722","town":"8","size":"24","price":"39000","rent":"0","doors":"1","beds":"0","tiles":"39","guild":"0","clear":"1"},{"id":"1723","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1723","town":"8","size":"21","price":"39000","rent":"0","doors":"1","beds":"6","tiles":"39","guild":"0","clear":"1"},{"id":"1724","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1724","town":"8","size":"30","price":"52000","rent":"0","doors":"1","beds":"6","tiles":"52","guild":"0","clear":"1"},{"id":"1725","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1725","town":"8","size":"32","price":"49000","rent":"0","doors":"1","beds":"4","tiles":"49","guild":"0","clear":"1"},{"id":"1726","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1726","town":"8","size":"33","price":"49000","rent":"0","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"1"},{"id":"1727","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1727","town":"8","size":"33","price":"49000","rent":"0","doors":"1","beds":"4","tiles":"49","guild":"0","clear":"1"},{"id":"1728","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1728","town":"8","size":"22","price":"36000","rent":"0","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"1"},{"id":"1729","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1729","town":"8","size":"21","price":"36000","rent":"0","doors":"1","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"1730","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1730","town":"8","size":"14","price":"28000","rent":"0","doors":"1","beds":"2","tiles":"28","guild":"0","clear":"1"},{"id":"1731","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1731","town":"8","size":"31","price":"50000","rent":"0","doors":"1","beds":"4","tiles":"50","guild":"0","clear":"1"},{"id":"1732","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1732","town":"8","size":"15","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1733","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1733","town":"8","size":"22","price":"39000","rent":"0","doors":"1","beds":"4","tiles":"39","guild":"0","clear":"1"},{"id":"1734","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1734","town":"8","size":"14","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1735","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1735","town":"8","size":"14","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1736","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1736","town":"8","size":"13","price":"23000","rent":"0","doors":"1","beds":"4","tiles":"23","guild":"0","clear":"1"},{"id":"1737","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1737","town":"8","size":"12","price":"30000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"1738","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1738","town":"8","size":"17","price":"33000","rent":"0","doors":"1","beds":"2","tiles":"33","guild":"0","clear":"1"},{"id":"1739","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1739","town":"8","size":"17","price":"30000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"1740","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1740","town":"8","size":"31","price":"46000","rent":"0","doors":"2","beds":"0","tiles":"46","guild":"0","clear":"1"},{"id":"1741","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1741","town":"8","size":"13","price":"31000","rent":"0","doors":"1","beds":"6","tiles":"31","guild":"0","clear":"1"},{"id":"1742","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1742","town":"8","size":"14","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1743","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1743","town":"8","size":"28","price":"48000","rent":"0","doors":"2","beds":"4","tiles":"48","guild":"0","clear":"1"},{"id":"1744","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1744","town":"8","size":"15","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1745","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1745","town":"8","size":"76","price":"129000","rent":"0","doors":"3","beds":"16","tiles":"129","guild":"0","clear":"1"},{"id":"1746","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1746","town":"8","size":"25","price":"49000","rent":"0","doors":"2","beds":"4","tiles":"49","guild":"0","clear":"1"},{"id":"1747","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1747","town":"8","size":"15","price":"28000","rent":"0","doors":"1","beds":"2","tiles":"28","guild":"0","clear":"1"},{"id":"1748","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1748","town":"8","size":"23","price":"52000","rent":"0","doors":"3","beds":"4","tiles":"52","guild":"0","clear":"1"},{"id":"1749","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1749","town":"8","size":"7","price":"19000","rent":"0","doors":"1","beds":"2","tiles":"19","guild":"0","clear":"1"},{"id":"1750","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1750","town":"8","size":"7","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"1751","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1751","town":"8","size":"16","price":"27000","rent":"0","doors":"2","beds":"2","tiles":"27","guild":"0","clear":"1"},{"id":"1752","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1752","town":"8","size":"25","price":"42000","rent":"0","doors":"1","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"1753","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1753","town":"8","size":"21","price":"36000","rent":"0","doors":"1","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"1754","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1754","town":"8","size":"32","price":"53000","rent":"0","doors":"1","beds":"4","tiles":"53","guild":"0","clear":"1"},{"id":"1756","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1756","town":"8","size":"25","price":"45000","rent":"0","doors":"1","beds":"4","tiles":"45","guild":"0","clear":"1"},{"id":"1757","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1757","town":"8","size":"26","price":"42000","rent":"0","doors":"1","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"1758","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1758","town":"8","size":"27","price":"52000","rent":"0","doors":"2","beds":"4","tiles":"52","guild":"0","clear":"1"},{"id":"1759","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1759","town":"8","size":"50","price":"78000","rent":"0","doors":"2","beds":"6","tiles":"78","guild":"0","clear":"1"},{"id":"1760","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1760","town":"8","size":"83","price":"182000","rent":"0","doors":"5","beds":"32","tiles":"182","guild":"0","clear":"1"},{"id":"1761","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1761","town":"8","size":"27","price":"52000","rent":"0","doors":"2","beds":"4","tiles":"52","guild":"0","clear":"1"},{"id":"1762","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1762","town":"8","size":"24","price":"52000","rent":"0","doors":"3","beds":"4","tiles":"52","guild":"0","clear":"1"},{"id":"1763","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1763","town":"8","size":"33","price":"52000","rent":"0","doors":"1","beds":"2","tiles":"52","guild":"0","clear":"1"},{"id":"1764","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1764","town":"8","size":"25","price":"48000","rent":"0","doors":"2","beds":"6","tiles":"48","guild":"0","clear":"1"},{"id":"1765","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1765","town":"8","size":"25","price":"45000","rent":"0","doors":"1","beds":"4","tiles":"45","guild":"0","clear":"1"},{"id":"1766","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1766","town":"8","size":"36","price":"59000","rent":"0","doors":"1","beds":"6","tiles":"59","guild":"0","clear":"1"},{"id":"1767","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1767","town":"8","size":"63","price":"97000","rent":"0","doors":"3","beds":"6","tiles":"97","guild":"0","clear":"1"},{"id":"1768","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1768","town":"8","size":"13","price":"26000","rent":"0","doors":"1","beds":"4","tiles":"26","guild":"0","clear":"1"},{"id":"1769","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1769","town":"8","size":"13","price":"28000","rent":"0","doors":"1","beds":"2","tiles":"28","guild":"0","clear":"1"},{"id":"1770","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1770","town":"8","size":"13","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1771","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1771","town":"8","size":"14","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1772","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1772","town":"8","size":"13","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1773","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1773","town":"8","size":"13","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1774","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1774","town":"8","size":"13","price":"28000","rent":"0","doors":"1","beds":"2","tiles":"28","guild":"0","clear":"1"},{"id":"1775","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1775","town":"8","size":"13","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1776","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1776","town":"8","size":"47","price":"87000","rent":"0","doors":"3","beds":"6","tiles":"87","guild":"0","clear":"1"},{"id":"1777","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1777","town":"8","size":"170","price":"266000","rent":"0","doors":"5","beds":"32","tiles":"266","guild":"0","clear":"1"},{"id":"1778","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1778","town":"8","size":"7","price":"19000","rent":"0","doors":"1","beds":"2","tiles":"19","guild":"0","clear":"1"},{"id":"1779","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1779","town":"8","size":"4","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"1780","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1780","town":"8","size":"4","price":"12000","rent":"0","doors":"1","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"1781","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1781","town":"8","size":"22","price":"36000","rent":"0","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"1"},{"id":"1782","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1782","town":"8","size":"21","price":"39000","rent":"0","doors":"1","beds":"4","tiles":"39","guild":"0","clear":"1"},{"id":"1783","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1783","town":"8","size":"22","price":"39000","rent":"0","doors":"1","beds":"2","tiles":"39","guild":"0","clear":"1"},{"id":"1784","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1784","town":"8","size":"29","price":"53000","rent":"0","doors":"2","beds":"4","tiles":"53","guild":"0","clear":"1"},{"id":"1786","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1786","town":"8","size":"28","price":"54000","rent":"0","doors":"2","beds":"4","tiles":"54","guild":"0","clear":"1"},{"id":"1787","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1787","town":"8","size":"25","price":"48000","rent":"0","doors":"3","beds":"4","tiles":"48","guild":"0","clear":"1"},{"id":"1788","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1788","town":"8","size":"35","price":"56000","rent":"0","doors":"3","beds":"6","tiles":"56","guild":"0","clear":"1"},{"id":"1789","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1789","town":"8","size":"27","price":"55000","rent":"0","doors":"2","beds":"4","tiles":"55","guild":"0","clear":"1"},{"id":"1790","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1790","town":"8","size":"5","price":"12000","rent":"0","doors":"1","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"1791","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1791","town":"8","size":"18","price":"33000","rent":"0","doors":"1","beds":"2","tiles":"33","guild":"0","clear":"1"},{"id":"1792","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1792","town":"8","size":"21","price":"28000","rent":"0","doors":"1","beds":"4","tiles":"28","guild":"0","clear":"1"},{"id":"1793","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1793","town":"8","size":"18","price":"30000","rent":"0","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"1"},{"id":"1794","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1794","town":"8","size":"15","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1795","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1795","town":"8","size":"14","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"1796","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1796","town":"8","size":"18","price":"36000","rent":"0","doors":"2","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"1797","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1797","town":"8","size":"24","price":"51000","rent":"0","doors":"2","beds":"4","tiles":"51","guild":"0","clear":"1"},{"id":"1798","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1798","town":"8","size":"49","price":"83000","rent":"0","doors":"3","beds":"6","tiles":"83","guild":"0","clear":"1"},{"id":"1799","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1799","town":"6","size":"69","price":"114000","rent":"0","doors":"3","beds":"4","tiles":"114","guild":"0","clear":"1"},{"id":"1801","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1801","town":"6","size":"93","price":"164000","rent":"0","doors":"5","beds":"6","tiles":"164","guild":"0","clear":"1"},{"id":"1803","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1803","town":"6","size":"96","price":"167000","rent":"0","doors":"7","beds":"6","tiles":"167","guild":"0","clear":"1"},{"id":"1804","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1804","town":"6","size":"119","price":"195000","rent":"0","doors":"5","beds":"8","tiles":"195","guild":"0","clear":"1"},{"id":"1805","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1805","town":"6","size":"87","price":"153000","rent":"0","doors":"7","beds":"6","tiles":"153","guild":"0","clear":"1"},{"id":"1806","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1806","town":"6","size":"52","price":"99000","rent":"0","doors":"4","beds":"6","tiles":"99","guild":"0","clear":"1"},{"id":"1807","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1807","town":"6","size":"59","price":"99000","rent":"0","doors":"2","beds":"4","tiles":"99","guild":"0","clear":"1"},{"id":"1808","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1808","town":"6","size":"98","price":"168000","rent":"0","doors":"5","beds":"10","tiles":"168","guild":"0","clear":"1"},{"id":"1810","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1810","town":"6","size":"63","price":"114000","rent":"0","doors":"4","beds":"4","tiles":"114","guild":"0","clear":"1"},{"id":"1812","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1812","town":"6","size":"41","price":"79000","rent":"0","doors":"2","beds":"2","tiles":"79","guild":"0","clear":"1"},{"id":"1813","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1813","town":"6","size":"40","price":"64000","rent":"0","doors":"1","beds":"2","tiles":"64","guild":"0","clear":"1"},{"id":"1814","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1814","town":"6","size":"54","price":"96000","rent":"0","doors":"2","beds":"2","tiles":"96","guild":"0","clear":"1"},{"id":"1815","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1815","town":"6","size":"171","price":"334000","rent":"0","doors":"12","beds":"20","tiles":"334","guild":"0","clear":"1"},{"id":"1816","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1816","town":"6","size":"60","price":"108000","rent":"0","doors":"2","beds":"8","tiles":"108","guild":"0","clear":"1"},{"id":"1817","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1817","town":"6","size":"61","price":"108000","rent":"0","doors":"2","beds":"8","tiles":"108","guild":"0","clear":"1"},{"id":"1821","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1821","town":"6","size":"184","price":"316000","rent":"0","doors":"12","beds":"24","tiles":"316","guild":"0","clear":"1"},{"id":"1824","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1824","town":"6","size":"218","price":"390000","rent":"0","doors":"10","beds":"26","tiles":"390","guild":"0","clear":"1"},{"id":"1826","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1826","town":"6","size":"53","price":"73000","rent":"0","doors":"2","beds":"4","tiles":"73","guild":"0","clear":"1"},{"id":"1827","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1827","town":"6","size":"128","price":"243000","rent":"0","doors":"8","beds":"18","tiles":"243","guild":"0","clear":"1"},{"id":"1828","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1828","town":"6","size":"81","price":"154000","rent":"0","doors":"6","beds":"4","tiles":"154","guild":"0","clear":"1"},{"id":"1829","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1829","town":"6","size":"8","price":"23000","rent":"0","doors":"1","beds":"4","tiles":"23","guild":"0","clear":"1"},{"id":"1830","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1830","town":"6","size":"4","price":"12000","rent":"0","doors":"1","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"1831","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1831","town":"6","size":"8","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"1832","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1832","town":"6","size":"10","price":"23000","rent":"0","doors":"1","beds":"2","tiles":"23","guild":"0","clear":"1"},{"id":"1833","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1833","town":"6","size":"10","price":"23000","rent":"0","doors":"1","beds":"2","tiles":"23","guild":"0","clear":"1"},{"id":"1834","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1834","town":"6","size":"7","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"1835","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1835","town":"6","size":"8","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"1836","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1836","town":"6","size":"4","price":"12000","rent":"0","doors":"1","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"1837","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1837","town":"6","size":"113","price":"206000","rent":"0","doors":"7","beds":"8","tiles":"206","guild":"0","clear":"1"},{"id":"1839","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1839","town":"6","size":"75","price":"127000","rent":"0","doors":"2","beds":"4","tiles":"127","guild":"0","clear":"1"},{"id":"1840","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1840","town":"6","size":"77","price":"123000","rent":"0","doors":"2","beds":"4","tiles":"123","guild":"0","clear":"1"},{"id":"1841","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1841","town":"6","size":"261","price":"424000","rent":"0","doors":"15","beds":"18","tiles":"424","guild":"0","clear":"1"},{"id":"1842","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1842","town":"6","size":"4","price":"10000","rent":"0","doors":"1","beds":"2","tiles":"10","guild":"0","clear":"1"},{"id":"1843","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1843","town":"6","size":"7","price":"11000","rent":"0","doors":"1","beds":"2","tiles":"11","guild":"0","clear":"1"},{"id":"1844","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1844","town":"6","size":"7","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"1845","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1845","town":"6","size":"8","price":"13000","rent":"0","doors":"1","beds":"2","tiles":"13","guild":"0","clear":"1"},{"id":"1846","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1846","town":"6","size":"5","price":"11000","rent":"0","doors":"1","beds":"2","tiles":"11","guild":"0","clear":"1"},{"id":"1847","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1847","town":"6","size":"9","price":"23000","rent":"0","doors":"1","beds":"4","tiles":"23","guild":"0","clear":"1"},{"id":"1848","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1848","town":"6","size":"11","price":"23000","rent":"0","doors":"1","beds":"2","tiles":"23","guild":"0","clear":"1"},{"id":"1849","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1849","town":"6","size":"11","price":"23000","rent":"0","doors":"1","beds":"2","tiles":"23","guild":"0","clear":"1"},{"id":"1850","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1850","town":"6","size":"30","price":"54000","rent":"0","doors":"2","beds":"4","tiles":"54","guild":"0","clear":"1"},{"id":"1851","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1851","town":"6","size":"17","price":"39000","rent":"0","doors":"2","beds":"4","tiles":"39","guild":"0","clear":"1"},{"id":"1852","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1852","town":"6","size":"14","price":"28000","rent":"0","doors":"2","beds":"2","tiles":"28","guild":"0","clear":"1"},{"id":"1853","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1853","town":"6","size":"17","price":"28000","rent":"0","doors":"1","beds":"2","tiles":"28","guild":"0","clear":"1"},{"id":"1854","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1854","town":"6","size":"7","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"1855","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1855","town":"6","size":"4","price":"12000","rent":"0","doors":"1","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"1856","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1856","town":"6","size":"8","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"1857","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1857","town":"6","size":"8","price":"23000","rent":"0","doors":"1","beds":"4","tiles":"23","guild":"0","clear":"1"},{"id":"1858","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1858","town":"6","size":"8","price":"19000","rent":"0","doors":"1","beds":"2","tiles":"19","guild":"0","clear":"1"},{"id":"1859","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1859","town":"6","size":"6","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"1860","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1860","town":"6","size":"7","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"1861","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1861","town":"6","size":"44","price":"81000","rent":"0","doors":"3","beds":"4","tiles":"81","guild":"0","clear":"1"},{"id":"1862","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1862","town":"6","size":"64","price":"117000","rent":"0","doors":"4","beds":"4","tiles":"117","guild":"0","clear":"1"},{"id":"1863","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1863","town":"6","size":"51","price":"90000","rent":"0","doors":"2","beds":"4","tiles":"90","guild":"0","clear":"1"},{"id":"1864","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1864","town":"6","size":"51","price":"93000","rent":"0","doors":"1","beds":"4","tiles":"93","guild":"0","clear":"1"},{"id":"1865","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1865","town":"6","size":"51","price":"73000","rent":"0","doors":"2","beds":"4","tiles":"73","guild":"0","clear":"1"},{"id":"1866","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1866","town":"6","size":"51","price":"90000","rent":"0","doors":"2","beds":"4","tiles":"90","guild":"0","clear":"1"},{"id":"1867","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1867","town":"6","size":"52","price":"96000","rent":"0","doors":"1","beds":"6","tiles":"96","guild":"0","clear":"1"},{"id":"1868","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1868","town":"6","size":"101","price":"161000","rent":"0","doors":"6","beds":"4","tiles":"161","guild":"0","clear":"1"},{"id":"1869","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1869","town":"6","size":"50","price":"99000","rent":"0","doors":"4","beds":"6","tiles":"99","guild":"0","clear":"1"},{"id":"1870","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1870","town":"6","size":"66","price":"129000","rent":"0","doors":"5","beds":"8","tiles":"129","guild":"0","clear":"1"},{"id":"1871","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1871","town":"6","size":"134","price":"206000","rent":"0","doors":"5","beds":"6","tiles":"206","guild":"0","clear":"1"},{"id":"1872","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Venore House #1872","town":"6","size":"74","price":"121000","rent":"0","doors":"1","beds":"4","tiles":"121","guild":"0","clear":"1"},{"id":"1873","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Svargrond House 50","town":"13","size":"73","price":"96000","rent":"0","doors":"3","beds":"6","tiles":"96","guild":"0","clear":"1"},{"id":"1874","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula 10","town":"5","size":"80","price":"95000","rent":"0","doors":"2","beds":"4","tiles":"95","guild":"0","clear":"1"},{"id":"1879","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 88","town":"2","size":"26","price":"43000","rent":"0","doors":"1","beds":"4","tiles":"43","guild":"0","clear":"1"},{"id":"1880","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 89","town":"2","size":"23","price":"34000","rent":"0","doors":"1","beds":"2","tiles":"34","guild":"0","clear":"1"},{"id":"1882","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nautic Observer","town":"2","size":"144","price":"170000","rent":"0","doors":"4","beds":"8","tiles":"170","guild":"0","clear":"1"},{"id":"1883","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Aureate Court 1","town":"13","size":"116","price":"5240","rent":"5240","doors":"7","beds":"3","tiles":"276","guild":"0","clear":"0"},{"id":"1884","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Aureate Court 2","town":"13","size":"120","price":"4860","rent":"4860","doors":"2","beds":"2","tiles":"198","guild":"0","clear":"0"},{"id":"1885","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Aureate Court 3","town":"13","size":"115","price":"4300","rent":"4300","doors":"4","beds":"2","tiles":"226","guild":"0","clear":"0"},{"id":"1886","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Aureate Court 4","town":"13","size":"82","price":"3980","rent":"3980","doors":"5","beds":"4","tiles":"208","guild":"0","clear":"0"},{"id":"1887","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fortune Wing 1","town":"13","size":"237","price":"10180","rent":"10180","doors":"4","beds":"4","tiles":"420","guild":"0","clear":"0"},{"id":"1888","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fortune Wing 2","town":"13","size":"130","price":"5580","rent":"5580","doors":"5","beds":"2","tiles":"260","guild":"0","clear":"0"},{"id":"1889","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fortune Wing 3","town":"13","size":"135","price":"5740","rent":"5740","doors":"4","beds":"2","tiles":"258","guild":"0","clear":"0"},{"id":"1890","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fortune Wing 4","town":"13","size":"129","price":"5740","rent":"5740","doors":"4","beds":"4","tiles":"305","guild":"0","clear":"0"},{"id":"1891","world_id":"0","owner":"463","paid":"1347474027","warnings":"0","lastwarning":"0","name":"Luminous Arc 1","town":"13","size":"147","price":"6460","rent":"6460","doors":"8","beds":"2","tiles":"344","guild":"0","clear":"0"},{"id":"1892","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Luminous Arc 2","town":"13","size":"145","price":"6460","rent":"6460","doors":"3","beds":"4","tiles":"301","guild":"0","clear":"0"},{"id":"1893","world_id":"0","owner":"623","paid":"1347648198","warnings":"0","lastwarning":"0","name":"Luminous Arc 3","town":"13","size":"121","price":"5400","rent":"5400","doors":"6","beds":"3","tiles":"249","guild":"0","clear":"0"},{"id":"1894","world_id":"0","owner":"534","paid":"1347115549","warnings":"0","lastwarning":"0","name":"Luminous Arc 4","town":"13","size":"175","price":"8000","rent":"8000","doors":"7","beds":"5","tiles":"343","guild":"0","clear":"0"},{"id":"1895","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Radiant Plaza 1","town":"13","size":"123","price":"5620","rent":"5620","doors":"5","beds":"4","tiles":"276","guild":"0","clear":"0"},{"id":"1896","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Radiant Plaza 2","town":"13","size":"87","price":"3820","rent":"3820","doors":"2","beds":"2","tiles":"179","guild":"0","clear":"0"},{"id":"1897","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Radiant Plaza 3","town":"13","size":"114","price":"4900","rent":"4900","doors":"4","beds":"2","tiles":"256","guild":"0","clear":"0"},{"id":"1898","world_id":"0","owner":"758","paid":"1347302205","warnings":"0","lastwarning":"0","name":"Radiant Plaza 4","town":"13","size":"178","price":"7460","rent":"7460","doors":"4","beds":"3","tiles":"367","guild":"0","clear":"0"},{"id":"1899","world_id":"0","owner":"370","paid":"1346954621","warnings":"0","lastwarning":"0","name":"Sun Palace","town":"13","size":"460","price":"23120","rent":"23120","doors":"12","beds":"27","tiles":"974","guild":"0","clear":"0"},{"id":"1900","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Halls of Serenity","town":"13","size":"432","price":"23360","rent":"23360","doors":"21","beds":"33","tiles":"1090","guild":"0","clear":"0"},{"id":"1901","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cascade Towers","town":"13","size":"315","price":"19500","rent":"19500","doors":"24","beds":"33","tiles":"810","guild":"0","clear":"0"},{"id":"1902","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sorcerer's Avenue 5","town":"2","size":"42","price":"2695","rent":"2695","doors":"2","beds":"1","tiles":"96","guild":"0","clear":"0"},{"id":"1903","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sorcerer's Avenue 1a","town":"2","size":"16","price":"1255","rent":"1255","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"1904","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sorcerer's Avenue 1b","town":"2","size":"12","price":"1035","rent":"1035","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"1905","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sorcerer's Avenue 1c","town":"2","size":"16","price":"1255","rent":"1255","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"1906","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 06","town":"2","size":"14","price":"1145","rent":"1145","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"1907","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 01","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1908","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 02","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"1909","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 03","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1910","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 04","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"1911","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 05","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"1912","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 16","town":"2","size":"14","price":"1145","rent":"1145","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"1913","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 11","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1914","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 12","town":"2","size":"13","price":"880","rent":"880","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1915","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 13","town":"2","size":"13","price":"880","rent":"880","doors":"1","beds":"1","tiles":"29","guild":"0","clear":"0"},{"id":"1916","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 14","town":"2","size":"4","price":"385","rent":"385","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"1917","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Beach Home Apartments, Flat 15","town":"2","size":"4","price":"385","rent":"385","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"1918","world_id":"0","owner":"56","paid":"1347600172","warnings":"0","lastwarning":"0","name":"Thais Clanhall","town":"2","size":"154","price":"8420","rent":"8420","doors":"12","beds":"10","tiles":"370","guild":"0","clear":"0"},{"id":"1919","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Street 4","town":"2","size":"14","price":"935","rent":"935","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1920","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Thais Hostel","town":"2","size":"63","price":"6980","rent":"6980","doors":"3","beds":"24","tiles":"171","guild":"0","clear":"0"},{"id":"1921","world_id":"0","owner":"526","paid":"1347101884","warnings":"0","lastwarning":"0","name":"Lower Swamp Lane 1","town":"2","size":"62","price":"4740","rent":"4740","doors":"7","beds":"4","tiles":"166","guild":"0","clear":"0"},{"id":"1922","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ankrahmun Flat #1922","town":"8","size":"10","price":"13000","rent":"0","doors":"0","beds":"2","tiles":"13","guild":"0","clear":"1"},{"id":"1923","world_id":"0","owner":"536","paid":"1347150237","warnings":"0","lastwarning":"0","name":"Lower Swamp Lane 3","town":"2","size":"62","price":"4740","rent":"4740","doors":"7","beds":"4","tiles":"161","guild":"0","clear":"0"},{"id":"1924","world_id":"0","owner":"867","paid":"1347672738","warnings":"0","lastwarning":"0","name":"Sunset Homes, Flat 01","town":"2","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"1925","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sunset Homes, Flat 02","town":"2","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1926","world_id":"0","owner":"876","paid":"0","warnings":"0","lastwarning":"1347801475","name":"Sunset Homes, Flat 03","town":"2","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1927","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sunset Homes, Flat 14","town":"2","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1928","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 4","town":"2","size":"88","price":"125000","rent":"0","doors":"2","beds":"4","tiles":"125","guild":"0","clear":"1"},{"id":"1929","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sunset Homes, Flat 13","town":"2","size":"15","price":"860","rent":"860","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"1930","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sunset Homes, Flat 12","town":"2","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"1931","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 7","town":"2","size":"3","price":"5000","rent":"0","doors":"1","beds":"2","tiles":"5","guild":"0","clear":"1"},{"id":"1932","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sunset Homes, Flat 11","town":"2","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"1933","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 9","town":"2","size":"11","price":"16000","rent":"0","doors":"1","beds":"4","tiles":"16","guild":"0","clear":"1"},{"id":"1934","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin 10","town":"2","size":"2","price":"5000","rent":"0","doors":"1","beds":"2","tiles":"5","guild":"0","clear":"1"},{"id":"1935","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sunset Homes, Flat 24","town":"2","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1936","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sunset Homes, Flat 23","town":"2","size":"14","price":"860","rent":"860","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"1937","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sunset Homes, Flat 22","town":"2","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"1938","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sunset Homes, Flat 21","town":"2","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"1939","world_id":"0","owner":"884","paid":"1347735639","warnings":"0","lastwarning":"0","name":"Harbour Place 1 (Shop)","town":"2","size":"16","price":"1100","rent":"1100","doors":"2","beds":"0","tiles":"48","guild":"0","clear":"0"},{"id":"1940","world_id":"0","owner":"214","paid":"0","warnings":"0","lastwarning":"1346781735","name":"Harbour Place 2 (Shop)","town":"2","size":"19","price":"1300","rent":"1300","doors":"2","beds":"1","tiles":"48","guild":"0","clear":"0"},{"id":"1941","world_id":"0","owner":"53","paid":"0","warnings":"0","lastwarning":"1346729786","name":"Warriors Guildhall","town":"2","size":"255","price":"14725","rent":"14725","doors":"17","beds":"11","tiles":"522","guild":"0","clear":"0"},{"id":"1942","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Farm Lane, 1st floor (Shop)","town":"2","size":"15","price":"42000","rent":"945","doors":"3","beds":"0","tiles":"42","guild":"0","clear":"1"},{"id":"1943","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Farm Lane, Basement (Shop)","town":"2","size":"15","price":"945","rent":"945","doors":"1","beds":"0","tiles":"36","guild":"0","clear":"0"},{"id":"1944","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Main Street 9, 1st floor (Shop)","town":"2","size":"24","price":"47000","rent":"1440","doors":"3","beds":"0","tiles":"47","guild":"0","clear":"1"},{"id":"1945","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Main Street 9a, 2nd floor (Shop)","town":"2","size":"12","price":"765","rent":"765","doors":"1","beds":"0","tiles":"30","guild":"0","clear":"0"},{"id":"1946","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Main Street 9b, 2nd floor (Shop)","town":"2","size":"23","price":"1260","rent":"1260","doors":"2","beds":"0","tiles":"48","guild":"0","clear":"0"},{"id":"1947","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Farm Lane, 2nd Floor (Shop)","town":"2","size":"15","price":"945","rent":"945","doors":"1","beds":"0","tiles":"42","guild":"0","clear":"0"},{"id":"1948","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 5a","town":"2","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"1949","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 5c","town":"2","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"1950","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 5e","town":"2","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1951","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 5b","town":"2","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"1952","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 5d","town":"2","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"1953","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 5f","town":"2","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1954","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 3a","town":"2","size":"16","price":"1045","rent":"1045","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"1955","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 3b","town":"2","size":"16","price":"1045","rent":"1045","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"1956","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 3c","town":"2","size":"16","price":"1045","rent":"1045","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"1957","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 3d","town":"2","size":"16","price":"1045","rent":"1045","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"1958","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 3e","town":"2","size":"16","price":"1045","rent":"1045","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"1959","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 3f","town":"2","size":"16","price":"1045","rent":"1045","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"1960","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 1a","town":"2","size":"21","price":"1270","rent":"1270","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"1961","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mill Avenue 3","town":"2","size":"21","price":"1400","rent":"1400","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"1962","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 1b","town":"2","size":"21","price":"1270","rent":"1270","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"1963","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mill Avenue 4","town":"2","size":"21","price":"1400","rent":"1400","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"1964","world_id":"0","owner":"679","paid":"1347218713","warnings":"0","lastwarning":"0","name":"Mill Avenue 5","town":"2","size":"49","price":"3250","rent":"3250","doors":"4","beds":"4","tiles":"128","guild":"0","clear":"0"},{"id":"1965","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mill Avenue 1 (Shop)","town":"2","size":"17","price":"1300","rent":"1300","doors":"2","beds":"1","tiles":"54","guild":"0","clear":"0"},{"id":"1966","world_id":"0","owner":"281","paid":"0","warnings":"0","lastwarning":"1347830352","name":"Mill Avenue 2 (Shop)","town":"2","size":"38","price":"2350","rent":"2350","doors":"3","beds":"2","tiles":"80","guild":"0","clear":"0"},{"id":"1967","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 7c","town":"2","size":"12","price":"865","rent":"865","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"1968","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 7a","town":"2","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1969","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 7e","town":"2","size":"12","price":"865","rent":"865","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"1970","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 7g","town":"2","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1971","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 7d","town":"2","size":"12","price":"865","rent":"865","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"1972","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 7b","town":"2","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1973","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 7f","town":"2","size":"12","price":"865","rent":"865","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"1974","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 7h","town":"2","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1975","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The City Wall 9","town":"2","size":"14","price":"955","rent":"955","doors":"1","beds":"2","tiles":"50","guild":"0","clear":"0"},{"id":"1976","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Swamp Lane 12","town":"2","size":"46","price":"3800","rent":"3800","doors":"5","beds":"3","tiles":"116","guild":"0","clear":"0"},{"id":"1977","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Upper Swamp Lane 10","town":"2","size":"25","price":"2060","rent":"2060","doors":"1","beds":"3","tiles":"70","guild":"0","clear":"0"},{"id":"1978","world_id":"0","owner":"860","paid":"1347590056","warnings":"0","lastwarning":"0","name":"Upper Swamp Lane 8","town":"2","size":"124","price":"8120","rent":"8120","doors":"4","beds":"3","tiles":"216","guild":"0","clear":"0"},{"id":"1979","world_id":"0","owner":"49","paid":"1346872017","warnings":"0","lastwarning":"0","name":"Southern Thais Guildhall","town":"2","size":"284","price":"22440","rent":"22440","doors":"20","beds":"16","tiles":"596","guild":"0","clear":"0"},{"id":"1980","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 04","town":"2","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1981","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 05","town":"2","size":"20","price":"1225","rent":"1225","doors":"1","beds":"2","tiles":"38","guild":"0","clear":"0"},{"id":"1982","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 06","town":"2","size":"20","price":"1225","rent":"1225","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"1983","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 07","town":"2","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1984","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 08","town":"2","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"1985","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 03","town":"2","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"35","guild":"0","clear":"0"},{"id":"1986","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 01","town":"2","size":"15","price":"765","rent":"765","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"1987","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 02","town":"2","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"1988","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 14","town":"2","size":"16","price":"900","rent":"900","doors":"2","beds":"1","tiles":"33","guild":"0","clear":"0"},{"id":"1989","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 15","town":"2","size":"24","price":"1450","rent":"1450","doors":"2","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"1990","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 16","town":"2","size":"24","price":"1450","rent":"1450","doors":"2","beds":"2","tiles":"54","guild":"0","clear":"0"},{"id":"1991","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 17","town":"2","size":"18","price":"900","rent":"900","doors":"2","beds":"1","tiles":"38","guild":"0","clear":"0"},{"id":"1992","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 18","town":"2","size":"16","price":"900","rent":"900","doors":"2","beds":"1","tiles":"38","guild":"0","clear":"0"},{"id":"1993","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 13","town":"2","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"1994","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 12","town":"2","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"1995","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 11","town":"2","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"35","guild":"0","clear":"0"},{"id":"1996","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 24","town":"2","size":"16","price":"900","rent":"900","doors":"2","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"1997","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 25","town":"2","size":"24","price":"1450","rent":"1450","doors":"2","beds":"2","tiles":"52","guild":"0","clear":"0"},{"id":"1998","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 26","town":"2","size":"24","price":"1450","rent":"1450","doors":"2","beds":"2","tiles":"60","guild":"0","clear":"0"},{"id":"1999","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 27","town":"2","size":"16","price":"900","rent":"900","doors":"2","beds":"1","tiles":"38","guild":"0","clear":"0"},{"id":"2000","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 28","town":"2","size":"16","price":"900","rent":"900","doors":"2","beds":"1","tiles":"38","guild":"0","clear":"0"},{"id":"2001","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 23","town":"2","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"35","guild":"0","clear":"0"},{"id":"2002","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 22","town":"2","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2003","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Alai Flats, Flat 21","town":"2","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"2004","world_id":"0","owner":"73","paid":"1346973342","warnings":"0","lastwarning":"0","name":"Upper Swamp Lane 4","town":"2","size":"59","price":"4740","rent":"4740","doors":"7","beds":"4","tiles":"165","guild":"0","clear":"0"},{"id":"2005","world_id":"0","owner":"278","paid":"1346810985","warnings":"0","lastwarning":"0","name":"Upper Swamp Lane 2","town":"2","size":"60","price":"4740","rent":"4740","doors":"7","beds":"4","tiles":"159","guild":"0","clear":"0"},{"id":"2006","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sorcerer's Avenue Labs 2c","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2007","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sorcerer's Avenue Labs 2d","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2008","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sorcerer's Avenue Labs 2e","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2009","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sorcerer's Avenue Labs 2f","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2010","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sorcerer's Avenue Labs 2b","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2011","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sorcerer's Avenue Labs 2a","town":"2","size":"10","price":"715","rent":"715","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2012","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ivory Circle 1","town":"7","size":"71","price":"4280","rent":"4280","doors":"5","beds":"2","tiles":"160","guild":"0","clear":"0"},{"id":"2013","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Admiral's Avenue 3","town":"7","size":"68","price":"4115","rent":"4115","doors":"3","beds":"2","tiles":"142","guild":"0","clear":"0"},{"id":"2014","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Admiral's Avenue 2","town":"7","size":"85","price":"5470","rent":"5470","doors":"5","beds":"4","tiles":"176","guild":"0","clear":"0"},{"id":"2015","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Admiral's Avenue 1","town":"7","size":"83","price":"5105","rent":"5105","doors":"5","beds":"2","tiles":"168","guild":"0","clear":"0"},{"id":"2016","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sugar Street 5","town":"7","size":"20","price":"1350","rent":"1350","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"2017","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Freedom Street 1","town":"7","size":"41","price":"2450","rent":"2450","doors":"2","beds":"2","tiles":"84","guild":"0","clear":"0"},{"id":"2018","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Freedom Street 2","town":"7","size":"103","price":"6050","rent":"6050","doors":"5","beds":"4","tiles":"208","guild":"0","clear":"0"},{"id":"2019","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Trader's Point 2 (Shop)","town":"7","size":"93","price":"5350","rent":"5350","doors":"6","beds":"2","tiles":"198","guild":"0","clear":"0"},{"id":"2020","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Trader's Point 3 (Shop)","town":"7","size":"106","price":"5950","rent":"5950","doors":"5","beds":"2","tiles":"195","guild":"0","clear":"0"},{"id":"2021","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ivory Circle 2","town":"7","size":"120","price":"7030","rent":"7030","doors":"3","beds":"2","tiles":"214","guild":"0","clear":"0"},{"id":"2022","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Tavern 1a","town":"7","size":"40","price":"2750","rent":"2750","doors":"1","beds":"4","tiles":"72","guild":"0","clear":"0"},{"id":"2023","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Tavern 1b","town":"7","size":"31","price":"1900","rent":"1900","doors":"1","beds":"2","tiles":"54","guild":"0","clear":"0"},{"id":"2024","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Tavern 1c","town":"7","size":"73","price":"4150","rent":"4150","doors":"3","beds":"3","tiles":"132","guild":"0","clear":"0"},{"id":"2025","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Tavern 1d","town":"7","size":"24","price":"1550","rent":"1550","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"2026","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Tavern 2d","town":"7","size":"20","price":"1350","rent":"1350","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"2027","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Tavern 2c","town":"7","size":"16","price":"950","rent":"950","doors":"1","beds":"1","tiles":"32","guild":"0","clear":"0"},{"id":"2028","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Tavern 2b","town":"7","size":"27","price":"1700","rent":"1700","doors":"2","beds":"2","tiles":"62","guild":"0","clear":"0"},{"id":"2029","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Tavern 2a","town":"7","size":"92","price":"5550","rent":"5550","doors":"3","beds":"5","tiles":"163","guild":"0","clear":"0"},{"id":"2030","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Straycat's Corner 4","town":"7","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2031","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Straycat's Corner 3","town":"7","size":"4","price":"210","rent":"210","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2032","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Straycat's Corner 2","town":"7","size":"18","price":"660","rent":"660","doors":"2","beds":"1","tiles":"49","guild":"0","clear":"0"},{"id":"2033","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Litter Promenade 5","town":"7","size":"11","price":"580","rent":"580","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"2034","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Litter Promenade 4","town":"7","size":"10","price":"390","rent":"390","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2035","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Litter Promenade 3","town":"7","size":"12","price":"450","rent":"450","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"2036","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Litter Promenade 2","town":"7","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2037","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Litter Promenade 1","town":"7","size":"6","price":"400","rent":"400","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"0"},{"id":"2038","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Shelter","town":"7","size":"282","price":"13590","rent":"13590","doors":"12","beds":"31","tiles":"560","guild":"0","clear":"0"},{"id":"2039","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Straycat's Corner 6","town":"7","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2040","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Straycat's Corner 5","town":"7","size":"16","price":"760","rent":"760","doors":"2","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"2042","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rum Alley 3","town":"7","size":"9","price":"330","rent":"330","doors":"1","beds":"1","tiles":"28","guild":"0","clear":"0"},{"id":"2043","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Straycat's Corner 1","town":"7","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2044","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rum Alley 2","town":"7","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2045","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rum Alley 1","town":"7","size":"14","price":"510","rent":"510","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"2046","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Smuggler Backyard 3","town":"7","size":"15","price":"700","rent":"700","doors":"2","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"2048","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shady Trail 3","town":"7","size":"7","price":"300","rent":"300","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2049","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shady Trail 1","town":"7","size":"14","price":"1150","rent":"1150","doors":"1","beds":"5","tiles":"48","guild":"0","clear":"0"},{"id":"2050","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shady Trail 2","town":"7","size":"8","price":"490","rent":"490","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2051","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Smuggler Backyard 5","town":"7","size":"11","price":"610","rent":"610","doors":"2","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"2052","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Smuggler Backyard 4","town":"7","size":"10","price":"390","rent":"390","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2053","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Smuggler Backyard 2","town":"7","size":"15","price":"670","rent":"670","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"2054","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Smuggler Backyard 1","town":"7","size":"14","price":"670","rent":"670","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"2055","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sugar Street 2","town":"7","size":"39","price":"2550","rent":"2550","doors":"2","beds":"3","tiles":"84","guild":"0","clear":"0"},{"id":"2056","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sugar Street 1","town":"7","size":"50","price":"3000","rent":"3000","doors":"2","beds":"3","tiles":"84","guild":"0","clear":"0"},{"id":"2057","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sugar Street 3a","town":"7","size":"22","price":"1650","rent":"1650","doors":"1","beds":"3","tiles":"54","guild":"0","clear":"0"},{"id":"2058","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sugar Street 3b","town":"7","size":"30","price":"2050","rent":"2050","doors":"1","beds":"3","tiles":"60","guild":"0","clear":"0"},{"id":"2059","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 01","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"2060","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 03","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2061","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 05","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2062","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 02","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"2063","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 04","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2064","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 06","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2065","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 07","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2066","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 09","town":"7","size":"13","price":"950","rent":"950","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2067","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 11","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"2068","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 12","town":"7","size":"13","price":"950","rent":"950","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"2069","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 10","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2070","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harvester's Haven, Flat 08","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2071","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Marble Lane 4","town":"7","size":"102","price":"6350","rent":"6350","doors":"3","beds":"4","tiles":"192","guild":"0","clear":"0"},{"id":"2072","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Marble Lane 2","town":"7","size":"106","price":"6415","rent":"6415","doors":"3","beds":"3","tiles":"200","guild":"0","clear":"0"},{"id":"2073","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Marble Lane 3","town":"7","size":"133","price":"8055","rent":"8055","doors":"4","beds":"4","tiles":"240","guild":"0","clear":"0"},{"id":"2074","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Marble Lane 1","town":"7","size":"178","price":"11060","rent":"11060","doors":"7","beds":"6","tiles":"320","guild":"0","clear":"0"},{"id":"2075","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ivy Cottage","town":"7","size":"469","price":"30650","rent":"30650","doors":"10","beds":"26","tiles":"858","guild":"0","clear":"0"},{"id":"2076","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sugar Street 4d","town":"7","size":"8","price":"750","rent":"750","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"0"},{"id":"2077","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sugar Street 4c","town":"7","size":"10","price":"650","rent":"650","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2078","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sugar Street 4b","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"2079","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sugar Street 4a","town":"7","size":"12","price":"950","rent":"950","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2080","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Trader's Point 1","town":"7","size":"38","price":"2200","rent":"2200","doors":"2","beds":"2","tiles":"77","guild":"0","clear":"0"},{"id":"2081","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mountain Hideout","town":"7","size":"234","price":"15550","rent":"15550","doors":"10","beds":"17","tiles":"486","guild":"0","clear":"0"},{"id":"2082","world_id":"0","owner":"298","paid":"1346860137","warnings":"0","lastwarning":"0","name":"Dark Mansion","town":"2","size":"294","price":"17845","rent":"17845","doors":"13","beds":"17","tiles":"573","guild":"0","clear":"0"},{"id":"2083","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Halls of the Adventurers","town":"2","size":"243","price":"15380","rent":"15380","doors":"14","beds":"18","tiles":"518","guild":"0","clear":"0"},{"id":"2084","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle of Greenshore","town":"2","size":"254","price":"18860","rent":"18860","doors":"14","beds":"12","tiles":"600","guild":"0","clear":"0"},{"id":"2085","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore Clanhall","town":"2","size":"133","price":"10800","rent":"10800","doors":"11","beds":"10","tiles":"312","guild":"0","clear":"0"},{"id":"2086","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore Village 1","town":"2","size":"30","price":"2420","rent":"2420","doors":"1","beds":"3","tiles":"64","guild":"0","clear":"0"},{"id":"2087","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore Village, Shop","town":"2","size":"20","price":"1800","rent":"1800","doors":"5","beds":"1","tiles":"56","guild":"0","clear":"0"},{"id":"2088","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore Village, Villa","town":"2","size":"117","price":"8700","rent":"8700","doors":"8","beds":"4","tiles":"263","guild":"0","clear":"0"},{"id":"2089","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore Village 2","town":"2","size":"10","price":"780","rent":"780","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2090","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore Village 3","town":"2","size":"10","price":"780","rent":"780","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2091","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore Village 5","town":"2","size":"10","price":"780","rent":"780","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2092","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore Village 4","town":"2","size":"10","price":"780","rent":"780","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2093","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore Village 6","town":"2","size":"61","price":"4360","rent":"4360","doors":"3","beds":"2","tiles":"118","guild":"0","clear":"0"},{"id":"2094","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Greenshore Village 7","town":"2","size":"18","price":"1260","rent":"1260","doors":"1","beds":"1","tiles":"42","guild":"0","clear":"0"},{"id":"2095","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Tibianic","town":"2","size":"445","price":"34500","rent":"34500","doors":"10","beds":"22","tiles":"871","guild":"0","clear":"0"},{"id":"2096","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Liberty Bay Flat #2096","town":"12","size":"68","price":"112000","rent":"0","doors":"3","beds":"4","tiles":"112","guild":"0","clear":"1"},{"id":"2097","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula Village 5","town":"2","size":"21","price":"1790","rent":"1790","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"2098","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula Village 4","town":"2","size":"21","price":"1790","rent":"1790","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"2099","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula Village, Tower Flat","town":"2","size":"72","price":"5105","rent":"5105","doors":"1","beds":"2","tiles":"161","guild":"0","clear":"0"},{"id":"2100","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula Village 1","town":"2","size":"10","price":"845","rent":"845","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2101","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula Village 2","town":"2","size":"10","price":"845","rent":"845","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2102","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula Village 3","town":"2","size":"45","price":"3810","rent":"3810","doors":"1","beds":"4","tiles":"110","guild":"0","clear":"0"},{"id":"2103","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Mercenary Tower","town":"2","size":"525","price":"41955","rent":"41955","doors":"18","beds":"26","tiles":"996","guild":"0","clear":"0"},{"id":"2104","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Guildhall of the Red Rose","town":"2","size":"340","price":"27725","rent":"27725","doors":"7","beds":"15","tiles":"572","guild":"0","clear":"0"},{"id":"2105","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula Village, Bar","town":"2","size":"59","price":"5235","rent":"5235","doors":"3","beds":"2","tiles":"122","guild":"0","clear":"0"},{"id":"2106","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula Village, Villa","town":"2","size":"181","price":"11490","rent":"11490","doors":"13","beds":"5","tiles":"402","guild":"0","clear":"0"},{"id":"2107","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Fibula Clanhall","town":"2","size":"128","price":"11430","rent":"11430","doors":"12","beds":"10","tiles":"290","guild":"0","clear":"0"},{"id":"2108","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Spiritkeep","town":"2","size":"316","price":"19210","rent":"19210","doors":"18","beds":"23","tiles":"783","guild":"0","clear":"0"},{"id":"2109","world_id":"0","owner":"692","paid":"1347193716","warnings":"0","lastwarning":"0","name":"Snake Tower","town":"2","size":"532","price":"29720","rent":"29720","doors":"28","beds":"21","tiles":"1064","guild":"0","clear":"0"},{"id":"2110","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Bloodhall","town":"2","size":"245","price":"15270","rent":"15270","doors":"15","beds":"15","tiles":"569","guild":"0","clear":"0"},{"id":"2111","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Clanhall","town":"4","size":"172","price":"396000","rent":"10575","doors":"15","beds":"18","tiles":"396","guild":"0","clear":"1"},{"id":"2112","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 2","town":"4","size":"14","price":"36000","rent":"765","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"1"},{"id":"2113","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 1a","town":"4","size":"14","price":"36000","rent":"765","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"1"},{"id":"2114","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 1b","town":"4","size":"28","price":"66000","rent":"1630","doors":"2","beds":"4","tiles":"66","guild":"0","clear":"1"},{"id":"2115","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 4","town":"4","size":"14","price":"30000","rent":"765","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"1"},{"id":"2116","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 3","town":"4","size":"28","price":"72000","rent":"1765","doors":"2","beds":"4","tiles":"72","guild":"0","clear":"1"},{"id":"2117","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 6b","town":"4","size":"14","price":"30000","rent":"765","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"1"},{"id":"2118","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 6a","town":"4","size":"14","price":"30000","rent":"765","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"1"},{"id":"2119","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 5","town":"4","size":"20","price":"48000","rent":"1225","doors":"1","beds":"4","tiles":"48","guild":"0","clear":"1"},{"id":"2120","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 10","town":"4","size":"30","price":"72000","rent":"1485","doors":"1","beds":"2","tiles":"72","guild":"0","clear":"1"},{"id":"2121","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 11","town":"4","size":"50","price":"96000","rent":"2620","doors":"2","beds":"4","tiles":"96","guild":"0","clear":"1"},{"id":"2122","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 9","town":"4","size":"48","price":"103000","rent":"2575","doors":"3","beds":"4","tiles":"103","guild":"0","clear":"1"},{"id":"2123","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 8","town":"4","size":"30","price":"57000","rent":"1675","doors":"1","beds":"4","tiles":"57","guild":"0","clear":"1"},{"id":"2124","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Senja Village 7","town":"4","size":"12","price":"37000","rent":"865","doors":"1","beds":"4","tiles":"37","guild":"0","clear":"1"},{"id":"2125","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rosebud C","town":"4","size":"30","price":"1340","rent":"1340","doors":"1","beds":"0","tiles":"70","guild":"0","clear":"0"},{"id":"2126","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Boat House 1","town":"0","size":"44","price":"63000","rent":"0","doors":"1","beds":"4","tiles":"63","guild":"0","clear":"1"},{"id":"2127","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rosebud A","town":"4","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"60","guild":"0","clear":"0"},{"id":"2128","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Rosebud B","town":"4","size":"22","price":"1000","rent":"1000","doors":"1","beds":"1","tiles":"60","guild":"0","clear":"0"},{"id":"2129","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nordic Stronghold","town":"4","size":"330","price":"18400","rent":"18400","doors":"19","beds":"21","tiles":"751","guild":"0","clear":"0"},{"id":"2130","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northport Village 2","town":"4","size":"20","price":"1475","rent":"1475","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"2131","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northport Village 1","town":"4","size":"20","price":"1475","rent":"1475","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"2132","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northport Village 3","town":"4","size":"96","price":"5435","rent":"5435","doors":"2","beds":"2","tiles":"178","guild":"0","clear":"0"},{"id":"2133","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northport Village 4","town":"4","size":"42","price":"2630","rent":"2630","doors":"1","beds":"2","tiles":"81","guild":"0","clear":"0"},{"id":"2134","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northport Village 5","town":"4","size":"26","price":"1805","rent":"1805","doors":"1","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2135","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northport Village 6","town":"4","size":"32","price":"2135","rent":"2135","doors":"1","beds":"2","tiles":"64","guild":"0","clear":"0"},{"id":"2136","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Seawatch","town":"4","size":"364","price":"25010","rent":"25010","doors":"15","beds":"19","tiles":"749","guild":"0","clear":"0"},{"id":"2137","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northport Clanhall","town":"4","size":"130","price":"9810","rent":"9810","doors":"10","beds":"10","tiles":"292","guild":"0","clear":"0"},{"id":"2138","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Druids Retreat D","town":"4","size":"22","price":"1180","rent":"1180","doors":"1","beds":"2","tiles":"54","guild":"0","clear":"0"},{"id":"2139","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Druids Retreat A","town":"4","size":"26","price":"1340","rent":"1340","doors":"1","beds":"2","tiles":"60","guild":"0","clear":"0"},{"id":"2140","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Druids Retreat C","town":"4","size":"17","price":"980","rent":"980","doors":"1","beds":"2","tiles":"45","guild":"0","clear":"0"},{"id":"2141","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Druids Retreat B","town":"4","size":"24","price":"980","rent":"980","doors":"1","beds":"2","tiles":"55","guild":"0","clear":"0"},{"id":"2142","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 14 (Shop)","town":"4","size":"36","price":"2115","rent":"2115","doors":"2","beds":"1","tiles":"83","guild":"0","clear":"0"},{"id":"2143","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 12","town":"4","size":"14","price":"955","rent":"955","doors":"1","beds":"2","tiles":"28","guild":"0","clear":"0"},{"id":"2144","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 10","town":"4","size":"17","price":"1090","rent":"1090","doors":"1","beds":"2","tiles":"45","guild":"0","clear":"0"},{"id":"2145","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 11c","town":"4","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2146","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 11b","town":"4","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2147","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 11a","town":"4","size":"24","price":"1405","rent":"1405","doors":"1","beds":"2","tiles":"54","guild":"0","clear":"0"},{"id":"2148","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 1","town":"4","size":"14","price":"1050","rent":"1050","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"2149","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 1a","town":"4","size":"7","price":"700","rent":"700","doors":"1","beds":"2","tiles":"29","guild":"0","clear":"0"},{"id":"2150","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 1d","town":"4","size":"6","price":"450","rent":"450","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2151","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 1b","town":"4","size":"8","price":"750","rent":"750","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"0"},{"id":"2152","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 1c","town":"4","size":"7","price":"500","rent":"500","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2153","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 5a","town":"4","size":"4","price":"350","rent":"350","doors":"1","beds":"1","tiles":"14","guild":"0","clear":"0"},{"id":"2154","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 5b","town":"4","size":"7","price":"500","rent":"500","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2155","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 5d","town":"4","size":"7","price":"500","rent":"500","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2156","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 5e","town":"4","size":"7","price":"500","rent":"500","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2157","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 5c","town":"4","size":"16","price":"1150","rent":"1150","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"2158","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 5f","town":"4","size":"16","price":"1150","rent":"1150","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"2159","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Carlin Clanhall","town":"4","size":"167","price":"10750","rent":"10750","doors":"1","beds":"10","tiles":"364","guild":"0","clear":"0"},{"id":"2160","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 4","town":"4","size":"40","price":"2750","rent":"2750","doors":"1","beds":"4","tiles":"96","guild":"0","clear":"0"},{"id":"2161","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Lonely Sea Side Hostel","town":"4","size":"218","price":"10540","rent":"10540","doors":"4","beds":"8","tiles":"454","guild":"0","clear":"0"},{"id":"2162","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Suntower","town":"4","size":"204","price":"10080","rent":"10080","doors":"14","beds":"7","tiles":"450","guild":"0","clear":"0"},{"id":"2163","world_id":"0","owner":"595","paid":"1347129695","warnings":"0","lastwarning":"0","name":"Harbour Lane 3","town":"4","size":"77","price":"3560","rent":"3560","doors":"1","beds":"3","tiles":"145","guild":"0","clear":"0"},{"id":"2164","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Flats, Flat 11","town":"4","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2165","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Flats, Flat 13","town":"4","size":"10","price":"520","rent":"520","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2166","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Flats, Flat 15","town":"4","size":"6","price":"360","rent":"360","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"2167","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Flats, Flat 17","town":"4","size":"6","price":"360","rent":"360","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2168","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Flats, Flat 12","town":"4","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2169","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Flats, Flat 14","town":"4","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2170","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Flats, Flat 16","town":"4","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2171","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Flats, Flat 18","town":"4","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2172","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Flats, Flat 21","town":"4","size":"14","price":"860","rent":"860","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"2173","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Flats, Flat 22","town":"4","size":"17","price":"980","rent":"980","doors":"1","beds":"2","tiles":"45","guild":"0","clear":"0"},{"id":"2174","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Flats, Flat 23","town":"4","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2175","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Lane 2a (Shop)","town":"4","size":"12","price":"680","rent":"680","doors":"1","beds":"0","tiles":"32","guild":"0","clear":"0"},{"id":"2176","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Lane 2b (Shop)","town":"4","size":"12","price":"680","rent":"680","doors":"1","beds":"0","tiles":"40","guild":"0","clear":"0"},{"id":"2177","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Harbour Lane 1 (Shop)","town":"4","size":"19","price":"1040","rent":"1040","doors":"1","beds":"0","tiles":"54","guild":"0","clear":"0"},{"id":"2178","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 6e","town":"4","size":"11","price":"820","rent":"820","doors":"1","beds":"2","tiles":"31","guild":"0","clear":"0"},{"id":"2179","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 6c","town":"4","size":"2","price":"225","rent":"225","doors":"1","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"2180","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 6a","town":"4","size":"11","price":"820","rent":"820","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"2181","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 6f","town":"4","size":"11","price":"820","rent":"820","doors":"1","beds":"2","tiles":"31","guild":"0","clear":"0"},{"id":"2182","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 6d","town":"4","size":"2","price":"225","rent":"225","doors":"1","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"2183","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 6b","town":"4","size":"11","price":"820","rent":"820","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"2184","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"East Lane 1a","town":"4","size":"48","price":"2260","rent":"2260","doors":"1","beds":"2","tiles":"95","guild":"0","clear":"0"},{"id":"2185","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"East Lane 1b","town":"4","size":"34","price":"1700","rent":"1700","doors":"0","beds":"2","tiles":"83","guild":"0","clear":"0"},{"id":"2186","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"East Lane 2","town":"4","size":"87","price":"3900","rent":"3900","doors":"1","beds":"2","tiles":"172","guild":"0","clear":"0"},{"id":"2191","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northern Street 5","town":"4","size":"41","price":"1980","rent":"1980","doors":"1","beds":"2","tiles":"94","guild":"0","clear":"0"},{"id":"2192","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northern Street 7","town":"4","size":"34","price":"1700","rent":"1700","doors":"1","beds":"2","tiles":"83","guild":"0","clear":"0"},{"id":"2193","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northern Street 3a","town":"4","size":"11","price":"740","rent":"740","doors":"1","beds":"2","tiles":"31","guild":"0","clear":"0"},{"id":"2194","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northern Street 3b","town":"4","size":"12","price":"780","rent":"780","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"2195","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northern Street 1c","town":"4","size":"11","price":"740","rent":"740","doors":"1","beds":"2","tiles":"31","guild":"0","clear":"0"},{"id":"2196","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northern Street 1b","town":"4","size":"16","price":"740","rent":"740","doors":"1","beds":"2","tiles":"37","guild":"0","clear":"0"},{"id":"2197","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Northern Street 1a","town":"4","size":"16","price":"940","rent":"940","doors":"1","beds":"2","tiles":"41","guild":"0","clear":"0"},{"id":"2198","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 06","town":"4","size":"4","price":"315","rent":"315","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2199","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 01","town":"4","size":"4","price":"315","rent":"315","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"2200","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 05","town":"4","size":"6","price":"405","rent":"405","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2201","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 02","town":"4","size":"6","price":"405","rent":"405","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2202","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 04","town":"4","size":"8","price":"495","rent":"495","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2203","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 03","town":"4","size":"6","price":"405","rent":"405","doors":"1","beds":"1","tiles":"19","guild":"0","clear":"0"},{"id":"2204","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 14","town":"4","size":"8","price":"495","rent":"495","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2205","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 13","town":"4","size":"6","price":"405","rent":"405","doors":"1","beds":"1","tiles":"17","guild":"0","clear":"0"},{"id":"2206","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 15","town":"4","size":"6","price":"405","rent":"405","doors":"1","beds":"1","tiles":"19","guild":"0","clear":"0"},{"id":"2207","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 16","town":"4","size":"6","price":"405","rent":"405","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2208","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 11","town":"4","size":"8","price":"495","rent":"495","doors":"1","beds":"1","tiles":"23","guild":"0","clear":"0"},{"id":"2209","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 7, Flat 12","town":"4","size":"6","price":"405","rent":"405","doors":"1","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"2210","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 8a","town":"4","size":"21","price":"1270","rent":"1270","doors":"1","beds":"2","tiles":"50","guild":"0","clear":"0"},{"id":"2211","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 8b","town":"4","size":"19","price":"1370","rent":"1370","doors":"1","beds":"3","tiles":"49","guild":"0","clear":"0"},{"id":"2212","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Central Plaza 3","town":"4","size":"8","price":"600","rent":"600","doors":"0","beds":"0","tiles":"20","guild":"0","clear":"0"},{"id":"2213","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Central Plaza 2","town":"4","size":"8","price":"600","rent":"600","doors":"0","beds":"0","tiles":"20","guild":"0","clear":"0"},{"id":"2214","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Central Plaza 1","town":"4","size":"8","price":"600","rent":"600","doors":"0","beds":"0","tiles":"20","guild":"0","clear":"0"},{"id":"2215","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Park Lane 1a","town":"4","size":"21","price":"1220","rent":"1220","doors":"0","beds":"2","tiles":"53","guild":"0","clear":"0"},{"id":"2216","world_id":"0","owner":"624","paid":"1347129844","warnings":"0","lastwarning":"0","name":"Park Lane 3a","town":"4","size":"21","price":"1220","rent":"1220","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"2217","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Park Lane 1b","town":"4","size":"27","price":"1380","rent":"1380","doors":"2","beds":"2","tiles":"64","guild":"0","clear":"0"},{"id":"2218","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Park Lane 3b","town":"4","size":"20","price":"1100","rent":"1100","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"2219","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Park Lane 4","town":"4","size":"16","price":"980","rent":"980","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"2220","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Park Lane 2","town":"4","size":"16","price":"980","rent":"980","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"2221","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magician's Alley 8","town":"4","size":"21","price":"1400","rent":"1400","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"2222","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Moonkeep","town":"4","size":"240","price":"13020","rent":"13020","doors":"13","beds":"16","tiles":"522","guild":"0","clear":"0"},{"id":"2225","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, Basement, Flat 01","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2226","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, Basement, Flat 02","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2227","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, Basement, Flat 03","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2228","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, Basement, Flat 04","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2229","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, Basement, Flat 07","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2230","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, Basement, Flat 08","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2231","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, Basement, Flat 09","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2232","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, Basement, Flat 06","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2233","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, Basement, Flat 05","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2234","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle Shop 1","town":"11","size":"31","price":"1890","rent":"1890","doors":"3","beds":"1","tiles":"67","guild":"0","clear":"0"},{"id":"2235","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle Shop 2","town":"11","size":"31","price":"1890","rent":"1890","doors":"3","beds":"1","tiles":"70","guild":"0","clear":"0"},{"id":"2236","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle Shop 3","town":"11","size":"31","price":"1890","rent":"1890","doors":"3","beds":"1","tiles":"67","guild":"0","clear":"0"},{"id":"2237","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 4th Floor, Flat 09","town":"11","size":"13","price":"720","rent":"720","doors":"1","beds":"1","tiles":"28","guild":"0","clear":"0"},{"id":"2238","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 4th Floor, Flat 08","town":"11","size":"18","price":"945","rent":"945","doors":"1","beds":"1","tiles":"42","guild":"0","clear":"0"},{"id":"2239","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 4th Floor, Flat 06","town":"11","size":"18","price":"945","rent":"945","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"2240","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 4th Floor, Flat 07","town":"11","size":"13","price":"720","rent":"720","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2241","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 4th Floor, Flat 05","town":"11","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2242","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 4th Floor, Flat 04","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2243","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 4th Floor, Flat 03","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2244","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 4th Floor, Flat 02","town":"11","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2245","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 4th Floor, Flat 01","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2246","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 3rd Floor, Flat 01","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2247","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 3rd Floor, Flat 02","town":"11","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2248","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 3rd Floor, Flat 03","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2249","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 3rd Floor, Flat 05","town":"11","size":"14","price":"765","rent":"765","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2250","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 3rd Floor, Flat 04","town":"11","size":"10","price":"585","rent":"585","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2251","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 3rd Floor, Flat 06","town":"11","size":"16","price":"1045","rent":"1045","doors":"1","beds":"2","tiles":"36","guild":"0","clear":"0"},{"id":"2252","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle, 3rd Floor, Flat 07","town":"11","size":"13","price":"720","rent":"720","doors":"1","beds":"1","tiles":"30","guild":"0","clear":"0"},{"id":"2253","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle Street 1","town":"11","size":"53","price":"2900","rent":"2900","doors":"1","beds":"3","tiles":"112","guild":"0","clear":"0"},{"id":"2254","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle Street 2","town":"11","size":"26","price":"1495","rent":"1495","doors":"1","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2255","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle Street 3","town":"11","size":"32","price":"1765","rent":"1765","doors":"1","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2256","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle Street 4","town":"11","size":"32","price":"1765","rent":"1765","doors":"1","beds":"2","tiles":"64","guild":"0","clear":"0"},{"id":"2257","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle Street 5","town":"11","size":"32","price":"1765","rent":"1765","doors":"1","beds":"2","tiles":"61","guild":"0","clear":"0"},{"id":"2258","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Basement Flat 2","town":"11","size":"31","price":"1540","rent":"1540","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"2259","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Basement Flat 1","town":"11","size":"31","price":"1540","rent":"1540","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"2260","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 01","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2261","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 02","town":"11","size":"14","price":"860","rent":"860","doors":"1","beds":"2","tiles":"28","guild":"0","clear":"0"},{"id":"2262","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 03","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2263","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 04","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2264","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 06","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2265","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 05","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2266","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 07","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2267","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 08","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2268","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 11","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2269","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 12","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2270","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 14","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2271","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 13","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2272","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 16","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2273","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 15","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2274","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 18","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2275","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 17","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2276","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 22","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2277","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 21","town":"11","size":"14","price":"860","rent":"860","doors":"1","beds":"2","tiles":"40","guild":"0","clear":"0"},{"id":"2278","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 24","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2279","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 23","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2280","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 26","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2281","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 27","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2282","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 28","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2283","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Edron Flats, Flat 25","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2284","world_id":"0","owner":"252","paid":"0","warnings":"0","lastwarning":"1346788845","name":"Central Circle 1","town":"11","size":"66","price":"3020","rent":"3020","doors":"3","beds":"2","tiles":"119","guild":"0","clear":"0"},{"id":"2285","world_id":"0","owner":"356","paid":"1346885930","warnings":"0","lastwarning":"0","name":"Central Circle 2","town":"11","size":"73","price":"3300","rent":"3300","doors":"3","beds":"2","tiles":"108","guild":"0","clear":"0"},{"id":"2286","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Central Circle 3","town":"11","size":"79","price":"4160","rent":"4160","doors":"5","beds":"5","tiles":"147","guild":"0","clear":"0"},{"id":"2287","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Central Circle 4","town":"11","size":"79","price":"4160","rent":"4160","doors":"5","beds":"5","tiles":"147","guild":"0","clear":"0"},{"id":"2288","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Central Circle 5","town":"11","size":"79","price":"4160","rent":"4160","doors":"5","beds":"5","tiles":"161","guild":"0","clear":"0"},{"id":"2289","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Central Circle 6 (Shop)","town":"11","size":"84","price":"3980","rent":"3980","doors":"6","beds":"2","tiles":"182","guild":"0","clear":"0"},{"id":"2290","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Central Circle 7 (Shop)","town":"11","size":"84","price":"3980","rent":"3980","doors":"6","beds":"2","tiles":"161","guild":"0","clear":"0"},{"id":"2291","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Central Circle 8 (Shop)","town":"11","size":"84","price":"3980","rent":"3980","doors":"6","beds":"2","tiles":"166","guild":"0","clear":"0"},{"id":"2292","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Central Circle 9a","town":"11","size":"16","price":"940","rent":"940","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"2293","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Central Circle 9b","town":"11","size":"18","price":"940","rent":"940","doors":"1","beds":"2","tiles":"44","guild":"0","clear":"0"},{"id":"2294","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sky Lane, Guild 1","town":"11","size":"342","price":"21145","rent":"21145","doors":"11","beds":"23","tiles":"666","guild":"0","clear":"0"},{"id":"2295","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sky Lane, Guild 2","town":"11","size":"344","price":"19300","rent":"19300","doors":"12","beds":"14","tiles":"650","guild":"0","clear":"0"},{"id":"2296","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sky Lane, Guild 3","town":"11","size":"296","price":"17315","rent":"17315","doors":"10","beds":"18","tiles":"564","guild":"0","clear":"0"},{"id":"2297","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Sky Lane, Sea Tower","town":"11","size":"80","price":"4775","rent":"4775","doors":"3","beds":"6","tiles":"196","guild":"0","clear":"0"},{"id":"2298","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 6a","town":"11","size":"23","price":"1450","rent":"1450","doors":"3","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2299","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 9a","town":"11","size":"26","price":"1540","rent":"1540","doors":"2","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2300","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 10a","town":"11","size":"26","price":"1540","rent":"1540","doors":"2","beds":"2","tiles":"64","guild":"0","clear":"0"},{"id":"2301","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 11","town":"11","size":"130","price":"7205","rent":"7205","doors":"7","beds":"6","tiles":"253","guild":"0","clear":"0"},{"id":"2302","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 8","town":"11","size":"117","price":"5960","rent":"5960","doors":"5","beds":"3","tiles":"198","guild":"0","clear":"0"},{"id":"2303","world_id":"0","owner":"89","paid":"1346886136","warnings":"0","lastwarning":"0","name":"Wood Avenue 7","town":"11","size":"117","price":"5960","rent":"5960","doors":"5","beds":"3","tiles":"191","guild":"0","clear":"0"},{"id":"2304","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 6b","town":"11","size":"23","price":"1450","rent":"1450","doors":"3","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2305","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 9b","town":"11","size":"25","price":"1495","rent":"1495","doors":"2","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2306","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 10b","town":"11","size":"22","price":"1595","rent":"1595","doors":"3","beds":"3","tiles":"64","guild":"0","clear":"0"},{"id":"2307","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 5","town":"11","size":"32","price":"1765","rent":"1765","doors":"1","beds":"2","tiles":"64","guild":"0","clear":"0"},{"id":"2308","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 4a","town":"11","size":"26","price":"1495","rent":"1495","doors":"1","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2309","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 4b","town":"11","size":"26","price":"1495","rent":"1495","doors":"1","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2310","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 4c","town":"11","size":"32","price":"1765","rent":"1765","doors":"1","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2311","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 4","town":"11","size":"32","price":"1765","rent":"1765","doors":"1","beds":"2","tiles":"64","guild":"0","clear":"0"},{"id":"2312","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 3","town":"11","size":"32","price":"1765","rent":"1765","doors":"1","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2313","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 2","town":"11","size":"32","price":"1765","rent":"1765","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"2314","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Wood Avenue 1","town":"11","size":"32","price":"1765","rent":"1765","doors":"1","beds":"2","tiles":"64","guild":"0","clear":"0"},{"id":"2315","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magic Academy, Guild","town":"11","size":"155","price":"12025","rent":"12025","doors":"7","beds":"14","tiles":"414","guild":"0","clear":"0"},{"id":"2316","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magic Academy, Flat 1","town":"11","size":"16","price":"1465","rent":"1465","doors":"2","beds":"3","tiles":"57","guild":"0","clear":"0"},{"id":"2317","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magic Academy, Flat 2","town":"11","size":"21","price":"1530","rent":"1530","doors":"1","beds":"2","tiles":"55","guild":"0","clear":"0"},{"id":"2318","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magic Academy, Flat 3","town":"11","size":"24","price":"1430","rent":"1430","doors":"1","beds":"1","tiles":"55","guild":"0","clear":"0"},{"id":"2319","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magic Academy, Flat 4","town":"11","size":"21","price":"1530","rent":"1530","doors":"1","beds":"2","tiles":"55","guild":"0","clear":"0"},{"id":"2320","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magic Academy, Flat 5","town":"11","size":"23","price":"1430","rent":"1430","doors":"1","beds":"1","tiles":"55","guild":"0","clear":"0"},{"id":"2321","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Magic Academy, Shop","town":"11","size":"18","price":"1595","rent":"1595","doors":"0","beds":"1","tiles":"48","guild":"0","clear":"0"},{"id":"2322","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Village 1","town":"11","size":"36","price":"1780","rent":"1780","doors":"2","beds":"2","tiles":"74","guild":"0","clear":"0"},{"id":"2323","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 05","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2324","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 04","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2325","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 06","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2326","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 03","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2327","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 01","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2328","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 02","town":"11","size":"11","price":"740","rent":"740","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2329","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 11","town":"11","size":"11","price":"740","rent":"740","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"2330","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 12","town":"11","size":"11","price":"740","rent":"740","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"2331","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 13","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2332","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 14","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2333","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 16","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2334","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Flats, Flat 15","town":"11","size":"7","price":"400","rent":"400","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2335","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Village 2","town":"11","size":"13","price":"640","rent":"640","doors":"1","beds":"1","tiles":"35","guild":"0","clear":"0"},{"id":"2336","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Village 3","town":"11","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"2337","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Village 4","town":"11","size":"16","price":"940","rent":"940","doors":"1","beds":"2","tiles":"42","guild":"0","clear":"0"},{"id":"2338","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Village 6","town":"11","size":"25","price":"1300","rent":"1300","doors":"1","beds":"2","tiles":"55","guild":"0","clear":"0"},{"id":"2339","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Village 5","town":"11","size":"28","price":"1140","rent":"1140","doors":"1","beds":"2","tiles":"56","guild":"0","clear":"0"},{"id":"2340","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Village 7","town":"11","size":"21","price":"1140","rent":"1140","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"2341","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Village 8","town":"11","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"2342","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Village 9","town":"11","size":"14","price":"680","rent":"680","doors":"1","beds":"1","tiles":"36","guild":"0","clear":"0"},{"id":"2343","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Stonehome Clanhall","town":"11","size":"157","price":"8580","rent":"8580","doors":"15","beds":"9","tiles":"345","guild":"0","clear":"0"},{"id":"2344","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 1","town":"11","size":"21","price":"1270","rent":"1270","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"0"},{"id":"2345","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 2","town":"11","size":"70","price":"3710","rent":"3710","doors":"3","beds":"3","tiles":"145","guild":"0","clear":"0"},{"id":"2346","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 01","town":"11","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2347","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 02","town":"11","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2348","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 03","town":"11","size":"11","price":"820","rent":"820","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2349","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 06","town":"11","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2350","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 05","town":"11","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2351","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 04","town":"11","size":"11","price":"820","rent":"820","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2352","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 13","town":"11","size":"11","price":"820","rent":"820","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"0"},{"id":"2353","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 14","town":"11","size":"11","price":"820","rent":"820","doors":"1","beds":"2","tiles":"35","guild":"0","clear":"0"},{"id":"2354","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 15","town":"11","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2355","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 16","town":"11","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2356","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 11","town":"11","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2357","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya Flats, Flat 12","town":"11","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2358","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 3","town":"11","size":"38","price":"2035","rent":"2035","doors":"1","beds":"2","tiles":"72","guild":"0","clear":"0"},{"id":"2359","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle of the White Dragon","town":"11","size":"442","price":"25110","rent":"25110","doors":"16","beds":"19","tiles":"882","guild":"0","clear":"0"},{"id":"2360","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 4","town":"11","size":"31","price":"1720","rent":"1720","doors":"1","beds":"2","tiles":"63","guild":"0","clear":"0"},{"id":"2361","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 5","town":"11","size":"77","price":"4250","rent":"4250","doors":"2","beds":"3","tiles":"167","guild":"0","clear":"0"},{"id":"2362","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 6","town":"11","size":"46","price":"2395","rent":"2395","doors":"1","beds":"2","tiles":"84","guild":"0","clear":"0"},{"id":"2363","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 7","town":"11","size":"46","price":"2395","rent":"2395","doors":"1","beds":"2","tiles":"84","guild":"0","clear":"0"},{"id":"2364","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 8","town":"11","size":"53","price":"2710","rent":"2710","doors":"2","beds":"2","tiles":"113","guild":"0","clear":"0"},{"id":"2365","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 9b","town":"11","size":"50","price":"2620","rent":"2620","doors":"2","beds":"2","tiles":"88","guild":"0","clear":"0"},{"id":"2366","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 9a","town":"11","size":"20","price":"1225","rent":"1225","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"2367","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 9c","town":"11","size":"20","price":"1225","rent":"1225","doors":"1","beds":"2","tiles":"48","guild":"0","clear":"0"},{"id":"2368","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 9d","town":"11","size":"50","price":"2620","rent":"2620","doors":"2","beds":"2","tiles":"88","guild":"0","clear":"0"},{"id":"2369","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 10","town":"11","size":"73","price":"3800","rent":"3800","doors":"2","beds":"3","tiles":"140","guild":"0","clear":"0"},{"id":"2370","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Cormaya 11","town":"11","size":"38","price":"2035","rent":"2035","doors":"1","beds":"2","tiles":"72","guild":"0","clear":"0"},{"id":"2371","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Demon Tower","town":"2","size":"50","price":"3340","rent":"3340","doors":"1","beds":"2","tiles":"127","guild":"0","clear":"0"},{"id":"2372","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nautic Observer","town":"4","size":"145","price":"6540","rent":"6540","doors":"4","beds":"4","tiles":"300","guild":"0","clear":"0"},{"id":"2373","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Riverspring","town":"3","size":"284","price":"19450","rent":"19450","doors":"23","beds":"18","tiles":"632","guild":"0","clear":"0"},{"id":"2374","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"House of Recreation","town":"4","size":"337","price":"22540","rent":"22540","doors":"4","beds":"16","tiles":"702","guild":"0","clear":"0"},{"id":"2375","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Valorous Venore","town":"1","size":"271","price":"14435","rent":"14435","doors":"15","beds":"9","tiles":"507","guild":"0","clear":"0"},{"id":"2376","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ab'Dendriel Clanhall","town":"5","size":"264","price":"14850","rent":"14850","doors":"11","beds":"10","tiles":"498","guild":"0","clear":"0"},{"id":"2377","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle of the Winds","town":"5","size":"422","price":"23885","rent":"23885","doors":"21","beds":"18","tiles":"842","guild":"0","clear":"0"},{"id":"2378","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"The Hideout","town":"5","size":"321","price":"20800","rent":"20800","doors":"14","beds":"20","tiles":"597","guild":"0","clear":"0"},{"id":"2379","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Shadow Towers","town":"5","size":"348","price":"21800","rent":"21800","doors":"16","beds":"18","tiles":"750","guild":"0","clear":"0"},{"id":"2380","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Hill Hideout","town":"3","size":"193","price":"13950","rent":"13950","doors":"8","beds":"15","tiles":"346","guild":"0","clear":"0"},{"id":"2381","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Meriana Beach","town":"7","size":"140","price":"8230","rent":"8230","doors":"1","beds":"3","tiles":"184","guild":"0","clear":"0"},{"id":"2382","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 8, Flat 01","town":"10","size":"48","price":"2485","rent":"2485","doors":"1","beds":"2","tiles":"80","guild":"0","clear":"0"},{"id":"2383","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 8, Flat 02","town":"10","size":"67","price":"3385","rent":"3385","doors":"2","beds":"2","tiles":"114","guild":"0","clear":"0"},{"id":"2384","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 8, Flat 03","town":"10","size":"90","price":"4700","rent":"4700","doors":"5","beds":"3","tiles":"171","guild":"0","clear":"0"},{"id":"2385","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 8, Flat 04","town":"10","size":"56","price":"2845","rent":"2845","doors":"1","beds":"2","tiles":"90","guild":"0","clear":"0"},{"id":"2386","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia 8, Flat 05","town":"10","size":"52","price":"2665","rent":"2665","doors":"1","beds":"2","tiles":"85","guild":"0","clear":"0"},{"id":"2387","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Darashia, Eastern Guildhall","town":"10","size":"204","price":"12660","rent":"12660","doors":"15","beds":"16","tiles":"444","guild":"0","clear":"0"},{"id":"2388","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 5a","town":"4","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2389","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 5b","town":"4","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"19","guild":"0","clear":"0"},{"id":"2390","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 5c","town":"4","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"2391","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Theater Avenue 5d","town":"4","size":"7","price":"450","rent":"450","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"2392","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kyra 2","town":"0","size":"23","price":"24000","rent":"24000","doors":"2","beds":"1","tiles":"42","guild":"0","clear":"0"},{"id":"2393","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kyra 3","town":"0","size":"8","price":"9000","rent":"9000","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"2394","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kyra 4","town":"0","size":"8","price":"9000","rent":"9000","doors":"1","beds":"1","tiles":"18","guild":"0","clear":"0"},{"id":"2395","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kyra 5","town":"0","size":"24","price":"25000","rent":"25000","doors":"2","beds":"1","tiles":"41","guild":"0","clear":"0"},{"id":"2396","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kyra 6","town":"0","size":"10","price":"11000","rent":"11000","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2397","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kyra 7","town":"0","size":"10","price":"11000","rent":"11000","doors":"1","beds":"1","tiles":"20","guild":"0","clear":"0"},{"id":"2398","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kyra 8","town":"0","size":"24","price":"25000","rent":"25000","doors":"1","beds":"1","tiles":"37","guild":"0","clear":"0"},{"id":"2399","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Kyra","town":"0","size":"28","price":"29000","rent":"29000","doors":"2","beds":"1","tiles":"47","guild":"0","clear":"0"},{"id":"2400","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2","town":"0","size":"76","price":"78000","rent":"78000","doors":"4","beds":"2","tiles":"134","guild":"0","clear":"0"},{"id":"2401","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #4","town":"0","size":"128","price":"130000","rent":"130000","doors":"5","beds":"2","tiles":"197","guild":"0","clear":"0"},{"id":"2402","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #5","town":"0","size":"139","price":"142000","rent":"142000","doors":"4","beds":"3","tiles":"202","guild":"0","clear":"0"},{"id":"2403","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #6","town":"0","size":"87","price":"89000","rent":"89000","doors":"2","beds":"2","tiles":"126","guild":"0","clear":"0"},{"id":"2404","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #7","town":"0","size":"42","price":"43000","rent":"43000","doors":"5","beds":"1","tiles":"83","guild":"0","clear":"0"},{"id":"2405","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #8","town":"0","size":"40","price":"43000","rent":"43000","doors":"5","beds":"3","tiles":"84","guild":"0","clear":"0"},{"id":"2406","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #9","town":"0","size":"72","price":"75000","rent":"75000","doors":"5","beds":"3","tiles":"127","guild":"0","clear":"0"},{"id":"2407","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #10","town":"0","size":"36","price":"36000","rent":"36000","doors":"1","beds":"0","tiles":"59","guild":"0","clear":"0"},{"id":"2408","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"5","guild":"0","clear":"0"},{"id":"2409","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"21","guild":"0","clear":"0"},{"id":"2410","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"22752","price":"0","rent":"0","doors":"0","beds":"0","tiles":"4","guild":"0","clear":"0"},{"id":"2411","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"4","guild":"0","clear":"0"},{"id":"2412","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"2","guild":"0","clear":"0"},{"id":"2413","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"7","guild":"0","clear":"0"},{"id":"2414","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"22739","price":"0","rent":"0","doors":"0","beds":"0","tiles":"3","guild":"0","clear":"0"},{"id":"2415","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"1652116887","price":"0","rent":"0","doors":"0","beds":"0","tiles":"3","guild":"0","clear":"0"},{"id":"2416","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"0"},{"id":"2417","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"5","guild":"0","clear":"0"},{"id":"2418","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"2","guild":"0","clear":"0"},{"id":"2419","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"0"},{"id":"2420","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"4389752","price":"0","rent":"0","doors":"0","beds":"0","tiles":"4","guild":"0","clear":"0"},{"id":"2421","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"1652117452","price":"0","rent":"0","doors":"0","beds":"0","tiles":"5","guild":"0","clear":"0"},{"id":"2422","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"5114","price":"0","rent":"0","doors":"0","beds":"0","tiles":"3","guild":"0","clear":"0"},{"id":"2423","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"2","guild":"0","clear":"0"},{"id":"2424","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"758263808","price":"0","rent":"0","doors":"0","beds":"0","tiles":"3","guild":"0","clear":"0"},{"id":"2425","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"4637","price":"0","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"0"},{"id":"2426","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"3","guild":"0","clear":"0"},{"id":"2427","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"1","guild":"0","clear":"0"},{"id":"2428","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"2","guild":"0","clear":"0"},{"id":"2429","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"2","guild":"0","clear":"0"},{"id":"2430","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"2","guild":"0","clear":"0"},{"id":"2431","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"1","beds":"1","tiles":"21","guild":"0","clear":"0"},{"id":"2432","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"1","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"2433","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"1","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"2434","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"1","beds":"1","tiles":"19","guild":"0","clear":"0"},{"id":"2435","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"4","beds":"3","tiles":"89","guild":"0","clear":"0"},{"id":"2436","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Miasto house1","town":"20","size":"15","price":"15000","rent":"15000","doors":"1","beds":"0","tiles":"18","guild":"0","clear":"0"},{"id":"2437","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2437","town":"20","size":"6","price":"6000","rent":"6000","doors":"0","beds":"0","tiles":"6","guild":"0","clear":"0"},{"id":"2438","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"1","beds":"1","tiles":"25","guild":"0","clear":"0"},{"id":"2439","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"1","beds":"1","tiles":"26","guild":"0","clear":"0"},{"id":"2440","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2440","town":"20","size":"26","price":"26000","rent":"26000","doors":"1","beds":"0","tiles":"28","guild":"0","clear":"0"},{"id":"2441","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"2442","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"2","tiles":"24","guild":"0","clear":"0"},{"id":"2443","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"2","beds":"4","tiles":"112","guild":"0","clear":"0"},{"id":"2445","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"0","tiles":"21","guild":"0","clear":"0"},{"id":"2446","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2446","town":"20","size":"16","price":"17000","rent":"17000","doors":"1","beds":"1","tiles":"24","guild":"0","clear":"0"},{"id":"2447","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"1","tiles":"15","guild":"0","clear":"0"},{"id":"2448","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2448","town":"20","size":"13","price":"14000","rent":"14000","doors":"0","beds":"1","tiles":"16","guild":"0","clear":"0"},{"id":"2449","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2449","town":"20","size":"10","price":"11000","rent":"11000","doors":"0","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"2451","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2451","town":"20","size":"27","price":"28000","rent":"28000","doors":"3","beds":"1","tiles":"40","guild":"0","clear":"0"},{"id":"2452","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"2","beds":"0","tiles":"77","guild":"0","clear":"0"},{"id":"2453","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2453","town":"20","size":"18","price":"19000","rent":"19000","doors":"0","beds":"1","tiles":"23","guild":"0","clear":"0"},{"id":"2454","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2454","town":"20","size":"10","price":"11000","rent":"11000","doors":"0","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"2455","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2455","town":"20","size":"10","price":"11000","rent":"11000","doors":"0","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"2456","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2456","town":"20","size":"10","price":"11000","rent":"11000","doors":"0","beds":"1","tiles":"12","guild":"0","clear":"0"},{"id":"2457","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"0","beds":"1","tiles":"34","guild":"0","clear":"0"},{"id":"2458","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Forgotten headquarter (Flat 1, Area 42)","town":"0","size":"0","price":"0","rent":"0","doors":"2","beds":"2","tiles":"27","guild":"0","clear":"0"},{"id":"2459","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2459","town":"20","size":"20","price":"20000","rent":"20000","doors":"0","beds":"0","tiles":"20","guild":"0","clear":"0"},{"id":"2460","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2460","town":"20","size":"20","price":"20000","rent":"20000","doors":"0","beds":"0","tiles":"20","guild":"0","clear":"0"},{"id":"2461","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2461","town":"20","size":"20","price":"20000","rent":"20000","doors":"0","beds":"0","tiles":"20","guild":"0","clear":"0"},{"id":"2462","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Unnamed House #2462","town":"20","size":"18","price":"18000","rent":"18000","doors":"0","beds":"0","tiles":"18","guild":"0","clear":"0"},{"id":"2463","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 11","town":"15","size":"16","price":"28000","rent":"0","doors":"0","beds":"2","tiles":"28","guild":"0","clear":"1"},{"id":"2464","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 12","town":"15","size":"42","price":"66000","rent":"0","doors":"1","beds":"4","tiles":"66","guild":"0","clear":"1"},{"id":"2465","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 13","town":"15","size":"28","price":"50000","rent":"0","doors":"1","beds":"4","tiles":"50","guild":"0","clear":"1"},{"id":"2466","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 14","town":"15","size":"36","price":"55000","rent":"0","doors":"1","beds":"4","tiles":"55","guild":"0","clear":"1"},{"id":"2467","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 15","town":"15","size":"27","price":"47000","rent":"0","doors":"0","beds":"4","tiles":"47","guild":"0","clear":"1"},{"id":"2468","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 16","town":"15","size":"29","price":"48000","rent":"0","doors":"0","beds":"4","tiles":"48","guild":"0","clear":"1"},{"id":"2469","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 17","town":"15","size":"21","price":"34000","rent":"0","doors":"0","beds":"2","tiles":"34","guild":"0","clear":"1"},{"id":"2470","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 18","town":"15","size":"21","price":"34000","rent":"0","doors":"0","beds":"2","tiles":"34","guild":"0","clear":"1"},{"id":"2471","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 19","town":"15","size":"10","price":"20000","rent":"0","doors":"0","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"2472","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 20","town":"15","size":"10","price":"20000","rent":"0","doors":"0","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"2473","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 21","town":"15","size":"20","price":"36000","rent":"0","doors":"0","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"2474","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 22","town":"15","size":"22","price":"36000","rent":"0","doors":"0","beds":"2","tiles":"36","guild":"0","clear":"1"},{"id":"2475","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 23","town":"15","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"2476","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 24","town":"15","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"2477","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 25","town":"15","size":"7","price":"16000","rent":"0","doors":"0","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"2478","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 26","town":"15","size":"7","price":"16000","rent":"0","doors":"0","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"2479","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 27","town":"15","size":"132","price":"235000","rent":"0","doors":"3","beds":"22","tiles":"235","guild":"0","clear":"1"},{"id":"2480","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 28","town":"15","size":"7","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"2481","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 29","town":"15","size":"7","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"2482","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 30","town":"15","size":"22","price":"38000","rent":"0","doors":"1","beds":"4","tiles":"38","guild":"0","clear":"1"},{"id":"2483","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 31","town":"15","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"2484","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 32","town":"15","size":"6","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"2485","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 33","town":"15","size":"14","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"2486","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 34","town":"15","size":"20","price":"35000","rent":"0","doors":"1","beds":"4","tiles":"35","guild":"0","clear":"1"},{"id":"2487","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 35","town":"15","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"2488","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 36","town":"15","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"2489","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 37","town":"15","size":"16","price":"30000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"2490","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 38","town":"15","size":"16","price":"30000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"2491","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 39","town":"15","size":"21","price":"36000","rent":"0","doors":"1","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"2492","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 40","town":"15","size":"21","price":"36000","rent":"0","doors":"1","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"2493","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 41","town":"15","size":"14","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"2494","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 42","town":"15","size":"18","price":"30000","rent":"0","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"1"},{"id":"2495","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 43","town":"15","size":"24","price":"40000","rent":"0","doors":"0","beds":"4","tiles":"40","guild":"0","clear":"1"},{"id":"2496","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 44","town":"15","size":"14","price":"25000","rent":"0","doors":"0","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"2497","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 45","town":"15","size":"46","price":"69000","rent":"0","doors":"0","beds":"4","tiles":"69","guild":"0","clear":"1"},{"id":"2498","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 46","town":"15","size":"82","price":"135000","rent":"0","doors":"3","beds":"10","tiles":"135","guild":"0","clear":"1"},{"id":"2499","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 47","town":"15","size":"38","price":"57000","rent":"0","doors":"1","beds":"4","tiles":"57","guild":"0","clear":"1"},{"id":"2500","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 48","town":"15","size":"38","price":"65000","rent":"0","doors":"2","beds":"2","tiles":"65","guild":"0","clear":"1"},{"id":"2501","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 49","town":"15","size":"24","price":"40000","rent":"0","doors":"0","beds":"4","tiles":"40","guild":"0","clear":"1"},{"id":"2502","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 50","town":"15","size":"20","price":"35000","rent":"0","doors":"0","beds":"4","tiles":"35","guild":"0","clear":"1"},{"id":"2503","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 51","town":"15","size":"18","price":"30000","rent":"0","doors":"1","beds":"2","tiles":"30","guild":"0","clear":"1"},{"id":"2504","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 52","town":"15","size":"14","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"2505","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 53","town":"15","size":"14","price":"27000","rent":"0","doors":"2","beds":"2","tiles":"27","guild":"0","clear":"1"},{"id":"2506","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 54","town":"15","size":"17","price":"32000","rent":"0","doors":"2","beds":"2","tiles":"32","guild":"0","clear":"1"},{"id":"2507","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 55","town":"15","size":"17","price":"31000","rent":"0","doors":"2","beds":"2","tiles":"31","guild":"0","clear":"1"},{"id":"2508","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 56","town":"15","size":"17","price":"32000","rent":"0","doors":"2","beds":"2","tiles":"32","guild":"0","clear":"1"},{"id":"2509","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 57","town":"15","size":"50","price":"78000","rent":"0","doors":"1","beds":"8","tiles":"78","guild":"0","clear":"1"},{"id":"2510","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 58","town":"15","size":"8","price":"18000","rent":"0","doors":"0","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"2511","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 59","town":"15","size":"8","price":"18000","rent":"0","doors":"0","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"2512","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 60","town":"15","size":"8","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"2513","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 61","town":"15","size":"8","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"2514","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 62","town":"15","size":"8","price":"18000","rent":"0","doors":"0","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"2515","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 63","town":"15","size":"8","price":"14000","rent":"0","doors":"0","beds":"2","tiles":"14","guild":"0","clear":"1"},{"id":"2516","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 64","town":"15","size":"8","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"2517","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 65","town":"15","size":"8","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"2518","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 66","town":"15","size":"10","price":"23000","rent":"0","doors":"1","beds":"2","tiles":"23","guild":"0","clear":"1"},{"id":"2519","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 67","town":"15","size":"21","price":"32000","rent":"0","doors":"0","beds":"0","tiles":"32","guild":"0","clear":"1"},{"id":"2520","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 68","town":"15","size":"12","price":"24000","rent":"0","doors":"0","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"2521","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 69","town":"15","size":"12","price":"24000","rent":"0","doors":"0","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"2522","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 70","town":"15","size":"13","price":"24000","rent":"0","doors":"0","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"2523","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 71","town":"15","size":"7","price":"16000","rent":"0","doors":"1","beds":"2","tiles":"16","guild":"0","clear":"1"},{"id":"2524","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 72","town":"15","size":"14","price":"25000","rent":"0","doors":"1","beds":"2","tiles":"25","guild":"0","clear":"1"},{"id":"2525","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 73","town":"15","size":"16","price":"28000","rent":"0","doors":"0","beds":"2","tiles":"28","guild":"0","clear":"1"},{"id":"2526","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 74","town":"15","size":"6","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"2527","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 75","town":"15","size":"6","price":"15000","rent":"0","doors":"1","beds":"2","tiles":"15","guild":"0","clear":"1"},{"id":"2528","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 76","town":"15","size":"21","price":"36000","rent":"0","doors":"1","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"2529","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 77","town":"15","size":"13","price":"24000","rent":"0","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"2530","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 78","town":"15","size":"21","price":"36000","rent":"0","doors":"0","beds":"4","tiles":"36","guild":"0","clear":"1"},{"id":"2531","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 79","town":"15","size":"7","price":"12000","rent":"0","doors":"0","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"2532","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 80","town":"15","size":"7","price":"12000","rent":"0","doors":"0","beds":"2","tiles":"12","guild":"0","clear":"1"},{"id":"2533","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 81","town":"15","size":"23","price":"35000","rent":"0","doors":"0","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"2534","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 82","town":"15","size":"25","price":"47000","rent":"0","doors":"1","beds":"2","tiles":"47","guild":"0","clear":"1"},{"id":"2535","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 83","town":"15","size":"13","price":"24000","rent":"0","doors":"0","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"2536","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 84","town":"15","size":"13","price":"24000","rent":"0","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"2537","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 85","town":"15","size":"4","price":"9000","rent":"0","doors":"1","beds":"2","tiles":"9","guild":"0","clear":"1"},{"id":"2538","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 86","town":"15","size":"16","price":"30000","rent":"0","doors":"1","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"2539","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 87","town":"15","size":"93","price":"165000","rent":"0","doors":"1","beds":"16","tiles":"165","guild":"0","clear":"1"},{"id":"2540","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 88","town":"15","size":"26","price":"42000","rent":"0","doors":"1","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"2541","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 89","town":"15","size":"16","price":"28000","rent":"0","doors":"0","beds":"2","tiles":"28","guild":"0","clear":"1"},{"id":"2542","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 90","town":"15","size":"13","price":"24000","rent":"0","doors":"0","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"2543","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 91","town":"15","size":"21","price":"35000","rent":"0","doors":"1","beds":"4","tiles":"35","guild":"0","clear":"1"},{"id":"2544","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 92","town":"15","size":"13","price":"24000","rent":"0","doors":"0","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"2545","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 93","town":"15","size":"84","price":"134000","rent":"0","doors":"5","beds":"6","tiles":"134","guild":"0","clear":"1"},{"id":"2546","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 94","town":"15","size":"24","price":"47000","rent":"0","doors":"0","beds":"6","tiles":"47","guild":"0","clear":"1"},{"id":"2547","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 95","town":"15","size":"30","price":"48000","rent":"0","doors":"1","beds":"4","tiles":"48","guild":"0","clear":"1"},{"id":"2548","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 96","town":"15","size":"26","price":"42000","rent":"0","doors":"0","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"2549","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 97","town":"15","size":"26","price":"42000","rent":"0","doors":"0","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"2550","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 98","town":"15","size":"27","price":"49000","rent":"0","doors":"1","beds":"2","tiles":"49","guild":"0","clear":"1"},{"id":"2551","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 99","town":"15","size":"30","price":"50000","rent":"0","doors":"1","beds":"2","tiles":"50","guild":"0","clear":"1"},{"id":"2552","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 100","town":"15","size":"30","price":"50000","rent":"0","doors":"1","beds":"2","tiles":"50","guild":"0","clear":"1"},{"id":"2553","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 101","town":"15","size":"30","price":"55000","rent":"0","doors":"0","beds":"2","tiles":"55","guild":"0","clear":"1"},{"id":"2554","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 102","town":"15","size":"30","price":"50000","rent":"0","doors":"1","beds":"2","tiles":"50","guild":"0","clear":"1"},{"id":"2555","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 103","town":"15","size":"6","price":"12000","rent":"0","doors":"0","beds":"0","tiles":"12","guild":"0","clear":"1"},{"id":"2556","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 104","town":"15","size":"6","price":"12000","rent":"0","doors":"0","beds":"0","tiles":"12","guild":"0","clear":"1"},{"id":"2557","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 105","town":"15","size":"6","price":"12000","rent":"0","doors":"0","beds":"0","tiles":"12","guild":"0","clear":"1"},{"id":"2558","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 106","town":"15","size":"6","price":"12000","rent":"0","doors":"0","beds":"0","tiles":"12","guild":"0","clear":"1"},{"id":"2559","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 107","town":"15","size":"6","price":"12000","rent":"0","doors":"0","beds":"0","tiles":"12","guild":"0","clear":"1"},{"id":"2560","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 108","town":"15","size":"6","price":"12000","rent":"0","doors":"0","beds":"0","tiles":"12","guild":"0","clear":"1"},{"id":"2561","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 109","town":"15","size":"18","price":"39000","rent":"0","doors":"2","beds":"2","tiles":"39","guild":"0","clear":"1"},{"id":"2562","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 110","town":"15","size":"18","price":"36000","rent":"0","doors":"2","beds":"2","tiles":"36","guild":"0","clear":"1"},{"id":"2563","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 111","town":"15","size":"18","price":"36000","rent":"0","doors":"2","beds":"2","tiles":"36","guild":"0","clear":"1"},{"id":"2564","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 112","town":"15","size":"12","price":"20000","rent":"0","doors":"1","beds":"0","tiles":"20","guild":"0","clear":"1"},{"id":"2565","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 113","town":"15","size":"26","price":"45000","rent":"0","doors":"2","beds":"2","tiles":"45","guild":"0","clear":"1"},{"id":"2566","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 114","town":"15","size":"9","price":"16000","rent":"0","doors":"1","beds":"0","tiles":"16","guild":"0","clear":"1"},{"id":"2567","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 115","town":"15","size":"12","price":"20000","rent":"0","doors":"1","beds":"0","tiles":"20","guild":"0","clear":"1"},{"id":"2568","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 116","town":"15","size":"13","price":"24000","rent":"0","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"2569","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 117","town":"15","size":"22","price":"40000","rent":"0","doors":"2","beds":"2","tiles":"40","guild":"0","clear":"1"},{"id":"2570","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 118","town":"15","size":"9","price":"16000","rent":"0","doors":"1","beds":"0","tiles":"16","guild":"0","clear":"1"},{"id":"2571","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"donate city 119","town":"15","size":"16","price":"30000","rent":"0","doors":"0","beds":"4","tiles":"30","guild":"0","clear":"1"},{"id":"2572","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 01","town":"17","size":"65","price":"128000","rent":"0","doors":"9","beds":"11","tiles":"128","guild":"0","clear":"1"},{"id":"2573","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 02","town":"17","size":"12","price":"20000","rent":"0","doors":"2","beds":"0","tiles":"20","guild":"0","clear":"1"},{"id":"2574","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 03","town":"17","size":"16","price":"32000","rent":"0","doors":"2","beds":"0","tiles":"32","guild":"0","clear":"1"},{"id":"2575","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 04","town":"17","size":"33","price":"60000","rent":"0","doors":"4","beds":"4","tiles":"60","guild":"0","clear":"1"},{"id":"2576","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 05","town":"17","size":"36","price":"69000","rent":"0","doors":"8","beds":"6","tiles":"69","guild":"0","clear":"1"},{"id":"2577","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 06","town":"17","size":"36","price":"70000","rent":"0","doors":"8","beds":"6","tiles":"70","guild":"0","clear":"1"},{"id":"2578","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 07","town":"17","size":"36","price":"68000","rent":"0","doors":"6","beds":"6","tiles":"68","guild":"0","clear":"1"},{"id":"2579","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 08","town":"17","size":"30","price":"46000","rent":"0","doors":"3","beds":"2","tiles":"46","guild":"0","clear":"1"},{"id":"2580","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 09","town":"17","size":"8","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"2581","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 10","town":"17","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"2582","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 11","town":"17","size":"13","price":"24000","rent":"0","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"2583","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 12","town":"17","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"2584","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 13","town":"17","size":"8","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"2585","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 14","town":"17","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"2586","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 15","town":"17","size":"13","price":"24000","rent":"0","doors":"1","beds":"2","tiles":"24","guild":"0","clear":"1"},{"id":"2587","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 16","town":"17","size":"10","price":"20000","rent":"0","doors":"1","beds":"2","tiles":"20","guild":"0","clear":"1"},{"id":"2588","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 17","town":"17","size":"8","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"2589","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 18","town":"17","size":"8","price":"18000","rent":"0","doors":"1","beds":"2","tiles":"18","guild":"0","clear":"1"},{"id":"2590","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"gengia 19","town":"17","size":"28","price":"48000","rent":"0","doors":"5","beds":"2","tiles":"48","guild":"0","clear":"1"},{"id":"2591","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"76","price":"92000","rent":"0","doors":"2","beds":"5","tiles":"92","guild":"0","clear":"1"},{"id":"2592","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"65","price":"76000","rent":"0","doors":"0","beds":"6","tiles":"76","guild":"0","clear":"1"},{"id":"2593","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"44","price":"49000","rent":"0","doors":"0","beds":"2","tiles":"49","guild":"0","clear":"1"},{"id":"2594","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"28","price":"33000","rent":"0","doors":"1","beds":"2","tiles":"33","guild":"0","clear":"1"},{"id":"2595","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"30","price":"34000","rent":"0","doors":"1","beds":"2","tiles":"34","guild":"0","clear":"1"},{"id":"2596","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"72","price":"84000","rent":"0","doors":"5","beds":"8","tiles":"84","guild":"0","clear":"1"},{"id":"2597","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"51","price":"58000","rent":"0","doors":"2","beds":"4","tiles":"58","guild":"0","clear":"1"},{"id":"2598","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"17","price":"22000","rent":"0","doors":"0","beds":"4","tiles":"22","guild":"0","clear":"1"},{"id":"2599","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"63","price":"71000","rent":"0","doors":"3","beds":"4","tiles":"71","guild":"0","clear":"1"},{"id":"2600","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"19","price":"26000","rent":"0","doors":"0","beds":"2","tiles":"26","guild":"0","clear":"1"},{"id":"2601","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"27","price":"29000","rent":"0","doors":"1","beds":"0","tiles":"29","guild":"0","clear":"1"},{"id":"2602","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"59","price":"86000","rent":"0","doors":"1","beds":"8","tiles":"86","guild":"0","clear":"1"},{"id":"2603","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"91","price":"103000","rent":"0","doors":"3","beds":"2","tiles":"103","guild":"0","clear":"1"},{"id":"2604","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"55","price":"63000","rent":"0","doors":"3","beds":"4","tiles":"63","guild":"0","clear":"1"},{"id":"2605","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"18","price":"23000","rent":"0","doors":"2","beds":"2","tiles":"23","guild":"0","clear":"1"},{"id":"2606","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"24","price":"31000","rent":"0","doors":"3","beds":"4","tiles":"31","guild":"0","clear":"1"},{"id":"2607","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"86","price":"101000","rent":"0","doors":"1","beds":"10","tiles":"101","guild":"0","clear":"1"},{"id":"2608","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"15","price":"32000","rent":"0","doors":"0","beds":"0","tiles":"32","guild":"0","clear":"1"},{"id":"2609","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"23","price":"43000","rent":"0","doors":"0","beds":"0","tiles":"43","guild":"0","clear":"1"},{"id":"2610","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"29","price":"50000","rent":"0","doors":"0","beds":"0","tiles":"50","guild":"0","clear":"1"},{"id":"2611","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"","town":"0","size":"18","price":"38000","rent":"0","doors":"1","beds":"0","tiles":"38","guild":"0","clear":"1"},{"id":"2612","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Depot house","town":"0","size":"74","price":"151000","rent":"0","doors":"15","beds":"6","tiles":"151","guild":"0","clear":"1"},{"id":"2613","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle Street 2","town":"0","size":"36","price":"61000","rent":"0","doors":"7","beds":"4","tiles":"61","guild":"0","clear":"1"},{"id":"2614","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Castle Street 3","town":"0","size":"26","price":"47000","rent":"0","doors":"7","beds":"4","tiles":"47","guild":"0","clear":"1"},{"id":"2615","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"White House","town":"0","size":"111","price":"191000","rent":"0","doors":"2","beds":"4","tiles":"191","guild":"0","clear":"1"},{"id":"2616","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nova Flat 12","town":"0","size":"22","price":"40000","rent":"0","doors":"4","beds":"2","tiles":"40","guild":"0","clear":"1"},{"id":"2617","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nova Flat 1","town":"0","size":"22","price":"41000","rent":"0","doors":"5","beds":"2","tiles":"41","guild":"0","clear":"1"},{"id":"2618","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nova Flat 2","town":"0","size":"22","price":"41000","rent":"0","doors":"4","beds":"2","tiles":"41","guild":"0","clear":"1"},{"id":"2619","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nova Flat 3","town":"0","size":"22","price":"41000","rent":"0","doors":"4","beds":"2","tiles":"41","guild":"0","clear":"1"},{"id":"2620","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nova Flat 4","town":"0","size":"22","price":"35000","rent":"0","doors":"4","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"2621","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nova Flat 5","town":"0","size":"22","price":"35000","rent":"0","doors":"3","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"2622","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nova Flat 6","town":"0","size":"22","price":"35000","rent":"0","doors":"3","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"2623","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nova Flat 7","town":"0","size":"22","price":"39000","rent":"0","doors":"4","beds":"2","tiles":"39","guild":"0","clear":"1"},{"id":"2624","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nova Flat 9","town":"0","size":"22","price":"33000","rent":"0","doors":"2","beds":"2","tiles":"33","guild":"0","clear":"1"},{"id":"2625","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nova Flat 11","town":"0","size":"22","price":"35000","rent":"0","doors":"3","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"2626","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Iceland House 4","town":"0","size":"18","price":"33000","rent":"0","doors":"2","beds":"2","tiles":"33","guild":"0","clear":"1"},{"id":"2627","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Iceland House 5","town":"0","size":"18","price":"35000","rent":"0","doors":"4","beds":"2","tiles":"35","guild":"0","clear":"1"},{"id":"2628","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Boat House 1","town":"0","size":"44","price":"63000","rent":"0","doors":"1","beds":"4","tiles":"63","guild":"0","clear":"1"},{"id":"2629","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Boat House 2","town":"0","size":"34","price":"55000","rent":"0","doors":"3","beds":"2","tiles":"55","guild":"0","clear":"1"},{"id":"2630","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Nova Flat 10","town":"0","size":"22","price":"42000","rent":"0","doors":"5","beds":"2","tiles":"42","guild":"0","clear":"1"},{"id":"2631","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Waterfall House","town":"0","size":"46","price":"90000","rent":"0","doors":"5","beds":"4","tiles":"90","guild":"0","clear":"1"},{"id":"2633","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #33","town":"0","size":"34","price":"52000","rent":"0","doors":"2","beds":"2","tiles":"52","guild":"0","clear":"1"},{"id":"2634","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #34","town":"0","size":"22","price":"40000","rent":"0","doors":"3","beds":"2","tiles":"40","guild":"0","clear":"1"},{"id":"2635","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #35","town":"0","size":"33","price":"51000","rent":"0","doors":"2","beds":"4","tiles":"51","guild":"0","clear":"1"},{"id":"2636","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #36","town":"0","size":"41","price":"60000","rent":"0","doors":"2","beds":"4","tiles":"60","guild":"0","clear":"1"},{"id":"2637","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #37","town":"0","size":"31","price":"51000","rent":"0","doors":"2","beds":"4","tiles":"51","guild":"0","clear":"1"},{"id":"2638","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #38","town":"0","size":"24","price":"40000","rent":"0","doors":"3","beds":"4","tiles":"40","guild":"0","clear":"1"},{"id":"2639","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #39","town":"0","size":"24","price":"40000","rent":"0","doors":"1","beds":"4","tiles":"40","guild":"0","clear":"1"},{"id":"2640","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #40","town":"0","size":"28","price":"45000","rent":"0","doors":"1","beds":"4","tiles":"45","guild":"0","clear":"1"},{"id":"2641","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #41","town":"0","size":"24","price":"43000","rent":"0","doors":"1","beds":"4","tiles":"43","guild":"0","clear":"1"},{"id":"2642","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #42","town":"0","size":"24","price":"43000","rent":"0","doors":"3","beds":"4","tiles":"43","guild":"0","clear":"1"},{"id":"2643","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #43","town":"0","size":"32","price":"50000","rent":"0","doors":"2","beds":"4","tiles":"50","guild":"0","clear":"1"},{"id":"2644","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #44","town":"0","size":"23","price":"42000","rent":"0","doors":"3","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"2645","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #45","town":"0","size":"23","price":"42000","rent":"0","doors":"4","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"2646","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #46","town":"0","size":"36","price":"54000","rent":"0","doors":"2","beds":"4","tiles":"54","guild":"0","clear":"1"},{"id":"2647","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #49","town":"0","size":"50","price":"63000","rent":"0","doors":"1","beds":"2","tiles":"63","guild":"0","clear":"1"},{"id":"2648","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #50","town":"0","size":"26","price":"42000","rent":"0","doors":"1","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"2649","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #51","town":"0","size":"26","price":"42000","rent":"0","doors":"2","beds":"4","tiles":"42","guild":"0","clear":"1"},{"id":"2650","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #52","town":"0","size":"51","price":"72000","rent":"0","doors":"2","beds":"4","tiles":"72","guild":"0","clear":"1"},{"id":"2651","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #53","town":"0","size":"23","price":"40000","rent":"0","doors":"3","beds":"2","tiles":"40","guild":"0","clear":"1"},{"id":"2652","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #54","town":"0","size":"23","price":"41000","rent":"0","doors":"2","beds":"2","tiles":"41","guild":"0","clear":"1"},{"id":"2653","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #55","town":"0","size":"77","price":"110000","rent":"0","doors":"2","beds":"4","tiles":"110","guild":"0","clear":"1"},{"id":"2654","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Vengard House #57","town":"0","size":"33","price":"48000","rent":"0","doors":"2","beds":"2","tiles":"48","guild":"0","clear":"1"},{"id":"2655","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ashmura House #1","town":"0","size":"123","price":"204000","rent":"0","doors":"5","beds":"8","tiles":"204","guild":"0","clear":"1"},{"id":"2656","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ashmura House #2","town":"0","size":"76","price":"134000","rent":"0","doors":"4","beds":"4","tiles":"134","guild":"0","clear":"1"},{"id":"2657","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ashmura House #4","town":"0","size":"128","price":"197000","rent":"0","doors":"5","beds":"4","tiles":"197","guild":"0","clear":"1"},{"id":"2658","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ashmura House #5","town":"0","size":"139","price":"202000","rent":"0","doors":"4","beds":"6","tiles":"202","guild":"0","clear":"1"},{"id":"2659","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ashmura House #6","town":"0","size":"87","price":"126000","rent":"0","doors":"2","beds":"4","tiles":"126","guild":"0","clear":"1"},{"id":"2660","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ashmura House #7","town":"0","size":"42","price":"83000","rent":"0","doors":"5","beds":"2","tiles":"83","guild":"0","clear":"1"},{"id":"2661","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ashmura House #8","town":"0","size":"40","price":"84000","rent":"0","doors":"5","beds":"6","tiles":"84","guild":"0","clear":"1"},{"id":"2662","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ashmura House #9","town":"0","size":"72","price":"127000","rent":"0","doors":"5","beds":"6","tiles":"127","guild":"0","clear":"1"},{"id":"2663","world_id":"0","owner":"0","paid":"0","warnings":"0","lastwarning":"0","name":"Ashmura House #10","town":"0","size":"36","price":"59000","rent":"0","doors":"1","beds":"0","tiles":"59","guild":"0","clear":"1"}] \ No newline at end of file diff --git a/engine/cache/houses/sqldata.cache.php b/engine/cache/houses/sqldata.cache.php new file mode 100644 index 0000000..73747d7 --- /dev/null +++ b/engine/cache/houses/sqldata.cache.php @@ -0,0 +1 @@ +[{"name":"Znote","id":"3"},{"name":"Mister Dude","id":"4"}] \ No newline at end of file diff --git a/engine/cache/killers.cache.php b/engine/cache/killers.cache.php new file mode 100644 index 0000000..cb8df33 --- /dev/null +++ b/engine/cache/killers.cache.php @@ -0,0 +1 @@ +[{"killed_by":"Testing","kills":"1"}] \ No newline at end of file diff --git a/engine/cache/lastkillers.cache.php b/engine/cache/lastkillers.cache.php new file mode 100644 index 0000000..97d5259 --- /dev/null +++ b/engine/cache/lastkillers.cache.php @@ -0,0 +1 @@ +[{"victim":"Znote","killed_by":"Testing","time":"0"}] \ No newline at end of file diff --git a/engine/cache/news.cache.php b/engine/cache/news.cache.php new file mode 100644 index 0000000..6718593 --- /dev/null +++ b/engine/cache/news.cache.php @@ -0,0 +1 @@ +[{"id":"7","title":"BBcode test","text":"[size=6][b]Big size 6 bold text[\/b][\/size]\r\n[img]http:\/\/media.npr.org\/assets\/img\/2013\/01\/29\/cat-bird_wide-85ce4b8383b9440d3ff03413cdd913513e9737bf-s6-c30.jpg[\/img]\r\n[center]Centered text[\/center]\r\n\r\n[b]Bold text[\/b]\r\n[color=red]Red Text[\/color]\r\n[color=green]green Text[\/color]\r\n\r\n[*]element 1[\/*]\r\n[*]element 2[\/*]\r\n[*]element 3[\/*]\r\n\r\nLink without text assigned:\r\n[link]http:\/\/otland.net\/f118\/znote-aac-1-3-forgotten-server-0-2-13-forgotten-server-0-3-6-0-4-a-166722\/[\/link]\r\n\r\nLink with text assigned:\r\n[link=http:\/\/otland.net\/f118\/znote-aac-1-3-forgotten-server-0-2-13-forgotten-server-0-3-6-0-4-a-166722\/]CLICK HERE TO VIEW ZNOTE AAC[\/link]","date":"1370778017","name":"Znote"}] \ No newline at end of file diff --git a/engine/cache/support.cache.php b/engine/cache/support.cache.php new file mode 100644 index 0000000..f1aa858 --- /dev/null +++ b/engine/cache/support.cache.php @@ -0,0 +1 @@ +{"God":[{"group_id":"6","name":"Znote","online":1}]} \ No newline at end of file diff --git a/engine/cache/topPlayer.cache.php b/engine/cache/topPlayer.cache.php new file mode 100644 index 0000000..5e8c1a7 --- /dev/null +++ b/engine/cache/topPlayer.cache.php @@ -0,0 +1 @@ +[{"name":"Znote","level":"8","experience":"4200"},{"name":"Testing","level":"8","experience":"4200"},{"name":"Brannfjell","level":"8","experience":"4200"}] \ No newline at end of file diff --git a/engine/cache/victims.cache.php b/engine/cache/victims.cache.php new file mode 100644 index 0000000..66e63d7 --- /dev/null +++ b/engine/cache/victims.cache.php @@ -0,0 +1 @@ +[{"name":"Znote","Deaths":"1"},{"name":"Testing","Deaths":"1"}] \ No newline at end of file diff --git a/engine/database/connect.php b/engine/database/connect.php new file mode 100644 index 0000000..bede779 --- /dev/null +++ b/engine/database/connect.php @@ -0,0 +1,230 @@ +Install: +
    +
  1. +

    + Make sure you have imported TFS database. (OTdir/forgottenserver.sql OR OTdir/schemas/mysql.sql) +

    +
  2. +
  3. + Import the below schema to a TFS database in phpmyadmin:
    + +
  4. +
  5. +

    + Edit config.php with correct mysql connection details. +

    +
  6. +
+"; + +mysql_connect($config['sqlHost'], $config['sqlUser'], $config['sqlPassword']) or die('

Failed to connect to database.

'. $install); +mysql_select_db($config['sqlDatabase']) or die('

Connection accepted but failed to find configured database name.

'. $install); + +// Select single row from database +function mysql_select_single($query) { + $result = mysql_query($query) or die(var_dump($query)."
(query - SQL error)
Type: select_single (select single row from database)

".mysql_error()); + $row = mysql_fetch_assoc($result); + return !empty($row) ? $row : false; +} + +// Selecting multiple rows from database. +function mysql_select_multi($query){ + $array = array(); + $results = mysql_query($query) or die(var_dump($query)."
(query - SQL error)
Type: select_multi (select multiple rows from database)

".mysql_error()); + while($row = mysql_fetch_assoc($results)) { + $array[] = $row; + } + return !empty($array) ? $array : false; +} + +////// +// Query database without expecting returned results + +// - mysql update +function mysql_update($query){ voidQuery($query); } +// mysql insert +function mysql_insert($query){ voidQuery($query); } +// mysql delete +function mysql_delete($query){ voidQuery($query); } +// Send a void query +function voidQuery($query) { + mysql_query($query) or die(var_dump($query)."
(query - SQL error)
Type: voidQuery (voidQuery is used for update, insert or delete from database)

".mysql_error()); +} +?> \ No newline at end of file diff --git a/engine/footer.php b/engine/footer.php new file mode 100644 index 0000000..6cefc6c --- /dev/null +++ b/engine/footer.php @@ -0,0 +1,11 @@ +
+ © Znote AAC. + +
\ No newline at end of file diff --git a/engine/function/cache.php b/engine/function/cache.php new file mode 100644 index 0000000..99a4394 --- /dev/null +++ b/engine/function/cache.php @@ -0,0 +1,122 @@ +_file = $file . self::EXT; + $this->setExpiration(config('cache_lifespan')); + } + + + /** + * Sets the cache expiration limit (IMPORTANT NOTE: seconds, NOT ms!). + * + * @param integer $span + * @access public + * @return void + **/ + public function setExpiration($span) { + $this->_lifespan = $span; + } + + + /** + * Set the content you'd like to cache. + * + * @param mixed $content + * @access public + * @return void + **/ + public function setContent($content) { + switch (strtolower(gettype($content))) { + case 'array': + $this->_content = json_encode($content); + break; + + default: + $this->_content = $content; + break; + } + } + + + /** + * Validates whether it is time to refresh the cache data or not. + * + * @access public + * @return boolean + **/ + public function hasExpired() { + if (is_file($this->_file) && time() < filemtime($this->_file) + $this->_lifespan) { + return false; + } + + return true; + } + + /** + * Returns remaining time before scoreboard will update itself. + * + * @access public + * @return integer + **/ + public function remainingTime() { + $remaining = 0; + if (!$this->hasExpired()) { + $remaining = (filemtime($this->_file) + $this->_lifespan) - time(); + } + return $remaining; + } + + + /** + * Saves the content into its appropriate cache file. + * + * @access public + * @return void + **/ + public function save() { + $handle = fopen($this->_file, 'w'); + fwrite($handle, $this->_content); + fclose($handle); + } + + + /** + * Loads the content from a specified cache file. + * + * @access public + * @return mixed + **/ + public function load() { + if (!is_file($this->_file)) { + return false; + } + + ob_start(); + include_once($this->_file); + $content = ob_get_clean(); + + if (!isset($content) && strlen($content) == 0) { + return false; + } + + if ($content = json_decode($content, true)) { + return (array) $content; + } else { + return $content; + } + } + } diff --git a/engine/function/general.php b/engine/function/general.php new file mode 100644 index 0000000..51d8936 --- /dev/null +++ b/engine/function/general.php @@ -0,0 +1,425 @@ + $getValue) { + if ($count > 0) $string .= '&'; + $string .= "{$getKey}={$getValue}"; + } + header("Location: {$location}?{$string}"); + exit(); +} + +// Sweet error reporting +function data_dump($print = false, $var = false, $title = false) { + if ($title !== false) echo "
$title
"; + else echo '
';
+	if ($print !== false) {
+		echo 'Print: - ';
+		print_r($print);
+		echo "
"; + } + if ($var !== false) { + echo 'Var_dump: - '; + var_dump($var); + } + echo '

'; +} + +function accountAccess($accountId, $TFS) { + $accountId = (int)$accountId; + $access = 0; + + // TFS 0.3/4 + $yourChars = mysql_select_multi("SELECT `name`, `group_id`, `account_id` FROM `players` WHERE `account_id`='$accountId';"); + if ($yourChars !== false) { + foreach ($yourChars as $char) { + if ($TFS === 'TFS_03') { + if ($char['group_id'] > $access) $access = $char['group_id']; + } else { + if ($char['group_id'] > 1) { + if ($access == 0) { + $acc = mysql_select_single("SELECT `type` FROM `accounts` WHERE `id`='". $char['account_id'] ."' LIMIT 1;"); + $access = $acc['type']; + } + } + } + } + if ($access == 0) $access++; + return $access; + } else return false; + // +} +// Generate recovery key +function generate_recovery_key($lenght) { + $lenght = (int)$lenght; + $tmp = rand(1000, 9000); + $tmp += time(); + $tmp = sha1($tmp); + + $results = ''; + for ($i = 0; $i < $lenght; $i++) $results = $results.''.$tmp[$i]; + + return $results; +} + +// Calculate discount +function calculate_discount($orig, $new) { + $orig = (int)$orig; + $new = (int)$new; + + $tmp = ''; + if ($new >= $orig) { + if ($new != $orig) { + $calc = ($new/$orig) - 1; + $calc *= 100; + $tmp = '+'. $calc .'%'; + } else $tmp = '0%'; + } else { + $calc = 1 - ($new/$orig); + $calc *= 100; + $tmp = '-'. $calc .'%'; + } + return $tmp; +} + +// Proper URLs +function url($path = false) { + $protocol = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://'; + $domain = $_SERVER['SERVER_NAME'] . ($_SERVER['SERVER_PORT'] != 80 ? ':' . $_SERVER['SERVER_PORT'] : null); + $folder = dirname($_SERVER['SCRIPT_NAME']); + + return $protocol . $domain . $folder . '/' . $path; +} + +// Get last cached +function getCache() { + return mysql_result(mysql_query("SELECT `cached` FROM `znote`;"), 0, 'cached'); +} + +function setCache($time) { + $time = (int)$time; + mysql_query("UPDATE `znote` set `cached`='$time'"); +} + +// Get visitor basic data +function znote_visitors_get_data() { + // select + $result = mysql_query("SELECT `ip`, `value` FROM `znote_visitors`"); + while ($row = mysql_fetch_assoc($result)) { + $data[] = $row; + } + if (isset($data)) return $data; + else return false; +} + +// Set visitor basic data +function znote_visitor_set_data($visitor_data) { + $exist = false; + $ip = ip2long(getIP()); + + foreach ((array)$visitor_data as $row) { + if ($ip == $row['ip']) { + $exist = true; + $value = $row['value']; + } + } + + if ($exist && isset($value)) { + // Update the value + $value++; + mysql_query("UPDATE `znote_visitors` SET `value` = '$value' WHERE `ip` = '$ip'") or die(mysql_error()); + } else { + // Insert new row + mysql_query("INSERT INTO `znote_visitors` (`ip`, `value`) VALUES ('$ip', '1')") or die(mysql_error()); + } +} + +// Get visitor basic data +function znote_visitors_get_detailed_data($cache_time) { + $period = (int)time() - (int)$cache_time; + // select + $result = mysql_query("SELECT `ip`, `time`, `type`, `account_id` FROM `znote_visitors_details` WHERE `time` >= '$period' LIMIT 0, 50"); + while ($row = mysql_fetch_assoc($result)) { + $data[] = $row; + } + if (isset($data)) return $data; + else return false; +} + +function znote_visitor_insert_detailed_data($type) { + $type = (int)$type; + /* + type 0 = normal visits + type 1 = register form + type 2 = character creation + type 3 = fetch highscores + type 4 = search character + */ + $time = time(); + $ip = ip2long(getIP()); + if (user_logged_in() === true) { + $acc = $_SESSION['user_id']; + mysql_query("INSERT INTO `znote_visitors_details` (`ip`, `time`, `type`, `account_id`) VALUES ('$ip', '$time', '$type', '$acc')") or die(mysql_error()); + } else mysql_query("INSERT INTO `znote_visitors_details` (`ip`, `time`, `type`, `account_id`) VALUES ('$ip', '$time', '$type', '0')") or die(mysql_error()); +} + +function something () { + // Make acc data compatible: + $ip = ip2long(getIP()); +} + +// Secret token +function create_token() { + echo 'Checking whether to create token or not
'; + #if (empty($_SESSION['token'])) { + echo 'Creating token
'; + $token = sha1(uniqid(time(), true)); + $token2 = $token; + var_dump($token, $token2); + $_SESSION['token'] = $token2; + #} + + echo ""; +} +function reset_token() { + echo 'Reseting token
'; + unset($_SESSION['token']); +} + +// Time based functions +// 60 seconds to 1 minute +function second_to_minute($seconds) { + return ($seconds / 60); +} + +// 1 minute to 60 seconds +function minute_to_seconds($minutes) { + return ($minutes * 60); +} + +// 60 minutes to 1 hour +function minute_to_hour($minutes) { + return ($minutes / 60); +} + +// 1 hour to 60 minutes +function hour_to_minute($hours) { + return ($hour * 60); +} + +// seconds / 60 / 60 = hours. +function seconds_to_hours($seconds) { + $minutes = second_to_minute($seconds); + $hours = minute_to_hour($minutes); + return $hours; +} + +function remaining_seconds_to_clock($seconds) { + return date("(H:i)",time() + $seconds); +} + +// Returns false if name contains more than configured max words, returns name otherwise. +function validate_name($string) { + //edit: make sure only one space separates words: + //(found this regex through a search and havent tested it) + $string = preg_replace("/\\s+/", " ", $string); + + //trim off beginning and end spaces; + $string = trim($string); + + //get an array of the words + $wordArray = explode(" ", $string); + + //get the word count + $wordCount = sizeof($wordArray); + + //see if its too big + if($wordCount > config('maxW')) { + return false; + } else { + return $string; + } +} + +// Checks if an IPv4 address is valid +function validate_ip($ip) { + $ipL = ip2long($ip); + $ipR = long2ip($ipL); + + if ($ip === $ipR) { + return true; + } else { + return false; + } +} + +// Fetch a config value. Etc config('vocations') will return vocation array from config.php. +function config($value) { + global $config; + return $config[$value]; +} + +// Some functions uses several configurations from config.php, so it sounds +// smarter to give them the whole array instead of calling the function all the time. +function fullConfig() { + global $config; + return $config; +} + +// Capitalize Every Word In String. +function format_character_name($name) { + return ucwords(strtolower($name)); +} + +// Returns a list of players online +function online_list() { + if (config('TFSVersion') == 'TFS_10') return mysql_select_multi("SELECT `o`.`player_id` AS `id`, `p`.`name` as `name`, `p`.`level` as `level`, `p`.`vocation` as `vocation` FROM `players_online` as `o` INNER JOIN `players` as `p` ON o.player_id = p.id"); + else return mysql_select_multi("SELECT `name`, `level`, `vocation` FROM `players` WHERE `online`='1' ORDER BY `name` DESC;"); +} + +// Gets you the actual IP address even from users behind ISP proxies and so on. +function getIP() { + /* + $IP = ''; + if (getenv('HTTP_CLIENT_IP')) { + $IP =getenv('HTTP_CLIENT_IP'); + } elseif (getenv('HTTP_X_FORWARDED_FOR')) { + $IP =getenv('HTTP_X_FORWARDED_FOR'); + } elseif (getenv('HTTP_X_FORWARDED')) { + $IP =getenv('HTTP_X_FORWARDED'); + } elseif (getenv('HTTP_FORWARDED_FOR')) { + $IP =getenv('HTTP_FORWARDED_FOR'); + } elseif (getenv('HTTP_FORWARDED')) { + $IP = getenv('HTTP_FORWARDED'); + } else { + $IP = $_SERVER['REMOTE_ADDR']; + } */ +return $_SERVER['REMOTE_ADDR']; +} + +function array_length($ar) { + $r = 1; + foreach($ar as $a) { + $r++; + } + return $r; +} +// Parameter: level, returns experience for that level from an experience table. +function level_to_experience($level) { + + // Generated experience table. Currently up to level 200. + $experience = array (1 => 0, 2 => 100, 3 => 200, 4 => 400, 5 => 800, 6 => 1500, 7 => 2600, 8 => 4200, 9 => 6400, 10 => 9300, 11 => 13000, 12 => 17600, 13 => 23200, 14 => 29900, 15 => 37800, 16 => 47000, 17 => 57600, 18 => 69700, 19 => 83400, 20 => 98800, 21 => 116000, 22 => 135100, 23 => 156200, 24 => 179400, 25 => 204800, 26 => 232500, 27 => 262600, 28 => 295200, 29 => 330400, 30 => 368300, 31 => 409000, 32 => 452600, 33 => 499200, 34 => 548900, 35 => 601800, 36 => 658000, 37 => 717600, 38 => 780700, 39 => 847400, 40 => 917800, 41 => 992000, 42 => 1070100, 43 => 1152200, 44 => 1238400, 45 => 1328800, 46 => 1423500, 47 => 1522600, 48 => 1626200, 49 => 1734400, 50 => 1847300, 51 => 1965000, 52 => 2087600, 53 => 2215200, 54 => 2347900, 55 => 2485800, 56 => 2629000, 57 => 2777600, 58 => 2931700, 59 => 3091400, 60 => 3256800, 61 => 3428000, 62 => 3605100, 63 => 3788200, 64 => 3977400, 65 => 4172800, 66 => 4374500, 67 => 4582600, 68 => 4797200, 69 => 5018400, 70 => 5246300, 71 => 5481000, 72 => 5722600, 73 => 5971200, 74 => 6226900, 75 => 6489800, 76 => 6760000, 77 => 7037600, 78 => 7322700, 79 => 7615400, 80 => 7915800, 81 => 8224000, 82 => 8540100, 83 => 8864200, 84 => 9196400, 85 => 9536800, 86 => 9885500, 87 => 10242600, 88 => 10608200, 89 => 10982400, 90 => 11365300, 91 => 11757000, 92 => 12157600, 93 => 12567200, 94 => 12985900, 95 => 13413800, 96 => 13851000, 97 => 14297600, 98 => 14753700, 99 => 15219400, 100 => 15694800, 101 => 16180000, 102 => 16675100, 103 => 17180200, 104 => 17695400, 105 => 18220800, 106 => 18756500, 107 => 19302600, 108 => 19859200, 109 => 20426400, 110 => 21004300, 111 => 21593000, 112 => 22192600, 113 => 22803200, 114 => 23424900, 115 => 24057800, 116 => 24702000, 117 => 25357600, 118 => 26024700, 119 => 26703400, 120 => 27393800, 121 => 28096000, 122 => 28810100, 123 => 29536200, 124 => 30274400, 125 => 31024800, 126 => 31787500, 127 => 32562600, 128 => 33350200, 129 => 34150400, 130 => 34963300, 131 => 35789000, 132 => 36627600, 133 => 37479200, 134 => 38343900, 135 => 39221800, 136 => 40113000, 137 => 41017600, 138 => 41935700, 139 => 42867400, 140 => 43812800, 141 => 44772000, 142 => 45745100, 143 => 46732200, 144 => 47733400, 145 => 48748800, 146 => 49778500, 147 => 50822600, 148 => 51881200, 149 => 52954400, 150 => 54042300, 151 => 55145000, 152 => 56262600, 153 => 57395200, 154 => 58542900, 155 => 59705800, 156 => 60884000, 157 => 62077600, 158 => 63286700, 159 => 64511400, 160 => 65751800, 161 => 67008000, 162 => 68280100, 163 => 69568200, 164 => 70872400, 165 => 72192800, 166 => 73529500, 167 => 74882600, 168 => 76252200, 169 => 77638400, 170 => 79041300, 171 => 80461000, 172 => 81897600, 173 => 83351200, 174 => 84821900, 175 => 86309800, 176 => 87815000, 177 => 89337600, 178 => 90877700, 179 => 92435400, 180 => 94010800, 181 => 95604000, 182 => 97215100, 183 => 98844200, 184 => 100491400, 185 => 102156800, 186 => 103840500, 187 => 105542600, 188 => 107263200, 189 => 109002400, 190 => 110760300, 191 => 112537000, 192 => 114332600, 193 => 116147200, 194 => 117980900, 195 => 119833800, 196 => 121706000, 197 => 123597600, 198 => 125508700, 199 => 127439400, 200 => 129389800); + + return ($level > 0 && $level <= 200) ? $experience[$level] : false; +} + +// Parameter: players.hide_char returns: Status word inside a font with class identifier so it can be designed later on by CSS. +function hide_char_to_name($id) { + $id = (int)$id; + if ($id == 1) { + return 'hidden'; + } else { + return 'visible'; + } +} + +// Parameter: players.online returns: Status word inside a font with class identifier so it can be designed later on by CSS. +function online_id_to_name($id) { + $id = (int)$id; + if ($id == 1) { + return 'ONLINE'; + } else { + return 'offline'; + } +} + +// Parameter: players.vocation_id. Returns: Configured vocation name. +function vocation_id_to_name($id) { + $vocations = config('vocations'); + + return ($vocations[$id] >= 0) ? $vocations[$id] : false; +} + +function gender_exist($gender) { + // Range of allowed gender ids, fromid toid + if ($gender >= 0 && $gender <= 1) { + return true; + } else { + return false; + } +} + +function skillid_to_name($skillid) { + $skillname = array( + 0 => 'fist fighting', + 1 => 'club fighting', + 2 => 'sword fighting', + 3 => 'axe fighting', + 4 => 'distance fighting', + 5 => 'shielding', + 6 => 'fishing', + 7 => 'experience', // Hardcoded, does not actually exist in database as a skillid. + 8 => 'magic level' // Hardcoded, does not actually exist in database as a skillid. + ); + + return ($skillname[$skillid] >= 0) ? $skillname[$skillid] : false; +} + +// Parameter: players.town_id. Returns: Configured town name. +function town_id_to_name($id) { + $towns = config('towns'); + + return (array_key_exists($id, $towns)) ? $towns[$id] : 'Missing Town'; +} + +// Unless you have an internal mail server then mail sending will not be supported in this version. +function email($to, $subject, $body) { + mail($to, $subject, $body, 'From: TEST'); +} + +function logged_in_redirect() { + if (user_logged_in() === true) { + header('Location: myaccount.php'); + } +} + +function protect_page() { + if (user_logged_in() === false) { + header('Location: protected.php'); + exit(); + } +} + +// When function is called, you will be redirected to protect_page and deny access to rest of page, as long as you are not admin. +function admin_only($user_data) { + // Chris way + $gotAccess = is_admin($user_data); + + if ($gotAccess == false) { + logged_in_redirect(); + exit(); + } +} + +function is_admin($user_data) { + return in_array($user_data['name'], config('page_admin_access')) ? true : false; +} + +function array_sanitize(&$item) { + $item = htmlentities(strip_tags(mysql_real_escape_string($item))); +} + +function sanitize($data) { + return htmlentities(strip_tags(mysql_real_escape_string($data))); +} + +function output_errors($errors) { + return '
  • '. implode('
  • ', $errors) .'
'; +} +?> \ No newline at end of file diff --git a/engine/function/token.php b/engine/function/token.php new file mode 100644 index 0000000..d1cbd01 --- /dev/null +++ b/engine/function/token.php @@ -0,0 +1,89 @@ +'; + } + + + /** + * Returns the active token, if there is one. + * + * @access public + * @static true + * @return mixed + **/ + public static function get() { + return isset($_SESSION['token']) ? $_SESSION['token'] : false; + } + + + /** + * Validates whether the active token is valid or not. + * + * @param string $post + * @access public + * @static true + * @return boolean + **/ + public static function isValid($post) { + if (config('use_token')) { + // Token doesn't exist yet, return false. + if (!self::get()) { + return false; + } + + // Token was invalid, return false. + if ($post == $_SESSION['old_token'] || $post == $_SESSION['token']) { + //self::_reset(); + return true; + } else { + return false; + } + } else { + return true; + } + } + + + /** + * Destroys the active token. + * + * @access protected + * @static true + * @return void + **/ + protected static function _reset() { + unset($_SESSION['token']); + } + + + /** + * Displays information on both the post token and the session token. + * + * @param string $post + * @access public + * @static true + * @return void + **/ + public static function debug($post) { + echo '
', var_dump(array(
+				'post' => $post, 
+				'old_token' => $_SESSION['old_token'],
+				'token' => self::get()
+			)), '
'; + } + } +?> \ No newline at end of file diff --git a/engine/function/users.php b/engine/function/users.php new file mode 100644 index 0000000..20d4501 --- /dev/null +++ b/engine/function/users.php @@ -0,0 +1,1513 @@ + 1 ORDER BY `group_id` ASC;"); + else $staffs = mysql_select_multi("SELECT `group_id`, `name`, `online`, `account_id` FROM `players` WHERE `group_id` > 1 ORDER BY `group_id` ASC;"); + for ($i = 0; $i < count($staffs); $i++) { + // $staffs[$i][''] + if ($TFS == 'TFS_02' || $TFS == 'TFS_10') { + $account = mysql_select_single("SELECT `type` FROM `accounts` WHERE `id` ='". $staffs[$i]['account_id'] ."';"); + $staffs[$i]['group_id'] = $account['type']; + if ($TFS == 'TFS_10') { + // Fix online status on TFS 1.0 + if (user_is_online_10($staffs[$i]['id'])) $staffs[$i]['online'] = 1; + else $staffs[$i]['online'] = 0; + unset($staffs[$i]['id']); + } + } + unset($staffs[$i]['account_id']); + } + return $staffs; +} + +// NEWS +function fetchAllNews() { + $query = mysql_query("SELECT * FROM `znote_news` ORDER BY `id` DESC;"); + $array = array(); + while($row = mysql_fetch_assoc($query)) { + $data = user_character_data($row['pid'], 'name'); + $row['name'] = $data['name']; + unset($row['pid']); + $array[] = $row; + } + return !empty($array) ? $array : false; +} + +// HOUSES +function fetchAllHouses_03() { + $query = mysql_query("SELECT * FROM `houses`;") or die("ERROR"); + $array = array(); + while($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + return !empty($array) ? $array : false; +} + +// TFS Storage value functions (Warning, I think these things are saved in cache, +// and thus require server to be offline, or affected players to be offline while using) + +// Get player storage list +function getPlayerStorageList($storage, $minValue) { + $minValue = (int)$minValue; + $storage = (int)$storage; + $query = mysql_query("SELECT `player_id`, `value` FROM `player_storage` WHERE `key`='$storage' AND `value`>='$minValue' ORDER BY `value` DESC;"); + $array = array(); + while($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + return !empty($array) ? $array : false; +} + +// Get global storage value +function getGlobalStorage($storage) { + $storage = (int)$storage; + $query = mysql_query("SELECT `value` FROM `global_storage` WHERE `key`='$storage';"); + $row = mysql_fetch_assoc($query); + return !empty($row) ? $row['value'] : false; +} + +// Set global storage value +function setGlobalStorage($storage, $value) { + $storage = (int)$storage; + $value = (int)$value; + + // If the storage does not exist yet + if (getGlobalStorage($storage) === false) { + mysql_query("INSERT INTO `global_storage` (`key`, `world_id`, `value`) VALUES ('$storage', 0, '$value')") or die(mysql_error()); + } else {// If the storage exist + mysql_query("UPDATE `global_storage` SET `value`='$value' WHERE `key`='$storage'") or die(mysql_error()); + } +} + +// Get player storage value. +function getPlayerStorage($player_id, $storage, $online = false) { + if ($online) $online = user_is_online($player_id); + if (!$online) { + // user is offline (false), we may safely proceed: + $player_id = (int)$player_id; + $storage = (int)$storage; + $query = mysql_query("SELECT `value` FROM `player_storage` WHERE `key`='$storage' AND `player_id`='$player_id';"); + $row = mysql_fetch_assoc($query); + return !empty($row) ? $row['value'] : false; + } else return false; +} + +// Set player storage value +function setPlayerStorage($player_id, $storage, $value) { + $storage = (int)$storage; + $value = (int)$value; + $player_id = (int)$player_id; + + // If the storage does not exist yet + if (getPlayerStorage($storage) === false) { + mysql_query("INSERT INTO `player_storage` (`player_id`, `key`, `value`) VALUES ('$player_id', '$storage', '$value')") or die(mysql_error()); + } else {// If the storage exist + mysql_query("UPDATE `player_storage` SET `value`='$value' WHERE `key`='$storage' AND `player_id`='$player_id'") or die(mysql_error()); + } +} + +// Is player online +function user_is_online($player_id) { + $status = user_character_data($player_id, 'online'); + if ($status !== false) { + if ($status['online'] == 1) $status = true; + else $status = false; + } + return $status; +} +// For TFS 1.0 +function user_is_online_10($player_id) { + $player_id = (int)$player_id; + $status = mysql_select_single("SELECT `player_id` FROM `players_online` WHERE `player_id`='$player_id' LIMIT 1;"); + return !$status ? $status : true; +} + +// Shop +// Gets a list of tickets and ticket ids +function shop_delete_row_order($rowid) { + $rowid = (int)$rowid; + mysql_query("DELETE FROM `znote_shop_orders` WHERE `id`='$rowid';") or die(mysql_error()); +} + +function shop_update_row_count($rowid, $count) { + $rowid = (int)$rowid; + $count = (int)$count; + mysql_query("UPDATE `znote_shop_orders` SET `count`='$count' WHERE `id`='$rowid'") or die(mysql_error()); +} + +function shop_account_gender_tickets($accid) { + $accid = (int)$accid; + $query = mysql_query("SELECT `id`, `count` FROM `znote_shop_orders` WHERE `account_id`='$accid' AND `type`='3';"); + $array = array(); + while($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + return !empty($array) ? $array : false; +} + +// GUILDS +// +function guild_remove_member($cid) { + $cid = (int)$cid; + mysql_query("UPDATE `players` SET `rank_id`='0' WHERE `id`=$cid") or die(mysql_error()); +} + +// Change guild rank name. +function guild_change_rank($rid, $name) { + $rid = (int)$rid; + $name = sanitize($name); + + mysql_query("UPDATE `guild_ranks` SET `name`='$name' WHERE `id`=$rid") or die(mysql_error()); +} + +// Change guild leader (parameters: cid, new and old leader). +function guild_change_leader($nCid, $oCid) { + $nCid = (int)$nCid; + $oCid = (int)$oCid; + $gid = guild_leader_gid($oCid); + $ranks = get_guild_rank_data($gid); + + $leader_rid = 0; + $vice_rid = 0; + + + // Get rank id for leader and vice leader. + foreach ($ranks as $rank) { + if ($rank['level'] == 3) $leader_rid = $rank['id']; + if ($rank['level'] == 2) $vice_rid = $rank['id']; + } + + $status = false; + if ($leader_rid > 0 && $vice_rid > 0) $status = true; + + // Verify that we found the rank ids for vice leader and leader. + if ($status) { + // Update players and set their new rank id + mysql_query("UPDATE `players` SET `rank_id`='$leader_rid' WHERE `id`=$nCid") or die(mysql_error()); + mysql_query("UPDATE `players` SET `rank_id`='$vice_rid' WHERE `id`=$oCid") or die(mysql_error()); + + // Update guilds set new ownerid + guild_new_leader($nCid, $gid); + } + + return $status; +} + +// Changes leadership of aguild to player_id +function guild_new_leader($new_leader, $gid) { + $new_leader = (int)$new_leader; + $gid = (int)$gid; + mysql_query("UPDATE `guilds` SET `ownerid`='$new_leader' WHERE `id`=$gid") or die(mysql_error()); +} + +// Returns $gid of a guild leader($cid). +function guild_leader_gid($leader) { + $leader = (int)$leader; + $query = mysql_query("SELECT `id` FROM `guilds` WHERE `ownerid`='$leader';"); + $row = mysql_fetch_assoc($query); + return !empty($row) ? $row['id'] : false; +} + +// Returns guild leader(charID) of a guild. (parameter: guild_ID) +function guild_leader($gid) { + $gid = (int)$gid; + return mysql_result(mysql_query("SELECT `ownerid` FROM `guilds` WHERE `id`='$gid';"), 0, 'ownerid'); +} + +// Disband guild +function guild_remove_invites($gid) { + $gid = (int)$gid; + mysql_query("DELETE FROM `guild_invites` WHERE `guild_id`='$gid';"); +} + +// Remove guild invites +function guild_delete($gid) { + $gid = (int)$gid; + mysql_query("DELETE FROM `guilds` WHERE `id`='$gid';"); +} + +// Player leave guild +function guild_player_leave($cid) { + $cid = (int)$cid; + mysql_query("UPDATE `players` SET `rank_id`='0' WHERE `id`=$cid"); +} + +// Player join guild +function guild_player_join($cid, $gid) { + // Get rank data + $ranks = get_guild_rank_data($gid); + + // Locate rank id for regular member position in this guild + $rid = false; + foreach ($ranks as $rank) { + if ($rank['level'] == 1) $rid = $rank['id']; + } + + // Sanitize cid + $cid = (int)$cid; + + // Create a status we can return depending on results. + $status = false; + + // Add to guild if rank id was found: + if ($rid != false) { + // Remove the invite: + guild_remove_invitation($cid, $gid); + + // Add to guild: + mysql_query("UPDATE `players` SET `rank_id`='$rid' WHERE `id`=$cid") or die(mysql_error()); + $status = true; + } + + return $status; +} + +// Remove cid invitation from guild (gid) +function guild_remove_invitation($cid, $gid) { + $cid = (int)$cid; + $gid = (int)$gid; + mysql_query("DELETE FROM `guild_invites` WHERE `player_id`='$cid' AND `guild_id`='$gid';"); +} + +// Invite character to guild +function guild_invite_player($cid, $gid) { + $cid = (int)$cid; + $gid = (int)$gid; + mysql_query("INSERT INTO `guild_invites` (`player_id`, `guild_id`) VALUES ('$cid', '$gid')") or die(mysql_error()); +} + +// Gets a list of invited players to a particular guild. +function guild_invite_list($gid) { + $gid = (int)$gid; + $query = mysql_query("SELECT `player_id`, `guild_id` FROM `guild_invites` WHERE `guild_id`='$gid'"); + $array = array(); + while($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + return !empty($array) ? $array : false; +} + +// Update player's guild position +function update_player_guild_position($cid, $rid) { + $cid = (int)$cid; + $rid = (int)$rid; + mysql_query("UPDATE `players` SET `rank_id`='$rid' WHERE `id`=$cid") or die(mysql_error()); +} + +// Get guild data, using guild id. +function get_guild_rank_data($gid) { + $gid = (int)$gid; + $query = mysql_query("SELECT `id`, `guild_id`, `name`, `level` FROM `guild_ranks` WHERE `guild_id`='$gid' ORDER BY `id` DESC LIMIT 0, 30"); + $array = array(); + while($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + return !empty($array) ? $array : false; +} + +// Creates a guild, where cid is the owner of the guild, and name is the name of guild. +function create_guild($cid, $name) { + $cid = (int)$cid; + $name = sanitize($name); + $time = time(); + + // Create the guild + mysql_query("INSERT INTO `guilds` (`name`, `ownerid`, `creationdata`, `motd`) VALUES ('$name', '$cid', '$time', 'The guild has been created!')") or die(mysql_error()); + echo '
Created guild.'; + // Get guild id + $gid = get_guild_id($name); + echo '
Gotten guild id: '. $gid; + + // Get rank id for guild leader + $rid = mysql_result(mysql_query("SELECT `id` FROM `guild_ranks` WHERE `guild_id`='$gid' AND `level`='3';"), 0, 'id'); + echo '
Gotten rank id: '. $rid; + + // Give player rank id for leader of his guild + mysql_query("UPDATE `players` SET `rank_id`='$rid' WHERE `id`=$cid") or die(mysql_error()); + echo '
Player uodated'; +} + +// Search player table on cid for his rank_id, returns rank_id +function get_character_guild_rank($cid) { + $cid = (int)$cid; + $rid = mysql_result(mysql_query("SELECT `rank_id` FROM `players` WHERE `id`='$cid';"), 0, 'rank_id'); + if ($rid > 0) return $rid; + else return false; +} + +// Get a player guild rank, using his rank_id +function get_player_guild_rank($rank_id) { + $rank_id = (int)$rank_id; + return mysql_result(mysql_query("SELECT `name` FROM `guild_ranks` WHERE `id`=$rank_id;"), 0, 'name'); +} + +// Get a player guild position ID, using his rank_id +function get_guild_position($rid) { + $rid = (int)$rid; + return mysql_result(mysql_query("SELECT `level` FROM `guild_ranks` WHERE `id`=$rid;"), 0, 'level'); +} + +// Get a players rank_id, guild_id, rank_level(ID), rank_name(string), using cid(player id) +function get_player_guild_data($cid) { + $cid = (int)$cid; + $rid = mysql_result(mysql_query("SELECT `rank_id` FROM `players` WHERE `id`='$cid';"), 0, 'rank_id'); + $gid = mysql_result(mysql_query("SELECT `guild_id` FROM `guild_ranks` WHERE `id`=$rid;"), 0, 'guild_id'); + $rl = mysql_result(mysql_query("SELECT `level` FROM `guild_ranks` WHERE `id`=$rid;"), 0, 'level'); + $rn = mysql_result(mysql_query("SELECT `name` FROM `guild_ranks` WHERE `id`=$rid;"), 0, 'name'); + $data = array( + 'rank_id' => $rid, + 'guild_id' => $gid, + 'rank_level' => $rl, + 'rank_name' => $rn, + ); + return $data; +} + +// Returns guild name of guild id +function get_guild_name($gid) { + $gid = (int)$gid; + $guild = mysql_select_single("SELECT `name` FROM `guilds` WHERE `id`=$gid LIMIT 1;"); + if ($guild !== false) return $guild['name']; + else return false; +} + +// Returns guild id from name +function get_guild_id($name) { + $name = sanitize($name); + $query = mysql_query("SELECT `id` FROM `guilds` WHERE `name`='$name';"); + $row = mysql_fetch_assoc($query); + + return !empty($row) ? $row['id'] : false; +} + +// Get complete list of guilds +function get_guilds_list() { + $query = mysql_query("SELECT `id`, `name`, `creationdata` FROM `guilds` ORDER BY `name`;"); + $array = array(); + while($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + return !empty($array) ? $array : false; +} + +// Get array of player data related to a guild. +function get_guild_players($gid) { + $gid = (int)$gid; // Sanitizing the parameter id + $query = mysql_query("SELECT p.rank_id, p.name, p.level, p.vocation FROM players AS p LEFT JOIN guild_ranks AS gr ON gr.id = p.rank_id WHERE gr.guild_id =$gid"); + $array = array(); + while ($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + + return !empty($array) ? $array : false; +} + +// Returns total members in a guild (integer) +function count_guild_members($gid) { + $gid = (int)$gid; + return mysql_result(mysql_query("SELECT COUNT(p.id) AS total FROM players AS p LEFT JOIN guild_ranks AS gr ON gr.id = p.rank_id WHERE gr.guild_id =$gid"), 0, 'total'); +} + +// +// GUILD WAR +// +// Returns guild war entry for id +function get_guild_war($warid) { + $warid = (int)$warid; // Sanitizing the parameter id + $query = mysql_query("SELECT `id`, `guild1`, `guild2`, `name1`, `name2`, `status`, `started`, `ended` FROM `guild_wars` WHERE `id`=$warid ORDER BY `started`;"); + $row = mysql_fetch_assoc($query); + + return !empty($row) ? $row : false; +} + +// TFS 0.3 compatibility +function get_guild_war03($warid) { + $warid = (int)$warid; // Sanitizing the parameter id + $query = mysql_query("SELECT `id`, `guild_id`, `enemy_id`, `status`, `begin`, `end` FROM `guild_wars` ORDER BY `begin` DESC LIMIT 0, 30"); + $row = mysql_fetch_assoc($query); + + if (!empty($row)) { + $row['guild1'] = $row['guild_id']; + $row['guild2'] = $row['enemy_id']; + $row['name1'] = get_guild_name($row['guild_id']); + $row['name2'] = get_guild_name($row['enemy_id']); + $row['started'] = $row['begin']; + $row['ended'] = $row['end']; + } + + return !empty($row) ? $row : false; +} + +// List all war entries +function get_guild_wars() { + return mysql_select_multi("SELECT `id`, `guild1`, `guild2`, `name1`, `name2`, `status`, `started`, `ended` FROM `guild_wars` ORDER BY `started` DESC LIMIT 0, 30"); +} + +/* TFS 0.3 compatibility +function get_guild_wars03() { + $query = mysql_query("SELECT `id`, `guild_id`, `enemy_id`, `status`, `begin`, `end` FROM `guild_wars` ORDER BY `begin` DESC LIMIT 0, 30"); + $array = array(); + while($row = mysql_fetch_assoc($query)) { + // Generating TFS 0.2 key values for this 0.3 query for web cross compatibility + $row['guild1'] = $row['guild_id']; + $row['guild2'] = $row['enemy_id']; + $row['name1'] = get_guild_name($row['guild_id']); + $row['name2'] = get_guild_name($row['enemy_id']); + $row['started'] = $row['begin']; + $row['ended'] = $row['end']; + $array[] = $row; + } + return !empty($array) ? $array : false; +}*/ + +// Untested. (TFS 0.3 compatibility) +function get_guild_wars03() { + $array = mysql_select_multi("SELECT `id`, `guild_id`, `enemy_id`, `status`, `begin`, `end` FROM `guild_wars` ORDER BY `begin` DESC LIMIT 0, 30"); + if ($array !== false) { + for ($i = 0; $i < count($array); $i++) { + // Generating TFS 0.2 key values for this 0.3 query for web cross compatibility + $array[$i]['guild1'] = $array[$i]['guild_id']; + $array[$i]['guild2'] = $array[$i]['enemy_id']; + $array[$i]['name1'] = get_guild_name($array[$i]['guild_id']); + $array[$i]['name2'] = get_guild_name($array[$i]['enemy_id']); + $array[$i]['started'] = $array[$i]['begin']; + $array[$i]['ended'] = $array[$i]['end']; + } + } + return $array; +} + +// List kill activity in wars. +function get_war_kills($war_id) { + $war_id = (int)$war_id;// Sanitize - verify its an integer. + + $query = mysql_query("SELECT `id`, `killer`, `target`, `killerguild`, `targetguild`, `warid`, `time` FROM `guildwar_kills` WHERE `warid`=$war_id ORDER BY `time` DESC LIMIT 0, 30") or die("02 q"); + $array = array(); + while($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + return !empty($array) ? $array : false; +} + +// TFS 0.3 compatibility +function get_war_kills03($war_id) { + $war_id = (int)$war_id;// Sanitize - verify its an integer. + + $query = mysql_query("SELECT `id`, `guild_id`, `war_id`, `death_id` FROM `guild_kills` WHERE `war_id`=$war_id ORDER BY `id` DESC LIMIT 0, 30") or die("03 q"); + $array = array(); + while($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + return !empty($array) ? $array : false; +} + +function get_death_data($did) { + $did = (int)$did; // Sanitizing the parameter id + $query = mysql_query("SELECT `id`, `guild_id`, `enemy_id`, `status`, `begin`, `end` FROM `guild_wars` ORDER BY `begin` DESC LIMIT 0, 30"); + $row = mysql_fetch_assoc($query); + + return !empty($row) ? $row : false; +} + +// Gesior compatibility port TFS .3 +function gesior_sql_death($warid) { + $warid = (int)$warid; // Sanitizing the parameter id + $query = mysql_query('SELECT `pd`.`id`, `pd`.`date`, `gk`.`guild_id` AS `enemy`, `p`.`name`, `pd`.`level` FROM `guild_kills` gk LEFT JOIN `player_deaths` pd ON `gk`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `gk`.`war_id` = ' . $warid . ' AND `p`.`deleted` = 0 ORDER BY `pd`.`date` DESC'); + while($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + return !empty($array) ? $array : false; +} +function gesior_sql_killer($did) { + $did = (int)$did; // Sanitizing the parameter id + $query = mysql_query('SELECT `p`.`name` AS `player_name`, `p`.`deleted` AS `player_exists`, `k`.`war` AS `is_war` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `p`.`id` = `pk`.`player_id` WHERE `k`.`death_id` = ' . $did . ' ORDER BY `k`.`final_hit` DESC, `k`.`id` ASC'); + while($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + return !empty($array) ? $array : false; +} +// end gesior +// END GUILD WAR +// ADMIN FUNCTIONS +function set_ingame_position($name, $acctype) { + $acctype = (int)$acctype; + $name = sanitize($name); + + $acc_id = user_character_account_id($name); + $char_id = user_character_id($name); + + $group_id = 2; + if ($acctype == 1) { + $group_id = 1; + } + mysql_query("UPDATE `accounts` SET `type` = '$acctype' WHERE `id` =$acc_id;"); + mysql_query("UPDATE `players` SET `group_id` = '$group_id' WHERE `id` =$char_id;"); +} + +// .3 +function set_ingame_position03($name, $acctype) { + $acctype = (int)$acctype; + $name = sanitize($name); + + $acc_id = user_character_account_id($name); + $char_id = user_character_id($name); + + $group_id = 2; + if ($acctype == 1) { + $group_id = 1; + } + mysql_query("UPDATE `players` SET `group_id` = '$acctype' WHERE `id` =$char_id;"); +} + +// Set rule violation. +// Return true if success, query error die if failed, and false if $config['website_char'] is not recognized. +function set_rule_violation($charname, $typeid, $actionid, $reasonid, $time, $comment) { + $charid = user_character_id($charname); + $typeid = (int)$typeid; + $actionid = (int)$actionid; + $reasonid = (int)$reasonid; + $time = (int)($time + time()); + + $data = user_character_data($charid, 'account_id', 'lastip'); + + $accountid = $data['account_id']; + $charip = $data['lastip']; + + $comment = sanitize($comment); + + // ... + $bannedby = config('website_char'); + if (user_character_exist($bannedby)) { + $bannedby = user_character_id($bannedby); + + if (Config('TFSVersion') === 'TFS_02') + mysql_query("INSERT INTO `bans` (`type` ,`ip` ,`mask` ,`player` ,`account` ,`time` ,`reason_id` ,`action_id` ,`comment` ,`banned_by`) VALUES ('$typeid', '$charip', '4294967295', '$charid', '$accountid', '$time', '$reasonid', '$actionid', '$comment', '$bannedby');") or die(mysql_error()); + if (Config('TFSVersion') === 'TFS_03') { + $now = time(); + switch ($typeid) { + case 1: // IP ban + mysql_query("INSERT INTO `bans` (`type`, `value`, `param`, `active`, `expires`, `added`, `admin_id`, `comment`) VALUES ('$typeid', '$charip', '4294967295', '1', '$time', '$now', '$bannedby', '$comment');") or die(mysql_error()); + break; + + case 2: // namelock + mysql_query("INSERT INTO `bans` (`type`, `value`, `param`, `active`, `expires`, `added`, `admin_id`, `comment`) VALUES ('$typeid', '$charid', '4294967295', '1', '$time', '$now', '$bannedby', '$comment');") or die(mysql_error()); + break; + + case 3: // acc ban + mysql_query("INSERT INTO `bans` (`type`, `value`, `param`, `active`, `expires`, `added`, `admin_id`, `comment`) VALUES ('$typeid', '$accountid', '4294967295', '1', '$time', '$now', '$bannedby', '$comment');") or die(mysql_error()); + break; + + case 4: // notation + mysql_query("INSERT INTO `bans` (`type`, `value`, `param`, `active`, `expires`, `added`, `admin_id`, `comment`) VALUES ('$typeid', '$charid', '4294967295', '1', '$time', '$now', '$bannedby', '$comment');") or die(mysql_error()); + break; + + case 5: // deletion + mysql_query("INSERT INTO `bans` (`type`, `value`, `param`, `active`, `expires`, `added`, `admin_id`, `comment`) VALUES ('$typeid', '$charid', '4294967295', '1', '$time', '$now', '$bannedby', '$comment');") or die(mysql_error()); + break; + } + + } + + return true; + } else { + return false; + } +} + +// -- END admin +// Fetch deathlist +function user_fetch_deathlist($char_id) { + $char_id = (int)$char_id; + return mysql_select_multi("SELECT * FROM `player_deaths` WHERE `player_id`='$char_id' order by `time` DESC LIMIT 0, 10"); +} + +// TFS .3 compatibility +function user_fetch_deathlist03($char_id) { + $char_id = (int)$char_id; + $query = mysql_query("SELECT * FROM `player_deaths` WHERE `player_id`='$char_id' order by `date` DESC LIMIT 0, 10") or die(mysql_error()); + + while($row = mysql_fetch_assoc($query)) { + $row['time'] = $row['date']; + $array[] = $row; + } + return !empty($array) ? $array : false; +} + +// same (death id ---> killer id) +function user_get_kid($did) { + $did = (int)$did; + return mysql_result(mysql_query("SELECT `id` FROM `killers` WHERE `death_id`='$did';"), 0, 'id'); +} +// same (killer id ---> player id) +function user_get_killer_id($kn) { + $kn = (int)$kn; + $query = mysql_query("SELECT `player_id` FROM `player_killers` WHERE `kill_id`='$kn';") or die(mysql_error()); + $count = mysql_num_rows($query); + for ($i = 0; $i < $count; $i++) { + $row = mysql_fetch_row($query); + } + + if (isset($row)) { return $row[0]; } else {return false;} +} +// same (killer id ---> monster name) +function user_get_killer_m_name($mn) { + $mn = (int)$mn; + + $query = mysql_query("SELECT `name` FROM `environment_killers` WHERE `kill_id`='$mn';"); + $data = mysql_fetch_assoc($query); + + //return $data; + return mysql_num_rows($query) !== 1 ? false : $data['name']; +} + +// Count character deaths. Counts up 10. +function user_count_deathlist($char_id) { + $char_id = (int)$char_id; + return mysql_result(mysql_query("SELECT COUNT('id') FROM `player_deaths` WHERE `player_id`='$char_id' order by `time` DESC LIMIT 0, 10"), 0); +} + +// MY ACCOUNT RELATED \\ +function user_update_comment($char_id, $comment) { + $char_id = sanitize($char_id); + $comment = sanitize($comment); + mysql_query("UPDATE `znote_players` SET `comment`='$comment' WHERE `player_id`='$char_id'"); +} + +// Permamently delete character id. (parameter: character id) +function user_delete_character($char_id) { + $char_id = (int)$char_id; + mysql_query("DELETE FROM `players` WHERE `id`='$char_id';"); + mysql_query("DELETE FROM `znote_players` WHERE `player_id`='$char_id';"); +} + +// Parameter: accounts.id returns: An array containing detailed information of every character on the account. +// Array: [0] = name, [1] = level, [2] = vocation, [3] = town_id, [4] = lastlogin, [5] = online +function user_character_list($account_id) { + //$count = user_character_list_count($account_id); + $account_id = (int)$account_id; + + if (config('TFSVersion') == 'TFS_10') { + $characters = mysql_select_multi("SELECT `id`, `name`, `level`, `vocation`, `town_id`, `lastlogin` FROM `players` WHERE `account_id`='$account_id' ORDER BY `level` DESC"); + if ($characters !== false) { + $onlineArray = mysql_select_multi("SELECT `player_id` FROM `players_online`;"); + $onlineIds = array(); + if ($onlineArray !== false) foreach ($onlineArray as $row) $onlineIds[] = $row['player_id']; + for ($i = 0; $i < count($characters); $i++) { + $online = in_array($characters[$i]['id'], $onlineIds); + if ($online) $characters[$i]['online'] = 1; + else $characters[$i]['online'] = 0; + unset($characters[$i]['id']); + } + } + + } else $characters = mysql_select_multi("SELECT `name`, `level`, `vocation`, `town_id`, `lastlogin`, `online` FROM `players` WHERE `account_id`='$account_id' ORDER BY `level` DESC"); + + if ($characters !== false) { + $count = count($characters); + for ($i = 0; $i < $count; $i++) { + $characters[$i]['vocation'] = vocation_id_to_name($characters[$i]['vocation']); // Change vocation id to vocation name + $characters[$i]['town_id'] = town_id_to_name($characters[$i]['town_id']); // Change town id to town name + + // Make lastlogin human read-able. + if ($characters[$i]['lastlogin'] != 0) { + $characters[$i]['lastlogin'] = date(config('date'),$characters[$i]['lastlogin']); + } else { + $characters[$i]['lastlogin'] = 'Never.'; + } + + $characters[$i]['online'] = online_id_to_name($characters[$i]['online']); // 0 to "offline", 1 to "ONLINE". + // deprecated, znote_players now has hide_char + //$array[$i][6] = hide_char_to_name($array[$i][6]); // 0 to "visible", 1 to "hidden". + } + } + + return $characters; +} + +// Returns an array containing all(up to 30) player_IDs an account have. (parameter: account_ID). +function user_character_list_player_id($account_id) { + //$count = user_character_list_count($account_id); + $account_id = sanitize($account_id); + $query = mysql_query("SELECT `id` FROM `players` WHERE `account_id`='$account_id' ORDER BY `level` DESC LIMIT 0, 30"); + $count = mysql_num_rows($query); + for ($i = 0; $i < $count; $i++) { + $row = mysql_fetch_row($query); + $array[] = $row[0]; + } + if (isset($array)) {return $array; } else {return false;} +} + +// Parameter: accounts.id returns: number of characters on the account. +function user_character_list_count($account_id) { + $account_id = sanitize($account_id); + return mysql_result(mysql_query("SELECT COUNT('id') FROM `players` WHERE `account_id`='$account_id'"), 0); +} + +// END MY ACCOUNT RELATED + +// HIGHSCORE FUNCTIONS \\(I think I will move this to an own file later) +function highscore_getAll() { + $result = array(); + for ($i = 0; $i <= 6; $i++) { + $result[$i] = highscore_skills($i); + } + $result[7] = highscore_experience(); + $result[8] = highscore_maglevel(); + + return $result; +} + +// TFS 1.0 highscore +function highscore_getAll_10($from = 0, $to = 30) { + $result = array(); + for ($i = 0; $i <= 8; $i++) { + $result[$i] = highscore_getSkill_10($i, $from, $to); + } + return $result; +} +function highscore_getSkill_10($id = 8, $from = 0, $to = 30) { + $skills = array( + 0 => 'skill_fist', + 1 => 'skill_club', + 2 => 'skill_sword', + 3 => 'skill_axe', + 4 => 'skill_dist', + 5 => 'skill_shielding', + 6 => 'skill_fishing', + 8 => 'maglevel', + 7 => 'level', + ); + + if ($id < 7 || $id > 7) $scores = mysql_select_multi("SELECT `". $skills[$id] ."` AS `value`, `name`, `vocation` FROM `players` WHERE `group_id`<'2' ORDER BY `". $skills[$id] ."` DESC LIMIT {$from}, {$to};"); + else $scores = mysql_select_multi("SELECT `". $skills[$id] ."` AS `level`, `experience` AS `value`, `name`, `vocation` FROM `players` WHERE `group_id`<'2' ORDER BY `experience` DESC LIMIT {$from}, {$to};"); + for ($i = 0; $i < count($scores); $i++) $scores[$i]['vocation'] = vocation_id_to_name($scores[$i]['vocation']); + return $scores; +} + +// Returns an array containing up to 30 best players in terms of (selected skillid). Returns player ID and skill value. +function highscore_skills($skillid) { + $skillid = (int)$skillid; + $query = mysql_query("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid`='$skillid' ORDER BY `value` DESC LIMIT 0, 30"); + while ($row = mysql_fetch_assoc($query)) { + if ($skillid == 6 || $skillid == 5) {// If skillid is fish fighting, lets display vocation name instead of id. + $row['vocation'] = vocation_id_to_name(mysql_result(mysql_query("SELECT `vocation` FROM `players` WHERE `id` = '". $row['player_id'] ."';"), 0)); + } + $row['group_id'] = mysql_result(mysql_query("SELECT `group_id` FROM `players` WHERE `id` = '". $row['player_id'] ."';"), 0); + $row['name'] = mysql_result(mysql_query("SELECT `name` FROM `players` WHERE `id` = '". $row['player_id'] ."';"), 0); + unset($row['player_id']); + $array[] = $row; + } + if (isset($array)) {return $array; } else {return false;} +} + +// Returns an array containing up to 30 best players in terms of experience. Returns name, experience, vocation and level. +function highscore_experience() { + //$count = highscore_experience_count(); + $query = mysql_query("SELECT `name`, `experience` as `value`, `vocation`, `level`, `group_id` FROM `players` WHERE `experience`>500 ORDER BY `experience` DESC LIMIT 0, 30"); + while ($row = mysql_fetch_assoc($query)) { + $row['vocation'] = vocation_id_to_name($row['vocation']); + $array[] = $row; + } + if (isset($array)) {return $array; } else {return false;} +} + +// Returns an array containing up to 30 best players with high magic level (returns their name and magic level) +function highscore_maglevel() { + //$count = highscore_experience_count(); // Dosn't matter if I count exp, maglvl is on same table. + $query = mysql_query("SELECT `name`, `maglevel` as `value`, `group_id` FROM `players` WHERE `experience`>500 ORDER BY `maglevel` DESC LIMIT 0, 30"); + while ($row = mysql_fetch_assoc($query)) { + $array[] = $row; + } + if (isset($array)) {return $array; } else {return false;} +} + +// Count how many skill entries are in the db for a certain skillid (this can relate to how many players exist). +function highscore_count($skillid) { + return mysql_result(mysql_query("SELECT COUNT(`player_id`) FROM `player_skills` WHERE `skillid`='$skillid' LIMIT 0, 30"), 0); +} + +// Count how many players have higher exp than 500 +function highscore_experience_count() { + return mysql_result(mysql_query("SELECT COUNT(`id`) FROM `players` WHERE `experience`>'500' LIMIT 0, 30"), 0); +} + +// END HIGHSCORE FUNCTIONS +function user_recover($mode, $edom, $email, $character, $ip) { +/* -- Lost account function - user_recovery -- + + $mode = username/password recovery definition + $edom = The remembered value. (if mode is username, edom is players password and vice versa) + $email = email address + $character = character name + $ip = character IP +*/ + // Structure verify array data correctly + if ($mode === 'username') { + $verify_data = array( + 'password' => sha1($edom), + 'email' => $email + ); + } else { + $verify_data = array( + 'name' => $edom, + 'email' => $email + ); + } + // Determine if the submitted information is correct and herit from same account + if (user_account_fields_verify_value($verify_data)) { + + // Structure account id fetch method correctly + if ($mode == 'username') { + $account_id = user_account_id_from_password($verify_data['password']); + } else { + $account_id = user_id($verify_data['name']); + } + // get account id from character name + $player_account_id = user_character_account_id($character); + + //Verify that players.account_id matches account.id + if ($player_account_id == $account_id) { + // verify IP match (IP = accounts.email_new) \\ + // Fetch IP data + $ip_data = user_znote_account_data($account_id, 'ip'); + if ($ip == $ip_data['ip']) { + // IP Match, time to stop verifying SHIT and get on + // With giving the visitor his goddamn username/password! + if ($mode == 'username') { + $name_data = user_data($account_id, 'name'); + echo '

Your username is:

'. $name_data['name'] .'

'; + } else { + $newpass = substr(sha1(rand(1000000, 99999999)), 8); + echo '

Your new password is:

'. $newpass .'

Remember to login and change it!

'; + user_change_password($account_id, $newpass); + } + // END?! no, but almost. :) + } else { echo'IP does not match.'; } + } else { echo'Account data does not match.'; } + } else { echo'Account data does not match.'; } +} + +// Get account id from password. This can be inaccurate considering several people may have same password. +function user_account_id_from_password($password) { + $password = sanitize($password); + $tmp = mysql_select_single("SELECT `id` FROM `accounts` WHERE `password`='".$password."' LIMIT 1;"); + return $tmp['id']; +} + +// Add additional premium days to account id +function user_account_add_premdays($accid, $days) { + $accid = (int)$accid; + $days = (int)$days; + $tmp = mysql_result(mysql_query("SELECT `premdays` FROM `accounts` WHERE `id`='$accid';"), 0, 'premdays'); + $tmp += $days; + mysql_query("UPDATE `accounts` SET `premdays`='$tmp' WHERE `id`='$accid'"); +} + +// Name = char name. Changes from male to female & vice versa. +function user_character_change_gender($name) { + $user_id = user_character_id($name); + $gender = mysql_result(mysql_query("SELECT `sex` FROM `players` WHERE `id`='$user_id';"), 0, 'sex'); + if ($gender == 1) mysql_query("UPDATE `players` SET `sex`='0' WHERE `id`='$user_id'"); + else mysql_query("UPDATE `players` SET `sex`='1' WHERE `id`='$user_id'"); +} + +// Fetch account ID from player NAME +function user_character_account_id($character) { + $character = sanitize($character); + return mysql_result(mysql_query("SELECT `account_id` FROM `players` WHERE `name`='$character';"), 0, 'account_id'); +} + +// Verify data from accounts table. Parameter is an array of - +// etc array('id' = 4, 'password' = 'test') will verify that logged in user have id 4 and password test. +function user_account_fields_verify_value($verify_data) { + $verify = array(); + array_walk($verify_data, 'array_sanitize'); + + foreach ($verify_data as $field=>$data) { + $verify[] = '`'. $field .'` = \''. $data .'\''; + } + return (mysql_result(mysql_query("SELECT COUNT('id') FROM `accounts` WHERE ". implode(' AND ', $verify) .";"), 0) == 1) ? true : false; +} + +// Update accounts, make sure user is logged in first. +function user_update_account($update_data) { + $update = array(); + array_walk($update_data, 'array_sanitize'); + + foreach ($update_data as $field=>$data) { + $update[] = '`'. $field .'` = \''. $data .'\''; + } + + $user_id = sanitize($_SESSION['user_id']); + + mysql_query("UPDATE `accounts` SET ". implode(', ', $update) ." WHERE `id`=". $user_id .";"); +} + +// Update znote_accounts table, make sure user is logged in for this. This is used to etc update lastIP +function user_update_znote_account($update_data) { + $update = array(); + array_walk($update_data, 'array_sanitize'); + + foreach ($update_data as $field=>$data) { + $update[] = '`'. $field .'` = \''. $data .'\''; + } + + $user_id = sanitize($_SESSION['user_id']); + + mysql_query("UPDATE `znote_accounts` SET ". implode(', ', $update) ." WHERE `account_id`=". $user_id .";"); +} + +// Change password on account_id (Note: You should verify that he knows the old password before doing this) +function user_change_password($user_id, $password) { + $user_id = sanitize($user_id); + $password = sha1($password); + + mysql_query("UPDATE `accounts` SET `password`='$password' WHERE `id`=$user_id"); +} +// .3 compatibility +function user_change_password03($user_id, $password) { + if (config('salt') === true) { + $user_id = sanitize($user_id); + $salt = user_data($user_id, 'salt'); + $password = sha1($salt['salt'].$password); + + mysql_query("UPDATE `accounts` SET `password`='$password' WHERE `id`=$user_id"); + } else { + user_change_password($user_id, $password); + } +} + +// Parameter: players.id, value[0 or 1]. Togge hide. +function user_character_set_hide($char_id, $value) { + $char_id = sanitize($char_id); + $value = sanitize($value); + + mysql_query("UPDATE `znote_players` SET `hide_char`='$value' WHERE `player_id`=$char_id"); +} + +// CREATE ACCOUNT +function user_create_account($register_data) { + array_walk($register_data, 'array_sanitize'); + + if (config('TFSVersion') == 'TFS_03' && config('salt') === true) { + $register_data['salt'] = generate_recovery_key(18); + $register_data['password'] = sha1($register_data['salt'].$register_data['password']); + } else $register_data['password'] = sha1($register_data['password']); + + $ip = $register_data['ip']; + $created = $register_data['created']; + + unset($register_data['ip']); + unset($register_data['created']); + + if (config('TFSVersion') == 'TFS_10') $register_data['creation'] = $created; + + $fields = '`'. implode('`, `', array_keys($register_data)) .'`'; + $data = '\''. implode('\', \'', $register_data) .'\''; + + mysql_query("INSERT INTO `accounts` ($fields) VALUES ($data)") or die(mysql_error()); + + $account_id = user_id($register_data['name']); + mysql_query("INSERT INTO `znote_accounts` (`account_id`, `ip`, `created`) VALUES ('$account_id', '$ip', '$created')") or die(mysql_error()); + + //TO-DO: mail server and verification. + // http://www.web-development-blog.com/archives/send-e-mail-messages-via-smtp-with-phpmailer-and-gmail/ +} + +// CREATE CHARACTER +function user_create_character($character_data) { + array_walk($character_data, 'array_sanitize'); + $cnf = fullConfig(); + + if ($character_data['sex'] == 1) { + $outfit_type = $cnf['maleOutfitId']; + } else { + $outfit_type = $cnf['femaleOutfitId']; + } + + // This is TFS 0.2 compatible import data with Znote AAC mysql schema + $import_data = array( + 'name' => $character_data['name'], + 'group_id' => 1, + 'account_id' => $character_data['account_id'], + 'level' => $cnf['level'], + 'vocation' => $character_data['vocation'], + 'health' => $cnf['health'], + 'healthmax' => $cnf['health'], + 'experience' => 0, /* Will automatically be configured according to level after creating this array*/ + 'lookbody' => 0, /* STARTER OUTFITS */ + 'lookfeet' => 0, + 'lookhead' => 0, + 'looklegs' => 0, + 'looktype' => $outfit_type, + 'lookaddons' => 0, + 'maglevel' => 0, + 'mana' => $cnf['mana'], + 'manamax' => $cnf['mana'], + 'manaspent' => 0, + 'soul' => $cnf['soul'], + 'town_id' => $character_data['town_id'], + 'posx' => $cnf['default_pos']['x'], + 'posy' => $cnf['default_pos']['y'], + 'posz' => $cnf['default_pos']['z'], + 'conditions' => '', + 'cap' => $cnf['cap'], + 'sex' => $character_data['sex'], + 'lastlogin' => 0, + 'lastip' => $character_data['lastip'], + 'save' => 1, + 'skull' => 0, + 'skulltime' => 0, + 'rank_id' => 0, + 'guildnick' => '', + 'lastlogout' => 0, + 'blessings' => 0, + 'direction' => 0, + 'loss_experience' => 10, + 'loss_mana' => 10, + 'loss_skills' => 10, + 'premend' => 0, + 'online' => 0, + 'balance' => 0 + ); + + // TFS 1.0 rules + if (Config('TFSVersion') === 'TFS_10') { + unset($import_data['rank_id']); + unset($import_data['guildnick']); + unset($import_data['direction']); + unset($import_data['loss_experience']); + unset($import_data['loss_mana']); + unset($import_data['loss_skills']); + unset($import_data['loss_mana']); + unset($import_data['premend']); + unset($import_data['online']); + } + + // Set correct experience for level + $import_data['experience'] = level_to_experience($import_data['level']); + + // If you are no vocation (id 0), use these details instead: + if ($character_data['vocation'] === '0') { + $import_data['level'] = $cnf['nvlevel']; + $import_data['experience'] = level_to_experience($cnf['nvlevel']); + $import_data['health'] = $cnf['nvHealth']; + $import_data['healthmax'] = $cnf['nvHealth']; + $import_data['cap'] = $cnf['nvCap']; + $import_data['mana'] = $cnf['nvMana']; + $import_data['manamax'] = $cnf['nvMana']; + $import_data['soul'] = $cnf['nvSoul']; + + if ($cnf['nvForceTown'] == 1) { + $import_data['town_id'] = $cnf['nvTown']; + } + } + + $fields = array_keys($import_data); // Fetch select fields + $data = array_values($import_data); // Fetch insert data + + $fields_sql = implode("`, `", $fields); // Convert array into SQL compatible string + $data_sql = implode("', '", $data); // Convert array into SQL compatible string + echo 1; + mysql_query("INSERT INTO `players`(`$fields_sql`) VALUES ('$data_sql');") or die("INSERT ERROR: ". mysql_error()); + + $created = time(); + $charid = user_character_id($import_data['name']); + echo 2; + mysql_query("INSERT INTO `znote_players`(`player_id`, `created`, `hide_char`, `comment`) VALUES ('$charid', '$created', '0', '');") or die(mysql_error()); +} + +// Returns counted value of all players online +function user_count_online() { + if (config('TFSVersion') == 'TFS_10') { + $online = mysql_select_single("SELECT COUNT(`player_id`) AS `value` FROM `players_online`;"); + return $online['value']; + } else return mysql_result(mysql_query("SELECT COUNT(`id`) from `players` WHERE `online` = 1;"), 0); +} + +// Returns counted value of all accounts. +function user_count_accounts() { + return mysql_result(mysql_query("SELECT COUNT(`id`) from `accounts`;"), 0); +} + +/* user_character_data (fetches whatever data you want from players table)! + Usage: + $player = user_data(player_ID, 'name', 'level'); + echo "Character name: ". $player['name'] .". Level: ". $player['level']; +*/ +function user_character_data($user_id) { + $data = array(); + $user_id = sanitize($user_id); + $func_num_args = func_num_args(); + $func_get_args = func_get_args(); + if ($func_num_args > 1) { + unset($func_get_args[0]); + $fields = '`'. implode('`, `', $func_get_args) .'`'; + $data = mysql_select_single("SELECT $fields FROM `players` WHERE `id` = $user_id;"); + return $data; + } +} + +// return query data from znote_players table +function user_znote_character_data($character_id) { + $data = array(); + $charid = (int)$character_id; + + $func_num_args = func_num_args(); + $func_get_args = func_get_args(); + + if ($func_num_args > 1) { + unset($func_get_args[0]); + + $fields = '`'. implode('`, `', $func_get_args) .'`'; + $data = mysql_select_single("SELECT $fields FROM `znote_players` WHERE `player_id` = $charid;"); + return $data; + } +} + +// return query data from znote table +// usage: $znoteAAC = user_znote_data('version'); +// echo $znoteAAC['version']; +function user_znote_data() { + $data = array(); + + $func_num_args = func_num_args(); + $func_get_args = func_get_args(); + + if ($func_num_args > 0) { + + $fields = '`'. implode('`, `', $func_get_args) .'`'; + $data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `znote`;")); + return $data; + } else return false; +} + +// return query data from znote_accounts table +// See documentation on user_data. This fetches information from znote_accounts table. +function user_znote_account_data($account_id) { + $data = array(); + $accid = (int)$account_id; + + $func_num_args = func_num_args(); + $func_get_args = func_get_args(); + + if ($func_num_args > 1) { + unset($func_get_args[0]); + + $fields = '`'. implode('`, `', $func_get_args) .'`'; + $data = mysql_select_single("SELECT $fields FROM `znote_accounts` WHERE `account_id` = $accid LIMIT 1;"); + return $data; + } +} + +// return query data from znote_visitors table +// See documentation on user_data, but this uses $longip instead. +function user_znote_visitor_data($longip) { + $data = array(); + $longip = (int)$longip; + + $func_num_args = func_num_args(); + $func_get_args = func_get_args(); + + if ($func_num_args > 1) { + unset($func_get_args[0]); + + $fields = '`'. implode('`, `', $func_get_args) .'`'; + $data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `znote_visitors` WHERE `ip` = $longip;")); + return $data; + } +} + +// return query data from znote_visitors_details table +// See documentation on user_data, but this uses $longip instead. +function user_znote_visitor_details_data($longip) { + $data = array(); + $longip = (int)$longip; + + $func_num_args = func_num_args(); + $func_get_args = func_get_args(); + + if ($func_num_args > 1) { + unset($func_get_args[0]); + + $fields = '`'. implode('`, `', $func_get_args) .'`'; + $data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `znote_visitors_details` WHERE `ip` = $longip;")); + return $data; + } +} + +/* user_data (fetches whatever data you want from accounts table)! + Usage: + $account = user_data(account_ID, 'password', 'email'); + echo $account['email']; //Will then echo out that accounts mail address. +*/ +function user_data($user_id) { + $data = array(); + $user_id = sanitize($user_id); + + $func_num_args = func_num_args(); + $func_get_args = func_get_args(); + + if ($func_num_args > 1) { + unset($func_get_args[0]); + + $fields = '`'. implode('`, `', $func_get_args) .'`'; + $data = mysql_select_single("SELECT $fields FROM `accounts` WHERE `id` = $user_id LIMIT 1;"); + return $data; + } +} + +// Checks if user is activated (Not in use atm) +function user_activated($username) { + $username = sanitize($username); + // Deprecated, removed from DB. + //return (mysql_result(mysql_query("SELECT COUNT('id') FROM `accounts` WHERE `name`='$username' AND `email_new_time`=1;"), 0) == 1) ? true : false; + return false; +} + +// Checks that username exist in database +function user_exist($username) { + $username = sanitize($username); + return (mysql_result(mysql_query("SELECT COUNT('id') FROM `accounts` WHERE `name`='$username';"), 0) == 1) ? true : false; +} + +function user_name($id) { //USERNAME FROM PLAYER ID (Hauni@otland.net) + $id = (int)$id; + $name = mysql_select_single("SELECT `name` FROM `players` WHERE `id`='$id';"); + if ($name !== false) return $name['name']; + else return false; +} + +// Checks that character name exist +function user_character_exist($username) { + $username = sanitize($username); + return (mysql_result(mysql_query("SELECT COUNT('id') FROM `players` WHERE `name`='$username';"), 0) == 1) ? true : false; +} + +// Checks that this email exist. +function user_email_exist($email) { + $email = sanitize($email); + return (mysql_result(mysql_query("SELECT COUNT('id') FROM `accounts` WHERE `email`='$email';"), 0) >= 1) ? true : false; +} + +// Fetch user account ID from registered email. (this is used by etc lost account) +function user_id_from_email($email) { + $email = sanitize($email); + $account_id = mysql_result(mysql_query("SELECT `id` FROM `accounts` WHERE `email`='$email';"), 0, 'id'); + return $account_id; +} + +// Checks that a password exist in the database. +function user_password_exist($password) { + $password = sha1($password); // No need to sanitize passwords since we encrypt them. + return (mysql_result(mysql_query("SELECT COUNT('id') FROM `accounts` WHERE `password`='$password';"), 0) == 1) ? true : false; +} + +// Verify that submitted password match stored password in account id +function user_password_match($password, $account_id) { + $password = sha1($password); // No need to sanitize passwords since we encrypt them. + $account_id = (int)$account_id; + return (mysql_result(mysql_query("SELECT COUNT('id') FROM `accounts` WHERE `password`='$password' AND `id`='$account_id';"), 0) == 1) ? true : false; +} + +// Get user ID from name +function user_id($username) { + $username = sanitize($username); + $data = mysql_select_single("SELECT `id` FROM `accounts` WHERE `name`='$username' LIMIT 1;"); + if ($data !== false) return $data['id']; + else return false; +} + +// Get user login ID from username and password +function user_login_id($username, $password) { + $username = sanitize($username); + $password = sha1($password); + $data = mysql_select_single("SELECT `id` FROM `accounts` WHERE `name`='$username' AND `password`='$password' LIMIT 1;"); + if ($data !== false) return $data['id']; + else return false; +} + +// TFS 0.3+ compatibility. +function user_login_id_03($username, $password) { + if (config('salt') === true) { + if (user_exist($username)) { + $user_id = user_id($username); + $username = sanitize($username); + + $salt = mysql_result(mysql_query("SELECT `salt` FROM `accounts` WHERE `id`='$user_id';"), 0, 'salt'); + if (!empty($salt)) $password = sha1($salt.$password); + else $password = sha1($password); + return mysql_result(mysql_query("SELECT `id` FROM `accounts` WHERE `name`='$username' AND `password`='$password';"), 0, 'id'); + } + } else return user_login_id($username, $password); +} + +// Get character ID from character name +function user_character_id($charname) { + $charname = sanitize($charname); + $char = mysql_select_single("SELECT `id` FROM `players` WHERE `name`='$charname';"); + if ($char !== false) return $char['id']; + else return false; +} + +// Hide user character. +function user_character_hide($username) { + $username = sanitize($username); + $username = user_character_id($username); + $char = mysql_select_single("SELECT `hide_char` FROM `znote_players` WHERE `player_id`='$username';"); + if ($char !== false) return $char['hide_char']; + else return false; +} + +// Login with a user. (TFS 0.2) +function user_login($username, $password) { + $user_id = user_login_id($username, $password); + + $username = sanitize($username); + $password = sha1($password); + return (mysql_result(mysql_query("SELECT COUNT('id') FROM accounts WHERE name='$username' AND password='$password';"), 0) == 1) ? $user_id : false; +} + +// Login a user with TFS 0.3 compatibility +function user_login_03($username, $password) { + if (config('salt') === true) { + $user_id = user_login_id_03($username, $password); + + $username = sanitize($username); + + $salt = mysql_result(mysql_query("SELECT `salt` FROM `accounts` WHERE `id`='$user_id';"), 0, 'salt'); + if (!empty($salt)) $password = sha1($salt.$password); + else $password = sha1($password); + return (mysql_result(mysql_query("SELECT COUNT('id') FROM accounts WHERE name='$username' AND password='$password';"), 0) == 1) ? $user_id : false; + } else return user_login($username, $password); +} + +// Verify that user is logged in +function user_logged_in() { + return (isset($_SESSION['user_id'])) ? true : false; +} +?> \ No newline at end of file diff --git a/engine/init.php b/engine/init.php new file mode 100644 index 0000000..4e1ecc3 --- /dev/null +++ b/engine/init.php @@ -0,0 +1,105 @@ +
WINDOWS:
Download and use the latest Uniform Server.
CLICK ME to get to their website.
XAMPP sucks and is insecure. Kthxbye.

LINUX DEBIAN:
Edit /etc/apt/sources.list
etc if you use nano text editor, make sure you are root and do
nano /etc/apt/sources.list

At the bottom, add this:

deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

save file.

Then in terminal, do these 2 commands:
gpg --keyserver keys.gnupg.net --recv-key 89DF5277

gpg -a --export 89DF5277 | sudo apt-key add -

And then do these 2 commands:

apt-get update
apt-get upgrade

You now have the latest stable PHP version.
'); + +$time = time(); +$version = '1.5_SVN'; + +session_start(); +ob_start(); +require 'config.php'; +require 'database/connect.php'; +require 'function/general.php'; +require 'function/users.php'; +require 'function/cache.php'; +require 'function/token.php'; + +if (isset($_SESSION['token'])) { + $_SESSION['old_token'] = $_SESSION['token']; + //var_dump($_SESSION['old_token'], $_SESSION['token']); +} +Token::generate(); + +if (user_logged_in() === true) { + $session_user_id = $_SESSION['user_id']; + $user_data = user_data($session_user_id, 'id', 'name', 'password', 'email'); + $user_znote_data = user_znote_account_data($session_user_id, 'ip', 'created', 'points', 'cooldown'); +} + +$errors = array(); + +// Log IP +if ($config['log_ip']) { + $visitor_config = $config['ip_security']; + + $flush = $config['flush_ip_logs']; + if ($flush != false) { + $timef = $time - $flush; + if (getCache() < $timef) { + $timef = $time - $visitor_config['time_period']; + mysql_query("DELETE FROM znote_visitors_details WHERE time <= '$timef'") or die(mysql_error()); + setCache($time); + } + } + + $visitor_data = znote_visitors_get_data(); + + znote_visitor_set_data($visitor_data); // update or insert data + znote_visitor_insert_detailed_data(0); // detailed data + + $visitor_detailed = znote_visitors_get_detailed_data($visitor_config['time_period']); + + // max activity + $v_activity = 0; + $v_register = 0; + $v_highscore = 0; + $v_c_char = 0; + $v_s_char = 0; + $v_form = 0; + foreach ((array)$visitor_detailed as $v_d) { + // Activity + if ($v_d['ip'] == ip2long(getIP())) { + // count each type of visit + switch ($v_d['type']) { + case 0: // max activity + $v_activity++; + break; + + case 1: // account registered + $v_register++; + $v_form++; + break; + + case 2: // character creations + $v_c_char++; + $v_form++; + break; + + case 3: // Highscore fetched + $v_highscore++; + $v_form++; + break; + + case 4: // character searched + $v_s_char++; + $v_form++; + break; + + case 5: // Other forms (login.?) + $v_form++; + break; + } + + } + } + + // Deny access if activity is too high + if ($v_activity > $visitor_config['max_activity']) die("Chill down. Your web activity is too big. max_activity"); + if ($v_register > $visitor_config['max_account']) die("Chill down. You can't create multiple accounts that fast. max_account"); + if ($v_c_char > $visitor_config['max_character']) die("Chill down. Your web activity is too big. max_character"); + if ($v_form > $visitor_config['max_post']) die("Chill down. Your web activity is too big. max_post"); + + //var_dump($v_activity, $v_register, $v_highscore, $v_c_char, $v_s_char, $v_form); + //echo ' <--- IP logging activity past 10 seconds.'; +} +?> \ No newline at end of file diff --git a/engine/js/jquery-1.10.2.min.js b/engine/js/jquery-1.10.2.min.js new file mode 100644 index 0000000..f30ebe0 --- /dev/null +++ b/engine/js/jquery-1.10.2.min.js @@ -0,0 +1,6 @@ +/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery-latest.min.map +*/ +(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
t
",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t +}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); +u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("