From 754b8ccb3a364e8e3d8577ce9d7b1e2996fd92ba Mon Sep 17 00:00:00 2001
From: Leander Hutton
+
+
+Mainly HID page 7, with additions to support internal features, media keys, and power keys.
+The following code names are deprecated, and should no longer be used.
+For most uses, either a single key or a combination can be specified. This diagram gives an simplified view of the processing stages inside the converter: The first stage is a fixed translation into HID codes, that cannot be modified by the config. The goal of this stage is
+ to map into a reasonable base set of codes for further remapping, and to try and ensure that each key on the keyboard
+ results in a unique HID code after this stage. The second stage combines remapping and layer functions, since layers are simply alternate remappings. The third stage is macro expansion. The final stage separates out the internal commands such as SELECTn and BOOT etc. and routes them appropriately, and
+ also converts the HIDX codes back into standard HID codes for the keyboard, media, and power code pages. The Example: The Quotation marks are optional unless the file name contains spaces. Example:
+Groups of settings can be toggled by using the
+When any of the SELECT codes are output the entire config is reloaded, and the Blocks following Blocks following Example: Blocks following the Example: Blocks following the The keyboard ID is given in hexadecimal. See the Troubleshooting section for details of how to find out the ID of your keyboard. Example: Layerblocks define combinations of function keys to access different layers. Function keys are defined by remapping keys to codes FN1 to FN8. Example: Remapblocks define remappings either for the base layer, or for the specified
+layer if a Example: Macroblocks define one or more macros. Macros are triggered by a single HID
+key with any combination of metas, and can have command blocks that execute
+on make and/or break of the HID key. Example:
+Macros are triggered only when the state matches for all of the the specified metas.
+When looking for a match, macros are checked in the order they appear in the config file. The correct order would be: See the HID code list for HID and META values. Comments begin with a '#' and continue to the end of the line. The force command disables the auto-detection of keyboard type. The include command processes another file, exactly as if it was copy-pasted to where the include command is. Conditionals stay in effect until the conditional is repeated with different argument(s). Layerblocks define combinations of function keys to access different layers. Remapblocks define remappings either for the base layer, or for the specified
+layer if a layer command is given inside the block. Macroblocks define one or more macros. Macros are triggered by a single HID
+key with any combination of metas, and can have command blocks that execute
+on either or both of make and break of the HID key. The firmware has been compiled for the following CPUs, listed roughly in order of preference:Deskthority Thread Contents
+
+
+
+
+Reply Date By Post
+0 22 Apr 2012 Soarer: This is my Teensy-based project which adapts XT, AT and some 122 key terminal keyboar ...
+1 23 Apr 2012 Maarten: Oh nice work! Now all i need is a teensy
+2 23 Apr 2012 Kurrk: This is a good opportunity to say thank you! I'm using a XT model F with your convert ...
+3 23 Apr 2012 bhtooefr: Congrats on getting 1.0 out, and thank you. This adapter is powering my favorite keyb ...
+4 23 Apr 2012 Soarer: Thanks people, you're welcome! I hope there aren't too many bugs discovered, so I can ...
+5 23 Apr 2012 litster: Excellent converter! It is not just for IBM keyboards. It can make all your Filco key ...
+6 23 Apr 2012 RC-1140: Yup, have to agree, this converter firmware is by far the best. I'm using a teensy at ...
+7 23 Apr 2012 Soarer: I probably will - I'm a forum whore, I'll open my mouth wherever there are good posti ...
+8 23 Apr 2012 fruktstund: This is a fantastic converter. Used it for an old BTC (I think it was BTC at least) k ...
+9 23 Apr 2012 Soarer: It could just be a wiring error when you rebuilt it... is it rebuilt with the same co ...
+10 23 Apr 2012 fruktstund: Yeah, it seems the most likely that it's a wiring error, even though that would mean ...
+11 23 Apr 2012 Soarer: It's pretty unusual to actually kill anything (but it has been known). Although, it's ...
+12 24 Apr 2012 Grond: Is there any way to build such a converter without soldering?
+13 24 Apr 2012 bhtooefr: Yes, although it'll take having a Teensy with pins, and then having the right jumper ...
+14 24 Apr 2012 Grond: I'd like to make this converter for Model M terminal. Suppose I get a female RJ conne ...
+15 24 Apr 2012 bhtooefr: You'd probably need to solder the RJ connector. However, 122-key terminal Ms (if it's ...
+16 24 Apr 2012 Grond: Yes it does! So what? Can I get a wire that goes from the six pin connector to the Te ...
+17 24 Apr 2012 bhtooefr: You would need female jumper wires to go from the pins on the controller to the pins ...
+18 24 Apr 2012 Grond: Like these?
+19 24 Apr 2012 bhtooefr: That would work, yes.
+20 24 Apr 2012 Grond: Thanks!
+21 26 Apr 2012 fruktstund: I've checked the wiring now and I'm confident it's correctly done! I also tried it ou ...
+22 27 Apr 2012 Soarer: Hmm, I get about 0.6MΩ measured on the Teensy, with no keyboard or USB attached. I'm ...
+23 28 Apr 2012 fruktstund: I seem to get approximately the same measurements as you Soarer, so this is beginning ...
+24 28 Apr 2012 Soarer: Well, it doesn't mean the Teensy isn't damaged, but it seems to be basically OK. What ...
+25 05 May 2012 Soarer: fruktstund - did you spot anything?
+26 08 May 2012 nfc: Finally had the opportunity to test it... a masterpiece. Info research, write phase, ...
+27 09 May 2012 dirge: What are the chances of the wyse boards working? Before I start messing on with mine.
+28 09 May 2012 Soarer: Thanks! I'm happy enough if it's 'useful' Pretty slim, I'm afraid. I don't know muc ...
+29 09 May 2012 dirge: You're much better at this type of thing so would you offer some advice on how I coul ...
+30 09 May 2012 off: As the uninitiated, soarer's converter sounds like a protocol converter, so you'd hav ...
+31 09 May 2012 Soarer: I'm going to assume for now that its signalling is something like the two shown on kb ...
+32 09 May 2012 dirge: Thanks mate, that helps a lot. Working on the key matrix, following sixty's instructi ...
+33 14 May 2012 fruktstund: hid_listen only prints out a lot of "R05", with an occasional "R04" every now and the ...
+34 14 May 2012 Soarer: Sorry, I meant when it's first connected... have hid_listen running before you plug i ...
+35 14 May 2012 hoggy: Just built one of these. Soarer, you are a genius. I'll take some pics when I've got ...
+36 15 May 2012 hoggy: It's a lousy photo...
+37 15 May 2012 fruktstund: Ah, I see. I'll check as soon as I can!
+38 15 May 2012 Soarer: Nice project box!
+39 15 May 2012 off: Indeed! Not the smallest, but looks to be the most functionally complete
+40 16 May 2012 hoggy: What I wanted to make was a small lego box, with 3 leds and one of these stickers (to ...
+41 16 May 2012 hoggy: The converter works better with my siig minitouch than a blue cube.
+42 17 May 2012 Soarer: That's a fine idea to use one of those stickers! I don't think I ever looked into why ...
+43 31 May 2012 Soarer: New version uploaded which fixes a bug that stopped jump to bootloader functions work ...
+44 10 Jun 2012 Soarer: Another new version posted, v1.02 - the converter wasn't handling the commands tellin ...
+45 06 Jul 2012 Findecanor: Does the current code base have support for driving LEDs for Caps Lock, Scroll Lock a ...
+46 06 Jul 2012 Soarer: It does
+47 07 Jul 2012 JBert: I have made CapsLock an FN1 key, but now I was wondering if I could make some key on ...
+48 07 Jul 2012 Soarer: Not without remapping one of the shifts in the Fn layer to something which would just ...
+49 07 Jul 2012 JBert: Ah, that's a handy chart. I've been experimentally building some other macros to coun ...
+50 07 Jul 2012 Soarer: I use the double-shift myself, in the base layer, and find it feels quite logical. Bu ...
+51 16 Jul 2012 Paranoid: Has anyone ever tested if you can hook up an old laptop keyboard to your computer wit ...
+52 16 Jul 2012 Findecanor: If a keyboard has a ribbon cable, then you can bet that the controller is not part of ...
+53 16 Jul 2012 JBert: I happen to have another (weird) question: will there ever be support for a few extra ...
+54 21 Jul 2012 JBert: No answer? I actually noticed another thing: it seems that the DELETE remap code crea ...
+55 21 Jul 2012 Soarer: Sorry! I saw your post before, but then forgot about it I don't think I'll add anyth ...
+56 21 Jul 2012 Soarer: Ahem Ignore that Autohotkey was blocking my deletes
+57 22 Jul 2012 JBert: Woah, today it somehow works?!? I also noticed that the output above is not for TAB b ...
+58 22 Jul 2012 Soarer: Don't worry, I didn't spend too long on it. I added some debug printing to the macro ...
+59 22 Jul 2012 Paranoid: Hey Soarer! I recently acquired a liberty keyboard and it has this connecter: The wei ...
+60 22 Jul 2012 Soarer: WTF is that thing!!! At a guess, there is... CGND - case/shielding ground S.P. - dunn ...
+61 24 Jul 2012 Paranoid: Hehe okidoki thanks for figuring it out! I wonder if there is any way that could ma ...
+62 24 Jul 2012 Soarer: If you have a serial port, you could try wiring it to that (and a power supply for th ...
+63 01 Aug 2012 Trent: Question: I have an IBM board with the RJ-45 converter. To hook this up to the conver ...
+64 01 Aug 2012 AltRN8: Hoping folks can help. What is the expected behavior of using a SC with a Model F and ...
+65 01 Aug 2012 Soarer: Nope... just something like this: Unfortunately they don't fit in a breadboard though ...
+66 01 Aug 2012 Soarer: Yup, without legacy.sc compiled and loaded, * is just *. The two commands you need ar ...
+67 02 Aug 2012 spolia_optima: Is anyone here willing to build one of these for profit? Or is building one myself no ...
+68 02 Aug 2012 Trent: Soarer thanks for the advice. I took a look at the link you suggested and bought the ...
+69 02 Aug 2012 JBert: Here's a step by step guide: You should now have a working converter. See Soarer's po ...
+70 02 Aug 2012 AltRN8: Thanks Soarer! I actually figured it out right after I posted. I feel a little dense ...
+71 02 Aug 2012 Soarer: Sure does! It handles all of the codes produced by the 'extra' positions available on ...
+72 03 Aug 2012 Trent: Awesome thanks very much. I ordered all of the parts for my converter! The only parts ...
+73 03 Aug 2012 JBert: I think you misunderstood that forum post. This also means that you will only supply ...
+74 03 Aug 2012 Trent: Ah I was wondering whether or not the keyboard would still be able to be powered with ...
+75 03 Aug 2012 Soarer: Actually, I think the forum post is mistaken; a Teensy running at 5V should work fine ...
+76 03 Aug 2012 Trent: Yeah it was that post. Ah a serial connection that makes sense. And does this convert ...
+77 04 Aug 2012 Soarer: Hey, that's a trick question! No fair! It's both, and neither! Typically the PS/2 por ...
+78 06 Aug 2012 Trent: Ah clever. Well cool I look forward to making the converter! I am still waiting on pa ...
+79 06 Aug 2012 RC-1140: hm, reading this stuff makes me overthink the project I had planned (maybe you rememb ...
+80 07 Aug 2012 Soarer: I think I said before that it sounded 'challenging'. Now it's sounding challenging ...
+81 09 Aug 2012 Trent: Ok so what am I doing wrong: * Programmed the teensy with 1.02 * using a terminal sty ...
+82 09 Aug 2012 Icarium: I've tried a RJ-45 jack once for a 122key Model M and there was something else in the ...
+83 09 Aug 2012 JBert: That's a known bug: Simply unplug the Teensy from USB and it should work again.
+84 09 Aug 2012 Trent: Icarium I will try what you suggested. Jbert I noticed that does indeed help. I can't ...
+85 09 Aug 2012 Soarer: I haven't had that problem with scinfo, only with scrd. After running scboot you woul ...
+86 09 Aug 2012 Trent: So the order would be: 1. Flash teensy 2. scas example.sc example.scb 2. scwr example ...
+87 09 Aug 2012 Soarer: Ouch, that's as I feared... backwards The silver line is the shielding, which is PE. ...
+88 09 Aug 2012 Trent: Edit: after re-do of backward ass colors, I load up the teensy, reflash with Soarer_a ...
+89 09 Aug 2012 Soarer: Strange choice of colours, for sure. Hardly matters though. That they used pinouts th ...
+90 10 Aug 2012 Trent: Do you know what the colors would be for the silver tag XT/AT style adapters? I have ...
+91 10 Aug 2012 Soarer: I think they vary... at least, the PC/XT colours are different to the 122-key's. Let ...
+92 10 Aug 2012 JBert: Noooooo! 1. Press button on Teensy 2. Flash Teensy 3. scas ... 4. scwr 5. Unplug / pl ...
+93 11 Aug 2012 Trent: Hmm, seems that this board is indeed dead after following your instructions jBert. I' ...
+94 31 Aug 2012 AKIMbO: I need some serious help with programming this teensy. If someone could give me the e ...
+95 31 Aug 2012 Soarer: Nothing but a couple of misunderstandings here First, you don't want to be in progra ...
+96 31 Aug 2012 AKIMbO: It worked! Thank you so much Soarer! Is there an easy way to completely go back to de ...
+97 31 Aug 2012 Soarer: Sure, just compile an empty text file! Or, in a Windows command prompt, you can simpl ...
+98 07 Sep 2012 Soarer: I see some people have noticed the v1.03 release... it's far from an essential update ...
+99 23 Sep 2012 fruktstund: Soarer, I'm back with a new exciting question: is it possible to use other pins on th ...
+100 23 Sep 2012 Soarer: Hmm, well I don't really want to start producing and testing a modified version, but ...
+101 23 Sep 2012 fruktstund: Tried your shorting test, and both output the error codes as expected (except that on ...
+102 23 Sep 2012 dirge: Got mine working but trying to make a USB cable out the original cable. Looking towar ...
+103 23 Sep 2012 Soarer: So they are both XTs, but they have LEDs? Sorry, for some reason I thought you were t ...
+104 23 Sep 2012 Soarer: On your head be it! Have a camera handy for when the magic smoke gets out
+105 23 Sep 2012 dirge: well typing on it now so no great damage But would love to know the correct usb pinn ...
+106 23 Sep 2012 Soarer: My files are symbol agnostic, as are scan codes and HID codes Any discrepancy betwe ...
+107 25 Sep 2012 Grond: Anyone tested this with Teensy 3.0?
+108 25 Sep 2012 JBert: It's a totally different processor and thus the .hex file will not work.
+109 25 Sep 2012 dirge: Well that would explain it, who's idea was it to have the end inverted on the mini so ...
+110 25 Sep 2012 dirge: right I`ve used the included tools and compiled the dvorak bin. I like the fact £ is ...
+111 25 Sep 2012 Soarer: Damn UK vs US layout problem! 'Backslash' is a # on a UK layout... think of the diffe ...
+112 25 Sep 2012 dirge: Changing to US would be bad, I`m logged into UK servers most the time. "`¬" is an op ...
+113 25 Sep 2012 Soarer: That's because GRAVE and HASH aren't keys All the key names are US-centric, so we j ...
+114 25 Sep 2012 dirge: Your awesome! I'm going to post some pics now!
+115 02 Oct 2012 Mikester: hi guys, i just modified my IBM 3487 terminal keyboard with a teensy-board with soare ...
+116 03 Oct 2012 Soarer: Very nice! That USB extension fits tidily between the existing posts, I see! Strictly ...
+117 03 Oct 2012 Soarer: Anyone that thinks they might've applied power in reverse - see here for a test and f ...
+118 04 Oct 2012 sealclubber: Hey Soarer. Just wanted to thank you for your awesome work. I finally got my baby to ...
+119 04 Oct 2012 Soarer: Ha! You don't! There's an initial translation from each scan code set into HID codes, ...
+120 04 Oct 2012 sealclubber: I am honestly surprised that this is so easy! Thank you for all of your help
+121 04 Oct 2012 Soarer: Cool! I made a little mistake in the last three macros - well, not really a mistake, ...
+122 05 Oct 2012 Soarer: Heh, another minor mistake... the code prefixed by 'd' is remapping. The one you wa ...
+123 05 Oct 2012 sealclubber: Gotcha. Just popped in again to tell you everything is working all nice and smooth. T ...
+124 05 Oct 2012 Soarer: Aha, well, that's even better! ... I finally finished my set of adapters... ... by fi ...
+125 26 Oct 2012 wcass: feature request: i know that all of the guys that like trackpoints would like to see ...
+126 26 Oct 2012 Soarer: Hmm. I might add mousekeys functions at some point (similar to hasu's code), but I'm ...
+127 26 Oct 2012 wcass: a trackpoint mod would have bare leads rather than a proper PS2 plug. yes, i could cr ...
+128 26 Oct 2012 Soarer: Are you sure? I'd only spotted the Mouse Keys ("You can emulates mouse move and butto ...
+129 26 Oct 2012 wcass: - Features section, 5th bullet item. if you have a copy of his code, look for ps2_mo ...
+130 27 Oct 2012 Soarer: Ah, so it does
+131 27 Oct 2012 hasu: I'm a fan of trackpoint, sure But it is very difficult to integrate it into my favo ...
+132 27 Oct 2012 Icarium: Actually there is another good reason for putting PS/2 through the Teensy but I haven ...
+133 27 Oct 2012 Soarer: I might pencil it in for v2.0 It sounds like quite a lot of work to do it nicely - d ...
+134 29 Oct 2012 suka: I have used exactly such a setup in my custom board for the last couple of months, an ...
+135 29 Oct 2012 Soarer: Heh, I'm not saying it would be , just that it would take And I don't even have a ...
+136 29 Oct 2012 fossala: I've got a teensy coming for a 122 key terminal M. What would be the best way to conn ...
+137 29 Oct 2012 wcass: I installed a teensy inside the case of my keyboard. i'll post pictures of how i did ...
+138 30 Oct 2012 wcass: This is what i did and it has worked very well for me. You will need a 6' USB A-to-mi ...
+139 30 Oct 2012 fossala: Looks good, lots of good info. I'll take mine apart and look at it later. I can see f ...
+140 30 Oct 2012 Soarer: That's excellent, wcass! I'll just add my usual caveat about not trusting the wire co ...
+141 08 Nov 2012 fossala: OK, the teensy turned up yesterday. I've stripped the wires ready for doing the solde ...
+142 08 Nov 2012 JBert: It should work fine without a config loaded. Only when you got some ancient keyboard ...
+143 08 Nov 2012 Soarer: Indeed; config files are just tweaks to the default mappings (one for each scan code ...
+144 10 Nov 2012 Vierax: Hello, just a noob in C (in Python too but work in progress for bothâ¦) so I might m ...
+145 10 Nov 2012 fossala: All up and running, typing this with it now. Thanks for your hard work. Sure there wi ...
+146 10 Nov 2012 Soarer: It still sends keycodes, so yes, the sensible layouts to do in hardware are those whi ...
+147 11 Nov 2012 Vierax: Oh yeah macros, that's clever ! You just need a referential layout who can handle the ...
+148 11 Nov 2012 Soarer: Hmm, true, and being OS specific would make it a bit pointless really, unless you wer ...
+149 12 Nov 2012 Vierax: Yes the simplest way seems to have hard dvorak and colemak and combining the hard qwe ...
+150 21 Nov 2012 JBert: Except it doesn't work with UAC or the login screen... It's fun to type in Colemak in ...
+151 24 Nov 2012 Hubbert: I have the exact same question: did you come up with a fix, JBert? Otherwise, I guess ...
+152 24 Nov 2012 JBert: No, I just left the project for what it was after Soarer said he didn't want to add s ...
+153 24 Nov 2012 Hubbert: OK...sounds like maybe that's the way to go. I made a new thread about how to interfa ...
+154 27 Nov 2012 fossala: How can I get the lefthand keys working on a 122 model m with this firmware?
+155 27 Nov 2012 Icarium: Which one? With Soarer's it should work out of the box. Wait, what do you mean by lef ...
+156 27 Nov 2012 7bit: The function keys to the left of the keyboard.
+157 27 Nov 2012 fossala: IBM model m terminal. By left hand keys I mean the 10 key caps to the far left.
+158 27 Nov 2012 Icarium: Ah, well those you actually have to add to the config afair. I can send you mine as a ...
+159 27 Nov 2012 fossala: I will have to read up how to make configs, thanks.
+160 27 Nov 2012 Icarium: Soarer's docs are insanely good. I would like to reward him with a virtual cookie or ...
+161 28 Nov 2012 bhtooefr: I need to find how I mapped mine, but it involved mapping volume, the PrtSc/ScrLk/Pau ...
+162 07 Dec 2012 Soarer: PLEASE VOTE for my converter in the Deskthority Awards 2012: Best input device mod 20 ...
+163 10 Dec 2012 sealclubber: Hello again Soarer! Just nabbed myself a Model F off ebay (for cheap... great conditi ...
+164 10 Dec 2012 Soarer: I can't remember it 100%. Which Model F? I think in most cases the controller grounds ...
+165 10 Dec 2012 bhtooefr: You might get the ground path of: Base pan -> keyboard frame -> controller -> Teensy ...
+166 11 Dec 2012 sealclubber: Nevermind its all good. Typing on it at the moment actually. Some of the keys needed ...
+167 13 Dec 2012 Soarer: Is there still desire for the extra few keys? I've got v1.1 almost ready, and could p ...
+168 13 Dec 2012 JBert: I think I'm personally not going to use it anymore now that there are alternative Pok ...
+169 18 Dec 2012 Hubbert: That would still be great for me! And I like the no-matrix idea, both for simplicity ...
+170 18 Dec 2012 Soarer: For now I've coded it to read 5 inputs at 1kHz with a simple 10ms batch debounce. Tha ...
+
+
diff --git a/docs/GH.html b/docs/GH.html
new file mode 100644
index 0000000..c84f661
--- /dev/null
+++ b/docs/GH.html
@@ -0,0 +1,651 @@
+
+
+
+GeekHack Thread Contents
+
+
+
+
+Reply Date By Post
+0 22 Apr 2011 Soarer: This is my Teensy-based project which adapts XT, AT and some 122 key terminal keyboar ...
+1 22 Apr 2011 Mr. Perfect: Impressive work there. It's tempting to make one of these even for boards that work o ...
+2 22 Apr 2011 Soarer: Some boards don't have LEDs (e.g. XTs and Terminals), and in the case of the XT the p ...
+3 22 Apr 2011 HaveANiceDay: This looks really interesting. Especially the Filco NKRO USB Mod possibilities. I don ...
+4 23 Apr 2011 hasu: Nice work! I tried your converter with PS/2 keyboard on Mac and confirmed NKRO works ...
+5 23 Apr 2011 Soarer: Thanks, hasu! I might need to add in your fix for the SET_IDLE problem on OS-X. I hav ...
+6 23 Apr 2011 Soarer: Which one? My firmware was already working better than theirs many weeks ago.
+7 23 Apr 2011 ch_123: I'd be willing to check this out whenever I get my Teensy and sufficient free time.
+8 23 Apr 2011 Soarer: That would be great, thanks! I think the most likely problem (if any) is an occasio ...
+9 24 Apr 2011 Hak Foo: Just built, waiting for my terminal F to come tomorrow. adding the LEDs lets you test ...
+10 24 Apr 2011 Soarer: Ah, Hak Foo... just spotted your question on IRC about the devices that the converter ...
+11 24 Apr 2011 xwhatsit: What are you using for a VID/PID?
+12 24 Apr 2011 Soarer: I'll check later, but I haven't changed it from the defaults in the PJRC sample code. ...
+13 24 Apr 2011 xwhatsit: Ah right. I'm going to use the standard V-USB HID keyboard VID/PID for my wee project ...
+14 24 Apr 2011 intealls: Nice work! Just wondering what kind of remapping/macro features your firmware support ...
+15 25 Apr 2011 Soarer: For personal projects, I guess it doesn't really matter what we use! (I admit I hav ...
+16 25 Apr 2011 Soarer: Remappings are done from HID code to HID code, using a table in RAM, after the native ...
+17 25 Apr 2011 Hak Foo: Stupid question: what's the default mapping for a 122 look like? I'm thinking I'm go ...
+18 25 Apr 2011 Soarer: Roughly speaking, it's done as a regular 102 with extra keys. The block of 10 keys on ...
+19 25 Apr 2011 intealls: I've got a Teensy++ 2.0 with your firmware hooked up to my MBP Santa Rosa, and I've y ...
+20 25 Apr 2011 Soarer: Excellent news! Thanks for letting me know, that was the last part that was completel ...
+21 25 Apr 2011 intealls: Sorry 'bout that. :/ Yup, seems fine when no keys are pressed! Gonna test a couple mo ...
+22 25 Apr 2011 Soarer: Thinking about it, I can't quite figure out what's going wrong - I guess it must some ...
+23 25 Apr 2011 intealls: It does not wake up :( That was what I was testing. I just tried the same thing on Li ...
+24 25 Apr 2011 Soarer: I think handling wake-up will have to wait until I support suspend mode correctly - i ...
+25 25 Apr 2011 intealls: It still seems to repeat. :/ Would be great if someone else could try to reproduce it ...
+26 25 Apr 2011 kishy: I am unable to reproduce, or witness any issues at all after waking from standby (jus ...
+27 25 Apr 2011 intealls: I think it's a problem related to OS X, Linux (Ubuntu 10.04 I think) on the same mach ...
+28 25 Apr 2011 kishy: Win7...so yeah...might be OS-related (in fact, there's a good chance it is...standby ...
+29 26 Apr 2011 Soarer: Thanks for trying it. :-) I'm still hoping that there is a change I can make that ...
+30 27 Apr 2011 Oqsy: High five! 122 key terminal Model F up and running!!! Everything is good so far :) I ...
+31 01 May 2011 Soarer: v0.992 is now available, which works around an annoying issue with Linux. The problem ...
+32 01 May 2011 Neit: Hi Soarer, I would like to wire your converter with both DIN and PS/2 connectors. Sin ...
+33 01 May 2011 Soarer: Nice diagram! Yes, that should be fine. (In fact, I don't think plugging both in at t ...
+34 02 May 2011 Oqsy: Glad this was brought up, as short-term I will be doing the same with a terminal F, a ...
+35 02 May 2011 Neit: Thanks :) I wanted to make it clear and "readable" for my first electronic build. Goo ...
+36 02 May 2011 Soarer: That is fine. (It's probably about the same thickness as the wires in the cable to th ...
+37 02 May 2011 Neit: Okay good. I'll get some resistors just in case. Yes, I was planning on a (lego) box. ...
+38 02 May 2011 nowsharing: Wow, awesome work everyone. You've achieved the "impossible." Could I buy one of the ...
+39 03 May 2011 bhtooefr: Man, this code works great. Now I just need the remappable version. :)
+40 03 May 2011 slueth: Just buy a teensy and request a sample from tyco electronics for the DIN connectors ...
+41 03 May 2011 Hak Foo: if you don't feel like harassing tyco, the socket costs <4 USD from the big online pa ...
+42 03 May 2011 8_INCH_FLOPPY: I want to do this, but why is the teensy so damn expensive?
+43 03 May 2011 slueth: Its because not only can you use it for a keyboard convertor, you can use it for a sl ...
+44 04 May 2011 Neit: Hey, I Updated the diagram before soldering. I finally chose to add the resistors for ...
+45 04 May 2011 Soarer: Yep, even better! I like that the socket views are labelled as front and back - it re ...
+46 04 May 2011 Soarer: Is it though? Even used just as a keyboard converter, I don't think it's unreasonab ...
+47 04 May 2011 Findecanor: There are lots of unused pins, though. I wonder if they could be used for something u ...
+48 04 May 2011 Mr. Perfect: Very nice diagrams there Neit. Any idea where the lock LEDs would fit into those?
+49 04 May 2011 Soarer: DIP switches!!
+50 04 May 2011 Soarer: Has anyone wired them up yet? I'm tempted to move them to different pins on the Teens ...
+51 05 May 2011 Hak Foo: I have. If one thing is annoying about the laout, it is the lights. Too close togeth ...
+52 05 May 2011 Neit: I'll add them on the diagram as soon as Soarer has chosen the final pins to use (curr ...
+53 05 May 2011 Soarer: Still a bit risky but should be ok (as ok as hot-swapping any PS/2, I guess). The con ...
+54 06 May 2011 Mr. Perfect: Yes, that's exactly what I was asking about. Probably best to wait and see if they ...
+55 06 May 2011 8_INCH_FLOPPY: I'm just a cheapass who doesn't understand who people are willing to use an arduino ...
+56 06 May 2011 hasu: 8_INCH_FLOPPY, You can do with V-USB at cheap. You just need a crystal, 2 zeners, som ...
+57 06 May 2011 Soarer: Ah, well, I can explain that quite simply: it's easier! I chose Atmel AVR mainly beca ...
+58 06 May 2011 8_INCH_FLOPPY: Thanks for the detailed explanation. I didn't mean to suggest that you are lazy. Aft ...
+59 06 May 2011 Soarer: I didn't really think you had, the last paragraph was very much tongue in cheek :-) ...
+60 06 May 2011 8_INCH_FLOPPY: I caved and ordered a couple. Maybe I can recoup the cost of one by selling the other ...
+61 07 May 2011 Oqsy: Repeat that enough times in the right places and they will. However, this is still DI ...
+62 07 May 2011 8_INCH_FLOPPY: Not if I build a bunch and sell them. Muahahahaha.
+63 08 May 2011 Hak Foo: To me, the logical endgame of this project is to eventually develop a small-run PCB w ...
+64 08 May 2011 bhtooefr: Of course, in my case, I just mounted the Teensy internally. That way, it looks like ...
+65 09 May 2011 Mr. Perfect: Ok, here's a question that probably hasn't come up before: can USB keyboards be hooke ...
+66 09 May 2011 Soarer: Yes, it should work fine! (I'm sure someone did ask that before, but maybe not in t ...
+67 09 May 2011 Mr. Perfect: That's great news. So to wire a female USB socket to the controller you just match up ...
+68 09 May 2011 Soarer: I don't know how the passive USB to PS/2 adapters are wired up though - either probe ...
+69 12 May 2011 Soarer: New version (v0.994) posted which adds suspend and wake-up support! Many thanks to ...
+70 12 May 2011 slueth: Soarer, you are amazing! :)
+71 13 May 2011 intealls: Heh, no problem, just glad I was able to help :) You're the one doing the awesome wor ...
+72 13 May 2011 Soarer: Well this phase is really a shakedown, making sure that reliability is top notch befo ...
+73 13 May 2011 Voixdelion: Okay, I just kind of skimmed the discussion because it was all rather technical for m ...
+74 13 May 2011 bhtooefr: Soarer is developing the firmware, you buy a Teensy or Teensy++, you can get one with ...
+75 13 May 2011 Soarer: Basic shopping list: Optional items, as desired: To assemble it just needs a few wire ...
+76 13 May 2011 bhtooefr: And, my build didn't even use the socket, due to how I installed mine.
+77 13 May 2011 intealls: Here's my highly ghettoish solution (I HATE that movie btw) [ Attachment Invalid Or ...
+78 13 May 2011 ch_123: Things often get more difficult to comprehend as you grow older.
+79 14 May 2011 slueth: Not that hard as long as you can understand the pinouts. Make sure you are looking a ...
+80 14 May 2011 8_INCH_FLOPPY: Is that the same as the XT pinout? I wired it up to my XT keyboard like that and it ...
+81 14 May 2011 slueth: I used this with the information from the article: Conn. Teensy GND -------- GN ...
+82 14 May 2011 Oqsy: Voix: I have this connected to a 122 Terminal F from the acfrazier group buy. Really ...
+83 14 May 2011 Soarer: The most common mistake so far is wiring the socket backwards - it's important to not ...
+84 14 May 2011 kishy: [ Attachment Invalid Or Does Not Exist ] 18121[/ATTACH] Please feel free to pop this ...
+85 14 May 2011 Voixdelion: kewl. will definitely try this...soon
+86 15 May 2011 Neit: Finally done mine, 0.994 working perfectly with my cherry 81-3000 (yes MY switches ar ...
+87 15 May 2011 slueth: It shouldn't light up, if it lights up there was a problem. Should handle nkro. Corr ...
+88 15 May 2011 bhtooefr: If the keyboard itself doesn't handle NKRO, though, there's a problem, and it'll ligh ...
+89 16 May 2011 Soarer: I don't think the lack of NKRO is a factor here - the keyboard is still capable of tr ...
+90 22 May 2011 8_INCH_FLOPPY: I got mine to work for a moment with a PS/2 keyboard, but after I unplugged it and tr ...
+91 22 May 2011 Soarer: Yup, that's the right order when looking into the socket. AT and XT are the same. Pul ...
+92 22 May 2011 8_INCH_FLOPPY: Ok, here's the message with one keypress on an AT keyboard: R06 R06 R06 It doesn't gi ...
+93 22 May 2011 Soarer: Not accusing you of sloppy soldering! But something seems to have broken after the fi ...
+94 22 May 2011 8_INCH_FLOPPY: There's continuity between The socket and the board, according to ye olde VTVM. Also, ...
+95 22 May 2011 8_INCH_FLOPPY: Ok, I've switched back to an AT board, and now it's not working again. Here's the mes ...
+96 22 May 2011 8_INCH_FLOPPY: It seems that, out of the 3 AT keyboard that I've tested, the only one that does not ...
+97 22 May 2011 8_INCH_FLOPPY: After much testing, here's what basically happens: Normal AT keyboard: Works fine, do ...
+98 22 May 2011 Soarer: Hmm... I used an IBM XT 'board for developing, and then had to tweak my code to get i ...
+99 22 May 2011 8_INCH_FLOPPY: I tested my other XT keyboard, and it responded the same as the first one. I have to ...
+100 23 May 2011 Soarer: Cherry 'board didn't do anything that might shed light on what the 'S' setting on you ...
+101 24 May 2011 8_INCH_FLOPPY: I'm not sure what make they are. Unfortunately, the last owner peeled the stickers of ...
+102 24 May 2011 Soarer: Oh wow, that would really help! Normally the signals very easy to capture on a 'scope ...
+103 13 Jun 2011 Hak Foo: Is there any chance we can get the source if we want to compile our own custom mappin ...
+104 14 Jun 2011 8_INCH_FLOPPY: These were all captured with me pressing the "accent grave/tilde" key. The "S" settin ...
+105 18 Jun 2011 REVENGE: Soarer, this is an excellent project! My implementation works nicely with a Model F 1 ...
+106 18 Jun 2011 Soarer: It could well well Autumn before I have a chance to implement the fancy bits; loo ...
+107 18 Jun 2011 Soarer: That Monterey is an odd beast! For starters, it's going more than twice as fast as a ...
+108 18 Jun 2011 didjamatic: Nice work, I'm doing this! Is there a downside to the ++ or is it just larger than n ...
+109 18 Jun 2011 Soarer: No downside apart from cost really! It just has more of everything (which the convert ...
+110 25 Jun 2011 REVENGE: Soarer, one of the keys on my 122 key terminal Model F does not send any key codes th ...
+111 25 Jun 2011 Soarer: My bad! Looks like I did half a change - I took it out of the global remaps, but fo ...
+112 25 Jun 2011 REVENGE: Thanks! :) Aside from that key not sending a code, the board is currently missing def ...
+113 26 Jun 2011 kps: This is what I did for my 122-key F; it might help someone else. No guarantees, and ...
+114 28 Jun 2011 Oqsy: Nice. I need to do an ANSI mod and add my RGB modifiers too. Excellent work and thx f ...
+115 02 Jul 2011 Soarer: New version (0.995) posted that maps the top-right key of the numpad to 'Pause'. Not ...
+116 03 Jul 2011 mr_a500: I'm thinking of trying this thing with an IBM 5155 keyboard. It should be the same as ...
+117 04 Jul 2011 REVENGE: Yep, I had my BlackWidow and the Model F both connected. First off, the Teensy stays ...
+118 05 Jul 2011 Soarer: It has to stay powered for a keypress to be able to trigger the wake-up ;) I know it ...
+119 05 Jul 2011 REVENGE: Still waiting for Explorer to scan the pr0n cache and total up the file sizes, I'll g ...
+120 05 Jul 2011 Soarer: It's just the size that counts! I'll check next time I reboot what I set in my BIOS, ...
+121 05 Jul 2011 REVENGE: Sounds good, mad props again for developing and maintaining this project. :P
+122 10 Jul 2011 mr_a500: So nobody has ever tried this with an IBM 5155? (that means I'll be the first... in h ...
+123 10 Jul 2011 kps: Open it. Power and ground should be straightforward to identify. Data & clock might ...
+124 10 Jul 2011 mr_a500: You mean open the keyboard? That could be tricky. There are no screws. It looks like ...
+125 10 Jul 2011 Soarer: If you have a multimeter, you might be able to work it out without taking it apart. M ...
+126 11 Jul 2011 Hak Foo: Revenge: I think I've had a similar symptom. Only happened since 0.99.5, but it see ...
+127 20 Jul 2011 LETE: These files aren't much use without the source code, right? Or did you just inject th ...
+128 20 Jul 2011 alaricljs: You write the teensy firmware with this hex file. It's a complete firmware.
+129 20 Jul 2011 Soarer: [strike]I didn't work out what they were for either.... presumably OS side somewhere. ...
+130 20 Jul 2011 LETE: I'm talking about the files kps posted in the attached zip file "remap.zip" on page 1 ...
+131 20 Jul 2011 alaricljs: Just looked at the contents, it's got a makefile and everything is automatic... it sp ...
+132 20 Jul 2011 LETE: Ah, well said. Thank you.
+133 20 Jul 2011 Soarer: Oh... so that's what it does... outrageous subterfuge!! I should warn anyone trying t ...
+134 20 Jul 2011 alaricljs: The people WANT YOUR STUFF... ;) they just want it their way.
+135 21 Jul 2011 REVENGE: Soarer, I understand you're not ready to release your source, but I would be satisfie ...
+136 21 Jul 2011 kps: Thanks! I thought so, from the table contents. It's enough to get my Terminal F layou ...
+137 22 Jul 2011 LETE: I'm going to stick a couple solid state relays in my box and set this thing up to con ...
+138 29 Jul 2011 LETE: Here are a few pictures of my teensy mounting solution for a model F terminal board. ...
+139 11 Aug 2011 SmallFry: Is it possible that I could get the source code? I wanted to recompile/edit a little/ ...
+140 11 Aug 2011 Soarer: Sorry, I'm not ready to give it out yet. It might be a while because I'm very busy wi ...
+141 11 Aug 2011 SmallFry: Alright, thanks anyways Soarer
+142 12 Aug 2011 wcass: Soarer, perhaps the GH community could help with building a front end? something that ...
+143 18 Aug 2011 Soarer: I'm sorry, I missed this! Thanks for the offer! I would like some help with the front ...
+144 28 Aug 2011 wcass: so a couple of questions. input file format should be ... what? default name? comment ...
+145 28 Aug 2011 Soarer: I'm imagining something along the lines of this: (Case insensitive and spaces ignored ...
+146 28 Aug 2011 wcass: would it conserve RAM to only include key mappings for the hardware and configuration ...
+147 28 Aug 2011 Soarer: Oh, I was just using Colemak as an example, it needn't be included all the time. And ...
+148 29 Aug 2011 wcass: yes, i was thinking to reload firmware when changing key maps and macros. speaking fo ...
+149 29 Aug 2011 Soarer: Heh, it's not that - I'd always planned on asking for someone to do the front end whe ...
+150 30 Aug 2011 Hak Foo: box an xampp install with the package. I've pondered doing that with an in-house web- ...
+151 07 Sep 2011 timofonic: About macros and remappings... What about showing it as a Mass Storage Device with th ...
+152 07 Sep 2011 Shawn Stanford: Well, I went ahead and ordered a Teensy 2.0, a breadboard and a set of LEDs. I've nev ...
+153 07 Sep 2011 Oqsy: Shawn, it's a great project to start with. Pretty straightforward, and great payoff ( ...
+154 07 Sep 2011 itlnstln: So, in other words, you're calling Shawn a dummy. Way to support our troops.
+155 07 Sep 2011 one_each: IF THE-KEY-PRESSED-HAS-A-KEYCAP-WITH-A-ON-IT THEN SEND-THE-CODE-FOR THE-LETTER-A. E ...
+156 07 Sep 2011 itlnstln: I'm lame. VB.NET for the win. I'm a DB guy, not a programmer.
+157 08 Sep 2011 Soarer: Seems a bit heavyweight for this! I think if JavaScript can't do it, a Python or Java ...
+158 08 Sep 2011 kps: No, no, no. During the day, whenever someone presses a key, you simply append the mat ...
+159 09 Sep 2011 timofonic: OK, sorry. I did think the structure would be able to be generated in-time. There wou ...
+160 09 Sep 2011 Soarer: Of the four layers I was thinking of, the driver is actually the easiest part. The de ...
+161 09 Sep 2011 timofonic: Like this board? They use a common Broadcom bluetooth controller.
+162 09 Sep 2011 Soarer: The battery comment wasn't a joke! Those things work great as controllers for contact ...
+163 09 Sep 2011 Oqsy: Lawn mower batt work? :P
+164 09 Sep 2011 Soarer: Bettah! You could fit one a terminal keyboard's case, no problem. Look a bit daft con ...
+165 10 Sep 2011 Soarer: I had changed the ACPI setting in my BIOS to S1. IIRC, in S3 the wakeup simply didn't ...
+166 10 Sep 2011 timofonic: Well, the oriiginal battery fromm. The bluetooth keyboard was 1xx mah and lastedd a w ...
+167 10 Sep 2011 Soarer: Unable to reproduce :-/ BIOS Power Settings at defaults (S3). Fresh Window 7 install. ...
+168 10 Sep 2011 Hak Foo: It seems to be alonbg the lines of suspend wake via converted board power down conver ...
+169 10 Sep 2011 Soarer: power down?
+170 11 Sep 2011 Hak Foo: start-> shut down?
+171 11 Sep 2011 Soarer: I dunno, you said it! :-p I'm confused as to how power down is part of a problem with ...
+172 27 Sep 2011 fohat.digs: OK guys, I am totally stoked. I received an IBM Model F 122-key terminal keyboard fro ...
+173 29 Sep 2011 theferenc: Harry, did you snag yours from OceanTechPrecision on ebay? Does it have dip switches ...
+174 29 Sep 2011 kishy: It can misbehave quite severely if you attempt to press any keys BEFORE the auto-dete ...
+175 29 Sep 2011 Soarer: Sounds like the adapter is somehow thinking it's a scan code set 2 board, so not tryi ...
+176 29 Sep 2011 fohat.digs: Thanks, but I am not there yet. It will be sometime next week before my Teensy gets h ...
+177 29 Sep 2011 theferenc: Thanks, kishy. I'll give that a try and see if it fixes the issue. I would really lov ...
+178 29 Sep 2011 Hak Foo: The Enter labelling is just for decoration- the converter ighnores it. I have a 122M ...
+179 29 Sep 2011 theferenc: Running hid_listen, I get the following: rAA rBF rBF wEE R101wF2 rEE wED R100!!00wED ...
+180 29 Sep 2011 Soarer: It looks like it's just unusually slow to reply to commands - like world record holde ...
+181 29 Sep 2011 theferenc: Soarer is the man! Hopefully it continues to work as well as it does right now -- tho ...
+182 30 Sep 2011 Oqsy: Great news!
+183 30 Sep 2011 theferenc: So one last question about this. The key on the keypad, directly above 9. What is its ...
+184 30 Sep 2011 Soarer: It's scroll lock... what does that do in X?
+185 30 Sep 2011 N8N: nothing at all, really... but I just tried it on my machine and scroll lock comes up ...
+186 30 Sep 2011 theferenc: Yeah, I thought it should be scroll lock, but it doesn't match scroll lock on my othe ...
+187 01 Oct 2011 Soarer: Just posted a new version (v0.996) with fixes for some reported problems, and a coupl ...
+188 01 Oct 2011 theferenc: That second one is almost exactly how I have mine laid out at the moment. Too bad I d ...
+189 01 Oct 2011 Soarer: Ah, but instead you have the jumper block inside! I've chosen the IDs so they only re ...
+190 01 Oct 2011 SmallFry: Just a thought... not really necessary but it'd be cool to add support for the SD rea ...
+191 01 Oct 2011 theferenc: AHK runs portably, for certain sure. It's just a download directly from their website ...
+192 01 Oct 2011 SmallFry: My school would have a hacker alert stroke if I wired in like at home. Therefore, I w ...
+193 01 Oct 2011 Oqsy: The perfboard and alligator clip rig I'm using for this would surely get a bomb squad ...
+194 04 Oct 2011 kishy: Here's what I've been working on for the last little while... Complete with externall ...
+195 04 Oct 2011 timofonic: Hello. Very nice! I would consider ordering one too... What about adding a SD card ...
+196 04 Oct 2011 kishy: What I did is essentially just 'packaging' the adapter...I did not make any design ch ...
+197 04 Oct 2011 alaricljs: 7 pins for the LCD... 2 pins for up/down buttons... 5 pins for the SD card slot... 2 ...
+198 04 Oct 2011 one_each: @Soarer Have you considered using something like code.google.com to host the code as ...
+199 04 Oct 2011 timofonic: @Soarer In terms of available pinout, memory and such... How's the Teensy2 or Tenensy ...
+200 04 Oct 2011 alaricljs: I'm not exactly sure what it is you're asking timo, but if you scroll to the top of t ...
+201 04 Oct 2011 fohat.digs: Help ! Getting very close, I think, but I am way over my head here, and I am not a pr ...
+202 04 Oct 2011 Oqsy: Have you checked yr pinout from the keyboard? I have no idea what colors mean what i ...
+203 04 Oct 2011 Soarer: Thanks for showing your build! SD card is almost definitely a 'no'. There's no shor ...
+204 04 Oct 2011 Soarer: [strike]Have you tried swapping the yellow and red wires?[/strike] Hang on, not sure ...
+205 04 Oct 2011 fohat.digs: Thanks for the reply. I think/hope I did something kind of like what you described. M ...
+206 04 Oct 2011 Soarer: Found a label inside my 122F so decided to just photograph it :-) [ Attachment Inval ...
+207 04 Oct 2011 fohat.digs: Thank you so much. I think that is exactly how I connected mine. Is there anything el ...
+208 04 Oct 2011 Soarer: Is it? Yellow/Clock should go to PD1, and Red/Data should go to PD0.
+209 04 Oct 2011 fohat.digs: RIGHT YOU ARE ! Stupid me with that whole upside-down-and-backwards thing! (And my re ...
+210 05 Oct 2011 Soarer: Excellent! Glad to hear it's working :-)
+211 05 Oct 2011 fohat.digs: Sorry for the double post, but, for doing the majority of my re-mapping for me! I w ...
+212 05 Oct 2011 theferenc: Yeah, I briefly considered wiring up the lock LEDs. Then I realized, wait a sec, I do ...
+213 05 Oct 2011 fohat.digs: Now this beauty is together and working great. I could not be more pleased - it is fa ...
+214 05 Oct 2011 theferenc: If you're running windows, AHK is a decent option, as is KeyTweak. The former is an a ...
+215 05 Oct 2011 fohat.digs: I usually work in Windows, but I dual-boot to Ubuntu fairly often. I would use it a l ...
+216 05 Oct 2011 Soarer: There was a hack somewhere, which should work, but some remappings done that way migh ...
+217 05 Oct 2011 theferenc: I use KeyTweak and xmodmap both, without issues whatsoever. I prefer these over the A ...
+218 06 Oct 2011 fohat.digs: You guys are simply the greatest! But I am a pest. Hopefully, when you answer my ques ...
+219 06 Oct 2011 theferenc: That's weird, I was able to remap them just fine. Did you use "teach mode" in keytwea ...
+220 06 Oct 2011 fohat.digs: No luck with that. I went through the routines in both "Half Teach Mode" and "Full Te ...
+221 06 Oct 2011 Soarer: I reckon KeyTweak has got confused trying to remap Pause... try reverting both NumLoc ...
+222 07 Oct 2011 fohat.digs: Boy-oh-boy! a missed day of geekhack down had me worried! Thanks for all your help, g ...
+223 07 Oct 2011 Soarer: Sorry, but you won't be able to remap some of the keys in that left hand F-key block, ...
+224 09 Oct 2011 fohat.digs: Hi, it's me, harrymoss, I just felt like I needed to change my ID to something less m ...
+225 09 Oct 2011 Soarer: As it stands, I'm afraid you'll have to accept that you can't get all of the layout t ...
+226 13 Oct 2011 theferenc: That's really weird, honestly. I remapped nearly everything in Linux with no issues w ...
+227 14 Oct 2011 fohat.digs: So, my amateurish trial and error fumblings continue. I post this stuff, not in a nar ...
+228 15 Oct 2011 LETE: You don't need to worry about the thicker coating affecting performance. When the key ...
+229 16 Oct 2011 fohat.digs: It might not be all that hard to make one, provided that you had a hole punch of just ...
+230 16 Oct 2011 LETE: Let's both give it a shot and compare notes. Of course, if we get a proof of concept ...
+231 17 Oct 2011 fohat.digs: May be getting far enough off-topic to warrant a new thread. Since I am really fond o ...
+232 17 Oct 2011 LETE: Yeah, I made us a thread of our own.
+233 19 Oct 2011 fohat.digs: Soarer - I have put together a 2nd keyboard, and left all the jumpers open to defaul ...
+234 20 Oct 2011 Soarer: I wish I knew why that numlock won't remap! Does it just stay as numlock then? True, ...
+235 20 Oct 2011 fohat.digs: Yes, it just stays NumLock regardless of what I tell it to be. I was using KeyTweak a ...
+236 22 Oct 2011 Soarer: No requests, sorry! The two alternative mappings came about for specific reasons - th ...
+237 23 Oct 2011 theferenc: I would recommend something like C++/Qt combination, or possibly python using wx or s ...
+238 24 Oct 2011 Soarer: C++/Qt would suit me - I'd only need to learn the Qt bit! I think I'll just go with C ...
+239 24 Oct 2011 HaaTa: Heh, I know Qt :D
+240 29 Oct 2011 RPro: Hi - dumb question,but I couldn't find it with search: Does this Teensy PS2 adapter w ...
+241 30 Oct 2011 Soarer: It should - it certainly works with my Dell AT102W and SGI Granite :)
+242 30 Oct 2011 RPro: That's great! Gonna order a teensy board soon then.
+243 31 Oct 2011 fohat.digs: A couple of things: First, do you want the Teensy for the Dell AT-101 for gaming? Bec ...
+244 31 Oct 2011 kishy: And that really does sum up a lot of why so many of us love these things...the Fs, es ...
+245 31 Oct 2011 fohat.digs: You have to take the Model F apart to really appreciate its construction. It seems mo ...
+246 04 Nov 2011 theferenc: I know the M cases can be dyed, but it's a challenge due to the size. Some folks have ...
+247 05 Nov 2011 fohat.digs: I decided that the advice was mostly against dyeing the Model F case, so I went to th ...
+248 06 Nov 2011 RPro: Actually, my new Sandy Bridge Asus P8Z68V-Pro motherboard does not have any PS/2 port ...
+249 06 Nov 2011 Soarer: Looks great, I like it! This code can't add NKRO to a non-NKRO keyboard of course, b ...
+250 08 Nov 2011 kishy: That's GORGEOUS! Very well done.
+251 11 Nov 2011 RPro: I got the teensy converter programmed and the connector soldered (stole it from an ol ...
+252 11 Nov 2011 RPro: Whoops - guess the Dell AT101W is a 2KRO. Oh well.
+253 11 Nov 2011 Soarer: Ah cool, you got it working ok! You never know exactly what you're going to get with ...
+254 11 Nov 2011 RC-1140: Hey, Currently I'm using this adapter for a 1990's 122-Key Terminal Model M, and in g ...
+255 11 Nov 2011 Soarer: Hmm, I dunno! Although... 7 is the HID usage page for keyboard keys, and 88 is the HI ...
+256 11 Nov 2011 RC-1140: well, 93 is the X keycode for the Hiragana_Katakana Symbol. I don't know why, but one ...
+257 12 Nov 2011 Soarer: Oh, ok. I don't really know anything about remapping USB keyboards in X, but somethin ...
+258 12 Nov 2011 RC-1140: d'oh! when in doubt, read manpages… m( Well. Looks like I have to do it by editing al ...
+259 12 Nov 2011 RPro: Hmm, I seem to be having an issue - it seems when I let the PC idle for a while (it d ...
+260 12 Nov 2011 Soarer: That sounds odd, I'm gonna hope it works ok on a rear port! Power saving can be an is ...
+261 12 Nov 2011 RPro: I have an Asus P8Z68-V Pro motherboard. Windows 7 64 bit. It is set to S3. It BSODed ...
+262 13 Nov 2011 Soarer: I doubt the converter caused a BSOD! Wish I knew what to suggest for that, getting a ...
+263 13 Nov 2011 RPro: Yeah I don't think it was the converter. If I have more issues with the keyboard itse ...
+264 07 Dec 2011 dorkvader: Hmm, Can I use something like this to decode a normal ascii keyboard?
+265 07 Dec 2011 Soarer: Dunno... I'm not sure what you mean...?
+266 07 Dec 2011 Soarer: Are not whole translation tables! As a silly example, if you wanted to swap the '1' k ...
+267 08 Dec 2011 hasu: mmm, nice features! and can't wait for trying new your firmware! If the syntax is sim ...
+268 08 Dec 2011 alaricljs: I want. I am not patient... but I haven't succeeded in getting anywhere with my own ...
+269 08 Dec 2011 fohat.digs: Soarer - Have you come up with a way to remap those 2 pesky numpad keys on the F-122 ...
+270 08 Dec 2011 Soarer: Thanks! I'm looking for the quickest way to get something usable - a better syntax, o ...
+271 18 Dec 2011 LukStarkiller: I have one question in mind, which is the slower response time (latency) that we can ...
+272 18 Dec 2011 Soarer: Hmm, good question! I haven't tested it, but I the worst case should be just under ...
+273 18 Dec 2011 LukStarkiller: :eek: Surprising information I never thought that the delay caused by the keyboard's ...
+274 18 Dec 2011 dorkvader: I had to do some research, to know what I meant by that (I had to look up and double ...
+275 19 Dec 2011 Mikelittoris: Okey, so i've got my terminal 122 key model f (6110347), my teensy with a female 5 po ...
+276 19 Dec 2011 DaemonRaccoon: Assuming counting from the bottom left (facing the connector). That's AT (and PS/2), ...
+277 19 Dec 2011 Mikelittoris: Oh crapper! Thanks alot DeamonRaccoon yo're the best, I shall get back to the solderi ...
+278 19 Dec 2011 Mikelittoris: Well I've connected the cables as you said DaemonRaccoon. Still nothing is happening. ...
+279 19 Dec 2011 DaemonRaccoon: Start with flashing the Teensy without the keyboard connected, make sure you have the ...
+280 19 Dec 2011 Soarer: Don't panic just yet - it's not easy to kill a Teensy with this mod! I think about th ...
+281 19 Dec 2011 Mikelittoris: Ok thanks I will have to try that tomorrow, been up for 32h straight now and I thogut ...
+282 19 Dec 2011 Soarer: LOL! Yeah, helps if everything is plugged in!
+283 19 Dec 2011 Soarer: I've no idea! There is another Wyse that kbdbabel has signalling info for, and it is ...
+284 20 Dec 2011 Mikelittoris: There we go, connected the cable to the controller and it works! I've done it, YEY! : ...
+285 31 Dec 2011 thebum: Wow. Soarer thanks so much for putting your time into this. Just got my teensy today. ...
+286 04 Jan 2012 Soarer: You're welcome - thanks for posting :-) The XT support was actually one of the easie ...
+287 04 Jan 2012 litster: Soarer, is your mapping without recompiling part ready yet? I am wondering if I coul ...
+288 04 Jan 2012 Soarer: Afraid not - I haven't had time to do any more since the last status update :-( The o ...
+289 04 Jan 2012 litster: That's cool, Soarer. We can wait. Thanks.
+290 05 Jan 2012 thebum: Thanks for the welcome. I've spent quite a bit of time on the board and have encount ...
+291 26 Feb 2012 Soarer: New version posted. For the brave!
+292 26 Feb 2012 timofonic: Features list? Please? :)
+293 26 Feb 2012 Soarer: Not brave enough - you're barred! :-p There is some (scant) documentation in the tool ...
+294 27 Feb 2012 Soarer: Ok, so what's new is all the stuff outlined in this post, and media key support. You ...
+295 28 Feb 2012 REVENGE: HOOOOOOOOOORAAAAAAAAAYYYYY!
+296 28 Feb 2012 alaricljs: Can you explain a 'SELECT'? It sounds as tho it can be used to set a layer/keymap vi ...
+297 28 Feb 2012 litster: This new update sounds very awesome. We need someone to help port it over to use on ...
+298 28 Feb 2012 Soarer: Pretty much what I thought when I finally found some time to work on it again!! FN an ...
+299 28 Feb 2012 alaricljs: Where you use crazy chords, I would use Fn. I'm also not a fan of toggles, hence usi ...
+300 28 Feb 2012 Soarer: The crazy chord was just an example :) There must be millions of ways you could put t ...
+301 29 Feb 2012 Soarer: Oh yeah, forgot to mention - SELECT_0 can be used to reset all toggles to off. So you ...
+302 29 Feb 2012 Soarer: Currently got about a dozen items on my to-do list, and making this sort of thing pos ...
+303 29 Feb 2012 alaricljs: Well, there's people willing to help if you want to share the load ;)
+304 29 Feb 2012 Soarer: Has anyone had a go at compiling the tools for Linux or MacOSX? (Linux I could try so ...
+305 29 Feb 2012 theferenc: I can try it on Mac later today or tomorrow, if you want. I'll be trying Linux, as we ...
+306 29 Feb 2012 Soarer: Either would be great! Linux is probably the one I'm more worried about, in case diff ...
+307 01 Mar 2012 Soarer: Lego! [ Attachment Invalid Or Does Not Exist ] 42352[/ATTACH]
+308 01 Mar 2012 Soarer: I call the bastardized version of usage page 7 HID codes that the converter uses inte ...
+309 02 Mar 2012 litster: Good to hear that this is on your to-do list!
+310 02 Mar 2012 mkawa: i can port this to phantom, i just need some pointers on how to get simulavr running ...
+311 02 Mar 2012 Soarer: I haven't used the simulator at all, just a combination of debug print output, extra ...
+312 03 Mar 2012 Soarer: Built myself a neat converter today :-) A while back I spotted some console hack dong ...
+313 03 Mar 2012 SmallFry: SWEET! Nice package to keep your converter in! Since it uses Atmel's stuff to program ...
+314 03 Mar 2012 Soarer: Thanks! Still one thing left to do... drill a hole in the case so I can reset it for ...
+315 03 Mar 2012 alaricljs: How much does the case flex in that spot? You might not need a hole, just fill the g ...
+316 03 Mar 2012 Soarer: Sorry, missed your edit... No, it's not compatible with the Teensy utility, and you c ...
+317 03 Mar 2012 mkawa: ok message received -- it sounds like simulators are pretty hopeless. this will have ...
+318 03 Mar 2012 Soarer: Hardly any flex, surprisingly, but it might _just_ work... with a very firm squeeze! ...
+319 03 Mar 2012 Soarer: Dunno about hopeless, but I always find using them a mixed bag. It's nice to be able ...
+320 03 Mar 2012 mkawa: agreed. i was hoping there was a nice debugging toolkit that would let me do these th ...
+321 03 Mar 2012 Soarer: Hmm. This looks quite easy, actually, but which address to jump to depends on the boo ...
+322 05 Mar 2012 drteming: Newbie here. Just got a terminal 1390572 last week. Cleaned it up and did a full bo ...
+323 05 Mar 2012 Soarer: Thank you for posting pics - I love seeing a nice tidy build!
+324 06 Mar 2012 fohat.digs: Oh that is beautiful. I am doing something similar when I have some spare time, and y ...
+325 06 Mar 2012 theferenc: Soarer, do you want compilation feedback via PM or in the thread?
+326 06 Mar 2012 Soarer: Aha, cool! Probably here, in case others might want to try as well. Unless it's embar ...
+327 07 Mar 2012 theferenc: I don't think it's embarrassing, no. This is all on Linux (RHEL 6). I was able to get ...
+328 07 Mar 2012 Soarer: Knocked together some code that should work for nearly all Atmel AVR chips (except xm ...
+329 07 Mar 2012 Soarer: Thanks for putting the time in! I'll plug my Linux (Mint, Debian) box back in so I ca ...
+330 07 Mar 2012 Soarer: Got scrd and scwr working on Mint! Needed libusb-0.1-4 and libusb-dev installing to g ...
+331 07 Mar 2012 RC-1140: Hey Soarer, at first: thank you very much for creating such a fantastic converter sof ...
+332 07 Mar 2012 Soarer: It should work fine on any 32U4, as long as you can get it in there! The dongle I ada ...
+333 08 Mar 2012 RC-1140: Actually even this would be great, as I'm currently using 0.996 anyway. This might be ...
+334 08 Mar 2012 Soarer: The trouble is, I'm not sure why it helps much - the '32U4 chip is about 5EUR, and th ...
+335 08 Mar 2012 Soarer: In other news, I just added Jump to Bootloader support for the next release, with two ...
+336 08 Mar 2012 RC-1140: Yeah, of course that little price difference doesn't justify the extra work you would ...
+337 08 Mar 2012 Soarer: I will have a look in case there's some easy memory saving that can be done, but othe ...
+338 08 Mar 2012 Soarer: Well, I managed to reduce the size by about 2KB. (Stupid makefile forcing inclusion o ...
+339 09 Mar 2012 SmallFry: Will you ever open source your code? I know I've asked before, but can't recall off hand.
+340 09 Mar 2012 Soarer: I really don't know if or when. Once done it cannot be undone - last time I started t ...
+341 09 Mar 2012 litster: Which IBM keyboard would be best to use for this project if I want to keep it small a ...
+342 09 Mar 2012 Soarer: The AT (84-key). It's not 'small', but there's only about an extra inch on the RHS co ...
+343 09 Mar 2012 litster: Right, the AT. But it would be hard to get one now. Could I do this on a Phantom, w ...
+344 09 Mar 2012 Soarer: Hard, but far from impossible. You just have to keep looking, and be prepared to pay ...
+345 09 Mar 2012 litster: Ah, I get it now. The Phantom firmware we have now came from PrinsValium. His code ...
+346 09 Mar 2012 Soarer: OK. I'll talk to him when I'm ready to make plans for controller stuff.
+347 12 Mar 2012 Soarer: Yes. (I missed seeing the edit again!)
+348 13 Mar 2012 drteming: Well, I worked up the courage to delve into Soarer's 0.997 firmware. My last foray i ...
+349 13 Mar 2012 wcass: if you are serious about this, i'ld like to talk to you about a project i'm working o ...
+350 13 Mar 2012 Soarer: Hail to the Brave! Thanks for posting up what you've done, and how. Sorry about the l ...
+351 13 Mar 2012 Soarer: I'm serious, but it's possibly not quite what you're after - my plan is to replace ju ...
+352 16 Mar 2012 Parak: I'm entirely too lazy to check this at the moment, but isn't the teensy++ and the mai ...
+353 16 Mar 2012 Soarer: Yup, same size, but the ++ has GND and AREF in the middle of one side, which aligns w ...
+354 16 Mar 2012 Parak: They would align in every one of the four possible orientations of a teensy++? Still, ...
+355 16 Mar 2012 Soarer: Well, there's also that +5V and GND are on diagonally opposite corners of the CPU, vs ...
+356 16 Mar 2012 Parak: Hmm, I see. Does T0 have to be used for something? If not then using teensy++ with +5 ...
+357 16 Mar 2012 Soarer: Depends on the 'board - the XT, AT and DisplayWriter use it for signalling to the hos ...
+358 19 Mar 2012 wcass: thanks Soarer. i used this in my IBM AT project here: http://geekhack.org/showwiki.ph ...
+359 01 Apr 2012 ed_avis: With a Dell M6300 (BIOS rev A14) and Windows XP x64 SP2, and the converter driving a ...
+360 01 Apr 2012 kishy: Yeah, I've had troubles with a Dell Inspiron 630m doing the same thing. Presuming BIO ...
+361 01 Apr 2012 ed_avis: Strangely, although the M6300 does not recognize the Soarer-adapted keyboard for hitt ...
+362 01 Apr 2012 Soarer: There must be something peculiar that these machines have in common. I mean, they wor ...
+363 02 Apr 2012 ed_avis: Soarer I see that you are in the same country as me. If you are near London and you ...
+364 02 Apr 2012 Soarer: Many thanks for the offer! For me, that wouldn't be feasible for a month or two thoug ...
+365 03 Apr 2012 litster: Sweet! I am going to get a few parts to build this. I have Teensys at home ready to go.
+366 07 Apr 2012 Morning Song: Just a little report/question: I'm using one of the earliest teensy adapters, made by ...
+367 08 Apr 2012 Soarer: Hey, that's an odd one! What's a 6011668? I'm guessing it's a 122-key terminal board ...
+368 08 Apr 2012 Morning Song: Er, whoops! It's a 6110668, not 6011668. (Same as, i believe, Sethstorm's). Force Se ...
+369 08 Apr 2012 Soarer: Cool, 'force' works! Using it stops the converter querying the board at all, so it's ...
+370 08 Apr 2012 Morning Song: Exactly! Back in the Dark Times before you guys came out with these adapters, Kishy h ...
+371 08 Apr 2012 Soarer: Heh, I finally started to try and get some better documentation sorted out today! A d ...
+372 08 Apr 2012 wcass: i was thinking i would like to help with an .hta GUI wrapper for your code. it would ...
+373 08 Apr 2012 Soarer: The more the merrier! I've managed to get the command line tools compiling on all pla ...
+374 08 Apr 2012 Morning Song: My thoughts on the matter is that if there's a nice simple one-file way of including ...
+375 08 Apr 2012 alaricljs: A gui could probably be built across the command line tools with AutoHotKey.
+376 08 Apr 2012 Soarer: It partly depends on what you all think a GUI should do! I know it wouldn't start off ...
+377 09 Apr 2012 SmallFry: The gui should include a verbose just for debugging stuff:) Other than that, and bein ...
+378 09 Apr 2012 Parak: I think the GUI could basically just be a front end to the tools. One would select fr ...
+379 09 Apr 2012 Soarer: Heh, a minimal front-end could just be a text editor with a 'send to keyboard' button ...
+380 16 Apr 2012 fruktstund: I'm a bit tired right now, and this might therefore be somewhat a stupid question, bu ...
+381 17 Apr 2012 Soarer: Glad you find it useful! USB-to-USB might happen at some point in the future - there ...
+382 17 Apr 2012 litster: Hi. I just built a Soarer converter. But I am running into some problem. Here is t ...
+383 17 Apr 2012 kishy: Silly question, but are you unplugging the USB connector before changing keyboards? E ...
+384 17 Apr 2012 Soarer: Aha, I hope it is just that! It's the only thing I can think of that makes sense of t ...
+385 17 Apr 2012 litster: Hi. I tried cold plugging different keyboards. The result is the same. On the old ...
+386 17 Apr 2012 Soarer: So you're plugging the keyboard into the converter, and then the converter into the P ...
+387 17 Apr 2012 litster: Thank you! That was it! I always connected the Teensy to the PC first, and then plu ...
+388 17 Apr 2012 kishy: Good to hear - and yes, hotplugging XT, AT or PS/2 interfaces is not really the best ...
+389 17 Apr 2012 Soarer: Phew!
+390 17 Apr 2012 litster: Soarer, is it possible to detect a disconnect of the PS/2 connection, and reset the T ...
+391 17 Apr 2012 Soarer: Hmm. Probably, with some work, but I'm not sure I want to encourage it! (There is a r ...
+392 18 Apr 2012 bhtooefr: What about detecting the unplug, and then blinking an error condition? Or even having ...
+393 18 Apr 2012 litster: Hehe, I thought more people need to know how cool Soarer's converter is, so I posted ...
+394 19 Apr 2012 Soarer: Thanks for that! Hope you enjoy it, and find a use for some of the other features as ...
+395 19 Apr 2012 Soarer: Been working on the docs a bit - any comments and/or tips would be welcome! [ Attach ...
+396 19 Apr 2012 REVENGE: Oh man, this looks great! I'll do a read through, let you know if I have any suggestions.
+397 19 Apr 2012 Gawkbasher: Very cool documentation. Thanks!
+398 19 Apr 2012 Soarer: It's pretty much the first time I've messed with CSS, so, um, don't look at that! The ...
+399 20 Apr 2012 bhtooefr: FWIW, you can do the navbar stuff in CSS, too - no need to do it in JavaScript. Typo ...
+400 20 Apr 2012 Soarer: The navbar is done in CSS, but effectively it's a client-side include I really wanted ...
+401 23 Apr 2012 Soarer: To celebrate, I present , with these new and improved features...
+402 23 Apr 2012 Zorael: Pre-built linux tools sounds awesome! Excuse me if I'm sobbing; I've just spent the b ...
+403 23 Apr 2012 Soarer: Thanks! And welcome to geekhack! Oh man, I'm really sorry :-( There were a few posts ...
+404 25 Apr 2012 andrewjoy: will this work on the rubber dome wise boards also ? i got one off ebay quite cheap i ...
+405 25 Apr 2012 Soarer: I don't know the keyboard - any idea what protocol it uses? What connector?
+406 25 Apr 2012 andrewjoy: it uses a phone type connector similar to other terminal boards i am amusing it uses ...
+407 25 Apr 2012 John Boone: Congrats and happy birthday for your Converter ! I would like to know if it is possi ...
+408 25 Apr 2012 Soarer: Thanks! Yes, it can, with some caveats... First, it won't fit with the standard Atmel ...
+409 01 May 2012 John Boone: Thanks for the answer, well I will stick with the 32k version as for now, since i am ...
+410 01 May 2012 Soarer: Unless you already have some 16k chips, then it's definitely worth going for the 32k. ...
+411 27 May 2012 REVENGE: Woo, busted out the Unsaver tonight. Converter works great, and now I finally have th ...
+412 27 May 2012 Soarer: BTW: LANG_4 is the center key in the arrow cluster for 122s. :-p There is an easier w ...
+413 27 May 2012 REVENGE: Good tip, thanks!
+414 31 May 2012 Soarer: New version which fixes a bug that stopped jump to bootloader functions working on AT ...
+415 05 Jun 2012 Soarer: We can add Dell Latitude D800 to that list :-( At least I have one to play with, so i ...
+416 06 Jun 2012 fohat.digs: I have installed 12.04 as a dual-boot with Windows 7, and the OS does not seem to rec ...
+417 06 Jun 2012 Soarer: Oh crap - what have they gone and done! :-( No driver needed, it should be all there ...
+418 06 Jun 2012 alaricljs: Also check if the USB on the other side of the Dell works. I haven't been able to fi ...
+419 06 Jun 2012 kishy: FWIW, all of my tests on the 630m involved all 4 ports (which are on the same "side", ...
+420 06 Jun 2012 alaricljs: My D820 and e6410 both have opposite side USB ports, I was under the impression that ...
+421 06 Jun 2012 kishy: [ Attachment Invalid Or Does Not Exist ] 52336[/ATTACH] I believe 630m is the odd on ...
+422 06 Jun 2012 Soarer: Actually, on the D800 (A11 BIOS) it seems to work OK from a cold boot, but not on res ...
+423 06 Jun 2012 Soarer: Hmm... so on this Dell actually all devices are showing up. Strangely, the scinfo com ...
+424 08 Jun 2012 Soarer: I not sure that this D800 has the quite same problem as those other Dells. On this on ...
+425 08 Jun 2012 fohat.digs: I don't know about anybody else's Ubuntu 12.04 problem, but mine was fixed immediatel ...
+426 08 Jun 2012 Soarer: Interesting... that actually makes it more similar to the Dell laptops' problem, in t ...
+427 08 Jun 2012 fohat.digs: Yes, I think that it just had to recognize the USB device once, smooth sailing after ...
+428 08 Jun 2012 Soarer: Ah good. Just these pesky Dells to deal with now then! :-D
+429 19 Jun 2012 AKIMbO: Hey guys I need a little help with my teensy install. I'm converting an XT to usb. ...
+430 19 Jun 2012 Soarer: Brown = Vcc Red = Ground White = Data Black = Clock :-)
+431 19 Jun 2012 AKIMbO: Thank you so much Soarer. I was pulling my hair out and second guessing myself with ...
+432 19 Jun 2012 Soarer: Haha, yeah, IBM (and Cherry) sure did pick some unintuitive colours! Good to hear of ...
+433 19 Jun 2012 Paranoid: Hi everyone. I'm also trying to convert XT to USB (IBM model F), but when I wire it l ...
+434 19 Jun 2012 Soarer: Ouch, that doesn't sound good at all - the Teensy shouldn't even be warm :-( Where th ...
+435 19 Jun 2012 Paranoid: The wire colours are in the same order as in the picture (brown-red-white-black) with ...
+436 19 Jun 2012 Soarer: Either Vcc and GND are fine. Hate to say it, but I think somehow the Teensy has died ...
+437 20 Jun 2012 Paranoid: Damn that would suck! I also can connect it to my computer and run and load the LED b ...
+438 20 Jun 2012 Soarer: Reversing Vcc and GND is more likely to damage the keyboard than the Teensy, and I'm ...
+439 20 Jun 2012 Paranoid: Yes, I do have a multimeter :) I did the test that you asked. Let me sum it up: Basic ...
+440 20 Jun 2012 Soarer: I dunno... something doesn't quite add up :-) I don't see how the Teensy would get ho ...
+441 20 Jun 2012 Paranoid: yes that's exactly how I did the current measurement. Maybe there's something wrong w ...
+442 21 Jun 2012 REVENGE: You could double check the wire config by using a multimeter and testing for continui ...
+443 21 Jun 2012 Paranoid: Hi Revenge, I checked that in the beginning. The VCC, ground and data were correct, o ...
+444 21 Jun 2012 Soarer: I think that means you were reading the pinout diagram backwards - it's drawn looking ...
+445 21 Jun 2012 Paranoid: hehe, that would explain why I got the grnd and vcc wrong the first try ^^ the pins a ...
+446 22 Jun 2012 Soarer: Sorry, I missed the update :-) I'm still puzzled why the teensy and cable get hot, wi ...
+447 24 Jun 2012 Parak: For my second F122 refurbishment, I took some of these that I had lying around and fo ...
+448 24 Jun 2012 Soarer: That's pretty neat :-) Put the pins on the back you mean? But then you'd have bits st ...
+449 24 Jun 2012 Parak: It would have looked a bit neater as the d0/d1 pins could have been flush, but then I ...
+450 23 Aug 2012 fohat.digs: I am probably just dense or incompetent, but here are 2 questions: 1. How to I get to ...
+451 23 Aug 2012 Soarer: 1. The article has moved to the first post in this thread ;) 2. Depends... Day-to-day ...
+452 26 Aug 2012 neocalm: Hello Soarer! What a fantastic project, with my beginner skills I never thought I wo ...
+453 26 Aug 2012 Soarer: Well, AB is only 'bad' because it is used to identify the regular 101/102-key keyboa ...
+454 28 Aug 2012 neocalm: Thanks, that makes sense on why "AB" is bad. Turns out that the board has no "JP3" ...
+455 28 Aug 2012 Soarer: Excellent! Actually, the 'force' command only forces the converter to for set 3, it ...
+456 31 Aug 2012 neocalm: That's great to know the Converter doesn't set the Set. So I did do something! :) E ...
+457 31 Aug 2012 Soarer: It isn't. I thought about it, but never got round to adding it, because it didn't rea ...
+458 01 Sep 2012 neocalm: ... well that ended pretty quick :( I was all set for the "bolt-mod" with all the req ...
+459 01 Sep 2012 Soarer: How frustrating :( I guess that means that one of those traces on the plastic sheets ...
+460 01 Sep 2012 N8N: Rear defogger repair kit?
+461 01 Sep 2012 Soarer: Yeah. Or from electronics suppliers ( ). I should say I've no idea how well or even i ...
+462 09 Sep 2012 Halvar: Hi, thank you Soarer for this great piece of software. Another report of a successful ...
+463 09 Sep 2012 Soarer: You're welcome! And good job building it in with LEDs, many people don't bother with ...
+464 09 Sep 2012 Halvar: *danceandsing* Thanks a lot Soarer, that did it! I even did read the post that you l ...
+465 09 Sep 2012 Soarer: Excellent! LOL, I hadn't even noticed the [´] in your post! Thanks for posting the c ...
+466 10 Sep 2012 __red__: Another satisfied customer here - IBM Model F 122 key, 6110344 5 August 1986. :)
+467 18 Sep 2012 Krogenar: I've got two broke-down Model M 122's headed my way -- looking forward to giving this ...
+468 18 Sep 2012 fohat.digs: Something is escaping me here. I am back where I was a month ago at post 451 trying t ...
+469 18 Sep 2012 Soarer: It's usually described as a 270 degree 5 pin DIN (or sometimes 240 degree), whereas t ...
+470 18 Sep 2012 Soarer: Does it recognize the keyboard if you program it with v0.997? There isn't any real di ...
+471 18 Sep 2012 fohat.digs: Thank you. I did this last year with an F-122 in which I installed the Teensy interna ...
+472 18 Sep 2012 Soarer: I think the old config will be fine, and anyway we won't need one yet, to get the key ...
+473 19 Sep 2012 fohat.digs: I think that I have done it several ways. My assumption is that the preferable metho ...
+474 19 Sep 2012 Soarer: I was just checking, since with the Teensy built-in to your other keyboard, the quest ...
+475 19 Sep 2012 fohat.digs: I do have hid_listen but there is nothing for it to listen to ...... Are the pins on ...
+476 19 Sep 2012 Soarer: Odd. Once the Teensy is programmed with the converter code, hid_listen should at leas ...
+477 19 Sep 2012 Krogenar: Thank you Soarer! I think I'm going to try a panel mount because I'd rather not alter ...
+478 19 Sep 2012 Soarer: Ah, the trailing socket wouldn't mean modifying the keyboard, it would be for making ...
+479 19 Sep 2012 fohat.digs: Allow me to clarify the situation and reduce misunderstanding. I have my "old" rig w ...
+480 19 Sep 2012 Soarer: That's exactly what would happen if you programmed it with blinkfast instead of progr ...
+481 20 Sep 2012 fohat.digs: Thank you. Do I need to somehow de-program ore re-format the Teensy from Fast-Blink? ...
+482 20 Sep 2012 Soarer: Hmm, strange. Programming it with the converter hex ought to remove the blinking. Jus ...
+483 20 Sep 2012 fohat.digs: "Something" happened. I went through your steps again. After opening the hex file, pr ...
+484 20 Sep 2012 fohat.digs: Now I am getting a little worried. I plugged an ordinary PS2 keyboard into the Teensy ...
+485 20 Sep 2012 Soarer: OK, progress, it seems to be programmed now :-) Since you're getting some response wh ...
+486 20 Sep 2012 fohat.digs: I keep working on this instead of my "real" work. My working converter is hard-wired ...
+487 20 Sep 2012 Soarer: Don't dismantle your working one! I meant we should be able to get this new one worki ...
+488 20 Sep 2012 fohat.digs: Using a 10-year-old Compaq rubber dome board with PS2 connector, with each key press ...
+489 20 Sep 2012 Soarer: That's a mix of Timeout and Start Bit errors, with a rare Internal error. One possibl ...
+490 20 Sep 2012 fohat.digs: Thanks, but going by your diagram at the beginning of the thread, I think I have it w ...
+491 20 Sep 2012 Soarer: I know you do, but there must be something wrong somewhere! :D Pretty much any standa ...
+492 21 Sep 2012 fohat.digs: Yes, the XT is what I have been working with. I gave up the alligator clips and have ...
+493 21 Sep 2012 Soarer: I think the only way to fully cook the keyboard is to connect power and ground in rev ...
+494 21 Sep 2012 fohat.digs: This is indeed disappointing, if I have carelessly wrecked 2 Model Fs. Is there a rel ...
+495 21 Sep 2012 Soarer: Well I'm not sure that you have totally wrecked them, unless you think you might have ...
+496 22 Sep 2012 fohat.digs: This is going to have to get shelved for a few days. - IF - I did apply the power bac ...
+497 22 Sep 2012 Soarer: OK. I'm sorry that this hasn't gone as smoothly for you as it did last time. Trouble ...
+498 22 Sep 2012 fohat.digs: Depending on how this all plays out, I can send you some dead parts that have no more ...
+499 22 Sep 2012 Soarer: Thanks! I'm still hopeful that it's not that much of a disaster though :)
+500 24 Sep 2012 kishy: If the controller is toast, let's not forget that dfj was making a full replacement.. ...
+501 24 Sep 2012 Soarer: True, I'm not forgetting it, but dfj would need quite some prodding to release code o ...
+502 25 Sep 2012 Krogenar: Fohat, just a heads up -- I got two 122-key Terminal Model M's from eBay. One has a c ...
+503 25 Sep 2012 kishy: I guess with the attachments being lost my huge post showing the differences between ...
+504 25 Sep 2012 Soarer: Unfortunately, Model M controllers don't have the special capacitive sensing chip tha ...
+505 26 Sep 2012 oTurtlez: I've got a Leading Edge DC-2014 and the internal connector has six wires coming out. ...
+506 26 Sep 2012 Soarer: Yeah, I'm afraid they need to be properly identified. Either by using a multimeter, o ...
+507 26 Sep 2012 oTurtlez: Heres another pic focusing more on the traces. It seems the Yellow is definitely the ...
+508 26 Sep 2012 Soarer: LOL, I said DON'T take my guesswork as fact!! :p Still need a pic that shows the tra ...
+509 26 Sep 2012 oTurtlez: Traces of the 14 pin ---> The 40-pin is an 8048 and the 14 pin reads 6A1 8(New line) ...
+510 26 Sep 2012 Soarer: Cool. 74LS125 is a tri-state buffer chip. Black and grey wires both go there, so they ...
+511 26 Sep 2012 oTurtlez: Trying that now, Teensy just came in the mail so I'm getting to the soldering Thanks.
+512 26 Sep 2012 oTurtlez: Well my Teensy just arrived so I tried it out and got everything soldered up. Loaded ...
+513 26 Sep 2012 Soarer: Bah :( Is it giving any output to hid_listen when you press keys? Also, with hid_list ...
+514 26 Sep 2012 oTurtlez: It gave no output when keys were pressed, I hadnt used it with the black and grey swa ...
+515 27 Sep 2012 fohat.digs: Sounds like what is happening to me. Could there be a bad batch of Teensys shipping r ...
+516 27 Sep 2012 oTurtlez: As much as I'd like that to be the case so I could get a replacement, All software de ...
+517 27 Sep 2012 Halvar: Hi, from my experience this error means that there's a problem with the connection be ...
+518 27 Sep 2012 Soarer: Oh man, that really sucks... I think the track away from the PD1 pad is on the top si ...
+519 27 Sep 2012 oTurtlez: I really need a better iron. This 25w POS has been with me for far too long. I need s ...
+520 27 Sep 2012 oTurtlez: Do you know if there's any way to reprogram the code to look to PD2 instead of PD1? O ...
+521 27 Sep 2012 Soarer: It would be possible, but the problem is I don't want to add such a build to the rele ...
+522 27 Sep 2012 oTurtlez: I'm guessing it's not as simple as going into the code and changing all PD1 to PD2? ( ...
+523 27 Sep 2012 Krogenar: How would you know if a keyboards controller were faulty, broken?
+524 28 Sep 2012 Soarer: It's written in C :-) The point is, it would be fairly easy for me to mod it, but I d ...
+525 28 Sep 2012 Soarer: That is a properly sorted 122-key! The LEDs and relegendable keys really make it sple ...
+526 28 Sep 2012 Soarer: From the IBM PC Technical Reference... So although the IBM keyboards didn't use the R ...
+527 03 Oct 2012 Krogenar: Soarer, just wanted to give you a huge thanks! Got your converter working late last n ...
+528 03 Oct 2012 Soarer: That's good to hear! Let's have some pics :D
+529 03 Oct 2012 Soarer: Paranoid's dead XT arrived, and I started examining it. Testing revealed a complete s ...
+530 04 Oct 2012 __red__: Any sign of bulging or other physical defecT?
+531 04 Oct 2012 Soarer: Not that I can tell. I'm sure it would've been more dramatic without the USB port's o ...
+532 05 Oct 2012 page2pagepro: Please note, for IBM Model M 1390572, the image above is for female socket, not male ...
+533 06 Oct 2012 Soarer: That on github is hasu's great repo :) There's no source code available for my conver ...
+534 06 Oct 2012 Soarer: Recently I've been working with oTurtlez trying to figure out his Leading Edge DC-201 ...
+535 14 Oct 2012 page2pagepro: Anti-Ghosting with Teensy? Using tool, http://www.microsoft.com/appliedsciences/antig ...
+536 14 Oct 2012 Soarer: I'm sorry to disappoint you, but the Model M isn't NKRO and the converter can't chang ...
+537 14 Oct 2012 __red__: I think we as a community need to buy soarer a logic analyzer. Given what he's given ...
+538 14 Oct 2012 Soarer: Thanks red! Actually, I've already got this one with a ... here's some ! ;D But mos ...
+539 15 Oct 2012 Krogenar: Is my converter weird or something? It's working -- if press keys on my 122 Terminal ...
+540 15 Oct 2012 Halvar: @Krogenar: To see the scan set, you'll have to have the hid_listen.exe window open w ...
+541 15 Oct 2012 Soarer: Thanks Halvar, that's all great! Krogenar, you don't really need to know which scan s ...
+542 15 Oct 2012 urbanus: Works with my 83-key Model F XT -- typing on it right now! :) Thank you very much So ...
+543 15 Oct 2012 Krogenar: Yes, I discovered that when I remove the keyboard cable and reinsert, that there's mo ...
+544 15 Oct 2012 alaricljs: If I recall from my reading of this thread.... you're not supposed to detach/attach t ...
+545 15 Oct 2012 Krogenar: Ok, here we go. Keep in mind I have no experience building electronics. My goal was t ...
+546 15 Oct 2012 Soarer: Hmm, that should work to clear things back to the defaults. You can check by running ...
+547 16 Oct 2012 Krogenar: I tried using Halvar's config file -- worked beautifully. I'm trying to find some nic ...
+548 16 Oct 2012 Halvar: The painting restoration story is hilarious. :D Some symbol fonts I found and partly ...
+549 16 Oct 2012 Krogenar: Yeah, she started out trying to restore Jesus, and wound up making him look like Mr. ...
+550 16 Oct 2012 Soarer: Nothing exciting... it's just the Window's menu key.
+551 16 Oct 2012 Halvar: http://www.clker.com/clipart-15445.html
+552 01 Nov 2012 Soarer: New improved version (sorry __red__!) now samples whenever any of PD0 to PD3 change, ...
+553 08 Nov 2012 Arbiter343GS: I actually did this project about a month ago after I bought a 122 key model M off of ...
+554 08 Nov 2012 fohat.digs: I have used Key Tweak, but most people seem to prefer Auto Hot Key. I plan to try AHK ...
+555 08 Nov 2012 Arbiter343GS: Ive been trying auto hotkey but I have no idea how to go about programming the extra ...
+556 08 Nov 2012 Soarer: Remappings are best done in the converter because then there's no restrictions (like ...
+557 08 Nov 2012 fohat.digs: Do you remember that I went through hours/days of anguish trying to get a Teensy to w ...
+558 09 Nov 2012 Soarer: That's a tough one to call! I the only likely way to electrically damage a Teensy w ...
+559 09 Nov 2012 fohat.digs: I emailed "Paul" and he was nice but I am not going to push for a replacement. He is ...
+560 09 Nov 2012 Soarer: Yes, that is a relief. I've used about half a dozen Teensies, and had no bad ones. I ...
+561 09 Nov 2012 wcass: it is actually quite easy. first, go to the DOCS folder and double-click on . since ...
+562 09 Nov 2012 fohat.digs: The last leg of this trip has been surprisingly difficult, but I now have my working ...
+563 09 Nov 2012 Krogenar: Nice build fohat!
+564 09 Nov 2012 fohat.digs: Arrgh! I spoke too soon about my ecstasy. My old build, F-122 with internal Teensy an ...
+565 09 Nov 2012 Halvar: hid_listen only shows the ID when the teensy is started. So to see it, unplug your ke ...
+566 09 Nov 2012 Soarer: Yes, the solution is to use a config file and do the remapping on the Teensy - wcass' ...
+567 09 Nov 2012 fohat.digs: Thank you. When I hot plug the Teensy, I get: wED rFE !!FEwED rFE !!FEwED rFE !!FE Th ...
+568 09 Nov 2012 Soarer: You don't have to give up on remapping Pause if you do the remapping in the converter ...
+569 09 Nov 2012 Halvar: I don't know if there's a difference between the default mapping of an M-122 and an F ...
+570 09 Nov 2012 fohat.digs: Finding the picture (not easy) that went along with my own post at #223 allowed me to ...
+571 10 Nov 2012 Soarer: Halvar, that's true... since v0.997 that Pause mapping moved to legacy.sc. It never w ...
+572 10 Nov 2012 Soarer: fohat, to give a quick idea of the process of getting config 'in the converter', the ...
+573 10 Nov 2012 Arbiter343GS: I pretty much understand how the entire process works now, but Im stumped on how to g ...
+574 10 Nov 2012 Soarer: On Windows, the simplest way to do it without the drag-drop into the command prompt w ...
+575 10 Nov 2012 zz: hi! and thank you so much for making this awesome project! i can confirm that it work ...
+576 10 Nov 2012 Soarer: Data line is stuck high - hopefully just a bad connection :)
+577 10 Nov 2012 zz: aw man and a support reaction time of ten minutes! there is no hid manufacturer that ...
+578 10 Nov 2012 Arbiter343GS: That worked, thank you for all the help! And wow. I am definitely blind, I was scouri ...
+579 10 Nov 2012 Soarer: Yeah, scas takes two arguments, so dropping a file onto it in the GUI doesn't work. ...
+580 10 Nov 2012 fohat.digs: Thank you again, you always come through. I was having a similar problem to Arbiter, ...
+581 10 Nov 2012 Soarer: We can most definitely get it much better than having to live with any annoyances, bu ...
+582 10 Nov 2012 fohat.digs: Sorry to make life difficult. First, I had already reset everything in KeyTweak back ...
+583 10 Nov 2012 Soarer: For the top-right numpad key, you need to remap EXTRA_SYSRQ, and the centre key in th ...
+584 10 Nov 2012 fohat.digs: My hat is off to you once again. And please, never let questions about keyboards get ...
+585 10 Nov 2012 Soarer: All stocked up now :cool: If Pause hadn't been EXTRA_SYSRQ, it would've been PAD_MIN ...
+586 10 Nov 2012 fohat.digs: Sweet! Even better than I thought. I guess that in England you don't have "blue laws" ...
+587 11 Nov 2012 Soarer: No, nothing like 'blue laws', but big shops are limited to I think 6 hours opening on ...
+588 11 Nov 2012 AKIMbO: A big shout out to Soarer...I just want to say thank you again for this awesome conve ...
+589 11 Nov 2012 fohat.digs: Good Luck! What was that one dated, April 1984? The oldest one I have is a 6110344 da ...
+590 11 Nov 2012 AKIMbO: April 1984....Part # 6110344. Foam mat appeared to be in decent condition and the me ...
+591 11 Nov 2012 zz: damn. why did i touch it. it was running perfectly :'( after very carefully resolder ...
+592 11 Nov 2012 fohat.digs: What wires? As much as I have tinkered with other stuff, I have not touched any "inte ...
+593 11 Nov 2012 zz: i meant the cable.. i just wanted to make it shorter to fit inside.
+594 11 Nov 2012 Soarer: So it's worse than before? Not even the rFF codes now? :( Most of the ways to damage ...
+595 11 Nov 2012 zz: phew! got it back to work on pd3 and pd4 with the alternate firmware a few pages bac ...
+596 11 Nov 2012 Soarer: Shame about the damage, but at least it's working now :)
+597 24 Nov 2012 AKIMbO: Mmmmm.....success. ANSI layout. Thanks again Soarer!
+598 24 Nov 2012 Soarer: Nicely done... and very clean!
+599 24 Nov 2012 AKIMbO: I'm having a bit of an issue with the converter. When I run the command (scwr akimbo ...
+600 24 Nov 2012 Soarer: That's odd. No errors from 'scas akimbo.cfg akimbo.scb', presumably?
+601 24 Nov 2012 AKIMbO: ^You know what I did wrong. I didn't use type .cfg when i ran 'scas akimbo.cfg akimb ...
+602 24 Nov 2012 Soarer: Ahahahahahaha... haaaa.... :p
+603 24 Nov 2012 AKIMbO: :-[ Hehehehe
+604 24 Nov 2012 Soarer: :-* (there is no bro-hug smiley, so...)
+605 25 Nov 2012 fohat.digs: Great job, AKIMbO. I have been working on my instructions for a project similar to th ...
+606 27 Nov 2012 fohat.digs: Just when I thought it was safe to go in the water again ..... I lost my numpad. The ...
+607 27 Nov 2012 Soarer: What an odd problem, since the CURRENT_USER setting should override the .DEFAULT!! BT ...
+608 27 Nov 2012 fohat.digs: I think that .DEFAULT must have blown everybody's minds. The choices were 0, 1, or 2 ...
+609 07 Dec 2012 Soarer: PLEASE VOTE for my converter in the Deskthority Awards 2012: Best input device mod 20 ...
+610 07 Dec 2012 fohat.digs: Everybody vote for Soarer. Without him, I would never have known the joy I have exper ...
+611 07 Dec 2012 Soarer: At least I can't lose to thin ABS keycaps again this year!! That made me sad, but my ...
+612 08 Dec 2012 Krogenar: Voted. Possibly twice. ;)
+613 08 Dec 2012 Soarer: Full source and binaries for the logic analyzer now posted on DT :D
+614 09 Dec 2012 JesuswasaZombie: http://learn.adafruit.com/usb-next-keyboard-with-arduino-micro/overview How cute, the ...
+615 09 Dec 2012 Soarer: Well maybe they are - it's a different protocol, after all! Pains me to see bit-bangi ...
+616 11 Dec 2012 precarious: http://deskthority.net/wiki/File:G80-0777.pdf I purchased a Teensy the other day to t ...
+617 11 Dec 2012 Soarer: Difficult to say what that extra ROM chip changes - it could be an entirely different ...
+618 11 Dec 2012 Halvar: Quite remarkable -- I have never seen an Amiga keyboard like that. AFAIK, the Amiga ...
+619 11 Dec 2012 precarious: The seller of the keyboard said it was for an Amiga 1000, so I suppose that makes sen ...
+620 12 Dec 2012 Soarer: Sure, this would be a great way to convert a Dolch! I don't know if there are any con ...
+621 12 Dec 2012 metalliqaz: Well this was an easy project. Zero to typing with my Model-M with surprisingly litt ...
+622 15 Dec 2012 Soarer: Many thanks to everyone who voted for my converter :D Deskthority Awards - Best input ...
+623 15 Dec 2012 precarious: the competition didn't stand a chance, congratulations :)
+624 15 Dec 2012 fohat.digs: Great work, Soarer! I guess that you have been working on this for the better part of ...
+625 16 Dec 2012 Krogenar: Congrats Soarer!
+626 18 Dec 2012 precarious: Received my Teensy and PS2 connector today, managed to get the Dolch working over USB ...
+627 18 Dec 2012 Soarer: Certainly some (most?) WYSE keyboards aren't handled by the converter, since they hav ...
+
+
diff --git a/docs/codes.html b/docs/codes.html
new file mode 100644
index 0000000..b9f779d
--- /dev/null
+++ b/docs/codes.html
@@ -0,0 +1,333 @@
+
+
+
+Codes
+
+
+
+
+Modified HID Code Set
+
+
+Codes in italics are used internally by the converter, and are not output.
+Codes with highlight are output, but may not be supported by all OS (notably Windows).
+Media and Power codes are translated to the correct code page before being output.
+
+
+
+
+
+
+Name HID Code Description
+UNASSIGNED 0x00 No Event
+OVERRUN_ERROR 0x01 Overrun Error
+POST_FAIL 0x02 POST Fail
+ERROR_UNDEFINED 0x03 ErrorUndefined
+A 0x04 a A
+B 0x05 b B
+C 0x06 c C
+D 0x07 d D
+E 0x08 e E
+F 0x09 f F
+G 0x0A g G
+H 0x0B h H
+I 0x0C i I
+J 0x0D j J
+K 0x0E k K
+L 0x0F l L
+M 0x10 m M
+N 0x11 n N
+O 0x12 o O
+P 0x13 p P
+Q 0x14 q Q
+R 0x15 r R
+S 0x16 s S
+T 0x17 t T
+U 0x18 u U
+V 0x19 v V
+W 0x1A w W
+X 0x1B x X
+Y 0x1C y Y
+Z 0x1D z Z
+1 0x1E 1 !
+2 0x1F 2 @
+3 0x20 3 #
+4 0x21 4 $
+5 0x22 5 %
+6 0x23 6 ^
+7 0x24 7 &
+8 0x25 8 *
+9 0x26 9 (
+0 0x27 0 )
+ENTER 0x28 Return
+ESC 0x29 Escape
+BACKSPACE 0x2A Backspace
+TAB 0x2B Tab
+SPACE 0x2C Space
+MINUS 0x2D - _
+EQUAL 0x2E = +
+LEFT_BRACE 0x2F [ {
+RIGHT_BRACE 0x30 ] }
+BACKSLASH 0x31 \ |
+EUROPE_1 0x32 Europe 1
+SEMICOLON 0x33 ; :
+QUOTE 0x34 ' "
+BACK_QUOTE 0x35 ` ~
+COMMA 0x36 , <
+PERIOD 0x37 . >
+SLASH 0x38 / ?
+CAPS_LOCK 0x39 Caps Lock
+F1 0x3A F1
+F2 0x3B F2
+F3 0x3C F3
+F4 0x3D F4
+F5 0x3E F5
+F6 0x3F F6
+F7 0x40 F7
+F8 0x41 F8
+F9 0x42 F9
+F10 0x43 F10
+F11 0x44 F11
+F12 0x45 F12
+PRINTSCREEN 0x46 Print Screen
+SCROLL_LOCK 0x47 Scroll Lock
+PAUSE 0x48 Pause
+INSERT 0x49 Insert
+HOME 0x4A Home
+PAGE_UP 0x4B Page Up
+DELETE 0x4C Delete
+END 0x4D End
+PAGE_DOWN 0x4E Page Down
+RIGHT 0x4F Right Arrow
+LEFT 0x50 Left Arrow
+DOWN 0x51 Down Arrow
+UP 0x52 Up Arrow
+NUM_LOCK 0x53 Num Lock
+PAD_SLASH 0x54 Keypad /
+PAD_ASTERIX 0x55 Keypad *
+PAD_MINUS 0x56 Keypad -
+PAD_PLUS 0x57 Keypad +
+PAD_ENTER 0x58 Keypad Enter
+PAD_1 0x59 Keypad 1 End
+PAD_2 0x5A Keypad 2 Down
+PAD_3 0x5B Keypad 3 PageDn
+PAD_4 0x5C Keypad 4 Left
+PAD_5 0x5D Keypad 5
+PAD_6 0x5E Keypad 6 Right
+PAD_7 0x5F Keypad 7 Home
+PAD_8 0x60 Keypad 8 Up
+PAD_9 0x61 Keypad 9 PageUp
+PAD_0 0x62 Keypad 0 Insert
+PAD_PERIOD 0x63 Keypad . Delete
+EUROPE_2 0x64 Europe 2
+APP 0x65 App
+POWER 0x66 Keyboard Power
+PAD_EQUALS 0x67 Keypad =
+F13 0x68 F13
+F14 0x69 F14
+F15 0x6A F15
+F16 0x6B F16
+F17 0x6C F17
+F18 0x6D F18
+F19 0x6E F19
+F20 0x6F F20
+F21 0x70 F21
+F22 0x71 F22
+F23 0x72 F23
+F24 0x73 F24
+EXECUTE 0x74 Keyboard Execute
+HELP 0x75 Keyboard Help
+MENU 0x76 Keyboard Menu
+SELECT 0x77 Keyboard Select
+STOP 0x78 Keyboard Stop
+AGAIN 0x79 Keyboard Again
+UNDO 0x7A Keyboard Undo
+CUT 0x7B Keyboard Cut
+COPY 0x7C Keyboard Copy
+PASTE 0x7D Keyboard Paste
+FIND 0x7E Keyboard Find
+MUTE 0x7F Keyboard Mute
+VOLUME_UP 0x80 Keyboard Volume Up
+VOLUME_DOWN 0x81 Keyboard Volume Dn
+LOCKING_CAPS_LOCK 0x82 Keyboard Locking Caps Lock
+LOCKING_NUM_LOCK 0x83 Keyboard Locking Num Lock
+LOCKING_SCROLL_LOCK 0x84 Keyboard Locking Scroll Lock
+PAD_COMMA 0x85 Keypad comma (Brazilian Keypad .)
+EQUAL_SIGN 0x86 Keyboard Equal Sign
+INTERNATIONAL_1 0x87 Keyboard Int'l 1 (Ro)
+INTERNATIONAL_2 0x88 Keyboard Intl'2 (Katakana/Hiragana)
+INTERNATIONAL_3 0x89 Keyboard Int'l 2 (Yen)
+INTERNATIONAL_4 0x8A Keyboard Int'l 4 (Henkan)
+INTERNATIONAL_5 0x8B Keyboard Int'l 5 (Muhenkan)
+INTERNATIONAL_6 0x8C Keyboard Int'l 6 (PC9800 Keypad comma)
+INTERNATIONAL_7 0x8D Keyboard Int'l 7
+INTERNATIONAL_8 0x8E Keyboard Int'l 8
+INTERNATIONAL_9 0x8F Keyboard Int'l 9
+LANG_1 0x90 Keyboard Lang 1 (Hanguel/English)
+LANG_2 0x91 Keyboard Lang 2 (Hanja)
+LANG_3 0x92 Keyboard Lang 3 (Katakana)
+LANG_4 0x93 Keyboard Lang 4 (Hiragana)
+LANG_5 0x94 Keyboard Lang 5 (Zenkaku/Hankaku)
+LANG_6 0x95 Keyboard Lang 6
+LANG_7 0x96 Keyboard Lang 7
+LANG_8 0x97 Keyboard Lang 8
+LANG_9 0x98 Keyboard Lang 9
+ALTERNATE_ERASE 0x99 Keyboard Alternate Erase
+SYSREQ_ATTN 0x9A Keyboard SysReq/Attention
+CANCEL 0x9B Keyboard Cancel
+CLEAR 0x9C Keyboard Clear
+PRIOR 0x9D Keyboard Prior
+RETURN 0x9E Keyboard Return
+SEPARATOR 0x9F Keyboard Separator
+OUT 0xA0 Keyboard Out
+OPER 0xA1 Keyboard Oper
+CLEAR_AGAIN 0xA2 Keyboard Clear/Again
+CRSEL_PROPS 0xA3 Keyboard CrSel/Props
+EXSEL 0xA4 Keyboard ExSel
+SYSTEM_POWER 0xA8 System Power
+SYSTEM_SLEEP 0xA9 System Sleep
+SYSTEM_WAKE 0xAA System Wake
+AUX1 0xAB Auxiliary key 1
+AUX2 0xAC Auxiliary key 2
+AUX3 0xAD Auxiliary key 3
+AUX4 0xAE Auxiliary key 4
+AUX5 0xAF Auxiliary key 5
+EXTRA_LALT 0xB1 AT-F extra pad lhs of space
+EXTRA_PAD_PLUS 0xB2 Term extra pad bottom of keypad +
+EXTRA_RALT 0xB3 AT-F extra pad rhs of space
+EXTRA_EUROPE_2 0xB4 AT-F extra pad lhs of enter
+EXTRA_BACKSLASH 0xB5 AT-F extra pad top of enter
+EXTRA_INSERT 0xB6 AT-F extra pad lhs of Insert
+EXTRA_F1 0xB7 122-key Terminal lhs F1
+EXTRA_F2 0xB8 122-key Terminal lhs F2
+EXTRA_F3 0xB9 122-key Terminal lhs F3
+EXTRA_F4 0xBA 122-key Terminal lhs F4
+EXTRA_F5 0xBB 122-key Terminal lhs F5
+EXTRA_F6 0xBC 122-key Terminal lhs F6
+EXTRA_F7 0xBD 122-key Terminal lhs F7
+EXTRA_F8 0xBE 122-key Terminal lhs F8
+EXTRA_F9 0xBF 122-key Terminal lhs F9
+EXTRA_F10 0xC0 122-key Terminal lhs F10
+EXTRA_SYSRQ 0xC2 Sys Req (AT 84-key)
+FN1 0xD0 Function layer key 1
+FN2 0xD1 Function layer key 2
+FN3 0xD2 Function layer key 3
+FN4 0xD3 Function layer key 4
+FN5 0xD4 Function layer key 5
+FN6 0xD5 Function layer key 6
+FN7 0xD6 Function layer key 7
+FN8 0xD7 Function layer key 8
+SELECT_0 0xD8 Select reset
+SELECT_1 0xD9 Select 1 toggle
+SELECT_2 0xDA Select 2 toggle
+SELECT_3 0xDB Select 3 toggle
+SELECT_4 0xDC Select 4 toggle
+SELECT_5 0xDD Select 5 toggle
+SELECT_6 0xDE Select 6 toggle
+SELECT_7 0xDF Select 7 toggle
+LCTRL 0xE0 Left Control
+LSHIFT 0xE1 Left Shift
+LALT 0xE2 Left Alt
+LGUI 0xE3 Left GUI
+RCTRL 0xE4 Right Control
+RSHIFT 0xE5 Right Shift
+RALT 0xE6 Right Alt
+RGUI 0xE7 Right GUI
+MEDIA_NEXT_TRACK 0xE8 Scan Next Track
+MEDIA_PREV_TRACK 0xE9 Scan Previous Track
+MEDIA_STOP 0xEA Stop
+MEDIA_PLAY_PAUSE 0xEB Play/ Pause
+MEDIA_MUTE 0xEC Mute
+MEDIA_BASS_BOOST 0xED Bass Boost
+MEDIA_LOUDNESS 0xEE Loudness
+MEDIA_VOLUME_UP 0xEF Volume Up
+MEDIA_VOLUME_DOWN 0xF0 Volume Down
+MEDIA_BASS_UP 0xF1 Bass Up
+MEDIA_BASS_DOWN 0xF2 Bass Down
+MEDIA_TREBLE_UP 0xF3 Treble Up
+MEDIA_TREBLE_DOWN 0xF4 Treble Down
+MEDIA_MEDIA_SELECT 0xF5 Media Select
+MEDIA_MAIL 0xF6 Mail
+MEDIA_CALCULATOR 0xF7 Calculator
+MEDIA_MY_COMPUTER 0xF8 My Computer
+MEDIA_WWW_SEARCH 0xF9 WWW Search
+MEDIA_WWW_HOME 0xFA WWW Home
+MEDIA_WWW_BACK 0xFB WWW Back
+MEDIA_WWW_FORWARD 0xFC WWW Forward
+MEDIA_WWW_STOP 0xFD WWW Stop
+MEDIA_WWW_REFRESH 0xFE WWW Refresh
+MEDIA_WWW_FAVORITES 0xFF WWW Favorites Deprecated Code Names v1.0+
+
+
+They are included for compatibility with older config files written for v0.997.
+Replacements for these names have been added beginning 'EXTRA_'.
+(As in, the change is just in the names of these codes).
+
+
+
+
+Name HID Code Description
+FAKE_01 0xB0 extra
+FAKE_02 0xB1 AT-F extra pad lhs of space
+FAKE_03 0xB2 Term extra pad bottom of keypad +
+FAKE_04 0xB3 AT-F extra pad rhs of space
+FAKE_05 0xB4 AT-F extra pad lhs of enter
+FAKE_06 0xB5 AT-F extra pad top of enter
+FAKE_07 0xB6 AT-F extra pad lhs of Insert
+FAKE_08 0xB7 Term F1
+FAKE_09 0xB8 Term F2
+FAKE_10 0xB9 Term F3
+FAKE_11 0xBA Term F4
+FAKE_12 0xBB Term F5
+FAKE_13 0xBC Term F6
+FAKE_14 0xBD Term F7
+FAKE_15 0xBE Term F8
+FAKE_16 0xBF Term F9
+FAKE_17 0xC0 Term F10
+FAKE_18 0xC1 extra
+FAKE_19 0xC2 Sys Req (AT 84-key) Modifiers
+
+
+Depending on context, a combination might mean 'any' or 'all' of the specified modifiers.
+
+
+
+Name Description
+LCTRL Left Control
+LSHIFT Left Shift
+LALT Left Alt
+LGUI Left GUI
+RCTRL Right Control
+RSHIFT Right Shift
+RALT Right Alt
+RGUI Right GUI
+CTRL Either/Both Control (shorthand for LCTRL RCTRL)
+SHIFT Either/Both Shift (shorthand for LSHIFT RSHIFT)
+ALT Either/Both Alt (shorthand for LALT RALT)
+GUI Either/Both GUI (shorthand for LGUI RGUI)
+ALL Any/All (shorthand for CTRL SHIFT ALT GUI)
+
diff --git a/docs/config.html b/docs/config.html
new file mode 100644
index 0000000..9ff7236
--- /dev/null
+++ b/docs/config.html
@@ -0,0 +1,258 @@
+
+
+
+Config v0.997+
+
+
+
+
+
+
+Overview
+
+
+
+ Command Reference
+
+
+force
+
+force
command disables the auto-detection of keyboard type. It is only very rarely needed!
+force {set1|set2|set3|set2ext}
+
+
+force set2
+
include
+
+include
command processes another file, exactly as if it was copy-pasted to where the include command is.
+include <file_name>
+
+
+include "colemak.sc"
+
ifselect
+
+ifselect
command and defining remaps or macros that output the SELECT_0 to SELECT_7 codes.
+ifselect {<select_num> | any}
+
ifselect
commands choose which blocks will be applied.
+When the converter powers-up, all selects, except select 0, are inactive.
+Multiple selects can be active at a time.
+Select 0 is special - it is always active, and when SELECT_0 is output it resets all the other selects.
+ifselect <select_num>
, up to the next ifselect
, are applied only if the specified select is active.ifselect any
, up to the next ifselect
, are applied regardless of which selects are active.
+
+# toggle between qwerty and colemak by pressing scroll lock
+
+ifselect 1
+include colemak.sc
+
+ifselect any
+remapblock
+ SCROLL_LOCK SELECT_1
+endblock
+
ifset
+
+ifset
command are only applied if using one of the specified sets.
+ifset [set1] [set2] [set3] [set2ext] [any]
+
+
+ifset set1 set2
+
ifkeyboard
+
+ifkeyboard
command are only applied if the keyboard has the specified ID.
+
+ifkeyboard {<keyboard_id> | any}
+
+
+ifkeyboard BABA
+
layerblock
+
+
+layerblock
+ <fn_key_combo> <layer_num>
+ ...
+endblock
+
+
+layerblock
+ FN1 1
+ FN2 1
+ FN1 FN2 2
+endblock
+
+remapblock
+ LGUI FN1
+ RGUI FN2
+endblock
+
remapblock
+
+layer
command is given inside the block.
+remapblock
+ [layer <layer_num>]
+ <from_hid> <to_hid>
+ ...
+endblock
+
+
+# swap capslock and backspace
+
+remapblock
+ CAPS_LOCK BACKSPACE
+ BACKSPACE CAPS_LOCK
+endblock
+
macroblock
+
+
+
+macroblock
+ macro <hid> [[-][{l|r}]shift] [[-][{l|r}]ctrl] [[-][{l|r}]alt] [[-][{l|r}]gui] ...
+ [
+ <command> [<value>]
+ ...
+ ]
+ [onbreak [norestoremeta]
+ <command> [<value>]
+ ...
+ ]
+ endmacro
+ ...
+endblock
+
+
+macroblock
+ macro SCROLL_LOCK LSHIFT LCTRL -ALT
+ PUSH_META CLEAR_META all # save and clear all metas
+ PRESS p # press some keys...
+ PRESS i
+ PRESS N # case is ignored - this results in lowercase 'n'
+ SET_META lshift # you have to set modifiers yourself
+ PRESS g # results in a capital 'G', since shift is set
+ POP_ALL_META # restore metas that were active before
+ endmacro
+endblock
+
Macro Commands
+
+
+
+
+
+Command Description
+NOP Does nothing
+PRESS <hid> Shorthand for MAKE <hid> then BREAK <hid>
+MAKE <hid> Set keystate to 'down'
+BREAK <hid> Set keystate to 'up'
+ASSIGN_META <metas> Set all metas to the state specified
+SET_META <metas> Set specified metas to down state
+CLEAR_META <metas> Set specified metas to up state
+TOGGLE_META <metas> Set specified metas to inverse of current state
+POP_META Restore metas from the time of the last PUSH_META
+POP_ALL_META Restore metas from the time of the first PUSH_META
+DELAY <delay_in_ms> Delay by the specified number of milliseconds
+CLEAR_ALL (internal use e.g. when buffer overrun is received)
+BOOT Cause the converter to jump to the bootloader v1.0+
+PUSH_META <cmd> <value> Save metas for later. Combines with other commands Macro trigger matching
+
+
+If a particular meta is not specified, its state is not matched.
+
+
+
+
+Meta Trigger condition
+LSHIFT LSHIFT is pressed
+RSHIFT RSHIFT is pressed
+SHIFT Either LSHIFT or RSHIFT is pressed
+-LSHIFT LSHIFT is not pressed
+The first matching macro found (if any) is executed, so you sometimes need to take of what order the macros are in.
+
+macroblock
+ macro SCROLL_LOCK LSHIFT # this macro will execute even if LCTRL is down, so...
+ ...
+ endmacro
+ macro SCROLL_LOCK LSHIFT LCTRL # ... this macro will never execute!
+ ...
+ endmacro
+endblock
+
+
+macroblock
+ macro SCROLL_LOCK LSHIFT LCTRL
+ ...
+ endmacro
+ macro SCROLL_LOCK LSHIFT
+ ...
+ endmacro
+endblock
+
+
diff --git a/docs/configquickref.html b/docs/configquickref.html
new file mode 100644
index 0000000..428a24d
--- /dev/null
+++ b/docs/configquickref.html
@@ -0,0 +1,69 @@
+
+
+
+Config Quick Reference v0.997+
+
+
+
+# This is a comment.
+
+
+force {set1|set2|set3|set2ext}
+
+
+include <file_name>
+
+The blocks following a conditional are only applied if...
+
+ifselect {<select_num> | any} # specified select is active.
+ifset [set1] [set2] [set3] [set2ext] [any] # using one of the specified sets.
+ifkeyboard {<keyboard_id> | any} # keyboard has the specified ID.
+
+(Function keys are defined by remapping one or more keys to pseudo-HID codes FN1 to FN8).
+
+layerblock
+ <fn_key_combo> <layer_num>
+ ...
+endblock
+
+
+remapblock
+ [layer <layer_num>]
+ <from_hid> <to_hid>
+ ...
+endblock
+
+macroblock
+ macro <hid> [[-][{l|r}]shift] [[-][{l|r}]ctrl] [[-][{l|r}]alt] [[-][{l|r}]gui] ...
+ [
+ <command> [<value>]
+ ...
+ ]
+ [onbreak [norestoremeta]
+ <command> [<value>]
+ ...
+ ]
+ endmacro
+ ...
+endblock
+
+
diff --git a/docs/firmware.html b/docs/firmware.html
new file mode 100644
index 0000000..634d53d
--- /dev/null
+++ b/docs/firmware.html
@@ -0,0 +1,57 @@
+
+
+
+Firmware
+
+
+
+
+
+CPUs
+
+
+
+CPU Known breakout board(s)
+ATmega32U4 Teensy 2.0, Adafruit Atmega32u4 Breakout Board
+AT90USB1286 Teensy++ 2.0
+AT90USB646 v1.0+ Teensy++ (no longer available)
+ATmega16U4 v1.0+ ???
Make sure you pick the right .hex file for your dev board!
+ +ATmega32U4 breakout boards are usually the best choice, on a price basis.
+ +AT90USB1286 boards work equally as well, and have more memory (which can be essential if you want to set up a very large number of layers and/or macros), but cost more.
+ +Note: the ATmega16U4 build is very close to 16KB in size, and probably does not leave room for a USB bootloader on the chip.
+So, ATmega16U4 based breakout boards are not recommended for novices!
+The Teensy family have the PJRC bootloader installed and are programmed using PJRC's Teensy Loader, available for all common OS. +
+
+Other breakout boards usually have the Atmel DFU bootloader installed and can be programmed using FLIP.
+FLIP is available for Windows and Linux. For Mac OS-X, see this guide on how use DFU-programmer.
+
+Arduino Leonardo can be programmed using avrdude, or the Arduino IDE. +
+Essential items:
+Optional items, as desired:
+You could, of course, mount the Teensy inside your keyboard and not even need a connector or a box!
+ +See the firmware section for details of supported AVR processors and breakout boards.
+ + +Connector | Breakout board |
---|---|
GND | GND |
Vcc/+5V | VCC |
Data | PD0 |
Clock | PD1 |
Keyboard Reset v1.1+ | PB7 |
See PJRC for Teensy pinouts, or the documentation that came with your chosen breakout board.
+'Keyboard Reset' is only required for certain PC/XT-like keyboards, such as the Leading Edge DC-2014.
+ + +I wired mine to a PS/2 socket, and then use adapters to connect the others.
+ +kbdbabel has masses of connector info. +So much, that it can be hard to find the one you want!
+ +So I've included the most common connectors used with this converter here.
+ +Note that all the connectors are shown looking into the socket.
PC/XT keyboards use a 5 pin, 180 degree, DIN connector. It is the same as the AT connector shown later, except + that pin 3 is defined as a reset signal...
+
+ (from the IBM PC Technical Reference Manual, with correction!)
Terminal keyboards usually have a 5 pin, 270 degree, DIN connector...
+
...or sometimes this 8P5C connector...
+
PC, XT and AT keyboards use the same 5 pin, 180 degree, DIN connector and pinout,
+while PS/2 keyboards use a 6 pin mini-DIN connector...
+
In nearly all cases, these resistors are not needed.
+But, if the keyboard has a very long cable (3m+), I recommend adding two pull-up resistors of 1Kohm - +one between Clock and +5V, the other between Data and +5V. +These can really help to clean up a dirty signal +(see here).
+ + +Optionally, lock LEDs can be wired up. Useful if your keyboard doesn't have them!
+The outputs are active high (each pin puts out +5V when it wants to light the LED).
+A resistor is needed inline with each LED. (The value needed depends on the type of LED,
+1Kohm is a good starting point for modern high-brightness types).
Here's an example circuit for hooking up an LED, taken from
+ ladyada.net:
+
+ They also have a more in-depth tutorial.
The pins used differ between CPUs.
+ +ATMEGA32U4 (Teensy 2.0) and ATMEGA16U4:
+LED | CPU Pin |
---|---|
CapsLock | PF5 |
NumLock | PF6 |
ScrollLock | PF7 |
AT90USB1286 (Teensy++ 2.0) and AT90USB646:
+LED | CPU Pin |
---|---|
CapsLock | PD3 |
NumLock | PD4 |
ScrollLock | PD5 |
Five inputs are provided for auxiliary keys, buttons, or footswitches, which generate codes that can be remapped in your config:
+Auxiliary Key | Code | CPU Pin |
---|---|---|
1 | AUX1 | PB0 |
2 | AUX2 | PB1 |
3 | AUX3 | PB2 |
4 | AUX4 | PB3 |
5 | AUX5 | PB4 |
Inputs cause key presses when grounded, so you can simply connect the switch between the pin and ground:
+ + +Inputs have the internal pull-up enabled, so an external resistor won't be required in most cases. But + it might be necessary to use one, for example with footswitches where the wires are long. Here's how + you would wire one up:
+
+ + +The GND and Vcc pins at the end of the Teensy can be used instead of the marked GND and Vcc, if you prefer. + Or you might choose to wire the connector to one GND and the LEDs using the other.
+ +Of course, not all connections are required! The minimum, and still fairly typical, setup would be to connect + just Ground, +5V, Data and Clock to the connector (or keyboard).
+ +v1.10
+
v1.03
+
v1.02
+
v1.01
+
v1.0 - details
+
v0.997
+
v0.996
+
v0.995
+
v0.994
+
v0.992
+
v0.99
+
O5N@`YD6V4^3nJ zDDL;x;ZCKT*PVWqZ?9jG7NXfsFle)Nf@A1KO3GyycsGPo-}9Vh;jvcivTj`-MFQ_EJxhtgmGlasF;4ZeK57pq-=RWZi=;PSj# zU*GrW@p&p@^>a+5+=`oW8Mw4&$Ccbt%HeTt|5XRfH>f=$pY^+0Wpj& z+}dU=+v%2Zz>h4fqLL$GWZi%l$&C;b7bM#y+i> zs8<#7Zt)jrxAh5{oXm}Y9QQxa?7<(j$$5#8jumdGD+Lq$<7A6uvxWKX zBVO{?)AEnA15h9y2nxC{q1cu;H#dJcbV9vn5A)hA(g;^h2GGdXkk%r&5olpC$9T~w zXLB(|eS#uy!|l(1e=+!BC4;V?+XFX~cP8j1Gp~GMN$gfM#5=Ej5eqIx+8TZn;dK?z zo+yse+5QwM >< z{%l10C;2*n94`{Y0>W6|$mCkpq s=C5)su{8Talf3I<7F+(EzQHbeag+ZYkt0zTRG~nodH=#a(x(4%9oaxwYAc? zxj2?9dC<>tRUwKgtPnH&xZ~k3fb)ICITV=D8cQklx{an&(W%}eM(ZaLfzSaJ%*@ZG zs?+2dqLXH^lmc>x)pr?%<&?iuJET=q)@0nO;*Ug}BX`YjfPL?r3)87@VL#~^87ToF zwkW9U3>;_ct<_t@iVNsqKA`mmXy{`aog sm2-k9GCeSJJ&3+K8{^ZFLq%s8Z2Mj2I-W%XDy9;EG% zd`k^V6HWbXpl=xSMwr~VZ^vxk;clG>t5Q_z&K%k7NKZnfb**7pA!NgmGw zis?W}e&KXu)$D~vTP(xK+S*!ty;mj@2gR1MHUFz^=Sk%>GT66?F%N b%A+tLFmiz8zhkhxT8eT`f>230+v z mIc1gs5^;x0J%cnp;K{Pjgv@TN&G##-)p^KviAgcV#YTulv@D{xe)+nqlxaPyr zSxJc`8bytXxK+hh%YJveH4Ra}zrOdAuXV};g4yZF&bv1xBm}erq-|Bq7xKRhsJR(W zr4QE0zCxPtA0hHwO#sCLzd!CLULwjT3q(UNul|nH*K-h5o>)b1FnQyn_6Q4~f}mlG zzuuYMa >2C-!o{X`?KOf2IJB~sE5MUXP&s| z;E_JtlDZ?ttV~GVaeC2VqobPwm&-YTBU^c+W>!IcCHSXTJ3nG9X%w+Fx179Lv3v7M z w6 zp<$oskfXHVxC=UewoJ+40jYbwRDXV)j>8D6IN#m7z$e}cWdnPIN!Kdds_1BL?WLuT zLKO=1@V0HxY8A9<1J?& 6YPKa$SDt?%~j<8fKbwp+H{(yHZJSZ=$s zYiZfGxoj<)%eHOT7M`o$^9S6=eH`ukxvukk<8=iQ@e`p<{rvgl=CB_>&$HK(dob$V zPk6j~gX}krwajQ9)7pB|da~psuPOBME1{!<^*XQE9GMPm;c4T)PhNLj&YD3|vhdwt zevPZHrMh}Oav8$NwK#2JLV}o>1nzdLa??YwM}lx-LK2HsmEqaS?^`D)xSJ!pgF%ed z7A%djzn?kXKT+kDP&JnfJ5Zd5P#6Y`KA9DkP)rYvMw+r!7b}`&C_MYF!YO`E=mJAI z$lh8SIoPXV=xmJUbDIn ^X4`1LuwtyX9BUkus`qwn@ zob`GdwejMx-x>5oRSZNW4%JO>@Kt&X)N1RaL)ilHoAf`~)IWdzG~~B^ahg?key$D# z3*X{&t?PN){fYY8$j*(Ic9ZSbSZ<1rCWHOSH1}99iX{YZ4moUD3M1O`?E%OcT|(_v zXT9KoRS^;+@oTh@na@*$X|n@Xq=FegzimC-Z{Jog3OBa2zT8PN&-d4TP0cV}yiYTE zdRDEa8pHnE6cp?8Y?1Mrlt^Jo<-F=_1RGpAx7fo> zm3XlSFPFu}bizO1pIEXT;v9l&Z6=1yQ%&DIkv0C97acm#sw~|wzfg71#TZ4n_S(?$ ztJetS)`^Rpgn@Cnp}bY0HzWLG>WBpJ aP74#sy6DzNh(`9&|tZsi=>o~x^? zizRKxEaynTb>glJ1q1{ nHTr^QK~cqfYR7i68O17PE;+^+XP5W{(Ks-RD*4`ivq z*9mnK&dvEJ oYno4B|?fwNZ|SOa7irSTn8t7HAv|Nty60c&ZxH(yW_wH zxBGE FyUcoh8n8Z>;Kvjc{q-qB&W&@S-!GXn z(ZE3!LqJg3)`i%4;cMi$gA%DMD&G#e97or9vORw`cCax6!a=q~ZeMQ?yus-tnKrT$ z&_?iR%}jza;^};2Fgco?K4Or2*51o5!$rmADlxH4=5L{wDKSWC5hl%}L9#*ASsIt{ zjgGC0%wBvyywdJ9WLeL2=#MFdH}2u0sF^q0kK`t0=<*=Wfe{F3XtKAEmMseF#o5dw z=;IA|-4~rl8lXuiQea MJ6Hd`znJg5a9(uGl80#y5pgbMc;K3_NOqA`bE@Ymq;R( zp;&CI&zp}c)?Z)lZ!mbK{Sh$T@6Vp6 8N*;CUA Y^4(k+`}cnv zlh8RrQ<0H5HcIS zh&*+m#;Kg}U4~tk{l3h^S-qUx^1AO+OZ80jnI+3R>VtvkzT$B2C#!}L4a{fFhjKcE zdC{%s*`0|in3mM~RMrl8F;Mm{La!|0KXJ9=DXsd^GaPP{*>PEzW{)TkkCQYbbF5MR z1z3K5rO-|i#of`(&CQ@dfI7JCkNIh#*@@9-utdG|>iW9H Wuws?>Ex@2> z_9Ni_y1QH4J`BRUOsg8IO(mMiU1G$RSAnS-&s$phT_P%C43PvcOa!F1E!k2yo|{F~ zS=;dNh`xtazsGsU{8>E0Z|#`BHT|q>7T41aKZMO6MZD(=a!jVA_DMXqv~VIJWJ3D! z9K9mmyFbcg-O`*T{GoaXo_sIeMG{UrZu f! zejQ7M5=+JY_5^0JFZM&!2PFwXdv8WGP*lb~!!FlSRm;UGq_7tlba=g3Ab;_htLF+( zns%0tsrA}RP{T>gr w>g?qSe@x&a&9qZP?ZO#T+b$}w;dNkL&I zyKPlAW%h1H?KuaVR!<%!7G_~`Dc6_&o}I64wpi^v;$Zv`V?7q%#}V31;$+0Sq@Tjk zC{3k2WyVYm4)uFLV!256DVgr#^k1(~R sQ)+Dx_ aP6aZ^aQK-vi!FoFsG~4%WqS3Vgx!NYFjXN?pXmV&AXZ)hBpMU_{H+YEn75`XimL z=r&8s8s{NN#>|&TS+$tPsaE3t4y6m>cZ$(HpJ=dgR{WfH$}Eeux!tf-#j+Z|_(Z&w z)F>5dbr9nGkQ}8p9-yid)+0gjp5FcW1qsgOP{gEnE;iOe!tpfKX=2y%&~kzdhAddh zYPwL-^<~==&mym`t`3whzt2~!R(*wrKwL|wZ-Oz1;q#BRgHWb(MnqFOrmhyH(nN^- znMolNg%aL(opR+;h1mp$4k^U+^sTGa&A?ixBgfzsk~*tHljv;bb|tK|fiH~IyXY)q zU?2+LbFMe-8c9H1U4u(aGcetD#TZ+CNn0Y@e;DOGB6*=3;(Xt4R#>0dni_WGGWmUG z*vCgp{6iBl-*-7Dam;$v9fqZtr6FN;nG#Js+f#F5yWzo^y>TIn&8}6y$b(R&KTY(+ zSV}4ruyF_zD~?bgudHxc7!8@n-rxj=Qfq;hjXrGlcM*^#rRnD ThPqzvh82hN5Iyde^HWGxkn4@{U>AGRiwb`6Yjwq~V% z69SL~7ym{>AiYh39vBheZe9H^ZL=q6yP~gVgN+k}EX !R-+i#H`|o0gRZb09Ok`#tmGf(MUcchsn~(Ik|OWcRWxA)cXS(Ml!l!++TV&NoxUI*+N~NNT9|{+=K_IMCB_O%9Gf&?cBYJn zNKK9ji(9vLWjZo%qeJ>VTmlY-(9Yt&k!H90V{Rth`pe(6@8&A_p9=}!p^4PxFgH7W zFJ@$fYF0;7?ISeCnnSdbKOYjGJ<4k(Ovm^)&)Bt)ZIHcsu`p0PO%apaEv<~>L$d(A z`||^8lSX@ayWaT88l_}iXgH}jNAW@aS7XdcQGfh&I?nM@^ah;Rb-w|HOB2k%T+GBJ zuW7^T|J<<1%D}!k(}R!-@tO0xPG@5>?P5)XgI`IBcyV#}M4s#Q@lrh_Gx^LWSVL8z z|07Ny|4A4;@tx7Ui;2#^p{OW0oTAC5{b4K2Y>2|{0~^a1o0X&wPVfpKN*{K#? u+C8G27K;AhIU?m{z>IJ1_h2@0qf2r(!qOmdzOE5IXeWq z#WB7}>EWoc>+w%K;&vT!ui+ymR(hXy|C(@UCSu>=)f=;CB +Lu1QzoG596C(o^zwH}t zUPx^>V34lxzL1_l{j=4=+4QgR!5GR*jPr$c&wFAaDN8M^1+g32mp{aOvQoC6b6|92 z3I5yCcXrljtkAn=SY2to2^^dwIE9cGzcbdfMsnW_2#xmuCGm#MrHkC7NGS(%yjc zz}PFXGttFMkDvU7?|{^^Lcg~8Kiw2y4*6DJM4vC@7%N&ST3a&{7^+QO$H&BECI$*k zG-RS{A08@+yle!e$T+9j>b91BWE*8?VNNlj?kOLb84OsF&2Q|!+){W>FsWQn_L1TH zAt*ykVQG=DE4_*76po9#s|t4(I}0;!yxkum;EvTVrsMVt78iNqYs+X!LY*nj==%ar z#znb?u(gI|G;2GfZ b8*T4a7DUjX{zs!?ScnGT9B$c zDw<5mT-l!@#!(whvhOFq$)$Q2d_OYblvY+6vj^58E>FxwprF*x)&t$d?;Tq1poYag zwR|EL7S=|6mCN~>4{;i|Rd@A5U?Ch-CwH{m{#eFxqfL~if!qQ)G#?pKG$dPjj4zA_ zT~R?<8M3$OjwM|>iEIzK=)06de9I|UjG^&SyJ`0GfBTr8&9_a*cdtWZqifCO=?lse z2xH V7QNOifKWySc%k@$*VZ#j&bCq4((iwx_m5 zPW>943 z4W35OD}0zfX8{6iysKiR`Eb}} mT@!j&-HjJkcgKq_m`W&;9;x*KNSs|8vrIGl0o(FU#sTml&ivNc asE>#E`ysSWlh4 z(50oNIa@goVPRpA7{Q0Yj-T+q3M#mi3Dz>E)aJ@=s-5DHc)#qQFG8)F`~HWzmNNR- zVEW6^@iQ9#K_kyPjD@<|7jYcoTt!M$$KjSP`aw^n6>Gc?@3d9)Gt<&s2CKgEE%H^n zGWk3BOJGrjK^j9d`dCqDBgk}H#?&$E@!uazLNlhtWjrs;{KIXAyA^p1b(Q*E7ceO9 z#dPKx??AbgI;Fl~ONz}yF`rgy@5NA@d=bi8=N4Z4WQ5J}z34wdM1-ZU7GUv@T5+6K zd>g^W5e8j8*;Yb`tl13^|4TF80<~gKFb||s`#iGL&M+MBg8N@Of&g34(?y)Fm#WBv zXz-pm8D5utf!9v(tEzQ8Kj#?1$h+ersJ=*NYO41R$>RqUPLvLOouZ&p0)18MV80}P zN_TvA^o#LP7*uC{3E9~>W(Sn@JXg1D+7H*-{vAx_Rl`+5Z}?I00g^$mWoGaZBO{}F zhCU?c_3c*QL$UMG% OJ_NLYjZ@p*)cbZD{4XNMn5sms}K{*J* z;-?#l;KRmBI#Eum;sH^oWV7!VTud>v{0U!`!5wG?HLZnqa7t-iwXU2*=|7K8BhB46 z9ff?PTTv$5{q#{hwu#Io4Kmj8gW%*2|NHNmce@K$-rSf21IR7kHR3=*)$8tLF+TR@ z`Ja$-n~zys#C;ABW4wV7(<}M%jNYpC<^a%Ux*A=;uOV2xhv|HG_1u`uI`VnT*d?KI zzG4p -3b+1EgE6fV;;N7H%8)frWTK)&8>J0r}T zY}msG _UCvzM@ZO%`sGXlZ?Y>>D@M zZ!M`|_<&U$Hix;72-~|+muOG&tTsQx1Ui)?i67kfe)j|-gX0;enm3V#X_eE`U! $Nxybo)>D)ULbTu6ehqu^!q4tTxNY%M*|J!%(xUXyM}F z@c*Gw&r4mUY17TY8dvfDQ9+WG@*ge(T2KOvNLCvSko4~E5t4XIUbY;@g>e4|OfnJZ z#}xY-8($r#Y%CmL_Bu~B&~!LbyGM{91m8u8UoTbK!zFbpaDyAms35JVyaShw;K*Iz z0wEhs4~y8ITeEfadjI 74MP1Nr+mz)3 {A>?Ka^TpTcNn9hI@M@S;cc%yI>sbYrubn zxP;A=@^2`fHZwHK{U4-X;C!O>Z4*OU4-vx-EvHz>UN}Z-kz`*s{QA=OxX?C>RPBD| z;2z01dw!3cD_gP_=Jk<@?N_AB8E_*Fj*-8Yh$uva`)<0&kyWJWgw2!dn2PGCIP)l< ztdP9D&jksuqQgI dvI#Y~k>hrmN&7E5ENp8nd@;VgNv^$dW5sS_$=zX9kQ2GjE@%>&H z+Ldt+#9Z~QJbTO?L>8-@PZj44=G$b(hf^6Ka2$0t8h~bxOn88Q;NKtK0q#DB{V~0U z{}!`-p<7%|_lDq!KK)>LkpEIAN&*yLQS#o#z`R5z?b!7SJ+GE0RAPPzOWET{!r>8{ z#)Io960f86t($cs$3K>nQ|#I>K~NH$A360ou$lAVzarSXB?cu$2R(Jn!|=Kb3m~}d z`Xh$dBM3rrKH5BFc#(RVua9UI0D6hZy*QRG;-@|)_%5w2>J^KDJ+yk2y2Rx*Oa EurQSIk~EjRD6xWa4>+XzK+s;jI*;Vv3SMzOWepB@#P1e&w2eMF zIf*0|*xTFV59LQ1FjA6|>I2E?AQWPag`6tz$F)c#moQ)#alIeyc)j-K82@+cOPi@- zphn-C%rwg+*kQzOO|Zw(mF$jz`N;1Wy#El2&gqQ+ZBc{fkN57-9V%;SX;C0Z$KKu^ zK7Gr}3dw`yQQ#16`u*w)GgL7#@#p`Im(v3uw-UlFBi(}@osUcSm)HzhgN-ds%1LIB z^S}J{Bid?(6AiImjmEL>-mEJMhqW8Tl|X1)sM-v?Ovb$zB#8olwl<(5Og!)I?sAxq zF@avEH0H^T1EeZ@)#{kCI62wDqL-AG|HE8xX~Yj%iw1zw0NJuK{aUl>enoBVlw)q| zlj+)h`d{JHORh5Nw1sQI4Ort^KgAA?Y8SK0zf@lx z*myrrhAqyq@Z0_N+mO XN1l0z4NXr4Bkq zBsh*>s*o{B&Y?@QvSKK7e&mmfjsEBM0)bavv>c8)Ng{x-^41O2uCu*71Cw#SS`u)M zw<=oBas|(URa6=A<*NqxP1`S9HE!B6QS+ZKH&(vtG93UxQ%grj4jNCu`2>Y$W#Y3Y zP@G=ZU!T|WzX?l5EP;678=vG)GF!1sxpwW|()UX0PeQL=>8SHgVD|?h=5MtD>asY@ zUmkYil)RoU2TC={DRhYnZLfxC4S*` ?f`}HEw;yw&Sk$R7E&2P|f@9{pCx&lue^k#2Y z1@ixgOq-+r`dp<=CRb|rlVIsr4<;nFv~Q{!@z-<#tT~APwp?eawKr|)KD_@P%*Cl( z7ED6`ihna-%d2^#17~PrukwAhW)7BbkLPW`|En()TiGE)z-4T7v~T*oPDrjC`HoPR zOcCA>Kp9^XKg^NS^0(NgS1 &E(Bph7q zEdIE9I6i5PPqwbzNpfD~*yr#opk%RY@Cb!<>p=1jO6``!6K!C3Q@cuf^B(v3LccSj zumD~XpUc?_uECFLVFIDed`ui1O-&q|q2ojeJgOYpSp)3r5gl?`S^rqhN4oSmRC{M( z XfM?*VTm!vd=Q&A7Xh8?-b7`|^rpMWDO?|h3{~>j##o~Se zTM?9st4ZHBDcLxhdVjC>=Q~}7p5-zKkqAN_)M32)Aa9Y1bYkyX`} _tCT_2;+Jk}m(q@^fn;db3X7SYbwe-^5&gfqX_pKmCLn>qtz6av`8{ zqA-U|n);J3cTIdWsX5qYJLyu5g|VO*$jg;J;aj+ie}EA?ptH}jAXU~oZ75$Z!b6&D z;Ail-jNS}#KB6-g#sNRA1=UaZ?2fEt@E8lKC?@=r1r(}u%=+#*lac&KbPQ&(F)3md z)KJo$)PP@QK|{<{xC76*4X_N%qi}l7cgNGXA8?tz@Y<}k0wR~o$;=@T#*0c9mYTfS zlDvp4sZ?hDL+B#JT?gCDuB->WOc~)Zsjvb)Mp-KklQl;_ZY%Gmo0T)QV5W-p(O~p! z7YHJxA`|n^Bx-$W|KY~K%y(Kh4Pj8_IYgZ#2#UzE{RscOqDInnhEacAd-v`>ffyjI zLh{6k1wDHabr-w=(DPQD0d%6U;|uD$sP88%xam|)9a-*2^x2vgb|Q>VZ;gcYm%GLf z#PycbG@}0Ca90zJW@u`&4Nd%yV?k+%r77fe45Uc85R$aIQ2v6?oCN5D2A;PG>+bPO zHQ49lpOER_0EYPmjaESqJo&3xMbfh6c5O*)2A|<(vF83^x3#g3vnesE;473Oe-JlA z9Uv@eE3rz+pw7@)36sgYWhkNgbV+(AHjfvDARFIJn0q_%$8}hWFjrZ3wZ+9|y -&g_kmeYZGLvoTT|9zXca7klqAh#>7C|7L|y{W_;{Wa+lVi zd67L|Dwg;9cb9^na%j0(PsknEy-67<_ 3q)p7`{Lp+hBNJ=yg$V=%@a=kp2 z@Uz`u48UVB r%2p %eTADFhfdp7kHKLQf!X+Euf0au76!-guG$ zP6LofT;c|F6T#X29vg^#IeU+KVX96h1?R)50xcrsVjx0u=99iY47?$B{06Mwz=@Q+ z)HyfFC>ExXJvvg{?R4^UGdMlJk7pAHO6Ax+T+FN&zFU-)l=%N0h)cIc@K -Bo55r4+-hiJt1f{=mQPhmn_( zOeCtSJpAnDv>$kA8$G?mG@LcuQyB`9NDzL1CBh8jnVT1o(rqB}?ndC%w6Y@B_JJU# zQ^(scn9v-YE7t|gmg_FRchEnZ$QvbcIHN&ZSYP1szk%YRpW^PJKNQYeug8FCZO)DX zsy~>-;*`iFysWgenzppG0;Oaf+le6Zc*tjM4X1RK^D!8Q$5oPrdV933cPVtD_sh8j zuXv1j`V;`sRW6X0ujH4mzEiY)1o S5 zU)X&&=sK4CoEug9swY+e>!*Hwi$KeQ9moM<2a(us*VB^V2Kz^N*U2tPDlSnm4_jQ>Kt>(YwmP$C5oRT0*}PWD4~2j`>km^kVf zh$v==*N`g--OjvGZ~n3Ad|_{eH2fE@`l+iw5QVU4kx`DQZxO9^w#=b?kvwM~fQ_!e zkkZM`pT%QCa^?Z03#5fL@UgbuhhctIwAgOijzr4520xxxq!ej2uc{t};GdBlCQO&H z6;Cj|1j|&2s>RY>u_=mp2~az)S#9S&ad}Ns=SQ*vEw#0LmCgyZFvIT=-^oKszFRi@ z(f@Ayf~TG1ZuOC ;}eFesvnd#Gke)<+bBnu_X_LB2F%NwB!|)nK-? z!qUu71B3N>qw(nQu%e>ktoVKwY5lsuNT^-X#hEwlr%8^HYB4W$tLVKd2})mvs6$w> zt{OCQol67ASDuD*j9FM%3?_=>3#pkVF+4+HW@A{`k!& -kq8%+6Y+UO;jQx zBJV?@ErSm3=n;y_%TeS|;zXD|_fpKEjK88F6wu4T7Q{A~&dkiAl4=_-?a7ajqH28l z!_4rh&IKwN9y6Ya^5kMtb<_}+iReDURVz31LID3O#|b01o6mpqn5w##KK4`Zd5c#t ztR(m>6)P_h5u{}VjE;_v(^6Ac){k&Lo?EZA@@>E8PqhayJAC2^U&@CgP)ZTBvRQ4O zUERy3(?!Ufc;j{zuy}?DlknNYjC;{hLVQ5YzdBU%)`6zCXWc9Y=|C|`j!rU{r{V4Z zq}7Lap+7E4H&&;hgIgTnydhA9um5l?@fY~@UwSeAGhufFbqEV_jPSSLiR?0P{Qp*k z^KBLJL^3NTv-&phSg$;QQ&rvj78LK$rKva%?`$*PN!o)P%EnOUHhcr*KhDpO%W;)} zp6K}N?dJTo_Nl^ as~@!-#laS-<>R!P$BFs(8Ujhs8z Kx(!VtX0AUV z*l$t^MOk{x@)Gzn52gy_!$LzXUV$nex%AjB{|FRw%Po}Cb^Oq!H+YT{JFAq<#vK<_ zPwB)wgahy{4<@ME*apwl1%6NbCq2%Uj5%cZDLA}+%NH8X8At`fBo@*(+pwn|zjLah zHoPqB$bEM3duqV^67jgABJfKMoL~GF2kmq_z#Hv*0n_ikjXiVF)(@58^&gO9E~fuo z?m;}cN!T^}gy=dAMa$xTva9iPg7J?*5SQ$w>6tS4&`+F95jK@_*)Q~!5@(d9^Y5C8 zuevZ-_C;G?zBb=MbtSm1>H7&U7h%vxkPdI;>LO&Ui4@ilRgi@zqEp((oJz%Z(3> zVQ^!MHOplZXzoR#<_AbpV3fcHQ(j+P%gM>hAXgR>aQ`=2*eE9#x}U`r#dO~bB@^>| z!Xo~oZ$wWJnz1vnh}REO)7{`0N+jweMq7ktF=67Tf;*SfrQ3gSq)&G)*6qNf_3&^{ z^m4t7?UN6jMW#GLWJles0{G3*RIYhae2KlQAbr#LTti4}A5o+9F3;{Q1ih#_)ZR(n9%35OoI%#x=9 z+fQI2F+c}V@EJko13sw}GE?Rm$ds}xhxN0$T3!f3C=dEyfXb^S=HLYEQF^#X;LQy3 zv!su5D=F5w?8%iy&=xmYL_`Euz>YBN`QJCX9r(Pz&Xs8|aj-{kG}?h(!h463v`g1x zUeCq!$8n+7Y#~_$wk;*Tvf1m)vqkhUs)egv8PrGjw-E`jnwpN=_3X_bvod8*1=b%? zebF2b!G}HLMYIun4yq9oY!J*3klV{0)r()|=PpBE-LAZFGhoUnXo)p6m$?^2|L7lm z4-Izxl^d4{wP}f7Mp8KI)zmpIzDX2{R{vRciR?SfW#+D=ee4i=;Xq(d5L zgr`3o `XwXwIOIuZSB~;TO~hKo z81d~b$i+Nv)n^TlMl`rMDnB5ZB1!l}Tf`2mtCwm*D=B1hy6ptVbSfP{EZP^nKDg$$ zc@Es2f`SG?ygWn7pJCLzaR;;UoV6{wJ=Gl>i(d^5&QtkA2f8+`^WSX#otA!&3jgQ& z)!F*!BV!+UU!-c=&hDxjg`FGYX8TTH?vy`Cw-A4sUvYqJj!VUf*UED!J`P%OX?fZ1 zwN41|e4oJjYt2azz}!3C%|3>rSQSC5=xPfXNA4n-2K}jCK# J9aY3Z$vrr;vE Z^(Z;uI>I3z2>yBo(e+H(gBidc1GVJ`gdMrn}+ zlDpe npHGaT_r3>At4o81`)H74$uN4Ym0n@-r_U__5!{YN;+q z)t#3u|F(I3iM(?zvMTe>sing${QdiPb2C8)*YI@C0xBYYSB$c# zyBB?B@?3=SPk;!U;IgPivETXFdA{CUYb~kXH$xxiVa%q7fM3h0(i`gpr+T(Gnns99 ztkddx2|n%`2gw;E94ahTc&Bi$3f)Fj0?hKQT#!3A9*B&Pq)-yMzBv=}p!t++D9eJ# zA7x|LLD6b51HTN_U 1U5Jm03U&2`?YH_#e z>RzamHH(NFcvqzTR@h7?c+6`a14xec*+YajtvSczG1&Qab&fze*fD{$ez;2NC_{T! zg2!i1^_yhHmyAC?KReq;%k} vD{4k7nPl zT((sV{=#SF=l)LAhp?k@Zd*V%o8l+ofyIIvyuJ5+y XUo(+YD;Ui=4f6Vzq&3yorQzlvwj`AigW^I+mBKR`z(a^TuOGJ zv$-o2*)<_`gmbFEG2PR|gw66f)AGyLFBalG1IaAd=X;~KeO$1G^c37EaeZ3|I_gGa z>wr$r$xp*53R#p%A4iLeiwi9(8nuJFlg52~bk-e85L(>cPU6tCp_lMJ&XSkHTT2`! z9d$#zb-^MLN;AY3XWCFz6?4y=6UkA0g(3IFK +m1G2ux87d+IVdQY9k=UZX|w@$J&tlaH`M^Hd!3zZ5;Q<{ z%?eA0tzF5WQ-)$(k*I{qIq6TKMKPYt=I6KuW+jAFlZ6i#e`pkvvvUwKQA}+O(GG7x zV|;#g_H^YprorY1atr&7PDnXp-;J22%E*2@1eEZPtH4SCY(}V92xdQtxNs~IA5~(~ zZ#TI19%c5EQn(+qYy5xc`xvbMTe~N5-GI!F1A(`*q9GQEq&HaETW|O@fl<@U|Dly} z>+JJ-QJyL}%;$08el-RL^ z8)ha%6@&@CzCbHoWmSE-I@K9X9IyR+g`VV;oHa& D@D@6zA?oMxuE^b$E$fw4Yj$`1^lSKu+T6&%Z>L%nnY2Flriw{ z&T&P4?`9@7Dn0DKj*dp%G;m7rlys?;ZE){L!tE2Q(3Dif+?)*Zd&g6z7mBEeN}beT zlaN0h>ip@T411sw#SG6z<>Uj`FrC|MG&A<_U#K z9L$m*Wo3h3 u +i9gIrB+K#m5D zhclR>yAU7M^by7x1D=vGUR_O#>WLq+W2XeWF(sV#wCp6XzsFcQl8Ny{n1G4qPM5Dm zO?|m; @-1k)!LLMSPTl8i$PcoePV)Jwr4IM-)@e9cBUOs5KQv=)=(YD1Llq@2o z9zIgGQ~_$zd6S8WiCND(BHpk2zxG$JOb(k=GX5 3KoXMoZQX;A C%V~C%35GoxXwJIIZxW*?*B<1us%_L zlUxZCZnwF&P4g4P_*SxR^Ut|(-Q!o!#d6Nr#z!N(Tp0%t@|lu&jih`QK8w2|5{ii= z>~TKi*D+|(mdPmKU6lQ3S97zKhH*?c+mpbJqdW81XQsKj6x-dJ{;}QAY*$+DsuMtZ zTC1wi(M-XJsm6oXoE|(vUxIeL4?Z1nT~h1+{ ZR6L2WoJOx~RVoC&vMsgsn%;Xf zmv+OhpKne}VE(b~@&_8lRLR|S&b@=PvqBVP7@sii=>L}LLjIVZ;VppBe@h0-l9}Jg zX71loaL8iVk?4~t@SN4Mn~*^{ZN#>#dqwJA9Ie}reDJ<^@eblU0ItnU7k+YmH73gd zcwxe8W@poDmvH?daL>L^&~;jor|mdSUOH)I<-@Nfd!H=oieRyqVa;}Xg%Vu3k+z`s zb~$kuf#wGuMB& !&HZ(e}vGm(g>H0D)*(E^5f6zVtXC5Iu}Z_Pxa&eE8l0;}cD zyNZRqOMVHtHC0s63@c=H{eU1B&id^(op^WWtZ>_jKOtxG5k5dXxq5kNiH`E!Uq)I1 z4-n4~T3sdnoXzF#?tXy_x8d3`9yJ!5&=+s^9+4fJyc$BR!56wlT uFilx7G*A2BBr4yA7 z0WB`qcS_`WS_JI*CqL+M^&Dfk{SA9E!T}6DkMTX`UQuZ&bRh>7Iouqhq>9`+6kn`) z(A~zaZHq{Q&3Z*gx4NxLGk^1CeWj-&=^aoJh^G}tvqWA2)nfW3IF8Od-R|Aq3K$-Y z^rs6NEvyv;zP38hBd5qx$Vp_WYU9?V*22 z_Ko;BnrGw43ZvOoZ`()SZWC`8fnyuht6Teho_W~j=)3QM2diGiy5DWv&9ZBtCGd$@ z_mSaqjl);|$zC4&=8kO?PqvZPb8yD;J_CF(4Hi_DeJ$m4clO(fHMzSnh}MY(S4OV6 zT$kO5AHan^9;jHasfO-f{$P@#v*j?1P@N(oFxL=Of6By2Pg#Iau(r5Z?YzoQM|^Mv z9A~kw&@mgt=w(#e+6(<8!|!30A(*?k69<$f!f-xx8@V2VkOYka7}ZTw>@a5UdSdie zSA)_BT+SD3JqIGoZETin+>jhG2@HN;Ma*lqS6glup4xP@nY(y8Y;QKq?X6W*bg!&D zS=50?WPnEJ xxl#l=d z2|3qVkGR;_ViE5VaQIt|`a*FHT)$5B%1&Bf-Oo-<)qvLJoAI~)@8zDAPbq`lbm;~R zRtcfM#5V=QkRC*lY0h3VWU_0UsEalN5v4S8L!VUCLY*&Kr{`jsjsFv%sdjPq{j~56 z>Q7O zh31uA`mzQ{v6^4(VEg8fRalkZ%4lPi(%;XPM$SW9kM+8-I?TsO4vdRrA%x2{-^Bo( ze_xqlf x7VGcc0P5mYesVwxN56OL($iKyL+rD;vY>WE#IovB%58sy{Rm!Xj?)&N--_KnnIp+Uc%~Kcf@=HZAC5uDgBUt&cf%PMw^S@wj;~Njw zVtszRj6)uWVXF>1o-<(*o-po7^OJGcY=8NQpa1j+BNNz^9nWvjgQoDCnb+tz15_uL zL?O1+L F7 zt8_iBJ4GnzTj%fBR75sN^-Gov3;6+BOt&E}4%5x!-||9d>D2VJ1c9Qac^-k6#p_0w zpK@@|_ivL*b{f|HvW`%CDH$0NnTCFJ7a^_@%qU-KKv8hnx&;LtG1=_Z_c@K*rlhjc zhS!k}4>5v}0|zcXJ~5nxBTzde{*b5k8uo9M;;*U9j7ZoVDr;=!ShHf6xJ~+P1SJuf zG?I)^#_9;p;}GL072YXDGw*JVIMCxh>}K?nm%bFCW3{^LZ2CR|7tpJrrlx$0AO4@7 z9&x|Qb*AMfN1-U>-J=QhgKr%Mo7!I6gzG;1kKk#K@@vxzvJki3_+davVT*Y_?szF( za{$^E+OuQlBM4k5?Q=tG{ z1ALe{Q|h7Nl+g3Lui2MgTocAoLS}=5EA0l8)PEzU@QUhvtv~dni-tQ$&@)K>I<^}; zfPStC^s?=soVGbYL;2W$Dfw|>9!k!Gommcg`CJr*y$ZUIoLK$St;3TKd0ZaOCFK?J z^CTxHi;#m6qaNJy&o2s9?auAb-<<5M?cDHZM6#jgN?m<{L@OOd(q_HNUlw|42g)|e z*S#wQF)uOQ-QBUV@3*FZ8g+k-*M|Nfx<*t)OGd~vQ%uH6Fko_=1hh{kO_=x{T%3gX z_ypXfgneu*|JvFV7Kr4ynlddxlCXi))YJ)kZEbwE1`Pfj{4^a* LxRuYRrt(oEkX|nTPUG3g@ zWmyRkkJrkI+x55aK|#>Mdq@P@Dm}6KxO-!J>UXFyO{f01bpL|JUJ;>?-SC1;R4hdUy%b!*iTy- z5Ymf{Hl$y1 ZtVs)imAZVfLo9H{}=!vFrPJ3fg-MA$t#z0H`Vo48>nZW2H zz?Vz{QV%&CIR!E+oE#Qfmqx1~E(?$r18r}9C#^JZn(t z6!v)8{e4TgyE-$cI&~Ir;|VVI-L2?#vpf~)0UmjQ;N08+8qNTWGDPgVn(UinRI)As zi9XevSln#5<83c&ytQvkk*jbmz9SpWuUh5S5+d)D4!#rP2j3U0#~dc* s_epGL>Gzp<941*Wb}Ik*t;KD0g}tgps}OHFo^ zd*-eE$rYD9LDJcDDx=M^2)uUmD;OmgzZ58^AVeE5^`^!z6;-;#g7Q{PV*N+6sCVDa z1-Atsc8bCu%|v$lgzRbc?d{el2W;9o%GR8XRYl5LdOyW-lM22N8g+GYyX9r;dV^=K zp21U7V&4IfZl%Rs$(qXL=8uXGm#{V`Z!&gCc{wqMbD3c}(nA_5aoxy(33j|zwZ8Sj zr;1AFISZbM&dBsH7GGMX)QqZ7*<$i+j?9b8nGuDr96#60Evyuze}YdnoN?Su1t ?92pnRa!=3f5}&IiMF&4jMU>$H-*6aj`ckzha*&u9tZ=BOdHsd%mZ zGQ#G^nM2k{6aUgcX<*OaRI9%UV4i`jC4t=p*Q3aDFRid$nO*Vf>M8+AjH)pRrn&N2 zpshu <5yj=mIZ< z(r3^?xe>`9p%?W8=5}aw1|riajxOc&-L`xHg~~S+U)YFukFixg>+j4jeeY+d&~GIb z6@iFkuc*~cpAQYoIGmnEP$X9fcY-k*FiSoln^JMurT7#3P-*|H5cXkVU2c@aM+zpp zM9KJc&5f^8g&Fpv=z5b<#=l!TKuXGoB*zdvB9AuyNi4t40)^1Z%1UeZWfRTY)#3T? zRZR`OYN7OXE?;+9?1v4QeUJdNruwX*540g}Mmz {l`PVl?Rb zSuQRILI_0>LJVZmL!?eY-F;f0{PX~y>s$OCzGbdU`tGOp*)^gsxs}7Tx{-l25TZ?? zs8y$$g$gP50K25BF`4*5_XQ~0$DDEGh#L*eQ3|W?(#5mr5#U)(vtwo!zSA|q)LwjO zT*-x`U`=UJHZb@h{kC%B=l=uise6=Joq(`*t7~ z@f6|#0xO~D=w>1M@;6}yB)HK2avSx+Ba3&~v7WQ!OAYn^y+ko8!9QS&x!&a*l>HG& z${B{h5z;BYbHJ)vlR1*xr7%^>R Lj{JonQRwO}~SzRW`A0;b-R#p^V=t-AlYcJsqZA zH5{RDNK)p#^cXhxAO5WVq-TAd;P|u4A1D~%Ac5c3xZa#wUc{P5(>fzAQ*Kar9)UQ7 z1=uilGqj%?9%RrdU_MT3;QOW1-;1Lr?31r5oI>MEt)zxpJj9)(syzK8h-CPCXoeKj zRQ@7}pOZFCxn~k9$a>X-FL;;cIwa=B#Z|m(z6y-Dalb~1m*$>G- ITGrRo)(GU2;j4mjav76g8Z?Eg;dG@SWo?>cf+;6~MQ3V8WA+Ol$IFk%TG3ZT9q$ zTu92vMPaB=mCsC1iy@GB!j5kOf9meu-qF}usB)wkJVgO?K{t4j6QIF0mRy8eTNr%- zY9$ffpf7rzrR^1Z)75x*xve*A;r-}s2|Zk*Ja67+kwi@|Z59GSaEVn(fhqnJTQ&1) zi}Nk)tLKVGg?H8j_yez6xtV#Y3)Rk=vcpLPsg}H1DdOiM#s^G>N9jE((46J@Qkp(a zy0+Ol>imt537@>&&ZXp?Q4J~A`6Gg05dl3PguCJ# y*ZmH$q?Q<-61or$rVliKVWvB^u7{KKvV`g2wC$prJOq0;Y>xDv zteBPqWln&Tbl+Y8FtgviE+}#l9NDQT%PXXW7-HQAWA(i1N%-;YrFh?<)t<4RFVxli z3Bhvx7 h(vrh12%Ky6pOQ~OJXXpl%e>$iG*>R2poQ4(J!G?deK{+-yO zQUdhBSHaDcC9GIHi0_*>KEY#nX>vD-7F6}t(EB%fe@}5&N4Vn!6AC`x3|cX_N~rzL zQWoNZ@|XJ25z{1_UdvK*3a=cj+1yRkP~Yt1;M_mqp9EW5-(bbunxEeaV1F8BwC=mO z4r}boCCh!l=V1$Y{Ym)I) Xe`Aas0`;A`efmVkWxhU z1!GW+-?LJ7c64(6jE-DcLlVUvMCyU2SKMX|vIh}xJ$O2X;$zC+TOXL2;L*+3b#--- znu;r_4|X#|c`{{N$m~{|>~J32ZSKj}9Nxbl9FW49@xX#I&|mN^_R=wW23NhHR(H!3 z24apx7)*K@b}fDV28+4yk6$klyzdTVK0YL!r#Vx{x|v}NweLOJ79%V82ok2*Lxk$& z$s94oX6!`ciDKF%)kl NX2)0x@KNCF>?_>rmc z=7BpYT%ngUX u=+2FW2T2H0y -RY!S?(mA`G?DQo}YiKQ~=2cMn3TD~??0>w<)td^2$=MA%-_ z08AMdpKB##%O{*66)3PoJ(Z_TGRn>6f5m~oOQt6Zr4)#le*tBy85oX>5;*u1pJ|#H ziWGw62k=$l;o-pGLWUjNbZP5+4))5-%q$+%i4gVTYq668rSc3XgI04Degj>HItarK zdKlq0{?+wWOIPy|MfXEk$ZJ&mwO=85@$BRmEzi(19O6;dx)?E|LZ^Bin{`{;)d!Xu zT)14{Fy!j@7^Ld<;qr^ek5w_+EYz^f8d17Q-}36UyO&Inkirp(S%Wl>#348gUfy2I zg8SrHG9hgXY2k2S_Ub4=zH6KF@PuQ}9}?puk+en@*Td!w8iN}u&f jJR;gi$R&Bibh~#jmG>6g}?zQJ_xz)T~gZ9QkSo zpjOC2QCeDB7Wj!XpDAJHF}!3EGLlP >e; zCP576P5+o(!rUF{zlAvZ=vfvr1|| &;lXB3CmHpDQQcSVrz(eHZ46S@H!yg)p{GJnt*i0u zq7 2~7)Z+=TZ@J)?q+@{`&IuZ!Nl?zab7I_}g0g~0`rJIGj-Fe$L}ndzTR4Aqk` zV;$v8Q?9Pu%|ovh^zj%qC<}f*-~9!hNB0iRKF8Dkx^Sf$6AU<_6)6+z}OF zQCN8NtgER}MMw*6I9MlbE{grR^F`#zTTMIk#l1WY85$A8rqWqNcWpn(jZPQ&_0fp) zdLyxDc=KmU;ZNUPkJ&7#{hHwMB$t|+<>Sq%9f!TmU!{;`vZn|YRS*h%R9bkxYwdpK z_; U6o z5VSmKb>xSL`5&8wP;_KuWB@icn5Y^SjAVjxIW`w6Col>!CHtF9x*c>B6i}t}fjKSX zXzhAR#P3o7he2g*GDhA8w}+_z2pAY79g6*{HBly|8ayoXAp-Adr};Pjy+r1eX8*nQ z`}wWCy~g6s>kW}Wug@@+_;a7)YSQS!5u?tV2~0 I6`kktwy;k=ZC;d=A; z=yTGBXLV0a}?ak+I?Z>06nnk2;lvPE#g9< zvU~;COb+KOdC8X#cUu7V)J%C2JLTR)R5@(qz#STaQdK_+}+ z_pIq_2}A@Hl5>LMBn1o`^u)SLqmS_vvW>_d*jkww+WDT^Qhy3;CD8CLnXjXovx-k& z%~^5}Lk_>HHa*A+*Sq}dN?dLios*d Mi3&Tj2O62+=ktrho6PiBj(bOC);|w^=yf-jKGN_X=LJZ+C;l@6TB)h`eHEVHtG{ z=^kKKFl1U9`mwUMCJa&r%>YBu2a0&w2HTMG7+p({fmB*Zm#~N_SZ4Yii}8E9w{JPH zCnuwjBn&zxfm(b^2PkR3OS?Cuvl=(}+xTnr|1HcK<<5%GI6oI++%MUZqd|~H3avV{ zti>+Jdya}n0En^z^UTfu%qm+8>(L^#pM#f@$vnkqmz%E?jtF?s8jkzmcvbcIg$KJl zb6}Cl4Su>)h47vm<67%-gQ0nSw`Q2Rr-mX~0wE(-bE9AcNPWE4a14Rgt45vs$(Cq{ zvsL6&^WBjqYehvYYCyoVJ?q%wNDsayAGC>;7><+9^q=PKqpHxz*e6{fVa(qhTf2EV zkxt>#A;N~wS@GesB0ITeWzKQgW?Ut;81BDD8+f+50ssba=94d_VWGIa3FdoJ*i{br zH9Nm}3Vt)o%Y5PhYJJTNmD#Z*4FSW!kHHla2f7*=>=4CsifHxvGl)yMqbIBC2h;Dh zi97UMTOpT;3t`@vYgI|2q4=M(_F^}KH8#SKQz -MBo41LcWtnH zJLz}u8+D`0Qj%m^S=lc}f!hXbtS&O@E$Z0m93g@Iu6;_By2M-2(?Zi{(B0qrCKc#0 z)OV*TQ+i_O>C-NO2#ud?7`Ai`+$g++-Wh+m9DJa=ySr&>Zh=XGLas6X)&UMVYi({8 z!?7rYAFl5nL+K(W)fxM&115hS(+Y9DQ8!c0siuGJM(}%wJ&lh5LZ$!c8CruO=q4=0 z_ueCicPCkG<9qT>@=gyOgMzXk@~NK;uYoY7i;2GHAy050(TCk#tU&yCpCzO=8LJ13 zM8i{@5thPciOWM*HzklrYOKmdJX7T-b7jln;4SXhIAl^I5F4H?n*t4nDD%T&vpR5p zofuQ0dDdZA6F<6dm$z_PsFvzWO3xE2d-bDb6P*drzrhTfo2|+Hd+;FcdB~{GuAgLZ zl%mf-7m7v2w3p1!mBD_jZf^dXwu?*S@?5O9uICUw`%TRS|Lk%4VX!L{IlBI*;T>x6 zA X zOKOi?$d_U>so0i^_@>>_q){dPa>cPWu8||jD9zal$#ge5Y#bMq;m8pU(vC-*rYs+K z;*Vu5?=&O{o?u2-J_60UDgt^yt?mcge_^$k``Q*So4)#baRZA6TNjsMl#KZAoC0gW z(lb3aU?F|%1d >G#IPg6QQ1-pAGNSGSnNvGMd(hAtVpQBnhr3)Drpk)C@gmFw2X0LQRU7OB nzhdpqqw)p}+4q5oKB|o(4;n|s!g9A=+?)&xtH7rh~ za>+8-ELCVSC@jYWDq-v>V2oY|845m^L$PErcRzi0(4$M> yauWAKi0cRI+p+cBwpqpci8C;6Mod1uT(p(oknb7wQ^toZ{R&AP^CE!PFftKHmVG zhFFBiail1D2VZ}aSlPYP6N|}j6y8fW+E+WX{HSD8ZM-+ja#XL~G-})ZR$bUS0*vqu zw}3cH3+nYd)I$T4w^(Gc<5r}n>_0v xJkv*E=xVu zX!yu~-a%B<)YIS7F@^Yw(_{A+n9N0yH&EA0hEtysiS{$8uqH=^^}SXXaT1`hCdhdX zOI3MZ3_bEdiH-q+LaQ*wE6K*@l48PWGO6M!&O|$hu|RCI8mbO;lq^o8islwc&hMVT z;NS;FD6tzb`R@of76RbvEM}G|sDoL8 L>e&uNW~ gqw&ksfc><3wS5ga4S=KQf)%+~GM-R*kZwb(kxoI4NSbPZeX~Q>jTz-=?Ac zGsdmjXI#CR$8T$!xudoTA9$a;l*=9k0x)UaC-Eh(=2izZT(HXstd87QWeSMtd5IH( zm>S l`vmbz+YEW<-vJ3ZgG<1`9#{JTMqctyquA$Hx&wE2vR z0Fg^BEv0WVG&b(Cx!B+;lFsI)U@(1z={4m~BD+x-dd=`rSNlL?(9lau2ajqyR2#Fe zjuh+3E{ZnyaeoLMENH>52oL!5P9QSod1V8no2fwH@iLhKe|$|%4V?+L79PDauKT%a zT;7W>LE0Z^xrgG(R@c^IcNk(xey*;b-2YBW3kw+Ir8W~H;_>w~Q&U3`s`+vD@A(?G zu{+`IJ$6-d*!YbFQAJf?xKun@4A!o^6~XFg#`=2iU^!~_U^|j<%WlE;X3DRFazTlf z*uP#Q$L&&s;g;;&R%)XuEK{j(l|$#oB-z9%9lX|GkAm;ht6s<*@VkOB;r`FMdJM%Z z4AX|i?EsF-V-Wr4HS>&JOe$PzL!QFm_#UG0$njsxDZC;7q<&QJi@^!-PeVvwDX}l? zl(G^`IL-vyA;eVrzTx=!oE$Ty$M1K1`s#Mb4~jp}@2-7A_aZ{{hRPJ4G7u0KhDuA- zXr#HtX;}E@f_qi@8CWne_ii9xk*}E^cCeM4sCAxj7e`0_78D>)ho?3`Ic-M`#Bg-; z+W#mAtfc{SF7X78BbAYm5U1@a *y)2k3i){+9Uw1Jgdko7Ke z0E#r9*RduPE-9z~qi0iK<8=Mnn&A_CK9RPDk(L?}k~JPa?%KOmwtt=V@2|T5PMs?g z*SD2a3#V;1;gpL@;5b5ugu2&=E$RM=OpG+Z`F=233`HCM9p**>I-r=}>ZdNuyld(X z%?Xh^UNdW<25TncAbO=cV}A&1CXO@qGHVd&(fyXuz2Y6I;KeHebVwTT00ISeDqd{U zeKzy1BxY>VZ2J5@nwH_PYEUZVAG3;QhMAKVtxA0%Y8$n?k%klE^;BEk=@^CZziFlA z#KM{6(j{$fT$J0JJI{CTa9D(YLF xTHm2q?O*c6=i* bmK95a z73PYDE}DVjRHubZqGhZ+P^>B&87-9PmOjB?h_S{8tJ<^{@70uU{7|zIex~y8cH?}b zmTAr=qM^~B> ?!<=Z$I>Zx@5Y=LE|3D>gK;%Z!f)X0Xa z0D?LRsdib-(pZxmR732T!KZ-k2`hX^{>upZ*Ofoksh6Ds2`UWg%jw29KLGp!cx>A* z)lEPL2=L}wU;?eGu7<;3Zt#kU%#fpPL}>(WQ&(p-HLPFq&b5peI+}*-bDqD3-~Rr- z6#P9duZwZv10)P@JVUb|d!~+?d)`K-u)?)R^arNTFNZX 9_SjxUyMTnk^v*Sbdq z+fwO-&X5W8Qs?x(##B-2!B8X2
P)4%9f3ua?aR5Wj57~)bG3gI@_;_}>x+ulkbi9UcFoAp}~ zr|U9}C!Idf^FVW8kP6nBZb>wJoQ{H`OIefIbDTl@%g4tD(oL{TfKQ{wsI#THWN))T z(y7J?^mPmj+|H+MNexNW)zwMcN%a;(Y3b=j*Fj?W?d?Pl^w^VtNHa1Ozq=>p5RQ(D zn)aybJ!06so%#9cYVi+!fM*}w8`{-Qh*)G3yc|o!XT-*gw=o85{OcO@pn!ty+#> zRb*1gvHgj5vyE`M{d^kYl9^j0oZ*Cvrh*r@rKh$kukMPhQ_xMED1a==PLDGjS?Hai z>=+%GmeVev5>Jr@z9Sb)^%kQ^bY;PxVMAiN!52kF1pAW*_{4$T{cXH+Q)}xBt{bS# zh|5pMj|kS3g~>TsScK3Q`&>5XbxZ)CgL&}z8<3#`4n#78ifGpYpUXz<&+n>jcOowj zJOY*(O2MJJv?GDx&_I?Y71rkgOBbRf1xWRX610J0rMH48L9$$$<`^&61g>YU)1L~< zdb8V>%$X#t&wsjM-}zgwuarFpcnnPll>T&KNDlUbMAPopy&v0#))*3ZEqs9L!4h1; zy?v%F@*}Qb cl%|LIKa6nhil7>ZQUd*HR1jFE2iXn+;JG V7a;RZaIFn8M_xIzj5!=`NvD&<>$_z7t`7771k@0f@ z^Wjd%RT~e)blH=rRO=EdcfHAE76sVjdg|=xEptx~?AT8fS*p+d8n_aj)|13fWbz0y zKmwmX3J}ZjuvxU&QT~7K)JDJEM>?)|+)fur0x8?zk#3r6d;tkC^oS>iha;d23X1ls zL$UcZR)Q~-dvKxbJmX~8IH7K-eRCv4L)!66Y2oVvIO9}<)8yCA?d)(PY~nf`J*erP zq}(xxle9wFPcyS-Z-g-)<|ZRPx92ig%&Z-5ZRA-p6DgL2cHt8-!mMwaj7JH-mVygM zquXNc8cfkCjnq6c!sa8-lh0OU >+lvw1Nj7O5nm)7?W>k>@QF)|N8Yx z)?oFE%Ren)tk0rOfFJI~m@}Ci^;iRZR;SBqI^E~0Dhj_RqPzcTo6Y}%ILI*L@dTTh z{p0kPmT5G)Ptt20vR#{$)YIOB6uG6>`_X*K>Y<_YUZrwaqpq?pO*9yt%uiHYiZb3< z9^>D;$w2WW8erdn)I|Cxg%4?uZbWM@7D$+}Yx|kSZnuoliHcW^YBHU}_*_J*N`>qQ zwYIfAyo`#7K6cc)@LprzhrxOj$8K`G?d7|ojLlbYEFfV~F~)C*Uy)i*JFDIML6KQN zBPq#Uqqs|+pE5D#$#f(+Dzm>yi!o%k)24?c{H<4U?`I9w>&$=1xY`$fS2F#T_W5@> zQ5z6uMhkHOew@4GVhB!s;-1cYScr&0tur4R6N#QRwv|+$R-RzJOes!cQm`(_Pi@`U zz>gWMPm^|lqSM_PHs><8fMtZ1E)e_(T0`A8${Czy3ln;m5SZy9e7Yb-F-*z~SN^K} zy1K$9?koy)t1wAXo-cKjEQC*^F6ZS{Kbswwx#yJ6*IIu6`YU4a#%W`9!A?g71TNwm z`~MxlvZ%?kbWvy|i(X1BPn50yW)R2ro#fVGV#B%9(bIi<`KxEj<+01;H Xqdt9FV(&*w@9(^GA-Um{dl*3uDkwlcOf&(o6`$tEjoK9t24l z)v1UyGcF-D^t%#8UVI`@SMFvHNUxGqyI3%KbR+uB%)_bV rT0Vg-C*?DeNT*ylz@9N4!n-8iB7?~q (b-Dvjlz|Vf>AH?#7QFq1~WL5)lB||KR1) z7idH*)Iz1N_k@_ow2!gSVAXl9X_=cKO+ZIY=}Dr(1N&qqJR?Di?e Go z3mE66ZnYx$Oc?_NUz&*!$Jb`Z95f_v=kJs2>A3M^Xq$-((c;a+N;(7s8N->F`%I~m zGb< O{l*pyX|{PMMtgA$PmFxkZe0>s!63%*E)*wfm 2flP4@Ioqm(7 %e)pRR4O)mGuTofU8SZRi zG& ~C5GRO7ooWEQS6U&4M z2DlW~%G+2)19b8dNp&h}1I+HmQ%td;%w$-uTcP|;lYiw4=qm$1O|1(A*fxN-0Dydb zIJKbY?-7r9*$?#iPWSo{f{@vc6!!d|ASF6qyMWkjiO43W;Nu!_9G K z3rrB6guZ_O)jo n79m5h$=9w#;17h?rk?9}l}sPKh?_apjXDU`#IFkTe)rePT3(v)0@hVu$wI~s>pX*qQypkH zQ5n1!HFf+bJ1KPqkEj3M()CO8=*@=x$qx*33oNm {jyiMT##mQ1QUIqe1O;_RY~pM>J0r7%8t0Ve56GY2`b|Ku zlo8oZHoVDE>LADWIrp gQ&%(buAc{fPX&L@+b#;6l#EJn4)_Qb^sOxV zil!K=33H9qaYi_r)WhfJQf2jn=~}- r6IZ@F5V MT?u W #2v zB_F5!{n{ze{l}tiP4?@E(Gr$`Tr))ePx??<2pB!{c8qx-Ch5b|+JUIe2z3Y4Vkp83 z$3Eu)c+C-9&KiOD6x=mFY~y^+??Zv2K7>MN+Uo?)M+`DQAj5lI>G2lBai@d7y1d*L zaNWeL!Io4qowM>I_>G}frit0_rzKx$X=`tfVyn)n2@$Fr;uZmF6534!IZ+m1nN|J5 zL%>{w7rfjz0fo8v3#Zn*G?aTTo3iL#PFVs$DR0Xol0H`E=M?p*LH1;9p9xPnQmqd7 zgNIPmV7Ihru8(S#LwgbbE}Hj;hH}<&LQ}`?Y?xlfbA}_KqVUR$sUC2%>SgxO@?p)Z zuVAK9wlFGaFCnSRseR(Gsu;+L%jPq?e829sXeRH-|3P;t1O7gXk(H6hAFc)2CM;0u zB_8tk6TK&dKSx7bn-mF7vcT1tmm!C&V9!k)_?O)he|~RqS@AsJaQSmm`fX3=X?)qn zsOSAyI-Zq4`?mECQ=a0T_psB)kzeq!k6w=bJp1RjIblitWlIN!E~#-mFw4^1Q+|G@ zryndXl&`n4b#-j)H_FsYXyR1!at)kq_Vg5ou >Dd5SNdghxo5unGB+#24ApwIdjzY@Bk&)8T%34oIGcr5w#^vXF%)uto9 zbJGL2x3_Rg+#k3)URPcz4&Q%c&!bJ*-b*(jPYI3@1x3SC1uFXxVGH@gYwHO@Mp;LV zmiyii#GvRppe$!xiH(8LFG&1-eE@5Ni;rLEPxcPohs$P)^cb5jf4v~YjnGp#o))bh zG%-*`UEkmzdL|2D!!1uin5Mmb-%oI{0lsw*U{cuFh-2yuY=u7#f`ei5=>(12*Pi}n z^4Qpu!0PuKCEOqMQ~c$m#0uc^$##23=zUf9;ZTyI13c(6a-`ud6})u07(Su>NPGFP zV78zyG9TLM(GUU`xbg9EbRtbSvG6;tyoVZg L!T&2baZ5<2mA#w`bEsE zZGA3B0PGm5Y$PH4^BO3`Nu|)gK*1D#Up5J${fELEJlLU pkeF!3el z6nA&GKGPhMC|);_^e-zZRp}u>Q SK;BW!^gd|g?1vWTZEX8YSZmfGm3H~RbSn#$ndY1Xp_O<$JQ(=Q3CR%7?aC`gj zS)?=6a2SE*0?TTf!Nw{R-@nTT3y$aInI8L}&c~{1qu w+rP@r(!HW{_`yn(V{tPSx4|y7G5%~Ol;z_1Vbt)ig{ZZ$ {$+i}u;Gf1qN^VC zcORnNf~Si))Mv87`%>lZH#wMSpHmmYLXgyU(09XWBXWlDeMwO8R&pN#Nk~Y7f{=p6 zI)O)OD=bhwf_c#U=ZId;_J$lg$-CBqqaZ0LjiwqT!b4zI^aI39X!u`!?XVncEp#1w zwYBW!Hk;UIVnN{nz^RzVVWMn>dlT20oOh_ajzu+q93uo@x(rZ1GjKCezB!}H<-?e9 zCpO~Rko7l@l|S7UB9^zy@GyBH;X!`1xM5p;-=KcCtEF_V@(*Imd6ouP?moa)uQgbW zt8PHQbdj*pify~8I!#}=<%SucBT>BQ8lx*ROr-vDzEPB4G8;3YloZRq`;fG4%v~HM zFEr+BP9o?qZ!KEYDpF+&IeKrhe7*Xm_4R8l43a4@&Goo2gas!)s)r5?;du89qkmLo z``3Pk<8L0Wf=gq~t^J9YUv17q&JueBg NLMAIR|A3T(_w;frHJA=Cl;Bx-937Jvz$;; zavsgt2@(xzI_qt0GzSWwNk7wk^=uWoo=}49t)|>Cj_2V`Rl-fUpLkAzgUXoxvOimE z5cJp;Xt<7m%T`spAz!Sn;U}<0=xNtIUJ&RnpHoL&gc`miwxe=<4Qyq@j(P#A#Nva6 z3=qTIzP!A$e?D1*D8c8_awvA-20$Qy=k0CxdA*L19UYAVRf z1dOlPpN?wHZi}SL8UG9}+uy}Oc`IPM2mZBru)W_oZmR&OmZCiNzCrbh7xZK3@h?Nb z{@BS>1RYm0G^rr7kk0NF=9#dL;!W(29MwpP*W6o;E&ip+E%w~hd|1k)K^7CZRtK(E z-y%cc_b-u6;zK#9#}OB!-g!d4cX7R&zsPF+mU*UNEpydbq?fjZ8V-=%jqZJBa} -J*+bYUD6+cJ>`_%MXezvSqxj zqs92lF4}HyYGS!&3OOW` OUOD&hc7GbHnGyfSmFBc9P9!Zi{Y6mWeL^wcmUxHO;53@-0khA|kd zg+t``ij4%6eNe(OY#A_H$(&8pKKAso-XRNl#*gN2Z+II(Zghq#%O6Fs*ud;5779{> zP{?LY;t085P@3!OFM$bvH}J4Zem$IGEQQJffzS1Y&Z?)YE1M5Nts4XiPYoTN`z4D{ z;#%LqMe@shadGi(j>i=A)nL2x9~lFKRY3HMa{;W+<`RW;46KA_klhE(Di#vR59CMV z=^XD!J?#``H$yTn`Qz=DxO`uU+)O`Q?${+jFEaW%FixYuB9Y?6Nq-VrUIp)u-(tE- zj{RG7i8yuny2*~WNwed{frw^&W*7p3ZWUNA2n9Ix&Sh5u(|*i+5^60>+v@D-1oQ-Z z?&=~ntg33a@48Pv>@%#M=v+R>t!`|LC5bF=tx>C;w&v&8@qVFvi#dg1Wo1DhVbAp( zFlX~<$t8Ydr;cErXr3t>Njt4-yLfJtu`7c{VXUqh%VCg}Efw~5T)uc)#K@?ABX5eP zMk#^>ARY$V)RI2??H6OQA--F5T3?&PX?)+;ptpwRttZ-9x4=rVNAk{j>j5A?q{H0Z z9mi!oz4W8nR2EDS3ZYJ6QW_?q{2q<3=OeH+-deK#E>uf$un<|oJIH0Tz7A;li0ZIp zO)6k%MQ|0&-SUy=ORgE)vrSs6%{$&``G8<_o!C4&Hqx zrYPF8KVcGMN#4Y_0JBes_Xsp}oUWna6NsPNS2$W_y(z(n3ai#{u5545q*kog7> d9nfCQH^lHRBy)|$6Xe_Sce^+!y={6_8}Pb^69*#M#)K&1K_h@(9^ z>di7|WPqVp&J|3}e@TLFby{t)9L07)xdZ*iV+ehc^`y7`4c1oHS?E7Ef!5K&07dQR zom~XZ5^h{Gy2_?_Ruo(Jt7jxbi}B|An>|%8vCO~rSuiEVD paFEr_O6@l`qRW3HU=x&`f609 f{jFP-6e7EbKKGi@Ld%@_sT$U6IvY*RA&;t>2S6$zx%S z_+#)Bb%xfD6G;Q=p5cb|(VmG*7EXBDkq_p{qw<>Y#h5r=xS60fMTe55s@9ky>BQa= z2MOlXc^WWGIBd7*-u%I9ngQ;_pS~w-wwFMMc)C=-1M=pIzto+-yhM2M$!|dCC&B7- zqvhpwtHALM5{~lb0;yd#fAI2bdoZRz4^(|EF$%$Y;GU_eiOaADu&>M1>^EczcM%i; z55R*z$=NiGzz%oY4*c7ov-R}y0xBZ?9W>sUXEE3|-jyGh)DQkp_AfE9habV_{HG FlC z;{ZWVqG;6{`;uzQFY|L*r}lDQyt+n{WcA7$Zv4v~*>s)$07yXoCW+0P+M3o}+}a8r z7Mg;XSHrrzf@NWS&Z{m0@hW0@W=6Yf(_nNA#U?dwq$&?{gkzkYgq)T2O@oB@8XtX* zi8X_NQ2yJ5!G=EiTMb&SG9T_dN4rKQ4V^+hlo3}njLQ5ki49O1r?!dp`zk>P7mDKW zp+(;O-)r;CKfBc%i4HN7PkCHVq|y5wD0nyZm1mj_`#Eh{a1TZ$L8qg@Af?B;j}acr z3yz0ZHN;?`N0I7JF)ctuNws!IO8MFp4_j_&v}!4wF5XphFt29-drDB&j}3I;cg)Lc z_bfMUUqKAkuP_4Rp2ClRpMDEA!N@;?D*~{=GyGuV UqEB&4RT;NC3FV}aB-(~Y J1~F3%(Nn>cxE zht+=I&U;xxIW5)oHn6saAQ!<6h~*Ak9@3)IcT`?rxi9G100qdb*^I5GW~h4?jP49O z=XQ~Y1!~70z;KvpQUKJI{HH$CV_Q9H`I+xXu!ROaGHd)I++W{=)h_Y$%T+w@2A)1# zT`eiexIV>I9zRW-_NalyzJSeK!*VHtGl$b$7%RK-^^~F(hEDB*qF&x`sjNP)J@QEm z|LQiE5K&`j%n)t?^91j+Egxni1}fgd OaZ-8K& zdK!1@eTDmKH&shIW&n){4e?68p|8C~Q8m9@PtNvxjivAg2~S67m?(AveGeS2+~pnL zpkWnfB#Ko*f<{PteegC4) Z%uo2M%VE-#25Vnav6q#F?VOG5 z$OL*Kl&l0&rK{5on3hZT1`-)R$JAn1M{}I0>RNFmhO)O5bf+>VbdripOurgIe&fc8 z)YyElq-CQ?D7&5(N w!Whc)~GvvBt+HCFq5uOY!^*vyTnFWz2Ce6fKYYZ|G zAz(+}Oe|GUy(S)@tNZZX)blL8O7r6$hNr8>w7rfjLUJ`ewZ7C_o+Z0aqyoXx`Ob)! zv7X-EFauC>s@UlBnLpy$jtK`9XJi^+)pVjV=Ff6_dk<;rC qSLGV{DZsD;|6t;-03Sa|DY27>C34(iK>8wFGCS1 z;ztdr?WT% e2_t=#3CYCSMRD>GR KU09w#t E=p^K_U&+VHOhFy6Eu-))lnYn|=CKCA4Rez%6SxK~@4Vo0jku{L=yhFLgV&@{o zL4EgCg}Y&XJF948msvxWxR;i9hL@plJsI0%@UQC-)2ooPH#Cbc!VS>mAWRd77Zpq8 z#i^Q$j_PgGqGTjtOEzSd`)GS*=_aDi;xxzG1cz%qdcdvJF?lXfC;4R`Peyr~n-y{~ z{#ht>m`#N^#!wffvYLk%FIuM%(c+}+MJc+sa%I9gV9`| tx8OeO<_>T3j1eb;Fd_~ 6dE%>bQvBJ2Euo4Io;SBM<9vpMNtBp$*)Bg9cgrNHP{Mw) z)@2j}p#wK03PSClOY{Gqvd`=nPBLG)EcudsVr4TEyTDEPB4i8XBS)UxJ{CjFSwz~T zNVcKW5(yY+I|;Lfw)g?AU>GHRMF?&=?cZNSIn*{$j=B6CXv4nZ9iReOK8xAKC(f|X z3id@c ceE98%g(?Sc4VTAbkdEW;vMs= z95o`cy~)HqSVzgk7Gz%{A}I&K`+%{6C?U-G|9+V9FiNCab`Qn5CbsXat71*A*y=nr z5g7P<^<3i@_S2jmA}#w|4;70uC9F?IxZ7r7b{f5Ct1Hm3`8;N0NB>A5i-)6Bm8hZ} zRdGRla+`jRpiw6iWhEOus)k-fZK5gM8%jVa%Z`V2Ai=wN9oW_No+^Ib=N2wD624h{ zPK1Ic8*PIjw>!o}f3u62%nVC{;8sz=Jr(c3aCW~r#@H9Bs+8sXqdk64^0`WPN%Os# zWMUUHw(fB(Z`cfSpY&jR2Z#MdldjT#9!%j&%fmw649