Bitcoin Forum
May 24, 2024, 09:18:55 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 ... 186 »
121  Bitcoin / Armory / Re: Trouble installing Raspberry Pi offline bundle. on: September 13, 2014, 11:07:40 PM
3.  The script crashed on the line
Code:
execAndWait('gksudo tar -zxf %s -C /' % installer)
where gksudo complained that there is no -z option.  This makes little sense, perhaps it was really tar that was complaining??

Why is gksudo being used to run a non-graphical application?

Edit: And you probably want quote characters around tar -zxf %s -C /, so that the -z option belongs to tar instead of gksudo.

gksudo is used because the offline bundles are promoted to people that may not be too familiar with Linux.  We recommend they unpack and double-click the .sh file.  gksudo is more friendly in that context. 
122  Bitcoin / Armory / Re: Trouble installing Raspberry Pi offline bundle. on: September 13, 2014, 10:17:54 PM
Well that's embarrassing.  I did fix those somewhere, but apparently the changes never made it back into the master branch.  I thought I did it for 0.92.  I guess not.

By the way, interesting lesson for you, I didn't even learn about it until sometime last year:  the for-else loop in python.  Basically, it runs the for loop, and if there is no "break", it goes to "else".  Typically used for searching for things, where you break when you find it, or else you have a backup plan.  Once I learned about it, I have found tons of places to use it.  It saves a few lines of code and easier to read (as long as the person reading it knows what the for-else loop is!)

As such, the "real" fix for that for-else loop is to add a "break" inside:

Quote
for fname in os.listdir('.'):
   if fname.startswith('armory'):
      installer = fname
      break
else:
   print 'No installer found!'
   exit(1)

I will add that fix (along with fixing the regular Ubuntu offline bundles), for 0.92.3 ... which is actually the privacy fix but with an extra important bug fix.  If you want a 0.03 bug bounty for finding this, you're welcome to it! 
123  Bitcoin / Armory / Re: Trouble installing Armory on offline machine on: September 13, 2014, 05:12:52 AM
Are you using Ubuntu 12.04.5?

I'm using 14.04.1 LTS...

Argh!   We botched the website, which was supposed to warn you that you need to use the exact version of Ubuntu listed.  For 0.92.1 and earlier, it's Ubuntu 12.04.3.  Because that version is no longer available on the Ubuntu website, version 0.92.2 was updated to work with 12.04.5 which is now the default if you select 12.04 from the Ubuntu download website.

Please download the 12.04 live CD and use that.  We'll update the webpage.


Okay will get a live cd with 12.04 going.....just curious though I am using Armory 0.92.1 on my main online machine and I am using 14.04.1 LTC on that as well...what is the difference? Something to do with the offline bundle?

The offline bundle is the same thing, it just has all the 12.04.5 dependencies bundled with it so the offline machine doesn't need the internet in order to install armory.  After the first time you install with the bundle you should be able to upgrade with a regular installer. 

There's no compatibility problems with OS or Armory versions 0.92+. 
124  Bitcoin / Armory / Re: Trouble installing Armory on offline machine on: September 13, 2014, 05:01:04 AM
Are you using Ubuntu 12.04.5?

I'm using 14.04.1 LTS...

Argh!   We botched the website, which was supposed to warn you that you need to use the exact version of Ubuntu listed.  For 0.92.1 and earlier, it's Ubuntu 12.04.3.  Because that version is no longer available on the Ubuntu website, version 0.92.2 was updated to work with 12.04.5 which is now the default if you select 12.04 from the Ubuntu download website.

Please download the 12.04 live CD and use that.  We'll update the webpage.
125  Bitcoin / Armory / Re: Trouble installing Armory on offline machine on: September 13, 2014, 04:41:41 AM
Oh, i was saying there is no install script (I forgot to add it in 0.92.2 when I remade the bundle).

Unpack the directory, and then from the command-line go into the directory and type "sudo dpkg -i *.deb".  Type your password.  That should be all you need.


I get "error processing archive" and  "cannot access archive"


Only other thing I'm not sure about is do I need to actually do an install of ubuntu? Right now I have an Ubuntu live DVD running in "try" mode and trying to install armory from a usb stick.

