Wine Is Not an Emulator

Lol, someone just tried to split hairs and argue semantics with me, telling me that Wine Is Not an Emulator.

“Did you know that wine is not an emulator? It’s right there in the name! That’s what the acronym stands for!” Uh herp derp.
(I see someone has read the same wine FAQ I read 20 years ago. Yay you!)

I just thought I’d take a moment to agree on a deep technical level with this sentiment. Wine is, indeed, not an emulator. To quote one of the pre-eminent geniuses of our time:

Wine translates windows "stuff" to native linux "stuff"

See, wine pretends to be a different system, and translates “stuff” from the windows system so that it can run on your native (linux) system.

But OTOH an emulator pretends to be a different system, and translates “stuff” from the emulated system so that it can run on your native (linux) system.

The main distinction between the two, of course, being that emulators tend to actually fucking work.

Note
I couldn’t bear the possibility of someone coming along and thinking I don’t actually know the difference / distinction that the wine pedants insist on, so just for the record: the difference is that an emulator emulates the hardware stack whereas wine is totally-definitely-not-at-all-”emulating” the software stack, i.e the windows API.

When you post images of text

I’ve mentioned how insane it is for people to post images of text on the internet before, but today when someone sent me an image of some text that I needed to copy, I had a moment of clarity, and I came up with a marvellous way to express how this makes my soul, and that of my computing devices, feel. So, without much further ado:

When you post a screenshot of some text, rather than simply copy-pasting the text (so that I can, for example, then simply copy-paste it again into my banking program without the possibility of human error, rather than having to physically type out a bank account number like a goddamn caveman), both my soul and the soul of the device I’m using feel 1101100 1101001 1101011 1100101 100000 1110100 1101000 1100101 1111001 100111 1110010 1100101 100000 1100100 1111001 1101001 1101110 1100111 100000 1101010 1110101 1110011 1110100 100000 1100001 100000 1101100 1101001 1110100 1110100 1101100 1100101 100000 1100010 1101001 1110100 100000 1100101 1110110 1100101 1110010 1111001 100000 1110100 1101001 1101101 1100101 100000 1101001 1110100 100000 1101000 1100001 1110000 1110000 1100101 1101110 1110011 101110 100000 1000010 1100101 100000 1100001 100000 1110011 1100001 1101110 1100101 100000 1110000 1100101 1110010 1110011 1101111 1101110 100000 1100001 1101110 1100100 100000 1110101 1110011 1100101 100000 1100011 1101111 1110000 1111001 100000 1110000 1100001 1110011 1110100 1100101 100000 1101100 1101001 1101011 1100101 100000 1100111 1101111 1100100 100000 1101001 1101110 1110100 1100101 1101110 1100100 1100101 1100100 100001 100000 1010100 1101000 1101001 1110011 100000 1101000 1100001 1110011 100000 1100010 1100101 1100101 1101110 100000 1100001 100000 1110000 1110101 1100010 1101100 1101001 1100011 100000 1110011 1100101 1110010 1110110 1101001 1100011 1100101 100000 1100001 1101110 1101110 1101111 1110101 1101110 1100011 1100101 1101101 1100101 1101110 1110100 100000 1100110 1110010 1101111 1101101 100000 1110100 1101000 1100101 100000 1110011 1101111 1110101 1101100 100000 1101111 1100110 100000 1111001 1101111 1110101 1110010 100000 1101100 1101111 1100011 1100001 1101100 100000 1101110 1100101 1110010 1100100 100000 1100001 1101110 1100100 100000 1101000 1101001 1110011 100000 1100011 1101111 1101101 1110000 1110101 1110100 1100101 1110010 101110 100000 1011001 1100101 1110011 101100 100000 1100011 1101111 1101101 1110000 1110101 1110100 1100101 1110010 1110011 100000 1101000 1100001 1110110 1100101 100000 1110011 1101111 1110101 1101100 1110011 100000 1110100 1101111 1101111 101110 100000 1010101 1101110 1101100 1100101 1110011 1110011 100000 1110100 1101000 1100101 1111001 100111 1110010 1100101 100000 1101101 1100001 1100100 1100101 100000 1100010 1111001 100000 1100001 1110000 1110000 1101100 1100101 101110.

Alien Romulus Trailer!

Ooh! the Alien Romulus trailer has finally dropped! So I thought I’d share my thoughts.

I didn’t want any potential spoilers, so click below to see what I have to say about it

Reveal Profound Insights

WHO CARES?

To clarify: I haven’t watched the trailer, because who cares? And it’s not just Alien, and it’s not just because Ridley Scott is a hack with no interest in storytelling or writing. I’m just so fucking tired of sequels that I don’t even care about a new Alien movie. We’re now at a point where if you said “well there’s a one-in-ten-thousand chance that it might not be soulless drivel” I’d call you a naive optimist. Have you ever heard of Fede Alvarez? Me neither. In other words: the studio brought in someone they could bully.

Alien is now in the same bucket as Star Wars: I’ll watch another Alien movie after it has won ten academy awards. Or is directed by Tarantino or Scorsese. James Cameron isn’t even a sure bet anymore.

Make something new ffs. Or, failing that, adapt something awesome that hasn’t been adapted before, e.g Asimov, faithfully.

 

Dear Quentin

Please, please, please, I beg of you: don’t stop.

Or, more specifically, please don’t say “I’m done”.

That puts a finality to it that you might feel like you need to live up to.

I can’t make you keep churning out films, and even if I could I wouldn’t want to, because if you were making a movie you didn’t want to be making, it would be less perfect than it could be. And I’m not interested in seeing half-assed Tarantino movies – I’d rather see you stop forever than do a string of for-hire jobs you don’t care about.

No, I want more Tarantino films.

I’m not even saying that you can’t/shouldn’t stop (though for the love of jeebus please don’t). What I’m asking is that you don’t put the finality to it of saying “That’s my filmography finished”, like you’ve been saying you would.

Instead, if you really want to stop at ten, then maybe phrase it like “I’m going on hiatus, maybe forever”.

That way, you won’t feel like you’re going back on your word if you ever do decide to make a number eleven.

I wish, so much, that you would not stop at ten. I want eleven, and fifteen, and twenty-five. But your reasoning is sound and I can’t really argue with you – if you really don’t want to make #11, then I can’t do anything about that.

But, Quentin, I think cinema needs you.

And I have a question: is stopping really what you want?

I think that you must understand Scorsese’s sentiment about how the current glut of superhero trash is “not cinema”. He’s right. And there are only a handful of people still out there doing things differently, still making “real” cinema. Scorsese is one, you’re another.

It’s a tough call, but I think you’re probably better than Scorsese – I think you’re maybe the greatest director in the history of cinema. But I’m not a cinephile to your level, I’m sure you can name a dozen people who you think are better, and give long-winded and well-thought-out reasoning why they’re all better. And I certainly don’t have the chops to try to argue the point against you. All I can say is that I think all of your films are just about perfect, and I think you keep getting better.

Cinema needs you, Quentin. You represent maybe even 25-30% of the “true cinema” that exists in hollywood today. Yes, this is an extremely sad situation.

I’m so tired.

I’m so tired of superheroes, and sequels, and prequels, and remakes, and CGI action spectacles, and seeing things that defy physics to such a degree that it seems like a cartoon, no matter how photorealistically it’s rendered.

What I want to watch is something like…..every movie you’ve ever made. Something with some soul, and character, and depth, that doesn’t suck. Something where I can’t predict everything that’s going to happen before the opening credits have finished rolling.

Did I mention that I don’t really like westerns? I couldn’t care less, really, I think I’m too young, I’m a sci-fi guy. (please oh god please make the star trek thing!). But oh how I adored the Hateful Eight.

Your films transcend genre.

I don’t look at a synopsis or a trailer before I go and see your movies, I just hear “the new Tarantino”, and I go to the cinema. It’s been this way for years and years. I think I probably saw a trailer for inglorious basterds. I’m not sure about django. I definitely didn’t see a trailer for Hateful Eight, and I actively avoided foreknowledge about Once Upon A Time In Hollywood.

…If I may just stop for a moment to wax poetic on the masterpiece that is Once Upon A Time. I mean, they’re all masterpieces, but Once Upon A Time is so much more subtle, mature, and hilariously cathartic than any of the others, in such a lovely way. That ending scene with the title card caps off your fairy tale so magnificently. Somehow, despite me knowing that it was a Tarantino and having seen all your films and my having spotted your “punishing evil” theme a long time ago, the ending still took me completely by surprise. It was wonderful. And hilarious.

Your theme of using the punishment of evil as catharsis, which has been one of your core things since Basterds, seems to have gone unnoticed somehow in the discourse that I’ve seen. Or maybe I’m just not travelling in the right circles.

I love it so much. I keep asking myself what group of unambiguous evildoers you’ll put in your crosshairs next. If I may be bold enough to make a suggestion to perhaps the greatest filmmaker of all time, here it is: Sexual Predators. Make a movie about a guy named Harvey Epstein. Might be a bit of a difficult one to make, though.

Please don’t stop, Quentin. There will always be another group of evildoers out there. And I feel like as soon as you say “I’m done”, you’ll immediately think of #11, and regret saying it. And then you’ll either make #11 and undermine your credibility a little, or we’ll all miss out on a potentially amazing #11.

So here’s what I ask of you: Please don’t say “I’m done”, instead say “I’m taking a break” and don’t feel under any pressure to make any more. But if you come up with something you want to do, you shouldn’t let some artificial barrier stop you, and you shouldn’t have to intellectually manoeuvre to do it with conceits like “well this film isn’t part of the main filmography due to “. Please, leave yourself in a position where if you decide that you want to make a film, you can just go make that film.

I’ve seen more than one artist declare that they’re “done”. Perhaps the best example I can think of is one Trent Reznor, who I’ve heard saying things very close to “I’m done” on more than one occasion. But he’s not done, and I don’t think he ever will be while he’s alive and able-bodied – it’s my belief that the true artist can’t help himself but to create, and that when these people say things like “I’m done”, it never goes how they seem to think it will, and in my mind they just undermine their credibility, demonstrates a lack of self-awareness, and lower their esteem a little in my eyes when they say things like this. I wish you’d be smarter than that.

I can’t tell you what to do. I wouldn’t want to force you to do anything you don’t actively want to do. These are all just suggestions and my opinions based on not very much of anything at all. My one core insight here is this: If you say you’re done, you might then find yourself in a situation where you want to do #11 but haven said you wouldn’t, so feel like you shouldn’t.

And that would be, in my estimation, perhaps the greatest tragedy in the history of cinema, because in my opinion, you might be the greatest filmmaker of all time.

And I leave you with one final remark:

Thank you.

Why you’re wrong if you think spaces are better than tabs

OK, time to finally throw my hat into the political ring.

But I want to state for the record as a disclaimer that I do so not based on opinion, but merely based on the facts:

Tabs are better than spaces.

Now, quiet, you python people. You’re just wrong. I know that your style guide PEP says you should use 4 spaces.

But it’s wrong.

Now, you’ve all heard the old unix greybeard argument about how your files will be 2% smaller if you switch to tabs instead of spaces, because you’ll use 1 tab character rather than 4 space characters. While this argument is correct, it has nothing to do with my argument (it’s just another benefit of using tabs, as far as I’m concerned). But a small saving in file size isn’t a reason to change how you do things.

The reason you should change how you do things and start using tabs instead of spaces is simple: it’s the correct answer. But that’s not actually my primary reason. My primary reason is that it’s better.

Now, this might sound arrogant or whatever, but allow me to explain what’s actually going on under the hood, and how you can configure your editor correctly and we can all live in peace and harmony and never worry about this whole indentation thing ever again.

A lengthy treatise about the history of text (and how it’s indented)

A long long time ago – even before Nirvana – there were mechanical typewriters. That’s where the tab key comes from, since our computer systems were originally used with teletypes, which were based on typewriters.

But typewriters didn’t just have a tab key – they also had tab stops – a bar along the back of the typewriter with several movable latches which allowed you to set the tabs at any position you like. The behaviour of the tab key and tab stops in a WYSIWYG word processor emulates this pretty faithfully (though it is a superset of typewriter functionality, e.g typewriters had a limited number of tab stops and afaik could only do left-aligned tab stops).

When we started using teletypes and terminals, we were originally using fixed-width (i.e the screen was typically 80 or sometimes 40 characters wide, and used a monospaced font) text-only monochrome displays. And back in the 60s IIRC the ASCII standard was developed as a descendant of the baudot code used on telegraphs.

This standard defines a bunch of characters, and a bunch of control characters. If you’re familiar with ASCII or unicode at all you’ll recognise some of them. Some common examples:
character 32* – space
character 10 – linefeed
character 13 – carriage return
and character 65 – an uppercase “A”.

(* i tend to think in decimal, these are decimal values. All ascii values here should be decimal for consistency)

If you’ve ever played with colours in your terminal prompt, you might also recognise escape as character 27.

There are a bunch of these available, and you can see the full list with a simple ‘man ascii’ (assuming you have the relevant packages installed, apt-get install man-pages should do it on debian).

In this table, we see my beloved tab sitting at position 9. And you’ll also see one that you probably haven’t used before – character 11 – “vertical tab”.

All of these things are there for a reason, even though we almost never use some of them (like vertical tab) today.

There are a few intricacies of the ascii table which aren’t mentioned or immediately obvious from reading the man page I pointed you to. They’re a little more obvious if you look at a 4-column ascii table with the hex and binary values (<-- I'd encourage you to open that in a new window so you can look at it while reading this lengthy tome).

With this layout, it becomes more obvious that the first 32 ascii characters are in a special class that you probably already know about - these are the control characters. There is one other control character which is outside of this range and a special case - 127 / DEL.

Less Obvious is that this pattern of categorising the ascii table into sets of 32 applies for all four columns. The ASCII table was intended to be broken up this way: WE have four broad categories of characters here: control characters, symbols and numbers, uppercase, and lowercase.

Note another correspondence when we break the ascii table up in this way: the lower word (i.e the last 4 binary digits) are the same for each character for both uppercase and lowercase - we can think of the upper word / first four bits* as a "mode selector" to select between columns on this table, and the lower word selects one of the rows, giving a particular character.

(* in reality it's only three bits in the upper / most significant word, because we're only talking about 7-bit "pure" ascii today, but I'll be referring to them as two 4-bit words here to make things clearer - the most significant bit is always 0 for our purposes today)

This idea is modelled on an earlier code (baudot? something else? the history is long) and is in turn modelled on typewriters and how the shift key worked: On a mechanical typewriter, the shift key worked by physically shifting the printing mechanism or head (versions differed), and each "letter-stamper-thingy" on the typewriter had two characters - uppercase and lowercase (the names of which in turn come from a printing press operator's two cases of letters - uppercase tended to be used less often, so the operator would place it in the upper position, further away from his working area) - and depending on the position of the shift mechanism, selected between the two characters, giving each normal key two functions. Similarly, the number keys had symbols as their "uppercase character".

This design characteristic makes it pretty easy electronically to implement this "shift" mechanism for most of the keys on your keyboard without any special logic to handle upper/lowercase - each key has an encoded 4-bit value, and depending on the state of the shift key we set or unset bit 3 of the upper word (it's a little more complex than this these days, e.g capslock).

And that's why teletypes were fairly common already by the time computers were invented - they're a lot simpler - the character table is designed to make it easy electronically.

But it doesn't stop at the keyboard, it's also easier to interpret on the decoding end: if your bit 3 is set, you want to select a lowercase glyph. This is a very easy test that can be done with few logic gates, and in very few instructions on most(all?) computer processors.

So this meant that when computers came around, and we wanted a system to have them represent text and interact with keyboards, adopting this table made a lot of sense due to the slow speed of those early machines - efficiency was everything. And so ASCII was born - people took clever ideas of their predecessors and expanded on them.

You'll also notice that in this layout, the symbol characters between the uppercase and lowercase and at values >=123 make more sense – if you’ve ever looked at an ascii chart and wondered why e.g the symbols or letters weren’t all in one contiguous region, this is why!

(Today, we’re not technically using ASCII anymore – these days, all modern operating systems use unicode. But unicode takes this compatibility thing that ascii did even further – you may know that unicode is byte-compatible with 7-bit ascii, so a pure ascii file (and most english text from other similar encodings, e.g iso-8859-1, too) is also a valid, identical unicode file)

So far we’ve only covered columns 2-4, but a simple glance at our ascii table shows that column 1 is special. And you already know why: none of these are printable characters – except, debatably, tab.

You probably know about nonprintable characters – unicode means that most computers have lots and lots of them today. But you might not know the distinction between a printable / nonprintable character and a control character. And that’s what this column actually is – these are the control characters, not the nonprintable characters.

There is one other control character – DEL – which doesn’t live in this column. I’m not sure where it’s position at the end of the table originated and how that decision came about. But this is also relatively easy to test electronically – a 7-way AND gate on your 7 bits, and in code. Putting it at the end of the table like that makes it a relatively simple exception that you need to accommodate.

They’re control characters because this encoding was invented to provide all the functionality of all the various teletype machines out there, providing “one encoding to rule them all”, which should be able to work with any teletype, providing interoperability.

Teletype machines needed to have a way to signal to each other that this should be the end of the line, for example, and so you have a linefeed character. Today you might think of a linefeed as “just another character”, but the term “control character” isn’t just a pretty name – in it’s original intent, “linefeed” is not a character but an in-stream instruction for the receiving device, which means “move the physical roller which controls the vertical position of the physical paper in the actual real world one line down”. Presumably on some teletypes it also meant “…and return the physical IRL print head to the first column”, and on some it didn’t. In order to support all the features of all the teletype machines out there, a bunch of control characters were needed.

No, I have no idea what half of them do, either.

I do know about a couple that you may not have heard of. For instance, there’s the one that I call “EOF” – end of file, but which the ascii table lists as “End Of Transmission”, at position 4. Unix implements this as it’s “End Of File” character – this is what your terminal sends down the line when you press CTRL-D. It’s why you can press CTRL-D to log out of your terminal. It’s also why you can do

$ cat - > /tmp/foo (enter)
foo(enter)
bar(enter)
(ctrl-d)
$ cat /tmp/foo
foo
bar

to create a file which includes linefeeds from the unix prompt, using cat to read from stdin and then using ctrl-d to send the the end-of-file character to tell the system that you’re done inputting data.

A more commonly known one due to a decision by microsoft to be contrarian is the difference between a linefeed (“move 1 line down”) and a carriage return (“return the carriage (or cursor) back to column 1″). Technically microsoft’s preference of doing both a carriage return and linefeed is perhaps more historically accurate, since in almost all cases you would want to do both of these things when the enter/return key is pressed, whereas unix says that a linefeed implies a carriage return, and interprets carriage return as “*only* do a carriage return, not a linefeed”, meaning that on unix CR allows you to “echo over” the same line again, and that means you can draw bar charts in bash using echo -e “\r$barchart” in a loop.

I member a time when *nix used LF, Windows used CR + LF, and macs used CR just to be totally goddamn annoying. Apple adopted LF along with unix with the advent of Mac OS X, so that’s not a thing anymore unless you’re into retrocomputing.

You may have seen the good old ^H^H^H^H^H^H joke, where a person is deleting their code. This is because the backspace character/key at position 8 was traditionally mapped to CTRL-H, which could render on some terminals visibly as ^H rather than a backspace depending on a ton of hardware variations and compatibility settings on the terminal you were sitting at and the terminal you were talking to.

CTRL-L clears the screen on *nix because it’s mapped to the form feed character at position 12. Likewise CTRL-C is mapped to character 3 (end of text, i’ve always called it ‘interrupt’). I believe that the dreaded CTRL-S and CTRL-Q to freeze/unfreeze output on your terminal are mapped to control characters, too, but I couldn’t tell you which ones.

There’s also a fun one which doesn’t appear to be mapped on my modern linux machine – CTRL-G, to ring the terminal bell.

These control key sequences exist because when people started using different terminals to talk to unix systems, they quickly found that not all terminals were the same. E.g not all of them had a ‘backspace’ or a ‘clear screen’ key, but all of them had some kind of “control” or “modifier” key, so the control sequences were added for people who didn’t have the corresponding key. To this day, I have a ‘compatibility’ tab in my terminal which allows me to tell the terminal to send a CTRL-H key sequence for backspace, amongst other things.

A short aside:

As I’ve demonstrated above, one of the pitfalls that we find ourselves running into on modern unix systems is that by the time you get to a terminal emulator in your gpu-accelerated, composited GUI, you’re running many layers of abstraction and compatibility deep: Your terminal is emulating and backwards-compatible with VT100 dumb-terminal hardware from perhaps the 1970s, patched to be able to support unicode, which is itself a backwards-compatible extension on top of the backwards-compatible extension of a previous code that is ascii, going all the way back to bardot and the telegraph in the late 1800s. So, no, it’s not as straightforward as you’d expect to write code to say “move the cursor to position x,y” on a unix console.

This causes us a bunch of problems and causes us limitations on modern desktop unix systems perhaps more often than it helps the average user. If you read the unix-hater’s handbook, you’ll find an entire chapter on how /dev/tty and the terminal emulator is the worst thing in the entire universe. This is generally acknowledged as one of unix’s “foibles”.

So why hasn’t anyone done anything about all that legacy stuff?

Because one of the joys and beauties of unix is the deeply-ingrained principles of backwards compatibility and portability that came to embody the unix philosophy over the course of decades. Which means that I can still (relatively) easily connect my modern terminal emulator up to an antique teletype and have it be compatible to a pretty decent extent.

This is an important quality of unix. It’s important to keep these open, compatible standards around for the purpose of the preservation of information. If we had moved from ascii to an incompatible standard, we would have had to convert every single document ever written in ascii into that new standard, or potentially lose the information as the old and incompatible ascii standard became more and more rare and unknown.

And if you search youtube, you can find people hooking modern systems up to antique teletypes. For my money that makes it all worth it.

But finally, Let’s talk about tab.

Note that space is up at position 32, in column 2 with the printable characters. I’ve seen space categorised as a nonprintable character, but this is the wrong way of thinking about it. A better way is to think of space as a fully black glyph on an oldschool fixed-width text terminal (regardless of whether or not it was actually implemented this way). You want a space character to erase any pre-existing character at that position on the screen, for example. And you want that “move on to the next screen column with each keypress, so that the user can type left-to-right” functionality that you get from making it a fully-black glyph.

For example, in bash:

echo -e "12345 \r     67890"

doesn’t give you the output:

1234567890

it gives you:

     67890

- the spaces erase the previously-printed characters.

Space is a printable character.

Tab is a control character.

I was tempted to write “which means ‘print 4 spaces’ on my system”, but I thought I’d do another bash example/test/demonstration, and I surprised even myself. On my system, it’s not “print 4 spaces” at all:

$ echo -e "1234567890\r\tABCDEF"
1234ABCDEF

I had expected this to echo

    ABCDEF

But it turns out that the implementation of tab on my system is a bit more complicated than that. Instead it means “indent by one tab width”. If I did:

$ tabs -8
$ echo -e "1234567890\r\tABCDEF"

I’d get:

12345678ABCDEF

And if I do:

$echo -e "\tsomething"
	something

That’s not 4 spaces that it’s printed at the start of the line – try selecting that text – it’s a single tab character, and its width is whatever your tab width is set to (since it’s being displayed on your machine right now).

I think this demonstrates pretty clearly that space is printable and tab is control :)

When fixed-with, monochrome teletypes and terminals were the norm (and for a long time they were the best way for humans to talk to computers – they beat the shit out of punchcards), and the ascii standard was adopted for use on a screen – with generally more capability than a teletype (a screen can easily delete characters / clear itself, and can emulate an infinite roll of paper by scrolling lines), indentation came up. This caused an issue at the time because they didn’t have WYSIWYG word processors with an infinite number of center-aligned tabs that could do everything your typewriter could do. Instead, they had this atomic system – there was no physical way on these devices to have a ‘half-character-width’ tab, like you could on a typewriter. And not a lot of memory or processor power for implementing fancy rules around kiiiiinda-trivial stuff like tabs. So the compromise that was reached was making a tab equal to a certain number of spaces.

But how many spaces? Some said 4, I think some said 8, and some said 2. This is what the ‘tab width’ setting of your text editor means. I’m sure others did more complex things with tab, like “indent to the same column as the next word from the line above”.

I’m not sure where the convention of “a tab equals 4 spaces” came from, but that’s certainly the one that became dominant at some point. Maybe it’s standardised somewhere, maybe it’s just a popular convention.

The point is, the way that tabs was handled used to differ at one point between different terminal hardware and/or settings. This is why tab settings are so seemingly-complicated in plaintext editors today – Similarly to why ASCII has so many control characters, terminal emulators wanted to be able to emulate multiple types of terminal, so the tab settings had to be a superset of all of them.

The practical upshot of all this means that by correctly using your IDE’s “Tab width” setting, if you use tabs for indentation, you don’t need to have this argument about whether a tab should be 2 or 4 or 8 or 32 spaces: You simply set the tab width to your preference and tell your IDE to use tabs for indentation, and you’re set, and can see it indented however you like, and so can everybody else. We can all just use tabs correctly, and live in peace and tolerate each other’s preferences for indenting.

(The correct IDE settings are: Tab width: whatever you prefer; Use tabs for indentation, never spaces; aggressively and automatically convert groups of spaces *at the start of the line* into tabs. Auto-indent. If your editor can’t do these things, you should use a better one. Scite and Geany are good).

And there are valid preferences, too – I personally use 4 spaces indents on a desktop or laptop machine where characters are small and screen real estate is cheap, but if you’re coding on a small form-factor device with a small screen that can’t display long lines easily and large enough to be readable (like my openpandora), an indent of 2 characters is much more workable.

Another still valid though less-relevant-today reason to have a preference about tab width is something i only touched on very briefly earlier – some of these fixed-width displays were 40 columns, and some were 80 columns. The most common 40 column displays you would see were on the 8-bit microcomputers of the 80s, which tended to be built to hook up to TVs via an RF modulator, typically leading to insufficient resolution to do 80 columns and be readable. On a 40 column device there’s a good argument for a smaller indent for the same reason as I have on my openpandora – screen real estate.

So to start summing this all up and getting back to my original point, and although I’ve spent a million words describing the “why it’s more technically and semantically correct”, my #1 argument for tabs is not even based on any principle of it being more technically or semantically correct, or respecting the past, or anything like that.

I argue for tabs over spaces for indentation based on features: Done correctly, it removes the whole “How wide should an indent be?” question and allows users to decide based on their preference while still working together and having consistent code.

But I do also argue for it based on a nerdy “technical correctness” and “compliance with well-reasoned specifications” principles, too: In python, tab is even more explicitly semantically correct – in python we use indentation to signal a block of code to the interpreter. That’s the job of a control character, not of a printable character. That’s exactly what control characters are designed for. Those smart guys back in the 1960s or 1910s or whenever it was knew what they were doing when they put space in there with all the other printable characters.

However, note that when I say that you should be using tabs for indentation, I do not mean they should also be used for formatting – that does cause issues, as many advocates of space have pointed out in the past. I think maybe this is the most common pitfall is that people run into which makes them prefer spaces. But understanding these tab settings is not hard, and there’s a benefit for all users, and it’s the correct option, and also it saves you some space, because one tab character is one quarter the size of 4 space characters!*

(* this old argument for tabs is actually not really true anymore a lot of the time: if you’re transferring this as plaintext over http, you’re probably using a modern web browser which supports http2 and/or gzip compression, and it’s quite likely you’re talking to a server that also supports it, so there’s a very good chance that you’re getting those 4 space characters gzipped, even if you’re not minifying your javascript, and in that case those 4 tabs will take up perhaps 10 or 11 bits of data vs the 8 bits a tab would use )

So, for example:

#!/usr/bin/env python3

def something():
	# this line is indented. You should use a single tab character to indent it.
	#    but if I want to indent this line inside the comment, this is formatting, 
	#    and I shouldn't use tab for that.
	#
	#<-- tab
	#    <-- spaces      
	#
	# so, for example, to make an ascii-art table outlining the characters on this line:
	#    ----
	#
	# it would be:
	#  pos | character
	# -----------------
	#   1  | tab
	#   2  | hash
	#   3  | space
	#   4  | space
	#   5  | space
	#   6  | space
	#   7  | hyphen
	#   8  | hyphen
	#   9  | hyphen
	#   10 | hyphen        # note consistent column widths here, 10 is longer than 9, 
	#                      #   don't use tabs here between the hash and pipe characters

	run_code()

In the code world I've found that this formatting rule boils down to a pretty simple generalisation: left of the comment signifier (the hash character in python), that's indentation, right of it is formatting.

(yes, there are always weird edge cases, like heredocs, where formatting and indentation simply cannot be done well and unambiguously, but I've found this system to work pretty well. In these cases you should do what seems best and cleanest)

And now hopefully you know why tabs are correct and spaces are wrong. Please feel free to disagree and argue that the PEP says so, but just know advance that if you do that you will be wrong.

More seriously, I would welcome discussion over some of the edge cases and pitfalls that people can run into with regard to this stuff. I find that a lot of the issues that people complain about with tabs also occur with spaces. It'd be cool to put together an exhaustive resource on the subject to document what is totally the empirically correct way to do it.

If you made it through this may thousand rambling words over something that many would consider trivial, thanks for reading :)

OMG LOOKIT WONT SOMEBODY THINK OF THE CHILDREN!!!

Here’s a news story I saw today:

…And here’s a totally unrelated Open Letter To Facetube From US, UK, and Australian Leaders Regarding Use of End-To-End Encryption

Some choice excerpts from the letter:

“We therefore call on Facebook and other companies to take the following steps:
• Enable law enforcement to obtain lawful access to content in a readable and usable format”

“We are committed to working with you to focus on reasonable proposals that will allow Facebook and our governments to protect your users and the public, while protecting their privacy. Our technical experts are confident that we can do so while defending cyber security and supporting technological innovation.

(emphasis mine)

So…. Obviously… we should backdoor all military encryption, right? After all, this is only one pedo that has been found in the ranks of the RAAF. Who knows how many there could be out there? And in other arms of the “defense” forces? After all, we have documented examples of war criminals and murderers who remain unprosecuted.

(Speaking of war criminals, BTW, mad props to my main main, John Howard, for the recent 20 year anniversary of his totally successful eradication of the taliban).

We know for a fact that these systems are being used to commit crimes.

Do the police even have easy access to these encrypted military communication channels? Perhaps there’s a ring of pedos hiding in the very defence forces we so “love” and “admire”! Oh noes!

Worse, if we’re backdooring civilian communications, as you’re so keen do to, and the only properly secure channels left are military, then wouldn’t it be logical for a pedo to simply enlist in the military, where he can groom children all over the world totally securely? Perhaps most of the members of most of our armed forces are out there exploiting children!!! The only way we can know for sure is if we’re able to monitor their communications.

Perhaps if the police had backdoor access to military communications, they could have prevented the unfortunate actions of those soldiers in afghanistan murdering unarmed civillians and routinely carrying throwdown weapons to hide their war crimes. You know, those actions of a few bad apples who just happen to remain unprosecuted and totally definitely aren’t just the stupid ones who got caught doing it on film.

So, I mean, Obviously the best solution is obvious, right? We should backdoor all military encryption, right?

If we backdoored military encryption, we could totally protect the children from pedos!

Right?

I mean, you’re really interested in protecting the children, right? It’s not just about surveillance, right?

You totally have technicamal expamerts who assert that backdoors can be done safely, so there’s no problem, right?

You’re not full of shit, right?

So it’s pretty damn clear to me: Not only should Australia be backdooring all of it’s military encryption as a matter or urgency, we should be urging our allies to do the same. After all, the muurican military is much much bigger than ours – statistically there’s going to be even more pedos in the muuurican army! We need to catch them and stop these heinous acts of child abuse! (oh, and also, you know, maybe a reduction in the the whole “totally definitely not systemic war crimes” thing, as an added bonus)

Won’t somebody think of the children! And backdoor all military encryption!

This site requires IE6

Welcome to the new and wonderful world of the “modern” web, where you can be running a browser released 2 months ago and it’s considered OK to not support it because it’s not one of the big three.

I particularly adore the fearmongering security theatre used as an excuse for their not bothering with progressive enhancement and compatibility.

Now, I suppose to be fair I should concede that although I do label it as a “blatant lie”, it is possible that I might be wrong and this might not actually be a lie: It could just be that they’re simply incompetent at web development.

No Free Napkins

Once upon a time, I was on my way to work in the morning. I was catching the tram to the CBD.

I hadn’t felt awesome before I left home, but as I sat on the tram i started feeling worse and worse. In particular, my nose started running. And I didn’t have any tissues with me. No good.

At a certain point, in the CBD but still not quite at work, I had to do something because my runny nose was becoming unmanageable. So, spotting a 7-11, I jumped off the tram. In a hurry.

With no time to fuck around, I ran into the 7-11 and headed for the pies and sausage rolls, looking for napkins. There weren’t any. Instead, there was a sign saying that napkins were available at the counter. So I ran to the counter.

“I need some napkins please”, I said.

The cashier handed me one tiny napkin. Nowhere near enough for the massive torrent of mucus I’d been holding back for about 15 minutes by that point.

“I need more than that, I have to blow my nose”, I managed to get out without leaking anything anywhere.

With an expression conveying very clearly exactly how few fucks he gave, the cashier refused.

“No, only one. You can buy tissues”, he said.

“I don’t have time for that, give me more napkins”, I said.

“No”, came the reply, continuing to be accompanied by the aforementioned expression.

So I blew my nose on the napkin he had given me.

Met with roughly a megalitre of mucous at high pressure, the flimsy and insubstantial napkin disintegrated, sending pieces of wet napkin and most of the megalitre of snot all over the cashier’s counter and all over the chewing gum and chocolate bars in front of it. This procedure left me holding half of an inadequate-for-blowing-ones-nose napkin which was dangling and dripping many ropes of horrible semi-liquid stuff. Once the procedure was complete, every subtle movement of my hand caused an exponential jiggling in the awful thing I was holding, and that jiggling then caused a hundred fresh droplets to rain down onto the counter in a hundred interesting new trajectories.

As I turned and left the store, taking care to put what hadn’t dripped onto the counter, products, and floor into the bin, I said:

“Next time, don’t be a cunt”

983 days uptime

bye bye hactar. You were a good server. It’s a pity we didn’t quite make it to 1000 days.

(the machine was decommissioned today by people who aren’t me. Interestingly, this action immediately caused a website outage. I’ll refrain from any more blatant “I told you so”‘s).

Nice work, youtube!

Aaaaaaaaaaaaaaand this is what happens when you have people who don’t understand the technology work on one layer of abstraction, using inefficient frameworks to build things that could be built better with just a little skill and hard work, with no incentive or curiosity to care about any of the thousand other layers of abstraction:

youtube.com is literally more than 50% invalid HTML.

Nice work!

I’m guessing their unit tests don’t include running the output through a HTML validator.

There’s an old saying…

They fucking renewed Alex Kurtzman’s contract?!?

There’s an old saying that I think is apropos here: “Never Attribute to malice that which can be attributed to stupidity”

I suppose technically I had jumped the gun on trek: I saw the malice and interpreted and called it out as such. But I suppose, technically speaking, until today, you could have made the claim that it was just stupidity, and that CBS had accidentally hired Alex Kurtzman as a TV showrunner rather than as filler for a septic tank system.

But today proves that it wasn’t stupidity at all, it was definitely malice. CBS’s goal is to kill off Star Trek.

But there’s still one part of it that I still don’t understand: Why renew Kurtzman’s contract? He’s already killed it off pretty effectively already – does he really need another 5 years?

I suppose it has been around for a long time and it’s got a habit of being revived and renewed. So if you hate Star Trek and you want to kill it off and make damn sure it stays dead, you might extend Kurtzman’s contract. That would make sense I guess.

While I’m here, I should post the poster that I made a while ago for RedLetterMedia’s excellent 5-hour series of reviews of picard:

Can a sequence of bytes be offensive?

Do you find this image offensive?

(This is an enlarged version, Here’s the original BMP).

OK. So I think we can all agree that’s not a pretty picture, but it’s not offensive.

What if I do a hexdump of the file:

0000000 4d42 3a1a 0000 0000 0000 0036 0000 0028
0000010 0000 004b 0000 0041 0000 0001 0018 0000
0000020 0000 39e4 0000 0b13 0000 0b13 0000 0000
0000030 0000 0000 0000 4552 4154 4452 4e20 4749
0000040 4547 2052 4320 4948 4b4e 5320 4f4c 4550
0000050 5720 474f 4420 4741 204f 4146 4747 544f
0000060 4320 4e55 2054 4942 4354 2048 4857 524f
0000070 2045 494d 4744 5445 4120 5353 4f48 454c
0000080 4620 4355 574b 5449 4d20 524f 4e4f 4420
0000090 4d55 4142 5353 4920 4944 544f 4620 4455
00000a0 4547 4150 4b43 5245 5320 554c 4254 4741
00000b0 4c20 5a45 4942 4e41 5320 482d 312d 542d
00000c0 4320 524f 534b 4355 454b 2052 5550 544e
00000d0 2041 5053 4349 4820 524f 2045 4146 4747
00000e0 5449 4d20 4e55 4554 2052 4f47 4444 4d41
00000f0 494d 2054 4946 474e 5245 5546 4b43 5245
0000100 5720 4152 5050 4e49 2047 454d 204e 4152
0000110 4e55 4843 4a20 4e55 4c47 2045 5542 4e4e
0000120 2059 4f4d 454c 5453 4120 5353 4142 474e
0000130 5245 5320 4948 4554 5441 5245 4720 444f
0000140 4144 4e4d 5449 4120 414c 4b53 4e41 5020
0000150 5049 4c45 4e49 2045 5341 2d53 4950 4152
0000160 4554 4220 5455 2054 5546 4b43 5020 5355
0000170 4953 4720 5449 5420 4f4f 5354 4d20 4854
0000180 5245 5546 4b43 5245 5220 5041 5945 4220
0000190 5455 4854 4145 2044 5245 544f 5349 204d
00001a0 4f54 474e 4555 4920 204e 2041 5341 4853
00001b0 504f 4550 2052 4c53 4145 595a 4320 4159
00001c0 494c 2053 4142 474e 5020 4f52 204e 5455
00001d0 5245 5355 4220 5421 4843 5320 4148 4747
00001e0 5245 5420 5345 4954 4c43 2045 5754 5441
00001f0 4320 434f 4a4b 434f 454b 2059 4f44 4b4e
0000200 5945 4952 4242 5245 4420 5530 4843 2033
0000210 5453 4952 2050 5341 4653 4355 204b 4942
0000220 2047 5242 4145 5453 2053 4853 5449 4f48
0000230 5355 2045 5550 5353 4549 2053 4f47 5344
0000240 4144 4e4d 4d20 5255 4544 2052 5546 4b43
0000250 5245 5720 5445 4142 4b43 4420 474f 4947
0000260 2d45 5453 4c59 2045 5543 4e4e 4320 4948
0000270 434e 4620 4f52 5454 4e49 2047 5542 5454
0000280 462d 4355 204b 4f43 4b43 5553 4b43 4445
(Much, much more…)
0000290 4720 444f 442d 4d41 5320 414d 5452 5341
00002a0 2053 4c42 4e4f 4544 4120 5443 4f49 204e
00002b0 5544 424d 5341 2053 4c50 5941 4f42 2059
00002c0 4946 5453 5546 4b43 5245 2020 4c46 474f
00002d0 5420 4548 4c20 474f 5320 4948 4854 4c4f
00002e0 2045 4f46 544f 4f4a 2042 414d 5453 5245
00002f0 4142 4554 5320 4355 534b 4320 4f4f 4843
0000300 4549 4120 3552 2045 5053 4b49 2053 4853
0000310 5641 4445 5020 5355 5953 4320 4152 4b43
0000320 5245 4620 4255 5241 4220 4552 5341 4d54
0000330 4e41 5320 4948 5454 4445 5220 5041 4e49
0000340 2047 5754 5441 2053 5542 4c4c 5944 454b
0000350 4620 4552 4b41 4659 4355 454b 2052 4850
0000360 4b55 4e49 2047 4f53 204e 464f 4120 4d20
0000370 544f 4548 4c52 5345 2053 4f47 5441 4120
0000380 5353 494b 5353 4120 5353 4148 2054 4144
0000390 4d4d 5449 5320 4948 4654 4341 4445 4620
00003a0 4355 4220 4c41 204c 5247 5641 2059 4943
00003b0 4352 454c 454a 4b52 4a20 4741 464f 2046
00003c0 494b 4b4e 5453 5245 5020 5349 4553 5352
00003d0 4e20 4749 4e20 474f 5420 5431 3154 3545
00003e0 5220 5041 5349 2054 5341 4253 4e41 4547
00003f0 2044 4146 4154 5353 4120 4952 4e41 4720
0000400 4e4f 4441 5020 4f4f 2050 494e 4c47 5445
0000410 4220 4f4f 4954 2045 494e 4747 5245 2053
0000420 5450 4348 4720 5249 534c 4720 4e4f 2045
0000430 4957 444c 4320 4e55 4c49 494c 474e 5355
0000440 5320 444f 4d4f 4420 4349 534b 5049 4550
0000450 2052 4542 5641 5245 5020 5548 454b 2044
0000460 4147 474e 4142 474e 2053 5341 4253 4e41
0000470 4944 2054 5541 4f54 5245 544f 4349 4320
0000480 524f 2050 4857 524f 2045 5341 5353 4f48
0000490 454c 4420 4f4f 494b 2045 4954 5454 4320
00004a0 434f 4d4b 4e4f 4c47 5245 4320 4e4f 4f44
00004b0 204d 4853 5421 5320 414e 4354 2048 5243
00004c0 4341 2d4b 4857 524f 2045 4e45 414c 4752
00004d0 4d45 4e45 2054 4853 5449 5242 4941 534e
00004e0 5020 4345 454b 4852 4145 2044 554e 5454
00004f0 5245 5020 4445 504f 4948 454c 4220 4f4f
0000500 4942 5345 5220 4d55 2050 4944 4b43 4f48
0000510 454c 5320 444f 4d4f 5a49 2045 4d50 2053
0000520 4f48 5054 5355 5953 4320 5241 4550 2054
0000530 554d 434e 4548 2052 554b 204d 5053 4341
0000540 4620 4355 414b 5353 5020 5349 5053 4749
0000550 4120 5353 4f4d 4b4e 5945 5220 5355 5954
0000560 5420 4f52 424d 4e4f 2045 4c4f 2044 4142
0000570 2047 5546 4b43 554e 5454 4620 4355 574b
0000580 4948 2054 414d 454b 4d20 2045 4f43 454d
0000590 4e20 4749 4547 2052 5546 4b43 4445 5055
00005a0 5320 4143 544e 4c49 2059 5546 4b43 4957
00005b0 5454 5420 504f 454c 5353 4620 4355 4d4b
00005c0 2045 4b20 4e4f 5544 204d 454c 4550 2052
00005d0 4c43 5355 4554 4652 4355 204b 5754 5434
00005e0 4420 4d55 4853 5449 4720 4e45 5449 4c41
00005f0 2053 5341 4d53 5341 4554 2052 4e53 4655
0000600 2046 4956 4741 4152 5420 5255 2044 5053
0000610 4441 2045 5550 414e 4e4e 2059 4f47 444c
0000620 4e45 4853 574f 5245 4520 5441 4820 4941
0000630 2052 4950 2045 4544 5045 5420 5248 414f
0000640 2054 5341 4d53 4e55 4843 5320 4e4f 4f20
0000650 2046 2041 4857 524f 2045 4f48 2057 4f54
0000660 4d20 5255 4544 2050 5546 4b43 4e49 4247
0000670 5449 4843 4320 4e55 2054 4148 5249 4220
0000680 4c41 204c 4153 4b43 5320 4c50 4f4f 4547
0000690 4720 5941 4154 4452 4620 4355 574b 5449
00006a0 4620 4d45 4f44 204d 4f48 4e52 4549 5453
00006b0 4620 524f 5345 494b 204e 5546 2051 4548
00006c0 3131 4720 4f4f 4843 4320 4259 5245 4553
00006d0 2058 4f43 4b43 4f4c 4556 2052 4f4d 4854
00006e0 4641 4355 494b 474e 2053 4157 4b4e 2059
00006f0 4950 4345 2045 464f 5320 4948 2054 4554
0000700 2041 4142 4747 4e49 2047 3053 2042 4f50
0000710 454c 4d53 4b4f 5245 4220 5449 4843 5245
0000720 5320 485f 495f 545f 4620 4f4c 5a4f 2059
0000730 4550 494e 4253 4e41 4547 2052 5542 5454
0000740 4843 4545 534b 5320 4e41 4547 2052 4d4c
0000750 4146 204f 4853 5449 5945 4320 4f4f 534e
0000760 4620 4355 544b 5241 2044 4f43 4b43 4e4b
0000770 4b4f 5245 5420 4152 4e4e 2059 4c43 5449
0000780 524f 5355 4720 5941 2053 414e 495a 5620
0000790 414a 4a59 5941 4620 5349 4654 4355 454b
00007a0 2052 5246 4545 2058 5341 4253 5449 2045
00007b0 3044 474e 4d20 4854 4652 4355 494b 474e
00007c0 4420 4b59 5345 5020 4f4f 2050 4843 5455
00007d0 2045 4148 444e 4f4a 2042 5550 414e 594e
00007e0 4b20 4f4f 4843 4220 4f4f 455a 2052 4946
00007f0 5453 5546 4b43 4445 4e20 4749 4147 2053
0000800 4543 5652 5849 5320 4441 5349 2054 5546
0000810 4b43 2041 4950 5353 5020 4749 4420 4349
0000820 574b 4545 2044 4553 4f58 5320 414c 544e
0000830 5945 2045 4f4d 4854 4641 4355 414b 2053
0000840 5242 574f 204e 4853 574f 5245 2053 494a
0000850 5a5a 5020 4e45 5349 5550 4646 5245 4320
0000860 434f 4d4b 4e4f 454b 2059 5553 4b43 5341
0000870 2053 414c 4452 5341 2053 5258 5441 4445
0000880 4620 4355 204b 4c42 4f4f 5944 4220 4c41
0000890 4c4c 4349 454b 2052 5644 4144 5320 4948
00008a0 2054 5341 2053 4548 4441 5546 4b43 5320
00008b0 4948 4654 4341 2045 5542 474e 4b20 4641
00008c0 5249 4620 5349 4654 4355 534b 4320 4841
00008d0 4e4f 2045 554d 474e 4e49 2047 4142 4c4c
00008e0 2053 4146 4747 5020 5548 2051 4944 5452
00008f0 2059 4950 4c4c 574f 2053 454a 4b52 4445
0000900 5020 4b49 5945 4f20 4f4d 4152 4853 2049
0000910 4c42 4555 5720 4641 4c46 2045 434d 4146
0000920 4747 5445 4620 4355 464b 4552 4b41 5420
0000930 5449 4954 4645 4355 454b 2052 2046 2055
0000940 2043 204b 4f4a 4b43 4720 4f4f 5044 4f4f
0000950 2050 414d 5453 5255 4142 4554 4320 434f
0000960 4c4b 4d55 2050 4946 5453 5546 4b43 5245
0000970 2053 4857 524f 4e49 2047 4f43 4b43 5553
0000980 414b 4220 5241 4245 4341 204b 4942 532d
0000990 5845 4155 204c 4c53 5455 4220 4355 454b
00009a0 2054 4956 4c4f 5445 5720 4e41 2044 4f50
00009b0 4e52 474f 4152 4850 2059 4146 4749 4220
00009c0 4c41 534c 4341 204b 4e49 5242 4445 5420
00009d0 4255 4720 5249 204c 555a 4242 4220 5345
00009e0 4954 4c41 4c20 4933 4354 2048 4353 4f52
00009f0 4554 4220 5741 5944 4220 5455 2054 4c50
0000a00 4755 4620 4355 424b 5455 4554 2052 5341
0000a10 4253 4e41 2047 4147 5759 4441 4820 5245
0000a20 4550 2053 5546 4b43 542d 5241 2044 4f43
0000a30 4b43 5553 4b4b 2041 4154 4457 5952 4720
0000a40 4955 4f44 4a20 5041 4720 4e41 414a 4820
0000a50 4d4f 2030 4f44 4255 454c 5020 4e45 5445
0000a60 4152 4954 4e4f 4420 2050 4341 4954 4e4f
0000a70 4d20 544f 4148 5546 4b43 4e49 4320 4f4f
0000a80 204e 4b53 4e41 204b 4f43 4b43 4853 5449
0000a90 4f20 4752 4549 2053 494e 4747 4834 4220
0000aa0 4d49 4f42 4220 4e4f 5245 4820 4755 2045
0000ab0 4146 2054 5542 5454 5546 4b43 2041 304d
0000ac0 4f46 4520 4552 5443 4f49 204e 4952 4154
0000ad0 4452 4d20 544f 4548 4652 4355 494b 474e
0000ae0 4620 4355 494b 474e 4853 5449 4f4d 4854
0000af0 5245 5546 4b43 5245 4420 4349 574b 4145
0000b00 4553 204c 5542 5454 414d 204e 4853 5449
0000b10 4548 4441 2053 454c 5a5a 2041 4853 5449
0000b20 5053 5449 4554 2052 5234 4535 4c20 5345
0000b30 4f42 2053 5247 554f 2050 4553 2058 4146
0000b40 4f47 2054 4942 4354 2048 4954 2054 4552
0000b50 4154 4452 4445 4320 302e 432e 4b2e 4220
0000b60 534f 4d4f 4820 4f4f 2052 4857 524f 4145
0000b70 494c 4943 554f 2053 2053 4948 2054 554d
0000b80 4854 5245 5546 4b43 4e49 2047 4145 5054
0000b90 5355 5953 4620 4355 204b 464f 2046 4153
0000ba0 544e 524f 4d55 4a20 5a49 4220 5455 2d54
0000bb0 4950 4152 4554 4f20 4752 5341 534d 4220
0000bc0 4e4f 2045 4548 532d 4548 4320 4f48 4441
0000bd0 2045 4146 5347 5720 4441 4220 5449 4843
0000be0 5345 4320 434f 204b 4e53 544f 4120 5353
0000bf0 4c4b 574f 204e 4546 4b43 4520 4343 4948
0000c00 4620 5349 4954 474e 4a20 5a49 204d 4944
0000c10 4b43 4820 4c4f 2045 4353 4c48 4e4f 2047
0000c20 4550 494e 4653 4355 454b 2052 5242 4545
0000c30 4544 2052 4542 5441 4843 4420 4349 464b
0000c40 4355 454b 2052 494e 5050 454c 4220 4c4f
0000c50 494c 4b43 4d20 5341 5554 4252 5441 4f49
0000c60 204e 4f48 4b4e 2059 4553 4d41 4e41 4d20
0000c70 544f 4548 2052 5546 4b43 5245 4e20 5455
0000c80 4220 5455 4554 2052 5053 4349 204b 4f43
0000c90 4b43 4d53 4b4f 5245 4e20 4b41 4445 5320
0000ca0 4550 4d52 4720 444f 4144 4e4d 4120 5952
0000cb0 4e41 5020 5548 534b 5320 554c 4454 4d55
0000cc0 4550 2052 4c53 5455 494b 5353 4320 4259
0000cd0 5245 5546 4b43 4445 4320 4e55 2d54 5453
0000ce0 5552 4b43 5320 4948 5454 5245 2053 414d
0000cf0 454c 5320 5551 5249 4954 474e 4820 424f
0000d00 4741 4320 4d41 4947 4c52 5320 4948 4354
0000d10 4e41 454e 2044 4147 2045 5550 5353 2059
0000d20 4c46 4e41 4547 4320 4f48 4544 4620 4c45
0000d30 4843 4e49 2047 5542 4e4e 2059 5546 4b43
0000d40 5245 5020 524f 4f4e 2053 4f47 4444 4d41
0000d50 4e20 5041 4c41 204d 4153 5355 4741 2045
0000d60 5551 4545 204e 4943 4150 5620 4c55 4156
0000d70 4d20 544f 4548 4652 4355 204b 4950 4c4c
0000d80 574f 4942 4554 2052 4f47 204f 4947 4c52
0000d90 5320 4948 5452 4c20 4649 4554 2052 4f4d
0000da0 4854 5245 5546 4b43 2041 4f42 4f49 414c
0000db0 2053 5341 2d53 4148 2054 5341 4d53 4e41
0000dc0 4620 5543 494b 474e 4120 5353 4f47 4c42
0000dd0 4e49 4620 4355 204b 5542 5454 4e4f 2053
0000de0 4542 544f 4843 5320 4948 2054 5546 4b43
0000df0 5245 4820 4f4f 4554 5352 4720 414f 5354
0000e00 2045 4152 4550 5420 5355 5948 4620 4e41
0000e10 594e 5546 4b43 5245 4120 5353 4f48 4552
0000e20 4220 4d55 4c43 5441 5020 4952 2047 5453
0000e30 4c59 2045 4f44 4747 2059 4f50 2054 5242
0000e40 4145 5453 4f4a 2042 4957 4c4c 4549 2053
0000e50 4f47 4f4e 5252 4845 4145 4b20 434f 204b
0000e60 5341 5753 5049 2045 4550 494e 2053 5546
0000e70 4b43 422d 5449 4843 5020 4e41 5954 4e20
0000e80 5741 5341 4948 4220 4f4f 4f4f 5342 5720
0000e90 4d4f 2042 494e 5050 454c 2053 4150 544e
0000ea0 4549 4320 434f 424b 5449 2045 5546 4b43
0000eb0 554e 4747 5445 4320 434f 534b 4355 454b
0000ec0 2052 564f 4d55 5020 4e55 414b 5353 5320
0000ed0 482e 492e 542e 202e 454e 5247 204f 4d53
0000ee0 5455 5420 4f57 4620 4e49 4547 5352 5720
0000ef0 5449 2048 4f54 474e 4555 4320 4f48 4441
0000f00 5220 534f 2059 4150 4d4c 4120 444e 4820
0000f10 5245 3520 5320 5349 4554 5352 4620 4749
0000f20 4947 474e 4c20 4d45 4e4f 5020 5241 5954
0000f30 5420 4957 4b4e 4120 5353 494c 4b43 5245
0000f40 4b20 4d55 494d 474e 4120 5353 4142 4747
0000f50 5245 4420 4349 4a4b 4955 4543 4320 4d41
0000f60 4c45 4f54 2045 4853 5449 2045 4557 2054
0000f70 5244 4145 204d 5243 4341 574b 4f48 4552
0000f80 4820 4d55 2050 4853 4d41 4445 4d41 2045
0000f90 5542 5454 554d 434e 2048 4145 2054 594d
0000fa0 4120 5353 4120 5353 5546 4b4b 2041 4947
0000fb0 4f47 4f4c 4120 5353 494b 5353 5245 4220
0000fc0 4f4f 4547 2052 5550 5353 2059 4146 5452
0000fd0 4220 5341 4154 4452 204f 4f44 4255 454c
0000fe0 4420 4e4f 2047 4f43 544f 5245 4220 4241
0000ff0 2059 4142 5454 5245 5220 4341 2059 4e4f
0001000 2045 5547 2059 4e4f 2045 414a 2052 4f57
0001010 2047 4944 4444 454c 4620 4952 4747 4b20
0001020 4e49 4142 554b 5020 524f 4f4e 4420 4f4f
0001030 5546 2053 5542 5454 554d 434e 4548 2052
0001040 5546 4b43 4f42 2059 4f44 4355 4548 4157
0001050 4646 454c 5320 4148 4556 2044 4542 5641
0001060 5245 4420 4349 444b 5049 4550 2052 4857
0001070 5230 2045 314e 4747 2041 2e46 2e55 2e43
0001080 204b 5542 5454 554d 4843 4620 4e49 4547
0001090 4652 4355 454b 2052 4320 4d55 5542 4242
00010a0 454c 4420 5049 4853 5449 4320 4948 204e
00010b0 4a45 4341 4c55 5441 5345 4620 4f4f 204b
00010c0 4f43 4b43 4146 4543 4220 574f 4c45 2053
00010d0 4b4b 204b 3446 4e4e 2059 5754 5441 4548
00010e0 4441 4320 4948 4b43 5720 5449 2048 2041
00010f0 4944 4b43 4c20 5a45 495a 2045 2d43 2d55
0001100 2d4e 2054 4944 4b43 4954 4b43 454c 2052
0001110 5546 4b43 5242 4941 204e 5242 4e55 5445
0001120 4554 4120 5443 4f49 204e 4853 5449 4142
0001130 4747 5245 5620 5249 4947 204e 5546 534b
0001140 3520 3148 2054 5544 4d4d 2059 4142 4c4c
0001150 5320 4355 494b 474e 5320 4948 4254 494c
0001160 504d 4220 5449 4843 4e49 2047 4142 4542
0001170 414c 444e 5420 4255 4947 4c52 4320 4152
0001180 2050 4f53 2d4e 464f 412d 422d 5449 4843
0001190 4d20 2052 4148 444e 2053 5543 534d 4f48
00011a0 5354 4c20 4d41 4145 5353 4e20 5a41 5349
00011b0 204d 4e4b 424f 4f4a 454b 2059 494d 4444
00011c0 454c 4620 4e49 4547 2052 5546 4b43 4445
00011d0 4320 4e55 4154 5353 4320 434f 534b 4355
00011e0 494b 474e 4320 494c 4654 4341 2045 2d43
00011f0 2d4f 2d43 204b 5055 4b53 5249 2054 494a
0001200 4747 5245 4f42 204f 454c 4843 3520 4948
0001210 2054 4f42 4f4f 4f4f 5342 5320 4948 5454
0001220 4e49 5347 5720 4948 4554 5020 574f 5245
0001230 4320 494c 5454 2059 494c 5454 5245 5420
0001240 5431 4620 4e49 4547 4652 4355 204b 554e
0001250 4544 4c20 4145 4854 5245 5220 5345 5254
0001260 4941 544e 5320 554f 4553 2044 5542 5454
0001270 4146 4543 4620 4b55 454b 5352 4120 5353
0001280 4f48 4531 5020 4f48 454e 4553 2058 5551
0001290 4d49 4b20 4b59 2045 4f53 2044 464f 2046
00012a0 4146 4747 544f 5320 5243 5745 4445 5020
00012b0 5349 2053 464f 2046 4950 5353 4445 4820
00012c0 5245 2050 414a 4b43 5341 2053 4142 4542
00012d0 2053 5543 544e 4142 2047 414a 4b43 4f20
00012e0 4646 5320 4948 4954 474e 2053 5553 4f4d
00012f0 4146 4942 5441 4843 5020 5355 4553 4420
0001300 4e4f 454b 5059 4e55 4843 4420 4349 204b
0001310 5543 4d4d 4e49 4620 4e49 4547 4952 474e
0001320 5920 4449 4620 4355 484b 4145 5344 4420
0001330 5741 4947 2d45 5453 4c59 2045 4154 494b
0001340 474e 5420 4548 5020 5349 2053 4552 5443
0001350 5355 4620 4741 5347 5420 5449 4549 2053
0001360 4152 4847 4145 2044 4157 4b4e 5245 5020
0001370 4f52 2044 5543 4d4d 4e49 2047 2d53 2d4f
0001380 2042 5543 204d 4843 4755 4547 2052 4f47
0001390 4444 4d41 454e 2044 554d 4854 4641 4355
00013a0 4b4b 5245 4420 4c49 4f44 2053 4f4e 4b4f
00013b0 2059 4954 5354 4420 4349 204b 4853 2059
00013c0 4f50 504f 4e55 4843 5245 4320 4d55 5453
00013d0 4941 204e 4153 424d 204f 4554 4241 4741
00013e0 4947 474e 5020 4749 5546 4b43 5245 5120
00013f0 4555 4645 5320 494e 4550 2052 4f43 4b43
0001400 4e53 4649 4546 2052 4c42 4341 204b 4f43
0001410 4b43 5220 5645 4555 4620 4355 204b 4f59
0001420 4d20 4d41 2041 4546 414d 454c 5320 5551
0001430 5249 4954 474e 5020 5355 5953 2053 5553
0001440 4349 4449 2045 4947 4c52 2053 454c 5441
0001450 4548 2052 5453 4152 4749 5448 4a20 4341
0001460 454b 2054 4f50 4e4f 4e41 2059 4146 2054
0001470 4147 4159 5353 5920 4145 5453 2059 5542
0001480 5453 2059 4f44 2d47 5546 4b43 5245 4e20
0001490 4d41 4c42 2041 4647 2059 5546 4b43 5055
00014a0 4620 4355 544b 594f 4d20 544f 4148 5546
00014b0 4b43 5a41 4a20 4755 5347 4d20 5341 5554
00014c0 4252 5441 4e49 2047 4c42 574f 4d20 4455
00014d0 5020 5341 5954 5620 524f 5241 5045 4948
00014e0 494c 2041 4e43 5455 5720 4e41 4a4b 424f
00014f0 5320 5845 2059 3048 4f4d 4220 5241 4c45
0001500 2059 454c 4147 204c 5546 4b43 4154 4452
0001510 2053 5546 4b43 4857 524f 2045 5341 5753
0001520 4441 4220 5449 4843 2059 4f42 4b4f 4549
0001530 5420 5449 4954 5345 4320 434f 534b 4355
0001540 534b 4420 4c31 3044 5020 4545 4550 2045
0001550 4c41 4241 4d41 2041 4f48 2054 4f50 4b43
0001560 5445 4220 5344 204d 4542 4645 4320 5255
0001570 4154 4e49 4320 454c 4556 414c 444e 5320
0001580 4554 4d41 5245 4320 434f 4941 204e 554d
0001590 4854 2041 4143 454d 204c 4f54 2045 5453
00015a0 4649 5946 4720 4941 4720 4e41 2047 4142
00015b0 474e 4420 474f 5947 5453 4c59 2045 4154
00015c0 4646 4a20 5a49 455a 2044 4954 4445 5520
00015d0 2050 5944 454b 4120 5353 4c43 574f 204e
00015e0 4942 4354 5448 5449 2053 4c50 4145 5553
00015f0 4552 4320 4548 5453 4320 4d55 454d 2052
0001600 4146 4e4e 4259 4e41 4944 2054 454a 4c4c
0001610 2059 4f44 554e 2054 4853 5449 4554 2052
0001620 5341 4653 4341 2045 4957 444e 574f 4c20
0001630 4349 454b 2052 454c 205a 4954 5454 4659
0001640 4355 454b 2052 5753 4e49 4547 2052 5550
0001650 5353 5059 554f 444e 5245 4220 4145 5453
0001660 4149 204c 5250 4e49 4543 4120 424c 5245
0001670 2054 4950 5245 4943 474e 4d20 4f4f 494c
0001680 2045 4f47 4b4b 4e55 5520 4952 414e 204c
0001690 4153 444e 4e20 4749 4547 2052 4147 4659
00016a0 4355 494b 5453 4720 5341 5953 4120 5353
00016b0 4f20 4752 2059 4353 4948 4f5a 5320 4554
00016c0 4d41 2059 4c43 4d49 5841 4c20 4241 4149
00016d0 4320 4f52 5454 2045 5243 5041 5950 4520
00016e0 414a 5543 414c 4954 4e4f 4f20 4156 5952
00016f0 4d20 4655 2046 4944 4556 2052 4146 594e
0001700 2059 524f 4147 4d53 4349 4e20 4749 4147
0001710 2048 4944 4b43 494d 4b4c 4720 5941 4f42
0001720 2042 4f48 2057 4f54 4b20 4c49 204c 5753
0001730 5341 4954 414b 5320 4f4c 4550 5420 5248
0001740 4545 4f53 454d 4220 4f4f 595a 4820 414f
0001750 2052 5543 4a4d 434f 454b 2059 4950 504d
0001760 5349 4b20 4f4f 4354 2048 4147 474e 4142
0001770 474e 5420 4157 5754 4641 4c46 2045 4843
0001780 4e49 204b 4157 4f5a 204f 4f42 4e4f 4147
0001790 4420 5530 4843 2045 5543 544e 4d20 5455
00017a0 5248 5546 4b43 4e49 2047 4c43 5431 5020
00017b0 4445 204f 4f43 4b43 554d 434e 2048 4f4d
00017c0 4854 5245 5546 4b43 4445 4820 4c4f 2059
00017d0 4853 5449 4320 4e55 5354 4620 4741 4f47
00017e0 5354 5620 4a41 5941 414a 2059 4156 4947
00017f0 414e 4d20 544f 4548 4652 4355 454b 5352
0001800 5320 4143 2047 4946 474e 5245 5546 4b43
0001810 4445 4720 544f 484f 4c45 204c 4c53 4145
0001820 455a 4320 494c 5354 5220 4945 4843 5420
0001830 5548 444e 5245 5543 544e 4a20 5349 204d
0001840 4f44 4d4d 5345 4220 534f 4d4f 2059 4146
0001850 4747 544f 4f43 4b43 4720 4e4f 4441 2053
0001860 5341 5353 4355 454b 2052 4944 4b4e 2053
0001870 4e41 5355 4b20 4f4e 4a42 434f 594b 4120
0001880 5353 4c42 5341 4554 2052 5542 4c4c 5554
0001890 4452 2053 4e4f 2045 5543 2050 5754 204f
00018a0 4947 4c52 2053 4f50 4e4f 4154 474e 4220
00018b0 494f 4b4e 4120 5353 5546 4b43 5245 4d20
00018c0 4c49 2046 5543 544e 494c 4b43 2020 4145
00018d0 2054 2041 4944 4b43 5720 4f48 4552 2053
00018e0 4142 4c4c 4b20 4349 494b 474e 5520 444e
00018f0 4552 5353 4e49 2047 4857 524f 4245 4741
0001900 4f20 4950 4d55 4920 4a4e 4e55 4220 4552
0001910 5341 2054 4154 4749 5720 4c49 594c 4120
0001920 5353 4548 4441 5720 4f48 5241 4620 4345
0001930 4c41 5420 5449 2049 5546 4b43 4f48 454c
0001940 4220 4f4f 2042 4854 4755 5020 4745 4947
0001950 474e 5420 574f 4c45 4548 4441 4220 4355
0001960 5445 2041 5943 4542 4652 4355 454b 2052
0001970 4548 544e 4941 4d20 4e4f 2047 4542 5441
0001980 5245 4320 4e55 5354 554c 2054 5551 4545
0001990 4852 4c4f 2045 5546 4b43 4e49 5320 554d
00019a0 5454 2059 4e49 4554 4352 554f 5352 2045
00019b0 5a55 2049 4c43 5449 4c20 4349 454b 2052
00019c0 494d 4b43 4320 494c 4654 4355 204b 4b53
00019d0 4741 4220 4e49 2054 4946 5453 5546 4b43
00019e0 4e49 5347 4320 4e55 5254 4741 5320 4f54
00019f0 454e 2044 5754 204f 4947 4c52 2053 4e4f
0001a00 2045 5543 2050 4946 5453 5546 4b43 4420
0001a10 4349 534b 414c 2050 4f42 4c4c 584f 5220
0001a20 4154 4452 4e20 4455 5449 2059 5546 4b43
0001a30 4142 2047 4353 4d55 5320 4948 4154 5353
0001a40 5320 4445 4355 2045 4950 5353 464f 2046
0001a50 5254 4e41 5353 5845 4155 204c 4f46 544f
0001a60 5546 4b43 5245 4820 4e41 2044 4f4a 2042
0001a70 5542 474e 4f48 454c 4c20 5355 2054 554d
0001a80 4646 5020 4655 2046 4550 4f59 4554 4220
0001a90 5341 4154 4452 5320 4f2e 422e 202e 4950
0001aa0 5353 4f2d 4646 4220 4c55 434c 4152 2050
0001ab0 5754 204f 4946 474e 5245 2053 4843 4c49
0001ac0 2d44 5546 4b43 5245 4420 4349 5a4b 5049
0001ad0 4550 2052 4353 4f52 5554 204d 4f56 4b44
0001ae0 2041 4c46 5345 4648 554c 4554 4a20 5245
0001af0 304b 4646 5020 4545 4420 554f 4843 4245
0001b00 4741 4120 5353 4620 4355 204b 5341 4d53
0001b10 4355 5355 4320 434f 414b 5353 4620 5520
0001b20 4320 4b20 4520 5220 5020 4445 504f 4948
0001b30 494c 4341 4320 434f 484b 4145 2044 4954
0001b40 5754 4e41 204b 4942 4354 4548 5352 4420
0001b50 554f 4843 2d45 4146 2047 4942 424d 534f
0001b60 4420 4349 574b 4948 5050 5245 5520 4952
0001b70 454e 4f20 4752 5341 204d 4f4d 4854 5245
0001b80 5546 4b43 4e49 5347 4820 4f4f 4354 2048
0001b90 4f44 2047 5453 4c59 2045 554b 534d 4420
0001ba0 4d49 4957 2054 5546 4154 414e 4952 5320
0001bb0 2148 202b 2e50 2e55 2e53 2e53 2e59 4820
0001bc0 204f 2d58 4152 4554 2044 4554 4452 4e20
0001bd0 4d49 4850 4d4f 4e41 4149 4120 5353 4857
0001be0 4c4f 2045 4f43 4b43 4620 4e4f 4c44 2045
0001bf0 494e 524d 444f 4220 4f52 4854 5245 5546
0001c00 4b43 5245 5320 4948 5454 4a20 4341 414b
0001c10 5353 5345 5020 4445 424f 4145 2052 4153
0001c20 4944 4d53 5520 4552 4854 4152 5020 414c
0001c30 2059 3142 4354 2048 5551 4349 594b 4620
0001c40 4741 4154 4452 4820 5245 494f 204e 5a41
0001c50 205a 5053 4e55 204b 3142 4337 2048 5544
0001c60 424d 5546 4b43 5020 4952 4b43 4120 5353
0001c70 4f4c 4556 2052 5453 4152 2050 4e4f 5320
0001c80 4943 5353 524f 4e49 2047 5542 4c4c 5445
0001c90 5620 4249 2045 4544 444e 4f52 4850 4c49
0001ca0 4149 4420 5249 5954 4820 5241 4344 524f
0001cb0 2045 4944 4b43 4c46 5049 4550 2052 4e4b
0001cc0 424f 4942 474e 4c20 494f 204e 3156 5247
0001cd0 2041 5546 4744 2d45 4150 4b43 5245 5420
0001ce0 5248 414f 4954 474e 5320 4c55 5254 2059
0001cf0 4f57 454d 204e 4944 4b43 4548 4441 2053
0001d00 4853 4741 4520 4552 5443 4420 4d55 2042
0001d10 5341 2053 4944 4b43 5546 4b43 4620 4741
0001d20 4547 2044 5548 204e 5754 4e55 2054 4547
0001d30 444e 5245 4220 4e45 4544 2052 5254 5341
0001d40 5948 5220 4545 4546 2052 4944 4b43 5349
0001d50 2048 5546 4b43 5754 5441 4620 4355 204b
0001d60 5550 5050 5445 4420 474f 4947 2045 5453
0001d70 4c59 2045 4346 4b55 5245 4d20 544f 4548
0001d80 4652 4355 534b 4120 5353 414a 4b43 5245
0001d90 4b20 4e55 2054 4548 4c4c 4120 5353 3048
0001da0 454c 4320 4330 534b 4355 454b 2052 4f42
0001db0 4c4c 4b4f 4420 4f4f 4853 4420 5249 4153
0001dc0 5320 4948 4354 4e55 2054 334a 4b52 4630
0001dd0 2046 534e 5746 4920 414d 4547 2053 4156
0001de0 2047 4556 554e 2053 4f4d 4e55 2044 4156
0001df0 4a2d 4a2d 4b20 4c49 204c 414d 5353 2041
0001e00 4142 5454 2059 4f42 2059 4f50 4352 4d48
0001e10 4e4f 454b 2059 414d 5453 5245 4142 2054
0001e20 3050 4e52 5020 4e49 4f4b 4420 5441 5245
0001e30 5041 2045 4f43 4e4f 414e 5353 5320 4948
0001e40 4e5a 5449 5020 524f 204e 4147 4659 4355
0001e50 204b 4c43 5449 5954 4420 4c31 4f44 4220
0001e60 4749 4547 2052 4f43 4b43 4e4b 434f 454b
0001e70 2052 4148 4452 4f20 204e 4f44 4355 4548
0001e80 4320 4952 454b 2059 4144 4f47 2053 4952
0001e90 4d4d 4e49 2047 4146 5452 4e4b 434f 454b
0001ea0 2052 4142 5942 4a20 4955 4543 4720 4c4f
0001eb0 4544 204e 4853 574f 5245 4e20 4749 4147
0001ec0 4220 4e55 4147 5020 4e55 4e41 2049 4f42
0001ed0 544f 2059 5543 4e4e 4c49 4e49 5547 2053
0001ee0 5550 4942 2053 4f42 444e 4741 2045 4556
0001ef0 5451 4241 454c 4120 5353 4a2d 4241 4542
0001f00 2052 4f43 4b43 5553 4543 2052 5542 5454
0001f10 4f48 454c 4220 4e45 4544 2052 5542 5454
0001f20 422d 4e41 2047 4947 4c52 4f20 204e 4f54
0001f30 2050 4f4e 434e 2045 4542 5945 544f 4843
0001f40 4d20 5445 2048 554d 4854 5245 5546 4b43
0001f50 5245 4620 4952 4747 2041 4f43 4d4d 4549
0001f60 5720 4945 4452 204f 5546 4b43 4548 4441
0001f70 4a20 5041 2053 4f48 2057 4f54 4d20 5255
0001f80 4544 2052 4f44 4255 454c 494c 5446 4820
0001f90 4d45 2050 4147 4459 204f 4f4d 4854 4641
0001fa0 4355 454b 2052 4f4d 4854 5245 5546 4b43
0001fb0 414b 4220 474f 4e41 5320 4148 4747 4e49
0001fc0 4220 5455 4654 4355 204b 4f5a 504f 4948
0001fd0 494c 2041 4841 4c4f 2045 5254 4249 4441
0001fe0 5349 204d 314e 4747 5245 4320 552e 4e2e
0001ff0 542e 5820 2058 4e41 4c49 4e49 5547 2053
0002000 5453 4152 5050 4441 204f 4150 4445 504f
0002010 4948 454c 4e20 4749 4c47 2045 3048 304d
0002020 4d20 4655 2046 4353 4552 2057 4944 4b43
0002030 4157 2044 4946 5453 4620 4355 204b 4946
0002040 5453 5546 4b43 4e49 2047 4153 444e 494e
0002050 4747 5245 4220 4f4f 4554 2045 4944 4b4e
0002060 4720 444f 4d41 494e 2054 4144 4b52 4549
0002070 4d20 4e45 5453 5552 5441 4f49 204e 5247
0002080 4e49 4f47 5320 5254 5049 4320 554c 2042
0002090 4853 4741 4947 474e 5920 4f41 2049 4f42
00020a0 4e4f 2047 4853 544f 2041 4546 4c4c 5441
00020b0 2045 414a 4747 2049 5345 4f43 5452 4320
00020c0 434f 534b 5320 554c 2054 4144 4e4d 5449
00020d0 4e20 424f 4f4a 4b43 2059 4554 5441 4720
00020e0 4e41 4247 4e41 4547 2044 5545 554e 4843
00020f0 5020 4441 5944 4b20 414c 204e 4550 494e
0002100 454c 4c20 5345 4f42 5320 4948 4254 4552
0002110 5441 2048 2d53 2d48 2d49 2054 554a 4b4e
0002120 4549 4220 4c45 454c 444e 5120 4555 5245
0002130 2053 2d43 2d30 2d43 204b 4f53 204e 464f
0002140 4120 4220 5449 4843 4e20 4d59 4850 4d4f
0002150 4e41 4149 4620 414f 2048 4f48 4f4d 5945
0002160 5720 5349 4145 5353 5345 4b20 4f4e 2042
0002170 5943 4542 4652 4355 5420 5241 2044 5347
0002180 4f50 2054 5553 4b43 5720 4654 5020 4e41
0002190 4f4f 4843 4e20 4441 5420 5345 4554 2045
00021a0 4f4d 204f 4f4d 204f 4f46 204f 4f46 204f
00021b0 4153 444e 4142 2052 5546 4b43 4e49 2047
00021c0 5350 4359 4f48 5220 4345 5554 204d 4942
00021d0 4354 2048 4f50 454c 5320 4f4d 454b 2052
00021e0 4142 4c4c 4c20 4349 494b 474e 4f20 4752
00021f0 4e41 4320 4e55 4854 4e55 4554 2052 4a45
0002200 4341 4c55 5441 4445 4320 4f4c 4556 2052
0002210 4c43 4d41 5350 4420 4355 4548 4b20 4e55
0002220 4c49 4e49 5547 2053 4144 4e4d 4720 5941
0002230 5320 5845 5320 4355 494b 474e 4e20 4e49
0002240 594e 5020 5349 4553 2053 4144 4f47 4620
0002250 4355 484b 5245 4b20 4f4e 4542 444e 5320
0002260 554b 4c4c 5546 4b43 4120 5353 4142 2047
0002270 4c44 4b43 5320 5250 4145 2044 454c 5347
0002280 4620 4e49 4547 4252 4e41 2047 4552 5445
0002290 5241 2044 5543 544e 4f48 454c 4720 444f
00022a0 4420 4d41 204e 4e55 4c43 4645 4355 454b
00022b0 2052 4843 544f 2041 4142 5347 5320 5845
00022c0 4a20 4e55 4c47 4245 4e55 594e 4220 4749
00022d0 4142 5453 5241 2044 4c53 5641 2045 5548
00022e0 5353 2059 5242 4145 5453 4f4c 4556 2052
00022f0 494e 4747 5233 4320 434f 534b 4355 454b
0002300 5352 4420 4349 534b 4355 454b 2052 4a45
0002310 4341 4c55 5441 4e49 5347 4220 4755 4547
0002320 2052 4f44 4b4e 5945 5020 4e55 4843 4d20
0002330 3534 4554 4252 5441 2045 4546 4c4c 5441
0002340 4f49 4320 504f 4f52 414c 4e47 4149 5320
0002350 5254 5041 4e4f 4620 4355 544b 5241 2054
0002360 4e55 4944 5345 4120 4550 4853 5449 4d20
0002370 4e49 4547 3220 4720 5249 534c 3120 4320
0002380 5055 4d20 4449 4547 2054 4f43 4b43 4f4d
0002390 474e 5552 4c45 4220 4d55 5546 4b43 4820
00023a0 4f4f 414b 2048 4944 4b43 4f4d 474e 5245
00023b0 4620 4356 204b 4850 4355 204b 414d 5453
00023c0 5245 422d 5441 2045 414b 4b57 5920 424f
00023d0 4f42 5320 4d26 5320 5248 4d49 4950 474e
00023e0 4620 4355 534b 5020 4952 4b43 4554 5341
00023f0 5245 4820 544f 4320 5241 204c 4843 434f
0002400 4c4f 5441 2045 4f52 4553 5542 5344 4620
0002410 5855 5230 4a20 4341 4f4b 4646 5220 4d49
0002420 414a 2057 5341 4653 4341 5345 4120 5353
0002430 4e20 424f 4548 4441 4120 5352 4845 4c4f
0002440 2045 554e 424d 554e 5354 4620 5855 4c20
0002450 5345 4942 4e41 4620 4f4f 454b 2052 5243
0002460 4241 2053 4f50 414c 4b43 5020 5548 204b
0002470 494d 5353 4f49 414e 5952 5020 534f 5449
0002480 4f49 204e 5053 4f4f 4547 4720 5049 4f50
0002490 4e20 4749 4e2d 474f 4320 4259 5245 5546
00024a0 4b43 5220 4d55 4220 5345 4954 4c41 5449
00024b0 2059 5546 204b 4f57 2050 414d 5435 5245
00024c0 4142 4554 4320 584f 4320 4d55 4853 544f
00024d0 4320 434f 2d4b 5553 4b43 5245 4620 4e49
00024e0 4547 4652 4355 534b 4b20 4152 5455 4320
00024f0 4952 5050 454c 4420 5441 2045 4152 4550
0002500 4220 4e41 2047 4f28 454e 5327 2029 4f42
0002510 2058 4f57 444f 2059 4954 2054 4157 4b4e
0002520 4b20 4e4f 5544 534d 4720 4654 204f 4146
0002530 4b43 5320 4c50 4f4f 4547 4d20 4f4f 4553
0002540 4620 4741 5546 4b43 5245 4f20 5556 534d
0002550 4220 4f4c 4a57 424f 4320 434f 454b 4559
0002560 5720 4545 494e 2045 4c43 474f 4f57 2047
0002570 4942 4354 4948 204e 4142 5453 5241 5344
0002580 4820 4d4f 204f 4552 4f4e 2042 4950 5353
0002590 4c46 5041 2053 554c 5453 2059 554d 4646
00025a0 4944 4956 474e 4720 4e49 4547 2052 554b
00025b0 4d4d 5245 4120 4d32 5220 534f 2059 4150
00025c0 4d4c 5420 5431 4954 5345 4220 4f4c 4a57
00025d0 424f 2053 4f43 204b 5546 4b43 5245 2053
00025e0 5542 5454 4c50 4755 4220 4e4f 5245 2053
00025f0 504f 4149 4554 4620 4c45 4354 4548 2052
0002600 414d 4958 5620 5849 4e45 5120 4555 4641
0002610 4720 524f 4745 5341 204d 4954 5454 4549
0002620 2035 5943 4542 4652 4355 454b 5352 4720
0002630 4c4f 494c 4f57 2047 5548 504d 4445 4420
0002640 554f 4843 2033 554d 4854 5245 4420 554f
0002650 4843 4245 4741 2053 4546 4b43 5245 4720
0002660 5941 4553 2058 5341 5753 4f48 4552 4620
0002670 4358 204b 4e41 4c41 4920 504d 4c41 5245
0002680 4220 4f4c 444f 4c43 4141 2054 2d4d 5546
0002690 4b43 4e49 2047 4f44 494d 414e 5254 5849
00026a0 4d20 3541 4554 4252 2038 4f53 4f44 594d
00026b0 4320 4e55 5354 4355 454b 2052 524f 4c41
00026c0 5020 4b41 2049 4142 4652 4341 2045 4c43
00026d0 5449 524f 5349 4620 4552 4645 4355 204b
00026e0 4146 4747 4e49 2047 4f42 424f 2053 304d
00026f0 3046 5020 4148 4c4c 4349 4120 3435 4220
0002700 4749 5420 5449 2053 5546 4b43 5542 5454
0002710 4420 4349 534b 4355 494b 474e 5020 4f4f
0002720 4350 5548 4554 4820 5649 4220 4441 5546
0002730 4b43 5720 4e45 4843 4120 5353 4950 4152
0002740 4554 5020 4f4f 204e 494e 4147 4f42 204f
0002750 5546 4b43 454d 5441 4420 5049 4853 5049
0002760 4120 5353 462d 4355 454b 2052 4f48 4b4f
0002770 5245 4720 4548 2059 5341 4253 4e41 5347
0002780 4820 4e4f 454b 2059 4154 5452 5320 4950
0002790 204b 5542 204d 4f42 2059 4e41 4c41 4e41
00027a0 494e 2045 5341 4353 434f 204b 4c42 574f
00027b0 5320 454b 5445 4220 484f 4e55 204b 4946
00027c0 474e 5245 5546 4b43 4e49 2047 4d53 5241
00027d0 4154 5353 5345 4b20 4f4e 2042 4e45 2044
00027e0 4f44 4747 4549 5453 4c59 2045 5543 2054
00027f0 4f52 4550 4420 4349 574b 444f 4220 5742
0002800 4620 4e41 594e 4c46 5041 2053 5542 4747
0002810 5245 2059 3541 2035 4546 434c 4548 2052
0002820 4150 4e57 4320 494f 4154 204c 524f 4147
0002830 4953 204d 4f53 5355 2045 4f42 424f 2059
0002840 4f4d 4854 5245 5546 4b43 5245 4b20 4f4e
0002850 4542 2044 4f48 2054 4843 4349 204b 4c42
0002860 574f 5920 554f 2052 4f4c 4441 4120 5353
0002870 4150 4b43 5245 5320 4654 2055 4853 5449
0002880 4954 5345 2054 5341 5053 5055 4950 5345
0002890 4620 4355 4d4b 2045 4550 494e 4c41 5320
00028a0 5243 4455 5620 3431 5247 2041 5948 454d
00028b0 204e 4152 4550 2052 414d 5453 5245 4142
00028c0 4954 4e4f 2053 3042 4230 2053 4548 4245
00028d0 5720 4952 4b4e 454c 2044 5453 5241 4946
00028e0 4853 4420 4d55 5341 2053 4954 4b4e 454c
00028f0 4220 414f 474e 4320 494c 2054 4553 4d41
0002900 4e45 4420 4c49 4f44 4420 4d41 454e 2044
0002910 4853 5449 4954 474e 4220 4145 454e 2052
0002920 4f56 4559 5255 4620 4c45 4354 2048 5546
0002930 4b43 454d 4148 4452 5420 4152 504d 4220
0002940 5341 4954 414e 4f44 5020 4345 454b 2052
0002950 4f42 4f4f 5342 4220 4e4f 2047 4146 4247
0002960 4741 4220 5455 2054 4c53 5455 2053 5341
0002970 5353 4948 2054 4853 5449 4954 5245 4b20
0002980 4b49 5345 4a20 4941 424c 4941 2054 414a
0002990 4b43 4f48 454c 4320 4e55 5354 4349 454c
00029a0 4620 4552 4b41 5546 4b43 4620 4455 4547
00029b0 5020 4341 454b 2052 4547 2059 4944 454b
00029c0 4220 4e41 4947 474e 5320 454d 4d47 2041
00029d0 5547 4f52 4620 4355 534b 4954 4b43 5020
00029e0 5349 4953 204e 4f4d 4f52 204e 4546 494e
00029f0 4e41 5620 4c55 4147 2052 5550 5453 5320
0002a00 4948 4142 4952 4620 4741 544f 2053 4f4d
0002a10 4e55 2044 464f 5620 4e45 5355 4220 4145
0002a20 4556 2052 494c 5350 4220 2b49 4843 4d20
0002a30 4e49 4547 2052 4944 4b43 2053 4554 5453
0002a40 5349 5020 4e41 5953 4d20 544f 4148 5546
0002a50 4b43 2053 4853 5449 4445 5320 4948 202b
0002a60 414d 534d 4120 5353 4f48 454c 2053 554e
0002a70 5354 4341 204b 4552 5443 4c41 5320 5845
0002a80 4155 204c 454c 425a 4149 534e 5720 4749
0002a90 4547 2052 4f50 4c4c 434f 204b 4353 4f52
0002aa0 2054 4f50 4352 2048 4f4d 4b4e 5945 4d20
0002ab0 5341 4554 4252 5441 2033 4c42 574f 4d20
0002ac0 2045 4f46 4441 5720 4f48 4552 4146 4543
0002ad0 4720 532d 4f50 2054 4550 454e 5254 5441
0002ae0 4f49 204e 4152 4947 474e 4220 4e4f 5245
0002af0 4120 5758 554f 444e 5320 3148 2054 4850
0002b00 4c41 494c 4620 4355 594b 554f 4320 434f
0002b10 464b 4355 454b 2052 454a 4b52 4f20 4646
0002b20 4620 4355 4e4b 5455 5320 454d 2047 4546
0002b30 434c 2048 5542 4354 4448 4b49 2045 4857
0002b40 5449 5945 4220 4f4f 5954 4320 4c41 204c
0002b50 5f41 5f53 2053 4c42 4d55 4b50 4e49 4920
0002b60 434e 5345 2054 4854 5552 5453 5420 4957
0002b70 4b4e 4549 5420 4b4f 2045 4f43 4b43 494c
0002b80 4b43 5245 4220 4c4f 4f4c 4b43 5420 5449
0002b90 5546 4b43 5020 5355 5953 494c 4b43 4e49
0002ba0 2047 4e55 4557 2044 4148 4452 4f43 4552
0002bb0 4553 2058 4857 524f 4445 4220 4b55 414b
0002bc0 454b 4420 5249 5954 5320 4e41 4843 5a45
0002bd0 5020 5349 4553 2052 4942 4354 4548 205a
0002be0 4954 2054 414a 4b43 4f2d 4646 4a20 4749
0002bf0 4241 4f4f 5420 5345 4954 4143 204c 4156
0002c00 494c 4d55 4120 5353 4820 4c4f 2045 4f42
0002c10 454e 2044 5345 4f53 4248 4545 4220 4f4c
0002c20 2057 4f4a 2042 4559 4c4c 574f 5320 4f48
0002c30 4557 5352 4c20 5a45 4f42 5320 4948 4654
0002c40 4355 204b 5543 204d 5544 504d 5453 5245
0002c50 4220 4152 4320 4341 2041 4143 4b57 4d20
0002c60 5341 4554 4252 5441 4e49 2047 4853 4d45
0002c70 4c41 2045 4552 4154 4452 4720 444f 442d
0002c80 4d41 454e 2044 4553 534b 4220 5449 4843
0002c90 4445 4c20 4933 432b 2048 4f46 424f 5241
0002ca0 4c20 5a45 4f42 2053 4857 524f 4845 554f
0002cb0 4553 4320 434f 534b 4355 204b 4f50 4e4f
0002cc0 4e41 2049 4557 4445 4320 4e55 4c54 4349
0002cd0 454b 2052 5542 4c4c 4853 5449 4554 2044
0002ce0 4147 474e 422d 4e41 2047 4942 4553 5558
0002cf0 4c41 4220 5455 4843 5944 454b 4220 4e55
0002d00 2047 4f48 454c 4220 4c55 534c 4948 5354
0002d10 5020 544f 5954 4320 4d55 4220 4755 4547
0002d20 4552 2044 5552 504d 4152 4d4d 5245 4220
0002d30 5a41 4f4f 534d 4720 414f 4354 2058 4f4d
0002d40 4854 4641 4355 204b 4f56 494d 2054 5341
0002d50 4853 4c4f 2045 5341 5753 5049 5345 4320
0002d60 434f 4e4b 4755 4547 2054 4843 2d49 4843
0002d70 2049 414d 204e 4853 5449 4944 4b43 4a20
0002d80 5245 414b 5353 4220 4d41 4f50 2054 4f46
0002d90 544f 494c 4b43 5245 4420 504f 5945 4320
0002da0 504f 5320 4d4f 2045 4f57 444f 4320 4d55
0002db0 2053 5546 4b4b 5245 4320 4d55 4c53 5455
0002dc0 5020 4445 504f 4948 494c 2041 3057 5330
0002dd0 2045 5244 2059 5548 504d 4120 5252 4553
0002de0 4320 4f4f 4843 2059 4557 4e49 5245 4e20
0002df0 4d59 4850 204f 5241 4f45 454c 4620 4355
0002e00 574b 4441 4320 504f 4f52 4850 4c49 4149
0002e10 4220 4c41 204c 4147 2047 5241 4553 4d20
0002e20 5455 4148 4546 4b43 5245 4620 4355 4f4b
0002e30 4646 5220 5645 5245 4553 4320 574f 4947
0002e40 4c52 4420 474f 5947 532d 5954 454c 4d20
0002e50 4655 4446 5649 5245 4320 434f 534b 4355
0002e60 204b 5320 4948 4854 4145 2044 454e 4445
0002e70 5420 4548 4420 4349 204b 4143 534d 554c
0002e80 2054 5546 4b43 4f4d 4b4e 5945 4220 4d55
0002e90 4c42 4645 4355 204b 4f43 4e52 4f48 454c
0002ea0 4320 434f 424b 4f4c 4b43 4320 4948 434e
0002eb0 2053 454c 5a5a 2059 414d 5546 4c47 2059
0002ec0 454a 4b52 4720 5341 2048 4853 5449 5320
0002ed0 4d45 4e45 4720 4149 544e 4320 434f 204b
0002ee0 4f4d 4f46 4d20 4e45 4553 2053 4548 5052
0002ef0 2059 4857 524f 2045 4146 4747 5449 2054
0002f00 4f47 4144 4e4d 4220 4c55 204c 4853 5449
0002f10 4220 5355 2054 2041 4f4c 4441 4820 544f
0002f20 4553 2058 4550 454e 5254 5441 2045 3043
0002f30 4b43 4120 415a 455a 204c 5551 4545 4252
0002f40 4941 2054 5542 4c4c 4853 5449 4320 4f2e
0002f50 432e 4b2e 202e 4944 4b43 4542 5441 5245
0002f60 2053 4850 4e4f 2045 4553 2058 4f50 464f
0002f70 4b20 4f4f 4843 5345 4220 444f 4c49 2059
0002f80 2441 4824 4c4f 2045 4d4c 4f41 4320 4d55
0002f90 5547 5a5a 454c 2052 4142 4f5a 474e 5341
0002fa0 4e20 424f 4f4a 454b 2059 5552 4b53 2049
0002fb0 4942 4354 4148 5353 4620 4355 204b 4f59
0002fc0 2055 4154 504d 4e4f 4320 4f48 2043 4349
0002fd0 2045 5550 4b4e 2059 3144 4b43 5720 4948
0002fe0 205a 5543 544e 494c 4b43 5245 2020 4157
0002ff0 4b4e 4320 4e55 4c49 4e49 5547 2053 4542
0003000 5245 5120 4555 5245 204f 4959 4646 2059
0003010 4142 4652 4146 4543 4120 414e 534c 5845
0003020 4120 5353 5243 4341 454b 2052 494b 4b4e
0003030 2059 4942 4452 4f4c 4b43 5720 4445 4947
0003040 2045 4544 5045 4854 4f52 5441 5320 5254
0003050 4b4f 2045 4146 4543 5546 4b43 5245 4420
0003060 4d55 5342 4948 2054 4944 4b43 4142 2047
0003070 4c42 4f4f 5944 4820 4c45 204c 4c46 4d41
0003080 5245 4820 4f4f 4843 4520 414a 5543 414c
0003090 4954 474e 5320 5243 5745 4e49 2047 454a
00030a0 4b52 464f 2046 4f54 5353 5245 4520 414a
00030b0 554b 414c 4554 4220 4545 2046 5543 5452
00030c0 4941 534e 4620 4355 464b 4341 2045 5550
00030d0 4f54 4320 434f 534b 4f4d 454b 5420 5355
00030e0 2048 5754 5441 494c 5350 4620 4355 494b
00030f0 474e 2053 4f44 4747 4e49 4320 4152 4b43
0003100 4620 4355 2d4b 5341 2053 4944 474e 454c
0003110 5120 4555 5245 4720 4f52 4550 4320 4e55
0003120 494e 2045 5550 4542 2053 414a 4c49 4220
0003130 4941 2054 4154 5453 2045 594d 4820 4d41
0003140 4620 414c 2050 4f43 4b43 414d 5453 5245
0003150 4220 4152 5353 4549 4552 4c20 5a45 495a
0003160 5345 4f20 4152 4c4c 2059 4542 5441 4f59
0003170 5255 454d 5441 5020 4952 4b43 2053 4146
0003180 4943 4c41 4520 5458 5341 2059 494e 4747
0003190 5a41 4d20 2d4f 4f46 4620 4e49 4547 4652
00031a0 4355 204b 4820 4d4f 444f 4d55 5342 4948
00031b0 2054 4f43 4b43 5320 4355 454b 2052 5543
00031c0 544e 5546 4b43 5245 5320 4f50 4b4f 4220
00031d0 4f4c 444e 2045 4e4f 4220 4f4c 444e 2045
00031e0 4341 4954 4e4f 4420 474f 4947 474e 4a20
00031f0 4749 4147 4f42 204f 4944 4b43 4548 4441
0003200 5420 5557 544e 5245 4d20 544f 4148 5546
0003210 4b43 5245 2053 5543 204d 5547 5a5a 454c
0003220 2052 434f 4f54 5550 5353 2059 5543 544e
0003230 494c 4b43 4220 4c41 424c 4741 4420 474f
0003240 5947 5320 5954 454c 4820 414f 4552 4c20
0003250 4f4f 454e 2059 4146 4654 4355 204b 4f44
0003260 474e 5420 5449 5954 4157 4b4e 4120 5455
0003270 204f 5245 544f 4349 4320 4e55 594e 4620
0003280 552d 432d 4b2d 4b20 4e55 414a 4220 4749
0003290 4b20 4f4e 4b43 5245 2053 4f4e 2042 4f47
00032a0 4b4f 4620 4355 454b 5352 4355 454b 2052
00032b0 414d 5453 5245 3842 4720 5249 204c 4e4f
00032c0 4b20 4f4e 4842 4145 2044 4150 544e 4549
00032d0 2053 4152 4550 2044 454d 534e 5254 4155
00032e0 4554 4320 4552 4d41 4950 2045 5543 204d
00032f0 5246 4145 204b 4544 4747 204f 5546 4b43
0003300 4820 4c4f 2045 5550 5353 4220 4e41 4547
0003310 2052 4857 5230 4645 4341 2045 5542 5454
0003320 462d 4355 454b 2052 4f42 5a4f 2045 4f4c
0003330 494c 4154 4620 414c 5350 4620 4f4f 4654
0003340 4355 204b 4853 5449 4e49 2047 4548 4542
0003350 4220 4749 4220 414c 4b43 4720 5941 4f4c
0003360 4452 4220 4c4f 4f4c 4b43 2053 4350 2050
0003370 4f43 534b 4355 414b 5220 4d49 4f4a 2042
0003380 2d52 4154 4452 5420 5449 5954 5420 4157
0003390 5454 2059 4f43 4b43 4f48 534c 4554 2052
00033a0 554c 5453 4e49 2047 554d 4854 4641 4355
00033b0 414b 205a 414d 5453 5245 4142 4954 4e4f
00033c0 4320 4552 4954 204e 5241 4f45 414c 5320
00033d0 4948 205a 554e 2054 4153 4b43 4120 5353
00033e0 4f4a 4b43 5945 4820 454f 2052 4f50 594e
00033f0 4c50 5941 4420 4d55 4342 4e55 2054 5341
0003400 4d53 4e55 4843 5245 5020 5552 4544 4320
0003410 4e55 544e 2054 4954 5454 4659 4355 204b
0003420 4554 5453 5345 4420 4d55 4142 5353 5345
0003430 4b20 4f4e 4542 4441 4920 5041 5320 4143
0003440 2054 4e53 574f 4142 4c4c 4e49 2047 4542
0003450 5341 4954 4c41 5449 2059 454e 4e4f 5a41
0003460 2049 4950 504d 5320 5554 4950 2044 5553
0003470 4b43 4445 5420 4941 544e 4445 4c20 564f
0003480 2045 4d4f 2047 4f44 4355 4548 2059 5543
0003490 544e 5546 4b43 4120 5353 5345 4620 4b55
00034a0 5245 4620 4b55 4957 2054 554c 4542 4120
00034b0 5353 5541 544c 4420 4349 524b 5049 4550
00034c0 2052 4e41 4c41 4320 4d55 5544 504d 4620
00034d0 5543 204b 5546 4b4b 4e49 4320 4548 5453
00034e0 4349 454c 4320 434f 4e4b 534f 2045 4f42
00034f0 2044 4146 5453 5546 4b43 4820 4f4f 4554
0003500 2052 4942 5543 4952 554f 2053 4948 4c54
0003510 5245 5320 4e41 4c44 5245 5020 4255 2045
0003520 4f47 4b4f 2053 4f43 4143 4e49 2045 4f43
0003530 4b43 554d 434e 4548 2052 4755 594c 4220
0003540 5455 4654 4355 454b 2052 4f44 434f 4248
0003550 4741 5520 4f52 4850 4c49 4149 4320 4e55
0003560 4654 4341 2045 494b 454b 4220 4d4f 2044
0003570 4f43 4646 4e49 4420 444f 4547 2052 5254
0003580 4d55 4550 2044 574b 4649 5020 5548 4b4b
0003590 4e49 2047 4c53 4741 4220 4d55 4920 4542
00035a0 4952 4e41 5320 414c 2050 4944 494c 4147
00035b0 2046 4f43 4b43 5542 4752 5245 4320 434f
00035c0 204b 4f50 4b43 5445 5320 4948 5454 2059
00035d0 4542 5241 4544 4344 414c 204d 4850 4b55
00035e0 454b 2044 4944 474e 454c 4542 5252 4549
00035f0 2053 4942 5447 5449 2053 4944 4b43 4820
0003600 4145 2044 4146 5452 4220 5241 2046 5552
0003610 4242 5349 2048 4f4d 3046 4420 4349 464b
0003620 4341 2045 414e 5050 2059 5341 5253 4e41
0003630 4547 2052 5943 4542 4652 4355 494b 474e
0003640 3220 3147 2043 5858 2058 4f4d 4854 4641
0003650 4355 414b 5020 5341 4954 2045 4c43 4e55
0003660 4547 5320 4948 5354 4154 4e49 4420 4349
0003670 2d4b 5349 2048 4554 5a45 5720 5349 4145
0003680 5353 4320 434f 574b 4641 4c46 2045 4944
0003690 4b43 5242 4941 204e 4143 574d 4f48 4552
00036a0 4120 3535 4f48 454c 4d20 5341 434f 4948
00036b0 5453 5320 5243 414f 2054 5550 4942 2043
00036c0 4f43 4b43 4d53 5449 2048 4144 4e52 4a20
00036d0 4e55 594b 4320 4e55 4c54 4349 494b 474e
00036e0 4420 4c49 574c 4545 2044 5250 534f 4954
00036f0 5554 4554 5020 5245 4556 5352 4f49 204e
0003700 4950 5353 4445 4f20 4646 4f20 4752 5341
0003710 4d49 2053 4f44 494d 414e 4954 4e4f 4220
0003720 4145 454e 5352 4120 2424 4720 444f 4144
0003730 4e4d 554d 4854 4641 4355 454b 2052 4142
0003740 4542 4120 414e 504c 4f52 4542 4120 5353
0003750 494e 4747 5245 4e20 424f 4a20 4b4f 5945
0003760 4d20 544f 4548 4652 4355 494b 204e 454d
0003770 414e 4547 4120 5420 4f52 5349 4620 4741
0003780 4120 5353 494c 4b43 4320 5241 4550 4d54
0003790 4e55 4843 5245 4420 4c4f 4543 5454 4320
00037a0 4948 4b4e 2059 4f42 4f4f 4f4f 4f4f 5342
00037b0 4720 414c 534e 4620 5441 5546 4b43 5245
00037c0 4c20 494f 534e 5420 5345 4554 4a20 5245
00037d0 2d4b 464f 2046 4f48 4f4d 5245 544f 4349
00037e0 4820 4d55 4950 474e 4420 4e49 4c47 4245
00037f0 5245 5952 4820 5241 2044 4f43 4552 4220
0003800 5241 4e45 4b41 4445 4220 4749 5542 5454
0003810 4e20 4441 2053 544d 5248 5546 4b43 5245
0003820 5320 4948 5354 4820 454f 5a20 4f4f 4850
0003830 4c49 2045 5542 4d4d 5245 4820 4d4f 5945
0003840 4320 4d55 5544 504d 5453 5245 5320 5349
0003850 5953 5020 5349 2053 4541 4c4f 5355 4620
0003860 4e49 4547 4652 4355 454b 5352 4720 4148
0003870 2059 5546 574b 4948 2054 5242 4145 5453
0003880 2053 4f4d 4854 4641 4355 454b 2044 4946
0003890 5453 2059 4950 5353 4e49 2047 4f4d 4854
00038a0 4641 4355 494b 474e 5720 4e41 2047 5245
00038b0 544f 4349 5320 4948 4254 4741 4420 4349
00038c0 2d4b 4e53 4545 455a 4220 5455 4254 4e41
00038d0 2047 4f42 4557 204c 4146 4e4e 2059 4353
00038e0 4f52 2047 4853 5449 5546 4c4c 4820 524f
00038f0 594e 4620 5349 4554 2044 4146 4749 2054
0003900 4843 444f 5345 5420 4749 5448 5720 4948
0003910 4554 4c20 5345 4942 4e41 2053 4e41 4c41
0003920 4c20 4145 414b 4547 4220 4149 4354 2048
0003930 5845 4154 5943 5420 4545 5354 4220 4145
0003940 4556 2052 4c43 4145 4556 2052 4857 524f
0003950 4845 504f 4550 2052 4f43 4d4b 4e55 4843
0003960 5245 4620 555f 435f 4b5f 4820 5345 4548
0003970 4520 414a 5543 414c 4554 4320 4d55 4154
0003980 5452 4420 5552 4b4e 4220 4c55 444c 4b49
0003990 2045 5546 4b43 5420 4f52 4850 2059 4956
00039a0 5242 5441 524f 5720 4f48 4152 494c 4943
00039b0 554f 2053 4142 474e 5242 534f 5020 5355
00039c0 5953 5020 4c41 4341 2045 4f4c 4556 414d
00039d0 494b 474e 4620 4f4f 2054 4546 4954 4853
00039e0 5720 4545 4557 2045 0000 0000          
00039eb

I’m still not having any problem.

OK, one final step. Let’s open it in a text editor:

Hmmm. This time I think opinions might vary.

To me the idea of an “offensive word” doesn’t really make any sense. A word is just a sequence of letters. I’m a computer guy, so to me it’s just a sequence of bytes. But I don’t think any word can be said to be offensive any more than we could claim that the letters in that word are also offensive. And I don’t think we should ban the letter “f”.

It’s the intention and meaning that we derive from the word that matters – the way we read it, not the word itself. The first image is innocuous because you are looking at that stream of bytes as a bitmap image. In the last one, you’re parsing it as english, and it causes a very different reaction. But even then, there’s no hate in a list of “bad words” that I pulled off the internet. I’d argue that the final image is precisely as offensive as the first two because it’s just a list that I pulled off the net. Nobody yelled this at anybody. It wasn’t used for a hateful purpose. Therefore it’s innocuous.

The point is that we should look for the message people are trying to convey when they use a word before we have an emotional reaction to the word itself. I’ll grant that certain words do cause real problems for some people, and that certain words have been used historically in very hateful ways, but that doesn’t necessarily mean that every possible use of that word is negative. There are indeed certain words that might currently be almost entirely negative, but that won’t necessarily always be the case, and it might not be the case all over the world now, and it certainly doesn’t apply to every word that has been used, for example, as a slur.

Then there’s the whole “freedom of expression should trump the right to not be upset” argument, wherein I will argue that there is exactly one thing that the muricans did actually – wait for it, I’m gonna say it – The Americans did get freedom of speech right. Or at least, pretty close. But that’s a whole other wall of text.

I just thought this was an interesting demonstration of how your perception of data can change, depending on how you look at it :)

The State of Pulseaudio in 2021

Every now and then I like to revisit an old topic.

So, let’s revisit pulseaudio and my hatred for it, shall we?

Now, you’re not an old greybeard like me, so you’re probably saying to yourself right now “OMG still with pulseaudio?!? That attitude is sooooo 2008!”

Well, for all the people over the years who have repeated the line of pure bullshit propaganda that “pulseaudio is much better these days and almost sorta kinda works most of the time, if you squint”, I’d like to present my first, reflexive solution to the fact that today I had no audio in zoom on a laptop with a current version of pulseaudio. A solution which, I might add, solved my problem instantly:

$ sudo bash -c "while true; do pkill -9 pulseaudio; done" &

Sure, it might not be efficient or pretty, but it worked. And it serves as a perfect metaphor for the state of Linux audio for this past decade and change, which can be summed up as “If you have an audio problem on Linux, the fault lies with pulseaudio”.

There have been multiple occasions where I’ve been trying to figure out some weird audio behaviour, only to realise “Oh OF COURSE! How silly of me! this machine has pulseaudio installed!”, and disable pulseaudio, and the problem goes away.

I’d file bugs for all this stuff, but I’m sure the fault lies with gnome (which I don’t use), or KDE (which I don’t use), or nginx, or my distro, or perhaps Microsoft Office. I’m sure these things are not actually problems with pulseaudio, because Lennart’s software never has any bugs.

I for one welcome the next decade’s worth of “if there’s a weird issue on Linux, The problem lies with systemd”, and being told in my bug reports that the problem is in the default configuration that comes with Mac OS X Server.

Now it’s off to go read the documentation (yet again) on how to disable this godawful dreck to stop it from automatically starting itself. Unfortunately we’re not in the days where just removing it is a simple option anymore (thanks for the totally unnecessary hard dependency, mozilla!)

Buying “For All Mankind”

I’ve been watching this show called For All Mankind. It’s glorious. One day there will almost certainly be a blog post here gushing about it. It has the potential to be my favourite TV show ever. I’ve told pretty much everyone I know about it.

But it’s an Apple TV show, so I can’t ethically recommend any legitimate means of watching it.

Today, I decided to do a thing that I do every now and then: make a good-faith effort to find a way to reward creators of content like this in an ethical way.

In other words, I want to buy For All Mankind on DVD or bluray.

So I decided to hit up apple for a chat to ask them when it’s coming out in a format where it can actually be purchased (as opposed to rented, which is what you get when you “buy” it from Apple TV), and unencumbered by DRM.

That went about as well as you’d expect.

The TL;DR version is that Apple won’t even discuss the possibility of you buying one of their shows on DVD without you providing your personal information. Much less actually release a show on a medium where you can actually buy it. Not only that, but they insist on using misleading terms like “buy”, and “purchase the content legitimately” even when called out on it. I guess they do deserve some minimal number of points for consistency.

So, if you want to watch For All Mankind, the most ethical way I can recommend to watch it is by using The Pirate Bay. You get very high-quality web-download rips there regularly every week.

And I really do recommend watching it. It’s great.

Dear Ronald D Moore: Your show is really great. I’d love to give you and your production company some money to support it’s ongoing creation, but Apple refused to help me with that. If you want to reach out to me and let me know how I can do that, Please do. I’d happily pay premium prices for a box set, I’ll be all like “shut up and take my money”. Thanks.

Here’s the chat log in full:

(well, almost full. This is the last screengrab I took. It was very close to the end of the chat. After this it was pretty much just “well, thanks for nothing I guess? Bye.”)


image of a long, text-based chat with apple tech support. Sorry, vision-impaired people!

Top notch reporting

Full Article archived here

Nice one, ABC. That’s some top-notch journalism right there.

Firstly, I’m struck by the neutral tone of this article reporting on this…uh… “extra-legal”… murder. And I find myself wondering what the tone would be like if it was a nuclear scientist in a western country who had been killed. I can’t help but agree with the phrase “shameful double standards”. This was an act of terrorism, pure and simple.

Secondly: What, you couldn’t afford to have an actual interpreter translate the tweet?

tweet translation straight from google translate, with the nonsense translation obscured by an ellipsis

Nah, rather than wait an hour or two and spend maybe a couple of hundred bucks on having an actual interpreter give an actual translation of what was actually said, we’ll just run the tweet through google translate! And hey, if google translate returns something clearly nonsensical, we’ll just edit that part out!

Nice one, ABC. I can see why you’re in favour of making google and facetube pay for the media they link to. With reporting of this high caliber it’s clearly worth it.

My thoughts on the Star Trek: Lower Decks Trailer

So the trailer for Star Trek: Lower Decks is finally here. I thought I’d share my thoughts on it:

Why would I bother watching this trailer? It’s got “Star Trek” in the title, and it’s being made by CBS in 2020. That’s all I need to know. All I would achieve by watching it is angering myself and wasting 90 seconds (or however long it is, I haven’t even looked) of my life.

Plus, they haven’t bothered getting back to me with billing information after I contacted them when they announced Strange New Worlds:
I Contacted them a few months ago. They never replied

So I’m just going to assume that they don’t want me to watch it, anyway. They clearly didn’t want me to watch Discovery or Picard.

I’m not even going to bother talking about why I’m not going to watch the trailer for Strange New Worlds when that comes out. If the trailer and the show comes out and I haven’t mentioned it at all, you can just assume CBS never got back to me with that billing information.

And that’s all I have to say about that.

RIP Star Trek
1966 – 2005

Murderers

Just in case anybody is wondering why I refer to every member of all armed forces as a murderer, Here’s why. It’s because of all the murdering they do.

I’ve heard theories about how on the whole the “defense” (lol, there’s a misnomer) force does good. Apparently they build schools and hospitals and stuff in parts of the world where bad things have happened. And apparently they do this much cheaper than, say, a builder could do it.

OK, so, firstly, for 25 billion dollars per year, I could build you a whole lotta schools and hospitals. I’m betting more than the military could, because I wouldn’t be spending that money on tools optimised for murder: The builders I sent out to build schools wouldn’t have access to attack helicopters, so they wouldn’t be able to murder anybody using mounted machine guns in attack helicopters. They wouldn’t have assault rifles, so their ability to murder people with assault rifles would be greatly diminished. You’re less likely to “accidentally” napalm a kindergarten if you’re not given any napalm as part of your “let’s go build a hospital” loadout. So not only would I save a bunch of money by not buying attack helicopters, assault rifles, and napalm, but I expect it would also have an effect on the number of murders done. Also, I’m no builder, but I suspect that a trowel is probably going to be a more effective tool for bricklaying than an assault rifle, in addition to being much much cheaper.

And, secondly, let’s say that I’m totally wrong and that attack helicopters are absolutely the best tool for the job of raising a building (which would make them super versatile, because they’re also pretty good for razing buildings) and that they’re cheaper than builders. Even if you’re building these schools and hospitals at one tenth the cost that a builder could, I’ll pay the extra to not have the whole “murder” and “warcrimes” things being done with my tax dollars, thanks.

Who wants to make a bet with me? I’ll bet you that nobody spends life in prison as a result of this.

Disband all armed forces immediately. The only things that they do better than anybody else are murder and warcrimes.

End Of An Era

In the next day or so, the seti@home project goes into “hibernation”.

I’ve been contributing my spare CPU time to this project for over 20 years. More than half my life. A whole bunch of posts on this blog are about seti@home milestones.

I’m pretty avid about it, because I think that SETI is probably the single most important bit of science we can be doing. That’s a whole discussion, perhaps for another day.

I keep track of the statistics on an irregular basis. I contribute as much as possible, including donating CPU time of servers and workstations I control.

I’m the number 49 contributor in the country. I’m glad that I managed to crack the top 50 (this happened fairly recently) before the project shut down.

I also managed to crack the 99.9th percentile – I’ve accumulated more credit than 99.90051% of all SETI@Home Users. This is also a fairly recent development. I’m also glad that I managed to crack three-nines before the project shut down.

I’m ranked 1,797 out of 1,806,205 in the world.

I’ve contributed 28.91 quintillion floating-point operations:

Suffice to say that it’s something that I’m passionate about. My Drake Equation simulator is an example of that.

I’m… displeased… by this development.

The announcement that the project is going into “hibernation” came less than a month ago. Here’s the stated reasons:


We’re doing this for two reasons:

1) Scientifically, we’re at the point of diminishing returns; basically, we’ve analyzed all the data we need for now.

2) It’s a lot of work for us to manage the distributed processing of data. We need to focus on completing the back-end analysis of the results we already have, and writing this up in a scientific journal paper.