Live CD should work.  Did the file download fully?  Approx 20 MB?

I just downloaded it from the website and it worked fine.  Maybe your download simply got corrupted.


Yep 20.6MB... when you say "sudo dpkg -i *.deb" do you mean exactly that except replace the "*" with "armory_0.92.2-testing_ubuntu-64bit.deb"?? And do I need a path?

Well, the archive should uncompress before doign anythign else.  "cannot access archive" and "error processing archive" means it's not unpacking and might be corrupted.  Or it somehow ended up with root permissions only and you can't even read it...?  Although your last message suggests you got the bundle unpacked.

The offline bundle is the armory_0.92.2-testing_ubuntu-64but.deb and all the dependencies needed to be installed for it to work.  "sudo dpkg -i *.deb" will install all deb files in that directory.  Just make sure you cd into the OfflineBUndle directory first.

Alternatively, I believe I determined that you can actually just copy the Install_DblClick.sh script from the other bundle into this one.  When we officially release 0.92.2 it will have that double-click script in it, it just simply fell through the cracks for the testing release (it's why we do testing releases!)




Okay I finally got the "sudo dpkg -i *.deb" command to work.

Although it returned a host of problems. mostly "error processing package" notifications...

Are you using Ubuntu 12.04.5?
126  Bitcoin / Armory / Re: Trouble installing Armory on offline machine on: September 13, 2014, 04:26:39 AM
Oh, i was saying there is no install script (I forgot to add it in 0.92.2 when I remade the bundle).

Unpack the directory, and then from the command-line go into the directory and type "sudo dpkg -i *.deb".  Type your password.  That should be all you need.


I get "error processing archive" and  "cannot access archive"


Only other thing I'm not sure about is do I need to actually do an install of ubuntu? Right now I have an Ubuntu live DVD running in "try" mode and trying to install armory from a usb stick.

Live CD should work.  Did the file download fully?  Approx 20 MB?

I just downloaded it from the website and it worked fine.  Maybe your download simply got corrupted.


Yep 20.6MB... when you say "sudo dpkg -i *.deb" do you mean exactly that except replace the "*" with "armory_0.92.2-testing_ubuntu-64bit.deb"?? And do I need a path?

Well, the archive should uncompress before doign anythign else.  "cannot access archive" and "error processing archive" means it's not unpacking and might be corrupted.  Or it somehow ended up with root permissions only and you can't even read it...?  Although your last message suggests you got the bundle unpacked.

The offline bundle is the armory_0.92.2-testing_ubuntu-64but.deb and all the dependencies needed to be installed for it to work.  "sudo dpkg -i *.deb" will install all deb files in that directory.  Just make sure you cd into the OfflineBUndle directory first.

Alternatively, I believe I determined that you can actually just copy the Install_DblClick.sh script from the other bundle into this one.  When we officially release 0.92.2 it will have that double-click script in it, it just simply fell through the cracks for the testing release (it's why we do testing releases!)

127  Bitcoin / Armory / Re: Trouble installing Armory on offline machine on: September 13, 2014, 04:03:40 AM
Oh, i was saying there is no install script (I forgot to add it in 0.92.2 when I remade the bundle).

Unpack the directory, and then from the command-line go into the directory and type "sudo dpkg -i *.deb".  Type your password.  That should be all you need.


I get "error processing archive" and  "cannot access archive"


Only other thing I'm not sure about is do I need to actually do an install of ubuntu? Right now I have an Ubuntu live DVD running in "try" mode and trying to install armory from a usb stick.

Live CD should work.  Did the file download fully?  Approx 20 MB?

I just downloaded it from the website and it worked fine.  Maybe your download simply got corrupted.
128  Bitcoin / Armory / Re: Trouble installing Armory on offline machine on: September 13, 2014, 03:54:27 AM
Oh, i was saying there is no install script (I forgot to add it in 0.92.2 when I remade the bundle).

Unpack the directory, and then from the command-line go into the directory and type "sudo dpkg -i *.deb".  Type your password.  That should be all you need.
129  Bitcoin / Armory / Re: Trouble installing Armory on offline machine on: September 13, 2014, 02:14:13 AM
have downloaded the latest version of Ubuntu and the Armory 92.1 offline bundle. My set up is running an Ubuntu live cd with Armory on a usb stick.

When I get to these instructions:

"Go into the extracted directory and double-click on the “Install_DblClick_RunInTerminal.sh” file.  It will give you an option of how to run it:  Select “Run In Terminal”.


Not only does it not give me an option to run in Terminal, but when I manually enter the command in terminal I get the error: "dependency problems prevent configuration of armory" and "error processing package armory" along with some other stuff.


If you need more information let me know, I didn't copy and paste everything because it was my offline computer but I can if necessary.


Any ideas?




The 0.92.1 bundle requires Ubuntu 12.04.3 exactly.  There's a link to it on the download page.

However I finally got around to upgrading that in 0.92.2, so you should use that bundle.  There is no difference between the two versions for an offline computer.  The only issue is that I forgot to include the install script in the bundle, but it appears you know how to install that from the command line
130  Bitcoin / Armory / Re: Feature Request: Actual status of "Building Databases" progress on: September 11, 2014, 05:36:04 AM
Something is not right if "Building databases" is taking that long.  On my system it takes maybe 1 hour total.  25+ hours for that step means something is definitely wrong.  I don't suppose you're running this on an RPi?   (it's the only thing I can think would be that ridiculously slow without something being terribly wrong)
131  Bitcoin / Armory / Re: [HOW TO] Get the needed packages on your offline computer (Synaptic PM) on: September 11, 2014, 05:14:01 AM
That's cool. I didn't know that script was available and rather than waiting for offline bundles I looked at ways to do it myself. With Synaptic offline I also like that I can add other packages or get updates to my offline box, pretty much the same way as I would on an online PC.

Yeah, I used to use the Synaptic "Generate package download script".  For users doing this once, that method is probably simpler and more straightforward.  But I ran into issues with it on some distros, and I always prefer a command-line method anyway Smiley   For me, I need to do this somewhat frequently, and also find that CLI scripts are less error prone. 

I also never published this script since I thought I was the only person needing it.  I should've known others would want it.  I'll add it to the repo in the extras directory.

The script can be modified to work with any packages, as long as the VM on which it is run has equal-or-less packages on it than the offline computer (I take a snapshot of the VM on the first boot so I can revert to that state to run this script). 
132  Bitcoin / Armory / Re: [HOW TO] Get the needed packages on your offline computer (Synaptic PM) on: September 11, 2014, 03:47:13 AM
Sorry to steal your thunder here, Newar Smiley

I have a script I use to make offline bundles.  Given how easy this script is to use, we could probably be putting out more bundles with each release (though we haven't because more released binaries & bundles complicates our release process).  This script requires making a fresh VM of the same OS, but I need the VM for testing anyway, so it's actually saving me a step (it would be an extra step for others).  Either way, it's not terribly difficult to install the distro with the default install options in a VM and run this script there (use the same ISO for the VM and the offline computer)

So the steps to use my script (for Debian-based OSes):

  • (1) Download ISO to be installed on offline computer
  • (2) Install OS on VirtualBox virtual machine
  • (3) Run the script (at the bottom of this post) using "python dl_offline_deps.py download".  This will create a directory with all dependencies, and a copy of the script (itself)
  • (4) Take directory to offline computer, run "sudo python dl_offline_deps.py install" within download directory

That's it.  You can now install Armory on the offline computer and all dependencies will already be installed!  




Under the hood what it's doing is extremely simple:

Code:
apt-get install <packagelist> --print-uris --yes

That just gets the download links and MD5 hashes of the entire depenency tree.  The script then downloads those, and checks their MD5 sums.  It only saves files that have a matching MD5 hashes.

When you run the script on the offline computer, it runs the same command to get the list of downloads and MD5 sums, but now it reads the .deb files from the directory (instead of wget'ing them) and checks that the hashes match.   If so, it adds it to the list of files to install.  When it's done, it simply runs:

Code:
sudo dpkg - i <deblist>

You can use the Synaptic method mentioned by Newar, and you won't need a fresh VM of the same operating system.  Or my scripts can be adapted do the same thing:  generate the wget commands on the offline computer, execute on the online computer, take back to the offline computer to install.  For me, I need the VM anyway so it's actually saving me time and I don't have to go through that pesky GUI Smiley




Here's the script:

Code:
################################################################################
#
# DOWNLOAD:  python dl_offline_deps.py download
#
# DOWNLOADING MUST BE RUN ON A FRESH INSTALL OF THE TARGET OPERATING SYSTEM!
#
# This will download and check the md5sums of all Armory dependencies, and
# their dependency trees, in order to install Armory on a fresh install onto
# an offline system.
#
# It is recommended you make a virtual machine using VirtualBox of the exact
# same Linux distro, then run this script on the first boot.  It will create
# a directory containing every .deb package in the dependency tree, which can
# be taken to the offline computer and installed using this script but with
# the "install" command instead (and sudo)
#
################################################################################
#
# INSTALL:  sudo python dl_offline_deps.py install
#
# If run with admin privilege using the "install" command, it will get the
# raw .deb files from the current directory (instead of wget'ing), it will
# check the hashes, and then install them.
#
################################################################################
import os
import shutil
import platform
import hashlib
from subprocess import check_output
from sys import argv

if len(argv)<2 or not argv[1] in ['download','install']:
   print 'Usage:  '
   print '          python %s download' % argv[0]
   print '  or:'
   print '     sudo python %s install' % argv[0]
   exit(1)


# This is actually all packages needed for compiling, not just installing Armory
pkglist = 'git-core build-essential pyqt4-dev-tools swig libqtcore4 libqt4-dev python-qt4 python-dev python-twisted python-psutil dpkg-sig'

# Use the package manager to pretend to install it, collect URLs and hashes
uriList = check_output('apt-get install %s --print-uris --yes' % pkglist, shell=True)

# If we are downloading, make a directory to put them into
if argv[1]=='download':
   opsys = platform.system()
   distro = '-'.join(platform.linux_distribution())
   osbits  = 64 if platform.machine().lower()=='x86_64' else 32
   dirname = 'offline_bundle_%s_%s_%dbit' % (opsys, distro, osbits)
   if not os.path.exists(dirname):
      os.mkdir(dirname)
   shutil.copy(argv[0], dirname) # copy this script in there


# Download or read from file all .debs and check hashes
debList = []
for line in uriList.split('\n'):
   if not line.startswith('\'http'):
      continue

   uri,deb,siz,md5 = line.split()
   uri = uri.strip('\'')
   md5 = md5.split(':')[-1]

   if argv[1]=='download':
      rawDeb = check_output('wget --quiet -O - %s' % uri, shell=True)
   else:
      rawDeb = open(deb,'rb').read()

   if not hashlib.md5(rawDeb).hexdigest() == md5:
      print "***ERROR: MD5 does not match!  Not saving file"
      continue

   debList.append(deb)
   if argv[1]=='download':
      targfile = os.path.join(dirname, deb)
      with open(targfile, 'wb') as f:
         print '   Writing %s' % targfile
         f.write(rawDeb)
      
      
if argv[1]=='install':
   dlcmd = 'dpkg -i "%s"' % '" "'.join(debList)
   print dlcmd
   check_output(dlcmd, shell=True)

Pretty darned short considering it handles both downloading and installing (depending on command line argument, argv[1]), and does all the hash checks for you.  This is why I love python!
133  Bitcoin / Armory / Re: Armory - Discussion Thread on: September 09, 2014, 01:48:46 PM
What is the recommended offline bundle for a Raspberry Pi?  The 0.92.1 on the website; the 0.92.2-testing version posted here; or a newer version?  I plan to set up a new offline computer for long-term storage.

For a non-OSX offline computer, it doesn't make a difference.  0.92.2 is basically just a bugfix release for OSX and some privacy issues with online computers (and will be "official" very soon)
134  Bitcoin / Armory / Re: Armory - Discussion Thread on: September 07, 2014, 03:49:01 PM
Love Armory but will be, unfortunately, switching to Electrum today.

Been waiting now for close on an hour now for Bitcoin Core to update the last 80 odd blocks.

I'm not a frequent user meaning that I often have a couple of hundred blocks to update when I open Armory. My ISP seems to be seriously trotting P2P traffic due to torrent downloads and this seems to have a direct effect on the updating of Armory/Bitcoin Core as the updating takes ages, even if just a hundred blocks.

I understand that this is no fault attributable to Armory so actually sad as I loved it but these updates are killing me. Would love to see a Armory 'thin client' in the future even if a scaled down version used only to do quick checks.


Who knows how long it will be, but I know that Core is going to eventually implement parallel downloading of blocks.  The problem right now is that Core only downloads from one peer at a time, and if that peer happens to be slow, it takes forever.  It's an epic weakness in a program that requires handling many gigabytes of data, and they apparently have a test branch that solves it.  But I don't know how long it will be before that is released.  When they finish that, we will remove the torrent feature from Armory, as the new Core feature will essentially obsolete the benefits of a separate tor downloader (gmaxwell has written about being able to saturate his bandwidth with the new parallel downloader).  Until then, I'm not sure there's much we can do.  I appreciate that you understand it's not directly attributable to use, and maybe when they get that in there, catching up won't be so difficult anymore.

On the other hand, I just leave Armory running.  Can use File-->Minimize to keep it hidden.  It shouldn't require much in terms of resources, and then is instantly available whenever you need it.  But I understand not everyone wants to do that (or might be resource-limited)

135  Bitcoin / Armory / Re: [TEASER] Multi-Sig Lockboxes! (Now with Simulfunding!) on: September 05, 2014, 04:47:25 PM
I have a question about Simulfunding.

What exactly is being transmitted when a user sends the signed TXSIGCOLLECT back to the organizer? I guess it's my signature to allow sending my specified amount from my specified wallet. But what's to prevent the organizer to use my signed transaction twice?
What if the organizer doesn't sign and broadcast their part of the transaction until, let's say, 2018? Perhaps there should be a time limit. Do we currently have to manually empty the wallet if the transaction isn't made or you could get the funds sent sometime in the future when it might come as a surprise?

The easiest way to describe simulfunding is that it is a contract:

You both put the terms into the contract ("I will send 10 BTC if you send 10 BTC"), then you both sign it.  Just like a regular legal contract, one person signing the contract doesn't mean half the contract is executed.  You are signing all parts of the contract (in this case, the transaction), and it's either executed fully, or not at all.

The TXSIGCOLLECT is simply the transaction proposing sending money from both parties to a single target.   When you sign it, you're not just signing your part, you're signing the entire transaction, including their contribution.  If they never sign it, the transaction is never valid and money never moves.   

The whole point of simulfunding is that there is exactly zero risk of one party getting screwed. 
136  Bitcoin / Armory / Re: Armory was working but now when I try to broadcast the network rejects it on: September 04, 2014, 03:23:00 AM
I tried to create two transactions tonight and each one was rejected. As soon as I tried to broadcast it the bitcoinqt said it disconnected and then I got a message from armory saying that it failed somehow. Help?
I could try installing the newest armory software but I don't want to redownload the whole blockchain again. Is it possible to update armory separately? Is that what I should do here? I am a bit worried.

Help -> Rescan Databases

Restart Armory and Bitcoin Core (if you run it separatley), then let it scan and try again. 

If it doesn't work, then try Help -> Rebuild & Rescan Databases.  Will take a few hours, but it should definitely be resolved after that.  You shouldn't ever have to redownload the blockchain unless there's reason to believe that it somehow got corrupt, but that's unlikely here (Armory is seeing a different history than Core, so it's probably Armory's DB that is out of whack)
137  Bitcoin / Armory / Re: Building Armory and using Python Examples... on: August 30, 2014, 07:57:47 PM
Hi Etotheipi,

I do commend you on the great product.  Thanks for taking the time to answer some questions.  I appreciate it. 
I totally see your point on choosing python/C++ to develop now. 

I was wondering if the Charles branch's scanning will be as fast as say the way they do it at blockchain.info?  It baffles me how fast a search for some statistic or info is on that engine.  Addresses come up instantaneously, etc... Will Armory have this quick blockchain searching?
Do you know possibly what DB technique they are using and how can this compare to what Armory might have in the near future?


Their database has already collected all data for all addresses, and it simply fetched it for you. Armory's database only tracks the addresses in your wallets, so you can look those up instantly, but no others.  To look up others it had to rescan the entire blockchain history.

The Charles branch includes a "supernode" mode that tracks all addresses all the time, like blockchain.info.  it's not ready yet, but the goal is to create a tool that services can run locally that does the same thing, so they don't have to rely on third party services like blockchain.info.
138  Bitcoin / Armory / Re: Building Armory and using Python Examples... on: August 29, 2014, 04:23:30 PM
Etotheipi started with Python for the following reasons:

1) He loves Python
2) Cheaper to develop the frontend with Python than with C++
3) SWIG is really easy to use
4) Can leverage a lot of existing Python libraries for alternate stuff that don't need to be in the backend (networking, system calls)
5) Ask him directly =P