With regard to point one: My drake equation simulator, and common sense, tells me one thing about SETI: it’s a long-haul game. Given the size of the galaxy and the delays in communication between stars, any communication with extraterrestrial intelligence is going to be a slow process. Another important factor is that given the size of the galaxy, if an alien civilization starts broadcasting today, the likelihood is that it’s going to be thousands of years – perhaps even a hundred thousand – before we receive that transmission. And that’s only taking civilisations in our galaxy into account. The SETI project might run for hundreds of years and not find anything. And it should. A couple of decades for a project like this is an infinitesimal blip compared with the timespans we’re talking about with regard to extraterrestrial intelligence. If you’re going to make the claim that “we’ve analyzed all the data we need for now”, then that can only mean one of two possibilities: 1: You’re not actually doing SETI, or 2: you don’t know what the fuck you’re talking about. There is new data coming in every second of every day. That first signal we detect could be tomorrow. Or it could be a thousand years from now. If we stop looking it’ll be never.

Some fuckwitspeople argue that running a project like SETI is expensiveblah blah blah. They seem to think that because we haven’t found anything in a few decades (well, nothing definite – we have found a couple of interesting and unexplained signals, the Wow! Signal being the most famous) that we should save our money and give up. This is ludicrously short-sighted thinking. The SETI project needs to be a LONG-term project. In the hundreds or thousands of years. It’ll take a hundred thousand years of SETI before we can say that we’re (probably) the only intelligence in the galaxy, and even then we could get a signal the next day. And no result is a result where SETI is concerned – not getting signals gives us some indication of the rarity of intelligence (or, at least, EM radio tech) in the galaxy.

As for point two, this basically boils down to “we’ve decided we can’t be bothered”. If it’s a lot of work then that means you haven’t automated it properly. Writing this up as a paper? What I’m hearing is “it’s more important that I get published than answering one of the most important and fundamental questions out there”. I’ll be expecting to see my name attributed on the paper.

There are nearly 2 million seti@home users. Lots of us are computer nerds. I’m sure you could have found some volunteers to do all that hard work you can’t be bothered with any more. I’d be happy to do as much as I can. But you didn’t ask, instead you just shut down a project that I’ve been invested in for most of my lifetime.

Obviously, seti@home isn’t all of SETI, obviously there will be a bunch of other SETI being done. The Breakthrough listen project is doing some great stuff. But this is a blow to science. Seti@home was a pioneer of distributed computing. And I think that the way it’s being shut down is a huge disservice to science and to all the people who have volunteered our processor time and electricity over the decades. I’m not impressed.

My machines, on the other hand, will be relieved. Their processors will be running much cooler from now on. I’ll go through processor fans much less quickly. And my wallet will probably appreciate the reduction in electricity consumption: I’ll be interested to see the difference in my power bill. I wouldn’t be surprised if it’s noticeable.

Before The Dawn

“It’s always darkest before the dawn”
– Morons

It isn’t. Before dawn, there’s a period called “pre-dawn” where there’s a glow on the horizon from the approaching sun. This is the ~hour-long period between astronomical sunrise and actual sunrise. And it’s fairly bright. That’s why astronomers make a distinction between astronomical sunrise/sunset and actual sunrise/sunset – because the light from the sun in this period is enough to interfere with astronomical observations.

So, to summarise, just before the dawn there’s a period of dim light which is actually as bright as the night gets before actual daytime (barring things like supernovae). The darkest part is around midnight when the sun is on the opposite side of the planet. It’s not always darkest before the dawn, it’s darkest before the period of light before dawn. And in fact that’s not even “darkest”, because you have things like stars and the moon lighting things up. It’s actually darkest in caves, where there is no dawn.

But who lets facts get in the way of a bland metaphor?