I used python because of how extraordinarily flexible and easy it is to develop functionality, handle errors and corner cases, create flexible interfaces, testing, GUI development, and of course the cross-platformness of it (minus Qt4).  If I want to scan the blockchain for certain patterns, map difficulties, calculate balances, find special scripts, etc, it can be only a few lines of python in an isolated script (once everything is setup and you know how to use it).  

However, python is too slow for computational tasks, but SWIG makes it easy to do computation-heavy stuff (blockchain scanning) in C++ and use it as if it is native python code after running it through SWIG.   Being able to code stuff in either python (slow and flexible) and C++ (fast, optimizable and rigid) yet access all of it in python has been one of the features to which I attribute Armory's success.  In a way, python and C++ are opposites of one another, which means the combination of the two of them covers a lot of functionality space and is quite powerful.  My only complaint so far has been that I should've started with python3 and Qt5, both of which would've improved cross-compatibility and made internationalization easier (which is currently non-existent in Armory).

As mentioned by goatpig:  a lot of the scripts in the extras directory are out of date, and will be even further out of date once we merge in the Charles branch.  However, we plan to update those once the new wallets and supernode stuff is implemented, as the interfaces to wallets and blockchain data should become fairly static and stable after that.
139  Bitcoin / Development & Technical Discussion / Re: UTXOC - Unspent Transaction Output based Certificates on: August 29, 2014, 06:27:54 AM
By the way, I had a similar idea a while back, but reversed:

https://bitcointalk.org/index.php?topic=525317.0

Rather than spending an output to revoke, you send money to an address to revoke.  If it's your key & address, it costs nothing to revoke it (you send yourself money), but it costs someone else quite a bit.  I mentioned how companies could set the value to the cost of someone maliciously revoking their key.  If needed, the authorized owner can borrow the money momentarily to trigger the revoke condition and then return it. (it always also requires a signature to revoke, but the revocation signature can be less secure knowing that someone has to pay you to exercise it without your permission)

Your idea is much more serious and well-thought-out.  I'm not sure my idea is even feasible, but maybe it's another building block to consider (the asymmetry of using payments to yourself as a trigger for something important).
140  Bitcoin / Armory / Re: Armory - Discussion Thread on: August 28, 2014, 05:57:30 PM
This might not be the right thread for it (maybe I should create a new thread) but it seems trivial enough that I didn't want to do that.

Anyhow, I have a couple lockboxes set up but what I find missing is the ability to include lockbox balances in the main window where it shows transactions as well as balances. I realize that lockboxes are for low transaction volume or multi-party escrow but for long-term storage, having the ability to show the balances in the main window would be pretty nice.

Well the general idea is that the main window is for showing you funds that your wallets have exclusive access to.  If someone imports a 2-of-3 lockbox (or someone plants it there), where you're only one signer, then they can send it money and make you think you received it (if you're not a savvy user).  Then they sweep the money out of it later.   We've seen users do some pretty "dumb" things, and by "dumb" I mean "they don't understand Armory, Bitcoin, transactions, multisig and/or all of the above."   

For that reason, we wanted to keep it separate.  And as you said, it's mainly for low-volume of transactions and where you may not have full signing authority over them.    However, I had thought about adding them to the main screen with a green tint (like offline wallets have a blue tint).  That would help identify that it's different from your regular wallets (though the interface might be a little too colorful).  Most likely, I'll just wait for the new wallets to be done, and then have M-of-N wallet alongside the regular wallets with a green tint.  Lockboxes can remain separate for escrow situations.
Pages: « 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 ... 186 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!