anyremote-6.7.1/0000755000232200023220000000000013231303722014072 5ustar debalancedebalanceanyremote-6.7.1/Makefile.am0000644000232200023220000000454713226200116016135 0ustar debalancedebalance# # anyRemote - a bluetooth remote for your PC. # # Copyright (C) 2007-2018 Mikhail Fedotov # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # SUBDIRS = src EXTRA_DIST = INSTALL NEWS README COPYING AUTHORS TODO anyremote.1.gz ChangeLog doc-html keymaps cfg-data specs install-data-local: test -z $(DESTDIR)$(pkgdatadir) || mkdir -p -- . $(DESTDIR)$(pkgdatadir) test -z $(DESTDIR)$(docdir) || mkdir -p -- . $(DESTDIR)$(docdir) cp -r cfg-data $(DESTDIR)$(pkgdatadir) rm -rf $(DESTDIR)$(pkgdatadir)/cfg-data/obsoleted cp -r doc-html ChangeLog README COPYING AUTHORS $(DESTDIR)$(docdir)/ find $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(docdir) -type f -exec chmod 644 {} \; chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/all-in-1.py chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/generate_cover.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/generate_poster.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/getPlayList.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/get-installed.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/message.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/pulse-audio-ctl.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/registry.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/run-or-switch-to.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/weather.sh find $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(docdir) -type d -exec chmod 755 {} \; test -z $(DESTDIR)$(datadir)/man/man1 || mkdir -p -- . $(DESTDIR)$(datadir)/man/man1 cp -r anyremote.1.gz $(DESTDIR)$(datadir)/man/man1 chmod 644 $(DESTDIR)$(datadir)/man/man1/anyremote.1.gz uninstall-local: rm -rf $(DESTDIR)$(pkgdatadir) rm -rf $(DESTDIR)$(docdir) rm -f $(DESTDIR)$(datadir)/man/man1/anyremote.1.gz anyremote-6.7.1/keymaps/0000755000232200023220000000000012100017561015540 5ustar debalancedebalanceanyremote-6.7.1/keymaps/BenqSiemens.keymap0000644000232200023220000000411112061426052021163 0ustar debalancedebalance =============================== Benq-Siemens S68 =============================== % % Thanks to Andreas Nolda % Differs for Siemens just in: ---------------------------------- joystick middle key F volume down :- volume up :+ record :P fast dialing key :X15 ---------------------------------- --------------------------------- | Button | Code | --------------------------------- | 1 | 1 | | 2 | 2 | | 3 | 3 | | 4 | 4 | | 5 | 5 | | 6 | 6 | | 7 | 7 | | 8 | 8 | | 9 | 9 | | 0 | 0 | | * | * | | # | # | --------------------------------- | Down | V | | Up | ^ | | Left | < | | Right | > | | Middle | F | --------------------------------- | Contenxt Left | [ | | Contenxt Right | ] | --------------------------------- | Answer | S | | Cancel | E | --------------------------------- | Volume Down | :- | | Volume Up | :+ | --------------------------------- | Record | :P | --------------------------------- | Fast dialing key | :X15 | --------------------------------- =============================== Benq-Siemens EL71 =============================== --------------------------------- | Button | Code | --------------------------------- | 1 | 1 | | 2 | 2 | | 3 | 3 | | 4 | 4 | | 5 | 5 | | 6 | 6 | | 7 | 7 | | 8 | 8 | | 9 | 9 | | 0 | 0 | | * | * | | # | # | --------------------------------- | Down | V | | Up | ^ | | Left | < | | Right | > | | Middle | F | --------------------------------- | Contenxt Left | [ | | Contenxt Right | ] | --------------------------------- | Answer | S | | Cancel | E | --------------------------------- | Volume Down | :- | | Volume Up | :+ | --------------------------------- | Music (bottom left) | :O | | Play (bottom right) | :X1D | --------------------------------- | Camera | :P | | Fast dialing key | :X15 | --------------------------------- | Flip open | :X17 + :X18 | | Flip close | :X19 + :X16 | --------------------------------- anyremote-6.7.1/keymaps/SE.keymap0000644000232200023220000000113512061426052017264 0ustar debalancedebalanceThis is keymap for SR K700 and K750 phones. Button -> CKEV 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 0 0 * * # # ContextLeft [ ContextRight ] ContextCenter (myLinks) :D (only K750) Return :R C c JoyPuch :J JoyDown v JoyUp ^ JoyLeft < JoyRight > Side up u Side down d Online :O (only K700) Switch Off L (only K700) Switch Off p (only K750) Play/Stop :G (only K750) Photo :C (only K700) Photo(half press == Fokus) :F (only K750) Photo(full press == Fokus + make photo) :C + :F (only K750) anyremote-6.7.1/keymaps/Nokia-E61.keymap0000644000232200023220000000113212061426052020344 0ustar debalancedebalanceNokia-E61 Keycodes from java client simp with with le shift Ctrl (and -50 before) ------------------------------- q 113 81 17 w 119 87 23 e 101 69 5 1 49 33 2 50 34 3 51 163 * 42 42 42 i 105 73 9 o 111 79 15 p 112 80 16 a 97 65 1 s 115 83 19 d 100 68 4 4 52 36 5 53 8364 6 54 37 # 35 126 k 107 75 11 l 108 76 12 <- 8 8 8 duplicate "9" z 122 90 26 x 120 88 24 c 99 67 3 7 55 38 8 56 42 9 57 40 0 48 41 . 59 58 59 , 39 64 39 "Return" 10 10 10 Shift -50 3rd from left (national) 44 60 44 4rd from left (national) 46 62 46 Space 32 32 32 4rd from right (national) 47 63 Chr anyremote-6.7.1/keymaps/Sagem.keymap0000644000232200023220000000217412061426052020015 0ustar debalancedebalance------------------------------------------------------------------------------------- Thanks to Dale Cooper for Sagem my700Xi keymap It was found out that the AT+CMER string to send to the phone is : AT+CMER=2,1,0,0,0 the full keymap is as follow : vol.up85 vol.down68 play (x2)no code mail91 this is the top-left key on my700x imode32 this is the top-right key on my700x green83 red69 left67 right77 up94 down86 048 149 250 351 452 553 654 755 856 957 *42 #35 the 2 "play" keys are strange, they return : ,1 (I mean "nothing",1) so they can't be used my6X-2 was also tested the AT+CMER command, but not long enough to provide the full keymap. ------------------------------------------------------------------------------------- Thanks to Tomas Kaluza for Sagem my501c keymap % Sagem my501c - Two menu bottons 91=MenuLeft 32=MenuRight anyremote-6.7.1/keymaps/Motorola.keymap0000644000232200023220000000277312061426052020562 0ustar debalancedebalanceThis is keymap for Motorola KRZR-K1/RIZR-Z3 phones. Button -> CKEV Green button S Red button E 0,1-9 0,1-9 * * # # [ SoftLeft ] SoftRight Internet button (no message) C C M Menu :0 JoystickPush :X JoystickUp :C JoystickDown :L JoystickLeft :R JoystickRight :S SoftKey U VolUp D VolDown :T Right side button :1 Photo (on right edge) - only on Z3 This is keymap for Motorola V3i phone. Button -> CKEV Green button S Red button E 0,1-9 0,1-9 * * # # [ SoftLeft ] SoftRight M Menu :0 JoystickPush :X JoystickUp :C JoystickDown :L JoystickLeft :R JoystickRight :S SoftKey U VolUp D VolDown :T Right side button This is keymap for Motorola V500 phone. Button -> CKEV Green button S Red button E 0,1-9 0,1-9 * * # # [ SoftLeft ] SoftRight M Menu U VolUp D VolDown :X JoystickUp :C JoystickDown :L JoystickLeft :R JoystickRight :S SoftKey This is keymap for Motorola L6 phone. Button -> CKEV Green button S Red button E 0,1-9 0,1-9 * * # # [ SoftLeft ] SoftRight M Menu :0 JoystickPush :X JoystickUp :C JoystickDown :L JoystickLeft :R JoystickRight :S SoftKey :2 PTT (on left edge) :1 Photo (on right edge) anyremote-6.7.1/keymaps/Siemens.keymap0000644000232200023220000000542512061426052020366 0ustar debalancedebalance============ Siemens S65 ============ --------------------------------- | Button | Code | --------------------------------- | 1 | 1 | | 2 | 2 | | 3 | 3 | | 4 | 4 | | 5 | 5 | | 6 | 6 | | 7 | 7 | | 8 | 8 | | 9 | 9 | | 0 | 0 | | * | * | | # | # | --------------------------------- | Joystick Push | F | | Down | V | | Up | ^ | | Left | < | | Rightd | > | --------------------------------- | Contenxt Left | [ | | Contenxt Right | ] | --------------------------------- | Answer | S | | Cancel | E | --------------------------------- | Volume Down | :- | | Volume Up | :+ | | MyMenu | :O | --------------------------------- ============ Siemens S55 ============ % % thanks to Artem Zolochevskiy % --------------------------------- | Button | Code | --------------------------------- | 1 | 1 | | 2 | 2 | | 3 | 3 | | 4 | 4 | | 5 | 5 | | 6 | 6 | | 7 | 7 | | 8 | 8 | | 9 | 9 | | 0 | 0 | | * | * | | # | # | --------------------------------- | Down | V | | Up | ^ | | Left | < | | Rightd | > | --------------------------------- | Contenxt Left | [ | | Contenxt Right | ] | --------------------------------- | Answer | S | | Cancel | E | --------------------------------- | Volume Down | - | | Volume Up | + | --------------------------------- | Record | M | --------------------------------- | Incomming call | RING | --------------------------------- % % Log of session % AT+CMER=? +CMER: (0-3),(0-2),(0),(0-2),(0-1) AT+CKPD=1 ERROR --------------------------------- AT+CKPD works on Siemens S55 only after AT+CMEC=2 --------------------------------- AT+CMEC=2 OK AT+CKPD=1 OK AT+CMER=3,2,0,0,0 OK ------------------ Buttons: 1-9,0,*,# ------------------ +CKEV: 1,1 +CKEV: 1,0 +CKEV: 2,1 +CKEV: 2,0 +CKEV: 3,1 +CKEV: 3,0 +CKEV: 4,1 +CKEV: 4,0 +CKEV: 5,1 +CKEV: 5,0 +CKEV: 6,1 +CKEV: 6,0 +CKEV: 7,1 +CKEV: 7,0 +CKEV: 8,1 +CKEV: 8,0 +CKEV: 9,1 +CKEV: 9,0 +CKEV: *,1 +CKEV: *,0 +CKEV: 0,1 +CKEV: 0,0 +CKEV: #,1 +CKEV: #,0 ------------------------------- Joystick: Up, Down, Left, Right ------------------------------- +CKEV: ^,0 +CKEV: ^,1 +CKEV: ^,0 +CKEV: V,1 +CKEV: V,0 +CKEV: >,1 +CKEV: >,0 +CKEV: <,1 +CKEV: <,0 ---------------------- Context Left snd Right ---------------------- +CKEV: [,1 +CKEV: [,0 +CKEV: ],1 +CKEV: ],0 ----------------------------- Answer(Green) and Cancel(red) ----------------------------- +CKEV: S,1 +CKEV: S,0 +CKEV: E,1 +CKEV: E,0 ----------------------------------- Volume: Up, Down (on the left side) ----------------------------------- +CKEV: -,1 +CKEV: -,0 +CKEV: +,1 +CKEV: +,0 -------------------------- Record (on the right side) -------------------------- +CKEV: M,1 +CKEV: M,0 --------------- Incomming call: --------------- RING anyremote-6.7.1/doc-html/0000755000232200023220000000000013126472435015614 5ustar debalancedebalanceanyremote-6.7.1/doc-html/pre-setup.html0000644000232200023220000001561012061426051020417 0ustar debalancedebalance anyRemote · Control your computer with your phone

Before install

  • Be sure that bluetooth subsystem is working. Your bluetooth phone should be paired already. There are page and inquiry scan must be enabled on bluetooth interface (this could be done with the command hciconfig hci0 piscan)
  • If You use IR connection, IrDA service should be configured and the phone should be visible in output of irdadump utility.
  • If You plan to use cable connection, be sure the cable is plugged-in :-).
  • Your cell phone should support JSR-82 or event-reporting feature. If You do not have any information just try to use anyRemote, firstly in Server mode, then in AT-mode.
anyremote-6.7.1/doc-html/set-window.html0000644000232200023220000003240312664332726020610 0ustar debalancedebalance anyRemote · Control your computer with your phone

Set(image ... ) command

Image view screen This command used to show images on screen of cell phone or upload icons and covers to the phone internal memory.

Format

Set(image,window,_image_file_name) or

ExecAndSet(image,window, ... command to determine image file name ...) or


Set(image,show|close|cursor|nocursor|dynamic_cursor|set_cursor) or


Set(image,icon,_icon_name_,_image_file_name_) or

ExecAndSet(image,icon,_icon_name_, ... command to determine image file name ...) or


Set(image,cover,_cover_name_,_image_file_name_) or

ExecAndSet(image,cover,_cover_name_, ... command to determine image file name ...) or


Set(image,remove,all|icons|covers)

Set(image,clear_cache)

Usage

Set(image,window ...)

Command Set(image,window,_image_file_name) used to show image on screen of cell phone. Of cource in most cases this should be ExecAndSet(...) variant of command. See cfg-example/Server-mode/winManager.cfg for details.

1=ExecAndSet(image,window,echo "$IMAGE_DIR/image.png")

Set(image,show)

Command Set(image,show) used to show previously uploaded image.

2=Set(image,show)

Set(image,close)

Command Set(image,close) used to close screen with image and return back to main screen.

3=Set(image,close)

Set(image,cursor|nocursor)

Note: Supported in J2ME client only

Command Set(image,cursor|nocursor) used to specify should or should not the cursor cross will be drawn over the image. If this option is set to "cursor" then it will be possible to move cursor cross with the joystick keys and if user pushes the joystick key, then two replies PressedX(x_coord,) and PressedY(y_coord,) will be sent. PressedX() event will be first one.

4=Set(image,nocursor)

Set(image,dynamic_cursor)

Note: Supported in J2ME client only

Command Set(image,dynamic_cursor) Is similar to Set(image,cursor), but each time user press joystrick key two replies PosX(x_coord,) and PosY(y_coord,) will be sent. PosX() event will be first one.

5=Set(image,dynamic_cursor)

Set(image,set_cursor ...)

Note: Supported in J2ME client only

Command Set(image,set_cursor, x_coord, y_coord) used to set cursor position on screen of cell phone.

6=Set(image,set_cursor,0,0)

To retrieve current cursor position use Get(cursor) command.

Set(image,icon ...)

Command Set(image,icon,_icon_name_,_image_file_name) used to upload 16x16, 32x32, 48x48, 64x64, 96x96 or 128x128 icons, which could be used in Set(icons,...) command. Of cource in most cases this should be ExecAndSet(...) variant of command. See cfg-example/Server-mode/iconUpload.cfg for details.

7=ExecAndSet(image,icon,echo "$IMAGE_NAME,$IMAGE_DIR/image.png")

Only 16x16, 32x32, 48x48, 64x64, 96x96 or 128x128 PNG icons could be uploaded. There is no way to show the list of uploaded icons.

All uploaded icons could be removed by Set(image,remove,icons) command.

All icons used by J2ME client cached in phone's memory. It is possible to cleanup that cache by Set(image,clear_cache) command.

Icon auto-uploading

anyRemote Android/J2ME clients supports icon auto-uploading. So, if there is a command

1=Set(icons,TheTitle,1,my-new-icon);

and my-new-icon.png is absent in Android/J2ME client, then anyRemote will search it in $HOME/.anyRemote/Icons/_icon_size_ and $(CfgDir)/Icons/_icon_size_ directories and automatially upload it to the phone if found (_icon_size_ can be 16, 32, 48, 64, 96 or 128).

It is not recommended to use this feature with J2ME client on Samsung phones because of terrible upload speed.

Set(image,cover ...)

Command Set(image,cover,_cover_name_,_image_file_name) used to upload cover images, which could be used in Set(cover,by_name,...) command. Of cource in most cases this should be ExecAndSet(...) variant of command.

7=ExecAndSet(image,cover,echo "my_cover,/tmp/cover_art.png")

For each connected client anyRemote will automatically scale cover to the appropriate size. It is possible to use command Get(cover_size) to determine appropriate size of cover image, but in general there are no needs to run this command explicitly because anyRemote executes it by itself upon connection to/from client.

There is no way to show the list of uploaded covers.

All uploaded covers could be removed by Set(image,remove,covers) command.

Cover auto-uploading

anyRemote Android/J2ME clients supports cover images auto-uploading. So, if there is a command

1=Set(cover,by_name,my-cover-art);

and my-cover-art.png cover image is absent in Android/J2ME client, then anyRemote will search it in $HOME/.anyRemote/Covers and $(CfgDir)/Icons/common directories and automatially upload it to the phone if found. anyRemote will scale cover image to appropriate size by itself. To work properly this feature needs to have ImageMagick installed.

It is not recommended to use this feature with J2ME client on Samsung phones because of terrible upload speed.

Also, it needs to use this feature with care if using Bluetooth connection.

Set(image,remove,all|icons|covers)

Command Set(image,remove,...) used to remove all previously uploaded icons or covers.

0=Set(image,remove,all)
1=Set(image,remove,icons)

Set(image,clear_cache)

Note: Supported in J2ME client only

Command Set(image,clear_cache) used to cleanup cache of used icons on J2ME client.

1=Set(image,clear_cache)

Retrieving size of the screen

To retrive size of the screen of the cellphone it is possible to use Get(screen_size) command.

anyremote-6.7.1/doc-html/set-list.html0000644000232200023220000003171712664332726020263 0ustar debalancedebalance anyRemote · Control your computer with your phone

Set(list ... ) and Set(iconlist ... ) commands

This command used to create and manage lists which will be shown on the phone screen. This could be useful to manage player playlists or to browse directory structure. The iconlist can contain icons in front of each list item.

To see an example please take a look at cfg-data/Server-mode/exampleList.cfg file.

Format

Set(list,add|replace|clear|show|close,caption,title, _list_data_) or

Set(list,caption|fg|bg|font|select|icon, _data_)

Set(list,dir,caption,_directory_)

Set(iconlist,add|replace|clear|show|close,caption,title, _list_data_) or

Set(iconlist,caption|fg|bg|font|select, _data_)

Set(iconlist,dir,caption,_directory_)

Simple list List with icons

Usage

Set(list,add|replace|dir ...)

Command Set(list,add|replace ...) used to add or replace content of the existing list. Updated list will be shown on screen.

1=Set(list,replace,Commands,uptime,whoami)
2=Set(list,add,SAME,reboot,poweroff)
3=ExecAndSet(list,add,SAME,cat /tmp/some_file.txt)

Command Set(list,dir ...) used to replace content of the existing list with directory listing.

1=Set(list,dir,FILES,/tmp)

The word SAME can be used instead of title if there are no needs to change existing list title.

If Set(iconlist, ...) command is used, then each list item should be in form "icon_name:list_item_text":

1=Set(iconlist,replace,Commands,question:uptime,ok:whoami)

Set(list,show)

Command Set(list,show) used to show existing list.

2=Set(list,show)

Set(list,clear)

Command Set(list,clear) used to clear existing list.

3=Set(list,clear)

Set(list,close)

Command Set(list,close) used to close existing list. If list is closed, then control (main) screen of the client will be shown.

Back($$)=Set(list,close)

Set(list,select ...)

Note: Supported in J2ME client only

Command Set(list,select,_index_) used to select in list item with specified index. Items numbering starts from 1.

4=Set(list,select,1)

Set(list,caption ...)

Command Set(list,caption,new_caption) sets the caption of the list.

5=Set(list,caption,Playlist)

Set(list,icon ...)

Command Set(list,icon,icon_name|none) used to set or reset default list icon.

6=Set(list,icon,ok)
7=Set(list,icon,none)

Set(list,fg|bg ...)

Command Set(list,fg|bg,#XXXXXX|R,G,B) used to set foregroung or background colors, where:

  • #XXXXXX is hexadecimal representation of the color
  • R, G, B are decimal integer values beetween 0 and 255
8=Set(list,fg,255,255,255)
9=Set(list,fg,#FFFFFF)

Set(list,font ...)

Command Set(list,font [,small | medium | large] [,bold] [,italic] [,underlined] [,system | monospace | proportional]) used to set font parameters. Java realization in the phone could support only some subset of fonts which can be specified by this command.

0=Set(list,font,medium,bold,proportinal)

Adding menu items

It is possible to add custom made menu by Set(menu ...) command. If user chooses ListItemX in list and then chooses MenuItemY in menu then reply MenuItemY(index_of_ListItemX_in_list,ListItemX) will be issued. According to the screenshot above the GoTo(1,..) command will be issued.

Additional

There are several things which needs to be pointed out:

Commands Set(list,add|replace|select|show,...) will switch current screen if needed to show list content. Overwise commands Set(list,fg|bg|font|icon|clear,...) will not switch the current screen.

List items numbering starts with 1.

All '\r' characters in results of execution of command ExecAndSet(list|iconlist,add|replace,_title_, ...) command will be replaced with comma (',') on the client's side. So, it is possible to show commas (,) inside list items.

By default list menu contains item Back only.

Also, in any menu created with Set(menu ...) item Back will be added automatically.

If user pushes center joystick button then message Push(...) will be generated.

To handle events on server side it needs to use lines like:

MenuItemX($$)=Some_command

The list element value and the list element index will be substituted with the $(Param) and $(Index) variables:

Choose($$)=Exec(xmmsctrl track $(Index))
Choose($$)=Exec(kdialog --msgbox "Current track is $(Param)")

It is possible to overcome substitution of the $(Param) and $(Index) variables with explicit specification of event. For example if Choose(1,Reboot) event is send from the client, then two next lines will be equivalent and each of them will match that event.

Choose(1)=Exec(kdialog --msgbox \
       "User choose REBOOT (match by index)")
Choose(Reboot)=Exec(kdialog --msgbox \
       "User choose REBOOT (match by value)")

As it was written above, "Back" menu item is added automatically, but it is user responsibility to handle corresponding events on server side. In general it could be done like this:

Back($$)=Set(list,close)

Autoscrolling of long lines

Note: Supported in J2ME client only

If a list item is too long to be shown in full, it will be autoscrolled when it will be under cursor. It it possible to switch on/off autoscrolling by pressing "0" key at the phone's keypad.

Using special keys

Note: Supported in J2ME client only

Keypad
1
Move to first item
23
Page Up
456
7
Move to last item
89
Page Down
*0
Toggle autoscrolling
#
anyremote-6.7.1/doc-html/privacy.html0000644000232200023220000000561413126472435020165 0ustar debalancedebalance anyRemote · Control your computer with your phone

anyRemote Privacy Policy

1. INFORMATION WE COLLECT

anyRemote (and anyRemote android client) does not collects any user information.

anyRemote android client uses android.permission.READ_PHONE_STATE permission only to be able to mute sound on incoming calls.

3. SHARING OF YOUR INFORMATION

anyRemote (and anyRemote android client) does not share any user information.

anyremote-6.7.1/doc-html/man.html0000644000232200023220000000742012673224605017260 0ustar debalancedebalance anyRemote - control PC with Bluetooth cell phone

NAME

anyremote - control PC with Bluetooth/Wi-Fi cell phone


SYNOPSIS

anyremote [-f file] [-s peer[,peer ...]] [-log] [-a]

[-fe port] [-u username] [-name SDP service name] [-password]

anyremote -h|-v


DESCRIPTION

anyRemote is remote control software for applications using WiFi or Bluetooth.

anyRemote was developed as thin "communication" layer between device with WiFi or Bluetooth support (which can be cell phone or tablet computer) and Linux PC.

In theory anyRemote could be configured to manage almost any kind of software.

anyRemote is console application, but in addition there are GUI frontends for Gnome and KDE.

OPTIONS

-h

print short help and exit

-v

print version number and exit

-f /path/to/configuration/file

By default anyremote will try to find and use $HOME/.anyremote.cfg, then ./.anyremote.cfg. It is possible to specify configuration file directly with -f option.

-s peer[,peer ...]

where peer can be one of:

tcp:_port_ (Server mode - TCP/IP connection)

bluetooth:_channel_ (Server mode - bluetooth connection)

web:_port_ (Server mode - Web interface)

cmxml:_port_ (Server mode - XML services interface)

local:/dev/ircommX (Server mode - IR connection)

rfcomm:XX:XX:XX:XX:XX:XX:CC (AT mode - bluetooth connection,

where XX:XX:XX:XX:XX:XX is bluetooth device address and

CC is channel number - integer from 1 to 32)

/dev/ttyACM# (AT mode - cable connection)

/dev/ircomm# (AT mode - IR connection)

ilirc:_AF_LOCAL socket file_ (use with inputlircd)

stdin

avahi - register SDP service using Avahi

Default peer value is bluetooth,tcp:5197,web:5080,avahi

It is possible to specify several peers for Server mode configuration files only.

It is possible to specify only single peer of web: or cmxml: type.

-log

print verbose logging information to $HOME/.anyRemote/anyremote.log

-a

reconnect automatically in case of connection failure, used only in AT mode

-fe _port_

Work as backend for GUI frontend. Use specified port to connect to frontend.

-name SDP_service_name

if bluetooth or TCP/IP connection is used, allows one to specify SDP service name.

Default value for SDP service name is "anyRemote"

-password

If this option is specified, then anyRemote will ask the client for the password.

Password phrase should be stored in $HOME/.anyRemote/password file in a plain text.

-cfgdir _directory_

override default location of directory with configuration files

-tmpdir _directory_

override default location of directory to store temporary files

-u|--user _username_

if started from root, allows one to set effective user ID to specified user


AUTHORS

Mikhail Fedotov anyremote@mail.ru

http://anyremote.sf.net


BUGS

If you find any bugs, please report to anyremote@mail.ru

LICENCE

This is free software. You may redistribute copies of it under the terms of the GNU General Public License v3+http://www.gnu.org/licenses/gpl-3.0.html. There is NO WARRANTY, to the extent permitted by law.

anyremote-6.7.1/doc-html/cfg-howto.html0000644000232200023220000002221312064120727020371 0ustar debalancedebalance anyRemote · Control your computer with your phone

How to create simple configuration file

Configuration file examples

You may find predefined configuration files in cfg-data directory. Firstly, take a look to the simple configuration file like cfg-data/Server-mode/template-player.cfg. After investigation of some configuration files You'll became more familiar with its format.

How To

Specify keys to handle

A short example, which:

  • Shows popup message if button 1 pressed.
  • Show "Hello" string in title field of anyRemote client if button 2 pressed. Valid in Server mode.
  • Set current time to the status field of anyRemote client if button 3 pressed. Valid in Server mode.
[Protocol]=Server
1=Exec(kdialog --msgbox "Hello!")
2=Set(title,"Hello!")
3=ExecAndSet(status,date +"%M:%S")
...

Exec() command is the mostly used one. It is used to run specified command.

Set()/ExecAndSet() commands used to control look and behavour of the client, which is used in Server mode.

To make custom setup of the clients main window upon connection:

(Connect)=\
    Set(icons,TheTitle,\
        1,vol_down,2,mute,3,vol_up,\
	4,rewind,5,play,6,forward,\
	7,prev,8,pause,9,next,\
        *,question,0,stop,#,quit);\
    Set(status,Connected now);\
    Set(title,Hello!);

As You can see it is possible to execute more than one command at once.

At the end, another "almost" real Server mode example which contols Amarok/KDE3 player:

[Protocol]=Server  
% Run amarok when connected
(Connect)=Exec(amarok);

% Volume control
1=Exec(dcop amarok player volumeDown)   
2=Exec(dcop amarok player mute)   
3=Exec(dcop amarok player volumeUp)   

% Play, rewind back and forward
4=Exec(dcop amarok player seekRelative -10)   
5=Exec(dcop amarok player play);Set(title,Playing);  
6=Exec(dcop amarok player seekRelative 10)   

% Previous song, stop playback and next song
7=Exec(dcop amarok player prev);  
8=Exec(dcop amarok player stop);Set(title,Stopped);  
9=Exec(dcop amarok player next);

% Pause playback
0=Exec(dcop amarok player pause);Set(title,Paused);   
[End]

Lines starting with % are considered as a comment.

Notes

anyRemote uses popen system call in Exec() command. This means that command will be executed inside /bin/sh command interpreter.

It is suggested to avoid explicit usage of other shells, like bash or ksh in configuration files. Please keep in mind that some embedded systems like OpenWrt does not contains such packages by default.

anyremote-6.7.1/doc-html/dload.html0000644000232200023220000003104712120355625017564 0ustar debalancedebalance anyRemote · Control your computer with your phone

Download area

Please also have a look at the Download page at Sourceforge!

Available packages:

Console-oriented app anyRemote
KDE frontend kAnyRemote
Gnome frontend gAnyRemote
Android client Android client
J2ME client J2ME client
J2ME client for WAP download
- with 16x16 icon set and 16x16 title icon jar and jad
- with 16x16 icon set and 64x64 title icon jar and jad
- with 32x32 icon set and 16x16 title icon jar and jad
- with 32x32 icon set and 64x64 title icon jar and jad
- with 48x48 icon set and 16x16 title icon jar and jad
- with 48x48 icon set and 64x64 title icon jar and jad
- with 64x64 icon set and 16x16 title icon jar and jad
- with 64x64 icon sets and 64x64 title icon jar and jad
- with 96x96 icon set and 16x16 title icon jar and jad
- with 96x96 icon sets and 96x96 title icon jar and jad
- with 128x128 icon set and 16x16 title icon jar and jad
- with 128x128 icon sets and 64x64 title icon jar and jad
- with 16x16, 32x32, 48x48, 64x64, 96x96 and 128x128 icon sets and 16x16 title icon jar and jad

- without JSR-82 support, can be used in WinMobile devices

contains 32x32 and 64x64 icon sets and 64x64 title icon

jar and jad
On Nokia's it is suggested to use J2ME client versions with 64x64 title icon
Additional
anyRemote-LIRC download
inputlircd download

SVN/GIT access

Console-oriented app svn co svn://svn.code.sf.net/p/anyremote/code/anyremote/trunk anyremote
KDE frontend svn co svn://svn.code.sf.net/p/anyremote/code/kanyremote/trunk kanyremote
Gnome frontend svn co svn://svn.code.sf.net/p/anyremote/code/ganyremote/trunk ganyremote
Android client git clone git://github.com/anyremote/anyremote-android-client.git
J2ME client git clone git://github.com/anyremote/anyremote-j2me-client.git

Arch Linux

The packages can be obtained from the AUR.

The exact links are: anyRemote, gAnyRemote and kAnyRemote

CentOS 5

The latest versions of packages for CentOS 5 can be obtained from Suse Build Service repository

Debian

Debian users can download packages (a bit outdated) from official repository.

Fedora

Fedora users can download packages from official "Everything" repository (except J2ME client and inputlircd)

Mandriva

Mandriva users can download (a bit outdated) anyRemote and gAnyRemote from official repository.

The latest versions of packages for Mandriva can be obtained from Mandriva Italian Backports.

It is possible to add MIB repository to the list of used repositories. Take a look here for details.

Also packages for Mandriva 2009/2010 can be obtained from Open Suse Build Service repository

OpenSuse / SLE

Suse users can use Open Suse Build Service repository for downloading.

Also it is possible to add this Suse Build Service repository to YaST.

(see for details).

*Ubuntu

*Ubuntu users can download packages (a bit outdated, see note below) from official repository.

The latest versions of packages can be obtained from Launchpad PPA for anyRemote.

To add that repositiry run

sudo add-apt-repository ppa:anyremote/ppa

OpenWRT

Prebuild (but unfortunately outdated) version of anyRemote package for OpenWRT can be obtained from OpenWRT download area.

Other

Also there are exists externally created packages
for ALT Linux
anyremote-6.7.1/doc-html/vars.html0000644000232200023220000005432512664332726017472 0ustar debalancedebalance anyRemote · Control your computer with your phone

Variable substitution

In Exec(), Make(var,...), Load(), Include() commands is it possible to use internal "variables". Several of them are predefined.

Variables list

$(Home)

User home directory ($HOME) will be substituted instead of $(Home):

1=ExecAndSet(list,replace,Files in home,ls $(Home))

$(Mode)

Current mode will be substituted instead of $(Mode):

2=Make(mode,xmms);Exec(kdialog --msgbox "New mode is $(Mode)")

$(CfgDir)

Directory with configuration files substituted instead of $(CfgDir).

In most cases it is /usr/share/anyremote/cfg-data. Actually it depends on --prefix value which was used at build time.

It is posible to override this by using -cfgdir commandline option.

3=ExecAndSet(list,replace,Cfg Files,ls -1 $(CfgDir))

$(TmpDir)

Is is suggested to use $(TmpDir) in configuration files in commands which stores data in files.

Default value of $(TmpDir) variable is $HOME/.anyRemote.

It is posible to override this by using -tmpdir commandline option.

4=Exec(ls -1 $HOME > $(TmpDir)/home.list)

$(WaitSeconds)

This variable used to stop scripts started inside ExecAndSet(...) or Make(...) commands to avoid hang-up of anyRemote. If $(WaitSeconds) is set to positive value then after waiting for specified amount of seconds started script killed by SIGTERM signal.

Default value of $(WaitSeconds) variable is -1, that means it does not used.

(Init)=Make(var,WaitSeconds,by_value,30)

$(UpdateTimeout)

This variable used to control applocation state update timeout.

Default value of $(UpdateTimeout) variable is 5 seconds.

(Init)=Make(var,UpdateTimeout,by_value,3);

5=Macro(PLAY);Timer(UPDATE_STATE,$(UpdateTimeout),0);

$(AllowedOnly)

This variable used to setup access control. If $(AllowedOnly) is set to true then connection accepted only from hosts specified in file $HOME/.anyRemote/allowed_hosts file.

Default value of $(AllowedOnly) variable is false that means no access control is applied.

File $HOME/.anyRemote/allowed_hosts should contains allowed IP and Bluetooth addresses one address per line, for example:

192.168.1.1
127.0.0.1
0008F4163049

Access control can be applied to Bluetooth, TCP, Web server and XML services interfaces connection.

$(BtAddr)

[Server-mode only] $(BtAddr) variable will be substituted with bluetooth address of the phone after successful connection by J2ME/Android client.

If connection absent (or established not in Server mode through bluetooth) this variable will have empty value.

(Connect)=Exec(kdialog --msgbox "Connected by $(BtAddr)")

$(Bluez)

$(Bluez) variable will have value yes if anyRemote is compiled with Bluez support, or will have value no if anyRemote is compiled without Bluez support.

(Init)=Exec(kdialog --msgbox "anyRemote compiled with Bluez - $(Bluez)")

$(Xtest)

$(Xtest) variable will have value yes if anyRemote is compiled with XTest support, or will have value no if anyRemote is compiled without XTest support.

(Init)=Exec(kdialog --msgbox "anyRemote compiled with XTest - $(Xtest)")

$(MixerCard)

This variable is used in configuration files which are uses amixer utility to control sound volume.

$(MixerCard) variable will have default value 0. You can reset this variable to appropriate value if Your system have different sound card configuration.

(Init)=Make(var,MixerCard,by_value,1)

The most simple way to do this is to use hook_* files. So, just add command

Make(var,MixerCard,by_value,1)

to $HOME/.anyRemote/hook_init file.

Also, take a look at here

$(MixerChannel)

This variable is used in configuration files which are uses amixer utility to control sound volume.

$(MixerChannel) variable will have default value Master. You can reset this variable to appropriate value if Your system have different sound card configuration.

(Init)=Make(var,MixerChannel,by_value,PCM)

The most simple way to do this is to use hook_* files. So, just add command

Make(var,MixerChannel,by_value,PCM)

to $HOME/.anyRemote/hook_init file.

Also, take a look at here

Variables used to control internal behaviour of anyRemote

If You need to tune internal behaviour of anyRemote, then it is good idea to use these variable in (Init) event handler or in $HOME/.anyRemote/hook_init file.

$(Device)

This variable allows to specify connect string.

The same can be done by specifying -s ... command line parameter.

$(Device) variable will have default value bluetooth:19,tcp:5197,web:5080 (which is used in Server mode, so You have to care about this parameter in AT mode)

If anyRemote works as server correct then value for Device could be:

  • bluetooth:_channel_or just bluetooth (to choose first available channel).
  • tcp:_port_
  • web:_port_
  • cmxml:_port_
  • local:/dev/ircomm#
  • avahi

If anyRemote works in AT mode then correct value for Device could be:

  • rfcomm:XX:XX:XX:XX:XX:XX:Y
  • /dev/ircomm#
  • /dev/ttyACM#
  • ilirc:/path/to/socket_file
  • stdin

where XX:XX:XX:XX:XX:XX is the bluetooth address of the phone and last Y is the channel number and where # is just a number

(Init)=Make(var,Device,by_value,rfcomm:00:12:EE:32:20:2B:1)

$(Logging)

Print or not to print logging info to the file $HOME/.anyRemote/anyremote.log.

$(Logging) variable can be set to false|true|debug and will have default value false.

Set it to debug for verbose logging.

The same can be done by specifying -log command line parameter.

(Init)=Make(var,Logging,by_value,debug);

By default all logging information stored in $HOME/.anyRemote/anyremote.log file. This could be altered by setting $(TmpDir) variable or -tmpdir commandline option.

If $(TmpDir) variable or -tmpdir commandline option are points outside of user home directory, then logging information will be printed to the file $(TmpDir)/anyremote.log.${USER}

$(ServiceName)

[Server mode over bluetooth only] This variable is used specify SDP service name.

$(ServiceName) variable have default value anyRemote

The same can be done by specifying -name ... command line parameter.

(Init)=Make(var,ServiceName,by_value,myName);

$(FromEncoding)

[Server mode only] Anyremote J2ME client supports only UTF8 encoding.

This variable is used to convert data from specified encoding to UTF8.

(Init)=Make(var,FromEncoding,by_value,ISO-8859-15);

Conversion from specified encoding to UTF8 will be automatically applied to the following commands:

ExecAndSet(list,add|replace,...);
ExecAndSet(iconlist,add|replace,...);
ExecAndSet(filemanager,add|replace,left|right...);
	

Reverse conversion to specified encoding from UTF8 will be automatically applied to the $(Param) environment variable.

$(ToEncoding)

[Server mode only]This variable is used along with $(FromEncoding). In most cases there are no needs to change it.

$(ToEncoding) variable have default value UTF-8

Variables used by web and XML services interfaces

$(ScreenSize)

[only by web interface] This variable should be set to minimal value of width and heigth of device screen size. Default value is 240.

(Init)=Make(var,ScreenSize,by_value,480)

$(RefreshPage)

[by web and XML services interfaces] This variable to automatically refresh page. Refresh rate should be specified in seconds. Default value is -1 that means no refresh.

(Init)=Make(var,RefreshPage,by_value,5)

$(IpAddr)

[only by XML services interface] This variable defines IP address of computer with anyRemote, which will be used in XML replyes. Default value is platform dependent.

Variables used only in AT-mode

$(AutoConnect)

[AT-mode only] This variable can be set to true or false and have default value false.

If value of this variable is true, then anyRemote will try to re-connect to phone automatically.

The same can be done by specifying -a command line parameter.

(Init)=Make(var,AutoConnect,by_value,true)

$(AutoRepeat)

[AT-mode only] This variable can be set to true or false and have default value false.

This variable is used to switch on/off auto repeat feature (as on PC keyboard - about 10 times per second). Useful for mouse and keyboard emulation.

(Init)=Make(var,AutoRepeat,by_value,true)

$(Baudrate)

[AT-mode only] Baudrate to use; default value is 19200

Possible values for Baudrate could be:

  • 300
  • 1200
  • 2400
  • 9600
  • 19200
  • 38400
  • 57600
  • 115200 (if supported)
  • 230400 (if supported)
(Init)=Make(var,Baudrate,by_value,9600);

$(CharSet)

[AT-mode only] This variable will have default value 8859-1.

This variable allows to specify charset by AT+CSCS=... command.

(Init)=Make(var,CharSet,by_value,8859-1)

$(CmerOff)

[AT-mode only] This variable is used to tune AT+CMER=... command which exits phone from "echo" mode. In "echo" mode phone will send key codes of pressed buttons to anyRemote. This variable have no default value. If this variable is not set anyRemote will try to determine it automatically.

(Init)=Make(var,CmerOff,by_value,AT+CMER=0,0,0,0,0)

$(CmerOn)

[AT-mode only] Used when anyRemote is in AT-mode only.

This variable is used to tune AT+CMER=... command which enters phone in "echo" mode. In "echo" mode phone will send key codes of pressed buttons to anyRemote. This variable have no default value. If this variable is not set anyRemote will try to determine it automatically.

(Init)=Make(var,CmerOn,by_value,AT+CMER=3,2,0,0,0)

$(TwoWayComm)

[AT-mode only] Send or don't send any commands (SendCKPD(), etc.) to the phone. Can be set as true or false. Default value is false.

(Init)=Make(var,TwoWayComm,by_value,true)

$(RetrySeconds)

[AT-mode only] Duration in seconds beetween attempts to reconnect to the phone in case if connection fails. Default value is 60. Works in conjunction with AutoConnect parameter.

(Init)=Make(var,RetrySeconds,by_value,120);

$(ToMainMenu)

[AT-mode only] CKPD sequence which used to reach main screen of the phone from any of phone's menus. For example, on Motorola-V500 to press "Red Cancel" button is enough to get out from any menu.

If set, that sequence will be sent to phone after each key press. Default value is empty string. This parameter is a kind of shortcut which allows not to specify SendCKPD(E) command for each Key_Code.

(Init)=Make(var,ToMainMenu,by_value,E);

Variables used only in iViewer mode

$(IViewer)

[iViewer mode only] This variable can be set to true or false and have default value false.

If value of this variable is true, then anyRemote will use it as a hint to optimize handling of iViewer heartbeat messages.

(Init)=Make(var,IViewer,by_value,true)

Parametrized replies

[Server-mode only] There are $(Param) and $(Index) variables defined in handling command issued from anyRemote client menus. Use $$ inside braces to specify parametrized commands.

Choose($$)=Exec(xmmsctrl track $(Index));\
           Exec(kdialog --msgbox "Selected track is $(Param)")

User-defined variables

In addition to the predefined internal variables it is possible to define custom internal variables with Make(var,....) command.

5=Make(var,my_variable,by_value,3.141526);
5=Make(var,now_is,echo "Now is "`date`);
anyremote-6.7.1/doc-html/mode.html0000644000232200023220000001651512061426051017424 0ustar debalancedebalance anyRemote · Control your computer with your phone

Which mode to choose ?

anyRemote can be used in two modes:

As Server by BT, IR, Wi-Fi or GPRS connection

It will be able to accept incoming connection through Bluetooth connection from JSR-82-capabled phone or from network. This is called "Server-mode".

In addition it is possible to use anyRemote2http package to organize web interface for anyRemote. With help of this interface any device which contains web browser and can connect to PC with anyRemote by TCP/IP (GPRS, Wi-Fi, ...) could be used as remote control.

If anyRemote works as server with BT connection it can emulate to some extent Bemused server.

As Client by BT, IR or cable connection

It will connect through Bluetooth or IR or cable to the phone (which could be not-JSR82-capabled) and will use AT "modem" commands to manage the phone. This is called "AT-mode". In this case phone should support event-reporting feature.

anyremote-6.7.1/doc-html/install.html0000644000232200023220000001611112061426051020136 0ustar debalancedebalance anyRemote · Control your computer with your phone

Compilation and installation of anyRemote

For some distros there are available pre-built packages. Otherwise it is possible to install anyRemote from source.

Compilation

The procedure is very straightforward:

./configure --prefix=/usr
make

Installation

... is even more simple ...

su -c "make install"

Installation of Gnome and KDE front-ends

There are no needs to compile the front-end, since they are written in python

So, all could be done by the commands:

./configure --prefix=/usr
su -c "make install"

If something goes wrong ...

  • ... be double sure all software prerequisites are installed.
  • The most frequent mistake is the absense of Bluez development packages.
  • Read the FAQ page.
anyremote-6.7.1/doc-html/contacts.html0000644000232200023220000000571112061426051020312 0ustar debalancedebalance anyRemote · Control your computer with your phone

Contact

We will be pleased for any questions, suggestions, patches and examples of configuration files!

anyremote-6.7.1/doc-html/devices.html0000644000232200023220000004473712061426051020131 0ustar debalancedebalance anyRemote · Control your computer with your phone

Tested devices

anyRemote is known to work with with the following phones:

Manufacturer Model Server mode AT-mode
Bluetooth Wi-Fi Bluetooth
Asus P535 no yes N/A
BenqSiemens E71, EL71 N/A no yes
BenqSiemens S68 yes no yes
BlackBerry Javelin 8900 yes no yes
HTC Wildfire yes yes N/A
HTC 3450, TyTN no yes N/A
LG KC910, GS500 yes no N/A
Motorola A1200, E770v, L7, V360, V3xx yes no N/A
Motorola L6,V3i yes no yes
Motorola V500 no no yes
Motorola E2, V551 N/A no yes
Motorola K1m N/A no yes
Motorola KRZR K1,RIZR Z3 yes no yes
Motorola V6 N/A no yes
Nokia 5500 Sport,6111,6288 yes no no
Nokia 2630,3500 Classic yes no no
Nokia 5200,5230,5300,5310,5610 yes no no
Nokia 5530,5800XM yes no no
Nokia 6021,6085,6103,6120 Classic yes no no
Nokia 6131,6151,6230i,6233,6234,6270,6280 yes no no
Nokia 6300,6303 classic,6500,6600,6630,7610,7900 Prism yes no no
Nokia 7210 Supernova yes no no
Nokia E51 N/A yes no
Nokia E61,E71,N82 yes yes no
Nokia E60,E65,E70,E72,E75 yes N/A no
Nokia N70,N80,N95,9500 yes N/A no
Nokia N8,N97 mini yes N/A no
Nokia C5-00 5MP, X3-02 yes N/A no
Sagem myX6-2 no no yes
Sagem my401X N/A no yes
Sagem my501c no no yes
Sagem my700Xi no no yes
Samsung Galaxy Mini (S5570), Galaxy S (GT-I9000) yes yes N/A
Samsung SGH-D900,SGH-E590,SGH-F480,SGH-L870 yes no N/A
Samsung SGH-G600,SGH-U600,GT-S8000,S5230W yes no N/A
Samsung GT-B2710,GT-S6102,S7220 yes N/A no
Siemens S55,CX75 no no yes
Siemens S65 yes no yes
Siemens SL75 yes no N/A
SonyEricsson K700 no no yes
SonyEricsson K510i N/A no N/A
SonyEricsson S700i no no yes
SonyEricsson K750 yes no yes
SonyEricsson G705 yes no yes
SonyEricsson D750i, K320i,K770i,K800i,K810i,V640i yes no N/A
SonyEricsson W300i,W610i,W810i,W880i,Z550i yes no N/A
SonyEricsson P1i,P910i,W950i,W960i,W980i yes N/A no

In addition anyRemote is known to work with with the following devices:

anyRemote should also work with other bluetooth/Wi-Fi-enabled devices:

  • Android devices
  • Apple devices (through Command Fusion iViewer)
  • BenqSiemens phones
  • Motorola phones
  • Nokia Series40 and Series60 phones
  • Sony Ericsson phones

Some phone-specific details described here.

Cell phones known not to work:

  • GHT G3
  • LG KG300, KS360, U250, C300 Town, LG KE970 Shine
  • Nokia 6310i
  • Philips Xenium 9@9W (at least in Server mode)
  • Samsung S300
  • Samsung SGH-E780
  • Samsung SGH-X820, SGH-E840, D900i
  • Siemens ME45
  • Sony Ericsson W205
anyremote-6.7.1/doc-html/cfg-server-status.html0000644000232200023220000014666212130533122022066 0ustar debalancedebalance anyRemote · Control your computer with your phone

Application support status (Server mode)

Audio players

Application Operations Playlists Tes ted Co ver X test Mi xer A-In-1 Def
Play Stop Next Previous FF RWD Pause Shu ffle Re pe at Add To Que ue Lo ad Cho ose Add Del
alsaplayer.cfg yes yes yes yes yes yes yes no no yes yes yes yes no 6.2 yes - + + +
amarok.cfg yes yes yes yes yes yes yes yes yes no yes yes no no 6.2 - - - + +
amarok-v4.cfg yes yes yes yes yes yes yes yes yes no yes yes no no 6.0 yes - - - +
aqualung.cfg yes yes yes yes no no yes no no no no no no no 6.2 no - + + +
audacious.cfg yes yes yes yes yes yes yes yes yes no yes yes yes yes 6.2 yes - - + +
banshee.cfg yes yes yes yes yes yes yes yes no no no no no no 6.2 yes - + + +
clementine.cfg yes yes yes yes yes yes yes yes yes no yes yes yes no 6.2 yes - + + +
cmus.cfg yes yes yes yes yes yes yes yes yes yes no no no no 6.0 no - + + +
deadbeef.cfg yes yes yes yes no no yes yes yes yes no no no no 6.0 no - - + +
decibel.cfg yes yes yes yes yes yes yes yes no no yes no no yes 6.2 yes - + + +
exaile.cfg yes yes yes yes yes yes yes no no yes no no no no 6.3 yes - + + +
foobnix yes yes yes yes no no yes no no no no no no no 6.2 no - + + +
gmusicbrowser.cfg yes yes yes yes yes yes yes no yes no no no no no 6.2 yes - + + +
guayadeque.cfg yes yes yes yes yes yes yes no no no no no no no 6.2 yes - + + +
juk.cfg yes yes yes yes yes yes yes no no no no no no no 6.2 yes - - + +
kscd.cfg yes yes yes yes yes yes yes no no no yes yes no no 6.0 no - - + +
listen.cfg yes yes yes yes yes yes yes no no no no no no no 6.2 yes - + + +
moc.cfg yes yes yes yes yes yes yes yes yes yes no no no no 6.2 yes - + + +
mpd.cfg yes yes yes yes yes yes yes yes yes no yes yes no no 6.0 no - - + -
mpris.cfg yes yes yes yes yes yes yes yes yes no no no no no 6.2 no - + + -
noise.cfg yes yes yes yes yes yes yes no yes no no no no no 6.2 no - + + +
qmmp.cfg yes yes yes yes yes yes yes yes yes no yes no no no 6.2 yes - + + +
quodlibet.cfg yes yes yes yes yes yes yes yes yes yes no no no no 6.2 yes - - + +
tomahawk.cfg yes yes yes yes yes yes yes yes no no no no no no 6.2 yes - + + +
rhythmbox.cfg yes yes yes yes yes yes yes no yes no no no no no 6.2 yes - + + +
xmms2.cfg yes yes yes yes yes yes yes yes no no yes yes no no 6.2 yes - - + +

Video players

Application Operations Playlists Tested Xtest Mixer A-in-1 Def
Play Stop Next Previous FF RWD Pause Fullscreen Load Choose Add Del
dragon.cfg yes yes no no yes yes yes yes no no no no 6.0 - - + +
kaffeine.cfg yes yes yes yes yes yes yes yes yes yes no no 6.0 - - + -
kmplayer.cfg yes yes no no yes yes yes yes no no no no 6.0 - + + +
kplayer.cfg yes yes no no yes yes yes yes no no no no 6.0 - - + +
mplayer.cfg yes yes no no yes yes yes yes no no no no 6.0 - - + +
smplayer.cfg yes yes no no yes yes yes yes no no no no 6.0 + - + +
totem.cfg yes yes no no yes yes yes yes no no no no 6.0 - + + +
vlc.cfg yes yes yes yes yes yes yes yes no no no no 6.0 + + + +
xine.cfg yes yes no no yes yes yes yes no no no no 6.0 - + - -

TV players

Application Operation Channel list Tested Xtest Mixer A-in-1 Def
Play Next Previous Fullscreen Load Choose
kdetv.cfg yes yes yes yes no no 6.0 - - + -
tvtime.cfg yes yes yes yes no no 6.0 - - + -

Media Centers

Presentations

Application Operations Tested Xtest All-i-1 Def
First Last Next Prev Zoom + Zoom - Slideshow Go To Page Fullscreen
djview.cfg no no yes yes yes yes no no no 6.3 + + +
evince.cfg yes yes yes yes yes yes yes no yes 6.0 + + +
impress.cfg yes yes yes yes no no no no yes 6.0 + + +
impressive.cfg yes yes yes yes no no no no yes 6.0 + + +
okular.cfg yes yes yes yes yes yes yes no yes 6.0 + + +

Picture Viewers

Application Operations Tested Xtest A-in-1 Def
First Last Next Prev Slideshow Zoom+ Zoom- Fit Rotate Fullscreen Open on phone
comix.cfg yes yes yes yes no yes yes yes yes yes no 6.0 + + +
digikam.cfg no no yes yes no no no no no no no 6.0 + - -
eog.cfg yes yes yes yes no yes yes yes yes yes no 6.0 + + +
gpicview.cfg yes yes yes yes yes yes yes yes yes yes no 6.0 + + +
gthumb.cfg yes yes yes yes yes yes yes yes yes yes no 6.0 + + +
gwenview.cfg yes yes yes yes no yes yes yes yes yes no 6.0 - + +
anyremote-6.7.1/doc-html/setup-server.html0000644000232200023220000002360412305371322021142 0ustar debalancedebalance anyRemote · Control your computer with your phone

Setup anyRemote to work in Server mode

  • Be sure what bluetooth subsystem is working.
  • Page and inquiry scan must be enabled on bluetooth interface. This can be done by command:
    hciconfig hci0 piscan
  • It is suggested to pair Your bluetooth phone with PC before.
  • If You plan to connect to the phone over bluetooth, verify from phone specifications is Your phone JSR-82-capabled or not.

You need to install anyRemote client on Your phone.

If You have Android phone, it needs to upload *.apk file to it.

If You have J2ME phone, it is possible to use

  • GUI frontend or KDEbluetooth or gnome-obex-send (be sure that anyremote-J2ME-client package is already installed) or
  • through WAP from download area.

Supported hardware

Cell phones known to work:

  • BenqSiemens EL71, S68
  • Motorola phones (details)
  • Nokia Series40 and Series60 phones (details)
  • Samsung SGH-D900,SGH-E590,SGH-L870,SGH-G600,SGH-U600
  • Siemens S65
  • SonyEricsson phones (details)
  • some of WinMobile devices with installed Esmertec Jeodek midlet manager

Cell phones known not to work:

  • Nokia 6310i
  • Philips Xenium 9@9W (at least in Server mode)
  • Samsung S300
  • Samsung SGH-E780
  • Samsung SGH-X820, SGH-E840

Some phone-specific details described here.

Starting anyRemote

Bluetooth connection

  • Run anyRemote with -s bluetooth:XX command line option, where XX is a channel number. Default channel is 19. You could choose other bluetooth channel instead of 19. (Alternatively it is possible to add command
    Make(var,Device,by_value,bluetooth:XX);
    to the (Init)= ... command sequence.
    )
  • So, run anyremote -f .../some_cfg_file.cfg -s bluetooth:XX
  • Run the client in the phone.
  • Start search in the client. Then connect to anyRemote server when it found.
  • See examples in cfg-data/Server-mode and cfg-data/Bemused-emulation directories to understand how to write custom-made configuration files.

Network connection

anyRemote can accept incoming connection from network, so if You start it with -s tcp:5197 command line option it will be possible to connect to anyRemote from phone through GPRS or Wi-Fi connection.

anyremote -f .../some_cfg_file.cfg -s tcp:5197

You can choose another port then 5197.

If You plan to connect to anyRemote through network, then it needs to manually specify address to connect in the client. It should be in form socket://_your_ip_address_:_port_. Be sure You have run anyRemote with -s tcp:_port_ in this case.

IR connection

anyRemote can work through IR connection if java realization in cell phone support access to IR port. In this case start anyRemote with -s local:/dev/ircommX command line option, where /dev/ircommX is device corresponding to IR adapter of PC.

anyremote -f .../some_cfg_file.cfg -s local:/dev/ircomm0

If java realization in cell phone supports access to IR port, then after search process there will be found peer with name like comm:IR0

anyremote-6.7.1/doc-html/setup-at.html0000644000232200023220000002351212061426051020235 0ustar debalancedebalance anyRemote · Control your computer with your phone

Setup anyRemote to work in AT mode

Be sure that ...

  • ... bluetooth subsystem is working. Your bluetooth phone should be paired already.
  • If You use IR connection, IrDA service should be configured and the phone should be visible in output of irdadump utility.
  • If You plan to use cable connection, be sure the cable is plugged-in :).

Definition

Mobile Equipment Event Reporting functionality means what cell phone is able to send the unsolicited result codes for key presses, display changes, and indicator state changes.

  • AT+CKPD command: AT command which emulate presing on phone keypad
  • AT+CMER command: AT command which enables/disables event reporting feature
  • CKPD key: CKPD command has the following format AT+CKPD="X", where "X" is key-kode for button to emulate. So, CKPD key is "X"
  • CKPD sequence - sequence of CKPD keys.

Supported hardware

anyRemote will try to determine phone model automatically, so just try any of configurational file from cfg-data/AT-mode directory. It should works out-of-the box for Motorola, Siemens and SE users. If You was not lucky please read further.

Firstly it needs to verify if your phone will work with anyRemote at all. Cell phones known to work:

  • Benq-Siemens EL71, S68
  • Motorola L6, V3i, V500 (Bluetoon and Cable), seems all Motorola V*** phones
  • Sagem-my700Xi, Sagem-my6X-2
  • SE-K700, K750 (Bluetooth and IR), it should works with T610/T630 and all modern non Symbian-based SE phones
  • Siemens S55, S65, CX75

Cell phones known not to work:

  • Nokia 6310i, 6021 (6021 supported in Server mode)
  • Samsung S300
  • Siemens ME45

Some phone-specific details described here.

Bluetooth connection

Switch on bluetooth on cell phone and set it in discoverable mode. Run hcitool scan command. You will see somthing like:

hcitool scan
Scanning ...
		00:07:3A:08:EE:74       Nokia

Then run sdptool browse XX:XX:XX:XX, where XX:XX:XX:XX is bluetooth address found at the previous step. You will see something like:

sdptool browse 00:07:3A:08:EE:74
Browsing 00:07:3A:08:EE:74 ...
Service Name: Dial-up networking
Service RecHandle: 0x10000
Service Class ID List:
  "Dialup Networking" (0x1103)
  "Generic Networking" (0x1201)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 1
...
Service Name: COM 1
Service RecHandle: 0x10002
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 3
...

Search for "Serial Port" or "Dialup Networking" services and their channel numbers.

To connect anyRemote to the phone it needs to run it with -s rfcomm:XX:XX:XX:XX:Y command line parameter, where Y is the channel number.

Does the phone support Event Reporting?

You have to test, if the phone supports Event Reporting feature. See details here. If phone does not support Event Reporting then it cannot be managed by anyRemote in AT mode.

Does the phone support keypad emulation events?

You have to test, if the phone supports keypad emulation events. See details here. If phone does not support keypad emulation events then it still can be managed by anyRemote in AT mode, but SendCKPD(...) command will not work.

anyremote-6.7.1/doc-html/dbus.html0000644000232200023220000002476312061426051017441 0ustar debalancedebalance anyRemote · Control your computer with your phone

Dbus(...) command

This command used to support D-BUS natively.

Format description

Dbus(connect,_id_,_service_,_path_,_interface_)
Dbus(set,_id_,_method_,[int|uint|double|bool|string,_value_])
Dbus(get,_id_,_method_,int|double|bool|string,_variable_name_)
Dbus(signal,_id_,_method_,_int|double|bool|string,_callback_key_)
Dbus(close,_id_)

Several examples:

(Connect)=Dbus(connect,rhythmbox_connection,\
                org.gnome.Rhythmbox,\
                /org/gnome/Rhythmbox/Player,\
                org.gnome.Rhythmbox.Player);
(Disconnect)=Dbus(close,rhythmbox_connection);

1=Dbus(set,rhythmbox_connection,previous);
3=Dbus(set,rhythmbox_connection,next);

% rewind +/-10 seconds
4=Dbus(get,rhythmbox_connection,getElapsed,uint,elapsed);\
	Make(var,elapsed,echo "$(elapsed)-10"|bc);\
	Dbus(set,rhythmbox_connection,setElapsed,uint,$(elapsed));
6=Dbus(get,rhythmbox_connection,getElapsed,uint,elapsed);\
	Make(var,elapsed,echo "$(elapsed)+10"|bc);\
	Dbus(set,rhythmbox_connection,setElapsed,uint,$(elapsed));
        
0=Dbus(signal,rhythmbox_connection,playingUriChanged,string,RHYTHMBOX_SETTITLE);
RHYTHMBOX_SETTITLE=ExecAndSet(title,rhythmbox-client --print-playing);

Dbus(connect,...)

This command used to establish permanent D-BUS connection.

(Connect)=Dbus(connect,rhythmbox_connection,\
                org.gnome.Rhythmbox,\
                /org/gnome/Rhythmbox/Player,\
                org.gnome.Rhythmbox.Player);

Dbus(close,...)

This command used to close existing D-BUS connection.

(Connect)=Dbus(close,rhythmbox_connection);

Dbus(set,...)

This command used to invoke some method on existing D-BUS connection. Called method can not have more than one input parameter. Only int, uint, double, bool or string parameters are supported. Called method can not return any values.

1=Dbus(set,rhythmbox_connection,previous);
2=Dbus(set,rhythmbox_connection,setElapsed,uint,$(elapsed_time));

Dbus(get,...)

This command used to invoke some method which can returns some value on existing D-BUS connection. Called method can not have input parameters. Only int, uint, double, bool or string return values are supported.

3=Dbus(get,rhythmbox_connection,getElapsed,uint,elapsed);\
  Exec(echo "Elapsed time is $(elapsed)");

Dbus(signal,...)

This command used to register signal handler on existing D-BUS connection. A specified key definition will be searched upon receiving of the signal.

0=Dbus(signal,rhythmbox_connection,playingUriChanged,string,RHYTHMBOX_SETTITLE);
RHYTHMBOX_SETTITLE=ExecAndSet(title,rhythmbox-client --print-playing);

How to find appropriate D-BUS methods ?

The simplest way to do that is to use qdbus utility.

Just run qdbus to see something like:

qdbus
:1.1
org.kde.klauncher
:1.10
org.kde.knotify
...
org.kde.juk
...
org.kde.kmix
...

Then run qdbus org.kde.juk to see available interfaces of Juk:

qdbus org.kde.juk
/
/AudioOutputs
/AudioOutputs/8
/KIO
/KIO/Scheduler
/MainApplication
/Player
/Search
/internal
/internal/PhononXine
/juk
/juk/MainWindow_1
...

To see available methods of /Player interface run:

qdbus org.kde.juk /Player
method void org.kde.juk.player.back()
method int org.kde.juk.player.currentTime()
method void org.kde.juk.player.forward()
method void org.kde.juk.player.mute()
method void org.kde.juk.player.pause()
method bool org.kde.juk.player.paused()
method void org.kde.juk.player.play()
method void org.kde.juk.player.play(QString file)
...

Now we are ready to create a part of configuration file:

(Connect)=Dbus(connect,juk_connection,\
                org.kde.juk,/Player,org.kde.juk.player);
1=Dbus(set,juk_connection,back);
2=Dbus(set,juk_connection,play);
3=Dbus(set,juk_connection,forward);
anyremote-6.7.1/doc-html/thanks.html0000644000232200023220000001454712216352377020006 0ustar debalancedebalance anyRemote · Control your computer with your phone

Special thanks to

  • Dmitry Ashkadov for Amarok and keyboard+Mouse emulation configuration files
  • Johan Axfors for testing with Nokia-6021
  • Marcos Venilton Batista for Brazilian Portuguese translation
  • Johann Bauer for German transaltion and Amarok configuration file
  • Arthus Belliqueux for Cmus configuration file
  • Andreas Benzing for Nokia-E70 configuration file
  • Hendrik Bilges for testing with Motorola-E770V
  • Karl Bowden for testing with SE-W300i and network connection
  • Arthur Calvinh for enhancing juk configuration file
  • Dale Cooper for testing with Sagem-my700Xi and Sagem-my6X-2
  • Pierre Dumot for testing with Samsung SGH-U600
  • Tarcisio Fedrizzi for testing with Nokia-6151
  • Gabriele Flammia for the patch for Amarok and Kaffeine configuration file
  • Kevin Fox for Motorola-K1m patch
  • Fabian Frank for Guayadeque configuration file
  • Matti Jokinen for Finnish and Swedish translations
  • Marcus Hardt for Digikam configuration file
  • Van Wout Heeswijk for QuodLibet configuration file
  • Philippe Hensel for French translation
  • Tim Hicks for MythTV configuration file
  • Daniel Holm for Swedish translation
  • Jordi Gimenez for J2ME client enhancements
  • Tomas Kaluza for testing with Sagem-my501c and Czech translation
  • Adriaan van Kekem for gThumb configuration file
  • Alexander Klepikov for J2ME client enhancement
  • Sebastian Kraft for anyRemote icon set
  • Martin Lettner for the web design
  • Alexander Logvinov for FreeBSD tesing
  • Florian Loitsch for testing with Siemens-S55
  • Christian Lorch for testing with Benq-Siemens-S68
  • Carlos Sanchez Mateo for Spanish translation and amarok-v3 configuration file
  • Alberto Melati for testing with Samsung SGH-E780
  • Timo Milosic for testing with Siemens-S65 and SE-K800i with J2ME client
  • Manuel Monge for enhansing WEB interface
  • Jesús Vidal Panalés for Amarok/KDE4 configuration file
  • Lorenzo Pérez de Arce for Clementine configuration file
  • Stanislav Popov for Bulgarian translation
  • Massimo Robbiati for Italian translation and kaffeine-v2 configuration file
  • Alex Samorukov for FreeBSD porting
  • s_erge for DeadBeef configuration file
  • Ioannis Servetas for Greek translation
  • Gyuris Szabolcs for Hungarian translation, Xmms2 configuration file and testing with SonyEricsson-W205
  • Domjan Svilkovic for testing with Motorola-V360
  • Marek Szuba for Polish translation
  • Eugeny Tereshkov for bugfixes and advices
  • Francisco Toca for Spanish translation
  • Michal Tóth for Slovak translation
  • Sebastian Turzanski for testing with Motorola-A1200
  • Miklos Vajna for Hungarian translation
  • Everthon Valadão for XBMC configuration file
  • Geert Vanhaute for Dutch translation
  • Mikael Werner for testing anyRemote with iPod Touch and creation Command Fusion iViewer GUI file
  • Whoopie for testing with Nokia-6230i
  • Pierre Yves for testing with Nokia-E71
  • Christian Zehetner for Austrian translation
  • Artem Zolochevskiy for testing with Siemens-S55
anyremote-6.7.1/doc-html/emulate.html0000644000232200023220000002230412061426051020125 0ustar debalancedebalance anyRemote · Control your computer with your phone

Emulate(...) command

This command used to emulate keyboard and mouse events.

Format description

Emulate([_emulation_command_[,_params_]]....)

Several examples:

0=Emulate(key,1)
1=Emulate(mouse,3)
2=Emulate(mousedown,1,mousermove,100,100,mouseup,1)
3=Emulate(keydown,Control_L,key,c,keyup,Control_L)
4=Emulate(keydown,by_value,0xffe3,key,by_value,0x0063,keyup,0xffe3)

Emulation command can be the following:

key, _key_emulate press and release button _key_ on keyboard
key, by_value, _key_value_emulate press and release _key_value_ on keyboard
keyup, _key_emulate only release of button _key_ on keyboard
keyup, by_value, _key_value_emulate only release _key_value_ on keyboard
keydown, _key_emulate only press of button _key_ on keyboard
keydown, by_value, _key_value_emulate only release _key_value_ on keyboard
mouse, _button_emulate press and release of mouse button _button_ (1,2,3...)
mouseup, _button_emulate only release of mouse button _button_ (1,2,3...)
mousedown, _button_emulate only press of mouse button _button_ (1,2,3...)
mousedblclickemulate double click by left mouse button
mousemove,_x_,_y_emulate mouse moving to coordinates (_x_,_y_)
mousermove,_x_,_y_emulate mouse moving form current location by coordinates (_x_,_y_)
sleep,_msec_sleeps _msec_ microseconds before processing next emulation command

In single Emulate(...) command it is possible to use several emulation command:

3=Emulate(keydown,Control_L,key,c,keyup,Control_L)

Symbolic values for keys to emulate could be obtained from /usr/X11/include/X11/keysymdef.h file. It needs to discard XK_ prefix from keysym definition to use it in Emulate(...) command.

In addition to this, it is possible to use the following symbolic values (from /usr/X11/include/X11/XF86keysym.h):

  • AudioForward
  • AudioLowerVolume
  • AudioMute
  • AudioNext
  • AudioPause
  • AudioPlay
  • AudioPrev
  • AudioRaiseVolume
  • AudioRewind
  • Back
  • Close
  • Eject
  • Forward
  • MonBrightnessDown
  • MonBrightnessUp
  • PowerOff
  • WakeUp

Numeric values for keys to emulate could be obtained from /usr/X11/include/X11/keysymdef.h and /usr/X11/include/X11/XF86keysym.h files. They can be specified in decimal (like 32) or hexadecimal (like 0x00FF) form.

Mouse buttons (1-3) are numbered from left to right.

If You have some problems with handling "Shifted" keys like numbersign(#), please try to use

0=Emulate(keydown,Shift_L);Emulate(key,numbersign);Emulate(keyup,Shift_L);

instead of just

0=Emulate(key,numbersign)
anyremote-6.7.1/doc-html/conf-server.html0000644000232200023220000005221712125547727020747 0ustar debalancedebalance anyRemote · Control your computer with your phone

Configuration file format: Server mode

Configuration file examples

You may find some predefined configuration files in cfg-data/Server-mode and cfg-data/Bemused-emulation directories. After investigation of these configuration files You became more familiar with its format.

Format

Line starting with a % considered as a comment line.

%This is a comment

Long command can be splitted into the several lines. You have to put backslash (\) as the last character to continue a command to the next line.

1=Exec(echo "this is first line");\
Exec(echo "this is second line");

Parameters section

GuiAppName="application name"

GuiAppBinary="name of executable"|"command which returns name of executable"

GuiAppRun="command do determine is application running or not; must returns OK or NOK"

GuiAppIcon="icon name"

GuiAppType=Application|Custom|Example

GuiAppModes=Server|AT|Bemused

GuiAppDesc=Some text

These parameters is used by GUI frontends only.

GuiAppName=Amarok
GuiAppBinary=amarok
GuiAppRun=echo 'A=`dcop | grep amarok`; if [ "x$A" == "x" ]; \
   then echo NOK; else echo OK; fi'|bash -f -s
GuiAppIcon=amarok.png
GuiAppType=Application
GuiAppModes=Server
GuiAppDesc=Application decription
[Protocol]=Server
One=Exec(echo "Hello world!");
...

[Protocol] section

A short example:

[Protocol]=Server

(Init)=\
    Exec(kdialog --msgbox "Initialized");

(Connect)=\
    Exec(kdialog --msgbox "Connected")

(Disconnect)=\
    Exec(kdialog --msgbox "Disconnected")

1=Exec(kdialog --msgbox 1)
2=Exec(kdialog --msgbox 2)
3=Exec(kdialog --msgbox 3)
4=Exec(kdialog --msgbox 4)
5=Exec(kdialog --msgbox 5)

[End]

Format:

Key_Codes=Command1;Command2;Command3;....

Where CommandX could be:

Exec() command

1=Exec(kdialog --msgbox 1)
2=Exec(kdialog --msgbox 2)

anyRemote uses popen system call in Exec() command. This means that command will be executed inside /bin/sh command interpreter.

It is possible to write quite complex commands inside Exec(), for example:

1=Exec(D=`dcop | grep digikam`;\
       if [ "x$D" = "x" ]; then \
           digikam & \
       else \
           dcop $D MainApplication-Interface quit;\
       fi);

It is possible to define multi-key commands

3 1=Exec(kdialog --msgbox 3_1)
3 2=Exec(kdialog --msgbox 3_2)
3 3 1=Exec(kdialog --msgbox 3_3_1)

It is not good idea to define:

3 3=Exec(kdialog --msgbox 3_3)
3 3 1=Exec(kdialog --msgbox 3_3_1)

simultaneously, since only one command will works (which one - depends on search order).

It is possible to group keymappings in so-called "mode" to set more than one command to the key.

Modes supports inheritance - in example below mode child is inherited from modes parent1 and parent2.

0=Exec(kdialog --msgbox 0)
1=Exec(kdialog --msgbox 1)
2=Exec(kdialog --msgbox 2)

[Mode]=child  : parent1,parent2
1=Exec(kdialog --msgbox 1_in_Mode_2)
2=Exec(kdialog --msgbox 2_in_Mode_2)
[ModeEnd]

[Mode]=parent1
3=Exec(kdialog --msgbox 3_in_Mode_p1)
[ModeEnd]

[Mode]=parent2
4=Exec(kdialog --msgbox 4_in_Mode_p2)
[ModeEnd]

If current mode is not default mode (see Make(mode ...); command), then firstly key will be searched in current mode and if not found then it will be searched in parent modes (if it exists) and then in default mode.

Note: As a result it needs to use (EnterMode) and (ExitMode) "events" very carefully in default mode.

Macro() command

This command used to create new keymapping:

1=Macro(Macro1)
Macro1=Exec(kdialog --msgbox 1);Exec(kdialog --msgbox 2)

Macro() command can contains condition:

0=Make(var,macro_test,echo "0");
1=Macro(Macro1,by_value,$(macro_test));
2=Macro(Macro2, if [ -f /tmp/file_name ];\ 
                then true; else false; fi; echo $?)
Macro2=Exec(kdialog --msgbox "Condition is OK")

Conditional Macro() will be execute only if a result of variable substitution or execution of the command is equal to string "0".

Note: In shells result code of command execution stored in $? environment variable.

Set() command

These commands used to control and customize GUI of the client. See detailed description here.

It is possible to change:

  • caption of screen
  • title and status fields
  • arrange icons from predefined icon set,
  • change background and foreground color,
  • change font size
  • change icon layouts
  • use internal vibrator of the phone
  • set fullscreen mode
  • set debug mode
  • show text on the screen of cell phone
  • show list on the screen of cell phone
  • add custom menus
Example of how the client can look like Example of how the client can look like

ExecAndSet() command

Format: ExecAndSet(tag,command)

This command similar to the Set(), but uses the output of command specified as a string to set GUI elements of the client specified in tag field. See detailed description here.

5=ExecAndSet(title,dcop amarok player nowPlaying);
6=ExecAndSet(status,date)

Timer()

Format:

Timer(key, timeout, maxTimes) or

Timer(key, cancel|pause|continue|reset|restart)

This command sets/removes a timer for the key specified. A command sequence, associated with this key will be executed periodically.

For example, the following commands run 'dcop amarok player nowPlaying' command 2 times with timeout equal to 5 sec and set result to the title field of the client:

1=Timer(TimerCmd, 5, 2)
TimerCmd=ExecAndSet(title, dcop amarok player nowPlaying)

The following command run 'date' command every 10 sec and set result to the status field of the client:

2=Timer(Timer2, 10, 0)
Timer2=ExecAndSet(status, date)

It is impossible to have two active timer commands with the same key.

To delete existing timer use the following command:

3=Timer(TimerName,cancel)

To reset timer use the following command:

4=Timer(TimerName,reset)

To completely restart timer use the following command:

5=Timer(TimerName,restart)

This command resets timer and resets counter of timer's executions

Also, see note about data caching.

Load() command

This command used to load commands from file and execute them:

1=Load(file_name.cmds)

Include() command

This command used to include definitions from external configuration file:

1=Include(xmms.cfg)

Definitions from included file will not rewrite any of existing definitions.

Send() command

Format:

Send(string, string_value) or

Send(byte, byte_value1, byte_value2,...)

Sends to the the client specified string or sequence of bytes. This command is used in Bemused server emulation.

1=Send(string, simple_string)

byte_valueX is string representation of 1 - 255 values. Send(byte, ...) command sends to the the client specified bytes of data, one by one. Mainly this command is used to Bemused server emulation.

2=Send(bytes,35,42,0)

ExecAndSend() command

Format:

ExecAndSend(tag,command)

This command similar to the Send(tag, ...), but uses the output of command specified as a string to send. So, it is possible to execute dynamically created command. This command is used in Bemused server emulation.

3=ExecAndSend(string,date)
4=Exec(echo "Set(title,dynamic title)">/tmp/command.txt);\
  ExecAndSend(string,cat /tmp/command.txt)

Get() command

Format:

Get(screen_size|cover_size|icon_size|icon_padding|model|version|cursor|password|ping) or

Get(is_exists,icon,16|32|48|64|96|128,_icon_name_)

Get(is_exists,cover,_cover_name_)

This command used to retrieve from phone some information.

1=Get(screeen_size)
2=Get(model)
3=Get(is_exists,icon,16,next)
4=Get(is_exists,cover,cover_art)
5=Get(cover_size)
6=Get(version)
7=Get(cursor)
8=Get(ping)
9=Get(password)

Get(screeen_size) used to get screen size of cell phone. As a response to this command two replies will be send: SizeX(width,) and SizeY(height,). SizeX(width,) reply will be the first one.

Get(cover_size) used to determine maximal size of cover image which can be shown by Set(cover, ...) command. As a response to this command one reply will be send: CoverSize(_size_,)

If client layout is not initialized or set to default or "3x4" then returned cover size can be set to -1

Get(icon_size) used to determine size of used icon set. As a response to this command one reply will be send: IconSize(_size_,). It is possible to change icon size with Set(parameter,icon_size,...) command.

Get(icon_padding) used to determine icon padding. As a response to this command one reply will be send: IconPadding(_size_,). It is possible to change icon padding with Set(parameter,icon_padding,...) command.

Get(model) used to get "microedition.platform" property of J2ME client. For many phones this property contains manufacturer and model number (like "SonyEricssonK750i/R1CA021" for SE-K750). As a response to this command Model(,_string_) reply will be sent.

Get(is_exists,...) used to determine was cover image or icon with given name and size uploaded to phone or not. As a response to this command IconExists(_size_,_icon_name_)/CoverExists(,_cover_name_) or IconNotExists(_size_,_icon_name_)/CoverNotExists(,_cover_name_) reply will be sent.

Note for Get(is_exists,cover...)command: If client layout is not initialized or set to default or "3x4" then returned reply can be CoverNotExists(,_cover_name_) despite of existense of cover.

Get(version) used to retrieve J2ME/Android client version. As a response to this command Version(,_version_) reply will be sent.

Get(cursor) user to determine cursor position on Image screen of J2ME client. Two replies PosX(x_coord,) and PosY(y_coord,) will be sent. PosX() event will be first one. If current screen of the client is not Image screen then no replies will be sent.

Get(ping) user to send "keepalive" messages to J2ME/Android client. As a response to this command Ping reply will be sent.

Get(password) user to ask password from J2ME/Android client. As a response to this command _PASSWORD_(,_password_) reply will be sent. This reply handled by anyRemote internally, so generally users should not worry about it.

Password should be stored in $HOME/.anyRemote/password file in a plain text.

End() command

Format:

End()

This command used only if -s web:xxxx command line option is used. This commmand used internally and should not be used in configuration files. The purpose of the command is to inform build-in web server about fact what command sequence is fully processed

Make() command

Format:

Make(flush|disconnect|mode|remote|var|alarm[,....])

This command used control local state of anyRemote.

0=Make(flush)
1=Make(mode,mode_2)
2=Make(remote,on)
3=Make(var,my_var,date)

See detailed description here.

Event handlers

There are several "events" could be triggered. See Event handlers page for details.

Variable substitution

In Exec(), Make(var,...), Load(), Include() commands is it possible to use internal "variables". See Variable substitution page for details.

anyremote-6.7.1/doc-html/index.html0000644000232200023220000001335213126472435017615 0ustar debalancedebalance anyRemote · Control your computer with your phone

What is anyRemote?

anyRemote logo The overall goal of this project is to provide remote control service on Linux through Bluetooth, Wi-Fi or just TCP/IP connection.

anyRemote supports wide range of modern cell phones like Nokia, SonyEricsson, HTC, Motorola and others.

It was developed as thin communication layer between Bluetooth (or IR, Wi-Fi) capabled phone and Linux, and in principle could be configured to manage almost any software.

anyRemote is console application, but in addition there are GUI front ends for Gnome and KDE.

Features

Plenty of connection variants

anyRemote can be used by:

  • bluetooth connection with Android or J2ME (if cell phone is JSR82 compatible) clients
  • Wi-Fi connection with Android or J2ME clients if phone supports Wi-Fi
  • IR connection with J2ME client if java realization in phone supports access to IR port
  • ordinary TCP/IP connection with Android or J2ME clients, if PC is connectable from internet
  • bluetooth, infrared or cable connection using AT "modem" commands
  • Web interface
  • it has limited support for Bemused clients
  • experimental support for iPhone/iPod Touch with Command Fusion's iViewer installed

Plenty of compatible phones

anyRemote should work with the following phones:

  • Android devices
  • Nokia Series40 and Series60
  • Sony Ericsson
  • Motorola

You can find complete list of phones and other devices which were tested with anyRemote on the Devices List

Some phone-specific details described here.

Front-ends

There are KDE and Gnome GUI frontends. In addition to this it is possible to control anyRemote with a web interface.

Free as in Freedom

anyRemote is Free Software and released under the GNU GPL 3+ license.

anyremote-6.7.1/doc-html/ev-handlers.html0000644000232200023220000002435012061426051020704 0ustar debalancedebalance anyRemote · Control your computer with your phone

There are several "events" could be triggered

Initialize event

(Init) event will be fired when anyRemote is initialized.

(Init)=Exec(kdialog --msgbox "Initialized")

It is possible to customize handling of (Init) event. To do this, just add needed commands to $HOME/.anyRemote/hook_init file. That commands will be executed after all commands from (Init) event handler in configuration file. For example content of the $HOME/.anyRemote/hook_init can be the following:

Exec(kdialog --msgbox "Initialized")

Exit event

(Exit) event will be fired when anyRemote is exiting.

(Exit)=Exec(rm -f /tmp/tmp.log)

It is possible to customize handling of (Exit) event. To do this, just add needed commands to $HOME/.anyRemote/hook_exit file. That commands will be executed after all commands from (Exit) event handler in configuration file. For example content of the $HOME/.anyRemote/hook_exit can be the following:

Exec(kdialog --msgbox "Exiting")

Connect event

(Connect) event will be fired when connection established.

(Connect)=Exec(kdialog --msgbox "Connected now")

It is possible to customize handling of (Connect) event. To do this, just add needed commands to $HOME/.anyRemote/hook_connect file. That commands will be executed after all commands from (Connect) event handler in configuration file. For example content of the $HOME/.anyRemote/hook_connect can be the following:

Exec(kdialog --msgbox "Connected")

Disconnect event

(Disconnect) event will be fired if connection is lost.

(Disconnect)=Exec(kdialog --msgbox Disconnected)

It is possible to customize handling of (Disconnect) event. To do this, just add needed commands to $HOME/.anyRemote/hook_disconnect file. That commands will be executed after all commands from (Disconnect) event handler in configuration file. For example content of the $HOME/.anyRemote/hook_disconnect can be the following:

Exec(kdialog --msgbox "Disconnected")

Auto-lock example

(Connect)=Exec(killall kdesktop_lock)
(Disconnect)=Exec(kdesktop_lock --forcelock)

Mode changing events

Mode is a group of key-to-command mapping (do not mix this with AT/Server mode !).

If mode is changed by Make(mode ...); then (ExitMode) event for current keymapping group and (EnterMode) event for the new keymapping group will be fired:

*=Make(mode,XMMS)

(ExitMode)=Exec(kdialog --msgbox "Exiting from current mode")

[Mode]=XMMS

% Do some initialization steps
(EnterMode)=Exec(kdialog --msgbox "Enter to XMMS mode");\
            Exec(xmms)

% Do some cleanup steps
(ExitMode)=Exec(kdialog --msgbox "Exiting from XMMS mode");\
           Exec(killall xmms)

[ModeEnd]

Phone call handling

Note for Server mode: This feature can not work for some of Android or JSR-82 capabled phones. It was tested successfully only with SE-K750 and Motorola-RIZR-Z3.

Incoming call

InCall($$)=Exec(kdialog --msgbox "Incoming call from $(Param)")

$(Param) variable will be set to caller ID, if determined.

Answering the call

[Android client only].

AnwerCall($$)=Exec(kdialog --msgbox "Answer to call from $(Param)")

$(Param) variable will be set to caller ID, if determined.

End of call

EndCall($$)=Exec(kdialog --msgbox "Call finished")

Auto-mute example (amixer utility should be installed):

InCall($$)=\
    Exec(amixer sset Master,0 mute);Make(remote,off);
    
EndCall($$)=\
    Make(remote,on);Exec(amixer sset Master,0 unmute)
anyremote-6.7.1/doc-html/ar-lirc.html0000644000232200023220000001611412061426051020024 0ustar debalancedebalance anyRemote · Control your computer with your phone

anyRemote-LIRC (experimental and outdated)

anyRemote-LIRC is a python script which can be used as bridge between anyRemote java client and LIRC. It works as subordinate LIRC server and translates events from java client to LIRC.

Note: anyRemote and anyRemote GUI's is not used with anyRemote-LIRC

A Short How-To

Download generic config file.

Be sure You have correct $HOME/.lircrc or /etc/lircrc file (it must be compatible with generic config file).

Upload java client to the phone.

Run anyRemote-LIRC:

anyremote-lirc -c 19 -l 5051

Run lircd daemon:

lircd -c localhost:5051 [-P /tmp/lircd.pid ] [-L /tmp/lircd.log -n ] \
	/path/to/lircd.conf.devinput

Run search in java client and connect to anyRemote-LIRC.

anyremote-6.7.1/doc-html/set-text.html0000644000232200023220000002271412664332726020271 0ustar debalancedebalance anyRemote · Control your computer with your phone

Set(text ... ) command

This command used to text on the phone screen.

To see an example please take a look at cfg-data/Server-mode/exampleText.cfg file.

Text view screen

Format

Set(text,add|replace, title, _text_) or

Set(text,file, title, _file_) or

Set(text,clear|show|close) or

Set(text,caption|fg|bg|font, _data_)

Usage

Set(text,add|replace|file ...)

Command Set(text,add|replace ...) used to add or replace content of the existing text screen. Updated text will be shown on screen.

1=Set(text,replace,Text,some long text)
2=Set(text,add,SAME,another long text)
3=ExecAndSet(text,replace,Text,more /etc/motd)

Command Set(text,file ...) used to replace content of the existing text screen with content of the file. It is user responsibility to take care about size and file format.

1=Set(text,file,Day Msg,/etc/motd)

The word SAME can be used instead of title if there are no needs to change existing text screen title.

It is possible to add line break characters to the text. It could be done with "\n".

The length of the text which can transferred to phone depends on the phone capabilities. So, be careful with uploading large text files. It will take a really long time and even can crash Java Client.

Set(text,show)

Command Set(text,show) used to show existing text.

3=Set(text,show)

Set(text,clear)

Command Set(text,clear) used to clear existing text.

4=Set(text,clear)

Set(text,close)

Command Set(text,close) used to close text screen. If it is closed, then main window of Java Client will be shown.

Back($$)=Set(text,close)

Set(test,caption ...)

Command Set(text,caption,new_caption) sets the caption of the text window.

4=Set(text,caption,Help)

Set(text,fg|bg ...)

Command Set(text,fg|bg,#XXXXXX|R,G,B) used to set foregroung or background colors, where:

  • #XXXXXX is hexadecimal representation of the color
  • R, G, B are decimal integer values beetween 0 and 255
5=Set(text,fg,#FFFFFF)
6=ExecAndSet(text,fg,echo "255,255,255")

Set(text,font ...)

Command Set(text,font [,small | medium | large] [,bold] [,italic] [,underlined] [,system | monospace | proportional]) used to set font parameters. Java realization in the phone could support only some subset of fonts which can be specified by this command.

6=Set(text,font,medium,italic,system)

Additional

Commands Set(text,add|replace|show,...) will switch current screen if needed to show text screen. Overwise commands Set(text,fg|bg|font|clear,...) will not switch the current screen.

Using special keys

Note: Supported in java client only

Keypad
1
Move to first line
23
Page Up
456
7
Move to last line
89
Page Down
anyremote-6.7.1/doc-html/web.html0000644000232200023220000002044412664335311017260 0ustar debalancedebalance anyRemote · Control your computer with your phone

Web Interface

To use anyRemote with any device which contains web browser and which can connect to PC by TCP/IP (GPRS, Wi-Fi, ...) it is possible to use built-in web interface.

On WinMobile devices it is recomended to use Opera Mobile instead of MS IE, because Opera Mobile handles HTTP caching directives more correctly.

Short How-To

To run web interface you have to:

  • if GUI is used: descend to Setup->Preferences and tick "Run web interface with parameters" check box. Be sure edit fields with web interface parameters are set correctly.
  • if command line is used:

    - run anyRemote with "-s web:_some_port_" parameter. It needs to use Server-mode configuration files.

For example:

anyremote -f /path/to/some/cfg.file -s web:5198

Variables used by web interface

$(ScreenSize)

[only by web interface] This variable should be set to minimal value of width and heigth of device screen size. Default value is 240.

(Init)=Make(var,ScreenSize,by_value,480)

$(RefreshPage)

[only by web and XML services interfaces] This variable to automatically refresh page. Refresh rate should be specified in seconds. Default value is -1 that means no refresh.

(Init)=Make(var,RefreshPage,by_value,5)

Protocol support status

Web interface supports only subset of Set()/Get() commands. The following commands are not supported and will be skipped by Web interface

Set(filemanager, ...)
Set(fullscreen, ...)
Set(image,icon|cursor|nocursor|remove_all)
Set(parameter, ...) (except  icon_padding parameter)
Set(repaint, ...)
Set(layout,...,keypad_only|joystick_only|ticker|noticker|choose|up|down,_button,...)
Set(vibrate, ...)

Command Set(iconlist, ...) interpreted as Set(list, ...)

anyremote-6.7.1/doc-html/set-fm.html0000644000232200023220000002266612061426051017677 0ustar debalancedebalance anyRemote · Control your computer with your phone

Set(filemanager ... ) command

Note: Supported in J2ME client only

File manager This command is used to show the file manager screen.

Format



  • Set(filemanager,add|replace,left|right,_list_of_files_) or
  • Set(filemanager,select,left|right,_index_) or
  • Set(filemanager,show|close)




Usage

Command Set(filemanager,add|replace ...) used to add or replace content of left/right panels of file manager screen.



1=Set(filemanager,replace,left,..,bin,usr)
2=Set(filemanager,add,left,opt,tmp)
3=ExecAndSet(filemanager,add,left,ls -F --quoting-style=shell)

Command Set(filemanager,select,left|right,_index_) moves cursor to element with specified index.

5=Set(filemanager,left,select,1)

Command Set(filemanager,show) used to show file manager screen.

5=Set(filemanager,show)

Note: file manager screen will be shown automatically after Set(filemanager,add|replace ....) command.

Command Set(filemanager,close) used to file manager screen. If it is closed, then main window of the client will be shown.

Back($$)=Set(filemanager,close)

There are several things which needs to be pointed out:

  • All '\r' characters in results of execution of command ExecAndSet(filemanager,add|replace,...) command will be replaced with comma (',') on the client's side. So, it is possible to show commas (',') inside file names.
  • File names numbering starts with 1

Autoscrolling of long lines

If a file name is too long to be shown in full, it will be autoscrolled when it will be under cursor. It it possible to switch on/off autoscrolling by pressing "0" key at phone's keypad.

Multiple selection

It is possible to select group of files by pressing "*" key on the phone's keypad. After this Copy, Move and Delete operation will be applied to the selected files.

Using special keys

Keypad
1
Move to first file
23
Page Up
456
7
Move to last file
89
Page Down
*
Multiple selection
0
Toggle autoscrolling
#

A short desription of the protocol

Unlike list operation, file manager screen issues slightly different commands.

If user chooses FileX in left panel and then chooses MenuItem in menu then command MenuItemL(index_of_FileX,FileX) will be issued.

If user chooses FileX in right panel and then chooses MenuItem in menu then command MenuItemR(index_of_FileX,FileX) willbe issued.

If user selects mutiple files, then a several commands will be issued. The client will send command for each selected file and add "M_" prefix to each command but the last. For example, user want to copy several files from left panel the the right.

Then, the following commands could be issued:

M_CopyL(index_of_FileX,FileX)

(will be sent for each file, but the last), and the last replay will be:

CopyL(index_of_FileY,FileY)

For details, see cfg-data/Server-mode/fileManager2.cfg file.

anyremote-6.7.1/doc-html/iviewer.html0000644000232200023220000002077012305371172020154 0ustar debalancedebalance anyRemote · Control your computer with your phone

Command Fusion iViewer support (experimental)

iViewer

It is posible to use Command Fusion iViewer with anyRemote. iViewer is an remote control application for iPhone and iPod Touch.

Installation of iViewer

To install iViewer on an iPhone or iPod Touch, please follow the procedure below:

  • On your iPhone or iPod Touch, open the AppStore.
  • Press the 'Search' button in the bottom menu to access the Search page.
  • Search for 'iViewer'.
  • Select 'CF iViewer' from the search results.
  • Press the 'Free' button, followed by 'Install'.
  • Enter your iTunes Store account details.
  • The device will then go back to the home menu and begin installing.
  • Once finished, the CF iViewer app icon (house with blue background) will be visible.
  • Before launching the application, the settings must be entered. Otherwise the default built-in GUI will load, which attempts to connect a demo Crestron server.
  • Open the 'Settings' application on your iPhone or iPod Touch (silver icon with gears).
  • Scroll to the bottom and select 'iViewer' from the list.
  • Password for anyRemote is default blank.
  • Enter the URL to the GUI file: http://"IP of Your PC":5003/anyremote.gui
  • If you want the GUI to be updated from the file path on every load (when making changes to the GUI for example) turn ON the 'Reload GUI file' option.

Use it

Run anyRemote with -s tcp:5197,web:5198 -f /path/to/cfg-data/iViever/_some_file_ command line options. For example:

anyremote -s tcp:5197,web:5198 -f /path/to/cfg-data/iViever/amarok.cfg

You may find some configuration files in cfg-data/iViewer directory.

Notes

  • iViewer uses two ports at the same time. One is for downloading GUI files and the other one for command processing.
  • In case of connection problem be sure that firewall on PC is configured correctly. As a quick and dirty check You can try to to disable firewall by iptables -F command.
anyremote-6.7.1/doc-html/faq.html0000644000232200023220000003727212061426051017252 0ustar debalancedebalance anyRemote · Control your computer with your phone

FAQ

  1. When i run configure, it fails with the error: configure: error: cannot find install-sh or install.sh in . ./.. ./../.. message
  2. I have compilation errors. What can i do ?
  3. I run anyRemote and got the following: ERROR: Fails in init_cfg()
  4. I can run anyRemote but something doesn't work ...
  5. Does anyRemote support application XXX?
  6. J2ME client can not find PC with anyRemote
  7. Seems anyRemote works ... but something is going wrong. How can i fix it?
  8. I have tried all suggestions ... but it still doesn't work. What else can I do?
  9. It is impossible to control sound volume with some configuration files.
  10. Should I run Bemused server to make anyRemote work?
  11. Sometimes J2ME client can not connect to anyRemote
  12. I've created a configuration file for application XXX. Can I share it with other anyRemote users?
  13. I've got an error when trying to connect to the phone using cu
  14. kAnyremote crashes with python: xcb_lock.c:33: _XCBUnlockDisplay ... message
  15. I have Nokia Series40 phone and can not upload J2ME client to it
  16. I have Nokia Symbian phone got openConnection Exeption java.io.IOExeption SymbianOS error=-1 : General: System error message
  17. J2ME client can not find PC with anyRemote (Bluez issue)
  18. How can i add some phone-specific initialization command ?
  19. Some application did not woks under KDE4. Why ?
  20. Does anyRemote J2ME client supports WinMobile devices ?
  21. I've got xargs: xargs.c:445: main: Assertion bc_ctl.arg_max <= (131072-2048) error when browse files.
  22. I see no icons in gAnyRemote menu items. How to fix it ?
  23. I see no gAnyRemote/kAnyRemote tray icon in Unity. How to fix it ?
  24. Can not establish connection in KDE4

When i run configure, it fails with the error: configure: error: cannot find install-sh or install.sh in . ./.. ./../.. message

Problem can be solved by executing:

aclocal
automake -a
autoconf

Scroll to top

I have compilation errors. What can i do ?

Make sure all needed development packages are installed on your system. For example, if your compiler can not find bluetooth.h header file, you need to install development packages for Bluez. To determine which package is absent is not so hard. Just remember which file was not found by compiler, then open rpm.pbone.net or rpmfind.net and try to search the package you need to install.

Scroll to top

I run anyRemote and got the following: ERROR: Fails in init_cfg()

you have to specify a configuration file which will be used by anyRemote:

anyremote -f /path/to/configuration/file

Scroll to top

I can run anyRemote but something doesn't work ...

Try to localize problem. Do not use GUI frontends and run anyRemote from command line with -log option set. Do not test configuration files one by one. Just choose the simplest one, like kdialog.cfg and inspect what does work and what does not. Look at $HOME/.anyRemote/anyremote.log for error messages.

Scroll to top

Does anyRemote support application XXX?

In principle it is possible to support almost any application with anyRemote. There are several ways to do that:

  • Some appication (for example Tvtime, Xdtv, Xmms) have command line management utility.
  • KDE4 and Gnome applications can supports D-BUS interface.
  • KDE3 applications supports DCOP command-line interface.
  • Finally it is possible to manage application with keyboard and mouse emulation. Use Emulate(...) command to do that. If you are not satisfied with Emulate(...) command it is possible to use external software like XAutomation

Scroll to top

J2ME client can not find PC with anyRemote

Be sure you are using a Server-mode configuration file. Be sure the page and inquiry scan are enabled on bluetooth interface (this could be done with command hciconfig hci0 piscan). Also see #17

Scroll to top

Seems anyRemote works ... but something is going wrong. How can i fix it?

Well, different phones works differently, so it can happen. Try to upgrade to the latest version of anyRemote. Inspect <home>/.anyRemote/*anyremote.log files to determine the possible reasons of undesirable behavoiur. Make sure you have run anyRemote with -log command line parameter. Also, make sure that the version of the J2ME client is the same as the version of anyRemote.

Scroll to top

I have tried all suggestions ... but it still doesn't work. What else can I do?

Send an e-mail to anyremote@mail.ru. Please, describe the problem, specify phone model and version of distro you have. Also attach to the letter full log file ($HOME/.anyRemote/*anyremote.log.*) as well as terminal output of anyRemote.

Scroll to top

It is impossible to control sound volume with some configuration files.

See Tips & Tricks page.

Scroll to top

Should I run Bemused server to make anyRemote work?

No. AnyRemote does not use Bemused server. It could emulate it to some extent instead. See this for details.

Scroll to top

Sometimes J2ME client can not connect to anyRemote

This could happen if J2ME client tries to connect to anyRemote at the moment when bluetooth browsing process is active. In normal situation KDEBluetooth or anyRemote GUI tries to find bluetooth devices around from time to time. Unfortunately this could prevent the J2ME client to connect to anyRemote. You can just wait a bit and try to connect again.

Scroll to top

I've created a configuration file for application XXX. Can I share it with other anyRemote users?

Definitely. Send a letter with a short description and attached configuration file. We'll add it to the next release of anyRemote.

Scroll to top

I've got an error when trying to connect to the phone using cu

cu -l /dev/rfcomm0 -s 19200
cu: open (/dev/rfcomm0): Connection refused
cu: /dev/rfcomm0: Line in use

Bluez 4.X and newer does not allow to directly connect to RFCOMM device. You need to update anyRemote to the version 5.4 or newer to fix this issue.

Scroll to top

kAnyRemote crashes with python: xcb_lock.c:33: _XCBUnlockDisplay ... message.

Update to the version v5.1 or newer.

Scroll to top

I have Nokia Series40 phone and can not upload to it J2ME Client.

It is impossible to upload JAR files using OBEX to some old Nokia Series40 phones (6021, 6230i). It needs to use Gammu or Nokia tool suite (works under MS Windows).

Scroll to top

I have Nokia Symbian phone got openConnection Exeption java.io.IOExeption SymbianOS error=-1 : General: System error message

The problem is still under investigations. Try to reinstall J2ME Client to the phone's memory (not to the memory card !!!). If You have entered bluetooth address directly, be sure it looks like btspp://0008F4163038:19 (no spaces and only one semicolon). Send report to anyRemote

Scroll to top

J2ME client can not find PC with anyRemote (BlueZ issue)

Check version of BlueZ. Versions at least from 3.28 to 3.32 contains a bug in SDP server. How to check: run anyRemote, then

sdptool browse local

If You see something like:

Browsing FF:FF:FF:00:00:00 ...
Service Search failed: Success

then Your have got it. Mandriva 2008.1 and Suse 11.0 contains this issue.

A workaround: instead of search in J2ME Client, enter bluetooth address of PC directly.

How can i add some phone-specific initialization command ?

Create file $HOME/.anyRemote/hook_connect and put all needed commands there. These commands will be added to the end of (Connect) command sequence.

Scroll to top

Some application did not works under KDE4. Why ?

KDE4 uses D-BUS instead of DCOP for interprocess communication. As a result, application which were rewritten for KDE4 (like Amarok2, KsCD and Gwenview) will not work with old configuration files, created for KDE3 and it needs to use new version of configuration file designed for use with KDE4.

Scroll to top

Does anyRemote J2ME client supports WinMobile devices ?

It depends on Midlet Manager You use. The best variant is Esmertec Jeodek. anyRemote J2ME client runs flawlessly under it.

You can try (but it is not recommended) Esmertec's JBed. In this case it needs to use only anyRemote-nojsr82.jar. But anyway, there are exist a couple of serious issues under JBed. Seems they are related to Jbed itself.

These is a list of known issues under JBed:

  • It needs to press "Connect" twice to connect.
  • After disconnecting J2ME client could hangs.
  • Sometimes icons is not shown.
  • Touchscreen does not works.

It seems anyRemote works better with older versions of JBed,than with newer ones.

All existing Midlet Managers does not supports JSR-82, so it is possible to use Wi-Fi connection only.

I've got xargs: xargs.c:445: main: Assertion bc_ctl.arg_max "<= (131072-2048) error when browse files.

There is a bug in xargs. Just google around that error message. To fix it it needs to update findutils package.

I see no icons in gAnyRemote menu items. How to fix it ?

See Tips section here.

I see no gAnyRemote/kAnyRemote tray icons in Unity.

Run

gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"

Can not establish connection in KDE4.

Possible it needs to switch off BlueDevil integration for your device in KDE.

Scroll to top

anyremote-6.7.1/doc-html/frontend.html0000644000232200023220000000661712061426051020321 0ustar debalancedebalance anyRemote · Control your computer with your phone

GUI for anyRemote

anyRemote is console application, but in addition there are GUI front ends for Gnome and KDE.

KDE frontend - kAnyRemote

Run kAnyRemote with the command:

kanyremote

See screenshots of kAnyRemote here

Gnome frontend - gAnyRemote

Run gAnyRemote with the command:

ganyremote

See screenshots of gAnyRemote here

If something goes wrong ...

anyremote-6.7.1/doc-html/set-icons.html0000644000232200023220000003074412664332726020422 0ustar debalancedebalance anyRemote · Control your computer with your phone

Set(icons ...) command and available icon set

This command used tune view of the control (main) screen of J2ME/Android clients.

Format

Set(icons, _title_, [button#, icon_name]*)

Usage

1=Set(icons,TheTitle,\
  1,vol_down,2,mute,3,vol_up,\
  4,rewind,5,play,6,forward,\
  7,prev,8,pause,9,next,\
  *,question,0,stop,#,pause);

The word SAME can be used instead of title if there are no needs to change existing title.

Icon set

This is a set of icons which shipped with J2ME/Android clients and can be used by Set(icons ...) command:

Icon set

click_icon

default

down

file

fit

folder

forward

fullscreen

left

minus

mute

next

no

pause

play

plus

prev

question


rewind

refresh

right

stop

up

vol_down

vol_up

Uploading icons

In addition to this icon set it is possible to upload PNG icons from the PC with Set(image,icon ...).

  • J2ME client supports 16x16, 32x32, 48x48, 64x64, 96x96 and 128x128 PNG icons
  • For Android client it is recommended to use icons with size 64x64 or higher

Icon auto-uploading

If there is a command

1=Set(icons,TheTitle,1,my-new-icon);

and my-new-icon.png is absent in J2ME/Android anyRemote client, then anyRemote will search it in $(CfgDir)/Icons/_icon_size_ directory and automatially upload it to the phone if found.

J2ME client can requests 16x16, 32x32, 48x48, 64x64 or 128x128 icons depending of supported icon set and value of icon_size parameter.

Android client requests 128x128 icons only.

It is not recommended to use this feature on non-Android Samsung phones because of terrible upload speed.

This is an additional set of icons which shipped with anyRemote and can be used by Set(icons ...) command:

Additional icon set

bottom

eject

exit

favorites

first

info

last

launch

ok

record

top

Icons size

If J2ME contains all icon sets then if heigth of the screen is less than

  • 192pt. then 16x16 icons will be used by default
  • 288pt. then 32x32 icons will be used by default
  • 320pt. then 48x48 icons will be used by default
  • 480pt. then 64x64 icons will be used by default
  • 640pt. then 96x96 icons will be used by default
  • overwise 128x128 icons will be used by default

It is possible to change icon size with Set(parameter,icon_size,...) command.

16x16 icons 32x32 icons

Note: to make this command work it needs to use J2ME client which supports specified icon set.

anyremote-6.7.1/doc-html/docs.html0000644000232200023220000002402312136715224017427 0ustar debalancedebalance anyRemote · Control your computer with your phone anyremote-6.7.1/doc-html/pre.html0000644000232200023220000002116212061426051017260 0ustar debalancedebalance anyRemote · Control your computer with your phone

Software prerequisites

Hardware

To use anyRemote it needs to have a PC with bluetooth or Wi-Fi card.

Software

To use anyRemote over bluetooth connection you need to install bluez (Bluetooth protocol stack). You should probably install at least bluez-libs, bluez-libs-devel and bluez-utils packages.

You need to have Glib installed on Your system.

(For embedded systems like OpenWRT there are exists possibility to build anyRemote without Glib).

To use XTest X11 extension you need to install libXtst package.

To use D-BUS you need to install dbus-glib package.

Other suggested software:

If You plan to use anyRemote with JSR-82 compatible phone and upload icons to it then it is strongly suggested (especially for Siemens-S65 users) to use Pngout utility.


If You plan to compile anyRemote form sources you need to install:

  • automake
  • autoconf
  • gcc (GNU Compiler Collection)
  • To use XTest X11 extension you need to install libXtst package and /usr/include/X11/extensions/XTest.h header (depending on distro it could be in xorg-x11-proto-devel or libXtst-dev packages).

  • Headers for Glib, D-BUS and glib-dbus.

If You plan to use GUI front-ends then you need to install:

anyremote-6.7.1/doc-html/use-jc.html0000644000232200023220000002430412305371332017663 0ustar debalancedebalance anyRemote · Control your computer with your phone

How to use anyRemote J2ME client

Download it

You can download J2ME client from Preferences window of kAnyRemote/gAnyRemote or download it manually from download area.

Install it

First You have to install J2ME client on Your phone. This could be done with

There are several variants of JAR file, so You can choose variant which is more suitable for Your phone:

  • anyRemote-16.jar - contains 16x16 icon set. Best variant for phones with screen 160x160 or lower.
  • anyRemote-32.jar - contains 16x16 and 32x32 icon sets.
  • anyRemote-48.jar - contains 16x16 and 48x48 icon sets.
  • anyRemote-64.jar - contains 16x16 and 64x64 icon sets. Best variant for phones with screen higher than 240x320
  • anyRemote-128.jar - contains 16x16 and 128x128 icon set.
  • anyRemote-full.jar - contains 16x16, 32x32, 48x48, 64x64, 96x96 and 128x128 icon sets and 16x16 title icon.
  • (deprecated) anyRemote-nojsr82.jar - contains 16x16, 48x48, 64x64, 96x96 and 128x128 icon sets and 64x64 title icon. (does not supports JSR82)

The only difference between anyRemote-XX.jar's and anyRemote-XXb.jar's is the size of title icon (16 or 64). In general, anyRemote-XXb.jar suggested to use on Nokia's, and anyRemote-XX.jar on all other cell phones.

Note for WinMobile users

It is strongly recommended to use Esmertes Jeodek.

Server side setup

Firstly, it needs to run anyRemote on PC.

Also, be sure what anyRemote web interface is stopped.

Run it

main window After startup of J2ME client You will see this picture on phone's screen. If You start J2ME client for the first time then list of connections will be empty. Run "Search" to find anyRemote on PC (You have to start it before and enable page and inquiry scans on PC's bluetooth adapter of course).

If search is unsuccessful be double sure that page and inquiry scans are enabled on bluetooth adapter. This can be done by command:

hciconfig hci0 piscan


You can enter address to connect directly. If You plan to connect to anyRemote through internet or Wi-Fi enter something like socket://192.168.1.2:5197 (be sure You have started anyRemote with -s tcp:5197 option). If You plan to connect to anyRemote through bluetooth enter something like btspp://0008F4163049:19, where 0008F4163049 is bluetooth address of PC. To determine it use hcitool dev command.

Connect to anyRemote

Select item from list of connections and then choose Connect menu item (see picture above). After one or two seconds You will see main screen of J2ME client.

If You want J2ME client to connect to an device automatically upon startup, then choose AutoConnect menu item (see picture above).

Look and behaviour of J2ME client is determined by configuration file, which used by anyRemote and may vary significantly. The following screenshots are just examples of how it could look like.

amarok1 amarok2 File Manager 1 File Manager 2

anyremote-6.7.1/doc-html/set-menu.html0000644000232200023220000003375412061426051020241 0ustar debalancedebalance anyRemote · Control your computer with your phone

Set(menu ... ) command

Menu example This command used to manage a menu associated with the screen of the client.

Format

Set(menu,add|replace,_list_of_items_) or

Set(menu,clear)

Usage

Set(menu,add ...)

Command Set(menu,add ...) used to add items to the menu.

1=Set(menu,add,Item1,Item2,Item3)
2=ExecAndSet(menu,add,cat some_file.txt)

Set(menu,replace ...)

Command Set(menu,replace ...) used to replace items in the menu.

1=Set(menu,replace,Item1,Item2,Item3)
2=ExecAndSet(menu,add,cat some_file.txt)

There is a set of predefined menu items are associated with each screen of the client. These set of items will be added automatically during execution of Set(menu,replace ...) command.

Here is the sets of predefined items:

Controls (main) screen: List view screen: Text view screen: File manager screen (J2ME client only): Editfield screen:
Exit
Disconnect
Back
Back
Wrap On (J2ME client only)
Wrap Off (J2ME client only)
Jump Up (J2ME client only)
Jump To End (J2ME client only)
Back
GoTo
Copy
Move
MkDir
Delete
View
Execute
File info
OK
Back

Set(menu,replace ...) command is not a superposition of Set(menu,clear) and Set(menu,add ...) commands because predefined menu items will be added only during Set(menu,replace ...). As a results, it is possible to omit predefined menu items by executing Set(menu,clear) and Set(menu,add ...) commands.

Set(menu,clear)

Command Set(menu,clear) used to remove all items from menu.

7=Set(menu,clear)

To avoid possible mess with menu, all menu items will be deleted each time client screen changed from one type to another (i.e. from Control (main) view to Text view). So, it is not necessary to issue Set(menu,clear) when client screen changed from one type to another. On another side it means what Set(menu ...) command should be executed after others Set(...) commands.

Format of replies

If user chooses menu item MenuItem, some command will be sent to the server. The exact syntax of command depends on the screen of the client from which it is issued (where I is index of selected item in list and ValueI is a value of selected item in list):

Control (main) screen

Main (control) screen Text of choosen menu item will be sent as a reply for custom menu items. Predefined menu item Exit managed internally.

According to the picture

Item 1

will be sent as a replay.

List view screen

List screen In this case replies will have the following format _menu_item_text_(_index_of_selected_list_item_, _text_of_selected_list_item_).

According to the picture

Choose(9,ChangeLog)

will be sent as a replay.

On server side the $(Index) and $(Param) environment variables will be set.

According to the picture

$(Index) will be set to 9
$(Param) will be set to ChangeLog

Text view screen

Text screen Text of choosen menu item will be sent as a reply for custom menu items. Predefined menu items except Back managed internally.

According to the picture

Back

will be sent as a replay.

File manager screen

Main (control) screen In case of single selection replies will have the following format: _menu_item_text_L( _index_of_selected_list_item_, _text_of_selected_list_item_) in left panel and _menu_item_text_R( _index_of_selected_list_item_, _text_of_selected_list_item_) in right panel.

In case of multiple selection replies will have the following format: M__menu_item_text_L( _index_of_selected_list_item_, _text_of_selected_list_item_) in left panel and M__menu_item_text_R( _index_of_selected_list_item_, _text_of_selected_list_item_) in right panel. Such reply will be sent for each seleted file, but the last. For the last selected file command with single-selection syntax will be issued.

According to the picture

BackR(1,..)

will be sent as a replay.

On server side the $(Index) and $(Param) environment variables will be set.

According to the picture

$(Index) will be set to 1
$(Param) will be set to ..

Editfield screen

In this case replies will have the following format _menu_item_text_(0, _editfield_value_)

On server side the $(Index) and $(Param) environment variables will be set.

$(Index) will be set to 0
$(Param) will be set to _editfield_value_

Search screen

No command will be issued. All menu items managed internally.

Additional

It is not recommended to create menu items with labels OK and ERROR since command which will be sent for such menu items will be parsed incorrectly by the server.

anyremote-6.7.1/doc-html/cm-xml.html0000644000232200023220000002353712120355625017703 0ustar debalancedebalance anyRemote · Control your computer with your phone

XML Services Interface

main window

It is possible to use anyRemote with Cisco (TM) IP Phones through XML Services Interface.

Note: This page does not describe how to configure Cisco (TM) IP Phones. Please use Cisco offical site or google around XMLDefault.cnf.xml string.

Short How-To

To run XML services interface you need to do:

- Add line

<servicesURL>http://192.168.1.1:5197</servicesURL>

to the file XMLDefault.cnf.xml or SEPXXXXXXXXXXXX.cnf.xml (where XXXXXXXXXXXX is MAC address of the Cicso IP phone and 192.168.1.1:5197 is IP address and port of the computer with anyRemote).

- Reboot the IP phone.

- Configure anyRemote:

  • if GUI is used: descend to Setup->Preferences and tick "Manual Configuration" check box, then enter -s cmxml:5197 in the edit field.
  • if command line is used:

    - run anyRemote with "-s cmxml:5197 parameter. It needs to use Server-mode configuration files.

For example:

anyremote -f /path/to/some/cfg.file -s cmxml:5197

Of cource it is possible to change port 5197 to any other.

Variables used by XML services interface

$(RefreshPage)

[only by Web and XML services interfaces] This variable to automatically refresh page. Refresh rate should be specified in seconds. Default value is -1 that means no refresh.

(Init)=Make(var,RefreshPage,by_value,5)

$(IpAddr)

[only by XML services interface] This variable defines IP address of computer with anyRemote, which will be used in XML replyes. Default value determined by command

/sbin/ifconfig|grep 'inet addr'|cut -f 2 -d ':'|cut -f 1 -d ' '|grep -v 127.0.0.1|head -1

(Init)=Make(var,IpAddr,/sbin/ifconfig|grep 'inet addr'|\
	cut -f 2 -d ':'|cut -f 1 -d ' '|grep -v 127.0.0.1|head -1)

Protocol support status

XML services interface supports only subset of Set()/Get() commands. The following commands are not supported and will be skipped by XML services interface

Set(status, ...)
Set(filemanager, ...)
Set(fullscreen, ...)
Set(image,icon|cursor|nocursor|remove_all)
Set(parameter, ...)
Set(repaint, ...)
Set(layout,...,keypad_only|joystick_only|ticker|noticker|choose|up|down,_button,...)
Set(vibrate, ...)

Other limitations

Command Set(iconlist, ...) interpreted as Set(list, ...)

Set(list, ...) command can not contains more than 99 items.

All string items used in Set(title, ...), Set(list, ...) and Set(menu, ...) commands are stripped to 32 characters.

Command Set(editfield ...) supports only Ok and Back menu items.

Support of national alphabets depends of IP phones firmware.

anyremote-6.7.1/doc-html/icon-themes.html0000644000232200023220000002431312061426051020706 0ustar debalancedebalance anyRemote · Control your computer with your phone

Icon themes for J2ME client (experimental)

It is possible to create J2ME client with different icon themes. See screenshots below.

Default icon theme

Default icon theme Default icon theme

Bluecurve icon theme

Bluecurve icon theme Bluecurve icon theme

CrystalProject icon theme

CrystalProject icon theme CrystalProject icon theme

CrystalSVG icon theme

CrystalSVG icon theme CrystalSVG icon theme

Echo icon theme

Echo icon theme Echo icon theme

Gartoon icon theme

Gartoon icon theme Gartoon icon theme

Gion icon theme

Gion icon theme Gion icon theme

Gnome icon theme

Gnome icon theme Gnome icon theme

Gperfection2 icon theme

Gperfection2 icon theme Gperfection2 icon theme

Human icon theme

Human icon theme Human icon theme

Ice icon theme

Ice icon theme Ice icon theme

Kids icon theme

Kids icon theme Kids icon theme

Nuvola1 icon theme

Nuvola1 icon theme Nuvola1 icon theme

Nuvola2 icon theme

Nuvola2 icon theme Nuvola2 icon theme

Oxygen-blue icon theme

Oxygen-blue icon theme Oxygen-blue icon theme

Oxygen-green icon theme

Oxygen-green icon theme Oxygen-green icon theme

Rodent icon theme

Rodent icon theme Rodent icon theme

Tangerine icon theme

Tangerine icon theme Tangerine icon theme

Tango icon theme

Tango icon theme Tango icon theme

How to create J2ME client with different icon themes.

Prerequisites

How-To

Firstly, download package anyremote-J2ME-client, untar it somethere and descent to that directory.

Run

ls src/icon-themes
to see list of available themes. And run
./genClientJar -t "theme name" -j src/anyRemote-XXY.jar
to generate J2ME client with specified icon theme. You will find resulting *jar file as src/anyRemote-XXY-theme_name.jar

anyremote-6.7.1/doc-html/ir.html0000644000232200023220000001470212061426051017106 0ustar debalancedebalance anyRemote · Control your computer with your phone

anyRemote and InfraRed

Although anyRemote were designed to be used with Bluetooth or TCP/IP it is possible to use it with InfraRed.

anyremote-6.7.1/doc-html/lirc.html0000644000232200023220000002027412061426051017426 0ustar debalancedebalance anyRemote · Control your computer with your phone

anyRemote and LIRC (outdated)

It seems there is no much practical sence in this, but anyRemote could be configured to work with LIRC.

To use anyRemote with IR remotes it needs to install LIRC package.

This feature was tested on IR remote RM-F7 and IR receiver supplied with Aver Media Studio 507 Tv tuner card.

Usage with devinput driver

Firstly, download generic config file

To determine appropriate /dev/input/eventX for LIRC usage run the following command:

ls -l /dev/input/by-path/|grep ir

and check output:

lrwxrwxrwx 1 root root 9 Dec  2 21:25 
                pci-0000:01:05.0--event-ir -> ../event6

Run lircd daemon:

lircd -H devinput -d /dev/input/eventX  -P/tmp/lirc.pid \
	-o /tmp/some_name -n /path/to/lircd.conf.devinput

And finally run anyRemote with "-s ilirc:/tmp/some_name" parameter. It suggested to use AT-mode configurational files.

anyremote -f /path/to/cfg/file -s ilirc:/tmp/some_name

Usage with other LIRC drivers

Create $HOME/.lircrc or /etc/lircrc file with the contents like:

begin
	remote = _REMOTE_NAME_
	button = Button1
	prog   = irexec
	repeat = 0
	config = BUTTON1
end

...

begin
	remote = _REMOTE_NAME_
	button = ButtonX
	prog   = irexec
	repeat = 0
	config = BUTTONX
end

Create a configurational file for anyRemote with the contents like:

...
[Protocol]=AT
BUTTON1=Exec(whatever you want)
...
BUTTONX=Exec(whatever you want)
[End]
...

Run lircd daemon

Run anyRemote by
ircat irexec|anyremote -s stdin -f /path/to/cfg/file

anyremote-6.7.1/doc-html/phones.html0000644000232200023220000003117512061426051017773 0ustar debalancedebalance anyRemote · Control your computer with your phone

Phone-specific details

AT-mode

Server-mode

AT-mode

Sagem

Sagem phones uses different keycodes for numeric button. For example pressing button 1 returns keycode 48 (other phones returns keycode 1). This is correctly handled by examples. Just be informed.

Server-mode

Motorola-L6, V3i

Seems this models have font of only one size. As a result commands Set(font,...), Set(text,font,...) and Set(list,font,...) will not work. On V3i caption of screen is not shown in non-fullscreen mode.

Nokia-5530, Nokia-5800 XpressMusic

It was reported what J2ME client did not works with original firware and works (except touchscreen support) with updated firmvare v. 21.0.025.243.04 9

Nokia-6021, 6230i (possibly other old models from Series40)

It is impossible to upload JAR files using OBEX to some old Nokia Series40 phones. It needs to use Gammu or Nokia tool suite.

Nokia-6021, 6111 (possibly all Series40)

There could be situations when screen is not repainted and remains white. Try to use "fix_nokia_repaint" parameter.If it does not helps then it is possible use to redraw screen with pressing joystick down or keys 1 or 3.

If push joystick does not work it is possible to set "fix_nokia_push" parameter to "on". In any case it is possible to use Green button instead of push joystick in main screen of J2ME client.

On 6111 sometimes "Incorrect application. Delete?" message could arise on startup of J2ME client. Just go out to upper menu level and then descend back.

Nokia-6288 (possibly all Nokia phones)

There could be situations when J2ME client crashes. In general this happens if large amount of data (~30Kbytes) was sent to the phone by Set(text ...) or Set(image ...) commands. Update J2ME client to v4.10 or newer. If problem remains try to use different values of read_method parameter.

Nokia-E61

Some keys on keypad are not detected. Seems this is limitations of Java realization.

There could be situations when "Exit" menu item is absent in main screen. It is possible to set "fix_nokia_exit_btn" parameter to "on" to fix that if non-fullscreen mode is used (could be useful for other Series 60 phones).

Siemens-S65

This phone contains the worst Java realization i've ever seen. Autoscrolling of long lines in list screen and file manager screen will not work. Control (main) screen will not support autoscrolling of title field. If You plan to upload icons to the phone it needs to convert them previously by Pngout utility. Siemens-S65 could not handle icons created with other tools (for example Gimp) correctly. Run Pngout utility with "-c6" option.

If You use other Siemens/BenqSiemens phone in Server mode try to set "fix_siemens" parameter to "on" if something goes wrong with J2ME client.

SonyEricsson-K750i

Something strange was discovered in realization of flushGraphics()/4 in this phone. Issue is handled inside J2ME client for K750. If You run J2ME client on other SonyEricsson phone and encounter some issues with redrawing autoscrolled lines, then try to set fix_se parameter to "on". If it does not help try to set full_repaint parameter to "on".

SonyEricsson-W780i

It was reported about crashes of J2ME client on this model.

Samsung-SGH-E780

In E780 user manual it is written what it supports JSR-82. But it was proven what all of JSR-82 java classes are absent in firmware. As a result E780 in fact does not supports JSR-82.

Samsung-SGH-X820

In this phone JSR-82 java classes are present in firmware. But J2ME client hangs on LocalDevice.getLocalDevice() method. Moreover if address of PC was specified directly as btspp://_bt_addr_:_port_, then the following error message openConnection Exception java.lang.SecurityException. Required permission does not exists. Check JSI arises. There were found no way to overcome that security limitations.

Samsung-SGH-D900i, SGH-E840

J2ME client throws security exception similar to X820

Samsung-SGH-G600

The upload of images or large amount of data is very slow (about 200 bytes per second).

Samsung-SGH-L870

Please use Answer (Green) button instead of central joystick button.

WinMobile devices: Asus-P535, HTC-TyTN, P3450

It is possible to use J2ME client (version without JSR-82) on WinMobile devices with installed Esmertec's Jeodek (this is the best variant).

Also it is possible to use J2ME client (version without JSR-82) on WinMobile devices with installed Esmertec's JBed. But in this case there are exist a couple of serious issues.

anyremote-6.7.1/doc-html/k-shots.html0000644000232200023220000000755712061426051020076 0ustar debalancedebalance anyRemote · Control your computer with your phone

kAnyRemote

Tray icon menu.

Execute and Stop items allow to run or stop anyRemote. Preferences item opens the main window.

tray icon menu

Main window.

Here it is possible to choose a configuration file, which will be used by anyRemote.

  • Field Status can be: Not available, Available and Running
  • Field Mode can be: AT, Server, Bemused, iViewer or empty.
  • Field Type can be: Application, Custom, Example or empty.

It is possible to filter-out items from this list with help of filters from Preference window.

main menu

Preferences window.

preferences

Device browser

device browser

Device details

device details

Editor window

configuration file editor
anyremote-6.7.1/doc-html/event.html0000644000232200023220000002241212061426051017612 0ustar debalancedebalance anyRemote · Control your computer with your phone

Event reporting ...

Definition

Mobile Equipment Event Reporting functionality means what cell phone is able to send the unsolicited result codes for key presses, display changes, and indicator state changes.

How to check with GUI

If You have installed anyRemote GUI, then descend to Properties->Device Browser and double click on Your device.

In Device Detail window push Test AT

Event reporting test

and inspect operation results in status line of the Device Detail window.

How to check manually (obsoleted)

Bluez 4.X and newer does not allow to directly connect to RFCOMM device

It is possible to test Mobile Equipment Event Reporting functionality manually. The step-by-step description below

Run terminal emulator (Minicom or cu) and establish connection with the phone. For example:

  • Bluetooth
    cu -l /dev/rfcomm0 -s 19200
  • InfraRed
    cu -l /dev/ircomm0 -s 19200
  • Cable
    cu -l /dev/ttyACM0 -s 19200

It should answer:

Connected

Enter AT or ATZ and get answer "OK"

AT
OK

Enter AT+CMER=? and get something like:

AT+CMER=?
+CMER: (0,3),(0,1,2),(0),(0,1,2),(0)
OK

or just

AT+CMER=?
ERROR

If You got "ERROR" on "AT+CMER=..." it seems Your cell phone will not work with anyRemote in AT-mode. Try to use Server-mode.

Also, it seems your phone does not support event reporting for key presses if answer looks like (second item is "(0)"):

+CMER: (0,3),(0),(0),(0,1,2),(0)

Now it is the time to determine exact format of "AT+CMER=x,x,x,x,x" command

In general:

  • SonyEricsson phones use AT+CMER=3,2,0,0,0
  • Motorola phones use AT+CMER=3,1,0,0,0
  • Siemens phones use AT+CMER=3,2,0,0,0
  • Sagem phones use AT+CMER=2,1,0,0,0

So, enter, say AT+CMER=3,1,0,0,0 and get OK,then press button "1" on the phone keyboard. You should in terminal emulator see something like:

+CKEV: "1",1
+CKEV: "1",0

or

+CKEV: 1,1
+CKEV: 1,0

Try to find a variant of "CMER=..." command which will work fo You.

Seems command which disables event reporting feature is similar for all phones (at least for Motorola, Siemens, Sagem and SE), it is

CMER=3,0,0,0,0

The value You have found should be specified in the configuration file. anyRemote will try to determine the model of the phone upon connecting, and can use predefined "CMER=..." commands for Motorola, Sagem, Siemens and SE phones.

At the end, it is a good idea to create a "dictionary" of key codes.

One-by-one press all keys on the phone keyboard and inspect corresponding +CKEV codes in terminal emulator window. That codes will be used in the configuration file. There exist such files for SE, Motorola, Siemens, Benq-Siemens and Sagem phones. That files could be found in the keymaps/ directory.

anyremote-6.7.1/doc-html/conf-server-ex.html0000644000232200023220000003677412362007407021360 0ustar debalancedebalance anyRemote · Control your computer with your phone

Supported applications (Server mode)

You can find some predefined configuration files in cfg-data/Server-mode directory:

all-in-one.cfga kind of "mega-example" (Xmms, KPlayer, Digikam, TVtime, Web-Streams, keyboard and mouse emulation at once)
all-in-one2.cfganother "mega-example"
alsaplayer.cfgmanage AlsaPlayer (you have to create playlist before).
amarok.cfgmanage Amarok/KDE4 player.
amarok-v4.cfgmanage Amarok/KDE4 player. Improved track list handling.
amixer.cfgControls volume up/dowm/mute using amixer utility.
aqualung.cfgmanage Aqualung audio player
atril.cfgmanage Atril document viewer
audacious.cfgmanage Audacious player; needs v1.3.2 or higher
banshee.cfgmanage Banshee player
boxee.cfgmanage Boxee media center.
comix.cfgmanage Comix picture viewer
clementine.cfgmanage Clementine audio player
cmus.cfgmanage Cmus audio player
decibel.cfgmanage Decibel audio player
deadbeef.cfgmanage DeaDBeeF audio player
djview.cfgmanage DjView - DjVu viewer
digikam.cfgmanage Digikam/KDE4 - photo management application
dragon.cfgmanage Dragon player
exaile.cfgmanage Exaile player
evince.cfgmanage Evince document viewer
eog.cfgmanage Eye of Gnome image viewer
eom.cfgmanage Eye of Mate image viewer
foobnix.cfgmanage Foobnix player.
freevo.cfgmanage Freevo home theatre PC platform
gmusicbrowser.cfgmanage Gmusicbrowser player (you have to create play list before).
gpicview.cfgmanage GPicView
gthumb.cfgmanage gThumb
gwenview.cfgmanage Gwenview/KDE4
guayadeque.cfgmanage Guayadeque player.
impress.cfgmanage Libre Office or Open Office Impress
impressive.cfgmanage Impressive (former KeyJnote) document viewer
juk.cfgmanage JuK/KDE4 player.
kaffeine.cfgmanage Kaffeine player (you have to create play list before).
kdetv.cfgmanage Kdetv.
kmplayer.cfgmanage KMPlayer
kplayer.cfgmanage KPlayer (you have to create play list before).
kscd.cfgmanage Kscd/KDE4
listen.cfgmanage Listen player.
mediacenter.cfgone more "mega-example"
miro.cfgmanage Miro video player.
moc.cfgmanage Moc (music on console) player. (you have to create play list before).
mouse.cfgmouse emulation.
mpd.cfgmanage MPD player; need MPC client installed (you have to run MPD and create play list before).
moovida.cfgmanage Moovida (former Elisa) media center
mplayer.cfgmanage MPlayer player
mpris.cfgmanage MPRIS-compatible players
myth-tv.cfgmanage MythTV
okular.cfgmanage Okular, a universal document viewer
qmmp.cfgmanage QMMP audio-player
quodlibet.cfgmanage Quod Libet player
rhythmbox.cfgmanage Rhythmbox player
smplayer.cfgmanage Smplayer player
totem.cfgmanage Totem player.
tvtime.cfgmanage Tvtime.
vlc.cfgmanage VLC player.
xbmc.cfgmanage XBMC media center
xine.cfgmanage Xine player
xmms2.cfgmanage Xmms2 player

Configuration file examples: Server mode

In addition to the list above, You can find some configuration files examples in cfg-data/Server-mode directory:

autolock.cfgautolock of display example
exampleIcons.cfgexample of main screen customization.
exampleFons.cfgexample of main screen font customization.
exampleLayout.cfgexample of main screen icon layout customization.
exampleList.cfgexample of list screen usage.
exampleModes.cfgexample of modes usage.
exampleText.cfgexample of text screen usage.
fileManager.cfgbrowsing directory structure with basic file operations
fileManager2.cfgbrowsing directory structure with basic file operations; looks like MC
fileManager3.cfgbrowsing directory structure with basic file operations; similar to fileManager.cfg
iconUpload.cfgallows to upload 16x16, 32x32, 48x48, 64x64 and 128x128 PNG icons to the phone.
imageViewer.cfgallows to view images from PC on the phone screen.
kdialog.cfgjust show key pressed on popup window.
keyboard.cfgemulates some useful keyboard keys.
keyboard-mouse.cfgconfiguration file for mouse and keyboard emulation
layoutSetup.cfgMain screen icon size and icon padding customization.
winManager.cfga "window manager". Shows screen of PC on the screen of the cell phone.
wmctrl.cfguse WmCtrl to manage windows

All examples have on-screen help binded to "* *" (press "*" two times).

After investigation of these configuration files You'll become more familiar with its format.

anyremote-6.7.1/doc-html/tips-tricks.html0000644000232200023220000003405712673224605020767 0ustar debalancedebalance anyRemote · Control your computer with your phone

Tips & tricks

Bluetooth connection problems

In case of impossibility to establish bluetooth connection, please make sure:

  • Bluetooth daemon bluetoothd is started with -C option
  • You have enough permissions to register SDP service

To fix first issue it needs to correct /lib/systemd/system/bluetooth.service or /etc/init.d/bluetooth file (depends on distro) and restart bluetooth service with the commands like (depends on distro again)

systemctl restart bluetooth or

service bluetooth restart

To check issue with permissions just run command

sdptool search --bdaddr local SP

If you see something like

Failed to connect to SDP server on FF:FF:FF:00:00:00: Permission denied

then you need to run anyRemote using sudo

Enhance security with password

In Server-mode it is possible to set password which will be requested from J2ME/Android clients.

To make this it needs to run anyRemote with -password commandline option.

The password phrase should be stored in $HOME/.anyRemote/password file in a plain text.

Keepalive messages

If J2ME/Android client on the phone disconnects from PC after some inactivity period it is possible to send keepalive messages to handle this. It just needs to add command like

Timer(_PING_,300,0);

to the $HOME/.anyRemote/hook_connect file and add command

Timer(_PING_,cancel);

to the $HOME/.anyRemote/hook_disconnect file.

In the line above 300 is a number of seconds between Get(ping) requests.

Customization of client initialization/exiting and connect/disconnect commands.

It is possible to add custom commands to (Init), (Connect), (Disconnect) and (Exit) event handlers.

To do this it needs to create file

  • $HOME/.anyRemote/hook_int (for (Init) event handler)
  • $HOME/.anyRemote/hook_connect (for (Connect) event handler)
  • $HOME/.anyRemote/hook_disconnect (for (Disconnect) event handler)
  • $HOME/.anyRemote/hook_exit (for (Exit) event handler)

and put all needed commands there. That commands will be executed after commands defined in appropriate event handler command sequence.

Support for non-UTF8 encodings

Anyremote J2ME client supports only UTF8 encoding. If You system configured to use other encoding (e.g ISO-8859-15 used in Western Europe) then it is possible to handle this.

It needs to define variable $(FromEncoding) and add command like

Make(var,FromEncoding,by_value,ISO-8859-15);

to the $HOME/.anyRemote/hook_init file.

Conversion from specified encoding to UTF8 will be automatically applied to the following commands:

ExecAndSet(list,add|replace,...);
ExecAndSet(iconlist,add|replace,...);
ExecAndSet(filemanager,add|replace,left|right...);
	

Reverse conversion to specified encoding from UTF8 will be automatically applied to the $(Param) environment variable.

Note: Be sure iconv library is installed in You system.

Note: anyRemote should be compiled with iconv support.

Volume control with amixer or pacmd utilities.

If managed application does not allow to control volume, then anyRemote will use ALSA or PulseAudio directly. And using of the PulseAudio will be a preferred.

In this case it needs to have amixer or pacmd utilities installed on Your system.

By default anyRemote will control

  • Master channel of soundcard #0 in case of ALSA
  • Default Sink in case of PulseAudio

If it needs to control sound volume with non-default parameters, it is possible to add definitions of the following variables

  • $(default_mixer_up)
  • $(default_mixer_down)
  • $(default_mixer_mute)
  • $(default_mixer_get)
  • $(default_mixer_set)

to the $HOME/.anyRemote/hook_init file.

For example, default setup for ALSA:

Make(var,default_mixer_up,by_value,amixer sset Master,0 5%+ -q);
Make(var,default_mixer_down,by_value,amixer sset Master,0 5%- -q);
Make(var,default_mixer_mute,by_value,amixer sset Master,0 toggle -q);
Make(var,default_mixer_get,by_value,amixer sget Master,0|\
                        grep '\['|head -1|cut -f 2 -d "["|cut -f 1 -d "]"|sed "s/%//");
Make(var,default_mixer_set,by_value,amixer -q sset Master,0 );

or default setup for PulseAudio:

Make(var,default_sink,LANG=C;pactl stat|grep "Default Sink"|cut -f 2 -d ":"|tr -d ' ');
Make(var,default_mixer_down,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh down $(default_sink));
Make(var,default_mixer_up,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh up $(default_sink));
Make(var,default_mixer_mute,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh mute $(default_sink));
Make(var,default_mixer_get,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh get $(default_sink));
Make(var,default_mixer_set,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh set $(default_sink) );

Power Management

By default anyRemote will use

  • systemctl poweroff command to switch off computer
  • systemctl suspend command to suspend computer
  • systemctl hibernate command to hibernate computer

In Ubuntu pmi utility is available in powermanagement-interface package and it is possible to use pmi action suspend command to suspend computer.

If it needs to change default power management parameters, it is possible to add definitions of the following variables

  • $(default_switch_off)
  • $(default_suspend)
  • $(default_hibernate)

to the $HOME/.anyRemote/hook_init file.

For example:

Make(var,default_switch_off,by_value,poweroff);
Make(var,default_suspend,by_value,pmi action suspend);
Make(var,default_suspend,by_value,pmi action hibernate);

Cover Art support by audio player configuration files.

If anyRemote can not retrieve cover art from application, it try to search it inside directory with file currently played. (search done with depth equal to 2). It is user responsibility to store cover art in appropriate directory.

anyremote-6.7.1/doc-html/conf-at.html0000644000232200023220000003247212064120722020026 0ustar debalancedebalance anyRemote · Control your computer with your phone

Configuration file format: AT mode

Configuration file examples

You may find some predefined configuration files in cfg-data/AT-mode directory. After investigation of these configuration files You became more familiar with its format.

Format

Line starting with a % considered as a comment line.

%This is a comment

Long command can be splitted into the several lines. You have to put backslash (\) as the last character to continue a command to the next line.

1=Exec(echo "this is first line");\
Exec(echo "this is second line");

Parameters section

GuiAppName="application name"

GuiAppBinary="name of executable"|"command which returns name of executable"

GuiAppRun="command do determine is application running or not; must returns OK or NOK"

GuiAppIcon="icon name"

GuiAppType=Application|Custom|Example

GuiAppModes=Server|AT|Bemused

GuiAppDesc=Some text

These parameters is used by GUI frontends only.

GuiAppName=Amarok
GuiAppBinary=amarok
GuiAppRun=echo 'A=`dcop | grep amarok`; \
   if [ "x$A" == "x" ]; then echo NOK; \
   else echo OK; fi' | bash -f -s
GuiAppIcon=amarok.png
GuiAppType=Application
GuiAppModes=AT
GuiAppDesc=Application decription
[Protocol]=AT
One=Exec(echo "Hello world!");
...

[Protocol] section

A short example:

[Protocol]=AT

(Init)=\
    Exec(kdialog --msgbox "Initialized");

(Connect)=\
    Exec(kdialog --msgbox "Connected")

(Disconnect)=\
    Exec(kdialog --msgbox "Disconnected")

1=Exec(kdialog --msgbox 1)
2=Exec(kdialog --msgbox 2)
3=Exec(kdialog --msgbox 3)
4=Exec(kdialog --msgbox 4)
5=Exec(kdialog --msgbox 5)

[End]

Format:

Key_Codes=Command1;Command2;Command3;....

Where CommandX could be:

Exec() command

1=Exec(kdialog --msgbox 1)
2=Exec(kdialog --msgbox 2)

anyRemote uses popen system call in Exec() command. This means that command will be executed inside /bin/sh command interpreter.

It is possible to define multi-key commands

3 1=Exec(kdialog --msgbox 3_1)
3 2=Exec(kdialog --msgbox 3_2)
3 3 1=Exec(kdialog --msgbox 3_3_1)

It is not good idea to define:

3 3=Exec(kdialog --msgbox 3_3)
3 3 1=Exec(kdialog --msgbox 3_3_1)

simultaneously, since only one command will works (which one - depends on search order).

It is possible to group keymappings in so-called "mode" to set more than one command to the key:

1=Exec(kdialog --msgbox 1)
2=Exec(kdialog --msgbox 2)
[Mode]=1
1=Exec(kdialog --msgbox 1_in_Mode_1)
2=Exec(kdialog --msgbox 2_in_Mode_1)
[ModeEnd]
[Mode]=2
1=Exec(kdialog --msgbox 1_in_Mode_2)
2=Exec(kdialog --msgbox 2_in_Mode_2)
[ModeEnd]

If current mode is not default mode (see Make(mode ...); command), then firstly key will be searched in current mode and if not found then it will be searched in default mode. As a result it needs to use (EnterMode) and (ExitMode) "events" very carefully in default mode.

It is possible to write quite complex commands inside Exec(), for example:

1=Exec(echo 'D=`dcop | grep digikam`; \
     if [ "x$D" == "x" ]; then digikam \
     else dcop $D MainApplication-Interface quit;' | bash -f -s)

Macro() command

This command used to create new keymapping:

1=Macro(Macro1)
Macro1=Exec(kdialog --msgbox 1);Exec(kdialog --msgbox 2)

Macro() command can contains condition:

0=Make(var,macro_test,echo "0");
1=Macro(Macro1,by_value,$(macro_test));
2=Macro(Macro2, if [ -f /tmp/file_name ];\ 
                then true; else false; fi; echo $?)
Macro2=Exec(kdialog --msgbox "Condition is OK")

Conditional Macro() will be execute only if a result of variable substitution or execution of the command is equal to string "0".

Note: In shells result code of command execution stored in $? environment variable.

Timer() command

Format:

Timer(key, timeout, maxTimes) or

Timer(key, cancel|pause|continue)

This command sets/removes a timer for the key specified. A command sequence, associated with this key will be executed periodically.

For example, the following commands run 'ls -1' command 2 times with timeout equal to 5 seconds:

7=Timer(TimerCmd, 5, 2)
TimerCmd=Exec(ls -1)

The following command run 'date' command every 10 seconds:

8=Timer(Timer2, 10, 0)
Timer2=Exec(date)

It is impossible to have two active timer commands with the same key.

To delete existing timer use the following command:

9=Timer(TimerName,cancel)

Load() command

This command used to load commands from file and execute them:

1=Load(file_name.cmds)

Include() command

This command used to include definitions from external configuration file:

1=Include(xmms.cfg)

Definitions from included file will not rewrite any of existing definitions.

Make() command

Format:

Make(flush|disconnect|mode|remote|var|alarm[,....])

This command used control local state of anyRemote.

0=Make(flush)
1=Make(mode,mode_2)
2=Make(remote,on)
3=Make(var,my_var,date)

See detailed description here.

SendCKPD() command

1=Exec(kdialog --msgbox 1);SendCKPD(E PAUSE E)

This command sends CKPD sequence back to phone and could be useful if You can't lock the keyboard and needs to clean-up phone screen after each key pressing on phone keypad. It is possible to use word PAUSE to make a 1-second pause before next CKPD command will be sent. This command works when anyRemote is in AT-mode.

Exit

Exit command used to exit from application.

2=Exit;

Event handlers

There are several "events" could be triggered. See Event handlers page for details.

Variable substitution

In Exec(), Make(var,...), Load(), Include() commands is it possible to use internal "variables". See Variable substitution page for details.

anyremote-6.7.1/doc-html/set-parameter.html0000644000232200023220000003055212061426051021246 0ustar debalancedebalance anyRemote · Control your computer with your phone

Set(parameter, ... ) command

This command used to tune Android or J2ME clients in some aspects (which could be hardware-dependent).

Format:

Set(parameter[,_parameter_name_ , _parameter_value_]*)

It is useful to add Set(parameter, ...) command to (Connect) event handler to set parametes automatically upon connection to the phone.

See FAQ how it can be done.

Set(parameter,icon_size,XX)

Inform client about icon size to use.

J2ME can not scale icons, so the possible values are only 16/32/48/64/96/128 (depend on prebuild icon set).

Android client will not allow to set icon size less than 16 and greater than 1/3 of screen width.

Web interface supports only 32/48/64/128 icon sizes.

(Connect)=Set(parameter,icon_size,64);

Set(parameter,icon_padding,XX)

Set padding between icons, if default (3x4) layout is used.

It is not not allowed to set icon padding less than zero and greater than 1/6 of screen width.

(Connect)=Set(parameter,icon_padding,16);

The following parameters used by J2ME client only

Set(parameter,debug,on|off)

Switch on/off debug information printing in J2ME client. Useful for debugging. Default value is "off".

(Connect)=Set(parameter,debug,on);

Set(parameter,full_repaint,on|off)

Useful to fix some mismatches in J2ME realization in phones. Default value is "on". Try to set this option to "off" if something goes wrong with repainting of J2ME client.

(Connect)=Set(parameter,full_repaint,on);

Set(parameter,fix_se,on|off|auto)

Useful to fix mismatches in SE-K750's J2ME realization. Default value is "auto". If You use other SonyEricsson phone try to set this option to "on" if something goes wrong with repainting of J2ME client.

(Connect)=Set(parameter,fix_se,on);

Set(parameter,fix_siemens,on|off|auto)

Useful to fix mismatches in Siemens-S65's J2ME realization. Default value is "auto". If You use Siemens/BenqSiemens phone try to set this option to "on" if something goes wrong with J2ME client.

(Connect)=Set(parameter,fix_siemens,on);

Set(parameter,fix_joystick,auto|off)

Useful if J2ME client handle joystick buttons incorrectly. In general should be used in conjunction with Set(parameter,joystick_*,_keycode_).

(Connect)=Set(parameter,fix_joystick,auto);

Set(parameter,joystick_up,_keycode_)

Set(parameter,joystick_down,_keycode_)

Set(parameter,joystick_left,_keycode_)

Set(parameter,joystick_right,_keycode_)

Set(parameter,joystick_push,_keycode_)

Useful if J2ME client handle joystick buttons incorrectly. Allows to set keycodes which will be interpreted as joystick keycodes. No default values. To determine real keycodes of joystick keys add Set(parameter,debug,on) command to(Connect) line of cfg. file and then inspect log file.

(Connect)=Set(parameter,joystick_up,-1);\
          Set(parameter,joystick_down,-2);\
          Set(parameter,joystick_left,-3);\
          Set(parameter,joystick_right,-4);\
          Set(parameter,joystick_push,-5);

Set(parameter,ticker_timeout,_msec_)

Allows tune speed of ticker (running text). Default value is 80 msec.

(Connect)=Set(parameter,ticker_timeout,100);

Set(parameter,ticker_step,_pixels_)

Allows tune speed of ticker (running text). Default value is 2 (if screen width less than 150 pixels), or 4 (if screen width less than 300 pixels), or 8 overwise.

(Connect)=Set(parameter,ticker_step,2);

Set(parameter,fix_nokia_push,on|off|auto)

Useful on some Nokia phones if push joystick do not works. Adds "Push" menu item which should be mapped to push joystick. Default value is "auto" (set to "on" for all Nokia phones, except Exx and Nxx series).

(Connect)=Set(parameter,fix_nokia_push,on);

Set(parameter,fix_nokia40_repaint,on|off|auto)

Useful on some Nokia series 40 phones if screen is not redrawed properly and remains white in some cases. Default value is "auto" (set to "on" for all Nokia phones).

(Connect)=Set(parameter,fix_nokia40_repaint,on);

Set(parameter,fix_nokia60_repaint,on|off|auto)

Useful on some Nokia series 60 phones if screen is not redrawed properly and remains white in some cases. Default value is "auto" (set to "on" for Exx and Nxx series).

(Connect)=Set(parameter,fix_nokia60_repaint,on);

Set(parameter,fix_nokia_exit_btn,on|off|auto)

Useful on some Nokia phones if "Exit" menu item is absent in main screen. Adds "Exit" to the menu. Default value is "auto" (set to "on" for E61).

(Connect)=Set(parameter,fix_nokia_exit_btn,on);

Set(parameter,fix_motorola_menu,on|off|auto)

Useful on some Motorola phones (at least on RIZR Z3) if menu items is not repainted and remains empty. Default value is "auto".

(Connect)=Set(parameter,fix_motorola_menu,on);

Unfortunately this does not solve all the issues. It could still happen on List or FileManager screen with active ticker. If this happens on processing of long command sequence, try to move Set(menu, ...) command to the head of this command sequence. Sometimes this can solve the issue. Also, You can force to stop ticker in List or FileManager screen by pressing "0" button.

Set(parameter,read_method 1|2|3)

Can be useful in case of java crash on Nokia's phones or in case of unstable command handling. Default value is "1".

(Connect)=Set(parameter,read_method,2);
anyremote-6.7.1/doc-html/conf-at-ex.html0000644000232200023220000002273012061673705020447 0ustar debalancedebalance anyRemote · Control your computer with your phone

Configuration file examples: AT mode

You may find some predefined configuration files in cfg-data/AT-mode directory:

all-in-one.cfgA kind of "mega-example" (Xmms, KPlayer, Digikam, TVtime, Web-Streams, keyboard and mouse emulation at once)
amarok.cfgmanage Amarok player (you have to create play list before).
amixer.cfgControls volume up/dowm/mute using amixer utility.
aqualung.cfgmanage Aqualung audio player
audacious.cfgmanage Audacious player; needs v1.3.2 or higher
autolock.cfgautolock of display example
banshee.cfgmanage Banshee player
exaile.cfgmanage Exaile player
freevo.cfgmanage Freevo home theatre PC platform
gmusicbrowser.cfgmanage Gmusicbrowser player (you have to create play list before).
kaffeine.cfgmanage Kaffeine player (you have to create play list before).
kdetv.cfgmanage Kdetv.
kdialog.cfgjust show key pressed on popup window.
kdialog.moto.cfgjust show key pressed on popup window, variant for Motorola-V500.
kdialog.sagem.cfgjust show key pressed on popup window, variant for Sagem-my700Xi.
kdialog.siemens.cfgjust show key pressed on popup window, variant for Siemens-S55.
kdialog.se.cfgjust show key pressed on popup window, variant for SE-K700.
keyboard.cfgemulates some useful keyboard keys.
listen.cfgmanage Listen player.
moc.cfgmanage Moc (music on console) player. (you have to create play list before).
mouse.cfgmouse emulation.
mpd.cfg manage MPD player; need MPC client installed (you have to run MPD and create play list before).
multimode.cfgexample of multimode usage.
quodlibet.cfgmanage Quod Libet player
rhythmbox.cfgmanage Rhythmbox player
totem.cfgmanage Totem player.
tvtime.cfgmanage Tvtime.
xineForDvd.cfg view DVD with Xine player

All examples have on-screen help binded to "* *" (press "*" two times).

After investigation of these configuration files You'll become more familiar with its format.

anyremote-6.7.1/doc-html/set.html0000644000232200023220000005267312664332726017316 0ustar debalancedebalance anyRemote · Control your computer with your phone

Set(...) / ExecAndSet(...) commands

Text view screen This command used to control and customize GUI of J2ME/Android client. It is possible to change:

  • caption of screen
  • title and status fields
  • arrange icons from predefined icon set
  • change background and foreground color
  • change font size
  • show album cover image
  • change icon layout
  • use internal vibrator of the phone
  • toggle fullscreen mode
  • show lists and texts data
  • show MC-like file manager
  • show images

Set(...) command is used to set various parameters of GUI of J2ME/Android client with impicit data specification.

ExecAndSet(..) do the same thing, but it uses the results of executed command as a part of command which will be sent to J2ME/Android client.

For details see examples below.

There are a plenty of ways to use this command:

Set(icons, ...)

Format: Set(icons,caption,1,name1[,2,name2...,*,name11,#,name12])

where nameX specifies desired action. This command sets the caption of J2ME/Android client window and changes shown icons.

1=Exec(xmmsctrl play);\
  Set(icons,XmmsPlaying,5,stop,1,kill);
1=ExecAndSet(icons,echo "XmmsPlaying,5,stop,1,kill");

if You do not want to change the caption of the J2ME/Android client window then it is possible to write:

1=Exec(xmmsctrl play);\
  Set(icons,SAME,5,stop,1,kill);

Set(hints, ...)

Format: Set(hints,1,hint1[,2,hint2...,*,hint11,#,hint12])

where hintX specifies desired action assigned to the button. This command sets the hints.

1=Exec(xmmsctrl play);\
  Set(icons,XmmsPlaying,5,stop,1,kill);\
  Set(hints,5,stop play,1,kill application);
1=ExecAndSet(icons,echo "XmmsPlaying,5,stop,1,kill");

if You do not want to change the caption of the J2ME/Android client window then it is possible to write:

1=Exec(xmmsctrl play);Set(icons,SAME,5,stop,1,kill);

Set(caption ...)

Format: Set(caption, new_caption)

This command sets the caption of J2ME/Android client window.

Set(caption,Help);
ExecAndSet(caption,whoami);

Set(title, ...)

Format: Set(title, new_title)

This command sets the title field of J2ME/Android client.

Set(title,XMMS);
ExecAndSet(title,whoami);

It is possible to add line break characters to the text. It could be done with "\n".

Set(status, ...)

Format: Set(status, new_status)

This command sets the status field of J2ME/Android client.

3=Exec(xmmsctrl play);Set(status, Playing)
3=ExecAndSet(status,sh -c "if xmmsctrl playing;\
       then echo Stopped; else echo Playing; fi")

Set(bg ...)

Format: Set(bg,#XXXXXX) or Set(bg,R,G,B)

Where:

  • #XXXXXX is hexadecimal representation of the color
  • R, G, B are decimal integer values beetween 0 and 255

This command sets the background color of control (main) screen of J2ME/Android client.

Note: This command does not switch the current screen.

For example to set background to blue:

3=Set(bg,#0000FF);
3=ExecAndSet(bg,echo "0,0,255");

Set(fg ...)

Format: Set(fg,#XXXXXX) or Set(fg,R,G,B)

Where:

  • #XXXXXX is hexadecimal representation of the color
  • R, G, B are decimal integer values beetween 0 and 255

This command sets the foreground color of control (main) screen of J2ME/Android client.

Note: This command does not switch the current screen.

For example to set foreground to blue:

3=Set(fg,#FF0000);
4=ExecAndSet(fg,echo "255,0,0");

Set(font ...)

Format: Set(font [,small | medium | large] [,bold] [,italic] [,underlined] [,system | monospace | proportional])

This command sets font parameters for the title and status fields of control (main) screen of J2ME/Android client. Java realization in the phone could support only some subset of fonts which can be specified by this command.

Note: This command does not switch the current screen.

For example, the following commands sets small underlined bold proportinal font:

3=Set(font,small,underlined,bold,proportinal);
4=ExecAndSet(font,echo "small,underlined,bold,proportinal");

Set(volume ...)

Format: Set(volume,X)

Where X should be between 0 and 100. This command sets value of volume bar of J2ME/Android client (it needs to issue Set(layout,....volume) command before to make volume bar visible):

3=Set(volume,50);
4=ExecAndSet(volume,xmmsctrl getvol);

Set(cover ...)

Format:

Set(cover,noname,/path/to/image/file) or

Set(cover,by_name,cover_name) or

Set(cover,clear)

1=Set(cover,noname,/tmp/album_cover.png);
2=Set(cover,by_name,cover-audio);

For each connected client anyRemote will automatically scale cover to the appropriate size. It is possible to use command Get(cover_size) to determine appropriate size of cover image, but in general there are no needs to run this command explicitly because anyRemote executes it by itself upon connection to/from client.

This command works only if layout previously set to 7x1 with ticker parameter:

4=Set(layout,7x1,ticker);

Set(vibrate, ...)

Format: Set(vibrate,duration)

This command switches on internal vibrator of the phone (if exists) for specified amount of time. The duration is specified in tenths of a second and should be between 0 and 300.

5=Set(vibrate,2);

Set(text, ...)

Format: Set(text,add|replace|show|clear|close|fg|bg|font, _data_)

This command shows help test on the screen of cell phone. See detailed description here.

#=Exec(xmmsctrl quit);\
  Set(text,replace,Help,To run Xmms press 1)
#=ExecAndSet(text,replace,Date,date)

Set(list ...)

and

Set(iconlist ...)

Format:

Set(list,add|replace|clear|show|close|fg|bg|font, _data_) or

Set(iconlist,add|replace|clear|show|close|menu|fg|bg|font, _data_)

This command used to create and manage lists. It could be useful to manage player playlists or to browse directory structure. See detailed description here. The iconlist can contain icons in front of each list item.

3=Set(list,replace,Shell commands,reboot,shutdown,uptime,dmesg);
3=ExecAndSet(list,replace,Example,more some_file.txt);
3=Set(iconlist,replace,Shell commands,\
      launch:reboot,exit:shutdown,question:uptime,question:dmesg);

Set(menu ...)

Format: Set(menu,add|replace|clear[,_data_])

This command used to manage menues. Custom made menu could be added to each screen of J2ME/Android client. See detailed description here.

4=Set(menu,add,Random,Repeat,Shuffle);
4=ExecAndSet(menu,add,echo "Random,Repeat,Shuffle");

Set(layout ...)

Format:

Set(layout,default|3x4|7x1 [,keypad_only|joystick_only] [,ticker|noticker] [,volume] [,choose,_button_] [,up,_button_] [,down,_button_])

4=Set(layout,default,ticker);
4=ExecAndSet(layout,echo "7x1,joystick_only,\
             volume,up,VolUp,down,VolDown");

7x1 layout This command used to choose icon layout to show. There are 2 icon layouts defined: default (3x4) and 7x1.

If keypad_only parameter specified, then it will be possible to send commands only by pressing numeric keys.

If joystick_only parameter is specified, then it will be possible to send commands only by pressing joystick central button.

If choose,_button_ parameter is specified then initial selection will be set to button with appropriate number. (0-9, *, # are the valid values for the button).

16x16 icons If ticker parameter is specified then ticker (running text) will be used to show title field instead of static text.

If noticker parameter is specified then title field will be shown as static text.

If volume parameter is specified then volume bar will be shown.

In 7x1 icon layout if there will be not enough space on phone screen to show all icons, then some of them can be omitted.

If J2ME contains all icon sets then if heigth of the screen is less than

  • 220pt. then 16x16 icons will be used by default
  • 280pt. then 32x32 icons will be used by default
  • 340pt. then 48x48 icons will be used by default
  • 400pt. then 64x64 icons will be used by default
  • 600pt. then 96x96 icons will be used by default
  • overwise 128x128 icons will be used by default

It is possible to change icon size with Set(parameter,icon_size,...) command. Beware, for J2ME client valid values are only 16/32/48/64/96/128.

Note: to make this command work it needs to use J2ME which contains specified icon set.

Default (3x4) layout

In 7x1 icon layout it is possible to specify action to JoystickUp and JoystickDown with help of "up,_button_up_" and "down,_button_down_". If user pushes JoystickUp/JoystickDown then _button_up_/_button_down_ events will be sent.

Note: It is possible to change distance between icons Set(parameter,icon_padding,...) command.

Filemanager screen

Set(filemanager ...)

Format: Set(filemanager, add|replace|select, left|right, [_data_])

This command used to show file manager window. It looks like MC and allows to do basic file operations. See detailed description here.

3=Set(filemanager,add,left,.,..);
4=ExecAndSet(filemanager,add,left,ls -1);  

Set(fullscreen ...)

Format: Set(fullscreen,on|off|toggle)

Set fullscreen mode on or off.

3=Set(fullscreen,toggle);
4=ExecAndSet(fullscreen,echo on);

Set(editfield ...)

Format: Set(editfield,caption_value,label_value,init_value)

Shows edit field on phones screen. When used press Ok then reply Ok(0,_entered_value_) will be sent to server.

3=Set(editfield,Enter parameters,\
    Parameters,Enter your data here);
4=ExecAndSet(editfield,
    echo "Enter parameters,Parameters,Enter your data here");

For example, if user enters, say - new_line - and presses Ok, then reply Ok(0,new_line) will be sent.

Set(disconnect)

Format: Set(disconnect)

Force J2ME/Android client to disconnect from PC.

0=Set(disconnect);

Set(parameter, ...)

Format: Set(parameter,[_parameter_name_,_parameter_value_]+)

This command used to tune J2ME/Android client in some aspects (which could be hardware-dependent). See detailed description here.

Set(repaint)

Format: Set(repaint)

This command force J2ME client to repaint the screen.

3=Set(repaint);

Set(image ...)

Format:

Set(image,window,_image_file_name_) or

Set(image,icon,_icon_name_,_image_file_name_) or

Set(image,cover,_cover_name_,_image_file_name_) or

Set(image,show|close|cursor|nocursor|remove_all)

This command used to show images on screen of cell phone or upload icons which could be used in Set(icons,...) command. See cfg-example/Server-mode/winManager.cfg and cfg-example/Server-mode/iconUpload.cfg for details. See detailed description of Set(image ...) here.

3=Set(image,window,/tmp/image.png);

Set(popup ...)

Format:

Set(popup,show|hide,_message_) or

This command used to show popup message on screen of cell phone.

4=Set(popup,show,Please wait !);

Data caching

To mimimize traffic between PC and J2ME/Android client results of the following commands will be cached:

  • Set | ExecAndSet(bg,...);
  • Set | ExecAndSet(cover,...);
  • Set | ExecAndSet(fg,...);
  • Set | ExecAndSet(font,...);
  • Set | ExecAndSet(icons,...);
  • Set | ExecAndSet(layout,...);
  • Set | ExecAndSet(status,...);
  • Set | ExecAndSet(title,...);
  • Set | ExecAndSet(volume,...);

Then one of these command will be executed next time, it will be send to J2ME/Android client only if command data are changed.

anyremote-6.7.1/doc-html/bemused.html0000644000232200023220000002116412061426051020120 0ustar debalancedebalance anyRemote · Control your computer with your phone

Bemused support

To have Bemused support was not the initial intention, but it was relatively easy to do. anyRemote could emulate Bemused server and it is possible to use existing Bemused clients with anyRemote. As a result it is possible to use anyRemote with all hardware which supported by Bemused (Nokia series 60 and similar)

anyRemote supports all player management and playlist handling commands. File information requests are not supported.

At this moment anyRemote was tested on

You may find some predefined configuration files in cfg-data/Bemused-emulation directory.

In source distrubution there are also exists several obsoleted configuration files (mainly for KDE3 applications). They can be found in cfg-data/obsoleted/Bemused-emulation directory

List of supported Bemused commands (Bemused protocol description):

  • EXIT
  • FADE
  • FFWD
  • GVOL
  • INF2
  • INFO
  • NEXT
  • PLAY
  • PLEN
  • PLST
  • PREV
  • REPT
  • RWND
  • SHFL
  • SLCT
  • STOP
  • VOLM

Supported applications

You can find some predefined configuration files for Bemused emulation in cfg-data/Bemused-emulation directory:

amarok.cfgmanage Amarok player (you have to create play list before).
exaile.cfgmanage Exaile player
kdetv.cfgmanage Kdetv.
quodlibet.cfgmanage Quod Libet player
rhythmbox.cfgmanage Rhythmbox player
totem.cfgmanage Totem player.
tvtime.cfgmanage Tvtime.
template.cfgtemplate configuration file for Bemused emulation.

In source distrubution there are also exists several obsoleted configuration files for KDE3 applications. They can be found in cfg-data/obsoleted/Bemused-emulation directory

anyremote-6.7.1/doc-html/make.html0000644000232200023220000002325412061426051017413 0ustar debalancedebalance anyRemote · Control your computer with your phone

Make(...) command

This command used to control local state of anyRemote

Format description

Make(exit|flush|stop|disconnect|mode|none|remote|var|alarm[,....])

Several examples:

0=Make(flush)
1=Make(stop)
2=Make(disconnect)
3=Make(mode,mode_2)
4=Make(remote,on)
5=Make(var,my_var,date)
6=Make(alarm,/tmp/alarm,ALARM_MACRO)

Make(flush)

This command used to flush all configuration information.

0=Make(flush)

It is guarantied what current command sequence will be executed till the end. This means what in the following command sequence both commands will be executed:

0=Make(flush);Set(title,all data flushed);

The typical use-case for Make(flush) is the following:

0=Make(flush);Include(/path/to/another/configurational/file);

Make(stop)

This command used to stop execution of command sequence.

0=Make(stop);Exec(echo "Never executed");

In the example above Exec(...) command will not be executed because execution will be stopped on Make(stop) command.

Make(disconnect)

This command used to close connection to the device. In server mode after 5 seconds anyRemote will be able to receive incoming connection. In AT mode anyRemote will try to reconnect to the pnone after timeout specified by RetrySecs parameter (default value is 1 minute).

1=Make(disconnect)

Make(exit)

This command used to stop anyRemote and exit. It is a synonym to the "Exit" command.

#=Make(exit)

Make(mode,...)

Change current mode (group of key-to-command mapping) (do not mix this with AT/Server mode !).

As a side effect (ExitMode) and (EnterMode) "events" can be executed.

Format:

Make(mode,_mode_name_)
2=Make(mode,_new_mode_)

Make(remote,...)

Format:

Make(remote,on|off)

Switch on/off command processing without disconnection from the phone.

2=Exec(amixer -c 0 sset Master,0 mute);Make(remote,off)

Take a look to the order of commands above. Make(remote,off) command is the last one. If You change order to

2=Make(remote,off);Exec(amixer -c 0 sset Master,0 mute)

then Exec(amixer -c 0 sset Master,0 mute) will not be executed because "remote control" functionality will be switched off before it.

Make(var,...)

Format:

Make(var,_var_name_,_command_to_execute_)
Make(var,_var_name_,by_value,_value_)

Sets internal variable. To access to the previously set internal variable use $(_var_name_) syntax.

2=Make(mode,my_var1,echo "Hello")
3=Make(mode,my_var2,by_value,world!)
4=Exec(echo "Value is: $(my_var1) $(my_var2))

There are exists several predefined variables. See this for details.

Note: There are collision of $(_var_name_) syntax and shell command substitution syntax $(...). So, do not call Your internal variables with names which can be treated as shell commands.

Make(alarm,...)

Format:

Make(alarm,_alarm_file_,_key_)

Sets an alarm handler. When file _alarm_file_ will be created, then specified key definition will be searched. Alarms are checked each 15 seconds.

6=Make(alarm,/tmp/alarm,ALARM_MACRO)
ALARM_MACRO=SendCKPD(E 1 1 1 1 1 1 1 S \
	PAUSE PAUSE PAUSE PAUSE PAUSE PAUSE E E * 3 *)

Make(none)

Dummy command, does nothing.

0=Make(none)
anyremote-6.7.1/doc-html/inputlirc.html0000644000232200023220000001704612061426051020511 0ustar debalancedebalance anyRemote · Control your computer with your phone

Usage with inputlircd (Obsoleted)

anyRemote can be used with inputlircd package

This feature was tested on IR remote RM-F7 and IR receiver supplied with Aver Media Studio 507 Tv tuner card.

To use anyRemote with IR remotes it needs to:

  • install inputlircd package. It's' available in download area. You do not have to install LIRC.
  • run inputlircd like:
    inputlircd -d /tmp/some_name -gf -u `whoami` \
              -m 0 /dev/input/eventX
    beware, /dev/input/eventX should be readable by the user.
  • run anyRemote with "-s ilirc:/tmp/some_name" parameter. It suggested to use AT-mode configurational files.
    anyremote -f /path/to/cfg/file -s ilirc:/tmp/some_name

How to determine appropriate /dev/input/eventX for inputlircd

Run the following command:

ls -l /dev/input/by-path/|grep ir

and it will prints something like:

lrwxrwxrwx 1 root root 9 Dec  2 21:25 
                pci-0000:01:05.0--event-ir -> ../event6

anyRemote and LIRC

It seems there is no practical sence in this, but anyRemote could be configured to work with LIRC.

anyremote-6.7.1/doc-html/android-client.html0000644000232200023220000003001712673224605021377 0ustar debalancedebalance anyRemote · Control your computer with your phone

How to use anyRemote Android client

Download and install it

You can download it manually from download area and then instal lit like any other apk-file.

Server side setup

Firstly, it needs to run anyRemote on PC.

Run it

main window After startup of anyRemote Android client You will see this picture on phone's screen. If You start anyRemote Android client for the first time then list of connections will be empty. Run "Search" to find anyRemote on PC (You have to start it before and enable page and inquiry scans on PC's bluetooth adapter of course).

If search is unsuccessful be double sure that page and inquiry scans are enabled on bluetooth adapter. This can be done by command:

hciconfig hci0 piscan


You can enter address to connect directly. If You plan to connect to anyRemote through internet or Wi-Fi enter something like socket://192.168.1.2:5197 (be sure You have started anyRemote with -s tcp:5197 option). If You plan to connect to anyRemote through bluetooth enter something like

btspp://00:08:F4:16:30:49 in Android client or

btspp://0008F4163049:19 in J2ME client,

where 00:08:F4:16:30:49 (or 0008F4163049) is bluetooth address of PC, and 19 is channel number (specified only in case of J2ME client).

To determine bluetooth address of PC use hcitool dev command.

Connect to anyRemote

Select item from list of connections and then choose Connect menu item (see picture above). After one or two seconds You will see main screen of anyRemote Android client.



In case of impossibility to establish bluetooth connection, please make sure:

  • Bluetooth daemon bluetoothd is started with -C option
  • You have enough permissions to register SDP service

(see this for details)



If You want anyRemote Android client to connect to an device automatically upon startup, then choose AutoConnect menu item (see picture above).

Look and behaviour of anyRemote Android client is determined by configuration file, which used by anyRemote and may vary significantly. The following screenshots are just example of how it could look like.

player layout mediacenter layout

Server-mode protocol enhancements

anyRemote Android client supports a sliding events. If user makes a sliding gesture on main screen of Android client, then depending of direction of the slide, one of the folloowing events will be sent:

SlideLeft

SlideRight

SlideUp

SlideDown

Server-mode protocol support status

anyRemote Android client support a subset of Server-mode protocol commands.

The current support status is (supported / unsupported / not applicable):

Set(title, new_title)

Set(status, new_status)

Set(caption new_caption)

Set(layout,default|3x4|7x1 [,keypad_only|joystick_only] [,ticker|noticker] [,volume][,choose,_button_] [,up,_button_] [,down,_button_])

Set(bg,R,G,B|#XXXXXX)

Set(fg,R,G,B|#XXXXXX)

Set(font [,small | medium | large] [,bold] [,italic] [,underlined] [,system | monospace | proportional])

Set(volume,X)

Set(fullscreen,on|off|toggle)

Set(cover,/path/to/image/file)

Set(vibrate)

Set(repaint)

Set(icons,_title_,[button#, icon_name]*)

Set(editfield,caption_value,label_value,init_value)

Set(text,add|replace, title, _text_)

Set(text,caption|clear|show|close,[data])

Set(text,fg|bg|font, _data_)

Set(list,add|replace, title, _list_or_menu_data_)

Set(list,caption|clear|show|close[,data])

Set(list,fg|bg|font|icon|select, _data_)

Set(iconlist,add|replace|clear|show|close, title, _list_or_menu_data_)

Set(iconlist,fg|bg|font|select, _data_)

Set(menu,add|replace,_list_of_items_)

Set(menu,clear)

Set(parameter,icon_size|icon_padding, _parameter_value_]*)

Set(parameter[,_other_parameter_ , _parameter_value_]*)

Set(filemanager,...)

Set(image,window,_image_file_name)

Set(image,icon,_icon_name_,_image_file_name_)

Set(image,cover,_cover_name_,_image_file_name_)

Set(image,show|close|cursor|nocursor|dynamic_cursor|set_cursor)

Set(image,[remove,all|icons|covers]|clear_cache)

Set(disconnect)

Get(screeen_size)

Get(model)

Get(is_exists,[icon,_icon_size_,_icon_name_]|[cover,_cover_name_])

Get(cover_size)

Get(version)

Get(cursor)

Get(ping)

Get(password)

anyremote-6.7.1/doc-html/ckpd-emulation.html0000644000232200023220000001555612061426051021420 0ustar debalancedebalance anyRemote · Control your computer with your phone

Keypad emulation events

How to check (obsoleted)

Bluez 4.X and newer does not allow to directly connect to RFCOMM device

Run a terminal emulator (Minicom or cu) and establish a connection with the phone.

For example:

  • Bluetooth: cu -l /dev/rfcomm0 -s 19200
  • IR: cu -l /dev/ircomm0 -s 19200
  • Cable: cu -l /dev/ttyACM0 -s 19200

It should answer Connected

Enter AT or ATZ and get answer OK

Enter AT+CKPD="1" and get answer OK or ERROR

If you get OK - did you see "1" on the screen of Your cell phone? (Sagem users should use AT+CKPD="49" instead)

If you get ERROR on AT+CKPD=... you will not be able to send keyboard emulation commands to your phone from anyRemote.

anyremote-6.7.1/doc-html/data/0000755000232200023220000000000012136715224016521 5ustar debalancedebalanceanyremote-6.7.1/doc-html/data/logo-favicon.png0000644000232200023220000000100712061426051021602 0ustar debalancedebalancePNG  IHDRaIDATx^OKTQ;ԦE4EWhSm+$Bd)-Lkp2@!hrUT*[ ZHilj4CgΙ{,BL>{8qDPjq Z:w70c=gSoƀJ)oh3=%XD `([7)'j>+c }&v1z Kˆъ;3c ':nc2B87]-V 8k U|k.3V|&.t1.4[AfD%~鹑AN]탨|;7{^~| 'JSy;Ix2҅RJkfIgn7(gQU>[4%)Zpj%ӟ>""%$ h4+]zk[uܚu|VV1 IENDB`anyremote-6.7.1/doc-html/data/aac-cf2.jpg0000644000232200023220000002115612136715224020424 0ustar debalancedebalanceJFIFcbExifMM*Created with The GIMPC  !"$"$C0" [  !1AQTa"q#26RUVruBs$%'347ESb5Cce&Dd6 !1Tr5AS"234BQRa ?ˬ6˖} Jf3&qkр~/nJ(mєzNuu]Z1Þr9.-3[*9N'K$p埋GX=[(.ՔF 8qÌ=ØJn̬4s녝(ҿ|۸rm0Wۦdq{7Ftn"H.y.54+W@;F##55[k1ZFi^$-#8帲ZnM RHiǃp9ႯS^ }Z'UA0ficX00G_]5'xm4] iZ]IO!=;q䂚[Oz5\n53#qTwJ_ * 飊-}}h]ƷKY7'cSS]lrtlp`p3 imu@.Ar A4ѼK џAǠjZF+]ne!'t. wG9>0{XqMFͪFsKU҆Iۭ8<qÕR/=dw#+7X=:笎dwf'X=笎dwY xAy=gw̬` ?Νgά` yS` ` ` ` `>Af2{Od_B ϳz}IMת|d_Bx>Af2{OFH&>Af2{OOYLQ |u z=О:OYLQ |u z=О:OYLQ |u z=О:OYLQ |u z=О:OYLQ |u z=О:OYLQ |u z=О:OYLQ |u z=О:OYLQ |u z=О:OYLQ |u z=О:OYLQ |u z=О:OYLQ |u z=О:OYLFH nܥMj-kSlu5< G?,24DqwMpJlڶ[RTTD4ZAU0Vl7Ih) umWr at"4n8]nppX6+E~fukj5ETCUd)mq^KRK Ü@s0N{@0s*cEtƛMC/u4Ԗi"ΖK+y7w$Xz+Xijh+j$f䧞6N=aȈ2k59Jh,tKѲ ctrF`x6ӪkmO]n5uw;9" HgMErljM5K 3z-ApKN0si}M+WyϚ%2:97Xo=њ ,fKj(KREԳ[K湡3*Ŵ]UueM&8ত&:h"`(OdՍ**U iw|q|FAK&tA!W P[8C~E\,OUk(-fwIKoҊZz` l|p7-._7(GE5еݪ5FT5kYp; Dx*WCxP[Wle{'OܺަG^ xwv:jHihk"`cGp-CԓuI[,ۡfdM.̯AO nM[˳')MӜxܤ dYk!k%|G"<$pXr1#rdrC敱Fv(NἻ }[4oxyvEGx٩UC=X= >R#O_?ws Xsz> dB6!}'W}ƵSW3.ws]{5rFG{pG,5mh7TOUP{8?b۳eI1s8?-$|s+o3o`[9?* ΦA4 :zxl {<k7[^zb[j!٥ ʖ=ɽYa8ӊmuR\%o8YIPg~zLU_.ƪ=GթwBY\c|ۏ-c ]lfB ?{䨜 '>kIoQPkl4R/Zx}΃z[}sxԕUP1S0 "8fpkxpZvW[˦SL|³tos~o~դ}ufzV7%{$g ٞӶu6*U8D^sx;i} > Xvg׳DKP}giZ>cp <>C؉jM"uUJ]AUB[ p.c0Vl΃eHP;N! fܺgʾ\<ސJPX4>QS0=T%ԶAM M.[[jtS(e;7(4ma|-v *X\Dj;ı>~1AA|quoB4u!`|,n8Qg2g5?ҹnуĆԸqPISmOԑjT78ϋpvu k0`;T.'s->uԒї:pq8 [Mj.`,X$j-Gu%78Ze͵/szWo}(1mYkd(9C)hnM}G @ڶQX-Ept8zW@U^{Ӻg)Z:VG.kGvvkj15K-c-i%]]!GPvc;2ԗ觶BH)Öil;4WH(s7<ǖNM3?JvQI/Cѷ߼G> 樈US}؏tlU7]cAÞ_mlsX}8W_mN]i`cA=6ho]ەҞ-Tʂoa>umh*EAO,!qSe:i[ۨf,z2ʳ4-F]-Q|Kҵ OJ bb/1a@X* )sMi#;ZrJ(O𳃅S\1OW00#$zZO /`c=uH7m~ȨknCֈ`O^s?B[88ԇyM7fSۼJkcyZ[:l+mw:GB@'pZTG7]LfGXwKxq#($;b9 PZGq/B><1cV `?#g Ҷ4f q-qAj\,]5%20e6Xn$XvmbP6EUNX:Pynyv.csO^XCm&gy8΂,6fHf^m'P[Jh.̞XWͥhM#e2OjYnSHAe(;ty bjX$S@ƾfgwFx㳀AZs8׵u.4tT 8c lցWJ :'%+ ~9 8Pާe!j(C%ϐ iG7QNk""" """ """ "" g?t3OBvvAK͝iڇ0֗|-YǥS=Aswϯ O Wrs۞X HT$wGQV?!H;rͧMhh0D@DDD@DDD@DDD@DDm/_C;kʒ<: Qe=XH%VC}XL%s-L/-" WߵuX%#-{aPJQr =cL,KY٪.$UŦпnMgnU~9BT2]ISw'җ#,kmнۭ|dS7'O7Z H8޶? ȢdU_dl$I+_̶g3k?@11Jȣisִv+[>~~N˦;"fhj gC9G#al;wxsh7-OV]Gm/]Ui=ؓwuxCh䷻0݊479q} "c{&.qi~N9?U^W nxFOƫ.WMwt̟ KVxlKkCwk~KBfbGL7Rk?Axw rٿYݪҌ55?~Z[q?V/ߙ[.5m!R0g#`0k7w*p]w  c?R`YFLZE].SM>BMQiT):rv 19N3"Opڴ}HO%%`:>9r{= ] u&r\7ou>>,iN\-WӘq&-Ӟ g09ܻ$aFo<(t_jڎ9N3D˵HG[ T^bur{ȼkH##Hglӣ.B E•$żZsفc ?OV/‹s?i"vyh|Tj!h73-OV]Gm]c*4[Y!ց)gO$0YW#Xܱ\QW&cS?= RI)96 ZL0lw+l 8evpD zx& Q5ڡΓ[YcG1 QmgvCM͚CvlBgQ2pqZqKWk~?{980PjVzAoev3p+PaSPgl$tq'$ZͧquM+#"64gY%eah4eb]zzj&\g?PjNzS#nzY]2Wn5!:NN7\3,iOzWC:vƎ@Aq𰩨=k"p!䎔q'$ZwVkWpg=],)JTD@DDD@DDD@DDDAlOsT_D(zT+=\o7+dk8sH9#RΖ^eՖwHw':6< 4:Gd rճvXV=ƿN]TM{1tǂ=7e˧$񛲿e8⟊Yf:~ K3vWO+P]?'ANuDӚ>Dy t%ohDm>{7`k5닏OCjmLԒ7^PIɑn=+y=6vtE{o?IU,ҽ ]>=26oJkqe'ec:2ɋ1&M!+2LU)JTKIdȋv~✈͚b4RJkNMٸ'{YTmo񴱚ge{?oscL},F=WPۋRn?Q3խ1a5*2pJSFɲ%`񔖯u%c2a.%ZLҕfEV⬪0wNMT*IԸ|tKK 1-SPܔ.2LBBM*2wQgI$v.Xn"WQ#0WSFDJF+2qv6L0?o USfř%)K3QagyT̎|2-bHV',fj,=e$N7dze~C9QT**]A!S[qDʉG`<#*F.M^қv+'Rcuiι콎gn[3+eO].0%-H=礳nrh܅64%ĥdKKWzv;;*tlVzN%|ꫩqHJh֬2ݒ-=̷Hj*dFbu9MTz#(ZpFZTz %v1qss4Nçj'Tf$??9nu6M__tKKIԸ|ΊE_,ƢĥRߵ"ʈӼ# !m >c"2v0ϴT[YU15XSNץe\-(}&n~&}ˤ\B_WY-e .e˥-J6ѵs~ތo22Ov'3d1 I,pI)eYW`F[1oFэ??}ƭ;b>>\nq ~_0:VV,/ o)R0i",Ӆ{w1ŀ1,F`ͥ&DI,+RsIc?#)Ҋtz|.њq ~_0: rQJ#+SG$mSTe0%<0) Q`͒TMd̳"29Mi35+]'Rau.!/+#:q8I[qb"!KYV)}'Rau.!/+"j exKKIԸ|5u.!/+'Rb  W_IԸ|tKK0Y^)}'Rau.!/+"j exKKIԸ|5u.!/+'Rb  W_IԸ|tKK0Y^)}'Rau.!/+"j exKKIԸ|5u.!/+'Rb  W_IԸ|tKK0Y^)}'Rb؋W9RSmIx2JIkQ ڽ.+p!Nm](Y\Ԧrc*MG%Ksfl-೜ť7_u;d͖抮_|?x^:>#+vԗw\gץWj2 r+qH\VVuRw2#,rjf}.9565ESu#]rś&ғJ_R6BӒYII2<{H~}|?xU}nK2I*0.u iQnRL6E5F؉x[SZ:q~ټ.H8r4m;wQ45J%a9=ŞPbi*Ll "jUQNz;i6cڵE葫[vs\E} u3=?W]b$yosIհu{RCO ңVxNW&I\ʔqt֌J3Tgټvni5;&f̑RAA.#HiI(l8*A' QVr#K\dUStF(Ѧo.QVm:fӤ}u`J+U*F) "iʲiݽ 5!]J^y9[qݴ.\w &ɕOrp$̳g8ehhS7Dt߶"qj5i_3v31/*ݩGKԉZQ8AppX]V8 ǘ4TӔfe@Uˌ6J̳_^58Zd{z[g'f{⩏ 5=}={(l;_mޚmޚJrQݧ[<[|ptA[|ptCҀwi9ý?n5=LU)QT= kICۃļ+:42<,N".G+Ȭ[J4&vN}i]TPSثɼ. :sS?z۵5_eY&W2P'ɾOJڌoCJRvcwq봸5JzEȋ&~ӒU=M,ZHk2"%gJxg/#'l+g*.vOYq9$Woav?p/*~3 ΍Z~X׬|=Aϭ773E֛oԔ!KZ)IeJ3~K;v#i\mޙRVR!>#$`uƒuƒ;8p:Ay}\(?o/?P~_p uƒ;8p:Ay}\(?o/?P~_p uƒ;8p:Ay}\(?o/?P~_p uƒ;8p:Ay}\(?o/?P~_p uƒ;8p:Ay}\(?o/?P~_p uƒ;8p:Ay}\(?o/?P~_p uƒ;8p:Ay}\(?o/?P~_p uƒ:[U\qR"Rڈ#2}:#ļ+:=~Pb:HT!oIg uZqK{z)3n9zo% T3I6afdFerr9p'T3iz٨}kY*hZRq,"ִ,K@t=R~z6#OKWWs*,^SFVirI<?I՗M[Ep55Wʩ9j+Ʌ6Mg*4"" oC%/J_so1ˊqPw&PjrrL_z,w|:՜,ѓ2#r=>D_u*A4[㽗5%#3V &e> KmC|mD> KmC|m@|t=R~z6#jPC߄AS)SiίHNmGR[˰DC-1K/KJcVtu*fO.oخ-)ɎC%/x\ŭl*հ[t1K(^MiVDFfc{֮$ݷY $hNLߧ`mQ 7 DQӄ3^7^J_so"ōmI.4jq IKĪrRDjI(FW]3,dT&MgiyyiM/5N1 KmC|zAlSdThfjI%+2Jk&F)fVGLG->ATJ-{4T*pf#<,dYnqjԉJ2TN="d`i!iZIHZb4d=dxCη^PnhZNWVZAgV ڇh3X/YB3&Lm%0GZ 4sYJe |C%/77uf2Vܲ!T ܊t3wf[$x,~LOVUf:eBvEERֶwM k 3/@==5J_soC߄apZtu|9% dн&F""IWΥS)ɩr dZ<$j<m&R@EAQT$Г”c&3,)bEW-rU[r جKE.ӧlKN5 .^R dH7v6TIw!ZA%&g#DfZtZ$NKb(!`hm)5)XJLGa-QݫL#M 32!"KK$z_%OdI'qNG /[_*,CSTj{sVoE8=I`KķV%FNN{M", =R~T_vMJ>*Ie p̥D yҢ2n,mU'bTPsN~i7%M95Ai/Hqz6!> KmF%M.и`¹ZW!)Zdπ)54Nҽ?Sh#1{zRݘq4屶U]ڛ/! ė}'Q(.]C߄:)}ͿچJC߄:)}ͿچC%/J_so>> KmDBU&m7:oJMJ{Qcg9?n D@ѿS!V*\ѧ5&ҧKtbQiőI*1~LSIK3FI%(222ϰGU鶕tը]uImR.!% iR\J3ݼJxjf*Fn|j[uWC)76L+Ii݌ Tn$WeJј ]r+IBERDE3mRZCQ mi%%Iђ `-Sv[m>m&Rrɫd*B6)'%f&]. ժr &H~Y2ۋqj$.iAcO+Ƶ> KmC|ۉV66mBeu"䴔 Cfm: ݅fmV@*zXBefaޤp~>܀t=R~z6#jQ(|t=R~E *%/$_|տ` it4矤ӝuȌ)j4d~DއJ_so"[bަ ;j |t=R~z6#jQ#|C%/{Pڀz6#4H =qclL3C-% 3~`ڏUjjL;ļ+:=~QjƓ:;.׍HqJ.q2?=H~b#mO)t.[0 g,JFZmIJi=HʫJeV#̐hk4춖Oi?ds#-\ӇgCIz.qH~?0G'jY1ǜAT SJVRMRe%FnoSugYiC׹78*s4Bz\%qM-FjpK-"qH~?0GͲ뭑F-ʺUHUvc!V-8"Z^Z)iJ.Q^m-;VFל[TWvഭYN\Ns۷w?]Yi(=H~aԎ)'/R-;VFל[TWvഭYN\Ns۷w?]YHY^qmQ]kҶe;s9nue\#COR8?|HY^qmQ]kҶe;s9nue"ӵdmyŵEwmk JkkՔd=wsՖrԎ)'=H~b"ӵdmyŵEwmk JkkՔd=wsՔNՑݶ-+imVSW9VZE/OR8?|HMP+J"<)թ'FF_Ƌ"ӵdmyŵEwmk JkkՔd=ws՞,j V>U.9PY&Kd!dϢd3Q%FEOR8?|t#CE2YԪv [ j;I"XYSrRx=O+jNv23n8hCf܅ Յ$̔E==H~aԎ)'-^ȧڵ+vxF(&;Α̌X1"=MR骊r),RۄfGIi8==H~aԎ)'50 "YԎ)'=H~cS.e=H~aԎ)'50 "YԎ)'=H~cS.d41gʄTDJNɴye&_F%#C_[Un&$TAkRIBRfB\Qcӫr+Tڽ]]Oj>KkB#BtQ 4NqH~?0GrdTσ:ޟLCOKU!hi[7IM 4,J<L[56Zrh]YŵM 0fyڻeCHTGqH~?1a-yRWTn.Ua8>N%)-+ZvF-M*y4oEhSY!IREWqrԎ)'=H~cS =S+5Jo ܒ&-RVY#QgY}:+T=YJU_y3 7gV;K "7RO:z!ŊZ5Kb"1 Uc:J&e [mh-hshE:T~i8=H~aԎ)'-vOȩßu>BӺnqmhYdx4 *jmHkj5@oao zv 8,rԎ)'"GVIa(YZTi7u-I̅6A-Rkol[-8񙖄</el "YԎ)'=H~cS.e=H~aԎ)'50 "YԎ)'=H~cS.e=H~aԎ)'50 "YԎ)'?R ET?1i2:Ef" T"QBзHIGs,GqH~?1i2ΞqH~?0Gs,G kP]!Q$ډDG.4!\zL/G (x?X|gGySWtnf~νeN}i>PrsMLŖF,3_eYn4;("g7!We ypm3D&8٣FRQaU2a˦. 16Q.f5/-Gp-E?ܦܱB[90}H76INM)7#%ӉI!. Hu+k4VemV$jcViڧefrWD˾q:) BjqJ3#V}<bdt->JvMsk\x+aI^\qI/AgI(F"5ԭ7[νSӝXZ6q['qjDk[^oY{-tU;m cTlNN; ͘.wL:;>Tv 4"Cb%NTiRDFiBQO6!ƑVכh^])iFH-X8ƭӵN"5ԭ7[νSӝXZ6q['qjv@qF+yײJuZsѫ V5F1d4SHu+k4VemV$jcViڧdimyfuҝVjĂՍQj;;T#]Jzk:9hՉgղwvdDk[^oY{-tU;m cTlNN;$R޳Eo:ZNNv5bAjƨ5lƝvA(œKN꠪"QVn[g&zIQVuGrujm6E$ K F߃HKK1.$ͺuq6gճӟfr(Uvsk:j(Ԧt鲙SLQ$&0fx2kuk+6"jE-*%6DWM:SK[$Fn$Gg۔/6}"ȬaP?.La!+'a!(Jq&y",ggi`)Tvf6$.|'-,z[IaRyew wR֑mazHxIRM֢/O>Ѧ Fk5Lnz%*ξLmԵ=,M(J334gfE P+9-/21Pnf kQۓդۂƚ2ZhU;P9995H  J^pBBVrW}bEbj|٧ʀ|ړ[RBgQo=%ksJRjV̈́FQWS";'S^TZV)&Id2(;Jr[mvz| /D$ߌo%w&I2M*$G eɤxVlE:Ԋ/hW=qo#W=qo#|YoTk?V9[xY BvuxG *,5 76BҡÕQ~gODvZZH%9R Q _QP>Rm* Lwf S7̜vjOm-2j(1 1֢ٓIv?YeHl:SަaY6+Bh΃%i,asٝt_-nWDMBuQJ\q8ّf4:JF385/ZzJMڔk&QHN:YV$DFz}CѣYD::]9eo-F{7n!+{MTTG -KML1$6jRDh%wvRAmzM5 +o>˲i%[)K5!jոFD((7gFvv"Xu3L1GZ>Eh[t) یtfb64&FBLԬryɞa'։\=;k|lۜ7ױv5g~sܯ;AkEB˕z`S_UqF㰤<"Q`Gv̻U,!ڛEKJe59BdyeXPlQ11]nS!,Q-dd"Œj4[^,HJ#[:^Q$)jQ$yL#Gb[ֺUT&#hSzDLj׮jbCAU&ˇ)e&LmR,+tBI?H(Ze3SL)#V<^2~oNGeVuudjI7+&Q |Ioף;_KenQezB(]EDgyÌrb%tҕ422INpW+z-|;{s;_nFwkߦ*ʬ{g=)E!2 ~)V=;n@NW*FzM)VAǔ$w$.nZM*pJ:U~mQ3GjDgߤmĉK!JuA4Tldh4HwrQyԮJF HTu&J)2o!Fǒf ,Q`HgWuk^P)7V"*iWIi.d[mZTv}B}*3Q&d=!dF:^Zd J6mPTv=gwn"ϴ3>xZUJb莱E():s*q +I3̔dLȴ2}럔FbTK9ZeEӇ*vwCY%!Jr5(_'6 yTW{*v8Nęz"OۼAwg*T)KqIyel۲oimEN/1RLȊꟘD$+JK)ݓsr"qnRW%}2Pߟ1ړolJSd'6 yTW{*v8Nęz"OۼDVNIӣumɈRIeē-ŬvYw&˥~"d[)Vbd~}{+VeNh꺠RMr[L*#Km$mU:HHjdMOe+I?{Kq XJERTJVI&s=-)"In,%KW -Un A !Ǥ4)kwBTDfx2V0F$_,I:5bTIS(m+"6HBU#< +։Gڅ-LI%92$7Ễ-X,1W'ZYeSboٱRɚTRJTiRj"#23#3 [-JIInFW Qly,!hڋִ|^TM. :qc6I:cMQBMYN$ҽVL--mJg"yN(m)dIΜc8 Wv]7n5%1*ޝ+-r&{ ݛCnM2Q Uju9GDf<(qɲer*hiԚFsjLq;s֦F ,df.>Ýba )7A'Bi4)M(I7SQUv!24]Rxz{x00yb'FVBTi0{m%dF=hJdg!T*]K$O(u Fnq.QJ#G<`ߒ#q\7=j5fUM2fK&iR HC/%)QJǏ̇[^]\t&S+󡓺2fI,gқKVMFSR- #j2j#3s[TVf5vnU+&7m. 1&UHU~ra-Kqo(!=uBǗ:[HOa$,庣RJe^Jʓ>32!jYG: q a/*Fēfff{yx &JpZyUeU! [WKh!d%_W.g(n^Rz:9dXJ4Jr&N1-^Yw$FX3< z'JmN p8ߩIzKFt#n Jrx"QdckhU EI(DǭL̔N4өmevKm_JDF/"Ώ=)k+!r)8i6qbǟ ߐ\pֳZ˰Z~'6N|IˋQ"$aTʼ# %.4s#Ja*Dpȿ8┵Q+\iH+\iH%?p/*~3 ΍Z~X׬|=Aϭ773[jN}i>P]^ks Vu.ĝx 62‰-5&2#ޭ- H\4qz52D)tJI*,fQu[13).L#7ZR %%=Ffdx4; e6 z^骬ҟnoEn4g:gN,(˼g/De=t&Ӯ(K rާ_mѨ{qn80")R&qIE lvJSQA($er2۶λ.oz}hѣT%GY쥚DRZfMK"cuʕ#OˏPU6AY%-\}k֗FY#2-&yҐҦ]V:T =]P$9-}!պmA[>lˆn(jQ"$%J32""fdD2.XQ&e>AϺ(sq]JҍRxJI`‹yVeɝNOQsC)7qLče:zu{3` lD]Q7GS҉Y&Qg&Y>-5buE6mea+4g[j>1"oW*2ēoQn=6e!N(w`٩+B2k#V!#́XQ&ę6[,+9"c dIIJJ '̷[Wke>X4mkg/hehVhζ|c~D xWC }1('[/- R~jQr4w5+=j$ؓ&eg0L}LI))ZI[CAd'X2vpZ#O% WPdL}v/8diJJI{vUyNУVOv##DJQ3/A)B̲x-b)ܨPUk"4j\ĩI"K mԨ̔e",L禿vkj 7SۖaLš8Vrgc[ npzUt8OJ}Ss m/BZ o/#ayemib%R\3٩n =imvZ Ii(CIV2j-#k5k,#"3s,rUIUzQ.BuPEQMRe2T)qM)hI-FM<`-ڟUS> z}1 =.%Wdul%64(в(i2<UoHiɢ ugj6474CjApYdkuk+6"jE-*%6DWM:SK[$Fn$Gg۔/6}"ȬaP?.La!+'a!(Jq&y",ggF>oTkݣW'E6ەiL@JӬdK=W=s][z>PJf [gdH-楨)/iyRvf۩T_9pƅf`0 /kWh2I{ǔ+n_V"WitT m5Wb*2I6$k[\a7:]>\TWN;O6:Sr鴤DqDx2P.qʽTi5Ge+8$lp<䱑߶{ƻk+eRSi4禰Rf)RqHG3fD4NâSƉJ܈UMETC%!*l@~T[2O.bž CT4Cc4-߷*T{%2lWę=5::եIKFv x\ mӖMr2"2˥7ڶF pzPj%MOf֧$D#8M=&jFh${\[ +6tƢTʝ IfBw'~T] ]eQ9`\HK)r ghF&$=%)[J"2iVT湭-LRђ!u+32O*sRbr9ɭU&VM2X=R7*z[6KN3"Y,ΕrӤCRinŨ*&4q$I=R!FdBGvʜd.lUkf3LQ6$rM٨PrZe0|tÅDc FfhIĸLCG(,)U+sx/EdM\\(@y4ʭJ](HiQ9.%T)i<'蒏 .bribtnr**Q4yX}̆O}0#~uqR L&aQe+\iH+\iH%?p/*~3 ΍Z~X׬|=Aϭ773[jN}i>P]^kAfI $&W+?ŌW+?J%O~_^T`gٟ3YgzZnog,5?+\sS?e}QK;v#iD*7HMW=qo#W=qo#|YoTk?V9[xY BvuxG + $&T8o3\zL/G1\zL/G(x?X|gGySWtof~νeN}i>PrsMLŖF,3_eV7HM?p? !4g/\ƙ_Ď,b\ƙ_ĎP/*~3 Ώm?pU剝z?WsS?e}QZ֛o-g5 Y۵.fO48o!P~Bh_r3|Xr3|^T`g%O~_ѽ_O:~99[xY Bϭ773[jk?\}?yXh?p? !4B3ќ sg8sg8 Cļ+:=~~BhAfI 9|4$qc4$pySWt{hx?X|gFg}?,LY֛oN"64Q)sS?zk?\}?ysb"Um jFDX#3'E~[?,s@g/mn+H<6G~X&[[?,s i9牠ⴏktqZGyh8#<Vcx!mn+H<6G~X&[[?,s i9牠ⴏktqZGyh8#<Vcx!mn+H<6G~X&[[?,s i9牠ⴏktqZGyh8#<Vcx!mn+H<6G~X&[[?,s i9牠ⴏktqZGyh8#<Vcx!mn+H<6G~X&[[?,s i9牠ⴏktqZGyh8#<Vcx!mn+H<6G~X&[[?,s i9牠ⴏktqZGyh8#<Vcx!mn+H<6G~X&[[?,s i9牠ⴏktqZGyh8#<Vcx!mn+H<|Nj=ʚj5IyT)b9%J%(jQ>ż<ySWt{hx?X|gFg}?,LYN9dvB7q[ȏKjhEuGDJw>h*qpK@j~]S@󍼍9ѫi9ߎ̉Jw>hj ex}*:{n m2#w# i[LmQT⣩.>Fɹfz&qۓ nӪڛw{ҽkO#UFex˟ǖDԔRV‹r̖Ry֣-z7QK3DdI}"#,pKqt7D;Ytidþ?ߓZ1^+ *34l>n'#JCzr;4suzr;4>n'#J@WFk+^+ۉҼф>n'#JCzr;45taOۉҼ^+ ]Azr;4>n'#J@WFk+^+ۉҼф~nrw]rkq)4J$̈̌ȏkzK"\]JLT45ta_9L<.DVHDy(x| W&ɐr$j3qyJ3@8ƣi+o-.zku$u;e;__O 2F } `p,K cnwSׁ((OagdckI˭㈝ 8n mp mup ?[X[.߬?5zcLpm_#ڱOu+3\ W'u;ve9z#m   (`@fW0WRE Ԩ|"F*!UH*BoKΧ~ռ)6a } @ f (`@Ǭ}cg7g@xt;<}unIp+4, Byq`~0p<`724b W`@Pښ~BR*MnaSWz#CZ+t*wz#J'Hd-i0}ul35=Vn|` ^6O99hx/<'/ ۿ/ ?A$޿x/i$@P91So1 HHalKi@)ci$i$FFFi$i$H0#$M7+;#B)u]RHH#Ν`>  "$pR(E89ᤈFzkXj GnL߅n_> { (`P 2wcD }s*!֘cjK1ڷjr}T=s?{0ByiR떂>@uBm!Ao4g ˍGyLWnp @\ W`@P۾Cȿi)8+mOQDVH:SMy|ށ.i³>9yTK5Y\甹e4C4a4nmZН0s+l = l.4p]Pn 8TU_7xs<O؎ۍ?:h K%~mZl:">1c=1cJ 30@)H#͹pMHKkHika@>FZi T( ;0k_6hb$K⭴k!3y39L=G#Ot q0z{})`iQsp;4wl>f¼\}qf؟] uX/T2hX-̀핆؟a!t41M w}_ZH=8~ v>m. HO7744H#I#Ni60reZ%YZw4R9˶4.Wsk tVC֦}dcy?H٬ TZЫ4d׻ӯ[6/^a G{pnJmlx?/r8He{!VxPu]SFy*%VOi$?;0 $EH )~!1D%KB)7CQ8Ϭ&rlo; x{F' S\Y^=_}LiSH&Z޼k#cǿKXׂD)r`mdok > i$i$Fi$@ F}/Fߗ ؗ"UZ|Rn;t $'1H#1:.~Hn9VXIai$F@ FFH#k7H@yz,H#H4H#I#I#!H#0 H#)H34L ?H H#H9TH G i$@  (`PyȱB󥇇H#A4?y{<nV8yE=omT;pw aebQV)} ǟV0u,?f+ ۋ' P2'6h'V mw=pzV%Ρ~L~| x `)x/h;AtIENDB`anyremote-6.7.1/doc-html/data/any6.jpg0000644000232200023220000024741412061426051020106 0ustar debalancedebalanceJFIF_`Created with GIMPC  !"$"$CeM"]!"12AQ#356TUVaqrtuB$4R&b%CdesSv7EFW9Q13RqS!Aa"4C#B ?K ] %=7> ;+QmΟ.s%.GZU$8k\4i Iq-L))pll?ZMe"=Rԉ3[Z=A$I;ѫ"EG-?4ǥ3K>cmNY?eZ̘2Xmuevn7l֭#t}n;2r˙JyYR dyc寲qx1J4(0KΓJ F$^NO6)ɓO$:l[[q[#G FOL0%hb4;~W%;Acia<`lh}Sʮ:~_,mƴf7vqW+; W}8g-Z}A.)PQI #Z:\V_L{-E˩ߧ֓]W*'iُ|ܿKeO] 3B@RХ$ ({[=[m†dCjѾjug`nqn*n*q,!w*H O#&(GgVQ>i{r!/NB_jY2c9yB}؎ D/`wGaUo 8nkpZcg );#z_U~߯3<t#G=ӹ~Z^Se- $odFFzbR3&OE5SܫH)H>٠]#.EH.*4R s@~{ҞB)cࡣӚ1JiO볬?1+; W cܱn&WHr/]O^]M>/]QQn+b5# %+Q*ޟus1Gb:9q>omjbzϵ:GI:\ozΫ/,2'V?yDӹ~Z{r!/ʚm91c!$jU䬡>j=])NB_i+%+K:C;Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Z{r!/JYк Jwӹ~Zn|x}6IJVt{XJTĺiU^;\]/XuuSAv s_WimƗaBܶ׏cZapz yL2Re7e@ ۿ1>>/ugy${Q\{Ⱦ?s;-4:%m-[ʸxY]}%B%'ev#VՕUoSWY]>_B &DoTg*ˬ׉V{ftE%2LڔR6R_B+EQ9[..*"@}\6Ԕ-PBT) jvTiGs-"dщ(}xW<-OhiO;ꫦ~եvH=![7_? w##r?r?~*Kr_eLgW2S lTq5)OB=(yxԃ'~nW/bu{Ҿ_='7 +{9c~?V7O='352U^2Or?~)s$#mҟ1\4zNg4kd}d~W(r@}|E4%Zۥ>bҸhπX[Ͷ"&#Xs2~ek@I7ӹ{y'9clSuF<"zS4JIG%so%#zuzW πhXSH䧽߱J7\1\4zNg4kdd~SK G tJs>_=c%Mg&#?O{97)1J\1\4zNg4kd=߀)c'#?V|ǥp9ѯ?\!UtJs>_=c%E_' 2?cn>cҸhπhXPC䧽l %[ۮwO='352T>/)[(#?V**1\4zNg4kd=e_!SޮSG U*|ǥp9ѯC䧽\ 1J9W<G|FzJ{ޮS%=?$*NTJs>_=c%=W) r/*NTJs>_=c%=W)#?OzOcp*|ǥp9ѯ?OzO1J ʟ1\4zNg4kde_!S޶Q%\U*|ǥp9ѯ~C=e_!UʸO='352T2?c?V=+I|| %=dd*pM>cҸhπhXQ{!W2R?cnzW  */{7)1J{ɿH!UtJs>_=c%Ig&#?O{97)1JM=+I|'%=d~UtJs>_=c%Mk%#_r?~*q|ǥp9ѯ?^ncY9 k1i\4zNgtkdeʹmYOrazl!"̝8'r-^+P3>3FIj=#&{d W}LO))7Mן8h*8OySg~ O-u}Mן8h-G4Zi O-u}SG >xfSK_Og%?ĵ=)#|ςqOl<}M3?)%_o’rSn$t6;|V_¾Xtk"DxDl  3|`u95W>!c2'ŹF+r4q$- JhIމm?NGM;0FzmW2MdD" SNȜ^qI=ן%nBwV= !H25rbw|{NO$$[jW9qn;;W;Attٮw^w7]7kt7h;y;4\MZM ז\zn^[*]<˗*^U*~Zr4ܩʼr4*hAʁU~Zh=JʼJ*rG#^T^\*^T^\9NT^\*kT7^{=9W5Autmufnllw+M׏]\n7A+tҸ7A+t=}kL+>Ь=GG,|$}Y_y,a>[?g##ϥ-j;gO+|?- V})kWK:|}X{茶YoHKZY ,|$}=GG՟JZwΟhV'##>[?R֯tBpHG-- Vu)kWK:|}X茶YoHKZY 4|$}=\?gR|䳬 4|$##ͥ-j;gYiwH%=OG˿G*ͥ-j;gYiw({UJZwγ+/|J4|$R֯u}Y茶ioH)KZYqg>]?O|J)KZYqgF] ?O|J)KZYqg>[?O|J)KZY <|$e#fR|䳬 <|$##̥-j;gYioH%=OGGՙJZwγ+/|J{UJZwγ+/|Q?.Vm)kWK:>ЬOG˿G)>[?R֯u}Y{茶k>[?R֯u}X茶iwHKZYqc>[?noHKZY -- \{~$e#ϥ-j;gO+|?- V})kWK:|}X{茶YoHKZY ,|$}=GG՟JZwΟhVg##>[?R֯tB?- O|gҖ|䳧YoH{>%>>ЂY.uӬ2N(|ZSWyj9!f9Vo񶬮n2It( > "9ꪔҡ+RX_a_Kn2d]Hlxai%,ݕquPDG(xi.6!E RA@MFUqnRa}a~ҕQBT P:!uVo5g."o"u0!-!OtW]BҴSPu'ŌB9.+~cj~[\6ұZĕ-Chטw.I{/[$4GTeoL~@Hu54 x(ϼ8Թ:{Gb~%Е6^EX{R.g"Yq@}t+:9J}{ƁJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRLyك܅z4٬/~2lOŹZ?^Ln}*ϦGǮ)7y7vq>U?mYz 0\?;ǟ?S+yF)m_9{?u95T~WNGM;(Eߤ5ك]bRʥ)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J ~֕-y?5H-~֕-}?5ooge`_d~vTmz ?\?;Ǐ?S+yF)m_9{_u95T~_NGM;'*]8Q5ك]bZ;ךMsmƎ-┤ WnBRBJzީ zp 3C$Ɂs 4{;ۥY^)h^ipX ۱0Sa zrh<%#^UqZo|^t$9)LJz#:t%EIBTR · k wasǙ{T}"[uTe>Ӟp9(wĶ\VP󲮏 % Z֭$'T$T~f-tͧP\=6 ۯRAoR2yhIQJbxV?|EtD+r"q[yRDH=ժXqM,ʑo]2س4왫YH4n6BZEC4+#ř)CIBV(DIocxY3\~/b== Jyl.:ڐ[HXE3ì֬wkFNաT :'wfYoe8֟7r<#j %IG!ڃgdoqmw0e!.\2YRBBA ⯔ f<~p]ɲqXk1jmd0@. l J)-ʮuSu[1-zC+RIJ޽F2N+yh{yR3Ӌ!HC8B[_s=iɭyb.])M۱H !҂!\HD@99-݋ mS2 >XHRiHކ·} /sXnQ/cv21*vJHOf[V)I]!^z?.G!˃[)@좠@%[!`Y7ٻi 4[Z[ 6H oZ۵jo>WEۋj"zjWQhinl!ש'x1Zd\1 6ą,qr%7鴡Rx|ⱎ]Ⱥ"kv;HA~8gn%TZX/'m[2'., -i)@C*h U *چ#VCsPġ(@:#z$~Z}džPXdkEVWbh-)Ũ!͸Bz6I66g fUDMȒ\BvCr BԿSڃ'F8a 2Ro}XM;4ɭrgŀA!!^ )(>= j(*T@WJPCF;ިmk=놱*+{Hcr.ɌUpuLeh_]Bʒ! $+|9ŝW;Y2ŮIuԠ\e RPm RQރU /wkŶUK[fcV;&lV_JԖ\v)$ęf/0FCLe IqoB}EDKQ֓M^enN1],6s谥 $.T#BR=Uƴ_(8x 1K2RjCXi$'̥%&|I8Xmƥ[`bJ&#m:(mJ֞)>^xaN9 nP$Ji(HzIRl\4#\5;iۘ\}}9ʼ!NGq eҎ 'G.y4 YS>vSJ\u(Vx J[w f.{p%ʗ!f#npiQ*-,ޠlkU>n;9&lLYGR0BӊJҖG$A0|B//QeimR&}7Ĵv )3אˏ57l6@_PoVXK +GġGAN`1[cq,aW0LcdC*R;̮=݋a]u>} R!>R[NG}{A`X/v[cxrQͧ8)$TAY EU^TED98uHT΁JRJRJRJRJRJRJRJRJRJRJRJRJRJRqZWзQտ} uo[[hſp?>3~`d~vTmz VSuھsr/oީOi_%EwS{I^k-oZuW6)QJR R R Rj&o6a,qWtن9bR;U}w\oΧ l%x!:d(+Ov $ArE[Z-܊FB[p(*⤝P?z1џ2q~ MfC P T;[(ɲe w&ÅtT2W-"Aj",d+Gm+`BY]%+ʗ$ `77R{Rwt}uYK]ijDn$( cR?)'=U֩׻^EkZڇϛ=V 1,Dm I?F.m)ZgDֻ+c4뎽(q$CC-:Us2np> .%MZq&),/쪶f6rN܄pL % l ;m;;!]l7c-d%M$XV}Y ͆7-aq.6)IE >N V[^?3^N5l+eF *h IIX⤞Jr/oީWi_%yj_ڔFU)JP)JP)JP++AB Fx\\[Vx )I: PxiU5[!W@Fz!n:ֻV .|,D 8#EJI%:$kFY))7 [s?dLO mh~ϯzJEctŽuof)kni*Űȱ$1.<=f6R_u! -`)@!O+c~ۺ5z6d']#&Zr/WdҶ;$0''Ծ(H%K';7E̵ A׸-y.|ǽ o.*4`۷CRE$)H$ U=`gՎݛG鈁;#:$zї˷wr/FqH)LLJE8(mO(v'jVFd3(jj` 6r.B[jYIJU]%d3h)pfHNYqT-JR$k5vsu܊SN*P ۾VLx뙋kݮ6腫=<&mH| J}}՟fr."CJŒOԄ($wuh\EĵŽQ)j:RXchyQGhyS۰o M/Kqە$2=x-P $tJr:5Srn ӄ!ZUupB.c ò|\3 -Q_r[hqPsタcd5tͪ NfmqpW6 Q9v99#̫Ϻ|h #Swk6IqH^d%e|mZ|u{gZGűAlVZQ*qWÏ}HM \0`JmIfg2vµzv$.Œ|,D 8#EJI%:$kF*]i4t]~,͟:vh\THXw *-"6oOB2Il#^b:}1Iq'حrMx?-6>JR($l |BjiF=iMQ Bl2 JAR5ZJ;D|B^-aPj^ޛ%- C)OMV/('.V"xtd,Cnwކn)ǷķIJ@ b4VC-!䝥|H=P? r=GOBYGdiON) ֻV SXaqexJNtHbHZ,3퓤%bEBFZ)Mvt}@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)@)ARoZWзZվ,n-m+{>C-w%[.pn3eȶy T % %)IRPHDBW5y79"3PW0HiKZҢ}ճ}Yfjc]n0=#5SiN)ԡI'}ZkFnƜpՑƴKq9$B " )Qپ9*3]S߹[&:Z.o=%=~]ԥFf($A)4T5a 㳲$ w$)Z o2ڜ_Եh % GIKvNfz/4tnBJҗЂ@%;o]$:#)md]o1roZWТM{} +Dҷ2q{}oB͟ק($NQT6QnWp^NEM;(%v=G֢؇NEM;*}IM%)$:Yok}:۪v(}][^= ]Nl0Wa=TӲF =%ϑ =Ɉv'%Fd2t!jQe.GzfHRNRYCiuXZBҤv #ֽ2JDq~Se*Dp\R6ڕOc*=cbn̄2c8ChiKRuZAGܼфmIf",d8qmDCaTڈSHRRܥN'5[ Lv8#v;N_z!+g†UJ .5hXA'.T^iViRV]4尯npX{[.C."Z!;wZ\҇ :ԣ'=쩑=z04\E6}PE{Q&)"הm:[*֘ IMfK A ,@WVEv p]@-+mTIaJBbnQC!j%pЄ }(iBִ9Ğ=wQ 2&lgZleuد۝dB GJZv4kdVMx*d4[ Jy[i) XOH+H'PRSF%ފYS I{J#~WMz\Ŷ}PE]ݾ׃`׌E7P=Wpt|xjJvu+ټZ8M Na(NBW2ZZ@#'%)IMJ io9hr{G|-El87˵y7 +Ʈv[lv4oEDXQmCe@ P(Jgb*@fB#2ml) b;ZOe IVȸpCV-[>Y- g@_QJN˛ߔ$qXNGkR\)⴩dIPh\7 EF#cj$,qQ|-8YI+)$t/PU;.hUd;$w қqmӡmccehQHׯŒYdŻM#qYȭࠅ6|IH ⵥ;>gRbر2 r. c1(PM0~II2üf |Mc˸mI=iI\@ڜbI#kW(*d IŦ eńYצ BQZP ҔUJ'Һޢzl<5UnmLE!֮e}e$kj٥[h N]n^^Jҙ1̅yd\ًfY0+~)yy'l[mn9l ʇAAث6k|OUi8(6p+Z\zrVc%-2d"-ELLiw^WY S֯PQa1- w>4WhP: RJr막xwC-LFcЖmȺ5RuOêڃNty^j"kEݭriWE`+aШ(ִmmؼdZ߾J"D}GN^%H9wASuo7#`NqNUs 9!<:OR\[Wb?LL~M"d_}1jr_O ZJz!hü_ZjեKmCe,fIan".wzPUĭOcqb{vp;|kZouoZW\4kze8&M6ڛb";n^q -)q'X#堦,`dr xψ|?5 RX*hWU;GqO>?« 13;M-9ybN+8y2zA+)$7B1;HihH B@@wey|gU ;SEo=$6Q?'z'U}vVc--/r$2l'Jv%KHRPP0!ͱiqmRϩl<( #Z: {K7[V-o6:ER¢QkSoZWТMys6+Z6նL!\[;oL~;E_8G'vT/lzwҊVSuھs>roީ'-["uhORNWju97Tv;4Fe`Wnء59'e&,U.<S7 Gdp%=s3Ď.|i! 8d ) 䁡鳻"o@@ vt#-k WG^+e&ޙ8͕P҄TK[Ou*2o/ız`V3oqif D$4JDh0]*] nVpo"@+B[m0(eҕ!K$yyz ɞqA)bq{hjU l V[ 3.On!wD!JTlq>W>8K3pf؂)$dF=`Ka+_Ѡc$/C&ehxl)lQ BZo7b$X"cV* ~$8ۇ`z7cg̳Z&{oZgV: 's^v%|3'=\Vyq' $4 8@'j:FvͳC1t`5mp)ժH+X\J!,tJe8H":;9,%2TO`kc^Ob8ܩݢBm zn.2!(4=(!ySxW'M}(wx<s qI`TW{8]auG>qE!|5i,Web$Zg -9>mlϋcbOoi[J%z /{? ~ʳū fi5v?!HJqč/nzנ]^sɹFm=nE+q(OJHZLJR w5bxrq,jdi dPTĂF;q|d@qAKߴzk҂!㍢x{~a";d2ܔ}h$ )Ai I&E̻8 RWWѰ¶v\ a` dJy\u@I?4%KAɎYQZxlcdluh).$Ûxrjz]D`%0t4ۉBUȩEI%'q7YO]٩r&yД7QE\ɧ֏oN,זr;d+uT *<%\g֝V/M|{H+nPq,YpI+E+X߮ ¼dkwv^rxmȇ Դ' RԗA:$iuɟ2 AT'[AHqQ d#N`9 .-żzZ˭1M9|.Kdz]m+gn[vfoDĔJLX-4IR9~ $0b5f@eOtYmPX@=@#QV1g307}HG KNs%!aGG̪9g Eom{,6 T h($R  `ocC&fHnH HN؟]Fr Gl|˼;EE̴#: iI첵#vj9{ \,B@Z2tcĝS9w'ڭeCeo*3:<]K.k$;' ė3!ǭS#RnDD:#Ð[Ķz= H ^YΣcr| R(,,:OI)') 䯭1rG^ 4 #[+l{lvݐ`A6O.c,ȶ{%}Lb 6yw= 1omٚ-[Bcyv{NNAGݱEv6 O柏ȖKTε/%i2;1ҼKEƒQCl(((((((((((((((((*8dͿkJ$V?5n+7?%WТq4 y#6dH:(;V}0Z>=qw~?|vdӾU0[6LG% 9kg &?^jmmwYkٿQ_{|8n"Kɤ̓1ELEqJ+sġ V\2ֿYqRPȍwr4l:[a%<9J@ 8ͪ :,-.Lm=,CeH-JV|ͺ2vzF4a2:E2K*h+?c|h ^W;=4K2dk*/L8BRw²$E#a gM]m,iibЕfRKP#ga;"7-4zƁ4\a2:E2K*h+?c|k6^گּe\!BSKBZYJ%)%$t 4وS)Q1Bp$(( ؍Mk)-WX!z$JL{r,ZBҐRJ$)$v7 24"7me%Hkݾ 6plz&$ض$25L!\X P^:cJ*ƾ߿N?Њud볾UMMb%SJKz7'}?R޿nzYok}:۪v))JRRRW(! Y  _.k7A 1Paޚ[Xk[m)uJ~4R{k\RB s]eh" %GuhJ{%cűKt,8ڐ,B\<ܜ̸ٗ"YS!BXiE QgK_aؽm~-!;lNh}ҕ- GD' l#wCˉiC$)(q 'JP:# b9]  Ʌmz~."cSTl_M,'jHuȟݝ}Oad&JJx ʒ4G30Y.92Hi.,% e% ,AR )#`׆G?m &!jLs!Ĥ-lJ G2RvX1,x-s-ܟ{SC6Hqkl7kFυP}ȖT(ަN \ N<ܐJ(R 'm-VOfɓ3",FfHfD7q.)Iq) ]lqsf2aBf{%K1t=$GE>5`͓ϿX_ TK2:iPlG~s|>3["mB)ZS)_YC|%6"R<`nb)vX~|X}^@9@? G 2)ΎtFI'gjr7rcdخ5(j!iXqK%Z +ʿ|Zu͓ ǭvDFToCiH YVǪ؊ 5)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J /?j$VEZ-cacX~qV_"mX4V}0Z>=qy?ooEP:cJ*Ưc}_,~;ET+yF)m_9ybu97T۳?xNCM;,k-5ك]bRʥ)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J ~/j$V֏jB?&~oVW"ϏIa }zG?,_MP>:k%_??볾UMMb)SK|Kz3%Rł[HRoOby5ك]bҪO 8eeY[|a\rٟu;.m@V>\-7D#Ž Tgq vB'UuR{fE#咲d6^B eQUt\Au:!A@ 6 qd3.wy,¼L,G % ЗK K HƆBZA)H$^Peş d*,/BҤv #cܫ -:-v9 >",CZ#t2 JR]$Ez~r1V-oYGˍj聾gG!AtRK+7+u%uy$wKԙ(i+\c!A!ӏ_] OSٓ%=f:oNo$D.Xs̊pG+ZNh BV [JA6N=s{h>&Kn.{R$(> 4;[DZu.2+,A[ ZFKv'h|iKMYB~ҵz\RAXҁ%GPfRf3jFJLm;IN%OT |82:;07=Ŏh]56XOd]&l8#G-^fp%O,$Q J$AU-*2w"^%h$Gaer)꫔z6 1{]>(]α^ďqrm.s Z ДwNR۪ŝVFe.3!G0S-'UJPh{uO̺Z1I.1S7ǦJJ@ti!sҡܮՓZݲ^n4yVJQuv 8![[sgDkG"}@|u U%%Lw!v5,b[+觊ĶGrY$vZfUY y/*,pb>6ӜHXQ*L)qȗ>Ʒ ˲KlDfTGe?^pj3rtsQOڎƀ\5츭Jf#YnCENSuP`W6ɕL8ۓoHl)RurIq]駺R>|qdGSʔ@^;k,UYXanfLKSiaoҌpA)B4ZtUO'Eb>bBd8}Y&3[h(!Zf̉ ;6SPN-A(@'JQRH꘶gY] fq[mY*lK+G%-,Z2&)x5!& IW%|" ?볾WVߺӦ}g}(eo(7[p^8NAM;-k-税-S~I*qmb-Iס ^k-oZuW'ş5fv&r_zO-]UbjvV/d7\CK0-hPZTWǑPRRw@?UfၢFK}9|fndC#u9DtGkz#ISoCfUiN3,ZxC22SHh6ЅwccGTeTY! T= ^N׽x/\ ]ԫg"myc.vOHz࠾+SHuHHm=ZJ)#Pmbkט坛_s9{=e$X31bm-2(m$i)JG`; ZȌ [Po- 9t}Or7!dWnfy @w">xeiN"Q(~ʲR6@1EwajtT>/Dr`tH5kqS1ٵvx-}RXDh-Rx)ĄqQOw#WR#Dd[x\!Ju"S)lIA;MkDںXr|pLDI՛bMVGB9+҂ёaȇ6-س.eqPHY*q$ij>JgƘ.=hnD&u|}Pk&oA%%X9p*-aZ /ae\–S$(^)(˳B`v\b3ocK RRZy7-,iD ;=<;48L[$0a 8RkzG`֧lxD·M\s0P D. '׾T/&Nu1b c9՗5FXKe{|Wĩ6Ev2ۉ-R l^op Qٌ-ąJe[yJRFTܕ7ՆԄ6m) Lu0nI@I;3kςY&Sok`2=:eM8[K`6T4z>̏iVcceqU7 Cq V֏RȠPۜ0o [^$zӑש`Ϟsę8 Zζ)^ISiYr;"Byq' voƋ3j-(wqS[C,>;u\kǏz >[^9q!H޷n~`<6lw($\ڄ^m(6AQkq3fn0%IB=$\Ⲕs %\C@ F]6(< pTF ƚS--QIRBIBI|\Ʊ[.ciHT6Ty$kV ҃[ Q,"GI=DH%ZN:mۄ ȷnEQRԂ諉PJֶk2g\rL H3b\%rؖ}j\/-.;(zFˍKm!JJ@AoOA󳧹nRtJ-L/|:%$h, Nl[|Jri(z)\nP{rmId)f3On;35RCd4I pyAumW ےx+5tYԤ]RwAoQm P[Wa *95˖˃oٔUvչםtH S9P9Kh(O" wN]̓.tY ͳ GDm*uoVeٿ=i1I Wh!+ Z^ҕh҃8copE z\'`m0[ӃZiEvHZ²o/+nWhiw[s#OSiJR\ ҄%\A 6|Nc1츆[:+RBB mI:R҇+,qm~T{m ɐʑ"R4qЕ( 4)48Ͱd> ut4OjnQl.א^AzbkiLuj+pMRTR{w5pq7p)z}V~@cꭴ)-os)Ҵ8爰U1r ˕tÍ78cJyRak:Ci* hA/ }Jھȉq@T-!(Cm7 &b%&]ZSБylJ IRA$ ץ8Ƭ}qVok %(a wHQ"8گ_oe^Cޔ#Co)uKO5O0V֔4A Cޔ;칿Y_D΍p_ +7sڲWFVV}0Z>=qxھ? E|Q_@Z/_E|QU56QnqowO;JAN^g 鲭Tc?Iz~(Ejuך{[֮UE1MrˉX]1NO֓N$kwÌ9N+v.lJ]:I͒H3Du3p@+dq^D'˲tRǗ$. w[TeUP'4>\<3㏘hkqRN YȥkoI}U679OV+|R҇MDJ{Nd`XTZʺ\e֋%ۃ:m|>r OuM84eC~[59*]/IuV gAJGHFuVꂳ? $GnNJ4P }mhm!4GǨ8YO' jj]mL?-m$m|Or6@iA\/}c|[cKBJĘ\6t.]@{k3\*}da}B%Tr%@ +>_][5۶gdMzc BdVHuR$t;}(#lC"w?jgjgiS~lY!ɬ$-a+R²9)-V6Y s%ZTqh)GWTu@o"Z6g-*BXXiI`G!Y2c{ff:}\~*l %RRHH$oU`F/ ŠHJR%JIԗvѢLv7WH[WO"o][:P)JP)Z uVCy Ѣv/$w= P)JP)QGDڔtǐåGz+KIҒlcv>]xZNFBܧ$.;)N9pX})A%Ŷ Z΁:H=57Zr(ɴ/%K/Ki\X BAҀ: tJR RS-.;eǟya(mlAJY3l~pf7.HyKUTd<zku}>R{w=r5qm3^fShZkҝ@;;;-w{uM4WmZx)=7zhsp7qccEu)J)Zȷq56$v.P A BwΔ;칿Y_DnuDF.oVW"t[i[hŮ?4O5l#;E}l/&~g}(eo(7[p^8NAM;(30~-Užroީo?i/?f=yj_2ҋL͞]7Fein8$ X'n߃uv_u[<$[ KhBR5^Znx˩DeCAi\Jt2f{śL\[r絮qEA4RR%pO'V %GG{ΔCNwyVAp׋LQC%ŻN8WƂuY-U^T-Z >d_p<-^ԠXgr9ZS=JA.Rʘ! HT9kVX9%2}~E\˜RG)Q_ǺADXش,8.1:-Θ*>q6*Or$I3Y^/ i햜Lkgl,&*%$Qih* I}*P|b#^md*1q97mҔyR]JJA*Iqr l{Ķc)[Sb ! SҖTS:mh}X6E&& ~)^-\Ԯ47˹:6z4Eeēsq̐mf # $ZkUؗk f&f^liz2^JzQ$, 5() Ĵ1&hnI$(qvփWU>`2{1yrw w%qH8Yq!<NʕgSPQfS`rfZ34e ٽ,Ў)Z[.2ZJС%taǮV%tf7 1aJO0oUz҂),Qqn\y4TmҐ,j$0.6d "&j*IL R~^Tn7eOɱo"ع[CQKϰVa|+H*NN&FreٮlZv,h4&nmR⯭jݢzk~LJf[iuj贤DAK\,Wip:b`^7=MFQia+kJGJvU173@bKJٙ1w[iթChVH5(*sP:3,2![-Ҙ(CO*R|.L%H\/8C}C!>A>Ԇ$:ڒHj҂r}c1[¸Xh#;AXJԾHi5٨IQoa]mlD7LT%R AI_JA^e+ +Ş;6 v|X T-)O4 ( G@)nwQ/wS*apc(JLi|7}3ؔ)AD[7sqȯa2L8/Z:#m4鵀4RG~5|c 5~.n똪DaԘI wz=}҂\3.3^ɼZUm.1r*IПOux*=nj:}}8Qj#'SPkqGR- DŽRң6P [(I)IH+eJP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JPS˛ՕHC޵|MG}7+[:ŧ|Mmoge'~x@O]9I}?7&>GvwҊVSuھsžroީo?i/?f=Dow[Kٟ^k-oZuW9)QJR R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R Roe}+ei_ڵ~Ѧ˛ՕHR>5L!\],'y"?>GvwҊqû"o>GvwҊVSuھsžroީgb|-W y-S~K|Iy3e`Wnؠ6l:fJpD*m-i[m(fRCGK8[عqͶR-%,ciM:۩$ڒ!]HZ"i7p hۉKLuzG_ph ?D3&ϓ>ZL1H.r! J$;TeUwGu2\,r[3HM2mH! Mi|8r9M}y9*8DrTJFAA*79AvB"T)$*C<h) ֣P-GFF1Q*2Q%!ej $z#lvɯYQwu W]_ K%71ɬܢٔJaΛn\udJڏh=HّY[CR'61eG6IZ:e:!hV :/޹=m]Sl7KVq$RMFw7vc=uA bb'S S\mR"]++y\Szi :l:KrLIL5ICd$ mhkߵzZp{=:1n7[i)h%)I-6*;)&.C1̆%z;fiieԣWR_>/?r+٤댛2%ȏ/Dx24^ø]kPN6Աi Z)Iʻ(fpglK9E6 M醒GKkGr;½8],wkEf]le#p0WBtࢭVC"^ԇr&:}n%]%K~Ei+;X+hjD,)+G_LD-JaGZ:#mai)]aA.) @RTp; |?!K1:0\^/j C;AE*xn.,)w`T/-="UH݋cǭ6+Tѡۚv-rG'n(EJ$|b`{x/!S-!IDl<:z5εƒ^ l-%NZ5n+fcz 9 l ChIQtRRRRRRRRRRRRRRRRRRRRRRRRRRc}7+Y6McF.oVW"TL!\XXۻB>GvwҊqCx?볾UMMb-S~J|$wytSzVQl[ &Nҟ@SlU0uU~^8sܱ{MwqMA\gS9%ƃl AO;eU]%AK z2 S! ($,I!Dgu.-B]bb)llm$`oi(ÃucvEۧ#^Vuiң7Pkt;k^p}벜+p.A*TU_5IM3̮)y{#Atul($^J›^.|UHxv6{l±V}X޳b#34]=2cR yvWsRN_tCDDp QZ#J=փ+ܺ_-Kup>րl%t; zd^,cv2[D!셣[-۪w'Bmx]2FdqN-'u5%ʹyI V+^].8 4H ._eO4$[B`Bj3 HZn .:A#ZR}j#Y͝wU*l!N^Z0[Rđh( ]%{,y-LܻuSKLgk!xK:ޫKf2|}Eػ<ۜ La)!ڔŰ|oJ b.|MmLJ @= C]/>"bsy ns\cˋĴ[W67㙙M[2ef=R [jyIqu?_X(Po|Rv;׮IlHnf* R5A'^}O=,—>d*tXpa IYR{]r%f.-rʖ=F[(ZIRJT NElZ/—\UB|' c GEhuNNfCR**KL/Z $&I_7-gAT2"P )BBQ.%5rU w˅zP Ae8ư,{ + ީ J[\6RJC k\lأWn p,-%/n}9$%A |="`=>s]%eǐ㬵m%N+yMfݑ3#vGԀҔttO~N@,Reaձ#-꒠~-nχYęH[G7%iu,IHa Kc^Ȥīe&%L6բ]U\-RnciSeJ[mᴲg]d,8XRdΗuI ԭV&SfV^c\eLɞ& AH˥D= E6n1>MamM¸+#) Ϭ4xV3-,ybpkvK*sIPeh ,r[.LؔjtU  WLjP&l]EsS8Vζ̀ӅT~> V) Ë\ mk&vRQV (JBt7twڱ|;~5*ر3aimEpx)ؗZ% Qg[/d+_kC[2ނq%/gA2ÅYTK%4hYBP}C(' ฮOfLj$}jڍcw~cH> zh{$qߦeKz\ce,ļ%wYpl}܀ɁY´܋/9+'eOMJi& oafxuBJt $spv538[q(3Dg\/M&:6]A@K@6TZ=rnnnT1H6 %ӃWOBuGHb' mKpR泮޽n1d X0 I)-T CddOb67]FobqGHOuQCK%Ŏ+@4q̢dۆͽv+e,v[g}t$x l'11)eBVJRGAҴ"_÷[eip1XKIiII+Ur !5*]؏/r<^uC#/-Nf3- PR7頉Dži"&-SQ6E68y$[*ɒac#Chy-ZJGƢtJ(h [$ A=]`[ 虲S>Т꒢HNOsRͨP\Z-s:;Jdn$cQRu71ov+} E, HRF:=c5+Zշ1֕HC~jJϦGǮ-IߝUQWIߝUQU56QnWp^8NAM;-g%稖-S~K|Iy3e`Wnا4*2JV5TdҾC֌4ŗ#xr_jஒ0ұ?lRJGj|^Ϯ]a-o8[C'TL%i:(.Uoz$S?e`Gb92PtBJqH 5=1 xuqˤ [_`Fɺ( )Km #\NB1"CH+q$ Irˍe8ۉ BvGS3=1+ݺ"dOy*RS%:IJӳ#{9}2 'ɒ͒׿wNw]O.8+y -jJ[e|Y;,$)IJ ԠI_07ir6y9td676Zm:Hl™ wswS AKbAI>a!q[nۮpRuz.生"ˋ2͒f@S,! =5ū4!nzW؎(^/HCq% u Jd'u=;N3K^o,rbEP}mZa;Ѓ "ۦGf nS`[s2#$;4[ĒR{,uVSˑk6x JCMN~c{ݡytzc{*^$-r)z AYF~3̙e)>W2}]5i!)*=dMd33NumZm[VyI.*RyOZ2[>w[˩Ktf$2}HZRԎ(J|F\޴[qXV[w+FmN% E564ި'Tݿnwiϵ#c{K^ԐK`CkNt9GѝfN&r '0f}=M жVEJm!o7[MjT艏 Nuim]h6%KI '}khofj Zؾil"ؤOTVZSImIH24 V(.U(7q ,a:یP&G@@d#}M[?o F=r噥t[ReF&< W6H$Ӿ=BإFr̚ull{/J$K1eJַuI'_s'ɱ۱$aSpj1ġ i9ƒ6F'g{o%F\yT\ԕI8Ty![ nm+|r[Ȑ̘JIaO9eC OAHBOv A&DyE9k5bssf2y-%OsVďZ8X:.djr-F-s}i*aAdҠ>_cºE.m*,g0GGq P=B/`r Ϩ((((((((((((((()i_D7歼?EjVV}0Z>=qn0N>GvwҊN>GvwҊVSuھsžroީWM%r r5]jNAM;,yad|Hgך{[֮UliUc\sz0x촞Z{:Ŧ&9*&n0nVR|w "Cy>Z@OQZ>n]\~-ɋ!w83%!\zi@ 9 P诖޹ư+=L%ՠ) - 'd;=[#:>atZ$=D\:R$-R)p%IR|FN"z.\MX q[s3ˆˍ[[ұВƹxTd$nLۊdR8D쥕4-^5s|9t981pYo؟(BK\:sI>U$t$C&o ˈkqS iC&BHjQZ~ĸbԗsWHZXZZYK)S$'2TxZ|f -|Lr(v+,Im ql+H-!*1%*&[aJeZB@6 %jenll- 5He*IH)?'T ì멟tKυZ%Z!M)I4 Fl ?m1T(PK {ac@VSYOxm=ˣjtaxBT2ZKBH$IØ.黻dgjv$3ɖ[kx4:KI˶r %v]ZIJ\m)a)NAWw 7i BH*IO$}׆>b֋ʭ i/ul.6u)-UjN>Z S&srkp*bckIJi *Tk8`9Ν>SYdPi- k{lo}w䶗ρ#.KLu[qN)6!%D,m*3{$kLǖK7=KiGIu'#ixqkݯ%MƋS6BSjl {n|?r}2G5xNRQ wm BPtEyB.WG|+D{*ZiҴ/@nkαw3pvUcmސ /ImҦR%'k$%=vkElxyʶDM#Ca[O(NAvJ"GlSluN0OEG=8>*qXqSϼ[BFԣy/6kV?zӷ8p nZ&0t#KF@@<(6#Mt^n,f1u BK@`f?nʯBnlZ#ALdE|N"-jn2氧}#l]et]y6PnNg|e}ruK1a֞RۥM6JNO*#ca_>o@M7[!w)%`*ZIxai5. {E-+⥂T;R :#qd1{6unXpEu /{Z-R2n`ܖns!>يl8BP4ăA3 Lp^@M-<Ќhx% ZYwHRCiHlieZQR;B~2ɷ7rv)ۈ)mC $@)HJFcC6VYu2nKlqؒ:8Q6݈{B[G$)8mRcC-` h#`K$aۢ].j`H(BK<:sI RA=#a7ߝc}q..E1%-)J]Qc6Hq.F+o3vɋthGߟr;ey^KpĢ[+liJiZI:;cה_-˒-n2+q/%PW5Wk-NC~1pt`v9+:nco=QJxȐkR HwJy Yvj?2C̺+u6l "ADPfh1jǠmن 6'I Rx>Sd3Z"Dq þ%]f )R{PgWߠ;")ECOz"!Zr[RRJ4N쮙f=lzec3*o4(yKKGzҊJvvqҠ e&.ȻDHZSlʮI#RvY|A ?2M"Ce+,HaK6ڜ7 $CA1F#縣ֻW'"iə γmP_O#lN1X2IR2m9.xJ+EchIA$qn`rcăb"ij[\xH)SߨM)Qs<}IzlX|GB$[5!OiaMTO^kαdɾR} Dx27CW|y|z.9s3y0",=DX[INFu=c5+Zշ1֕HC~jJϦGǮ-IߝUQWIߝUQU56QnWp^8NAM;,w7;:u97T?|uR_zYok}:۪v(N K{K2cPCVjpiM4)@ B.`:<״զ A`i\-FuRo+^"٫Fs{3&3m!IV a^rjg.e-0-]B;ڒ P6TFlʨ1oXjK&4o:J4jNߨz׽i [Wpz%٭6{]Զ ?hJ#ollKj|OyE۴dL[.U mmअꐯ#iO% ozo k|R9ڐHA#DPU"Z=bY}  qKKj4p$\uym ? <03,8Dk]6KS[TiWF-Oòh!GmP4. w#{͠>\XmVmהS:D2q[ iV =ؗ vza€W[~J)Ҹ.FJϧײ '[2%-.ZKrߌ EŕkIR7Ѡ_p+GC2 &FW!`KPKap`uHNҏ+0,଺n~6\n̓!&Za ]II+G*Hωkhc<9BqDR*4H.7Hvqc@B\p6Ck;:{43M..툐*2܆rO \ik5qbi]KaO-VQ5ҳ] ^".Ur$uqM Jcm]`9"۬SP1vbԻIpZk#LJ^ڮy Xԥ 7ĐI`jo.aVվeO*l oyh$(oJWlW-#ta']_MN@v!D5Aauv?cI1%t/a=;6*IyC^, RMhalj^ qiC=,3vϺVQ)I; ߠ$U2 /\P:Gi:q )tyGaCkD9ɹX-Z'Kn"t[fp&8z<ֵRĆHJwH̱# Ȑ \ Dh`I{caNHd.1(Yޚ\b;*.SB(J[ h(v<{x_~w{83'"彈:M;K:6)JH|О=!oq&;H%jJv(.UyU1VX׹sm#BjKFJ-:J-%EK*pej߰LʽI"*`ql"S5ENwF7;Mkz)qc) 8+-(vp_pOr7ng~+To[= h4h9vmͳL5Lk6 "&BֆZ#Owy_aY-چFoDR)2 3puQCK=E+@ga]..Oح}[y={j/94{vOjϟ>ۏ7ņSi[>P]GdQd$ nBz VؐZom:lvv$ I#ͯZi]xmno2Ӥj 6) H TG嶜z]zMۚ"MNWԭq>ڶIvW;C}iG xqOqpb-0XS>g\ְ AOK8> £H˜̵*2,9%j젂J{"yuUn1cU> CN-,)I⡴ؒE+ݗjah.nU,Y c 'n'~oNAYɦ_nW" ֤4 RRJi]߱"aJP)]^q 4\ROǪJyP,rH:CP2|GT R o=-1%X*lzbb .@niZ>*V|ĩIL㨲Z.bKmt'5! Q'^mmt{ 8TJԠ@,gcTw_)/8]R PV^1Z}as"7 c[&L)>H^eIGn$yKM $OBo q,JYi JRB@D$h>{S6D9e9-Yq!ۄlt:$#Ӱ:ԖLx꺲7G}#kȼ=iyL+>6jZ1IW :6KQI, ,5%eco\[lJH[;z-66T⒐ ~S ݙmj]>9Oק6;l;޵kj#on $<}U-66T⒐ ~Spʿ̟dwHfg5>KQɨqm3,mV:9W40CLjOwJ f 7c-]W)4Bs`xmƖ]訐r2 -}lAQQA'bKm˳3(ԡq+ZxtzjZlVQ-vjW1p89yG/9[PaY4eF[QISqXKI%(JHH%# KDngHr"C\@*W>JDaia: %0֖x4{PB|^ak9lVD*YBVT4z"[·ܱ+D|n%R[jI  hk+%VJI WD3Lzὓ9\vImD˯~Uu]\`jj>C.V6v&8x>3Yn86lʚcH.[aR)1W((9%c]hR{[=JZZ1tg¿ӱ4> q$odj6FTj݄YNfkrUҗ[?C~E(*4IkxNÐ"mh"?-i$APۆ&x[zw87;o ?ԼdMxu9 RUTj_OM!Yod7G_J? ܉nŰWKKϺ̟>ɄP|)\-R# =6 R R R R?EjVkZW" m+{>C-w'~vTGl#;E^'~vTGl#;ET+yF)m_9xu97T-FowYR HRU|#`u0uU~Ufbv!MM" ]-CШ QQ,z|^sb}˅0F4ogOI ֓%:] kU38s}P)So/#]RsQUfbw|z,CM~4]ƑoC1) obybc1 &. lҭȀ<(-;i=47R|-˅CZJJ(R I#JT>%k[qıKfCq߀ӍHJH@PDo9NU%nHn.M"/(m)ށ*+9?)sfn䮯$cgSm-)ygGj )$RM^ ,[Cm!IHz "\m:*B9@:$o.B/u`ƦǞZv=KP@AIH!II$(VVm1y%\2Kэ$f2\Vb$po4%EGDEYּW3^7gg%Fii'HJGJr;zW D9YmŞvc+"B΁S#KW=aPVg#Σvd\rckEba%Χ-;kWWRn`uSWۂ^ Dhk-m(wV[84ʼnvqCv7!6#O*gq2Uk)K1b6Ke\4^mzo; 1}U{WAbMm [heT]Iٜ)mӋ;8Fe.30S->^.<86K1m0 wڽ^aW=oB|ILXěe&4Cv*+) q$ij6vtcӲFIZoCԷ#Lknc[NŽSͭa_.׊Cb1')U{6eu/QMHHĨm'pAZN'-t!ZH]ЫY! T= ^N׽xǸ)ZR}<=6vh)\}댦srxnIarbfn^h[ @;lrII/~/Klj $<)M47HJB'|RGY1RE&1dkw"PKԀ*1~#ͻ #l%G*[KcNC~e++:8FMuSaN2Qְº},%dqYO[k3fxgImo96FJww0uL4Rup>%Ƽ+l'_.5볝 e[QΚ y$|[R)87lksOUf[\@l|QQSs}-A鱭X&IZKM)#ԍ+wdv[Hz[r^Kr8k[Ojܼ:zvuNmm,IZƜ;Sel}I5v}VFB /! ųAt<:j+7ڹYs^KReEJf"2 :VPJ)ZŹ4"{O͒7bbD֖z%AJ Gpl+2὾UwXղz*DR‹o='dq;[ m5STͲVhmBWtO~AnctQ(ZPn!Z ;B-~.؋-|E5.ECTJQ!Cj&_>̹7y0"oc5\PҒ%gk:#I_eltR2cW/*vKͨ!~ȮZ@p5zi &$ZQ ƲpnEV⼶+J\BˌA۵G,2Eٗk-FM.ԩi&[LEyJ[m|W[gò6 t۝'4aHoQI XizO5znmx-uRY SV. ?Ukœݮ S'"vhuuiqG"g <y6+enmWh,d*n2uA6PI>RS.>Y]V&f"4SEG% J]*2|%5Rl8Jm`]=ÛEpm.naim)JKAXP$ 7Ƞƀw?eHi0m-RJsaK)rp--DXyrJ헶C)RRRIZ;yA:Qѭ-˕gOrݐ^ڔZ1_RC*^uRKhHX ?h̯s[؀HaZi R|Rԣ&d-9saۓm]] -AiAjKE %E;>ַX3l=ǚ~uɲx1,ډp%Bvoa|`\o^#]) i(~:Ԥkvvt]..ekDu8[CKx'TCcƮw<:vU#'ZX߼Dɧa81uHrmb{S}7! imgB(Rg׋v#1<Ҁ9"v##Z<2HtTm7ܹ!s-lA.C+trCLjq(mv8@R[yټBdm@LȶMTDiEډp%{o63r|KVMFo22m)A.V)C=&mC? Zi^HO}+͓_P[!1(yp}܉mS1ҐX<UuX3zCֻ \ErtK턤 Hq) p;$*wVxv-ŴkA WH:RtP MDWQ|;ķXYqajHK5(` zjc u"mkS rSj[Τ6H*#~JIg#Nj%0,6d) [uZR<ԢIJBAڔ X J <@/ 1vH󞪹C;p 2 %3#!B/*mtM("9RrvZo,a&֑x R],%j IZx׺Luڛr :Pt;ڛ-'6{4dv T$Rӷëp/6.;zNUfgre.R}"\d)角H^+``59Ւ Ei4W3Kam8RP@(Id6V{ojTu+-[a2Q}Efb]RQA!ZFknt'xKupn>R:RG2JV–S) 2l g-C.76-%v  }ʚSߡ(Z}+68%f]@Rm )6%e- hosA W>30<]ǂ[ܼyF0OJ q[ x^]~4ٱ bʦpq, Yh$ I;R6v+;~dv 2'zIonŒ_?[h$vA*s)6컵!YW=Hr{jRЄ-A֖R JIAI!#!A. Fʊ'A(_btvlha$6cD*tnjH[_- 5[ ^n.ܯn;qe[uJRI:^\&lKbN4Vv"Èp@VTv'{E2&䈴ڛ4?lbv,aERmaK_x(69(hWKvUF/e7{vYxmrJ*R;mCb8fȐRC֘vҜ KlEoV'zl[Sv+"jiaNI!ih$mD))Iխ /tYm}Ɋ}h jTz:+*D_;5]nZ\XCISqD$r:=Erq9r:Z<}|R?zql{^n:3`ˆThD  ֜6{mO]' 5ǿv YZ婴HJ!;Ij]3kl+MvVƹk},rߗldžmKu7uI[@Ka=>$vMep\"\2+܉.L&Sm!-JIIlv ;77<3$-)c~$HGR*Ov<%=5ĭjxd)Ht'ZA@)@)@)@)@)@)AOCkJ$V?5mf}+Pҷ2qqwoDx?볾UwoDx?볾UMMb-S~J"Z/!{Q\[ &3vgך{[֮Ud[AV^!ܭ[ɔ/=0#e t1cMڣ雄.%nT%Ggҵ$Vd[&<VU0e(q@mGwsWrmp^`Z,0\YN?HTeWT`ngIҶ!IZȬP9My8je:2e˄P8$7ݻc+m-$cĽo%%Zq)uAA>A߼R`sH.*5 rKU.vylCu o*i 6'{#ћd;\Vht!%iⰂwoe,ezkt}|YySN8T>:lr̷-p7tR/$ hiJ4{U|O7ǭWYDzԨm6̢SJQ%)y*%lPxHpqwƭw낚ފ)mZ+RПUrMt =Iwg'+[ -]g[FibfJKe#"<TP8J{$y&,}DE=oSԐ),$[4/Xɵc)-y,8R!TI+6G.PK<5j?IHpD $^mXxff&٣@oeO< ($h5ٚ1Zv| <{A G2\ddl)mmiNwf9.f3ԉ)ERݒRZ J ~Z5zFtJX'ZL$nCèLp* ,Q@O*' |XﶥȶGQ U.h)JN 9"l>;$c9* !~Jm4+i+N;[-zƺڥ.Ì줟'AcU6[7F!n-vK]r=IVIZW79rR , 2CR%%H[I)oyaKnn6GEb (Q8O 4(n^-G @]I+HPt!+)+Aiv=A3`\5f=.Rnq5r?tIӔҒqimA<Ɩ 6B%sH,MNk}Nk:6/#]v\RVweYmO=? Xr'֛4TW½+\TI<~]a[H;H+6or.-vxOK[ZF*+]s^A]/֛]11_nTy(s IֵM.R\WQ-R-mK !DA_XT-RX`YSӜ@ >’R<֔ZϮp1Թ2 ZÅxljKi< A*=.ۚxCw#|9EFP[ .Hm%+Хʭs3l:%ܷon!>L%AlCi {  :; E ;qJ\$6Ap!$(D>߄WxۮY{a*]ɶ8Lt: !( Y$q[myzn~duVm=!h :EI #WVC" .-&D %\K\J-8H SK%dr^.u/BtZR*‡։COmvQypU G%m//% QH#e:T0l뷷jǟ1Ю%ujV֋0Y^#`VV2Ή*oۄ-B+|;*@x"C䇯vt Ə /:*▐Jzzց#.ϕzf-u@PiH ZGIC^ฅM5isn-қ(i֎#{wR 31\8Ï@S<oPuނC!a:T CCֵ I| w(~s5,;+mMBJIR;ڸbθ^[ 7AJWY2Oa5灑;LCOqy#IJ4`76Ǯ6v, &H n{\gbÝy=d];OS⍮.6ʷU\Kkj$)t\%<ȥ:KI zmX 1qȫtŚ}16맂OLN6tTz l~tVm\}3"=9| 7t16k?lrUjnC"T@PөJӰAҡu_+Y3s@:>Ƣ'` >M}o6X-0KB <|@$w1ܙ/}=ԇSsCNERBfC׭ti BR/ӣ5)hXCAs޹IO+sJ~ R>#UOݼ*e֫s-bLLN6 P}?/g\렰1h{p("QMJJuVFYE&ݫ-Q+) PP@r Nr )א8۲#[D2*If>}%-l5ifsq!R.-dR8NQt6m>=2c\ ֧)Rԡ,:m(.!cCcD'w)9KXz\- {*;Gwk5VGȢB@s!ZRxRq>ؠ;mj ,?u @ vbGYn;'C_Ì/2=:-Gb%8]:r.!Ѐą+VWmeSm}YuH䐮q%@Mo%g[t9tg\[q.,Ktme1]R;pQܘC0raԠR̥Fօ'|^R7rf/v<8/6w'^SJۦA jun\)-y'ݭwy|fJkp![֎NvǾ7X=qn0N>GvwҊN>GvwҊVSuھsžroީo?i/?f=DowWJ=Gּ[fv݋`R`Nt/Eii:RU! AvU+4LlCѲFcf채7Ŝ+SeCkVIZ6w]!nSE{,!)*:Oz|Lű%ܶ0 ZJ[KN%* 6@ }$Ņsb=&c ;-uROkń\o?d >Dخ"ظ]hFRR%AǛQR8萂A̬XO\77\u-at%iO%$ܷ$UL^r+MrLN6p}T:[KNΓIR'ʟ#\EI3 k!dR[w-! ðқGp~ ;G4SadjtUX4_)#tEyċ. %Т1U|tFVlf޸ F}w)7a  H)sXF`w͵Z3W&C9-IJ@SoWO%=(.<dq3@e 䇐 P~=o@VھhjnqVE$[6fb8(6;A wxd(&1^w,\{$]p%ٖ2 JO6I{aęHyHFd㮸 >2I$VΨM)m3(+a0g#%-yJZKj5Xg2bVdlϔJ, 3R2(NT_<:~PVwx,4ԙ$i 31*䞙OA&uX-(4mJRy lo 쒢pۯِ3 n4,'2J8)I>*%ٙ5Oǝ`vڞKmBf8q7aϱT I:օJ}s6npܐf7{b3*d*#Kr%-|eQ9 aw:3x$I3'ƀSlq<ߌޝL#~NN/jW؎+tʲگXdKu=zdBUE$2,žZJP@@ξ` |OMuU EYTP"0L$;=l jXolݝz lq덕%Qڔm@l;humn칓q ^[#:z`r`$( M#?XӐ-<[NK )'JOwC!e…L:-0&nS=>;sBZTԥCkZ{r$SkcC)n ,KZ֕(JB{oe#[ W[VN(X[."f\x:Ckpqa{{P {I։I=qn0N>GvwҊN>GvwҊVSuھsžroީo?i/?f=Dow[Kٟ^k-oZuW9)QJR R R Rj&ML\7 )v8MW OITKz꬟ ˱N7" ,% @p !}-,-U3^Y z2]ݗ܏s)hLnA!i .{B"6K3v׉y6\ѝ9>U GDx'F+oEղaJ+<fffV=&;l]PVm y_YZIfKdp<3]G6hY䔭m()E' '?̱f8ryb:.jlۉ)Q)PW`Hchǎe6P4T=w^".Re{.bBa+;CE) |+Vy=x}mkUn3lI&Sl\"ͺO% ,M SRV ^JIPN<2$<3ilVDi=6JkEeJS&2$$5S+ mӜR ૊t{@bꢹe++wiV& smjG'ZVϏ@V")09"liҟ+eu'%Uˆ•$Ś >U J9\ te @0LKq]( gF{j Uavdv>=&ۆRKtE;zpKv 7KxO1b7 n!UJ䢑ӥTVFb_MfCoWs⤝eCIYWּ'$-ۧ7qpTܴQk iIQ?\ * 2 : > 6T+G.FE Kz #V P IZp8Jw>S]a-o8[C'TL%i:(.Uoz$S?e`Gb92PtBJqH 5=2n;aº* +Ur TTH!D.jyEnX} e+iJ^YC v SQ jD;C["Y_fE~sm* )XMQٰn ŕkm-%e)1ޢe\mt;BS6LNpJDU{-DC,8%ulQ㗼'm۲&6cv vl-hHRSu-jx 6ZA)H$P,*c$E ɩλryŻmlU:J.w2+>35[b&RQky SFh 'o۞Ade_^ nD9JGQu6’A ֆa1 L-$!T!Dlo#֓?ݎcj%尠J %$N;ZlDYľҗCⵞ'[R7qh#HVvn \fX[㮡]Bl4;Jfw1 ]-(S[ARzzWwlE >e""OU@NyIOph(ZB"6$ˆN5{r-M崗ZTP\e.ݪ?g,̻Ym22ivLL2b+Rh4SJ*O-8 h3BTKHP)P JA[V,voC6 &ڒPSĆ<ˮݪ^pf9DKB9<@`~xɵ[+wjD&et6ƻ%qPq#QO $'jLz˳Z^v)0Aɲ湊X*giO*[`:^`}2WؖV$)Mۗ!¨Zq !}/] ~K4TLl}3,xӍxfAShu}Cn!J@,|vPyhսpn" y<)H5^3| .Y,h q˃^fYTn#e!{ *6!G'RݒHUm7${n2%+K)OMĕ$ t\St]67fbK)RJvTRzQ,-c.5fJtH-2;RR vaX✹ɶ\Z %S[6Gߎ?MS<\CimD!;]Rt6x5&=hu{e٭Bm~pGׂpQAۡG~KrL6 oBՙ] SL#hۯpIWhUc~&B!Mސ-cmA vIHI >U*,蒬iR$SFt HGq IV'q{#Wͨ*юw<|x4bܞa.b.WVu(iN% q]' Kc;7R iݸJY(6Q.TpT ћe3oј1q )II-#;yS selVӍ>Шmq`)CG٨M&ZBcP= ?c %Dy8D$g96vĹR#G.6 HAVRvH PYMdMGɮ^}+^D[Rqm@(+N- )cc$?=gYjȑ6򵩆e9)-R$Ͽ%$3Θv} -Sy-) jQh$K! J'C#D;֐ /9)>)更 dcs dZq]vү:H䠞%z'z&9RrvZo,a&֑x R],%j IZx׺Luڛr :Pt;ڛ-'6{4Be"ğ>9gi> K @^~MuzL^>cW"LqM$5Z4VK+i[I\y-:H ICW'W_9ڟƯ0aZQԮ$mG-?]1vrs-SEя&D6u P%:=c~ۺ5z6d']#~s'Wh(QHm-)K_\YA)oi [C6['G:q҇D)#dKVAipSRRö_N&g)rڠ?!ʖХI$l('I5^fw-ƙ&& +ĦJUJTpr:߈U8߾S}U0?q?:=>}oK1憎=Z\'fBui9 ~z݋6ۻv;hr!6lXGgf̆-2msttBJPP'TJR|"n̮em-`ru!KRIRR˱AA$/*PMJZYq1eTTTCڊIkWey ۀPԘc>OAuP %fH5mRBi"JNv#PMaoɳ[MQqk=7[sAnnE쉻 s Nj,E[ŮroiK{۷cn^28YcE×>_PXT r\n |ÝZdPmDT,vO$I=RRRRRRf}+Pf*hrq˼|#CiT"R؂4Emoge$g}(#Ko_cP>:}SSlm|}RS{Nh:#Q<[ &x<݂ M$e`Wnر1 2I˦MwfEnBYm,8V)gsGI_ԭp{Jp&$M.3Y3Ge__?!"tzlcjPn;O*}3%.VR<|`P0ÎN(:BS`(=7QKVo\}ۮΩۍ+XӇjl?t֍O&WcNϸ*ܨP;!QUx].RG:]z*1x: %}è4RGp{x`8aǸ\^gHƷqتePS(iKr@IlkHUE{|/d^UyDT1I uhzN;$w.kTSe.iG"y)m lۓ.0-.p#%[⻵׈R]76sRRPISDÚm>̹7y0"oc5\PҒ%gk:#I_eltR2cW/*vKͨ!~ȮZ@p5zi &KϤX1̖_䔥3eK:Ia GL+R,K%{¸GʒNk$(q M )i$9. -nwgwi#mE$6a<鹵඘F#oI.qJTYf;)NlvZ<ѻtKynB 2d%lTShVdhA䷜⫓j.]Ʌ e\z:v)JFՠN՚Uubm.\nr+OKm4_l)r[jఠomr.W˽]kX~Ie*ZÌ6S%Gg'Z%aX:e6ķmKt !);Zyk OwKS;9HZ+Jt|] {6!ە<;]íR6 W#Huqqܞ cS3VCHR @R*c 9d yv rړ5m##h).淋zkT0[c+Ξ!Jӵ(b2TꤖБ;o[rљ^:/p, 9ĴGg{5f܈[Lt"6"g?7lIZ;_#;h∴\:0bLi :OniJw5hyz-қK)A+mJFAk_a1gE6XVGS4 'zeJ ޾zZ\nf/]\YC ڹ(+y^լs+dEO^ܮOC}˛a\G:IhpVtJح;gr nN-β|FmpVh=+.ck .zHǶɒڜSM-cA` ܟՓd[LrsJPK$Jm(PtElFbɸ[PAt;hb7W5}xW_l"?ty盆$j3=+jF{SVG:[t(*A'Z ~/[d"Tf%] JA q@h|6 -fY]EK6>b*eKcM!.<Ԣ /kuG duTuhd:޶#fi͑.?vHO>Ԑi*oEJAj|/bd**r,m+L#z}//`Џ ttۮ41 TaI송9h\cˋi ?"Azߵ;nhu̾-qgRĠt^) R;4wh:[{L|&MSxRKN*||Tk/9UuMɔ?xJi5q“Hdq!{䭂clNQ3ߔ1}O~|}"Xط+mg5>cgz <Lm>4kb}c1#Ǔ.c.\rԕ=%R)H H$sQ[qioeVwE i0&:6JtrY>,LufB!D6RVν(:Z6lW5Y <8)kYQr+1?6~/W)*ec 6%@N7,#"Tky s˪@G0dy)YY6Eh#G~b3y’(mj<-[^KR(ydEJWSi5Fu/!75b{3 CzEPeXK7 ]kwY2aIm  A dGαgK@q^@4mgXl0쳯S"ܼOEte'-α%#ȃz'Ȥ:ý#!I n{{3Xol)|2Cͩ!|=SfXE:L;,2o6YBse #W7ȏ0=$ }A-Ualy\uxq-6xRxsb\,5URZߵ*;d8TBJ6[*!ZMl:%C(=E%AV#1of>Mqs>N%6tQP %cxVIhYêHRn\ CeN:x;h3ͯ܋w[5m%0d*Aail8<%(kv.O]̈ %)Kim /4]fa]ďR%!Q+ HPY#o~{.!Ԑǒj)RNtG(6& u51" 6A hv޽GEp&}3{&3 %8T/[V }qRe'nmu/[KBxJ *àedd*EK-vu A,R}~Z-2"ml+ZͰTKzGZIr~-o57GH1f}nu8@hikIJ{D%%J 6I#0*.koVUZ%0Z!( PuRPRHH7].X}.=&rXqB\v=2S8 Ofc%JfvtC]d>ty4*-`=7o}NyGJ wP)ժ $?f}҅ZۈPRV kS6$ͅrYJ < T+aG{/m,]7)/Hڸ4T>꣫F2ۮE0ղS4T!T*C-w:.844 /l#;E}bhmnSSa~@+_>GvwҊVSuھsžroީg/w&ߦO?Iz_oJB|iOK;/Ȥ[~α3VP>>[h]hJ4zQ>lf r~(\{Ǐ]6Z7\At-ݯ$YҬ1\gZmpDgn1%݊[ 2 h;33O:Ƈԏ}'h fd\rr.Lg5rf XK {AG.::p\Ĵ=t<✲ :-9{;=_s L:RT{JʵW,ܝ05n DnSwG-l'{F{t},h}HҟͿb%W[NT*+\Pdyr?vlj!{\%ܤeye'T`H+{F{t}==q:?4>}߉iO{fxw` n$5{͆6c6Y1|8qns$Y 2]s57I. v:>"B{F{t}==q:?4>}߉iO{fɍޱam/;jrdԸ,||J;>2Ke2|"AaNgGƇԏ-)Ol1^ENSv|lyPP~ `@O/xqwgޱ=._SDz8Z׀!IH(%#̭T33O#KZ|7{τ8B6{-?g|T0!l/HHJRؑvu=_}ķe؛ڦǚO:0ڐ:Jեt5g1>gG33cCG'nl>6`M&\Kq׸"S1A%#]{<)[^h$]e)=Wv|cF{t}==q:?4>}߉iO{fcˋ˼k0Zcm춽髈% #G4+d7THL .W V\tId|\=q:?ў8KR>Ĵ={i]񦖛X +ZwHt}NvSIov36*+d<=:(zT33O#KJ|6]«I߮9%>6L""TQOoE'{G}ho@ ʉuɍyժrQϵ԰㥷I楡;jNZ'{Ohb|Ώ林g1>gGƇԏ-iOllW ~z>!1zinɌ$V6QP$;፹%mjӚ;wqڰ=q:?ў8KR>Ĵ=u 2q;ME6J;Ñ\dRT@±~y<Kmjv$cTKQ9 \sCR|M+333O#KJ|7:|Wf[f#n6Iܗ/@TV԰!%!)-!{W"OIF{t}==q:?4>}߉iO{fbmlKY!奖הHSv *N&~YQ).~\s|HHWz{F{t}==q:?4>}߉iO{fY^n\-1M !Βˊm-yJ D8ŅO}e\a?e:u;kO'X~%> '^$F]eMRJ+NE'e$ܤX.헹2-Yu۲^T7%HRQcI+33O#KJ|6,1;b.lȏKZtR);˰+=(*R%/O ȚJۃˠ ߴg1>gG33cCG'n`8}YCw{Bi* %#KPQ|A(c&)=  敲%eCZ =tkD״g1>gG33cCG'h6\Za6cL\CIZDyG-2u|y6,f:Yzks3+lz=E=q:?ў8KR>Ĵ=ml+A~r,al\b32 d4#B{z>ў8Ohb|Ώ淚wZSٵ+w!ǺGrюo_&D!JTڢK W5PNdOxվҧ0CY@H[NV%<eI#UO'X~%> ݌ =^V,;Ĵ={`OfLj$}jڍcw~cH> zh{$q܋!sȟ1|[ݏ>yv\S8[~9S [CI!A@hb|Ώ林g1>gGƇԏ-)Ol{ʼnXinmgG33cCG'l[&v9a-N &>ep%mEĒoI}߉iO{fevlGq3e*J\Q R@Fu'8HO2SLد,0Z]Nt q==q:?ў8KR>Ĵ=tF?"w.6&K2y}*K-8vCZdQm8%Cv=u2͖dDFR%U'{F{t},h}Hҟ͟`2[ɨС÷n^(?&S/KKG R;Pפn45 BS8 i!zg1>gG33cCG'k%L3^C0-8qK%\‘'Cqujigʙ2iq!ǔIoў8Ohb|Ώ淚wZSٶL<ẦL/8qcRƚ"9A+V*trBU674EVў8Ohb|Ώ淚wZS٭ U_O'X~%> w~7ͱ;uǍYsz 4wFF7v5m\Re>2_ZBKv@+?~:ؑq_N)Lu4fi)ވY-%D>^ ; l#;E}/_4x?볾UmMbx ɌTh )#κ}U}rJU;|:FI1WǬUyzܾxwS3[JRdy"9UyzܾxwS3[JRtt$_=g33[J}U}rJRn}U}rOϽn_<;)JZM2<|ϪϽn_<;)W)KI:FG/W>>|)i7GHEs>>|^g޷/-&Hzg^g޷/ÿҔ##YÿҟUyzܾxwRdy"9UyzܾxwS3[JRtt$_=g33[J}U}rJRn}U}rOϽn_<;)JZM2<|ϪϽn_<;)W)KI:FG/W>>|)i7GHEs>>|^g޷/-&Hzg^g޷/ÿҔ##YÿҟUyzܾxwRdy"9UyzܾxwS3[JRtt$_=g33[J}U}rJRn}U}rOϽn_<;)JZM2<|ϪϽn_<;)W)KI:FG/W>>|)i7GHEs>>|^g޷/-&Hzg^g޷/ÿҔ##YÿҟUyzܾxwRdy"9UyzܾxwS3[JRtt$_=g33[J}U}rJRn}U}rOϽn_<;)JZM2<|ϪϽn_<;)W)KI:FG/W>>|)i7GHEs>>|^g޷/-&Hzg^g޷/ÿҔ##YÿҟUyzܾxwRdy"9UyzܾxwS3[JRtt$_=g33[J}U}rJRn}U}rQ&%F,)˥edI ֔R?_ 8anyremote-6.7.1/doc-html/data/anyRemote32.png0000644000232200023220000000303512061426051021332 0ustar debalancedebalancePNG  IHDR szzIDATx^WilTe=sҙi.@BbAYA4&bn!@?ML%E?$R2ݘ,EZ~ҝ3νw&%=3oNsUZ:fLi[1 k`Y3DF^u-A .aK$C&ZgMKlkeЄtG}ǹ b߇'`<? IE׃ښ 6(=r,d^ fŌʒc `N Btf[@>ufZFIi T {*n30[ v"*2d؆ @YE9TKwd!;sKHs%:PVsKM7E}=8nBƜD:$ >ZFs6-0b0 f'\$HθUpC"1.ltL**>?"<rt" _:ˑ .!cd 9)?{9SA@vf*N⩼LpT?6JЌFQ.TLy%1 T4Dseuo n\DY)#sȌ6E*=q`_1~?Ⴟkb-`Oz\v~oo9*ݵҝ&at13eaA$NaKX_v๷/ıׁΪoMס VcHpW[=Oh-!",6o 7 o RZɸA;@݈{[W7}.%-Aa f`s 0&b Δow1eBJ WKH q:F.!u5$hh#U x|?,CdHAS?TNò}=؝HďAQxT69qL*-U2czY 03A ÁD:!55uP}$IWr.2逋`D:ލgT] b2&S"2k D65C:{׏"L@Km/* c&n-}-@wIENDB`anyremote-6.7.1/doc-html/data/aac-cf.jpg0000644000232200023220000001612512136715224020342 0ustar debalancedebalanceJFIFcbExifMM*Created with The GIMPC  !"$"$C0" G !1Aa"Q2UqBR#3b %CEdrs%!A1Qaq ?8}/i=aS3!z4yH^*q^+Kl֌Y/o%^[G[=Nü=A~⽪BmgNu6>? t@srNL؟'@ȯkX\[Ͷ7/e˴>fVxbMӺC`TlZm$lI:OI56H; u۲؆#2l#c$sc2M <Rd5lߧy J??Ywp],.7wXckwq'N:blOIj-gzx2L^yddxۦl:r, 5X湎k rk<~J߽^db6o~lBI^^' \'4?o檥~i~% %}Ch%IplP;4Kf K==D>١vi A-TQ?Oh0c.7A-TUKf >>١4zO{Q?O(}%}Ch%IplPa}%}CK==D>ءvi ANF80xTZÛd#;a~H%aAtXDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDp<>t6KR4tph'$spOPe\g&'A^ƒ -q>H+rx+&I] G>0p9\wkJkhzY+VoIE|Q$mk#mlVZd4&SJFx8w5~q ֖d9 ]CH>'6Anc۷;n6R2+)c [ylQP>Ē{N2j1𮯜koF`k7#u-cD5IiΘ4 > ,#fW5Ԥs$rpwM_m rQ3BH f;t[x7eoWwctՅjS/6V֒zkS+Lψ+&F+)iEX!gH'A,=v"+eio=A\u6"QdpP%y]%q;n%:ZTj As!V'9Hl nOSuyL~66acYn&+Zwh?q곦Y]ES(S=W8uH{bcb3KޅF g bfEokQt7}{G#M~2C ǔL #k}?86R[o5ǩ-nu_Yߙڵ+Ww{w$uBhGRӴeгio=k-+9Suiywdt!qGĮ'AD@DDD@DDD@^ƎUhiL>-6(=>gw+VOv25Fǻ\?ڱQ1Ӂr:4|[n۽;{q#])'0 -ycĽT26dRa;3谔i~? 8>S>/X}u;'&zt?CdN1_3|E͌:>łDq0y*?eE*-IYShn%VW7 0yJK9LVQ87z ̎b$`{&cҰ5צd,g2\d5䍯l?-?ǽ^hkH6aa3:/RZq393u [ȾKft7\yiV? 8AjTՑmC٭r~nű:Q`[nKo8wWO BVt|GR>aw@;62_voWnR Z> NV\t\$qWc#Vg(I 6';%]<Gnr"Ő1Ůk##qDu'ݳ= >BwM?.]{O?6ܽ;Q|Ιꍇo-KJuqaE4> 2\5]$:GRw+/y( _B" ٧`Ih)I=W9q'ddDA^^e[ ikN8njqٯFkQ6O?@.``e?oqĝ+î ߻2+tUY~~}iW].7$LCilNIG:)}hKkrKRyi?Qi$GI+\+?b<}LJh~:q$R91Z^\@p^OPK;YBX>l7 ߲ J"Hjv_qR!}xj {Y~*Wa#N7jx8iۻ% HvѮXw=o`8WѺ*J {u oTЭx+-6Z `s\ Jgs:Q`;U|w).O/rK&;4w;+Tz #Z(/G֎ZղٱOI,Ly yh6#3?~)Z9x>㪳D:G#C_0K$3h[#"c'sY!?AxMO]p)+[3n+LOuu-{5+1#ϢuFgb7 $+v(BJ "t^qeN'uڛz(+ zse^&W"9-p؎%ѫ10"" @IXRck0Y@G8+X&u]\6vx9ql1.qկn5[Uղcp 1t;yK׏K)4ߩeѰ~Zvhzp!Iٌō/ .ݱ(Oˌy5o_pM|eWTՍ;"a\vZd+6@ք0a^dmx ۔aoVџMPzbeqۉ GOe64/͎Ԗ,2?"QY`;|o*PV ?S"Kqp?b~)?TĪ_w&3$3xx|ئHDmeAp_j]r!koM^5i%t-Yzf,%ESްȓ30~g楜UcHhΎ4{mK\=ou7VWֱֻz.;5Z:KP0KW;K5ˁXY=AD@DDD@DDdfiejzshAtX z_^@[]V}6y #Tbc^{kw/Nqhw8tItNJA4$(9V=3g67]:+j_Bxi?+>6P?ݰsv3[>d-'yW5 ߲OAĮ% Zd& M !Wɜ}`P""l6ckLL[sKvv= A5pSHqZj;n[775v~Zr5~.&e&.9#r@6A@:R"+]7a.$$2+ϑ??%\.M$e[?3cx˖K:rj]6;Us:K{~#as#}O-urj6C`0lH |}y*cz~?gʬ3 v=Ri.X8[j9F6laEW/Y##q=uqu^/LyVdXD[(䰈 +%6*M46wUֹoPSZ]"c[cJ1!ˡچo Z\UT]upvwܠMO6;[mr׆o?g/W]C/{RFVhs^ooNDZ/z[2PAwO?V,nzړOa]?#*ћ1]%ib1Yd*yԵN_Sr64}1Nld}H@k@=Op7AZ~H?kh][`k $R0H^Fv%0Tr\۸]eGA{ IS>7`1[?HiӟÉy{6bO^%adwXAYS%M$5cmfz+ffӿU&5ZsuPmXxx8zmP^K<cnhre4M\nHic3t#HIavߠ 5`X(U Lsex_X:-+<k<==gM9vfY(EF&. /cI_ xqy^rJ8Y-Z`[a7鲣yqAcps%޻Zd 2^͘`~]7gs%PrRrYa}Z >*RhakedG 1dt y߲>Ѻb ڳOm{wmK|FfzF'1j,.7g)xsd#Iaanyremote-6.7.1/doc-html/data/ganyremote-devbr.jpg0000644000232200023220000005135512061426051022500 0ustar debalancedebalanceJFIF_`Created with GIMPC  !"$"$C"N !1"Ua26AQRT#s3Seqr$B%54Cbtu8R!Q134aq"A2B ?kMQ?VGv{3jf-ya8=Ak7/DpnTBAZ?jTN Z+bEd6F{$|=I!T+(SmAAƔOP ;%^udW 8㱤4~ZJ+#&sjջ@uQ.\fL)IZ T:W,LGUՖ-)lۺdys/e*zZw<w8}r+Υ7#?ljp6GiCǪ@IWB~Mj_y%h’moRA u9V+^e<@sg~ퟷnuuĶ٫ZJRTI'5AMr䇋fljnMӸ0y- >]E?٭rmuq-G㮴åN(4GJ6dz]ij|ϗm9~UvHiܽ/iܽ/+aJyaL)GҠ!l%AHְ,=`]*(e)W4$$`w;j3a4iܽ/󯷧ݙuM=2sn IS}n j yEʉVPrN-#S)pa!\V=d%9Kw,-ȟiܽ/˼96YmsLj0ig%'wҠHNG\Wn۷^\&cBL Ӧ}MXF{q OUr+g%^g^ЗeyF']_sQVҮ'?P-0 8njB uқsBsr~=zV[b1l[l7*BRBG)aUA-0٣workgVDw^ЗeyӴ^ЗeyZídGشY&RcD%gv썹j13Pj C}0{sQ.d}}swT45Vm_} DG.G6t5K&"%+qM\ICkiܽ/niȢ$fp8h9CG֮V ޅشj:r!BQ sQ"]XNFi,r;N W;N WJ%$ޝm&!(2kq?h :sl0e6Y +h%ռ0~N>T gҨ*Ml6ȫ[^ЗeyӴ^ЗeyԙQf#z uDB9*CX=Ip>&c>jXq"Bη;kHad %D/ڡ';~,3^ӹ{B_Nӹ{B_X$skzr919xaf.;oGwG]Q:2CW"^R 2w%PrIHdn`_QV 4 ^-4 R ͩ{}b"#ObDj휶tgݨa:SnMk9tރ➫iHWirC7TG0 EG?5W&ͦ"[`XGg~lcZq(t$V&n6^ Lu6ĜcĐ~joUS?]_"i-sS}ؖثd@'Ec^7Z44D,.Zw$ =5IKz6i{c-KS#gzAjF*Q"ש܂b3*tYpgs}k= 7/JͲ%,'Emoi6\tN'rvkonj M6rҽk۸WmF6I㼰 \:kȉ|Ծ‘J5}#1i1!C̺Zq!HZ TGxv<~͙jf3\l:[iM6;PIˤzZ/x?Rm\oԒ5^g]pܳW:Ȫ~ j_aH ~> j_aH ~Z龻v9lTU?/x?R/x?RmMcem6er*ZR j_aH ~Z龚j/1lTU?/x?R/x?RmMcem6er*ZRsIHwmܬc9sZ8'z%rfhd׍;R02ILoꈎkW].h(G*x*r,u־OkW}>?h߿18ŎB|S_: M~j>o[>2x־OkUű *nކ֕'foO?W%Rz3vvXUYϧG4YƩ_oޯ6Fp+?i,0[(u$B4pCe}fiKǮ~J b^ݭ_7_eo*_tqK&pa=- 9uJ傥IHqP5jW'5M(Ѷx6+s]iQyY[ꔌOܦgOܦgodosʛdosʀϾ?r?r3OܦgodosʛdosʀϾ?r?r3OܦgodosʛdosʀϾ?r?r3OܦgodosʛdosʀϾ?r?r3OܦgodosʛdosʀϾ?r?r3OܦgodosʛdosʀϾ?r?r3O?W])*'p3Y߹&Bp=Q:ަkUvT(݌f|8^Sgߨ.bTN5j=mjiǮ:jj[0ԹS }$}TnPuV}øG#c8QBӑ)RT>=EgbDi=͔Fr>v˜EܭO4 jzn'7^/ev}3Ѯ 0ʔ{HJ^_='ӛ:d_b{V_\Yȳmzj3Ɔ s!j Z y;ukX)iKM( N@zW7Z<}~};#w7Z\}9 }9H֗7P+ơ{!quJ\ȱNTX9Iڌ$aY4,o\Fjrˍ ,by  R$[!|vfK-,#0UtNO\q\ 'wYi]HOe-i=Gv(\}T|Vrn(۽0NFH}]޷/ݟW* !j Z y;ukX)iKM( N@yׇrf[h>K*ڕz@ r3%uѨvj=Q\Tag( <.tiT.GiH%97eZmZ<Y=ӛS&1e7ě&uԸ\krA>NGsL{|;ʂ A_ yн Bu$Y}9z-ZMj@ĭ7rS8tաED(*$X\=oy$i~J\r+!n)Aiq*d.o}yWz6n-juV+N\奆&;1 աED,$TIꩺB߮/ˍ3>JMm Fyh I@s}Dj]?txZg2ᚧuC=%-VڂI唤$moƖ`N>*5NXzޅw(eq4;o6ҥŃq*D'Rel,pqұܯuo'&Fkind 'mg';@p]J3TdN -E ^H|&5|S]\/0Q\q(KV#/ce#rr ſښЍA VۙVzds22i.BBPHYI* cҮWտN˼~ըWnLA nS,O RƗ>JJz7No\+h;mn^kXH羕6XSrsRodn}K7A#w7Z\}9 }9H֗7NoF)7}qmBݑ% RS4[X\|2ڙqŨ!(JQQ @FK9m\y:Z z(#Vu]az9cJ8 Fs $z#npHL-fp%O,$Q J$UŹZwEZ|"C22ںLmH]ѵ9HUBQ] sU.KmsE3 *}jp7No6om5̾fJ۟* ZR/%D䓊yI BYnrC)ra**=%>Z0TJZAׇ8+״n3:]? _v~/{u\PpzS{Spۜ0o}-AQBTdVqjӺnѨuMY磩TX彜ԜߜH-.Zz$?5^w'yv*Y-^S.bҶ7-.F{EVIQRjI$@&`<z WZKmlB:+(dHէžyY0{N>TR@4CD!j"G!GFĽBqgw^sњ^unsVi˗" n.QnEӶ. xmm/)ҕ$ )Zs(ԓa~1Nɇ57L1rrƛ9KIDëpH++ QJ֒s)C5l6eM!ZY &a<h1j_wSa~1A2-CiwѴd6%H*@N_I#V7S*,6-Rɇ5;&ڗ9Dj(FBe! $t+7 sa~1Nɇ5>AӐ}0ԿdRcf >j_wSa~1A3O}}nvL?/;0Կ栙>r;&ڗj_wPLKVŊ5PZ \Chdt>PN3@64X[rm㗍\blژ,$!ґ($d{?ʾ&ڗ"hm %)b]ˑaeTTmڒI' Ľ%%ٍ^H6ZVl#n)D$~vL?/;0Կ栙Ĕ'MM-DH pn}$25nm BqV!!-@O})j_wSa~1A3q-6 +SgkܽKjp3Y޹&%Bp=?ï:M;cQ߯fLv ZJ0w;8Kf'Ruѳ*e#pT#;߻=qҬr÷h3/:S_c&\H3g9B--“;Ԭxᝑ^EbɴIrNJٸ۞nE`@sg [{nJQTƸ?NUZu.TϨot`)Ӹ zbR()JZ>z?f}gp2_l&4 sHܮL}=: 7@/p[ᦪ.'gܺ~ZNLAevd+Y8q>ü/Ԓe]cH#KZ'k<,['O4 vvŹ"KTkj]>dwzz$SJpɧoQ.i,[-P$F@@Ww7{SgP[:Fi ?!eԡš8uF F$z4LTnhzQ^b'N5{_I JB$O~d7-#"^FuL.kN䕥Ÿ.ڐJ3:`HZe}e-X~ZRA$ :6Dؑ7tMW){$RK[a?q^Ѱg'5֎LnËe:};~T-%i7|6d=/12-NfXօr%$(䅨n>U;Wc,fb$[E6Slw 3u:!h* kɰJ!؉CM B֒K$=zt,~ ?x_uM틠z\/8 8N+NUu kImZ[6 \ۅ,#Bg8t=?%lɓﳝ>yBoC}-6))RA9 \f%V }~n+/bR)(j 95$Gq&\nz+VfdO)ICj +8UH21f5Vć53[eϣ6z%V B֠+^ck7-M \޹L!-R걹Q pA$n qju:e%\_Kk.$e>VH#p@Oj5 72j.s&.Sǚ:TBTIi^ӁVmt梱5 voyHFҦ*AmAsM|84+uwͮC,rw6 fR3 :6|Ӛ]iIQj jq)nTG dTw4~B}QmYIݑt@ŃfNܯ. p6 !(FF$Mb'=+>E wǚո('ߐ"_P̛>bhٓrT(6(d-%?!uX=Աuj{CW(m*=tg)VSՂɣܩnPqx)ŭX*W@m=9LƝ] X99QR|liؒ7 $JnO _eo*V+z(jI6m(,,iAJTȮwF5.jU²Ȗ i+}R!:ݱ*J\*rvmR}]=e7J6HT&cʒ shJ#nLn(\ntɷx$w0܊u);TQ)ͥWLq.SFV)N͍A4 gw#gE[ ߜZimspݻ2rvaR/%若8  @[Ԩ5L=iH-ٕI@u.Z}U+ jӚܶN~#Lb( 3]diy9j J5 ˽鶉e^}+rLh夒y+8蝠5ĩ 6ӄiofpwr6d^]@XĹI5jAn)Qp5mK @n<,VY.k˷Z(-$)PV2A9H9:R ۄpsZ>iu/bs66Օ&;IJ$+bwo(I\*`.顷RЇkaq VT( &[Ht=`i i"\?ZS?bo_RTI Q%"7Ď!j?amXҗςob\JP[y- (※iUxր{R=ۙm]jٸ-f*MzoI88HxyijO\`ZHįcA)VE/yV{4ָ8Gʞnѕ;l~"*Z6iWUjhc0RBӵ;PVPM*bbޟԺ,[q) mk[RzX5Lj\Zpؘc~íT)!Ըuxo-q– ]im%Jc YPߗæu ]SxRm&Aq6m+ YnUح-0dFfǧp㫒.D}Ix[.zUU;=_u=nƝj@S+7wNՏᬄ][d2tW|n`8$KyNv:UJhؚw3^q3y[wtٻ?X+ |N9B̚ŕgLY[+t41!)+Rt(mDϲ;#.+y[3``cV=큔a Z9┆!HSV( \z#[ v%. 4Ci%$V'9"i}7лV'oIN(^roM!, oIN{?ιˇеURSN'!)h\ ϪROUg#3JPMӄ{ƥbpݰCݰ28A[G0R$)JrjI Q뤕. zuDD%-)ayH uR-3-3-[(JdK^p T bRƐ 4 _^b%~FR2pA8듚1濳7݌OLc's怯tw n7+6mP Ė5PSiQG9=kFEc2"6}4`mqÉ-k4ӄrzՍJ-vkYVZO)ҬS xRӿqHʺqP2djξh¹ƵTpZN[/+sے2GӭJ mNNE ۥc4dF76FHGk떫m7(aȏ>z:RT"KX=Y֧!.q.Aaibf,%ŗ6%6BV:jl] -)ZRIix)B0Twt^fkK5E=q8fJϨY4nZ$TwtPVhrt%':PȐ vz܃%xT@ $6pr$^c0t*n/C.1RRr2_O089#57hA ez3kbYJ;#nڧ\QܳXi-Cp֖W52 Mhj\:e E$SZP\m CP?qvݹ%RR#Đjabjhir/ݻ{ϫm~zw)@b6e<[i^rf(|Cgӷ~1v[?^_Z@)JP R? _v^ p;[?UĽz~uS~6>#^vHPճeTew* kRq)B[_:u7w}}XaGο&bEa}^\7z{vx'˯OO#βwIz5͢2TlK8;JR֗H.m-2,b)*0--NI>khvr4\Ґ!-Cm9 J p~QAz[o^wH[cdKu:i*d`g8KKnkVIuD7-j(q3.lk'qPmvtv$Ƌ2$$z3,$%@B5==bڙZp7+v##.n#b+§ǍjBv )BWQ] )r,|N]^ڋƘ~)JI (MZoLdD_a9K $`:Pqm=gFgRv+۳ӎf=kjMoqr,L8mv>=hp%3@o@83x5f[&O謺$ 2 8/i^#t8 c7]ed~ˢB/R0GCѓh\7K&4p*;ϰnG cn* Moqr,L8mv>=hp%3@X()J[S!n8O9z+0=QNrub;Ja}8yl*PpGp899bxci\Ⱥ۵4B>py[͂,@ʈ!` Tپ'רŨ[j&XG*h%%nٳxۻ5 덱jF/~Z\i[7uy#5czg'SBnzi>e彻0?o@3h#e7f]nRa2!ޤ56ݚSRBpҖ2VNkhӂojE!Lm\yjlT`%)sh*9WA@mpPk c*.r+.gyaKZS4ޠ ߰U{]oV]j2Ϣ0 –|$:kCn$Ynzm٤zTŻslPʣ' IQpd Ӈn$Ynzm٤zTŻslPʣ' IQpd n IzV;%SoK\iѣ -G9xTګY5ݟQyzfy$ۮON#)[ [65bP R%7N8 *#jPp}9ԑR)*ڤ=p7ORFz`W!Y͇XGCD0U!򔢗7T1wֆSP-Y5O9jn2baHi/)J)s{(Y%)F zy`KҖK[nTvRB[JG>u}hnd%6F6v#-&^YTvT2Qϫ@JW˭IfZTR_inq-ʜm TFPF3tFJlkfϵTxKiӕ}r7MJ%ևf2b8PPi6r'hNE@D浦vc#zc¸4R.(6KBJzpү]#oIB[ZuQ.{y됅8,H(Qݷru-nZZW4{̵tD8d%xm:cCW'6\dmN$H-!VХ/ JAqd5\<Է)kiF2o&) 6iTm$[ǭt>㥓4&S+RܔT}) ʥX?@랛Kw;aQ]ةia.mVqQXA.. Ԓ (6t]H5ս7,a\[uky6w[r54ƨ:FEֹ"һs0o_*q.s^uMNҌ%!kրWlhi]Rڷz;,Y)*(Bp nJcRdh/xé)fY/Hem K?GRPƆMʾXwKypaa^зr7'$5.qQr'zB]G[;FPBg)呀sqү]#)miDy(!N9$(־.wwquLn KUnפ8.BJw!Ue_Ti{U\qaae<$[jP%) qd5dv'^u6D!D"rz;:(jp,x?$:XtV;f\tng6DP[l9 PZVʀQN=GY 7t֣ ˺b} ҷZJ $'*8'I 34lwG|;:ŒakcnKl$JnϨlsSjDDF`4tmi(THVRc@%plm'{صtRp0~VZ ʹwWN'e()J^ p;^qO?W럪b^d?WԼ3aojQmS9ߩ'ʡ\&ӪV5R[B[;^HOA{#OtiY/}򧠽'ʺ49ނG*z i|J/}򧠽'ʺ49ނG*z i|J/}򧠽'ʺ49ނG*ڂ،q:D}}:()JJRR()J_-IS+ ( ` ?F)@)JP R)@)JP R(B[J@+X~O_T)@)JP gp3Yx38¿o\T_O!7ΝU?7ΝU?.?u+8)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@)JP R)@+Sgku)g sQ}06ǝ>06ǝ0"Z hyޕ‡t‡th1JzT# ?ly ?ly.UƇ*MP(O(LVd7AHI=K误(LVd7B>06ǝc*Rpq A;?}v_c.UŇ*MiP"Gcww󯯇>/*b̕&+e(T,=c c8ۧ]Th1aJ*kvKe27JWŧ0~Z`Eʴ%K\lZŧ0~Z`Eʴ%K\lZŧ0~Z`Eʴ%K\lZ存|JJm 8<۫M i*cC̕'W]upe m-ۖy tmB)NOU%#$4h1aJgp3Y]u(*RHRLuAG9ۺX‹H18qR C崁- 2v?[ eU 2y#V85l6-Y.1Ŭrlt 9f6h\ 6WŴAcɦ=f-JbBU(7zvm>HهS3S$φr }T[,[0w~DcRG?i <|$p/-IF\ z?;N3?c(<ok|a,5 Ǒ6HtLKKHg7?j:a=:ע 3Uu3DP#8eݶ7[G+bH1}?ɧ(YreQHAໟK_FK;&mpR, N4T=˹ۡ$ M.e,$zyם*nm~ tZE yvfL,bC;?VJiZltБh|lzuW[}FHC9^ꓵp5 ToϷi"K$u Fj 7ǧ_֋KP̐-ȥKhܐdI]6n%'"|0CMۉqק?= 6U f?W$r|<YҳNXOpGH캌!P=8;.[x%|,뀬ʜluˋIds#[!U-Զ1?Lu}z^4iFFCu ɒRzÀ=i~CcKD1<|͚jFxT25HGTd f`*a3S%fM HVl&oG®M:U:V9Y$<  L7$F!$IQ nON[Lcް%зu8[#"F}m/bSH! C)Y%@T0*v&x52͵6})X i;/c&9?+ tCO*[VLJ"ʛ8&P1N6 $sSS̕+Xg7;8B2ֲ!1jv/Y 5AO2DM CT[F`ϔv0 -*U(-Zu`9 ǘrNp8j#B٥(,STC?-Q޴Fd.UstU58&HͿ?=D"j JzWS΃MQ] cv́!11y\p>TIbҗ I##uPvc?&*NGcԑM2*y i?'KOܨASHA5hϻ^1隥 G[,?u_ nGA ݵ?1Wrw? !z7)ZQzև=ns#INw,GwiIڹ@A4c)cҟ1YJ QIJ(cEd<%U:F}[|7|jQۖP.p1>hR-u ǪԋrL*]N'l IsTt\r)*N)w! $9#f7cw|SeqWX+,}!} E唠 Џ[I_KʨO!ۚm8_kQ=65h&p'sC,H$9} c(x%&mYR fc]'†lj+$]¶ljI*1)&]= -LfqFjCYQG)g6|hWKrO:H͖P[;v;IeI MTqN>a2xݺ!G"; ⨣v62635vdi1#*]P|9޲|2Jm+1`abOҼ✛w'_wמKqSs괦.qzilV?^GDniIN*ԎY7VKP Wi&ozFs¶=]G!ݍu P>L3}kdq@Jʴ&ʊi;^TFJ)zazQ)"RUfTC  !"$"$C"Q !1"AQaq#2R$35BSr%46CVbs'FTcd4!1AQRa"2BS3bqC ?-[(L3 xs0t>Xkc۞~뮡5Ԏ5b`p#x1Rbg[Vܖ9v$_ES$ӡeF+nHӺͥl# rI/gƺ: T'W lK?+_8ں#[I{9G&!ã,206qAЅk2hZQXI;ym]rMݤC~31#d 8&M^Uv%>曷!l>RPz?qqp3<@ʖ@#dZCJ O#Iض|qĜLm@ ',@%-ѻ9=P{(9s2~>iI9mԋIv )9@.nBF"v}oGe}f =G,Yn¸TtTG`E,9?3ݨ- O>U]wW7 m:9p8D[.8.Jɓ>6|o;XWuek8;?ȿm7ۏ͖5]6WԣW'.7^Z_ڧm\4Usar?hmau~^cn, Y~q*V7s'D~c<ȍGC~NmD=^('L|7mщB;y;~~-o7~6 qƗ.o<<;{G]T3,|:W*_֦X-Q[[! ?^q7W~15[GK?b2ϩXsOEhu).䗬Lɱg×2~u /-ULxUF3VZGҨoR&YHn>L?1|=+!ԣF3)]v7PU_|jeC B>PGa jȗo|`t q cqQ+m 7,B=(_c1L荒Bw:"+H wuΜ>!7۟ik֐p(-#Ń߿soXGk9{NPs+I4ndIJU*gӞ$4XB9{vVVPPF%ެP;[zO VfX*Fra'?cß*p\:AVmϖߍAl}]ҫ Pxm|,1=A·_~țss1-$¾,QFIfCEAX-cL y<<4 n"YHe߿:%Wy&c %;}T+y&f WB'9RGfH{`wƨ 9|C h [+m1;',I#'>GXng!Ρ^v"EL-W*oW%WBB6㵄B9z/f+x.LτmZimƚCL;R[hCLf&QkB-7 XwOʺN]m8 V^ZӽY)+G11cTl M=xƷרMYXMdb^Av0'EgĚI*IsxPZZ ;$̋GCʵ>6pA 2 L3[amC7ŷJ[^Jk09hzn?χot=0o7P~bSij\)Vɴ-7}?fK^o37Z~(%ӕѸI;{ ~).Esc )h]"h:%HtjV+kypx`A SmzAqڼ3/ZDž;ݖw]!ѭ!Yo!!3S1+ob7 䊐%2< g:Euu`UwR8L"3G3[>M<*IDBcUIw'ڮ}jwq=p6BO6ohG2&seE:/a|rܴ72xA^P94hNZF$!6GƚB%mz #GcՠvRWw/w-X02x‡8$#~ضpu"ĩܞ\D* EH:b$upF8Gh 9]g?K3m,\6)cz}K=`]F9H1 _ޢ7AGP: [m`}bI/qyw4떼Ew @g!b+&* CEp@czU-)TekF̗ӣlhN>*n5.xz3񬗣`>4OwFisW z#;,91Spg"U$Io/# B:i@oڡ8$m0vPĚ$4>] Hf;XUwUQ=ԝ!dm/+OgY,ʫ1Qw}U5YA}4 BrFP͢ {DȞ\+|5&Q% oj `^K̭ u-/j;4~ΡA9'[`xeπl[@5Bwf߇ 񚆑.Nv 2wr=ا b N$#TZ%/g,-!v2[̇$q= o?2f'>sx8-7 ه|TNRmQ ^Ghr~q#q!Y܅1p>Xx|p~Oko&.,dvG<Tgqh\`7_9$O&KɣcDu8V|e༐ƣ-qcM;nwQ6oo7t&Up,H,^VrC9=SJM:"ԚBJ/ic*[Ns*(qi,3\b#Ȍn1Oƞn%II9 탂>#FK.o0*4T{}?P:Qw cR𲓩I89t ZRp5 CW=U$VH5 #0VIy],RFڃx#b7Get517Sٴ}0 [͆-D,)9SƳMߣqY hmV@~Xkye,Ҽ;) Nӑ2;jxn:WAY,r(`Kw: 2>=wI[;~P:s)I:9tc9q}){^7 yx|ii{F+sfcV#󫎏X&$ڥ8 *[lÖx}UƉl( Q7es67[3K xG.@upW;fz:A u lRG;uRsiE\rin$;ruK5vKiWMBN3&KiSjzc:瘮4U9::#1 |Ҹ>jF{5kΜuLq#ƏϏ"+wkoi-HsSBouOTG=E9!Z1c "i8ƄИcsC&ɩH(kT;RȢ8?7G5a$J)}F.k"QSXIs <Z׎Qu(CN~xǁ t{ }bn*37= Z1/"%s0@i>KPD\q5t2Ju[;m b,fljj=1qjL񽴊yTxP?ƭ?+ Ro|=O_ NRc@]luc>qpnjAfuIJ>YF^\QX[Vq"rxxYA3אָé`Y5B_T}q&%{Tu@O~>KrsL?!O*zF݋-hgz r}txϫva}tC=m W? Rgރ3PW:7I2JJTyc~y3`?߮y3!eS֏Wq=?&Ʃb?KWl<=hB]﬷Ey..lc*rQf%Y BF=^;0-B`\~V;>O՝=U{dę.4 `sMd+*&ÈdnF̀ 4ӑRʪÄ^!1{̈́,"AT ǓȬ{}<ܷ'Svo"Y 09omrGC FM.BmA 8SCVtˠSZ<]'bp!kPBUx,1V3V1m޿fz]HF6j3FoTw DMbypOXWB;`6qʤtGtovt 褂A"Hɪlx iSB5!L}X~t_w\oG}hP,dXd%A|}iް^V8hl/s[6zC4POmކ_~tls3(t; R'}*W%IJ<91]_WvILCpzYN#<)R੼HBM ?,p0w;:j+[Kd̀3#*9$XZ33~;J'f6aH n4UZlQ5BK(7;T q*E{dg;yF]:a1)anu*T%_)+Fss!%0)R ughZP@KXg n+mJSⶤ1$ᙆ9S Ji>bG#Om!7JĒrM*U951I=o]}C!52T^ ҥJn>iRʭTTgdanyremote-6.7.1/doc-html/data/default.css0000644000232200023220000000627212061426051020660 0ustar debalancedebalance/* Basic tags */ body { margin: 0px; background-color: white; font-family: sans-serif; color: black; } #body, #page { margin: 90px 230px 0px 10px; padding: 0px; } a img { border: 0px; } /* Anchors */ a { color: #0000ff; } a:visited { color: #551a8b; } a:active { color: #ff0000; } /* Basic classes */ .none { /* to add paragraph spacing to various elements for ttys */ margin: 0px; padding: 0px; } .invisible { /* stuff that should appear when this css isn't used */ margin: 0px; border: 0px; padding: 0px; height: 0px; visibility: hidden; } .left { margin: 10px; padding: 0px; float: left; } .right { margin: 10px; padding: 0px; float: right; } .center { text-align: center; } .screen, .programlisting { background-color: rgb(250,250,250); color: rgb(0,0,0); /* should be inherit */ border-style: dotted; border-color: rgb(0,0,0); border-width: thin; padding: 5px; } /* Common page elements: Header, footer, etc. */ #logo { position: absolute; top: 10px; left: 10px; border: 0px; z-index: 10; background: url("data/anyRemote.png") no-repeat; width: 64px; height: 64px; } #logo a img { width: 64px; height: 64px; } #hdr { position: absolute; z-index: 5; top: 0px; left: 0px; right: 0px; width: 100%; height: 48px; text-align: right; background-color: #FECD46; border-bottom: 1px solid #807d74; } #banner { position: absolute; z-index: 10; top: 0px; right: 0px; border: 0px; width: 300px; height: 48px; background: url("data/spacer") no-repeat; } #banner a img { width: 300px; height: 48px; } #hdrNav { position: absolute; top: 54px; left: 0px; margin-left: 84px; text-align: left; vertical-align: middle; font-size: small; } #hdrNav a { color: #000000; } #hdrTitle { height: 48px; padding: 10px 10px 0px 0px; font-weight: bold; } /* Search thingy */ #search { font-size: small; margin-bottom: 10px; padding: 10px; background-color: #dddddd; } #search input { border: 1px solid #666666; background-color: #ffffff; vertical-align: middle; } /* Sidebar */ #sidebar { position: absolute; top: 90px; right: 0px; width: 210px; /*margin-right: 10px;*/ padding-right: 10px; padding-bottom: 0px; border-left: 1px dashed #dddddd; background-color: #ffffff; } #sidebar p { margin-top: 0px; padding-left: 10px; padding-right: 10px; } #sidebar p.section { text-align: center; font-weight: bold; padding-top: 3px; padding-bottom: 3px; color: #999999; background-color: #eeeeee; } #sidebar ul { margin: 0em; margin-bottom: 15px; padding-left: 10px; padding-right: 10px; list-style-type: none; } #sidebar ul ul { padding-left: 2em; padding-right: 0em; list-style-type: square; } /* Copyright footer */ #copyright { text-align: center; font-size: small; clear: both; margin-top: 10px; padding: 5px 0px 5px 0px; color: #aaaaaa; } #copyright a { color: #aaaaff; } #copyright a:visited { color: #ffaaaa; } /* News Sections */ p.newsitem { clear: left; margin-bottom: 20px; } p.newsitem img.newsicon { float: left; margin: 0px 10px 10px 10px; border: 0px; } /* Generic Classes */ div.code { background-color: #e0e0e0; color: #000000; white-space: pre; font-family: monospace; } anyremote-6.7.1/doc-html/data/any3.jpg0000644000232200023220000015654512061426051020107 0ustar debalancedebalanceJFIF_`Created with GIMPC    $ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=C  =)#)=================================================="O !1AQa"52STqrs#$34BRbUdtCc%D-Q123!A"aq ?hq7wKϒTrJ)O5`|NEʹjqa 2Ngg0lgGǵ]ЯJ80Cp\ux$#|OxU$'gq`)b.Ò aMj 34gc8 ˛{ =E={g g 91}SG?ƬÌb(;?0UN`&/L_sT b(;?0UN`&/L_sT b(;?0UN`&/L_sT b(;?0UN`Jґ#8*@=Bԓ ^_Ҹ0$jsnhPOT>q]U5Jȧ41\YsU;rb)Cn]ai4w&&Yy^fqW1vq]8cVٌ֋2i'~`S15[ )?yuV5[oHy '$ fB"gBGɋv~`TH+/1*}98ˍ@TF'_G&/qtŠ3 *&4"wn0lLpq׷=*zaCmdd%#@ܚlyM;hIk͗KJZ3a$l |mSG.dy)RNuROD1}rb+k)'o$`4~ZtO21}rb*?Ǝw9[;?0Qɋv~`94L_sg L[;?0Qɋv~`94L_sg L[;?0Qɋv~`94L_sg L[;?0V<s/SI8X\ _-.\La325>'ɭ?udG%A uɮu Zq}eg&=O@?U@VܚI$i9TEp1m #ۼ`Aު ”{:UOig>R(Td"[H$[:?u%M Vd+B\Z nmn !RFϢ>Pۈ#֖Am$pGCzٷ0#D`IGfHv:|Ʉ*o5wJ*T4a$feHh)Ϻ撆ʆ{QYŖ%Jia`UAuo_SL PBJpɪn_8[EUS_puYP[kMGqe} rqKjǒJRH0s6\ i@qưPzve&QڗuZn*e} -{];x!{WЫn*u-M"Jw:ic H'#|vՈ) @4L3c?O{_+%fh7S6~ܽ/Q}>_+fu<x?S^ > @3MmO{_+%fh7S_3> @S>*陯3Mm=O_Ы.>*y4O9|.>* % Vh7S_5 % < B4O9|.>* % Nku<x _Ыn>*3Mm<B!{_Ы漦x6Cp WS3rRRH¯ O9 yqyq^Su<x! Y9X!?ٟ%W/) rAI~ `Zϑ xO9!y$qy$qE7S_;r RaJ ȫ³j攭%*OA W+WoLMWٽ7&baUqD8/y)1dVߏ?e4X{k 3+*\~sJEqN*( @>ȜVr7 $M.%- u`zoEVqҐ)ƔӨiQ$`` VPb_ڎd}j1!-Ȃʝ)JJvV,nZCU j-(ONZ253"ypTsPA R@N 3Al)yJ (2z4v:f c!B|\SvujV}z39;iĈ91k^2O(I5>h:gE)qB֩x^]pAY={v|׹H%Ƚ/م!6d-*(@z&:#v s` 3JzBF$?Q+h*))'e}o !Ñ.RPPAVm[YsFh:{4fњ4fњ4fњ4f׹3Fh;3FFkTfњ4fњ4fњ4fњ4fי3^fњ4f^f{Es3AhW(=( (( ~=hkWoLMZRϨ ;~kXHTTtVOߏ?e5A0R OfErV~lqlq⠵qͭL0!#0wA5i[{>sR^I |#}V6wG6wPO baږm<$g;и2%9!5zTp!>h>~@w=sg{sg{.kn*%. 1$!B{ @Z\zc(rC%֧Rz߃A?6wG6wGY3eab!DcQn;Fw"*328R vOM"lqlq⭴oYZ\mc)ZBx5.lqO*9ӽE>tqtqQAO7m?;m?PSNO(NO*}9}ENtqtqAS7m?7m?֭sw^ڹ%@qHX HROP;h&MO(MOwɷN2۪kYIDu)nmÅ9JR'*RBR; PyΛ6QΛ6U9\Hźd\?*}J307'| Zrke ۔$!񖔧;:MO(MO*VVSH+q#V$g$2F:W22“!&GHX!ݵyvss[IqfJ}f:oG:oW nμ_#Y O*CJ|0A9VH%NO(NO*$#/WgJ]2}K)szt5f%\yJ#MO(MO* APuO4PAB$r%~G.tqtqTR[1QݐѦ+|m㹠;m?;m?Px3n m.Taxph=tW>lf+BZu`Ӿ;;m?;m?}Q>[qL*H^o4Ҷ{PVO(O*9E.lqlqAK;m?1#*#sWkPZPȯ  w>LɊ-H!z/m$g'>@_3zboǯK% !#XIk&zѭzO)gv_zߏ?e5jl0JYS4lus$U^ ;~i#kTFi #t֡T^%m#mW+e3$۞Nh4ӄ)j')$mÔUc<,ӭ'v $ 8vdmQߊHSk n7^$2_X)Zԕ RupǜY))pk,F0p0@ՃNp"PJ.ZX֑GDZ5,!h'ĸ%!D).!QTfsrNwY(w =+>jkyN~dmB i\4W?@8=s=A)h{?SuW|=9N{CQ]9Pq\g=/)h{?SnYt u:6* R mn8R;d;yOTW^?6fOZ!V5J}BdcHWoLMOыo=~=h'ygv_z!ߏ?e4lkx3y)gX5MrVuT* c;tyߴZTH=xExOm>N*e;}KfiaҐ0)[`ixU[=OPz $=993YMpC]yJ cZ߹U'lJI:A 4[Y0M6* UXBԬu% K!q&5a@ÍjB]u݊4ElhjAGQYh[0l=6A *~^=S{FYv S&b "ZBIǚOAZn+ FdDshɖ5ԀSI[;Mh[r%cRYq-JB·Uء֋Ž-Iq! IQߵrl_EQnR6y$I#U~':uC+y0u.ilF27]V֗wfTs,.:SjB;g9@omnvT̼ ],hԴAO`oكZ ҽ"0PӲ^.t#`:TQ@QEQ@QEQ@QEQ@UKMLQS8V 1fk1qma'!*9#rw+\m_ 7p ~Z&u,nЧԤ%%$1F8>ܢhm am:UBA x64_%TI۩q W\/:AaV;kmKi-Y!%K*=JNsA^Ŭn&ŏ(OL,4 v#4]m* uijվw)[!JA'ĒjY1%b-*cNNRT*⸖+/&2W4.ਇNMXC1 6d~j(5()-5|w;db LR(>S~WY'\4s<}U+sPJYTj#Z ae 8Jq% JB eEsaʻueۢpC*5~#ð?zt3*w8 SI;Z 'NUpx@RgO[v%ekFBd@ $\L03n7&;6735ksӦ j(( 9O*7 ?ʁ^LփY7f: UzV)yiKؤ{|zѭNͨ C~i> (pgSMFj䭵 a?<%BIo%C Vdv;g~PA]1yݱ~|uI!(Ԝ n'ssV.#!+@ S`o׿ Pf:Ω DQ}P-s(r\_Zϑ=WY2S)>Y<:9%923ɉy')mIjI_ . mX 8jd%OHZ2{K.m]vl9QC@in(w ^2OQY+U1 4b2e9wh6P&E t;-IHiErJYR (m 9k&bMi.ZKS_)ťN$A}s}76P^&LqZR R<۶[Po.2W3.+ihԌRu>#"Kxi#N8=@$prvMr/L+ /EXBԅjl:l T<<)&jZ6u̔(Jʵ(Fdzc[TЗc]JPY;櫧uTU |l0R3@ TH۸oͿY~M.67!S^CU i |#Wy&!3*9H,30|=kB\mѦ44R0@Pgzƿnߏ+0z;VʝVvIjgcƿ'o6摩VpG($( (( (( (u[Ψ!T ɮ'mr/Vg-ўK) Yv9$mT|{Rf K͵Y+? -@PZz9ڵCe-)" u(mJ) $'9'a+GIrd !HRNZZhH%$uJŊau(  V5$hHN@$A|+bW%H%@%%J(:EoD.ԙSZi)vm $(Hgn>W%t!SRuKX;tL.D/at !:H)I3wXm}+i┅ OE+#-=x{_ l 0g#|1y. !ȭKmiq_5p7'';oi܊l!|-8pPP0[.)(iqTIy! !ǥh:)*VT $N*U1`EDA)' sdJb bT31E(R}ovUu+xwCqW!d BOpNj%=>* }0W%v#?(AEЦYuV$:M$nU튵fE,g9.B|zS`2Nn0%L/ 1M!X(#Vp;q։\Cm/ɤH)piCKR[u (f+:Ò& 2Yu-.sJΧ*oH7$g=j˄t8D%nw0 +H;gj\q-/CK+)l # Iߠ޴+2mv˳Ω&K緤FrLۜmn6Pӎ V3RdK1V!#6vlڱ-756"IRZ*ehKiv"ۂ) m#S謁9mK+Q E(S@P sr@;P0C])ju%l u d*+ۊgf[q-[RC\NuAvVO ڮ3\6$n48AKjQ[l@$ڻ[rW"8u6F'JQ wځ7j:fi0 $:*2ÖB$Hnc0wJ(BA@AV4 =nQ/(-'h!bk7<Ѐv -+jrS ).)*VAqٜ~-vDPԄe PFg1|OjDfTTcPWv#=H-*).bsM)jФeIRdA{^Iꋓ! %) `=={:kRHbqzݲ+f,v1q)=N+91ۄSQ!=r7. "Ao)ҽ^rҥdco_z{T˙vBWN'Иh tSjƤ%Sc8X9JN0svwױ5B3BʙIHԢBwjI vʖR-?~ eĴTRxl/ɸ*Rʥ+n[$`ƭ̀K֭ք b)1,Ek!>Ȅthݪ[|TBq0nqǀF,yKd^mܞm;" Qc,#QYCjjY6a6I +u[9k 6s/ʌ|$lR~ @@_Y(,6ZIB4)))A%Q@QEQ@QEQ@QEQ@U[5'Zִ46TI$6j+-1ڌytUje!J@ `6z }%к^H6KihL`ÊHW+eKb%rZe4B@NTQEyua{#<)R[eiL A8#LACKtN ܍S۶a-Ν vQzN *#sˇuŶڄdJhPcd%X&Ca,ZcMnV\jZT[$[Vy,#e_RUm t)4gb3AjpEeR%(RԵĥ v;V،h˒'Lʴ$:9c3NJHq6GzT%XYޮ6&񚸝FD"tIIWG$$vcX˭&nͲَHFcRU"=,kMZSi7(u'$)B@&-3$_%Z.)J-[)Oq H g;?KK;C/S?f;#pC`>p$u;+Z-RcGrCKM6&[%a} ]ۍǺwK-r+YuCBte{RVvDwQ突!.悳'Hۥ\Xm, UK]7XLKeĆ}p`r3پn-,<$}L)y$k;9:@+VlBbKI*և[ (Z҅,NvAwmX"39K-A%Dxlwk v DW%$>no>y`{mߞŋh*ZwJ[9xK C'Z9 `qKSM-iE8X9'ml`){يv-_a,(XT$eI @>+,˖ >_:6uI^|Ӎ70o]2XSQ8)@l:M:mQ*w> T #lJzs%kXu=jnF` ]n?bFl@\$t!Ek\۷=rZiHN=Ro7Y}-uQN((d|EIHv۬Mjr+ACԂIƭYQ nZc2[Է-AZAFĕߜvoK7dAkYY Ce[JJ9mwWXi0U1$8ѭƎ)؀(K1Vr_f,B7RR8ur.\A Z0U.qߖp XRZ%8u6%B#KKK?($8: [7ٱ!8dy$KCmBN cN5nwR_qط+'#ޝE Phr;Rקf+lauN@p;I/W bn(1LuePH :l} s1q/8̨-)ƐTiRN,{R%;s.]*G4=66;Nk[XYoO)ӄ//Vc}@E|O&[C1K2+ `0BIHvJO1{{npj9nm>bWS)+~So5ϵ!O:ҥ @7;L{W%:ʐ-%/PG{kw[& 6\m,*p&SKMG(*20rKmL{ۑ:\w! cRVdm;g}yN%P4`; RH*u3i lQ@EcpOi 0KO- @+fςIQ*gS֩l:t kgR->=h_L\="]}/3kyK67y)_X4ވwM7o{߄'' ψ'l B$-)*JX3Ggofw.3w>QU+q?ǿD^c:]4W)Ƅw\֠(` djL"4VI^9yU7̹(jԜ!CM2ڦT&MiBVڒR(dz;ÌQ*8P1l {n!j BRTA[C8f aƀu!e.F:(2%hG,i իV;yzI|V!mH y63S"'Vqlc=Bė6uH̺*r;!d) ' d@͖Ci9AJFPJvH'5dl΅Ih撽dmXje16 ByМ,tcnx%N$sc3k-Ld'ZЦHJFqO#n bFpw8{}vccy9iF#NcvRX񟌨Mv\gTt4'F?mRS-$GB4ZRNH Dil%l7eIl6S6=6m\l)ĝ﬎ pBN4Sc gMn E2 2ܔl+H I'P(Ȍ).sB9cH^Z߫\RoB\mc BAWC{AJ5 YoN8JRޥ%?"V#yl ف4! 5 FQmElj5- I9JPFA쫴PpMy8ƕ!c!C֪gƈXFw򌡔  ]o @~qG )}Uʎ  cnQ7ˆxl"SRJa!*VFgֽc ňFf2JP@xͦ2c+L%aJR!X EgKjS#%ɼVyDd~RAߴ5%T\ΐ8xȁRaDQ(8%; *&lźI0'$Ninw+\m_ 7p ~Z&u,nЧԤ%%$1 y8f Ro$;ڇ y8f Ro$;ږ[&'6euqQ<pAHƽߟè}硭J-˄B@K(DȌ).sB9cH^Z߫\XXNkˆ0PAJTqtcI.xɵ1D20:Z C!@@9 t%W'Kn1ӭ[t$W%ŞLIk9ai~ bx"8 YA}gd\#Ďxf뭷[$N#؝k yC<^>1^GfPʊKm%!A)ؐH5+mjޒc%sJb^ t0z43 fLRJsPp'NsF(MIr;K}CNt=eZmm"y`㬥jOHȬȑL$tE4Cڃt*)eI?DvȖ"hP$s&%I (#+Pd3L4U”VpπeLiV5!ą$7S3bƄ! DfcA6H+HV`sgnvY(JK BҐ&m˕wquaD:TkGχ`Ha gTwq>XvT";RPROnIۡ2!Ѕ4JR@-!(FNAJrlπ8#S@Oe5@dpH{kiŗB˸C-\6 iւذZS Qk"ZȎ]8|kY-kTu(-MPTg Y \Abm=)PzG,2KkI!*ϜHm<Œ^[7ekY sBpSlPn.Q)I)YT1@߸wW[j# 9%D NlHۼ՚(#mSi!N[)X'RQEQ*w> T [?ήF_uiuJ=?"]}/3=hֽ'j;Aǟo1J~<}ь|+mBr@lvQE[gxOJZs9}CQ@T{«񌋚]If#:9TJPN21=hE HTvԢBrI{OB~Ew,ꢬg𪨦5Gfӭs[IZԒ`xGؙa7)$>QV7' aN :]~f[a\E'|-% ݠRc-3JKa#ՂN78ؐpo#R*+ΤÅf('P:ܚ۟u:R ;Á=t$c5(\a$^Pc*S.!.2tI:r7Jkr4?*S(9oNws :[*r̪BIRdOqn7 Q[oc؅5~/[8m)SMmm뤨Ƞ E[r͐d1Zu2>8&fɐH2Lͩ!@VRHt7?ɐSoskk5պ⛈Ҁ[eH=@jOȠϹpk!Sg0~2*@JΐrRT6`qNׄ|*6;3%HHV$6  [Py^EEPQEEPQEEPFh{580dnWDvVm)Grh1۔^ l9BPd,1Z(Mps-xp,,(`@1*;/ǹ[&k \P$ CQ۴6]ҜQr*RԢBzpv8peHuf}#8nXYZ0@'Ӹף6c4ɑގԇ[(*ִdcJx +HigVCVpvw"jLp-Rd4ƌ6z$dLlhJ ;/R¹^u$#ެ7viV"=HZCJTz=űCn`̈[M-)z)Yf N!i6u[߀LhS`o9- (M(DR >$Rφ!-MiVrvBGmWGVV4*AR|FEG|P 4wV+*^{ 'Q+|Ry:u{>ƜcM*vfʒ7@**B1o]*V",@C+S(K{Sq}RTa YpJ 1+F~QA:EJCtIRnklaSޕtfAJC] u$pH+Ԇb~_Цΐ8PD!—$4!-:gQ·5L0(ۦ>[ÌPd( Sj\q-/CK+)l # Iߠ޴(2aL54s9Š `tPJ5Z'Lj&tn*VVhh)vH$I϶N)j2s%pPR H;omX$\֋2%čIPXdq&|ɓW"*

-t)DjI +'l)CRBc%Aw+W4t8ƅ=}RNS RˀPSA^i،u"ZoEGS+JV[PR!CRT@Ton?ʤ~n?ʁ^g䭟򙩝WZgm]z{|zѧ{I_KLZRͨK~i> 'w]SNF1j䭷 V-a*,g[J 7Q=5? gU|G;dݖx#δ- oۭIdg>|9:; hu+IZs!;$^e[3:P)GnOLg=: rBmea9"#|ǝvnzYʺS1խځRY 缄x{e޵-PpWYR|1;j·* r#"r ^uxs\DwVqNsZ+y7 d[qqyN}ySKFڀC{l;3:1xzTx0[v >Nݷ:(—7-8My,(`;QQ-ך+ƤX#JAVx]KQܶH3 d:oumH(inS ;{vI@ ;&,g6~ĄdIV.l=1a?La,q$JI\b}a( (( (( (( [\ՙtgd(}||IoE%W'$169(BАJIW_ꕋ=-+/3>KRP@)jHАI"W7MB_e+-G:sWh}Ų]TǤR52r{S?˻#2?)XDc+BN zzM/8 [$pNl:ݶP[.-]a,%i@uư픜xP+bf]CZkE*#nNNv9oCZq)0UZEݛqJΰҠ)) cZEݛqJΰҠ)) c&b~ *a0YK"I wa1LD1*W)>J; _ [[)v[!kBR-KQJR 'c #SmL31HuIAAi.' Hܫ j' <̋sX,r\[ 0 pd0+~gc%$8қP#*P.]8rD!fK.{ťiY%M#Upnhभ."8Fc |Ee gSdLoI9 65ݙ-8Rl$U(Q2-.ۤB:pY\e5!-r w=W- |?ò%y*"h*cH pNHjkxr-r>ЮNWhxfqbdy#q2[R+g@ a n ݻèoi5),Mq!ó޳!p%EvCw5MCNJu@QE%%J99;3Uߚiy.JYmJ *#duvx19hRLtZr {=/LM$ E0ZJPHi$|)8VTSvv 6nv3&s '!<ѾrVPTP+MS5a#m]u=js_b.FzRuϏ_5I,ڎiD즜-^c%ߏ?e4jcJ^z *#9>=={:kRHbq a?<%V󋬩#! y!TCxXVJ28=qelъΎBZYZ\tH߰GJDCk̸Yl[`-FM䡖oP}\6JRUk?3 "eC'͓yAF2N@'_nC/7!<ÈqAIP;+((((((((Çb6V#R+8+Q$d¶(wHJݽ?5&>:u$ x=p[֗=L9 (nst`MKmKL36IbV<%FSv -Pʴƕ.rsd'!Gl|y)PTVQ8~HPIoèuu!AC FGh (>uolڦIi8n~Q@sȏsrjo JI B;ɪLxlcVBBl䃀E 0َ'%Ϝ qֻzTܐmM0E+K [ .XQH!ʒ}lW,Y-kn@}6UumI 1)?( oxmSi-M+C*XRPa%[wTN&3zJP-6NNg5EG#g~U%G#g~T ?#mi:7L֓P|J}#}-34;v}rn>2S:DA9ƭ\&D;3E:Xja)J^@R`a=f]y\e! RA)f{j$ 0SᤆNq@]2 2B%Ҵt{ƽOqLhq_OK[ ^I/y CY##Cm'(8C H RzI,nġl%IJrTI$%[.2kO0; kJuT;:87eQB$JbpRt xa*PH;wNNOv U Jԭڡw(Gi+iB26x xzzD%nd26@eG( qZ{cXmq[1ʒT4+wHگô(c8S,^zdy3%Cͅ=4 꽻K]@t +%(p$O)Vo7q0VaKA)ZB!F''Wp"!F2IHmDJp6$2; &U*`[qեcJ@$k;vxw5mjJmr S1r)qݔԗ#4 I3ۊU9ߙ,:VČ C_nz{,)Ae :Qy##jָNfn6J8jVi8B굸R Հ2{?L 6JƤ84>{T=ys:Q(/H+H%;gBYoW%D/]#,)'He '9VN31mzN+B@PC޳7kb;,EDg%%nHNOofq@g\]a~MMZ*rАKEZNIVTW8mymU6]RxǛuaY-nƜcM*vfʒ7@**B1oAI'r$k )M!1#JAYRs&]%-! ɉmH <;Gh57NC:CF]:7T7TE2RFH I$2: %O͊Sұ:w@ߓk-ii- (vhV?5֔F%tE" :R[Z +I ~ &nJ:ލ% ntվq6+-c376Kԙè#^ #HQp:Tp} 0%H\f҂[n?˅fJrTHaFq0l%zH=r@S&t[s#WH\eG1AA(iA zoFKdar&RmjT(ڒln;{8TõZMK"[Lw":Ԁ dr@j[چ) (%`)!Kksj '.L9Z.Xc\ZHjJ|) YSK qdr16p異d]'wW+[jSFzS1MϜ&a$AZ\-2clmq*;0WqmRTPVH:2^+U:-S.5KkKEAZwIN@pzdb(Hܖ&%!mKyOpA? EWyy+]ZS) A*DZVcY\)/|y sZu@X)'* ҖU1{Vn@Q߀IQ߀Ѿ~ɪiW.^MSOJZ?-+֓.F_IOKLZRͩK~i> ']SNEj䭵 0V?풡ZB`;SٝCim( Dwϼng?>t:ezjNչ`WJ֕r7J(jqSgT"[Ⱦ(wYv9B./EIT@Lfb)4(3Fc!25dܮ"$[1C |@hNVԮ| +u#pzdiKNM/,#;WbiKl^N$N!GXWcaֈ̗f)*,DtÚ@QJv=NdkW Ʌtβm!ͤUzJF3x{ZP!l(\X^a'h,(XZrxS[LvV?_hq {R#0$ӱEfgoNiQLsiKV$K*J "ޯb"MT\!Q)HSHƒvrtV) BPjm6`KS2g=rm(?UiP͝T͝P)}욦n ?dDJi2iii?t_5I,ڞhD즜->i;=q.?MrV@lvP_Yg;ǻ=gCCjIN;}wo[etx>ϛ}F%2%Q@QZR0T:.' {Y87qy5(_6ff'rjڔTvJFOwLRN\mIA Rw7ޯ:KFW,|81kkE.\n- 6BS|kZq $|m% 1~L)-|%caP#ۡͷ15wdB&jFZY q+8P7Vzed2O84XNA##AgLWWaau#Hih j1BI 61/%rrV-a!6ڀ:PI'06e( (( (( (( ('}[K\XH8lD vC&!/ʀ#FXޕ {Q~3oD1SjL}:5+BtH@{3%Y..9"{rQSl!A#R=./H8 [$pNl:ݶP[.-]a,%i@uư픜xRXCb ͶX1ImD;t£>T8(qK9&/IQƁwwfRs-% JH;9XwwfRs-% JH;9X|3eU2Lv#Mip##$iZbyc%5(Y6—T (R [[)v[!kBR-KQJR 'c6槛n["Dz Ry#9ߥlrDԷV3qGB7Ї5siI4J#5А~3WȄT )*@k|Yu$MTߐ[14I߱ՌbJdGe i]JqM7d!H[dļKE6`IE+e! !`6B‰ rA)rghq|unlzgek]*LhH}iTV8 ܤb79O4+qCӸUB vSWcSk:hN|U^ف۠H =2%|Vv^TR@t+ k& lo43N@{7؝°и<:%ϩ%/ gg2'Hۥy sMhLIi>Za% ZPIH#=W~kFa4)eSu($ NԭpD[naH䤇-,/| XmB3KBK~/ aq(dPG0;n)jp) #7%"ot1NR%kJ!a9H؝rřr޶k]YaԐN)+Ϛq|fK b*'%( '@Q_Mܠ*);j)?;R:7O5Q=*~ɪPGm9hӕi6Yk^Y=wM8}ZNE;즜m>S{ܕ!`3*>#|T+YLϏqDe'nxwUn z#%:ie`͚VyŅls4; /ޖ˛Kq•NU4p}2 Kr%T[#ٕTS3Oo&#w_ʔ8˲Zd-2&d[qqjNR>>N~3=I%6rlPpsz-sMy\AHP'|cUmf3 Ͼk**Rdy܆uORQNGv[Iu5ˌ!,p%CpaGz) dƍ#|XarRеmR2Z_bv~j ['tƠځN^䕛j琿UShFѨxW ]_ă곰(4[K s8ƐvzuRD-+e]R[97O5Q=*iZMzV_/rZO&=+/kyK6GNq)OI#~8Ӎqo{ׄ,E[gxOJn[J%Dgt#;[Y J(ݸKiu) 'tp=h*5e-#$?wɽznωŷ'[WRr{;zUS5/4HqC#pھtu܏F3tߦdm"RܰP)X5R'YHK0#d!C# ۖ$-(n2Nrl2uc @NfBZ-'P^Q r71EVʐo̚q[k5!)HNIɩڴؚܥSe!j\h|Z-Hy%I7JK䶔6 wJYfp"/9-%`I IYVA ooqd3:+ZPCͅ=5גG\0~b7bF݆mE>M!Y\6em6:Ex 3v%yQJØ[XyzBA]@vqQ#= 23K'ǴB/>#ZXJR'} ĸʄ X%‘bJ?2Y51ViL9aS ǝr6 OODr)T1~CVl6hIe)l S65#z$!򔔀G~o 8 %MG*LwQ`u$9nr:U6)$[:H7hN}@!>#j".2U1|RpQJs;*j(((((*7#G98iJB3ԕRpjk:AvAzPLf]y\e! RA)f{j$ 0SᤆNqK#Zn),;Tլ5ev8F$!))$챍-3eFF-NPp;mYC2-i SBJ(6$Iɉͺm]b\FaO.6CAirqmykRAr; (D lv ;li *jVP;ՔCZ#i H )1Ē׋LSI+S :JP]BUqrtFs~>m:UBA 2C(c8S,^zdy3%Cͅ=5ao7|ǔ'f&@ @T ۍ;U%p:@BKKޕnA:bv4Ů"a~Ryx8y"DhQC*+i-AbA##%_zI)x*!Ӥhsm8f( 2J J i*KeA98drwe5%-A :z⡕i}@!>#"w"F 0j)4'8jۏ"ZX@̘$lCv@ 2HBV RZOy>)3!iXԇw%O͊Sұ:w@ߓZ\}HNhy+ {GiI8'%#Մ9VYSwg\PMcVK|f[RK)B H=&nGBY)KI8M) 8F>pȏNV?#7^[.!;Lr4scOoZ biL5DMkS":4wd* QԠ4XIAPF13d3r'=}8^qAʚq-$>q# v 7Iz7O5U=*iZMzV_/rZO&=+/kyK6GNq)OI#~8Ӎqo{ׄ,E[gxOJ3*>#|Un^nE.-u V`'nOpRVJT%J9yMC+"湸 QN#޻tpCh#ێ[޷3?hDZ9 atv bXc܈%ڲ5IINN1}/=%kIIC5'ʵˏIڃ>\RBPR"֕vdE.;8ېAXi’RSlG`ަ6in)hUsRJ6v8Z&t: -,6Ӳz{̞-n(R+o JS|iOQh&%.n;a-eEMcb#aF8J2:d>ZR7,, rkV˕݅[q4^ʖچX|MTi^T*Y1!.ߋmQKO0(z#9L!MKmmPfPbڸqݟL[/R$(`k]v(ffONryC\Ojy$#B!/2Vt(u2'"i4u)d HP#r1AEcʻo*[T\Z:؜ FzЁ1ti% %ԅ ނQ@QEQ@QEQ@U=bcPúNBUrG^u[Ψ!T ɠgnQz46ⅰw[a BB߾k5æΔˡ qA_oT.mrJBKD6FvGnvKJqEȨBJRB Io Q!M!⑹aeh N^َ&Gz:Rl/ZBF3m)(/VĮJ!K IZJJ YQu Ĉ]2IS3۪@8HQ葓43*O0TKR 1yԒ z [m][HE!jq*YQTJsn 2#m4RR dc#5:xao~1MpvvP\\6Zt d {H$MK>46LEZiۡ J_ ]\SqYZPKl ICqBCK|0uSaZTx8I$ PB8^*byD)+Itt7qʝ6DNɛ*KS[ FJ@zt[ċ O'N{sQ/MaIPK'e ((ƠExz$;t=`!*uӨc}%J#q]OzTY!*} it ԒA)#`J_R~cKB:BPFClv _HRӬPQDPO ҖU1{Vn@wnC2IBҡF5Mnq$,+V4'~z6[6/˒ ڜq]'PPa0EfDg1 ӭC(h##ݸYZѡPi $`o6"\rjm DZlc9R4 Cn3P N$3LW PҰH'jUwF֖PsJ$hFês )8)/'wPGf`oҮ9PΙ((G#ӯCHrTVa!JΠҵ)[d9ωM!Mu Zto{8،|NM)+uN%$NFFz)Iq3(>^g +Iƒ^((**|$USҭ\='욪 [ZO&=+/9Z-'֓nFV4GJHĒ:^\Z&!nhq%z:T.650wGkTd)-ǎRR[}n8 J2pRNOn6eū3%(9BԃН EKKsKXlFU0?yW NKK\ȱXijZr9@yd䓊\LO8~ LzAHa-`v3:xSn3 |9&!$h Nzgޮ.']d f:ԕ~ k+J2FՒ Kd1GzB[S)xZIdK,B_KB\L ӱ^R+ikp8J*N1mi *a$.TGVO~V2^5826Հ7e Eo\2vk .[*yY*!yGoCq~N5m#RII xUI4I}:R7ܩ t=M[a-.4Bд$($( (( (( [\ՙtgd(}||IoE%W'$169(BАJIW_ꕋ=-+/3>KRP@)jHАI"W7MB_e+-G:sWh}Ų]TǤR52r{S?˻#2?)XDc+BN zzM/8 [$pNl:ݶP[.-]a,%i@uư픜xP+bf]CZkE*#nNNv9oCZq)0UZEݛqJΰҠ)) cZEݛqJΰҠ)) c&b~ *a0YK"I wa1LD1*W)>J; _ [[)v[!kBR-KQJR 'c #SmL31HuIAAi.' Hܫ j' <̋sX,r\[ 0 pd0+~gc%$8қP#*P.]8rD!fK.{ťiY%M#Upnhभ."8Fc |Ee gSdLoI9 6fT IiM((c#U!)%D7$PdEEMELrCn[l 'ʁ=@bA|RYS䭴 ًvٯw]W4<Ӈ\)үkR4p}Tx1$\v5)+ZG,;oZr ݛ`u2[RPr m[mnr㰂:RIަ\p܋e:ˁP<:G(uJ9)6 cM$GӮoLPQEEP]T]P(='욪j ?dTJݧi6Yii?t_5I,ڞgE;즜m>'pSN6E?֩J^z *#9>=={:kRHbq a?<%V윙n"\tu5V]Y8L ?/#-$u%*8N7}%Y5MJY)J#8ު"9{b,Y N?zuVm34/F|alaũQ!J'%J >$Ҍk5 +qƗ*( @9N9離+̙mg~OHQu`Aa떴4^v4 bC-Ki $a:pI%  6֑x+sň^J[n8^SuHE\`9.i؍XT%89;t] s .u.BqLtK%Ek!>Ȅp;2< -L\PWzFCv+eXSzp@)ߚUl}⣿>1= 5)Q'0ӵV8㎩Ŭ(pŖ R$";iu gQ@QEQ@QEQ@QEcSŭlGh6VpVHυlQAXޕ {Q~3oD1SjL}:5+BtH@{3%Y..9"{rQSl!A#R=./HEfmŽȭ>yKj$Q۠86ZŕiC*\6%}ENB4GHSΡA@pڒ1P5BA AP|ULZq":yaH@3V^DXa JyͰ-:7?{А )%ilj)@HP_hHKT5 u$o(Fc\yaMuZ݈/P!JR֠8dg9;#b3ѣ.H2ږ*FpN0HFE,WB@y\N"S:K$#;1Egeܓ 7]S~BflXY$#W~V1|*i5w-)4 :! wUo/-ف%d'8 $3%a˳O!J 8:χ0!i '$B HtɎ!n7M*[{f4I axBܷJTu-q(OB2:o(>j,rxCJn^NۗeV|C52%nMXnX xҥ3$`,gI9"BA$䚆=ǧgCVԝq|~^E[gxOJK~\L/pXQR, vߩ-Z0eImkӆN[pZAz[wN-nP+.(JJ VA*Qہ'pM.;ݷ [.)dnpP7ۿ$5M"9۷V8??9b}5RPtBk~~=ӝm8V%E$+ 'Fn6"0--o򷭰ya%;gسqݛķJB-/Lpe+JYme+%9 =#'sWU}H$+$jF7Ҹ1VԆ7$K`ICor m~gd7T{#"*ܮwv5EȎla,2AzFN`'. RJ桵@tt}Nipb 3 nI%:l߰ eO IB\)I{o@rI&ع H".c@iG(  kV&,/Tr'H x&+Q$(` ~Պ_K6MBJ^ Vۏ~mrJ>yIA%a'dm@j/lYYT D;!6TeHTqm6e $04K"Oy{vn~*botJ$c'>&f:"0@RRP :i13%~j /TZ~s ڂ4(4iöA0FQ EPQEEPQEEPķcdsP, ܨԨގ̍s5*CALlgۭJW!-->I@$j۵NHoq ѩ3!8쐸 $*RX.y+JYGA>wktƇ%h`ILC[KeK:S~U"D,'Jpo6~Amm!@%Q@ԭJ=zq[kDv-!A )awM\nhvI3#dTr ;ծ'9uEQ< %CBnt;MB3{52PU7&@qg:+Ztu짧"™j:[@PZuבfmSi!N[)X'Cٔʙo4jC I;AuIxJCטzG:3R􂴀|S$*rTNMU2HiIhRtvPsm*#3yפAZB+ ;>p#)DTFrRXJg4 {6U- U:@;䑕mN~iٵZjZK) p;y7XvT";RPROnIۡ2!Ѕ4JR@-!(FNAAr}T&XU&LlQUe!a$Bڙ:q"tC?:0*#PNnvGQ`&ER qJZQUmPZ,$#u~ZJ %ji&KiԥdA^v*-ga*PiNq!@1)v.GuŒ^!NZIJúj CQm,-$JvbF?exL|\)*ZyhXϟ[5l4ʜSM! uZ)Hj= j?ʥj?ʁF ?dTWGI&BV?_IOJNVIۧerѭzO)f?)ߎ?e4i\i;}q.?MrVuT* c;tyߴZTH=xExOm>N*d9Y0cL',D(LNQH?zد& وL>WF+ !R71+t[f8vv-M6tTH%dH%{ov-jm1ZcQ );M&S3p%j-t7|SG4r>%XKx =Ӿ7jۼ jzT\b@dcGz3sr&\銞^mRzwPbʿܦpHh&<} Siw P#dvv83p9 \ޝ-Gu-9 IBSБl.r\dGВAa TpƜcM*vfʒ7@**B1oAI'r$k )M!1#JAYRs&]%-! ɉmH <;Gh57NC:CF]:7T7TE2RFH I$2: %O͊Sұ:w@ߓk-ii- (vhV?5֔F%tE" :R[Z +I ~ &nJ:ލ% ntվq6+-c376Kԙè#^ #HQp:Tp} 0%H\f҂[n?˅fJrTHaFq0l%zH=r@S&t[s#WH\eG1AA(iA zoFKdar&RmjT(ڒln;{8TõZMK"[Lw":Ԁ dr@j[چ) (%`)!Kksj '.L9Z.Xc\ZHjJ|) YSK qdr16p異d]'wW+[jSFzS1MϜ&a$AZ\-2clmq*;0WqmRTPVH:2^+U:-S.5KkKEAZwIN@pzdb(Hܖ&%!mKyOpA? EWyy+]ZS) A*DZVcY\)/|y sZu@X)'* ҖU1{Vn@QI߀KQI߀~ɪVMUOJ-'֓nF?_IOJZRͩ~S~iw)ߎ?e4i\j䭵 0V?풡ZB`;SٝCim( Dwϼnr.4V\uHJP{H;n'Kc.J4!X:iKkBU=Nݾ4!NJQpjg9|{m4"bG3ܛL~O׌I8xU eLDvZ[BTI8HK0 ބOLnz[n4r !c][i h) Q VדvȒ%. :ie :gQSi%! ZQJ A fxr'h.']ԕԠ'BP!Y'ÒZ8*r$ [mOLA n] 9՞gм㷥gKc")ke硵1Pӎ򐱐IJ}[ی]˺`7JqHS+$@8{k"%}6iWCqJIԅlzl稠W[$ DB^$ oN0;{j"n;9) e: LHk ŀu/'++)SdHEX~}֖R4%Xԑ!9 EP_`\"CL88*ReOCj!4gٷTp#'k!\[(?ЅLzAHa-c[' gu3ܻ3,CuLv0_1Ҵ+A '`!fDuRJA=dcOl:­zY4)7՜ǵ̻s* "-ǜ|׃ŠTFܜs]r*#?%-#<%R?TaCs@n@:9ƖRE'P2*;Ԇ4a뼦´YRp0I8VgT!]I%͐v'߭+Ɉb$)RIUqh9UȭE Y^V' Q=90%T^cPV،IBegc1Xm6\NV@*NyLY daM;`Pj03Ɩ6t`Y†Z%q & Y -IoW֠4=H,e֓ox+:SD#ܑ$u.vMmdG47a ٜbunq$,+V4'~z6[6/˒ ڜq]'U;M.:ș/ޒrm;u*W[TҚQ@PGAJ%)؈I3#N?pQ-`ͽ?#1N`\52 n c!$k*YHqeO'pRO22{w.,X"DFdBVQ?hdJ@f;/:d1oNbG ܡGLn3R},rS" ٰnfX\s!e!e!| {N\{Sb18e4XK,8A9uk8%̢Xiz5+Ɛ$ f˄u9y8tP랕8rRl A5H'N*/c];{ށ((**|$USҭ\='욪 [ZO&=+/9Z-'֓nF1ܻU_KRTj8rٟ qWKjJAlkť R\!n򰢑c|~6mva8-!/p\?F{3XRU4pCy3F.bDI>ˡ&"Jf֘*qNbY/-,V|1n3Du,2\$!+nkȭƺpj"=.&*Hu's*+;9'm–l\9,%baM\(;@ V*|y#I׬2rT;;j.)-ue$ؑxvu`3gv3Z91Ni{tn mg~OHQu`A%:pdyԽnq'[jmRiH+YXv )jJOS+ʴ:u$ x=p[֗=L9 (nsSi -TB r8'r6Onv-̖:XX RBvN<) , m if^i,[܊C瘤HJuaQEYV8ҥZnrXlQ$(@껋Hn)_9T%$vwлHn)_9T%$vw j&; Et‘4t|f1lR,aKZ*u)] nDP?K--!)B%)YysSy7-kv"T@)KZ<ᑜҶxF"zTz j[IA8#hC9s4䤇Sjw@UEbhH?dB*qIqyyBAa5,ےazo\-yk$j1@E%\2#ܲڮ8qҁRqB$j2E^%0$앲!aDs xHJIQ =d8>L?vc7 6 A=3G\c]u="3!D?qx5ڎ6瓸p˅:UjV$KdjOЦim$S7O5U=+M؆e!I Nv#X[di?t_4 :Sœ%$Yk^Y=>wM8}ZNE;즜m>S{ܕ!`3*>#|T+YLϏqDe'nxwUnѿ1)iFA=R)hBI[ Whb/(Z!*'99+5Ƥ.<:f<(J;]{i*+UTШ K( A ~Z3.7 svJt_hHKT5 u$o*J9u䂉 [2 rZАwRR:uH5eI68 ִ) 4杻d{ (%NばBs V|7Ď^3P m^Ŧ8u'c6nu]vxBƛHo?Ԕ䍈 tRG ڃlv1>Qկ*TL4mmuY\7mK9ӂ+8wA:(( (( (( ([pI[FJQҀnTE{LlgۭJW!-->I@$j۵E-p&.Cv74;$*9A jƈk܀(TX߷WCFtR:nôn73C-)(: hJ7G #fU .0\q -ղRPFdcnq*)B}m*jvt0-︄jұj PPEEq_\%F޶h`ӹBTKr@)9Ve==KQ JӨ㑵k\'3lH%ZYڜY4hpVKR[9ѝm( !Wpj^oCJKEzltv$$HnIc͍/M%5yΕmpp{qI{6U- U:@;䑕mN~iٵZjZK) p;y(Z2® 2e>d~r#) '*׻rЖ9U,`)Jvsz[}Zu SJJ(V8 TfM-%wL54ߓ% R /xTi]_ă곰(4[K s8ƐvzuV7˔ƘS yIJTб$?Ҷh OZO0*]Ůy mM5"h腞v{,L~nʼDfc|]* HRH ;kOJ_BB% lu|Yk^Y=>wM8}>sMnr+mxCt3*>#|Rܯ_]Vfd#au碾_{jjnZҕe9ũYYizr4}t0|:#tRT{ ̅p3s,O e*ŨJm_]r m*b# IIC`JswXѓ) g(@唁:qnN;ɬ_]r yVS2GR sZJ (n:׾fC  A# {Ѡ+렼"XE2BzZ|iqƐԤPH { 5+AW@E/={0QKr4}t Rܯ_]+AW@E/={0QKr4}t Rܯ_]Fvdh4ۜ PFz{Ѡ+r3.ۮ2l =mQoCx)pCx'8ӌu_]r 6lźIR2TGq9-K(fE!jq([ RRFĒI>5+AWAAmm!@%Q@ԭJ=zq[kDv-!A )a]_]r Hv},gje oRL&tV$y}th=5"a~Ryx8y"DhQC*+i-AbA##Vܯ_]Ӑ).Gioi 7g Ms2Y7uI+AWA 2HBV RZOy>)3!iXԇw}th=6eDfcA6H+HV`sgnvY(JK BҐ&h={Z+%3-ǎ Dwdo ГW[Be CQ# i,[NBQ،&4}th=4Ҙj\J֦Dth*)3]*k\UEUAjhc8g {Ѡ+] ap)SRcdpZaFDrK)K`ؑy_]r i8B굸R Հ2{%/={0TR5wXr󗞠t3Tl+*B+:a6w'-4PQ,VVPVJ HOJ_DE|Yk^Y=sM1R1Ϗ?e5My qhXP;Gho{ׄ#2RZ 8󒲕x㶫ߧkΚPc I g|WBaNU)A'd D6tLZSzsP덳֪Xەʞc>RiM),'J2@Rze9&]44LoUsNÁԴrRJZUX6#\̖oSfA`o%EZؑA%.mzLd]BB9~~wo Ӝ@ʒ:o!KeXJNrH9W>\xה:TpgVI5,:~3\bQ i ,W >8'=Io56O̘BNRHl4L(VҢt5 8`|ל&D>n )yO4ߦkn$~b䶖JI4QEQ@QEQ@QEQ@QEQ@QEQ@QEQ@QEQ@QEQ@QEQ@QEQ@QEQ@QEQA˞F{erѭzO)f?)ώ?e5*$IB{ /-} 2ضN_} F )=j1ꪪQ3!Sݍ=q[ΦLgުow߮+wz{LϽL~~W|}q[ΣݍdϽF}fbcuoS&}3S6e\Vv7nc:3Qz-{G+wվ)RPd[4Fv/{G+wջ2s)Ķ1`nI$ Ud_ji桜=խd%# H;7L~~W|}q[ΣݍdϽ^)+qL~~W|}=q[Σݍމ1ٕAl>\mZHԒ2 Mz-{G+wɟz;'|oݍ=q[ΦLgަm??F+>>~oQu2gޣ>3o1_1[nc:\Vv7>|Oъxܥ<꾕HRUzkIhC-- IRA{ԻeO-I:h@ 3L?&KGQOFxJ\PAzsY/U,gև9~Z9cgև9~Z9cgև9~Z9cgև9~Z9cgև9~Z6:*@'Py5Pq%֭!(nrXk_}ue8C# ҬxnQu{5Zh/A5Zh/A5Zh/A5Zh/A5Zh/A5Zh/~IkwOJ_EsKHJ󫧥erѭzO)f/ WMmōwUC6G)Pɲq^ԶgG$qN#5SgLɓ4f=rˇOQ\>jUJ[y5\>j\2SUKo4f=rˇOQ\>j*u)m'Ap=rˇOSW-+P5\>j\2SUK6| q˂YSe,IwVu`o;@? 39d\uNҕYI}JK9*zUFtp8t#'N1\r}fPUClAQENI^}bz L|u:U`RO\2SzJJ[y5\>j\2SUKo4f=rˇOQ\>j*u)m'Ap=rˇOSW-wi7[lԊ5mST腄gזƊ|ScSh30ъpӿ~j]U@e*u^f5$ =Qg+OT_F9_"~=Qg+OAU?|G?}Tj'rDQzWȟT_KRaByg V+[rD Xމ+Br> 䆮 ӨL`:۾䄀|k#P[!t>UUTr!Ier))[o##`wmFIL(%<*{orDzWȟ -L7'AN*PۘICe[Iv5]SR!J(dqQg+OAU?|G?}Tj'rDQzWȟT_F9_"~=Qg+OAU?|DC~ +wOJ_@lN<ZH|t_5I,ڎgE;즷k }piZ߇(o)(@=j@5MrV#r`TIjjJS*պF ҧ~;3 Rʀ)Ӿ:ocJR2cL2m⾖|Py/* ym[<7BQDДg ;$'rf$<'C~jUe0HNPVwMVp9KSC2B@U捳gsdۯmiIRI>otjUUs0Qz"[2,}/MJV崣w9Ufی/%6RۊI 0 v1P;ڣ|}zQjmq^Ӽ>ԈFp3ЄzAک9IvR:m| 0RBIAfzQj=wN5_}6 }4+VQ;u.V6CJE pi/]ӽ7WGס=9"8< m^Q9Q!=n]Ezc_- [JJWp;ڣ|}zQjmz !0h- $ӭcz.Q!qB,nH:MCQԡ߷ST}wN5_}{Tok^Ӷ;Xg0-hV e¼[ʉ CB* :xUo]ӽ7WGסe6YpSʉ CkB* dtLïEyqZJ20un0vT=wN5_}{Tok^8F7EJJ*7sVi*/8˅:J֥.Qj=wN5_}6);tjUwF鶸u8I޻{To]ӽ7WMïAƊN;ڣ|}zQjmz4RwtjUmpqwN5_}{Tok^wF;ڣ|}\:h]ӽ7WGנE'zQj=wN5_}6);tjUwF鶸u8I޻{To]ӽ7WMïAƊN;ڣ|}zQjmz4RwtjUmpqwN5_}{Tok^wF;ڣ|}\:h]ӽ7WGנE'zQj=wN5_}6);tjUwF鶸u8I޻{To]ӽ7WMïAƊN;ڣ|}zQjmz4I Rw逸q+^in\?˿~>8/ә]dȠ4YLȝ"7nI;Elc? O.lW넺y"!B<J49arjmCm|yYw% t[bmZ#UС ^^tf"*-wwzoo"p(wR1X @hGtn="S}vۦnz1ER\<ԋֶE@튭K15[ ~wc}C>Ov{Þ+Q@N|nג;$@L&R`0(ap";' =_D(Y|~ ;۔!e[|\m4/h{ɯ ȯg>xzhL 3;P~?C rs'?CP(hX+ V/v`o@+cj{nY8 $mꑈ}3n2sNjޗO*=Xmp)11FB9#ˮݜ0 `6 xlsjM|4! d/a*:PHB sPO,9gJZӊx\N2nR28kHZnhLTB}7=ҿ7tF븮R =LUۆ @#X3z0{%o@. 3x ǐI @PNJe`f@DPIBx-/meQ9(qX:+^Z cSlglR0ZѨt.{BN1\8yE0ld?Ac޿3:TT¿?|CB4q?NiъycII63lB{vhB<|!SQGkzK8cvX]n^,{AfS ы¿ܶW o4! C[v $I$"IT<p[ eן_vw  G~0Cg{=WAO4 a~5K18,]п%';Bd̒M!KI (XB>8n8;ƠWg!zWn"bXV+u {笪*m;ij:x繬o6,ie@-HUwS2i 0WJk:C3,Kʽü`wsdCBSV`r5L$]/)=cZ*cdzu]GYzZJ/=@z(QJɷl~7{JIsI¹"RS-=ہM3mk;[9Do^#"@U#̬ 3#`\V0:xn,DBBw"D} ])R . A' /P9tJB& 0$<|Dkd"ǤOܾq2gc'si7X#:cVv^W!}2vh涕JejDfHk'NtvOV꜈c:1=cԾV|hBd9sZʚIR@>t"mpB'ɇ6E1򡓞`M>t'&?%v2&:CM>|PjRѭCS71F>"(|aC[U/ڈT:$µ.6ɇQL$( T* aJ|hΎi%{5@p79#=Q# 퓜pY#'}d[0BwǬ ahNdq'] :Ϛ`4 n~Y(唄X9zx{YBPCs>4VМM>t|$K"4q׏( $ Cssɷ }ey.Y򛄂Fu[b\5K@Q'tq>4&Z^Ccl( MSQ0NS8~T9"2K!0 (%+d`=BGotf TS7erŸ}hsACC9CM$CÅևG+ϠUZ?;R8e :zч e{wl p) t@tn).김ϾH @ePi=m+@^t`}~읱 WuJJK&[. ebCOζݛCQױRRUR ]ApD íyŃ#N?+%z(=hwrM>X&a dm + `JD#*bca<61'1bC#~=@]!:B"4Zj*w6Z})'rr ͇Cq‡C{C3B|h)F4SвYz1Ջ;Hq#*>MYe /P&vY~g% 5@gq0rh`H]g7Ѐ@ hc8C3r]kи V h Н`VF l#7Q w#g6 D: |mLhkAIRCswڣڐV]I޽v=|F? yִI޽v.ЩYlWu%> xrtFL@lhN1`Vf גJ Htj p; `mW΀z@hЀ34+U3 ASc@wmSx1r  ~%44z]n 3Mwo^4mưMB?+#Z3'y$ [8se%c8[sNcv@{PCk${SXpCn2xdj;N} ``hF#7vy,` Ѐ@ 4Xk x`/w(wF㕬Y.S!$4!„& =O@@;nB1;œ6]A? mZA~o3PwxԇcTh $.V!pρAVoE*~\eªŚ>%a #'3y.= X:Kp#=<V`L&u}u3t<M $P]UCZ7rzrne9(K^~By^gfUQB|y1ɲLz !DeVܕcݍU~seڽhBlZ5 ]Q ֞PkK.+\Of޵xIENDB`anyremote-6.7.1/doc-html/data/client-text-menu.png0000644000232200023220000001233212061426051022424 0ustar debalancedebalancePNG  IHDRGIDATx^ܱN*A„;;^G`HgcS-X`/cgELn̘LA>p2p7,_|\OFai``fz@%= s{i'Y*+S6&:W'U&1;GJcӽ|4 YB^x( kM|I5N 6;K~rtffmy ll[jl ;3\G;jyu{nri>>_cV+}ʔu-}Mt>$f *?Cs@fEI}M>ux \k!cgwjPcP9݅ؕR1 P@cK}xO e/gw kZ{anU'gdgmۚk3! fjnwlw}wKv.ҕ<ӼqrAw OGePAq"#+;Ofuu*o޼yxmrz;AN( 1@d8*/|xyOM {;cJ"@?.EV<glqfuaQF_o kFqR􂗁faPGlgK + OЩ2>Xҏ8coRO{L-sg+msPvq^gvPv?LeAXX&, l8}V&g~= ; y޳()*"- =tiB~R mV߂_(WyþFg;:qȥ[hW<{NIqssi-\_D1xξfʌ-֝knyr9Uݮ'okyʹ~1gw_Oz?iY<]òrgsv.yi??qz!6`LcRyLDEAiTiG`b5bЂ8bOIm帠S}oP 5z{US/ج9G; HX>5ۅt486oezYV!ܟ ;Z_ 6c Ԟ-fzݵȧM^q1<"-VcBqSh~g|߿tnwσMپȯLw8z^}?߱Y|M-y56o Ёx- EaYQ)T ;cDT)Qy&"*ZT3qƞg{ Z]y}o>c:;X>}36﹡| &8Ԟxn[ڒ>}q>|lm퀲 Zqx}F^*4m8HzvZ~5\ozsOZzk":>$ǥ8$Twชzǹ'xKh>mK?}^":8Q>+.MaxƎ]tZ{߻kQϯށuI@N"Ky[DSjYЊ3^+~h3^N_ gx[HW\D+."*Dļ"R lq`CȒ>}>09/6碎Gq)^ɛ3:lAu7DޮIۙ;"<?1k>XC]"jED"V\ā jV>ϔj{1 kYvO8>׊Fpc ! WfOɥ`zwj3sۑ/'u1/:r|VQnqe?Yݏ/y|[`psu7yЊKq^fqi/1dy< ?ܯY|} :w)~nZضywD"EM [ā}a"uma5j)` Z2^k\v `ԍ7ExugW;spSnd!lEļ:߽{_~ӊ;{޿VoG$0Xc_8ٳp.HxX8`;FjZzB󧪾OjQʩG^Zqw^?aA+$xw0=÷o]ܣHAR?>ls>)k{RO}A$au7=}j E<oq|,r!$p. ;|u|I;=ZDzO>WzV.PQMsSSie v _UyK_{ T*/@+Nb j'xSp8Y^]-Ǽ~Vbߙ2 ֵ"pEȵyf|N[mv1I.ժ@Sm|dd u]# lT^JNޏD5]ͻ ZqT~y.?cCzejI"|1"5I݋<ڮʥWd N_bF"Twc;ݴjoFsM8}|)̯괪j.TcM]\ƤՃ}bk(TwMhkugݫfhOMy7cÔeQo>Њ>\5ЮLr/]WԵxh+~WH <]3cY M_qfj+r͡ʁ2Itr: )Ϟc25rLb;qvly݁;VXg"?eN c%4%T3vӠ7>}v<[RuK:]\Zbk,;ORu~ͼҫ~-cAMfvl-ͬAjם70t,j h8gV#8kz>u }]r^u 9 ӝ"E+IqلnrꮢC+u-vI.<8Pu7>4I} ʳP_D#U&nVݕ4:;$Q?<pcmuW;AA )D3DbŪwuL1R[Uw8Gw<hъY@+JTw3m *ݶcn\0j@+wg~=3رUxxOq{fӜgckrГcOݫ\]-$Y8;Oovs*QBa}"];} Vo#Yhaf0 L}͚d 3֊W$6H,uY!;}߼#nߊ#KOLw /"$6  0 Hl؀$6  T@+DO۶1>oV$ˋp#G@+16`V؀ XyViAq322DžZq`/8I2=0 zK S^8hǻ2i4QHT}k/">7 lbg`k.Σ.W{fEQ)/(P zS7Ey 8K~{{, c@+uIENDB`anyremote-6.7.1/doc-html/data/client-text.png0000644000232200023220000000452412061426051021466 0ustar debalancedebalancePNG  IHDR@m*m IDATx^]j0ѩ[_'-3ʠ;Mffzvà(n>^'U{@bCan $:I wm2ZEW`9>񳫌/VQ9j0ZC߉tnL^Xo8N*jݲ|s} 4Mva!^Ů`@~1 ~!>!myJcN>S˿ÓJ0$J{Z=={ -ڛvR!^pn ~4N jh̕גq #5ol(֏Wv`j''`Va(:[GΐC1qg9-WNXnu4}'{DŬz_a Dm="'"rFјO~=p؞ ?m?-VE!sg]΋\6AJicۏzR1#Yd$k\7ğN%Sn"꩖|t]v +HUJ*>`gP/,(a}l?B7)bUd~,WϥAX,-q=PhVIu  x7bcaӫN\89~1I0FJ&]C\Uu{5 ܇{[ ,!b"b-&QO,"B0r!Zk1w:P,T8 ؂ )SR)B1rZL+uK|z\4=6)|#rZLHe"; BIXy mZL*!b-ҤQ31"bZDZL"1#"b"wR11` J#q|ur׍bJTL>e+.'tve1f\=\2SS9LLLa&dO9,}n+AVŴq0Z;}@T16Z>ULKg<4avi0b@`Ā&41M hb@Ā&#410b@41`Ā&41hbM hbĀĠ#41AF h1Ā&41M 1hb@0bĀ&41`ĠM hbA@3hb@&Ā&M 1M 0b@41`Ā&M hbAĀ&41#M hb@F Ā&41M F hb@Ā&411M hb0b@`Ā&41M hbĀ&M 1M 0b@41`Ā&41hbM hbĀx 41#M hb@F Ā&41M 1hb@0bĀ&41Ā&#α#6 uHdHԂ,(p$cq z?Ս4A0@ѴNo";k纼AQT8āx9_9q[I|D "D 1xFNUZ:fLi[1 k`Y3DF^u-A .aK$C&ZgMKlkeЄtG}ǹ b߇'`<? IE׃ښ 6(=r,d^ fŌʒc `N Btf[@>ufZFIi T {*n30[ v"*2d؆ @YE9TKwd!;sKHs%:PVsKM7E}=8nBƜD:$ >ZFs6-0b0 f'\$HθUpC"1.ltL**>?"<rt" _:ˑ .!cd 9)?{9SA@vf*N⩼LpT?6JЌFQ.TLy%1 T4Dseuo n\DY)#sȌ6E*=q`_1~?Ⴟkb-`Oz\v~oo9*ݵҝ&at13eaA$NaKX_v๷/ıׁΪoMס VcHpW[=Oh-!",6o 7 o RZɸA;@݈{[W7}.%-Aa f`s 0&b Δow1eBJ WKH q:F.!u5$hh#U x|?,CdHAS?TNò}=؝HďAQxT69qL*-U2czY 03A ÁD:!55uP}$IWr.2逋`D:ލgT] b2&S"2k D65C:{׏"L@Km/* c&n-}-@wIENDB`anyremote-6.7.1/doc-html/data/aac-search.jpg0000644000232200023220000004361412125547727021233 0ustar debalancedebalanceJFIFcbExifMM*Created with The GIMPC  !"$"$CB" [ !1a"AQ2TVWb#RUq%Bt$'347s5CSDcdr<1!AQSaqr#34B"$25CR ?=hϨ{cOɦ7W>It @[SŏE?&38\'Ӭ/]lcOɦ7O=hϨ{s NItŏE?&38UϬ/]:'=hϨ{cOɦ7W>It @[SŏE?&38\'Ӭ/]lcOɦ7O=hϨ{s NItŏE?&38UϬ/]:'wHz;!k:Xq%1N6F}6]CO^s@B4'vpGh֖é4ĩ+&Z.\wzիFto8B,iЦKm mP)pA>@o4&6itȶIib,e+i.yM1~%/:fH:b"JR2JyUmW[쾝4n2lK HorJR0WgFk=#At-^Էx|8ܟh e;;?p=:y7okFx :R!ŭL>#kkF:-:\q X$8╵ e?6kBiyɍrq%Xrh(! sw-G4e?"S NG-]:Ѥm<͓YE&֎MD+R#)Yys rد.ͼ;]BٕA]=ciZT_iiםFJxKV9sv8Un,l}udD[c\u6#ʒr*PHCM)]Q1ʫ1p s\}4P(Z Nݹ_MZYj@z"3i.1!Dw$ajnb0 ̛͆/IkT޵w(JpZta%!D 26%Ft^emH-jZV"ҚOMSfE֓vRqՔ!֒ϊ8i=[P[FU6ݚSd-%$iq-* ZuB9uLn|.ϕ@WŏE?&38V7~a÷-5qi̸)scpJka:89I\>)Vrr@R_Jp2>/䯍~J4;W‡)dP(0O#r;3phh-$u-m}An#|ЋxzSƄ_?VtI.[ϷvLFԅJRFvs^\pFz{n^mr)ОIee!9g@9..g4"^qrދ*bۭ.- +R@ #$:6eʚ Z_rRР#-=..e4"^13`sKb7^ 9Z\JJAVNqd5VLn%l]%i% =?br~51|7~_H-2JixކڐwAe^yOն(!JVIV{g}2,q8yxf3 d5#\S`4@ ܒs݀VR"W{޾ߵ/u_5Ǖ6md%JA8v^ aqE~RaqҀr8Zm>㗞mblu7/__3Y}kya`#@eHyIH$,aISێ_^Z]RJDns g5,u7/__3Y}kyXuVݪNrGQ0%d)y)a9#g-sc(;q:R{޾ߵ/u_5ǖK`Ro)!>HQc^- @CeĘ(*`V1:l"R{޾ߵ/u_5ǖ6/Lsa)CIR>r=\kRRӁ Z3e) HڬyS:~f{޾ߵ<Ͽ_?;vn1wT)Jir\S(hI͞!k_Kfz~o_oK\=o_o/_t:~f{޾ߵ+M!Ou-̓{ihp&5vFT\R\m0zwb(swni}2:ch+qC9KE @P!IPPAcoѽ'm-]WX˷:#rط[+O#j"(I{U]eˮ!(>bۓtOt56i,")M<)ÕG>GkϲFN8l~F[ÐGP#~AI8 /MEivwg>3)а 7j;5m7[tqō(8ӨܐdF| e,z+씇'rg!C ?Z־oZ<(XM<#p|WO>+ZP#p|WO>+ZP#p|WO>+ZP#p|WO>+ZP#p|WO>+ZP#p|WO>+ZP#p|WO>+ZP#p|WO>+ZP#p|WO>+ZP#p|WO>+ZP#p|WO>+ZP/Euݵ85Wehru"=16]O ;E)BR3Ɛ܆U֖c8 V}.5dqvt~d1 HqN6!YIpH0Q"(u$)%+lvhN$ j5=T ⲥ:sRD̛-3Nf[mwsO$8V2 ;O4㺱_HJtN3e pJJNx+]f8}RIdm NYH$ sP`n[:!&2SaB{A^\pG5 UKtEc-.PO`$:U\5.f\22Ti4(zO>vUWFfr.\vn2W LKq+!xA Jg`@mNIa rs ((ڣ最F Z8RؤYJ"uHͶz`Tג r>9؞CpǑ̯bQOX p\] mk?|n{ݼE>#J]Ђ;&knq7 2QP( *n@:u0qp#%L~c ڮY~+x>D3`O[v-0J^2 Z(uD6%*#0j݉t!=yqI+8<#g0yVN ~^de׍U%S͠8b>\ԅxoƝ{r3BThl˜wߵoޯd+ { '||mC>J"hnX%In+KlZr^2YZ%)RHP➫-Y*L9e)ؼ ;|nI8jS'b>D(9%sJΑ3AhTvi/xPO!r_rk[-N35vf[gٕc"2^6Ri{vd9T]d;b ^zeӤ.SY N7lH>J@Y'<:U kF6bYf^|WЫ짃**-+̕%} x: _BҀ%} x: _BҀ%} x: _BҀ%} x: _BҀ4_t.Yܒq m֖BR{9εM:W陶)mY- t?+V 6guuRWNyMs&TH]qXO-gq d (Y\Ni(M̲!IO)vA@nV ZXe[:!-֧_؅F/JSI.z^OTXQP#>cG>~X6WmFn[Ҷn JA'8# (}XG-RZ[58En*,$a du*?rAV7e *Bn6=$m&^4G /-s1)ERQ0TXP~:֛]ANjMT<_Zoڠ/͉ ˍ.w!ÅjQo FN3&4gfʻ[#[S^-.%E!,H`#3YHA(Rí8S?SϘ5 1݅*b~RX$7[)x/>ZܥNNp1{oD}volW:YK۔b! B -JRF$) !XxYYW;f$2[tqN2RpbH‚@riQ 2#laBV$);M[UpxA[ڵY=^&ZXq)R x8q̅+af'+q۷%[ze6~:㨜ݾbtT \Gx,F)2slG0,e])KYH`&&sjt)Q"Y& Fem;.l'.3y@\P10T aҩ-P)r"=k]m_x2;Ƒ@Su1☋zQu)y_JU+F X[`[.%0&AL"u.;k IRRw !Nf[`ljEeHij#r@ܣ;RsvU;ˬ~ZqMqo+ .;ݾ(:(Wֵ+dZN l.lTŝt&CY-'¸@BwdNZ 9.l6RMpRáh)mvǣ]=o_ r rV C) 0Fj֫!ą[le]R*I(GyP'Kf~~nvo^Z4-xm7ISa R\9+jqrCqJX@R s8g88D"- o N'o$P8nlGKԭVIG{@Jmr0bUy41l´奭}"*kl{m] {]RT❀%)N0T9c8+M)ۓu!RxyDᄏ+8JQ?+\&\&۬?N$tNE?7^ op x\q7ow\noz4R'DZbLM=Im q;IQYV NgfvVɈkLUK[$VĄ!<ԭ'gTVdVYA.)Q.`:ͩ8d!RNorԫr<&E/CP3}IR!Ky)%'WOzSږ&u[%!.)wuxiGJ*dmpo˳ZRJI\-C+PJ5߀q][fEwM6?8I[ogz9IGR+[iCMoB6x%*H$}QFн]OO]CHB1q%e(${꣤: S+IŏQG.ໜ󮧴RN@;N~lxkX6FR8\"s Po*ݼڿtx*;z[zEs]۽[G ;( u+D[38.&ZnP%%+.*'*k rZ=q]f :čJpRF2*NWy%.5uHצV͋LYW8z_Nktӓ]q{ߐVGR;s@kzR)@)JP R)@)JP R)@__V]`T"ʏ h\sBՐ%$H# 0I6.A֘wF)R``a)$2)'̢9֛7)Ү2\#=z @d:@ښ۵֧oi6v}P }r]sܦSnA5Bi۞b|FL~A2) $I $,;pq?stԫ+\(PäcvNs/a."|Tl{|9p9 m郫b!!&xM1s<^^w5+gҶwm"^7Gp8BJJpBTRITF104y5tu)m%ް>SjFJ!\IJ|ws'{UP32fmq1x9NKen+9[v'0kbUnz5xo<%sUq[|{1ZV}-M龫,נ8Q+N0dm #oh犟&aN gN&CuyH)$BOU]: ^5+fnwiwMHfkl9b8}(*y+RV9$FZYs1oع=4K섥HqD[Wy=Oi U'mr( )]")@)JP R[%dA> EwSˍ`%vyv}.5I8ds>޶J@۞U:[6_S }ysY&7>*w!\n?4W8<."8jk+=饃VpX\)X\+ծ>2BG2I2`p:TR88$V+Ie܋tY%#[mF )^ jta7[sQ z6B lBА89Ctk5QCiz|Eŷ.p[.p axI)-ƵR:++eufeFܲB-%nG3s9<{k~zz ~{fNYwSə*u -Ll:r9[NJV[*AZy+i"#T_knDyu0qKgq\-m ũUxz/r'muuŋ+Vk[T<( ѷkݢ֎ RRs5]- R[- )P (V/Jݨڋ'Ĺuej-LBQ!%(,s(/EWOtm`ceU!w dde_]U1ebU1ebҮA+F/SF/TZPb˞:b˞E+F/SF/TZPb˞:b˞EyΛb"g J^gF85vMYw z\gi8R+c<=NPM+FHE2i>eh+|gl˛^pfHeI%\E`3[eNn)m ; VpnA$ՇHߡ\D?e=$($2&in,Q\]2]Fp-iGii9eOԈ8QE"9ڇPv$r߂i! qsI+M;S >N6np8Π' J9v'j}r^e<]WRI/гs0e)lgK/0l߆Xq׫oBTv[PSQڬTfjZ.il[ mɎ$T@EJ5su]i*+!Q_2|gӸ綣4fym:q!A@(o28Zۼ xԦ§Yۤ*4 7m7HPqTP8E%X9miaajQsv m?Q$FR@I$g91{Z5*?y~r+7M}\k:l9p;c 5Vt|KJEfwMm 3U rVRN\ !$WfjnfrM.RU,2\C,%19u#h#vlfsm؃leS#qVxO5(|)reɖV7~ʮJ[-VkEmkՉ0~PV[52\@Ѕ3c O<8c:Ԧ%Eۂ38 DЇ":+QPxOJc& V⛕ijqCbBS=ةKY%u+$d/zK?6_)[Ac% -$${ض]^C'[YS W%})[<>\%-i)o p'5»|餫m߯l%̩Ԕ,7>U,$}۷c4UR2}ݒiMLv}mͭvAJ߼qp}3Z[6vAJ ;vY#36mny[݌˚$ѝj|ZS}4;e*'lSM֮|5:޹J__oګ~;mozڪ~#ѝj|kJuOs96ކQ"9RhTq8emwk"BZ|'؜ qo, һ/=GS%u]tzK6Iy=]_7JOwiN#mtzK6Iy=]_7JOwiN#mtzK6Iy=]_7JOwj٪ H.pJNcx;Ygj o3I5z~&>?kkGE.} a?q^/HͺVC pL~OScd>T'):F:VC pL~OScd>T'):F:VC'T`bXZ5Fmm1Lgm}gbk䁜gzO؉^G{n_G=}Uv+ cO.e@{@<=}3R@}3L==}3L =}3@3L=}NIyz:WooGW:쬚> ak OU\JG<۽Ge% E^ʿ g>H_+>*ͫ"N0^[m=C TgF %ĐA `WmD[-6khVCIp$@P85 E/^k̥X_R@bn\R$$ZxdN^˶5*iݮtKS<̞fbR Pp RwO/S=j?i?m=j?i?m?C_!ty;Ӌ}L!!q~w~!6i*I N_Nՠd<Q?G v[G>cyH$]գ Ș|>,lփRY7%rOoV#?Wka#V.4Я^5$F{ $/쯽enH8+ύ+gSx>D]_/_1 iP3Lq-ő (%>e#=}GY@[_#P3Lq-ő (%>e#=}GY@[_#P3XJ^Wk V=қ/hT|ߗ¯%@`YLK =#pkBqxx X\n;ѹ*<Ͼ[|oHKT7''|#|=HK{Aڴݽ0s4")ܹӖ0 g. %RC9Qx6Qͪ{Γ)^~X3LR@}3@h }3@h }3@h :A^1=X:Zqѽ)ۓ]3ҙWwj1줜b?)8,C6. Esr]:*Z\g ڧԠghJH'+2 ~tQBfKqQ%2֔Cт2h$s{ՠ-Oi}!kӏKjcvaGᨲ mH;ԜO#@3L=}?H}G$R3@3L=}l'& 2mNjfZ'hHܥ-H@A#&5mELفn%%.J T3V*Iv^A [ekjLߑ$ma(iOaHq)RrjP*r=ѻm[Dبj C̿1ǔTVVR!`'`$.NHǾ!xz`g[pTO<鯁^r~Bя)~U#vm KHnB,_ 9R6A4 Q^ϱ8*JOl?E.  q5$>nH>ssW+#Rqpi's$[dJT;3j5CesL=}I=}3L =}3@3L=}On ?ҏ (b*3Y# p(yfBW qECn'I}#Ì:@qla xz 5:OG]JƧI(>)@ƧI(>)@ƧI(>)@ƧI(>)@|OJ]'%!)X% `{ﯾ5:OG]JS}aܟn5:OG]JS}aܟn5:OG]JS}aܟn5:OG]JS}aܟn+.tH'~)@}>OO't>OO't>OO't>OO't>OTt<ˍ+ X mą%CA^ )@anyremote-6.7.1/doc-html/data/icons/0000755000232200023220000000000012100017561017622 5ustar debalancedebalanceanyremote-6.7.1/doc-html/data/icons/down.png0000644000232200023220000000145712061426051021312 0ustar debalancedebalancePNG  IHDR szzIDATx^WOHQoi"bt)Q!(:D@.Q KRKKNAx+si:$Jsv3zFf'i# ,ط}5 -hvcnZkNk }~r]0BT9o|Q-I'wG&k7~DT۞=# kP#gxzZW_ g!%nbv@ObP1M"&a|ztv4tu?*? kbRSω"U$&Bz=?M5`ȳ N',u7a<<$ZR4XoA riĆXUY\I[M -g(fظn@l0S!`d1: 3!rjn dj@b4VIOpc}%[ P2騼#WYBO|^..-21CIy\X_N@$G? ,ǥF^ kA}3.X/s>;fÓ7ҩ.l/_d>@>CUp|pk'ٞ: [CqNIENDB`anyremote-6.7.1/doc-html/data/icons/fullscreen.png0000644000232200023220000000142212061426051022475 0ustar debalancedebalancePNG  IHDR szzIDATx^]HSaǟsv*ÖyJP~3!4#\AM@I0"By\Of!D? ֊[l5[w^K(9x@ e`k=dQbɛP*RMƻ##vd/ʚ')IENDB`anyremote-6.7.1/doc-html/data/icons/stop.png0000644000232200023220000000102512061426051021317 0ustar debalancedebalancePNG  IHDR szzIDATx^M1Zv%"?'@p+!27a XV3a$vJ,HlS^WU!ge(>|Ik0_f篳:ʓ'O{dӳ/ !0X^a_NoЊF#!PJz;߂/bMq\ J=ARB]c0TEmCK>N&N*uRPIilyZe*6I%<>2:1i|/;o_ $D*d0kq|i9v:%/U~go߽yw+젣ܺ,BlIENDB`anyremote-6.7.1/doc-html/data/icons/launch.png0000644000232200023220000000431412061426051021610 0ustar debalancedebalancePNG  IHDR szzIDATx^iPTWׯ7Ep#( b4JYd24n5feFg,-c*rʀL3F#Dň 6 sH5s_{999lJjl|@%;%LFI@e *e4nPis@8FG50V7W(%? 1uQfbjRQA)ysSz֪KMVZ=]n5BI5L ? ިol0$@M:s"wOHLˊ818%5IN<qױ 7*Q)qBp6S[yIJ} -mkewQ`Bߓ˟Rt*€P#̘4)9NFZT#jCPDCd"/Wϋ9jVRʢwBN(e1ZG=^VfMt p&dNI|Uy:PJ{_|¤WU0 ]^GDImL+?nw!:aWNDzzrc@@mF8X.漱2]EbH`(l _ "W}#j@m]=(6A8 EQDPPP^M;$OʝnDE2!%Oqё55嵼Cq&=unq|D&M1=>>rA_}1,y_“{`ZvR|ܸeYoVo7>,E_n+n3[kd )&l#pKW .B%Ϛ2i݊46v<\ppμ'sԈMjjj> B* P[ӆi3җ.y@CxZ/%ΟJ ywg ?[r}?OVD@pCT*s< Pjޞ<fq<x-JQsrV'ޜAj~9ujvܙ3~6zg|t4:;,r*Ӓ)TuӶVT*XکƜ ̝Ϲ""([,VyCż:X{}x䂠([ -khIM'%}ES"w\-BQA^Sc vkננ>tM[?W.K; ~^V3<ZGt>$g߁}o}cWjXFʪmyݔ O0̜hoqݕO@cL𰗦M+m% el1gle"-<~.:-#{z ǐ?8Ԑ<KhX|,Ƌ(Fc~7KUr?ĔLfL`̈`b ͘&/5{V#" >> 9; 'aͺu_??`g؞*C*OLtx-M5]&Z+J+i $.ӷsae0 S-{֒ YP>.G&FeZ61JIENDB`anyremote-6.7.1/doc-html/data/icons/rewind.png0000644000232200023220000000172712061426051021633 0ustar debalancedebalancePNG  IHDR szzIDATx^OG{64QUTqچ.ЪTJvN A{MB:D Ԧ5KK%.P(R&a܏&꽬~]8 *Ӌ/&G8 ^i?j=XEQoۜ[ruUCZZv|?>6 2X,=bR^^n=|{?2>: W`2@n7r8g;F͡::$Tн3-n~6x򨶶V-qa4Կ^R6(㿞><} txZI}t `6!+#:DFy?ZyS]>EI@`0RrX__0@PPlI(--ͽl(^_}MM RR<9ӐEn}=Nv(Zlν^Lk<{f'TX qc*PfADvF,1zF퉢%<獍+QVkSe#prnΫE7`1}xmϰvvv޷.jEpl8"X[++P_xS?5D|l'fPxR~ip˽?V%M[IM*3@ RGFFp!ܜ _~/wԭ-|F"4ˇaÕ#4 0b!p,6|tbRlq~kneS.> v)vk?,Х%Ekkkl;yk̍$]__k"oStuuGdb1OonnED@ATџcIENDB`anyremote-6.7.1/doc-html/data/icons/question.png0000644000232200023220000000375112061426051022211 0ustar debalancedebalancePNG  IHDR szzIDATx^kPW 30#Wq .&.Q QT\fR ]/R,A]SfjJnJzY%h JK4QxcPsٯϙ.P{gxt3Vv Mٶ-+vT/_[UPڳvT+ה{{*0ꍿ. 7#bNJgWnzFSCRߓ'kxƒE;|"hij ©oKgg*/%LA(Z&Fb!ֈډS M 3߻i"S8#n=ǮBݏ: b Sc҂L}*mNhowWkSyNƒ<#c۞|}$AH$* "T}̙fö́N+U'4V54e s')+YpcQMS@::wz18O=#a-<KkT'%>Yƺ_.h5L!HIF=ɶ(XBI\ck} GY"5XdYJjq h^HŶUsq+3ٹw~HFh=Ei0+/@i)"-3EolE77IU Q $@dk@DmVijSWfD3kXԎvqr|:WfVxݮ(:k83#VϏ~7'@2Xch9oe O>7c=K -MJ <2pl6~z[~i1>:Ibiqg r3E@x^ըpIq8I+Fܰ,D]cykS ^&WʶDnEM3`҄i$*!BC$ą|e^Yġo(M~:n!}eЙ@En@Py M"¤a 8HN_`"Ay|1wuٍ މwV-bLApjں]|F5Lw5lnB)Z@`!X N 2řeZw\65؁iQLh9Slpt>^{CG+I1|Gӗo&a b2&Il6(*/i Q0p ~f1cLk?()Cy"ŠLPt7t玗NbIc?#ւwʎiÑncG8vD$*mB5㧇O} .78~*#LMw #>& r p]-wbfv:xa3Fsa5ݏ-եu۫~= "C iShg/̀bÍƌ3`t>EWSsW1+YAy Rmx;O!݇V& $I<_"&s}kK+WWTYtn]W yUi1`@``Efr8,HIf*Xydo1 H0Z _9vAsp-TWu]sw3anD`"DL#2AZ`I^&6X_Sx!ߊ[cg}В-MS8BƺT 3~Gx w ׃@y BbY5| c6u6̿IENDB`anyremote-6.7.1/doc-html/data/icons/no.png0000644000232200023220000000271212061426051020752 0ustar debalancedebalancePNG  IHDR szzIDATx^ŗmlSs\b hK+%uJ@_UmRu]5MP?LCLHSaB@}aLD6B '$UYEia $qk_su}eYu~#9Os}7oJpDU!F$ax( O8+Pw@=` EJ߿<8\jQ _SfE 8,(ldF%nEB"UX | AK﹛]wbXo0{!<"^ Jj  Jq?]ھ "C(*!׿a?$%Ĉ%_*+!£@5{f183IN'a#r@Γҽ}bT5~ގ&DXCz*?IƭH"> w%TJR#=Dc1T>O?i{14#- a?y !C3ؽ+jE݁0v=uk$wcz5y HS,uK^ظ Ti sEeйs0Ř#ԣ@^\޶J{ߡqFʴ>0jY/(7LR&Qw]*W`7!sM/X,VpA:erB01*0TPnlJn~}{C%;kU)J!O=b$[[ 1q%V= dh0 <) RwVY (ƚ*˯wq?@+HFȃLDd!};HWV3TT eܼEkq}P_@ب )"yij<:>DXQbp9" ,D]ߟ '\"=Fi(€$d0wp@?CA6Ҕ8 FP`=Dge5{8o:=G 1YtO/|y=ؙ,DMvt Y /9p@@-w#[)ţT2B\#W?팞ƀ86kb#y㗇X}p7M1 tpFh&QRp@E̽[b,۽ ./y_tx9:p툜K yܕN0Oil\bf3˖fRpWUyM'P(Jؗ>2|B 6'w@uk lfuuUgnf s m<[@Tbx.D-GS\/8;zH~ /!4?Yw2;$ FAs@(?VjT+pîc3Z=IENDB`anyremote-6.7.1/doc-html/data/icons/default.png0000644000232200023220000000144612061426051021765 0ustar debalancedebalancePNG  IHDR szzIDATx^VMLQ~owM(DZG<ԋ1z <%z𧅃!!ݛ7EO㙈 Kȡ|zidd|nwJ yyhX?ZKR2ԙn><};Ԥs?o}=eb1sYȡ׮^mnn&A$HT<YLuN1z;orνu_wro0R]Q0XX`@w;g10I@(8–MLX Uqεӧ\sX63;s6{J$#;&R+'Avs3YK䤅,<<3;qQ< d?| ԸN\ D *@ɧsዥp8ˆ̲fo߽}{4ܕHW+䗵h kmmaPj3 u y;$>\ѝ0bQ*(HsYX9d z\>PEeL!uǭ@䈓s18D: Y@ mrUj}Yj(!BIDATx^TOYEiK D!1-bb$Lw }Ґnt "M@_ @F H+ @D7nh):T4SL왜sϝoΙE߽!5Vkk?<8C}}=3=%PPPpԩo>WwenF]8Ĕ<!uqk`jOzWx'dIBkk  8wd* [^~50^X[!e'O;a    e}гh,KR]=}7=niù$Cd5,z;Nf(."_.+A!!jU)vw܁Jow2C$̛ H9Hdp܂|X,gB Wb4hFA*: Te~A4A:'p5ڂJJJa4,vVBk _q:"D"D2H*/<(c(P5;WU:h<XJ_f[O$kU<-"K0JmMo͚>Ц$&?iܗ/+~tENˡ:_]nSqIDb'ACؘe;9D-ˡׯ^WN `{;cB?%6" Ţ+jiiqS![*(..VOZ\ mzZ;s;דd}9z0RxIENDB`anyremote-6.7.1/doc-html/data/icons/next.png0000644000232200023220000000227312061426051021316 0ustar debalancedebalancePNG  IHDR szzIDATx^mL[eǟBKR M>(v@ _A5͹3$ F2en$nو0-K/"8PDP!18CD~dZ(Rޖ?84 7~\E"{L[)\ў?ywSWdQ  YB! 9Cϓ&PCPgcX*@|IG0ِtcUtJ{&&& U'.O{nݺCB[="!L@3Rܻw0U /_u+? LLܼN#' Zz$s{aays,! }}Sr"x82]xbxʔ{Su/_Ԍ31jn96Սi姦ZntJN j{877@AW\44g{"z m]]{%N@TQE?Nְ% IENDB`anyremote-6.7.1/doc-html/data/icons/last.png0000644000232200023220000000213312061426051021276 0ustar debalancedebalancePNG  IHDR szz"IDATx^]hUgfvwvۦP55b+MBT0R4W⣏BRE7}__"T D*mmn6m2_=f]qRr=9̽<:Ƿ:Ji9c4ҍw-{pc(X!ie;;Z7D{OY ,` 4,Á ! "1)DM΢P_qtґ8}ep< Gvv=3c@֘PBj:Hxoj;op}o7<ąrO\HJ1a>gR~-W!E/$dކ+B0-AY hoNO}oMHR@U Sr:O/<.?A{WݷԌA7q"#@N3T uHg)m"H%(ZU T_;w3vN`UȻ %U|A'J?p?e[QU0geק{8AorAlc%G~2[αC,+_0_Fŏ.Gq:ZC-ϐ9SrQBaםQ|@\䬤˨&vj2gHfL>.F>)#709σ@9~ìOƝI~=r@(NKBҗ~;~zxeq>2I?d=YRE=K0Wnb 3e(ΣbrIi<)vᲬ?:,hͲ+ߎ%,`iIENDB`anyremote-6.7.1/doc-html/data/icons/record.png0000644000232200023220000000212012061426051021605 0ustar debalancedebalancePNG  IHDR szzIDATx^K\Wƿ}sUxqx B"҂ E%|0%( 1yh^*yjZɘ@I%̄!}HTK6 :N3>3/>f|^fsWŨb"Yn=~ wXeTo2 (;qBFY.Rs3/]ǣFn"Ŧ&>irߙޞ"rez eqPUpJ`mlD+,]44`y 8~a-u8L*d/ om}2mzGF" vwF Ơ򩘻$貖<ǣ09Y((Y`(}8”Ae2# sϞA/gK3t2QK€L7JK84a:[p8 UPky4y /`҆z i='x&̟M<(*\x1gwޠSd6?D՞ |ۛO pHKKǕ@IȆK.)8zgwϝd[[LO%Dn2ձ{b_53tr@&==rBfZjHh=`Eng~[W,eyy0.L,?vv8t.+*:3}cxݞ@Ck| PVkjɵ5cSVa7Ͷ)s?MM%GCc:+,#3g ##``F_@Ci2#jvO@G''+hIENDB`anyremote-6.7.1/doc-html/data/icons/left.png0000644000232200023220000000152212061426051021266 0ustar debalancedebalancePNG  IHDR szzIDATx^]H]ǟ3;1κkRJ&RJ] (t *]MWIQD{t﫫.*m3YEo39<}1[A!v }tS5Lê{̀@i[>|Fz P8@E%_:\ Ķ3, rELFcIbJIxY6.goTrKCW*-%cU/m՛\t˲]|?oURćiBp+?b-*)R,xa /@[w)0&m.EόR;tryvA%Lˡspr8G;:?¿BGhj2H4L4?cG-,vøUIENDB`anyremote-6.7.1/doc-html/data/icons/bottom.png0000644000232200023220000000176212061426051021646 0ustar debalancedebalancePNG  IHDR szzIDATx^W]hU>O31i-BiPZZ)P"P>IV|7V "BdtٝM;?;s\f]C1"g{={,?_1$"wpn삻V-ۆw 8&( HEi 3VJږ sKb_,J!)qh3Di?)ˤ$D8@"`g*;ORFDhl~G˹vn0 C!fԸÝ ggX;/vЃ0:P+%%ܻu[~s(u1`RYu~xbnSo=vV7jD!P-'[NзoSAA?<O o]=[\' r3:TJy S`~>SR}vXZ4:$tJ7sWKV!둮q%v/r-`w&{ (8ZyeslʼnW" h#uDhU̩&Sid=7.QZeO:'#h G''& ʼnJyx>m&w{ࡧ*??&z_:ջbL쬛8GKGx >vyoV0lSkc'[*Oߗ2zK1RI֕Ǚk:֗82\X'*[j }OxRRvB-؞Cu& L&M zi67/BF ыmI^#R2J$Gn^\ _ O  I<)I-i{bZ{Q(]V<=] oX Lpqxճi%m2-gT0nEpw*}ڄ?_ J0澳y @P]3Gť.>-2  '`Vq1,Iw;,tD$qSV^k@LT.Aymۦ[]NfF#aQueeN(l ܴMqg-[=2@P%GYqA|&e0f?/>݀ us-9ԧ hACmD_ÀAY1`p{֑Z7{e.ڛ P54[wR%QK:b_{Ml=ܴbA\N5m-̈́:OלVT/y=^ǬL"x<2Adw|xբT64;1Ypvw%-!ىPG /.3$B$à٣ ÌiJ*Қ4L?J@Bl= p8e;N\fp]r{vpأlx :DZkYzUwkk<̌  $Lzm;^<ÌƆ[aM6|~TӘK2JM?yw>7&$?5/ÏSO_[Vv/bBAŹO"[DwPx2csZ|8fBR\(zGQf獿{v1Ĕ3 A-,}cs?bYZS&6t cxD̈!Fm?^-ƍ I #(ffc$sh=gbA4@2ڋ]/4G59e("G4,myE\olo~yˁmu[ h[Ѱe[o1|"Kay5`,2CY.1TB&S\e)IENDB`anyremote-6.7.1/doc-html/data/icons/prev.png0000644000232200023220000000224012061426051021306 0ustar debalancedebalancePNG  IHDR szzgIDATx^[LGgwk{&-֦MBH) -D @+MD*1}CH$'1-)ᡂ"ZTJls)UFgUTQEe3srI4r1 ^צv59t-I!o6)+}XOa_ۥJ(`2HKI(3+q0=zbh8bZ-Yǯ׽gQff;=;ji8&3);;[{#7DsGm.WńmlRܢSϕ+xAЎܦp TXXaC3X@~/ x+aFFe9A+iʀ?<- 0@?bcc ʊ- d+b` c1XQʏڮQdn=W";g' & vӧPxEAnjQ`%P(0M5΢"nG~T< .@(tܯzWKKyWY &H:@Rjy <-&S瑬v@ϔ V@AH 6?䂀 L+X b^<˒"4DжSp6>3UXDjQDBds4ݠY\H$QSp ׎W}szkjiq*O9y?|pEoo:]`ZD3 %%%˃ӓwhm̲Í,rg-YBUVVҤ)wZz# &0̰F?iթvGq4nͿ'$ֆɩqo JK}$IS,.A\Z$t=>>nBxQ嬧׹s,qQ`7~hhHw}lwO' iq߬@LL YY%A ;??5335pn)|I+k؋]>@߽fs%Y"yB˞z:ꬆ~mƏC‚80؟B@TQE?iDIENDB`anyremote-6.7.1/doc-html/data/icons/mute.png0000644000232200023220000000320212061426051021303 0ustar debalancedebalancePNG  IHDR szzIIDATx^VmL=߇QI~LD*]M6sZͤK?-ebF]ź֪-U@vPc9[( A༇~~K$3^o<$uww/qң'Z;R{Z[[m[:{F#.֏9w wHT? 9񱸴Z^sS=5`KTe]¡fAg C0޺u1Դ/z%/7g?. B`D[[…E*+{8ҥKP ^l6QHl3Lf/p'~"y*Dgw'CH;>˫7($~4Sy ^yeN4x s x>,u ##l޼|\և@/ 4 Np9V\dY*e~CzAj ,:u'u! aQ4"4n؁W~rÆ O 8n|xC`73Pڌixn*d _/_*^0;;iSSSLU@THfY\ EI!|)xOP!34va ǓkD"0{{i < E_C4qנj*؁_YwVqM,WF[op"[NYO%I(qS$?Dt]$&J*(@42L@EMfZ,dF;ۊy)0M@ͪĄ2!J-Tu1縢 Q$(1dRY0Y0\%QQ22dBt 1Q #q4,8z :LY#:ݽ{9t*gr&79߇d pB;&p4)Lo 3@jNmMH ,h񕫗I_jxx%V6cPD5! nBrf$ l29! WW R|ę4ߣ̳OpѢ\n1Ȑ  .((amۍķs|cO55}"څ_3R)sȂ K(ʦ``&D˅u}>#`L$❭bk@Ytj*++ (SBtE:L;20DL'g:zPhHd8~zõjE;"}o;{M~ڻgnosO{0w%AQ%6W/,)}b{An&L{y4yi |3>;95I`Ec0Pq4LfLLp:u;^z$$)JpMBAL}T2E7d_|8+`EuԾ<\3R~`0tQN=m:H7>V&Fvn0sI"7nH4/> Od2^x6La)hG D"`$Y5U3P3Nʀ?êO2u)=7oƵQwZ%Yn,//_#fdK;57DDbeqT ; BGF_zʈdf/p@Wb67J$-LAPYYY#JF ($,p3ۿޱ0BAEJE0+hHDcZ{BHTE$}g` d;Q rrp|{aނ&A⪟:z5ZB!uj}foaX%7~7~%;k__S 3^+XQYSSCQp8&ŔIENDB`anyremote-6.7.1/doc-html/data/icons/exit.png0000644000232200023220000000330312061426051021304 0ustar debalancedebalancePNG  IHDR szzIDATx^WKl==`{cX"D%# v@PEHDz$D`Xb <ӓ1<`m|2cxzfrnti=JA9UuWߪs[\.M J ]rgO{a&Rhē%XIh=w)ʛׯA }LY]`Ut>ۙ 9Vߏ,J̝ĝ;qG(6'(EijBl,Q_7oֆ "+oJp 5]Ɯ#:arLX 7n@3р@l%Csȑr%ZQ8.zyUc{P*7E3ĸg2sXp0ꢑ,ڻ5lՕ`}HD|xɹR;X6]۶<~C1,zB@ƍtMrw~!K\k7{6<8LjÇs::^}{V!WvH!? y0 E p1/ѿx1"#2Vi7#WՕyȭkٳH],y-UUK依0wB !Yw@``)XL ?ƹxϷn+z'`| &t)_|eX)i:ʃA!×6Rܽz5 0fX~;w7KS!R @I#,^Rt-[L+h+/. ᰗy~r2A{ ";bݭp/YdeݡZ \UB5Kil4x^WN^Ċ '6º.%Vȃc\2?@/&&F0Fyg_VȥNRDꙭ*O%rBDMElj=EfIENDB`anyremote-6.7.1/doc-html/data/icons/folder.png0000644000232200023220000000357712061426051021623 0ustar debalancedebalancePNG  IHDR szzFIDATx^{lU?{{oo便OZZödhZ)G1$cfH|%N]\p @y9PhmRhP uޥ'cI>rNAo Sfڕ8] X"+-Pw~ԌUfӠ˜yK=r^R)[郜,SM 80tKgd+).#x+e]<3g젾A瘚omؑJo]~z_tFfBf"~g*jrɼ>7*DM&I[bt0X,I_iA9^l>VGP7M,JpB+f^z:7yo?*آ.dKK\&mjTu Š8k?d\2:kRZhB /fXbF?A7nFGC|HWͳD (+A ObO{Y0. 9FoqiV&Mer &NWj)R@g V:wH4 xd Op' :FX`4#JUn|] !! }㘇I<7!KM`fpXvtMtj$?8"*7%vA#'Ι[CcKCtٮ 5.(/Zu Gn YTMB@躂bT@  N,nzeHRܯ/5<<8FFPv]uC3(7ZB5`X *wڸ7շ= pn. ^C5Իx|EaIPh~Dͪ=Nw" _9PkSMUsuS%jC7puVʅLE@`OUX}[u蠏!.q4 XKR]-)f˓EV㳬IONДM8z1Sbg\cR^oDmymvvQ y)?E(/]- 4{5&hlK hjY0h0O1>GZm J+e_wyYhڰ"@7^38R-v^5Y>ݫM^o/@[]ݩErg~zp5u: 5M "︦ 7Lch^-Sr +ѓgw6:TfjܲPLf #DsBWHՂihu k7]uϬ+ί)Wu]TCGNAՠ + 43<>\JU`HӋZoĶ5u_lTncu䂗3\|nޤLwf!QRRV^8[Q XMF,%Dw\䋽>~ĕ gBCeo1Ё GxXQ|v{cuܛf勲Obӑ:P >rEzׁ@>bo|s(XYKΗ;tY w;<[h   k&HIIENDB`anyremote-6.7.1/doc-html/data/icons/pause.png0000644000232200023220000000134012061426051021447 0ustar debalancedebalancePNG  IHDR szzIDATx^KkAO=;cf&3!! KwwѬEB1W7IR^viqܻ\/:q}1E`[7g]Z3'Li_,cԵOfXtCf6VST2BV< &cR)cdX''[ijy[O`kx9w+ǔm;u1!) %=l`цC^Xjo| Iim@9RJ(B0D_?`Uj@;Mmqc#2;Z((#J%Ja$/XS$0oD󑔂RRR!5, c6ICy0Fðp[hK3Qd1jZz@9΀W44+wW )/`6E"dLwC=IAmm}/$Kbq`3+[9ml8v <_YY {~bctC#/Ёg-)%IENDB`anyremote-6.7.1/doc-html/data/icons/favorites.png0000644000232200023220000000255312061426051022343 0ustar debalancedebalancePNG  IHDR szz2IDATx^ylVUsu_֡ uXʖ aS2 D-ˀJf,8j0#'HTf``j`]hi~mI4_x=\B/sx>R; o @ء!U0U@l%Ͼ`=2cP|ﱕ%=HyhF 96PRְ Nh2lA9kR 6*6E8 Dډsh0G3rFDN $ere7y W![iIwF $_"dbDH&;;HUA i̍lu/Z ɋ.Zʰ*M hzB{]ٷSsJrcp󘸉B6$$TR"O>i`=oAD 8%f[5*?FS9M!N@(j:C]|ZwE٨hei@Q (5 nݗ*HhHQYV{Yv/$%@MP pYsO%a{ljhE27';x'ц^aНoBH ҫ5k '{xA mqE/?44ECP{IYP:=L9mf}{4fcNfS,+ʂ E/d9jzRWD>> 4#6v(PhYް) @K>T3he-\>@ti*)-m@EAqqֻ)oZ/\.prYV5: B7=RE}L@x >U1a3D=e@\8 I@s"S82d@]NCVHK8ѩHiʆR\vw{~oRϼ\*"F@$q){5#iVhR{:4s;^_8G@9 6 H#\rcFH BKo0IS$p"{4J]D)B8 (9K*BH"Ώg!N֝OÙ|ldH*2c v#~f4r, =WO/@C#11kSX & { ;×ZqIENDB`anyremote-6.7.1/doc-html/data/icons/vol_up.png0000644000232200023220000000342612061426051021645 0ustar debalancedebalancePNG  IHDR szzIDATx^Vkl\G=slǻ[?vcZ?Bq+PJ!Z$!Z -4EECRɃ8!Vb8ڵC"Ȗdwǽw N۳:v|3wq;mڏnxnϿyӽ^Z[[OsF=]Fۉ=\Blk5UDS2ilY^7χ.'QiB/@3d}{N@/_ZwWeWXyyJKH&QLt 4*QizSc [f] PbA(-/#aHRx'eĉ L$(!F2#AdCo]PPp?\zUށYVk+WV`](NT:5`0e%BԆyĨfH\ ]HL >WǮ%C*(7eVY kY h) 3ӘMB#1\H@H&bL33>JJQ );Yru?s.>6 'I2Rxf>]U )q(r(%k[2}GELD~cdxXniD;faEY~N4?N$ c @7KCMOdxdd\PFHw4nZ]IA4!rh|{"3`{5|'-#a4 /jܼ\. A0;7˯N3*,4~=ˏPhDD6\ $ A'C2n1#"=馌NF{,Edl\[:Y׿tXGX58?PSSsy )&I9M䉘wwW!D- w5p M!Q[55'kVOdtpvoDJ$d#7ږ9dz%l*fԱѱ.~K5DA=g<,lߴeuBY J3ILxhoWwWP^ɚ.{!c 199لE)7s=B`ldzDb!pG}/ŢSW % rsrz:ʗقŁ-jmCS@ >ZO>iqEj/ǿh7c}ݹ'~w5g~ȣ.>~ ?͍eٸXp ~WcGG;?\/OmIENDB`anyremote-6.7.1/doc-html/data/icons/click_icon.png0000644000232200023220000000022112061426051022424 0ustar debalancedebalancePNG  IHDR szzXIDATx^ױ 0 Dяe1 d $baeĿ;w7V ;=do>\p~ @ Jj\7 gIENDB`anyremote-6.7.1/doc-html/data/icons/top.png0000644000232200023220000000210612061426051021135 0ustar debalancedebalancePNG  IHDR szz IDATx^WOU; l))~J0UĚ4F[HSI- .Q_5}0&C U苦`HL4kt[>",s0\72%˃{{93߃! Ǫ(gxD9e]׭ |ƩT z*?;{Td }XZ'p2 1? bſdž|<@N"*@p`D@X~Jo !! `c!6欯4`ʬ(svSasΦzPmzꥷɋi28(=Pnk}@̜9={/S2}rRK ΀XRp}=zC h틈e` mڞ~K nlX `0ABJeXyx>}g߼WL ~ݎP߲s}"[yeE AkX7„GjhH83]-\S[Ur`㺆jfW@˘y-55t΃`9i("KȌ!9eeԸ,9?N?hsʲw~z Ϥ"M2yNaAdx&AIF-UPD BΕl6Ņח{|߇ S}d] p*5q48dw sZSZ:{s]uEqy\`M}Qm'KH((P0@͏ӾͲ-Bw SvF^5Ξ04\RG/CiC Gݰ @$F]^T7_ŵ Md, tjIg=ؖXZ^^0B+BC8[Ʋ-]xK牘}GVS{H饃>Q2DS4RCRNq flotw E_L ٻ (SIac0 .#ڶ5hEeE{ںf ߫w50w֋c$S/Nۭw?gvG"HA U \-B6ruo80k/7+]o_ r;ԉ˙Q˶MAMh$އH040'e:\\(I_|vcGo1͂MkYTH͚gZb/B/u/ptFεuwO"q"U.+PIjk45+5WjjYoUn}5?,mnU߽tMw$*[ZS)hL MLcDFEԈ &G9`gBir"" ̡qLnj_"l(OIENDB`anyremote-6.7.1/doc-html/data/icons/right.png0000644000232200023220000000154312061426051021454 0ustar debalancedebalancePNG  IHDR szz*IDATx^_kcEƟd{Z6j6M? eQ,a x!V\VF/BDЛPě,{iM'IΙׅLSI 3g93//-y?4pc:8"0ޢ'j HDv8~ w4׀t~y֥x s΍ X -$3|Ӟk/%/X Y(dZNhxlҭ+~gj@2Dk8UMɴFFΌkK} Ah @;g ~Q 2E3ixsB &'We (њ7Q Ri: *MMg+%2%nW9JVIᓝ \ZJٕq!}_B8 3kנ,ˁq`I&9Csf] hc)A3pu0 @w7ѳhְ <6>@EJZ@bqoGXvk z_'g]@ W4 ;T2 }oQ.=7Ķ~.XXZT#s! ;M: JCξ~"1BuuL)*h{~UM]來ir$u:kTCv̊~U`?<% _m?LN 坩'hs4݁pީL}ly#tbMЁ j)ԓzg;zs' A@y{$ `ژJRIK>^J4; ێR)@*~a?OֵsuvTJ@9_ER ®p[VRN^EB ֯&UC^fl %ZRL02{v֬K'_ܺXk(h$~E/&Oj!os-L>M^iOL{H{:/|ţR(pV)&0Dym+'r&@q2L}5j="ZTtI Ɣ(_P-cqVA4qw8I e٤~ʲlo3Jb[3kUy[q[&lmIENDB`anyremote-6.7.1/doc-html/data/icons/forward.png0000644000232200023220000000173712061426051022010 0ustar debalancedebalancePNG  IHDR szzIDATx^[L#Uϴs@1nn{tA(H ࢖-7E_ Ƹ^vqyX.M4ƒ `@B0l| adBt:9U4L;NQ2(Np XM0K6eYY Y(z(IRb:Ʉ$kۯeftnn.|$I պ.^*u2;d0\W _߼qqfj=t:9// x^x6O씮 ܶAEO1==~xv2~.8w$xeS)tUޡp4jjj:khhPEp=̿x_ccga5`!2ǚ|b8C ~00piyA)K_QT%FvlmmF`x %cwUO EQ#uj#Gw.dOXM(2*VѬIENDB`anyremote-6.7.1/doc-html/data/icons/first.png0000644000232200023220000000227012061426051021464 0ustar debalancedebalancePNG  IHDR szzIDATx^V_L>.Pc"bA%?>"*Q_gcJM4FHCٔ@.,,ܽt;+)˓;;9|݁*:@i`fY`f $v>=xᥳ9>>&0VH9<`0H 46mpi>UT[UraW۝`x%mQ]ťe K-q؂Dܶ>ЯýZsmLbyf-\Tߔ(h뇹}ˍ UQ^LR.DQZ$`ZqZ>79CP;տsu|snav_=פtHu֜'Iu´?u;'^xP3l'Ȗmm(9ku 8 Y(?:t\~5!-.1DxEqIbT.ɜΦ\pc3+8&I%D"0S '4xaXY 29Y0[2űUe;>tOΆ 2fl" `ڪa-RQphWEO ۥ'AUY b'Q=MW {*3Tiq)B[AFAŁDk#g^~cⓚW h.lLS5`0/ʢ ݯ/0/S&"]IΆap  S<] ~JQ~l'QZĤ#-DLLOĤ+by3|H$uQqQ’F e\'Ca\yH+5_(;!Gڕ KݣS}GJJK xsրد = b;?Z`܌$P[z]gҲ iO00"Q,PL հ*NȚ;MQ \_v@ 1_CbV&b𲵣1__^xSQAǮ]ogcAQ d1~ZY])|\\ܻX@x~a}}윬,$5_d-r)…棷KoiT)ˋI]nZ{7c9.*:(Haf먨% T||;| <6:ǔ!Z0BCCC|iiyl255Dz**GMQ<%G)p,Cspn~(wY/ 4 ofE}(WDL&.,}g6 ARf(MաCC@$"Ȓ f@׮~r,KO[[۟ `0x%U CD@T@S-deZx<pk&`k@8}Fވ!5髖,"T$L揓rc^Bd\ ~}PY F.yUՎvEi?IENDB`anyremote-6.7.1/doc-html/data/icons/up.png0000644000232200023220000000144612061426051020765 0ustar debalancedebalancePNG  IHDR szzIDATx^MO]NPvvƠlŅFML |3qeBH&B.|TR(SJzg2eh+t[ g{~3vP"y+O“_>- S$&RJG#a.3n.z O<.bl8_LJ=~]Rcmnlz +-0Y`j6fnldJܫ(!>!hDW(rzi˳Xަ`\i܎%~8n)imyм\eHCA<#z%Drv).sN0?M&yk;ȬwY(NnlXxy}4*y6FD:R(> %RgWGzbDYv/0ޛI)Fm@ IpۮΐMl4 <,pa9;@R8'/#x54UP4Q*>~^8烾)ArXdײ ˿)q, }E`ZB#dDnW, oB}Cm@OH;Yyzb0t|bZ Z0bUO釰7` lN$U):n/ @iɳ4"C3}*HkZKQU[vA]D! 5fI2beٯZ*IENDB`anyremote-6.7.1/doc-html/data/icons/plus.png0000644000232200023220000000112512061426051021316 0ustar debalancedebalancePNG  IHDR szzIDATx^핽OSa|)$ QapэŅMMtv/@GqdR8"hT w^8 Y M [Mi4,gs[!2={/?N)- $kĉ @] Y*wA B.O&Mqe\@l||~IHB];O%s#9wڴG2"IENDB`anyremote-6.7.1/doc-html/data/icons/fit.png0000644000232200023220000000427712061426051021130 0ustar debalancedebalancePNG  IHDR szzIDATx^W lgglq/g0ؾG06Ƙ(EM @$h"V)ԨMۄ&jڨETUDMx$ m I a_|wLw1)IU;|_`Qc^Ň fw "9`a8p:;i//-Zק!u~ptZ)P[G/uz`lٲMӧ[Wguù-&h$y>Q)1`(9%Ož>>{1 7!'Dim#6ٿoK"H%uͯ_JIoZ"K""őuVwU_T`sfUgd]Q7η]hLD<F)?rz| ˲L|fY\~D)*@=Ѽ`iO6mڤ#kVI_`b#oN (YzR2Jg=W#-SHq Ī^'LBTmy<|J3(: I)AJ yRј@Ytnw4ͩHc͗\j6щ>$@Iǟ6 +7+_mMȽ wNgk!&M7(PRY:"uopR 2 @O~ؘAùWue^ɸc3g>ݸq=dqßo dpgG@ f@R u zoZd֣a_;FI^N倕Z-<#&WWWFEq?sT ~%?(snY8T$PvWrA+p;GK^Z|leaW~NhPETZZRo?ɚ"KS^˅TAa# ze0u zVgf}^nvueE9$$T3 -7Zv{0_֢w,qL10ݷ:hOo'.t{w܅˾'[oy~+̇^ܶcUeﶶ?e2v.+XZ ZMythxZڮ9c/Nj(z?n(_oSyN/stʄ8+L,Lw aN3L&cc, & **VBfڵwIY3r;L#La.J #ɠ;wCcc#.2෿-? lҥ LՅTݞJN:N: [n1%K @H D@H8/~/۞dя~ySN9]wݸX/&cz){xoC%O L;}k۱sN+ioow˝wމ={-[11B $L-/6olzxqE_=ݪ믿mo{w-b wnpwt,W_}5Nի('7 <ǩ믿-|w@ P*j} ÐR;U^7t>O_27ꫯ>1=zV´i܌t,ؼy3~=nfr-ؼy3."|u]G00qkƔخ]puaΜ9X`}ܪU#ȑ#gVjٸ馛X6TKo_j`ʕXr%`ѢE"pPbB\.۶h"|ڵkq r vލ3g{) 5҂իWc۶m E;>^,{nýko{)&Xpz ǂ+>(n2sѿ @9@@ $"@@ $*bڵ?۶h"]2@H8np.䒲ZZZ*^& w?)t1{7{֮]ktuuo)vZZ vn6,Z^{-n! *:::>,~a\tEUֆ 606n܈kP__ٳg^7on?o;wć?av? Uť^_|K,z߾>lذp}Yb> /X~=ࡇК'Z ;s춋/@H8.Յ>p 1[rtRR)SЛK $?pl67袭 ^{-q%; ‡#^ PS4_WW׸K//]T~tttUVɥK=D?@ T"@@ $"@@8W$72c7o\F|Dx&@B`0iAH  aR`D!@ Q1҅"Ap"ȏ@ OW U xS~e>֝x#?w@j-RR}Dkk+}"B||\BA CH"'c_)ϕ)@( & tvvy晘;w.>#L:3/E,YK,A*0lق^z BIY}M豭hnnWX/| G MH[l, GÊ+fp }(Lagg?YΝ;{xS>O>d;~Xnh7PJ0 Q,1uTr-Xd dӃL&l6[lA2e'd!V0'~hkk}? 6oތu}.|@WW|߷|R__ O[nh)J5uuuG>/---H&ү'x"j˿˄I.B7tO _Wco__. \swމ_W}WaUdR5Eoŗe$ " C oy[pB?GCFW|s^>^0eL:{2c X{/k{ HBqۿ[kU]F {*Dcc#0D6EP's P]v. /Ě5k022}{!^uU`᪫|s?y]v^s5'ŋq뭷⩧>o»>O24  dC6{/<Ţ r9 >}:֬YL&iӦn(\.}gAXxBaZO$HRH&hmm3<+}{Z=O8t~ӟ'\x1wB6m}߿>/f|`ǝ~ظq#FGGÏ~#Y޽{q'?} ?/})>n駟c [nE&6?` |bk@v_B @ g\w|pK|\FFFm$2c  աDb(Sb֬Y/~aExF9?mۆOzcc#ڰtR\zơCp9ફBKK mۆ g cڵؿղ2rRB`J)k.x9x˖-ַQ|XbZZZps=6lL&0ގ={۷nZ[ZZb9d2}6mڄ&0ƽ}y`aH CH a(!4!iα ottCCCfcy?::: @*B]]ݤ!@ىO>7ofިK`O<ys9x0k,p hoo;v?itww /[>{.7b044XO4#߅YD1u*0,Bş/L#7:\.|>a# ɠT tD}! C̙3Ǟ###ؾ};fϞ-[L8F;?*m۶'zzz|e;7UNh088h%fccc%000N>d2UCً@zF5~͇g֬Yx6c PB(&z`ҍhY088~DuuuG2y!9$9pl۶JW֬Y˗#L"⮻¶m*3調JhjjX~=6oތE}_`WW^z 𖷼wwXڵk188/}K8z!%?_^Ppiw7_B~?"H[ =:B=c xرcߏbD"477dҪ'x=v uG-o,Z7x-}R)R)0ߏ;|rfΜ !FFFؾ};nVU 0V?YH$ԪM˦M瞛ndkR"HsV^ 9zzz|ߏ/ab֭xG*Lp_gX~=8ؼy36n܈F477W4RB WjEь1SO>1رs1)A\.z[?<< !<σ( x衇}v#HI^UR,N8|/.غu+֭[>D"?_~97nWՊI.QXp!/_~܇W>vm0{lR)H)w^ф+9IuwwO(}'nf:tvۘFe]"S PXya< ~NX^zAWKn ahM)|Ba=_\_%YՊ\ b_SVrRIBE"DEr@ 8<_)9<K(f c`E.FE,8m2bMʢkl,‹=Tt,ˉSB)aPDPkI $/HO%o)a- q2(dKQ2N56W.raĝ̡Emv Ƙ&1BRBP AaGX, (EK"@<Ϸ%dbs9qE$giLԕSFsYJMqFEXRAC ujLɲ)׊8ҥ%?M.QB*hZðX@" ;?+lb\|pS4d$" #)&Ib-`5HW\i[i8-%d1-#x$jA XmTbAP@P(P^js~2d~"Svf踧^W!4y(5Tdě %]ee+%9ޱ0\:(.p9QZDhQj8(?!B^IK$H$UX. H!ʨV7Z. :JIud[dՔ_ 2]dSģ>3RLRR"B 2x= ( 'H$DkLŬ 99 AR+%Adl7N$g؄:EP/ZC}sT2;eQoVEX4bXPC al 8aW}][ʺ,!x\EVfkVv,.e_F²ƒt s ,vr143,FײT^\)r QJd(TސȐVeB0τ|B" A`s\sq,Nx :-)ffLv+ Kŝ%dw,4'ZI)';ﲔo3d곲 L)Cӡ"P< yuNjKisz8{0"0 1Ȱ؂Fʉӭ9)SQCPU1n%%=+m=~~vIV"DdL+rRdy JbJb㉾r ,w,\O><VR )DD7y (" @dUUmcaY%JU"8 T_Ɖc'lK*ѲsP\,Ya.5y gSՊv" Ӓx{=߃,^a p(c՘C,PpSJPJ4WB*?YQQFt_)Mc#lSi$SHH#5,@!3|kŧM]u^RB[;(C_%a'X4|$j0q4۳ #PȏjR,AcrdGGH' c)9&HHL)3qxg+j Ft0f@:!Hh'8@ 03a|B0 ܸDGdGHx}3tRzu*զ`:% mЪD4f30* `$\B Gn DgQr\92H3U!xQ@팎0TNѺB"?:0 QSS<$SuH׳,Ix^"q`,y:jrcP&lH鏹鹨N=&u+Q- Ғ Y4׌4$-b",*b>^$@A˅(€ސk2D:/Ysq|? ֝:2g-"!DutiU_s8&.%Jå)fBD>Y񟺯86(Bl^+`td|N"@dL [8'%KPŢϒ&3e8$a4͎ܝ]ivѴtUQU)36,(| Cv8c }__Vj zrgV0OvTD# =eΪ=SDȸQ, 0l c⃫W~WYxXKrhBpVEr{$z$ 0,u) YR^_vF\Z0g-w*ĆH ۭk9;s,}r/NxqyB*E'4.yUzy"<φ"E"2 Gy\(3.-BbLjWcps|*Qq%$*ĹPv[v!LFZsU]"+ϹbHE*"0 T7 UU jC|jHdjGv1D"H<_$;VTSfrPʢI +aih섺D&]) mU@H85O`T,fC-] )BbW/Аdz S>]eN3n^8c=k\g閏u}13R0+DBBTaD4q Kg8e7Rx"@Ÿr6dd<[ LEw!9T":Rv"@«FP eK(k*2U2d:; Bv{# .@ &^oS&Ie'KtB_:AVFbt w!޾X!(C ?E\ Ѥ'1͖mc!bEBƿ9ݢ%A 3=N5aMLBA1bA  y TTP$g͸.;am`.{V20T_t:ZQ/d(2R2 Aru&uH $9%:ker{Fi0'B3ǐ4*>&FAmр)cVۋ^ A !tP9:D1GC` e- |EtLf@ Bt3 l!g17`ܳ pέrPX)F/#y( ( c&$Lb|q5b`L kK-,ٕV/qpc-p\I2y =yݧ92!PUnh (@`VFv&a#A}Rm7E҉dcNv"\3O%7`ILcrb_X߯Kx'8҆ޫVֳqs5 FD~"@k𵨵!{~fWN $%[@  @  uAp'b?o>͛sfc̙=e%*#r/hw7 *x֦s@@^0g8N9.}a`\ʒIjΠ> Eu9CJ={㤔Ms>Y3;qEdb_>}c}ؿwۏ={b=}V_cxދ~#XdT9C+жI7{#9|"FMQ!S_',^\ݑ Kf1 ѣ 3EنlO0sݱt߲ߜsp'PHQ!we,? Q! Viks?PLU%2~b3ƐL$+?e qYaV1CW1`՟7E !J+v^01th޵o?/} K/m1c*JNH@^,MىmH-G E"ttQq8(p;~ٲlX\ d -Bq #@s᣸S?<$}_g|ކZۿ߆ƦJI-cԉن%,vLdO:gҏ9$+?f$8Kp}a4tD& ̏@#z9C:\sEX - @OO/^}IJ}m٘ P: HHvddЛɠ /Q2L("#"ڦrz:% 3Hɜ/dW@(B>bHARRtXdiu=vL6Ӧv`=˖1d`l\x~_ OH08ӱn!]W_8>hnj?j79"㿧`,AVɏL2k23gQsy A!#P ;D(uQ)%s"a`xSFI)42Ԫ6DKK+ⷿM%rlwÒGõWDSO=>H9эIJ;mxb~94@Mc)"3D(9Q6uY2v3DTH^P%2>8?/c&Ж(F !Я74e=Pǵ5W/޳JE&@@VcǎtƠB^z1nmxb?4i#K5088J-&ZeL]SÈyxE.ssM~ΘL=25iR}BJR ӦNőn0ԯ6>3<]m&ԙˈ9MK)TH)T.9$BW=܋0xVC {9DD Tċ۶b[5a}&";,*dn_&%`Z  C 8K0G8%)Ngf&0g܎4S2.z{\[كK0F ( aF$r`s4)d!O"yJ@P{ ܋3ἕ1Ξ;Dsլ ,I p (! $$@q$}0ϋ&bh_" EAֶ6a!IqMxy.sVL܎ aXTqZ) RjBZo_|E>|ӧOp}'$L^ۉƍ 9dkSJLFDl pBQ0i(T8-BE+4 L KW0dNcBeB@,BDGG " 1Mnzn`_}JwLZ񊰨&1/FRz8B6ÏwŸ3O81uT$ɚ~`*N҆jEa/WyvLv1.C  ғJ JTbGa2Y%xBs"[s0!mapg  Ti8|"mHyIx МY*B0u[(󔩃/pb$vUԓƦF444`xxN"ɉ9sjLKlv &- 2irrЖP'd:<2'/^SSObm`P+ٜdOKM89`^’Hգk455 hll@cCҩFFG141I0. V &?>׬i{m;vEwoZ[1'(vw~ٌZX聱Ж 5'Zf̘NH8yUJ`,igDҊ3. 8|]Qayщތ7?x\?{ߋ{3;;1w3usZGvgɇN #~1iԓpқ8ߏ~ / J#,m !xDaoOmIH8Y[ DM 3nO&uBiX,j 5jP)YYEN&=s:1kTEywnC^">Z DQo&<ϫ-F :cB`0@P`2 >VPVkEy@]YR&0wl chx8^hwV;S;&Xu Hu) @r0(W=$͝64 MюGsƮ}100lv}طzrz1S1{k SZO'ٵd! Wg%=TL" *=l'fׁY)P $2RMcӋJ0 B !"DX@X,hO>R-d#5=T npp/lۮW#}~m*%D@EAa1v+yal3IZFbF8gN81UH {OjPܟ6Ӫث )6'ℌ\ 97*ha%bks"ڋ :ĪCtRY" 'i!BDƥ#3c$'cGn v*!9 u;1O_.b?vsk61A[\nKlcCTiT:iUY\'0$!R.IRh.['dug)GlL8tWZWB ۟   )gU}j$tL 81e1PO'rz]ᴀ1fէ IDAT  :RFEb>dPcClf t&IW\,NSҺP0P% JV:?|yP2LI_ʟ:Gɸ+c%15RL81sfMov_bD]:]_cqzL2埧OT)"i+y:;ZRKV:G CK4qI:gYX#ڞJ8,2=*hf.3f]r 1} kٲ [MzF-aD/^v&pT=|-G&aڔi?wVhԎp@z4ݖ*.ʘѩ! c8kRx &*-pvctO8peܱ:)#U'݃P<:f 5o7K.F]ZA\8rA/Pd=[1mb&z{jSӉ'$j?gQʜt B2ƐT )KX}X}y}(*+C00(a,Fq> 9$^1nTn֝VY;0vg4) h Ch1dЄJiضy:u 9J'j8N@RU{Hpq)'=ry"6oۅPNVq)Al@ M) Eu&_G3X4~Omǻ/>"KgEd |atU$B_re3fxN "ɁYj +%̂Q%8q)8ga(mxn6*DؿвưpL;^Gyn9ͱm/9/pH^>t>g1Ķ7S8<:2נpaLM?3FrxԹei \%3|B 047!nBP@P( ^INtǬѪ1\֪Ws?t?BCXzHc}uMCG{k<lڲEjTFa)PCÏM cgOC/ѼQT3wb>|Ӫjalq;bZ "5?͖-w Ƨ^'h3+೛`ttXfn,*/t.NAXC8ga…1zт98al hnFAbK;@__Je%uaVDݗۗ׿-\|[q9#9 ueķ{>{.65Jp`)%z1`'\wn ԥEj+(HF-, D㸰 ] gqtǞ%.s_h꯰U9FecyE9PĈPP PH .ucBXkH߾EN4WHtcB890wn؟폟l[8r?[$yt4V! ]i2 #fOFa%0x],hmuVҦХDPZEx тG埁_hD 8c&M#1}9~XC-u.~~Dj`suCWDmOV*F6L >첄DcnҲe, Lַ؈Wk 'fϮYhY\Ec,MOt Kz[]V~T^C,[ZU?7vmD[loVz,nt)3)@wwmX-N̜Y[trrx2;qEdh]Lne{d ]$ea$e2ٮ}E4-Ǡ1j5&pa%$tHT> Ϗ}gN$αmEՌ ` z$l0_KLZV_u-3vVHOvsqhg91uJdlKȃꅏȏO@B 7`9vGj!4.Si455 hjG:p.a cphȍ/yzq-zۘr̝;mHRHRHBX 02: =ÇCCp}3@P(LoMa--Nό4.Y /xE#زhIEЏnɌY[Yfec.%؃ h>TDr؉lD#dB$WV)bm+Y)%F4Օbgmxq֎~@$áiowOMI DӧKwhx ?80f'hRHIH481 ^"FE"/>#a5Cgg'޻ݱLy Լ LhŅg$N?u1N:MַbGyK#^@*UO)NS'Л@! C[s#s47ܳW`pgYɔK `*U]+ {8fu x.=Lo<;'${^DP1s[K  vv\.7o=~AQ#KKJv4UH_{ J{_f־Pv$H$%Y$keI{ž c=e[%KDj⾁7; =r{o~ݗQeR +r|'!kutx,J ŅE4ӯbc̗PYDb8N&z7:7J!&C~pfr?|Yp9#P\X|ig'g;Iw~WxfNj,GnPԘN:=BR 'J ,JLyJi!HR2糫ްͥ;:aUNp+x'QV&ިfBq z9T \}kصc'v܆[7alx>Rn::DWg1(Ex 9vGCȴ0|2Kˏ=Q~1i0ztF]`ȉne9ǭނic\;7T D+-up8ujpt:U:no:u(0 %V延⶛T0%YS2U6Șuuu[cflO~zZBpHsm7AI%c~0I؊fl8\V!r:ß_#9l28!8>|i sED>;r(R{r:$醤a)p&LX M>2I8j cxhH`׎GF9sϿylC2U y'WKmތQ y9?8=ǟ|?Z0QF*+a꬀6v*Kl( xc||eî%hݬ(cybp 887Qڽ!^nql{Y*J NA ((C?~\Dс||>\$'FzJR RŠ$F7<>rYE()MCW/&cǏY(+0ߏ>ZYC& d\Gpe|Iq rL5Pp8'ۤ@ مEL{aM~%tWXI*UH)-ʔT\Gg?}HI=g<;4!'f*8LZfR*TҼ[PR7}l-VcM 83($C\ffg1;7@{DʋO+EV1w]'x/ޣc#D)#!066(ZBp)z4PjY}@'$GKUZyƃ/QiLJB:*>4/2r<+Psn<([ATeQm"_H<#m/+/s!rfW@8Y^|غufVE'[eDL]gɳUyvRVNUV)9zRF!1ԔLF;"}]aiFf}}lceԨPۄU:` /KීogSIM͋yjr@[ZtqrS*ReF4^yDȨ O9C'(AV{Z yIe6J eyefWAA!E|PHG8tcc`9R"nm WmVTRV׌ge5&Dg.TE)|B̘-1$r 9q$W3 )T ?%f X,Dm23t.99')Cuf 5YI'`JȋEyZ 5jӆXoڣL5SX*0;?D*}|*4 \!DBDZz"hYW:DNc F&)gM`]ШWtr /Fl޼r,J^Y;o6DwbR_KlN\[̭1Mr(ʘ6GVkTkT+8{v bD`,E뱉Nqf-/D<V,7:"],/Y(tFعuJelg z|Ղ^X[VEVGeRa]W'w܉w`yrl4A DOw'zzQ.GZ 2 'RIg;:p7a3BOWQ^c4J K- gZGQ#/386 }:mW;o:/:|ι!y-%j/Ff:r4Ұ'Bv-.Շ1arr Z~_ *#x(pÆ!|#@|^x5,x}ݸ06F0:<_W05u28׳Ha#O.ρ6̒b1)M2;ڢIr<x晧T 2igSO?*12UvrWfBwbJΡzS^x YM#@" Z:kӦq9|O`Ju92qq?}"ʣ7^UÉ3S}]f~#!Fz5+x𚇢^ IDATgW'0ElKŦ d4cArH3I+D;oz],%: TnG8MW 38b״'Nm52l8IU%Ozjr/at|t/}):;ta y\~J㺫/<lj3rZ,i*Y{J̰y OOOb8q^,!-.o6HRLit$b A ]0"NG9A 0@[.Rd&Ϣh vxF@/Jy~zE R:򳘛GXt*,.5wm\w~=='>tyu{G,/̛KjB/EЪ"bJPu \lgiAT2 #VfLzknHIseuvnRaԠIJ(H^ݏ%;⎛ţO>%QW`-7[HO0%eL9=(=b%z{T_?`fvI܀ F33SHb *c@Z6뉫IGp +Bu`\'F@f<2^\+43..L>~M+vF~R)xsl(p#P%g?~}G4^}{@RCQGwW' <$$R/*C8y8T0JF)c\0@Iry zCljY3}؃/W^yR&^G!5ȤU i@R `lhj)p xQa3R&(*rm@d@bͺK@Jdt6w<&K|{ Ƶ6R\B% 9$ï#E ]D!bŅEK(153Hـ2їLPIu43dhr$~we^yu=zvmpڋ z;h4jP&Kbk:dԑ燒~Y˥8F.[Q 0_{#-±cGt޲ZSBeC( ]Q3aG0Mg%3⨩#_pƅ^;"3#c̮WO;vJM?JVL UO:Lz1d AQBl~׬gN K)zn̠bLL782ѠJ *#۟y5oUz,pps"oRK̹5 IɊ(=29H6d)6JІf G)Sd *BGH\Jp PD+h!UrCOw!$iko)рs(&!:J*&^b"ۼ JKxI#{YZP]d,S1{P<3r8'P mV7㧿YK@42(큐[eJrCV/ p\!bɫe^/VNϏLAЊwR@I'0L]~*+`^C3{B@Qh1eH[q#?i T}f)3 JjI#R>iE8֩"0 6E7N>/ ٰo\tg!LF;@C\Z&4wW3 3660ǪtK󐟿>ڞN1J()Q&+v[3z͆`P !\YqH,"QKD:#Q!rvʆJ`s $PBDo3?Fvyc?Z(Q'PZωa5tn:t^ ! O-!~ l5)/Ѳީ?2VJR15=$QN33` V,--B 4͵Mk+R!GGb  (3zRi.iy&tjElHhP0pcخtٺ4ҨTe̹֥9J~~*l"Ԯ^gQہrĘ/bhhCH}ߏڴ̜Ti]nP\ӳ SjzsDMfϐTg_lݍ[J`v~N;\g_9K&M ʌ D`n4,)dv,9HD~,cdJB߸h.LOՉjN-j]l`8;Jq]8S"d}GiKx|k6g^g}{.|6& <<_06E`Qit+wL_^Ijj7"tM ;J!Zv3r8&fS p[ ْQ!f̺JZd1fMjq>$sF27&jj-hQjO)Dmg0Q%p) xƕ.qB4:%tL..ٲaKDզѣs1a~LR3"nAڙk_*K5d1:5U=?$R"`V!%M3#zC[^swW>w܎xgR__x.H $̬X I Rf&gf]sݰa$t?N:7RJ a!@ImFe;O̪,` t񊥒QmQd%G~6tùFĦv&"-*@RC/30 }eDKO L w5Z?y\Fu1xZ+I`1w]jaҥ:bgUnijj;/yNcaa!Po_jXtG,]05+z9eO`[\nh̨ 8X!#@H@`d4aF[%HGH !¸n!piuIM'r9;wϓs Diw<Ő&XiFQYRr^!:X @O gnnMs/.bG!GQ7R  $U,Һ{6vSEZ5:"I'wht*i,nȏ 2KYȣZk%X t]NW2RK"M|vI= gVJ"\!"M tvvRiog W#$T Lw]s\x5Qʫ !-fIGMhDZDZ7mka遈d"X.}L>e fN0YgLa%pTYqܸomE_o7"!HťeϿgq[#J0;Q$ +q3Nkd9BQ@+`ץw ] "qb~#>na!>5vMQcUa&zjPYOGH,DB'>aK[)"~ cUW ZKpz+z20d+=w߅KvRZCBfÃM >{@!apU}Eu8FY) o⡗կ}O2&A(kN(h'9n<ꓝ]=7ӿuoy~\a n3>??òJMm9 ݿNͦdZU'84BCf@kA:Lv܍/KDg_4ffQp^y\2|cE()!0*<iw__?n\s^=J _V;>Uu0鏽;ވg̕0q6 F \yN|~~0Nߋ_G[; ޫU{Ï_Pq=åq]"L"m&6r@'qGFpɎ;с믻[??K 3kL]E O\wXJs8J~c83Ci, u%84 Mr.eki^ t._;y'nvrch(;|vjj q ;o |>yf'&P^wlV o Je疒]7toCr;c wp_[xS8z$K%|\jlٺǎn^݉0lj5 !|k"fs~~fgH\;ڨ87DN O9UVC|Q͜OVwȷ܇ew1HW/(: 3GG=}U!:Cˣ8g]@0 0CU8Ȋ$ s^0S3`yǭoQp^XR gj]S󘞙__ᕗ!n4*'; fFXࠎb?Gi bffǏ: qLiB+"cr~ڍ  '[\lق E&F󮟝é(JzDCob-0qx / [0?7$C1l3pi4G9ٍؿO5<`G84_ KbI:57e_Sޫ̧?z|K_A8C6j%1dg96CQC;y6/a+6?)  Zq^EPIL0HзyxSC];߃pb( o.Vtя~ 6GX#!3hHE ^WV3 86> 'V Amp0#7U<2_s 4*RJK$iR^V=tԧؐa bZޞ`$t)8)ڠPB`i!FRAܨ9ELG\UVC^5rJt^Б植 DCJ#K%]go+~}=c a^LZy2D@a9DZ I!SN4.3P%>(| (]?q0~LgL7:L<џ%F`0|ۖqϿ_C܀kMlʤ"Z]XGe1bIFײmSC_\4!?EԷ91 .vE$ 'X [ KK+5.MƔN݈82]gLG s6h|\G*p^!6RBӪÅv;~d' 9ʸ%r1cRh+pa_я=K#? ݏtoo3&)iiErAILPP@ +% ztK^@ҨA6H\P ،HnH8XsFSLNIlȏo~=}юpuFM>MtQ!䇔a\j4mǧ_m&9jarj50p`53|骦p )fXSFm!cQ MպnH#FlV5`0փ?fvV͘KБ_bw{43̌_*OڟEšKFǫ'oa::W2;77u4'8oW]")uGMIpu*HIIa왷U83lj|X+(lTa[OI{~ԫlf/'vbr2(CH:!bˉԎ(S 3m&dmRg{1r9=g:,&PD R[Z& ^PwRRF&F$$vbJ][l:f,ůťQykb,?@"4:3Mm۴3Ն(2hmvrn{&#r 'W n~W^y%vm,%f^fκm=cpyc܆3p34,snMխ*`A醊J4oe#=RB+#߮}{)J)W@ggZ8Mf~7ogGEg~bͿ`mnNj[2ONj#D\ޏ2%SjrFZ^j=q\6HRiQ(?N@k۶m_:gԾ6=;}O Y;W+z.j[+{T(Ӵ'KFg}jveRf ǧW:{ضgK|m+:ǛBPcY^xpX @kB]pVJb gdk0Fi~zdFŇMc84cp c˖MolIq$5t"avY1sFLgS|M6{[_@k7o~{p[\#N@@. sN(af/36x ihYJSk(HLπTĖl*2rd~RB: h!TTHSmLir )]SNug(zx|βixr^`HSkp-Ϲ2ibN/cF*k$3h[8ȉ<Ül\;w;b`l9w{,m21^+-c,(C\-Qsg:l=7q>_'XQ)߶̚vijAkP_aMo!tvvkH1\D̦-D__ox#=l۶- &fi|?V6~a|S 7&a52Xk ƽc'@RK/֭[p1~up xH֛o8=8vl߁G{DwL7Џ1\v/~vz?lۄ/7ߊ H/`͸ۋ)| |Q݊sUW_Fxzxޫ(8\X3~#ިcma=WAكYqrb|cժƻN08ޞ^X~>`WB"d': bKel؀DC?(JPcv۷zcbxi\}o݁F܀zq:8[C/oZҳ_TR"Jޞ^7٩3xgzwkp)tuu6M(-1553(˚mę ǏW_2gơ! n@=ahh#*e,W1q"ɓ'' H%!UB>2ffpjN^p];uuUWbÆa,--ިCB!wQTU\{(|ɣx䑇Q^^`;7?'OS,7"g )%fQ.Ls򢛿aʻơ!,03=3(͗@t$xM⪫Z]'O`zf##iRstucff R(6mđGˑ$ʑaǶK000y͠ŀ/KP'l$yϠZ[F#6lѣGPU^Z.#EjΠ9ƑxznNSS^?k"Ո\LOM.v؁Z՝ֻc혞ƖYr٬q>. aTD]KKfOeKqؾ}(t$p˘FQO8 $vE(!Ziy8eCBuzwP=aСHRnmr$"::"3⑝jMe㜣 RccE9鉓8q.uv_;#gTr2߻w*e,_'{eغe VPH:R<;uNBZ8ٷw>['ڵ ÇqeeR `XCo_?OΩf (][;=1- e9 m)'OgƆ$qil߶R%wIl e,Ibkut"A:s,m HYL`k D\n-]}7.˯j#XnwgE*MQ\۹vW+Utm 5|x-x;瑀ՔZ@k8nR ӌPCх!DE(W붻 X=8DlǠHaތsF"M}c dx3=(R&u5tXgK8!H1TU,W1 B"fx F#XUhu(Јc+e$IHYS80g>mI9\*77aToO{`*} OyxHADv{jXz7q~F8l97?䈹rygޱ7i^OED"!9u2nK˿ÉpWWc"r'Ff7 #7 ٓH|sz\;bo=Z Fe"Y6!;c4'Y:SD&%jB͖i/#~2b_TRI$2AH2I]?|  {( !~{/)ŎGq diӏߋBjg[ڿ )lޙUgwݭVn-] Z1fF xS;M#;";{/At}K'g(o}{CVҮJ\$mR넗^D^|%9ً4}3,|#5|^}}we9 mgQбy>{_dşau(J-w䏼3syR̗mT? mA{~5 #dj DoS+}fu  L 7 IԱƑBiG%0Ͳ IDAT)Z0JcBȽ=;t݇Г}_?v>H P:}Ȳ5~%βA\>wu/xiJ0}rw_9KC'hW,䉮c8KxUɼE'I?| 'M2=?'ص#=HTcW=Ms̗P}PTNӟ3 AFjBk17v`g#WoK?d襟H.|"~&UEsw\4D~ZijW  1C|-`۳B >,[ Fe'gmRO!*T(^&w.~ۂ->Wyg?G!+DVG0|Y'Q9"w7x f+7ҙޓasHL]]q u]xcMvմF Nz(ǃ7P{/ b-A?qh&v[ȸZB'~BB U6Vmn0Ƽ?w03IR>-m_tWfSƈW8FF&q;FD?{u3ӿM%x@:ަP|*BĚP*W\ɓ']B_{#Mko@uم`ߢx0zIkA}Ev.@9ߜv?t wG)"<^"+A )P8ތGEzs2_45^q-pc\os+^"ogrEn5s??.x.'&B Z`blJ̈́WZpJBI"נEha 5$f 8H2{EZ̥=_{AS?dݱ_SZnORqBnx-Nka,ԽE'h_՞kЂ1s!^zp0 fh27SÛ6JM)%|i4p'u@5oK~-mDAS(ᥫ8E~%Hp"1ʩG9aXmf$wl㿆Քz5T?ad 8q7б;*RP9ko襟t݇bM ?œIyF2DJ7q [OO>DbfN?-nCrSN$P$>pnK"/ZzAD.) 2BL:ek﷉]IJz't |QTmK[|CY5S/N8L~v q&Һc$șmOL "KĮOOS+4R[j2PBx Ī˹7f ~Y,j:^b0^"Gm2?FzpB4si_JݟC 9N?ƆД"q.(ع/w|3B:"&Եo컋ӏ~kEi؝cO&zZQBQ,D])eeXxWXoѴ_kxiZBH[:m5I!E}G4(&V>[?ٌx-/⏾EwBUL+?4L+iAL!p]oG) #gDiy*SJ1S_$.9By@&iO^0|)>lS'z&i(zZQrqB#N ciMxi@U'FJ_7kߢ8΁m݋"o%P1<]iXڤP?9j h[a3w='LgD EiI`BAQTǫrH! I` zJPRʤR_S?{EWt7 &l7ɜF"EsQ6Ay֖,6B8р SۛUf}`IToI )E6 $UѪ޽mۨ0[>:?9O(B]O[A&FuQEKmWtc{%G;f.473wVo@-_XQ@J'\i!lcAڃf:gea2uR:^PQ ElSU捛ZKWc&VKmknaL)pHm858, ),ZQI-mi x-mN-hRxT;PUg,#mY(:Y?͝'8v>kѦrV-\ {f_7z4_YGz6\p)%rTuĈeK2j].a2HjZ r϶{m#-iأ@{X[K[^8o1ʹLR 2QLzn,U3T2hkKV;_.գNNyT pIO;^/΂T= ~[y(;]]Mq9鎳qiUHxٕ07_=""?-TA!Z,z( <=J)$q " ^VJjHAQm БZ;L1[3}zBJecVC&E=7DxC <Qw,@J#=T?Ǔx#^C."\7  J?8KS6MTFA"1- iZMrlYiҴP4Q3 ibe3p,?΍QQX9a4"miZ"@!/BQ'ATĘ_hMg˜ 3Snq",6uT7>?d!MHXZċ UIOga^P!%V>m9& HjS%:f1'P"o&^gRJ!:ΖG3fѓB6Ne}hQ~gpi @Pd3< ʳʢ2PT!< x}u.HCG ]Y!qodݿ"LJ lL;I&?fa;i5CD)mLCGQceEAP|lv,IsԽGTDJ)Q_yo7[&R$`Ie-GپQ_O$~P*\m?$9ZoMnF Ǥ47^!bԼH%D({3߾ΠjWnp)')gkAvnzrߩ #bU%zz̓K]nZd`-mDzd0Z "NjUG:i:@0+$`۔Jޠ{'y)}L|O$>ڄX 9zl+kx!UE#5KhWp(%ئ 3&k;[>AhJ'ַm` ?Cnc /IjKJ s8AʿuØÙ)缭Qq BKg3O5:Q=7gc,OfbH]uxa^Pqb oBh)e**q`5_X)>S8,igǞy2مb <8f.Cxj˶?6xbtUκOEjcsH6z9 d;'gBb-vVw(>?8/El&Zn9&^U*7^8/B8`J<Wm 96b)2oLz XSf^oB+9FdW<lìiҲtϮSFa~>T4<9)s^BWrt{$Sz-iH̿F.PJg|du"-zq$W% PT?6x#i|$[,Ԏɽn#j`^p]n&j}=ѫ6I` R(=>ԋUۉ-Dr3vmG虙[ )md?G{1 (HTȥur))yA#ǪF46:\sQW0F"F }J`H|#=8.O^#7W#-=ճ%"@tH!MdrgHIW(GIGE o O;uY"1bWmtHaqP?4Z f_{mcXئ 5՜#բvY6tg S-+p #V>wuBy ֨i#"S{j D,X.Fyϼ #P83><ˤHu]Ql|5Ў#eNbMgCSGH}iPPozvo[Nڱm,)0톓BjӔ< -^5ɄgBWx+z1O99@3a~4iwbs8sAgԹQFOb'u1Vzʦsɦ{7DNSkԱEo~hkgp $ukoޟ[]_8D"p*uVA t,BӰW,b{$Z@QH~ggmOk75$`)zjpƗ+{ǧƚA(3\. w_Yݔ{O4|r;vQ<~m}!5sCDVU!JJ.mltIcKX,O>rAOs".ʃgv i^GgٞMUR73$pYI~ )uR(?':[ }w{CŽ5;Rc2bI@ Äf>I6q} 'G߹yWgǐœ6V^ 웶᪡(M2w'Β;{/)H$BQ#M%,Ax12Ig􂢠\GMBdjH-|r$w.E!xc5sio ^|/]}9N3G Bځ-]KΟRB 2=3%l񃘹 v5&4)xۜ_4Y9+C(*NjpvYx#ȲsBM;Ŧut89xDW<3mڤp9M`EQ3?ry`yرҴCxbMPf(:csNɀW+ŅtP|~P5:M̩%12IR;5;p$Nb /s+e&VW-oA@SQ=~,$={^h=Y<^p;x|zCN\[+9lŵDV7@үLf=Uz} m l 7vL5!f#7\Ex<~"r-M:,{SOa70Y=j(BxX'>zI4Sl=BU_{Kb-^޴Jy f~YѼ0x ?i(?^BOQ8.=/`˜P@gw] 9} i%>W((BT)8Ha^~q9 xIl̜, b2d^[boj#?eԫN;tEkHsT۪DTꋤ(BYS8FxP}Xe:Ě`Zy{8x5q rÝB-T*˫6rC|ɋ%@..xT -o&8 <8/4~.3i b0'%@.\0g.\… 4w\66oLgg'i:ǎc׮]p ťX,Wz!"R\.G2dhh3gOOs1+PapH]m۶|χeYX <κu8z(nEps.۷U=$^J$gYaA\FUUz!,X ]L G~#ħ:RbHT0 L$袡hxএ],Y ?EK)d<~Mg&iR. O__躳oضmTUeppӧO|>TUuF:رcܹ^CA~?;*-KmQ(fN|ض]}x}R|>O.#ɐN)x^ J,byI$B!^;ؗ0lfŊ|G^{77'Xl[:xiz6F)O!3L/~tO{IDAT4dH& yxexT* |`_P`0HKK wy'=== F*Od, KbvHťZ$]K}Q]Yiepp|>N8mY!%3pH$/#OnG}GR-MiIl)]d@l=UHbfSܲbX]ubH&_ }IRC$! X(0o<X_,d2Y;a6۲6gUtqIၒ "rEbu>BTIFJFr~ye7|]9~9Me8'T޸PA dVB!l6J|Rj˹h&mmm1w\`KBp N>ߟڽ26 /M V)x A$LbeYBUooddw\a4 ]\L[6Љe𭾝`H'TrqFYfo=8ɓ'󨪊'  x<!+#$X(8qhxrqqd8zB]4˗/_*ǎc``]4@ @0DU1LӤT*裏 ]tR>S(H&iUoPڲ,4[nuυK..A֬Ym>f0o&{.pK#F!ut:r.\t…Qp\p .\… .p…K.\p .\… .p…K.\pSSrIENDB`anyremote-6.7.1/doc-html/data/client-control-menu.png0000644000232200023220000001365112061426051023125 0ustar debalancedebalancePNG  IHDRF]Z4pIDATx^1j@OBv@EHwi{_ ܘN3@Sp`<{ nnV1]?ݶ+csuu8F.OKqqGx.k8 TiLAsX=XA8= :3r>a=@Cǡ}6RI4?mUxh$~U_ɒ`ej e=OIKaYc+M!ƇW|\}tbs@CiqΧcL!Є9S\KAC㨀xK83Ԡ K`]O1x/wq>ɺX:4h샽:33d=0e _ӳnvڸX!C![@c"%Ff-+>I0 ?pRKbO,Wwfkd08417I0w2J`ouNNCw9ܦý}ux'_1)5m)f,y V(> 3pWy]/]F7ᶙQ.B0hT#؎ۻF={ ϡɀW`{f2 @khh$PP"R)H= m 9XXB ¤!-(jjhj|1T+wWW"P}$ܻmjI &*;Z?a&b"Ej6E)=' +7>]?p'C{f ܌DHҔ[7љ=l \Wq`~V8KW~Y"u[keG! r)rDNu+"MݿfN KH7f2|Lպ5ǥRD8Jf/[ecL…%d`e"h##E),  PS$9%d&W֙1IeC)']I$9~ 4 6h246gF*Zp gAG,HmԙE>A$I4+RTFKIiKc?&N~ūЀk&:y e JvXeL M2"Y^n1uy4i/ !<?{u5Ƒ3;kze8#; {gUo_W8V8,ޏ<7JΫ:-e4=J[b0~? -O|qe(w1'R*`bO-xѭ3afG?5 T#!W c]h}t(N~:n:g`XM7$@dXV u,2>h|]4:'c"}G4lۂ(/ G?|"L nuu7gOޭQ Mٶ"TgUX,r@rb='9erWIM@hCo< K1D~@wf9C+.} }MY'XCZL~0 ~[m!ZVY!>Np&Z8[c.v7caUMԡACg:gztxC%2V"fbS|=ŲDb:9}_Ʒ&#:ݷJ>僑XL=@SW"ǙiǺЙЃTKB"R;CJtsrdܸ|[hY1\냋e_!E$VËdr˭]قz2`Q5P#F:0Ch̵"Y7ۚjv ه9esiLKR1HHCgrzHac00E7r-oZ,Z3m8zƐ+/0Cڔd%bò;XCnW(3>[qQO ;u:?D I+XF +n΀HQtFLh;VLK qm16Cg>Qww2c h)).pqD;3 khCvMyL'*?4֢d@/4eP@-ȎhФȦDRQ JPs<tҗ{=Fױ(}!XԼ ~9qyD>#B{fsfhCl,%!B,WLZի!}}uC&ww`5X^d*AhhCԎtf#o#}Jߩ8}$^x-~[e( GsL1#%~+~b[ҧݷooy.ܱr~_il_9o??[*}L=}?KT. Q'i!h7rѺ5/kϋd&Yr@s_ĝߝjlkYqXqGՂ_Cxc7& t?) P$ȻuuvـwvZN wA#?r,feH7m?->+Ԃ?ta&_r}B B !|M \;-Ō%Oc\1>sa M覨Y)%F"?2_}"֨^Gf܂ϡ934??4?,7?s?s?`?4fЌCpЌ0Csff54?` Mh!XCsfhC3~桷Cxz5^> j#gv֜J&gZ!O} _Y,$|Ќyѝ?)/BZY uxGZTA7.Te|"d !\M s:gSXB @ #, OΤ?8QϼhvL6/ )hr%`„ Xd C"8z(6n܈7xgΜ̟zvepW6&cٲe(** asWv]m{!`׮]"4pN8n Odĉ'|z+͛g43A~3iҤlj?T$[ϓ'O"{p8 -}Gџڋ{WBF^^)fwrOD˿lCo+?uFOxMϜy8)FnXخ>a^{Z ʟڴt-MϬgn`Ao+rcrh s⩴TA,^~ 3ɟړ{'I~~ }zUWyϬioNZٕ "HBjǟ5LTVS{5~a MtNߟf_ /?AS/E?BbFKNj)4ѩ>:hMM5噒hyD%8/V;{ތ{:ԹO=HkC+*J+Tg5ڊt;7A| ßtҧݷg l޼e]g H1B{?ljP 3/f" Y]VBfBhBf ?wǸMQ׈z:"tt9W0O#K QD" 32ɚOxVwct `0PЀrC CЀ哬nnVA}7'UM1dCCj$Zc ?_$s}}ơxxVP0JzhnɇcmS?M~։%[n@ /C? ._>iXb{[r< C뉇ZVrsm^d(Ε@MXĎE}FMe[ZzCzh{je;Uhpp1Ē@ Xx`b bhԱ W|7Cg [a(Ð[ng|sdkPЖ^2XuuZbOڎub8^zC+C+d*M(xpE ]'v  Crfj~fQî?Ǻ, =4BMVW[E7zh{@>&, j3(؉1i0Ź }B04Tia+ڗfg'=VXm. uH\u)FYǶo-ՁZ8``&" $b~ʾSmE/C{.AQY}5qb}rm#3C+E $ -6ZB띣Ы`ӓ[Y$4ɊUY5o飭Xmơ3 HhЀ$4  m Hhmd ABЀ$4Hh@B  Hh@B$4  Hh@B$4  SЀ=4$4  ЀL,ܯct -wݷs珯ABN0  Hh@B* CqNXA|">@A|%77gqpt]T@JNzm$t]oRM1$Aƭ?&{UrﱶqIɩU>}#sX%nT5?V2ُX >e9qtKXū}ؤak+oU}mBh?r`y;/]xLLL3VƢ];_nuIENDB`anyremote-6.7.1/doc-html/data/nothing.png0000644000232200023220000000011512061426051020664 0ustar debalancedebalancePNG  IHDRĉIDATx^ IENDB`anyremote-6.7.1/doc-html/data/jc/0000755000232200023220000000000012100017561017103 5ustar debalancedebalanceanyremote-6.7.1/doc-html/data/jc/fileManager3.png0000644000232200023220000001463512061426050022122 0ustar debalancedebalancePNG  IHDRF]Z4sRGBbKGD pHYsu0IDATxOU~ǿoނc'DX!`/2a m"Z)""EJvE6QEb/a$BYo&&5s"q"K$Ibrvu{>R]z&I%#sL%Ic[zO {{ut٩Sf֍@{vhRCDp:l*ر$#'ȺJ}]+ecˡE&'Ofn/'m]M"(Tru".醴EЋPח;ARt.1psE_:qִ.GU~wmUtJ0:FKChs?u*OLLM?(b^ի1w^ݲOW\WFKFݾ_{<@{Ctӝ{R yIA0~H@ g붛g>sK|߭@[[%&u}p| GWBi{;M#}_^hIAb{B&@}x>hGR o"X?b{ G^VKi{;ΊKڳth|hC~?W] 9E} Gmỗt}=ړHwRwv#GWt@&7&iK;O}wX?@}U|}E)P obw:.` ТC-z]iȸ<{p=}n^#uAoUO6=O |}_ݧ_jܓ茠oػG=pA}V y7]蛠%[c;9J=@XrOЈA@?MzD@11 3Iю&tL]rSwAk,k 80L.Ǎ~Ũ5 #ϳhC7p*) 5D%sVYծ41Ɨ%Cm PM-p64zM@mUnV'#`1Z 8ZtBY 8( lZ 8]p:t@M]wAݜwY>PUY]s`dဃ 甒>Jp0$8@Л U$#Kr:teP8H.z]EA2 mYr@$L)G<~pm7mROYɎ뀒Wr`VKpG8tihm4'ǵP)˖Pj"(Qrp0 Apзj;q%HC hM u$)ڭnY8']GArR ?7pm< pPem"iϦ*ࠨ5ʀd9ot[tPXP] 8*44D@܆f<4@h߆&`@%w]BXjZb ,K3րHP6td'Jn U19e2&䀍@\8Pn$\?@n#$hzF83pOQH8 zYqp0:ZrpO8P]uA2>隷ꀃV-wR+E#Y_-]۸;y'Vv7p9- ,ryζM{uڬtA^\N,#Vmhӣm&N%`QT{i#&l(҂6cA'%TuA tڴ27Z^֍޻lHk;C': o]2U'f26Q rh66q8_-I#cqh>B` mhM{q`m踺#8諠-57=mC^"Nll 0<6swtk&,CWp6`[4&x0EU$ H1QmG<` M=K?ځ;341V%>~(a9 8(FơaJn8AjrBV yNje6Q l^cA]pv۪L]\E)zj?аCp@IZYС 8CK aXoO2;@ɚvE"pns=4LRge mRCdpGm;tkյ,1/}"R>Ymr8H6 m IyPT(8&!7{H~QA L٣"2χ`|ƈr ?wRОt/Xw7599mcMA:o&s} ,-t1`~]_3[I㺇UU۾yJ@h/"n[0>d z0֕,Gx :rh3+*@[%wB{4C ;fNt焁 Ξuu?8sLCC;ewfҳjv#ࠝHFzچ&`yO.}%akN$ڹ$g2Q̡p0Ve\mI-s,mh 8X$ D/iۗ];k}x>hGM|b҉n8tѸ8eѶY7A=8X?)k(izbOvv`J]d]zԆN~XIp=UJW^$,m"3VغtR6#h)YEA! 6pbsEۓ+Ď=OR?|T~!󢮚93` ]E+M)eP4GBq $hVYn<@AC\*"s91%vZR?a'<\3+Cptqy?cAۊ.Ɋ\\wAZ琢Ghm8¨+EG68?pٓ7nphi"C:;ҤwpD(zBZ7lh\6+01A'* z)#HaF'i" O46';:*#]eMؠ\)6a~.R 0=E[]EAyC).m?E޷4UuY\}^@NnbrP]=\há- =1e+ѿfH)ͷ6oɝ~fZ"mh#1 `(FiAG&o1A' Y9^[yCN>чcUkk;;Ѱu}3j-jYߧ0bnCp0WH ܎w̼]4 2ك3p(P#:ܜO}8zur2x(].o۶o%M8eJߴu̔V#-ldr<: DvhZ۸Yª&bŀ)"'_ӄ6>%jo^gpO5OrDhМ̋:4%umh[DAo7wɑmC"Y`F=Oq箪_,K;Eq/'z}C; k+ +O`⃷w#^axn?Ѕ=7Gu 6, 8 8b|CYCpP?YW;shv+LmVϬ ۢ'|eĘ+,lAjgGA?NUb{NoCns^`eĚnܣg8pL^ʩhژE0цR\-YmjNhc-}y.b;Ilg:u (9va,B55(4ʮ:Y]<ڄuIA{;Z;*ZEĎ1=+(ஙx`^ԮFX!\=M3{cI㡒^bmmޖ|ߛi#u廊vmC'\W~9lUAh$c.crgIPgVVhJq}|`6FEQ{N]+:lE=X7eb(na[2kKy`[>pbTbtbǩ՞IQze۷*I_]lQ:ԡ +7'jn73ݬ]ۓ7<4->U}XQСÇXG3Leіkwԣ>JJ$B}iB=YtE <%WuLڛnhhh>'*P>@f{$8rVW|L= 5ajWRU>(81p:w ݫ9)w{2[ll^}u{*dmvP*׏0KFRU/|T`ϟ?Tj 元h"P*8`),WSSf {Fy9'jR%U˹v …%| ^+nYt9;ԢE}_k֬ѤI5u͙]Ya)%p8fKOﯳ>;0>0aY n*28f͚o?V[,&˗'i׮]䓗hAiۏz5(cmvG 2D͊>||_}?Y1=IFӏi_uuuZW[uuu|EUt2l0OO%*K|IH2FQi"9ǯJLV`@0S<|t<ߓMr}i:3CXcӊ̶mb$)%BVS{*BO?l&:b1>>u"8k"py-^J}" 2~ &$Ƿ/OGݵKЁkZ[|>,Wrەxcv L($ w^G?Ey"#Of~k;u~ xk+, eVXB;vPtDTy{߇tAVVlڴ2 ?% P)cT>⮭oHSztιMZ0⮙Sݼl!؎*8`;ꫯVM iĈeOO뮻\W]uWC*psiҥU`zVdVv,X[oUK.UGGGR5JK.-8}ɒ%:I6訬Վ;5c xZvmw;L/ݻwKV^f͝;W۷oב#GJ>kjر1cvܙ=Ʈr Xv_^7ߠƛpKǎ[u}ݻ =ܣzJ+k:6۴yy|bA oMRZ]][ GH1VdS2hٲeڿ? l>|8yBM8WqҌDK}4z@]匓Oh$.|lt7K/^5}c$Iu-^sI'欯W}H͝dY vxg_yv/}tN* 0Ah?bg?ɮ~2VYb A+nm=͞=[GֲeN_~5kVͪVw_ͅlъ[k+i|&L}5IRgggbzSmu߾9JV]̻ᆭ &h&mJM 9}6lؐUݩ`csX~:%޿o~qX񜮸bDiz nÆ ]RsoܵWj?fO/|yV78pث?)cWps;k}8X6C׸A$I'Xj}i`\}nʟiI~e-|◊yZG9/֕&yt۶mzAQ'\sS[,g.IFj޼oOW7Z۷xB={T[[6FzhT.p2:- Z~J]G1_mmqEԊ7zشC}ivJv =@Vl6>U/yj&jKC/kԨQ3f$>{w2FX+ܩix"ܷ߮TlFߨX,]VuQF5V$:|5rHM2moFX㾯Kt)ogKٟ m+M~NAFR:ITb-O9B!:ۆl<XDh 5J&>yz筍V>}OOrV'^4I?`B+ΰ(p?9U]5-ߺڨkeUK!ؙy9;A״o6hDNd,q1ߗjk[ziͲy޽{eM]xVתҵg"56&٩@O~zyV^@-[)xĥO=/PeTG_jQ]saҗ֦VW롡CuuGnw=\$ #dByX;6U7|I ~磌U[OT䘺6_{Gon~Cmۦ$]{啥C@X;Xqc>xokg貚3;5+{=Թ~ubݡ}ͪU~CSm~'d/٣{ uFqtn@`ӌTle 6@PA5`Tl;'@eۘD0KbڊnIጊ Y7Ʀ 6p'؀[ClI Tlfcpp:ؖlSAPѣ\bRl?ؖT7PSlـ;6p/pf)ۀl^&݀+NM?\hMXSG:q6.> 8V+.ZqV@TlpYܫ؆\l\crvΕ@*6addp79F$przr[q)}R+C\6]80ƖR֮gf 8Պi`3k 2f@8C)ɘӆkV[ MA6 C+8YCk1!ـ{vp+*]jGR 8$4ဃ8O*|8،ӊNIW&!܀Zd4 6p09e6Y\l9 ъnL'+SL,p`[ܪVl 3.|}*v' 7 P88`6Dp#tOj4Ҋ炝u'6*= gh7+6r.Vl8f)p0 68`ig[q6L;I5.np&֙8pw" ".5;.K'FعgP1$p ;J6Y v&# p.F P+N$q\cl rmM6]&ۀ#\p/&4 pO~X* v'pb)8؊SMG+67m9K)@+*6'[qTleyF]p^sZq/UC: Z 7R&$$kD;lc׀{;9¦h CzMةTSwm37MLsw)%@ m)؀kcl 8lK3I'X6nVJ>3cVp' v'-8bŦ 6p0ؖ "}tN urʮԔl1vflT+uxpWؚ T|إԈK`SWUPGptf9pf Њn\C\48K+6Vlc MPdI9DTt6pN:'~,Bms`gHƍV}}#K@u_d.`E,!،TWpf8s bmhhʛ3 Æ2Nd M;RhA0NnɶjДs?pTB.B(~N2O=gY =^~;؆&ъ.bzV\kH[T_WA<fnc ܊mLcRRo2S*_]6/lxμ:٩gKPsO WѵJ&ql+pdPcBU}Z;:5_Y{[m ,sA[6=_[ N3Y,.5NlE(/O-#`]'^ _Q m LUp|g"vݛQ>Uۦ5Z y/ESOr^dJ{=Sf}*\#-B.Id~էQmNmƿ/rh.ߘ>/O{__{)816wV91O=)B˿٧EMgzA[? mggB1%ڏrߞ̉N`vW^ǦD^[;0=z/_^MIB&t9_0[RgcIENDB`anyremote-6.7.1/doc-html/data/jc/amarok.png0000644000232200023220000002341412061426050021072 0ustar debalancedebalancePNG  IHDRDcxsRGBbKGD pHYsu IDATx{xTչ{f$A.Js$ښVmzZNkZ+?Ek=$VT3yy!l -Y I2瞙޹O~d&{}^{͕~BR '4޼-FO GW剀uxz2E1#md#~BD:K/S%^9Dɼ3KxĜ fBR#KȄᑃσ׎-lBBFG(U8!=eF'[GȄjH/iAH G PȄz~8ܕ#f~}$d(j#ELIw B 2}O}^o&$쑡$ȑ)Hl{h<=賂 ȃ%)bBx(G2DB gG:݄1B4RdFb&g:Je%~"$U™],N'oc$$CkW !W~ Z2*1L(B&$SȄ#B(dBLSȄ#B(dB@2!Ȅ B!B(dB(dB 0#–xƏ)SEccjk`KP-i0g)v$PHZZ~p ?@n&?v܉7p:vubih8);L!%. ?>tR466rztdE&v,=m ~6E?>-[\Z . 555َyWbum}.Fc~v^:l(\g`ĒeK0eJ.֬Yv!YU _[NnyG{+Ŏe 뮻^q-\.RJ! SUf,Xۏ>ų^ ̖4v.P$++ <B@3 !r9q%gsqgdۍ)`:sd GӡAoDJ(9D  GGqBߋ ẗ́ c}>}PU5$ .IBRbxaNKG|82,igh޷PoU–=rwl~Y Lt\r #K5&!$K)/YO\ن]PT:9hѢP'V UU5#phMJ ݎl!jז&fb˅OM&3;[upBuTUU!؅=M%$\.R{nJ`ߖc\8鮺5?ה* )s8 ].vdʙ-3l̞=2qT13v;%PGĸ#%cl.-[,[6l#Bzg̘1ؿ_aud=Q9J% TVپ\p:jMK gD Ye28d Ӽ/&**o# BtbZ[[C92QϵJR v{CDcG}xKK5v=G$͑{ Ǐj-Gh0(+÷}[`4QZp`zv\|Q\%+ 8J yQaggR477kPoض_vFUE-lcc磐 'm6\~9 UPڧMjD~,pn(&܍mr*anuCx&>_{LfVCum6tgucrd@χïyfd`jbDՑ?Oٜ)?ih:z ܚ9mx:L!뤽oFkf^S8`20gޖaH; IE8^7?Zn8N|GR#FMMpAn?6tuCνBZt7thax]Qpgx}mkYvuBjkw^ 'cD5aǎ~ '#DXE 455ikUEnxmk~u3=v,p ǎ/EAA.l6@( K{ ^A9E8zZay*~)Ly9A׿^z ܾEEX (~ y@;xAA>o/[2 /Z[cpD\lܸ4A -UI탅Aa g{8;Ű&ǨRlܶ>xNq[>\H c#==+q=`ʔ)q2\ܠG9iIn^z).t6**6aݺu8vn%x-ve.Zo|c}QlٲǏOk+k9r\9Ӹg !ܹsqwT+7 ѥ#zWc*F $/gXxB̛7k׮DKK N>mp{%;%WFuu5?簥͍߱cǰj5l4]J(~}E<&!)A:FL&(]1dž G1CAOu o\o2nX oo~`WN'$ ?܌wyo;~| c7qS{ávڅg}Dkkn/'޹s'x |ǎCWWWh;H=GPWWz)nf,ZIz^؀[+ա>N8'OkT8vߚ=E޽n;iEw{B!iގ>{śi3̝;B#{쉶OZ&<-ڜ떖+x7p1466u`|ߴiغ=477 #]=GD؈*_}9 =CSS^]j}_f:srr;iR>щ")%VI=(!WQWwY$1sfvڭ\JVVϚݱIߛ0aVX+v† GM233qS窮Κسg).I1Q#^߂Sl&> f )/9r$4klh ^{MR?455HHc d(X@{ "j5!dhudBRyB1#! !2!B&)dB !#'SȄ8K'c>'O tuu龽Ш=!''(zwMf }_ۗPȆ2@UU֬YVZZ+:׺C%V=\[ƥQȬJViii=2<9rFDpۙXrehy"1@ٳD`M¾8!ad1e^^{-?ދe-T5>G2G֟YYXb~x㍡1Ӧ|gn{#!o^v6Sld+It*\Hc&;QYYoEu{=jml)ztX`A{cdee%ɄOS 0n8>==ؾe'"Pd<<zzz ~V}݇:+V,9ZGJ!N:W_}555ƅXv抸CVG+ى#!O-fl+Q&?|!bjjjс Jx}X,=ڗB#+ۍw,\?===Hfol߲Q0ֿDQ¦Mzjر#Xy:ۿhiiرc_Sz烔ؾ};TUorgy F77⦛@qq}rwq  ڀԾ};qF444*sxyh8>#)2.K!"rQ)O-Tn&Ĺ.{ .dFNPX s=O>$qtDۯ2r/?#R^&NsܹVv÷*ߺmdeZ1uK:YKز-477'yf@DݩU#LNܹ׺<וS]I3f@~~q]HЁCI4i238>33sրĎ;uՕ>KgdR(dBF2qPȄa2 P(dB !̑ !2!$N$FՊnjd ESvcgk+#DM[ȟ83. gks=>niBuyyN~>#p?vS4_6lnj†&|>z@zhMSP /\ N=mxއO~Gv~_L4 _.)`@PDOχ?c^: &BiY1qϯEyig%RUjM.C2WV?=>S <9JrbwUtp^܌C3\sgdLf^߲!KrrqCˠv)< ?OIȲe%jTݸm~x<zfB6`p?"|gxl6j٠`#lxlU44xWϟީݘZ"!-D;F#mXPh!"3- lm `/EQ(dlyXxx %WUp rqW-lJj0o_1_93ӦiH؁ix oGUaxl `s8U *gdVzb 0QȆGP.}ـSjd`uI[ (M6G!

yeCdZԣ+c][ZԄ; ʗhs#W> 8Szzt9`Ѧ^XƩM> 31#A! !H \W1s9 z؈~̜93nd#f36 fenwDē>-YsJ UuOD[[,D6w\8&[n#߇*'T=hsH;,enY<(/deӵ@8pD T._gųN'$_aχVƨK3a6)`+]?~JHhwC9U-]ou(a--cw㞑}3hxl$m/F}E:Rcǰ mmmp6 dFk׿a8\s0QG@)=1c J> IDAT<xG-eP2R]V7:F{~utŜt5'GFn!N/pKZf>=gwtJh,KU636'Λ+׿sJpEb yyĉu*rAn^!5Ca'AW^}E*w⵷s[>L ّ@yaGRpۍ'~`}1Bd K^Λ:E3 9ǏbOG8X ަ)l6j↱cqBaH2Tgպz^Fgg'<:::L Պ&feeaFF&edDEi27~_h T& I(L=2!d8d?LH nB&92!B&PȄ((dBRG&5!d$e Q\SȄ4 Lh>?#2* !2!B&PȄPȄ/?G&dtPȄCfhMHbքB&BL(dB(dBL !2!2!B& \QBLG&#BBPȄPȄ B!B(dB(dBL 2!A2!)B!К2B !ß!SȄ B&5!B&PȄ\Ѡb"5!d'B !##G G&PȄ B!B!B(dBL !2!B&PȄPȄ B!B(dBF5 L=2!d}1LH㧐 G& %SȄ(dB(dBL4B&B!B(dB12 `sB !̑ !2!$2 Iu2!ȄȄ B!B!B(dBLr#BFK G& +~ քe IyL!2:L!2 !2!B&PȄ!)azdBR?L=2!BLB&dd zdBHtR!)ަ +,c̛ lb2<(2!Ȅ)dBF/ ͕~! 9&{m0G p I9[/XPyc8 ?AB}>b6|/GSvؘA$(J2*oJ^;2'd`[l`-quȃϔΟpz~g?Wn_1㐴 <%{!tCl~4Aff6,f^!(f%"7L(Q!IIVVPxQ^Wz!95)&3\_x?K:wsIENDB`anyremote-6.7.1/doc-html/data/jc/jc-menu.png0000644000232200023220000000743112061426050021157 0ustar debalancedebalancePNG  IHDRDPxsRGBbKGD pHYsuIDATx?+Ws>B|HH@@@"+$*"PADAB [oK@Ir(vwvHc{ֿy3|{ !b1Ъ=C?I%ls%q?$o~s)BU3t~?DxS2aN=Y\Ѵj3c|sة?7}{{ym=ܱ@Fۻ'?UNs2VWmWl)pɎQuZqu)dX^u;Tc Cr7dؾRj J]^h3B^z̿}CxRO`ߜޜ>Um[ p gl k/z˖~8 j(D ]dk=knl{' ,aOڪ ~}|˫{z J}4u}}|͟{1Ѯ\rl/k 4&gg=PnYx|C녬*u5N: 4Tɪ۷gmc)rt{?:}Ln~K(*Ԧ^~ݾP(N㧾DbJC~Ofcn׼NRt-_7Zк޾o;ym;r.#L+T6vC;}뾇_z.ź=sؽy yy{f_{ng\q*3@wUE11/s>m=.BǮP/ ؝AWe%[EDv~Y5; fTx?~ۋhU5^[cjlgFwҶ1_8_25[kmŘs]vj;t` }us,ꝶs~1uDz c_b{RRz*=Ti66_r-clpYڴBEs 5m1gʩ= .20#^y/2|!KsN~_Nc̋dW{!m MشJ6*3h3쮃g}:Y\[㹷Աz.sƍy|j@P8/IV5QөV1uRaRN*5~*A5?!Tj}~juJuNCA| : ڈ߀8RCiyj(EjPŢ*uRp(lPD +o|B Wl ةox<b8Џ_ wmء7'g_߲u15PJ V 5ؼ+=~?ۻ?5rSݷ]vNodB!1OիK7mp-UhG_v~q *ׁk1o[ּl06C8Hhal1SU gQh2LM1uoL_n;Ro|3|~_S/NV MmLB8|Zv->i?|+4ac5K)M=o,>iI RJc^|~}ӳ{5RF1vp>C?ҫi1h2IENDB`anyremote-6.7.1/doc-html/data/jc/amarok-v2.png0000644000232200023220000002300512061426050021413 0ustar debalancedebalancePNG  IHDRDPxsRGBbKGD pHYsu IDATxyp׽￧gHbh$ ıċ 8V0'ob_IUT%zr]8~In\^p  `ܰExY KBh4K,f6j2MwOwt˷HEY5˝ ^$""N&[P<(P߳D:ŋmrԾBx/^L }!u* Hq ,kO<})B: [5+2!CɄ %ބB&dzDM;,HHv9u*JcxHp !#}&|r:ԛ6!Ef BFj~׿g.7!& (ҥ=Cem$d(ro)ߑ& FOb~ݺu ݽw"?dѹ qꐰԉ<2c&kTKAǩKSЄ$qKF ?au7IrMzRH#K}6!Wi}J_V' bD£;wKB %_~{ʢ'0&(22 1 2SԄ, 1YSԄ&dCSԄЩ !5!dȓp:5!&PԄBQb$EMZr/bd-BȈE0&Ęʦ 1^M15! !Y|SԄ0&dO(jB VYSԄ 1ISԄš2dʦ 1WjW-])%B(UU( t)]WV1@U^fF6 Gĉ*ܟwl2Au[P R\ALȱZQT\G#''v{T ݏ.Wс uuhm"'c Z,jia"!4 BH)!%dN*pj0I )%tEAݎEE:cn17x#FbLAmm-q1>v k=aq2h,XaYO6"@)(<3n;AYY Lgtޖ`m/jŤI0i$vmXֆ'N`Ϟ=Q45@wC"4|2D#jaM7a(++CIIIXt:2oGyy9;]v{rdkLTPDຒq{0|L8+^6g!f3p7c޼yxccxa޲JJL&|V|sr})v*MٌoǏǖ-[tRYk:K LI)aZ1_#˖aڴitcݰkkٜ~'!%7!=7 .wx v(遼f|[¨f .I),sjN6xɖ ˇ]Б۶'i‚ 7j=ʲ\P,_ַ0nܸ~ z03gzQ:x(ͻE6I 7#˖߂ȁH;c N&фDQ\XSNM[н裤{2A((&-VH :acL~aT Ir]vDBl]ENAr rkʃuڝ:݋˗/-XL+.Ƙ yUx0# '''RF… i(&(J.l6v;rrr`uXuv+ PUmm>۷/-T)GUgWL@~B@G%<Ѧ8H6:uV?,*]]::!GQ -tuu9;s{DM|it5$`%8՟S# L&M>:::frEָq.Fl2Z%7@Nݎ~. ]y)kө^/d0jBh|>L&/vCJg6ï||p]BS믏x<|E}Zr"HB!(Yfϧ[vncܸI(5 |QRx=&!:;enXPx`YփI9 yH!d|,NKБD5e|ghhhv|mpl6 z֑ [&OFqqqJe@"뺎&:xG!v` 3nb=f|+_ANN&/~3 ۍ.!%섮ݘACo΄.\.;~8BOǿ)_F ؼ<]u?^/ܲ].5A%tB,\EEEmJe,^GRV~OK/..^EKJiwfϞ"TVV n|0dlVt8VL̞=cƌZ^e*hr :ۑc9D0[5GUe4WUh̴OEEEXhjkkQ]]+Pnt( m6cʔ)ۑ]n/GÁ,I[!t-l!&L &\*,[X7AGUUΝ p<%tz<蟇q_nK! t KJ\pmשI68 lu9 @#ouߵSYu i?qeee"m6zC8{10z:LEq ޽;+nvWWWcjqd]Ng>ӬtoqK`ի%E]uuU ^}mfqQ?r毓A.BI$%B@#`zC"Ha#saǎkhU2,-6tظ}_~ЮK#4USS~_ wH&^n9N-~gk.@Kk߰q!8K' r 6l؀C~{(,SguJW_ǃx`@g:6lC00[ $؈. {/JJJMΝúup Yz6homMPUW.],%*wΝ;jzH7wx:pwvbRS};PZZ:.}ڵ moɓ1aL4 bĜ ǃ*|M LLR/hNFQSC9C]J躞yxEގ6T_6ِcLa! ƌ6fLVf:~W!hn@s[#:ڻwA>0$Dϕ?2)%<6LNM|ENujaɁjYc:ֆ.rkhD":pj !lfRQK$EE}[p8r.uvb@4;tj#r'A" { "Eԛcz0&Щ !nԒ&XC5! !|}kxq455 فZ())3rc̘1p8Q !petww{b-?(i,L&f3%>S}K?x/'&L~wh|K_3ק%̘QR|o\ppf|'p݃.B⋘2eJ=Mp}a߾}Yo^UU~a\|_B\~2#ҥKi^ӧpС?CN,x{{[ʕ+u}@WkjEQi.Ce4-ܫ:cǎŲǖax'A'TӧboVaϞ(+;v~Wi8~cv0{lOӧdz[J mMӠizEA&G|LU#haGvUZv{Ms WcV5554 AŋxRڞ MӰɕXv2F:\.WsKEQKi!-i@nnn w֒9Z>y3mO\4-zcHSۮxl٧M=O@|{{{ĆC* Ӯ{xg?OP^^ebQWW_)[,vSSx"X-^D]{Y{igݧ4 زe N<+Ǿ-jE]]y睔Տ]]]8y$.28G(V,^7]u=*?~g*jͨr`֭x뭷PSS9 SYF5\%X;/XvJ f QvZOG}V͏AsĚ5sFqiq\㈌PUrjE-RN+ p8y$}2v8,Yo}vb,>躎۷UUU]SG)r}'>{T'NW^Slpm@Bˋ9K[{`JKxo{ D;wڈdغu+V^Du K(>傮5jԀ @=Fb]u8-ؿ? &lY 2cn|ߏHɑz|=-[wK(|bkzTP.uMM ֭[Cիhll;-q3q<ȖW3xS4fk?SNv'ǿ6NK{_R+ cӦMמl'IDAT nvL(SZ"NAxPSS?a,_lN;tbժb-rJG_n jjj3*-77|o۷AKKKkN/@2,)ǒvAeeeK, &N,EggwJWY,}N0/fMljR.773nSw{7,**ʕ+h"8q7n&455Ѝ+w]wfΜLɓ'!ĬY0v>1OFmmmc.?nc)8}*8sLQ攖’cK)P%%%ۭN!ncrd=8p2v{ܛ`V-7[ $k$~GkpJ#&NQ殹7lV3(#ٹjkkó3&O]Spڄdf5Nͻb =潿 1SKirq3CS/ IQ<]BQngtMsx{IP҄pMOpo2B9p5tֽǢEp2{N ۷!55!d#(jBԄ5!4ŋ ڶm]-^4wBBlLBw9; ɒ:d.x> V;хtKߑ5*7҅m[6w ! ~z׿2VzDҿ{X R,3vFy ImK72BjWī׉:BHf+wSqj; W/uBF(j BdLBHt2'B~,/5p#}O)hYL"Wb>8FG2Ώ}2~OqqHk݊PzҊh "GG=?Ai4 7Un1u4CF'pի M&4e'74!J>"艓C#h= OF46(ޟefӔCE_;:dCDRI9Hbh~πJ9i,nüy귨̮IENDB`anyremote-6.7.1/doc-html/data/jc/fileManager2.png0000644000232200023220000001415712061426050022120 0ustar debalancedebalancePNG  IHDRGy sRGBbKGD pHYsuIDATxϫ.YǫtȍBIhc f5Ap7\B . d&% $7.\l/)sOUWuWU>p9~߷}*oo}ㅧGoƨgZ{ʊV0yϗmwjU>QOFb)^}>گ<5/L]|?uYuۗuL2/I=3,w]<Rà@V~&V/;wPH|M.BJrҡh5x(74>IпQ(_RJ}lTJ[Ç<˽)އot,@X'Rlz\;.O>w\Ig?߉bֻ?O1-BƩC1iM2NMPSOO#>tu?l=(' '_K׾h[~1Wհ믿Εh #(8?n_\\\vqqqkX5?k;co61!0mZ%$Hy҆V4{nq}9־?@IV!NMXCQ2vy`xW"!dؓ;,?/}}K~7E<䤥lj iBאX5uy_8weνa}K_GP3)-_P3)5SBk M;}"w'5־dP7!3J/k;}%-=>>Iԧ,P2& X7Ӊiojʿt\iMqGJ#%znoNJM!z7d++[jf(4&SRB0pAۂ DJӓN#:VJ=/?׾O} XA4J5Í2^%`{V(\C$i }B:MH6Ǧ}J<$u}r>+g}wM b(}jP%Ν*=>vߘD\MMݦ\n?t5 7ʀgZjN3CC84&9G t:C<&cL~5M5:&vXK|BZC6p^DIS%iy%9ɩS>jM>]Ϝ,wDSf^|1}yu i)OZ% Hc}`QZelB[}jVD}MqN9)UoB)ϊ' t7ח)$YݧAOSNDSR҆si(ZCIIM}В%R>zEq#S>:KCui V(ϙKCYDr}jDsoɔ4ЮS5c8;u5@gn1a&=xn;QDǖN,~G-:^T@ظQ?`~oY]ק>-:_c*gvM݊cS/:_[*g(-xPR gzl節-:_c*gY51fFGz[tTΒ -T2)a@!j#z9~hw @WI@;;tfe)co{۔E$&s+(u!ܟ6z4Q 1eIR'$H]6S! lk!:x_#T-b>u}98-Eb۞ġ Crx|!hinV8ў%9Iq.J-:JnjMI{h@@7W?I(FRL1ϩB#NPp۬8}Zp˷y;6i鼡SfJ~~sO?[TOOLY1]y^)RZ#:F݉*M8 *& 'hېM쌰1S>.Z>C_?L9SZԁ;1r,sN;fpZ6r]Ɍ}$ԙ5)vTJgNXԕiPz j.:}h3'M3v5}:Bk[ZeCXՌSW&> Q[̵?rj9fSYAףQ'47;4皙9uНDa. _-ekw="SVVڈo \S֕Bsb᷺Y^ښ昱7 4Kg*=~_\u ,=RYwj-7%Kn\.fcةR ߌS!pW6tM:'簶I]NAZN*|As8',5FdiP:cS8Iҧ>ZkQok6@>0YJTapY^W q'4WZӒQ( ;u44t5fvQ{Au-c '"jh!G6J 4qH+v{bԧ|vOMhD U-./v,9|}֦ۧιܶO$YhqŎj}%"e~Aג&j֒`|C S3[zcÞ볾o\\<ްM~&#ɩMD"!euhL=[QzbӾ(a.iگ%J_}R goAE|R?"@VoH݋}kycKS`}+^=h>5퐇!>Y&olhw\m~rim13r38g),".Z]I&q}&L+Lޢ 1]RD-H9x)u8uki94%е_SW?t?z6^fcC?l{-f㏃Vd=~o _S]ꀜ|?Y^:Sk\җi>wg\dRWvM{blH?ާ&ǍY)qKr(.Jǎcwk =QA:~L3(c "DJieӡ}V.})z͈(=&VEtm>5~Bp#Kw99?cPݻQv_؅'T\BxWPl߻cGC[Pz ]aO:ulYd>Kr;b}o=otEYw>8=zkΰ径էh@1.#ZN&xɱTB.D_Ұin\'9yukA:decYnb3OqeVAf];l?z:E@8+LR2J!=R8so6\:C 13嚢ȖMzA6aϏ[.m4R:ze`bb^G2la86v:! ثG=xP9p{1գ?9Bxcx"j[v:.Y]Ctƚ}Nw0h!x).k)Z+'dmt|~=I6n`pV1颎]_.Aҗn>u BtL{#P5ܺ>Hȶ>}V;u̢v-@یp&ASzSjecVٰBS/З-t9(.-wߞ"߮c35y|1m<ьS"N5x;]W؝{\B0FAzÁDMqrrpc0VW& qFq}9 K͗9?o,VJ}zrj Љ zG=(Cs1ߕBǜZ1X y{-y7Y5NݒK/׾JPw=i{vlDz]k}3(ұĸů1=e7ƧjOF,YCCQЧi:5=jotF^L ź1kΨAL`SCo rU;l&gz0|K ۗ"YY#5;pjRQMP:牯*VhAvfHs9fEs,NLPkX׿<'X߆k_^ZYy#x?_E O}ؼ[J)~?hQ8(S곟~<|^x6L& yQY G?J ~äJ/ffICa#D&h8x/p4;oɟ~\h (+j ]X|3h*"~(d@H:K =}ӄ|hر9 ,c'L>0`hD0!ț!(`B3'Dr 9L9>l٣f'n ! 퍍8*iY(Q!P!3=8enq~ouޞcTNV831w`GVEQ4#P~Mݎlttt j;aoWfgx&mP:3gdY묊@`* r 2^"пQ*FBGGGh5M逢/;nG i{z3ldggc~#aߧa(q;>ƂG-Cg%%@Uv9ib`v}l.8iD#FΝL$3#䑂ρ`(YCJj2+WN'PS {wbl {"3렽=8#z\P ^i>D|::d//XyRC? ;L:#E!~)F3y& E+8zJ۾?t՚0/p `0;l~3=܈\.d8J y2"Bp%JhmmBL ~ G@rhh7+ :U5RܒG1'CMi&\xa9E4P)}Yƾ}v!Lp7=aۍMqs]>7:G7;lM67s}>}m̚5= 2Ɉ,x7fsmcP9gLB]`өhx#^3z0ݵ㺺: ޶vm5ppO;^H>Fz{{t:G]h K"+W_}Ǡ݁PX}_٬5vZ-t-6Svo=4ZzF=`:DCC^}-"*aԼR l:!x{zhO3zb|\Qma2^]jpZ$#ZTCN=} v־ǎeΙDZZZpLfdY.5{^AiE39)$sNLy9Aƾ} V~ /":;;}X3}]P,]rEfèQx>۷Y:Õ~ I|pptB#d_(aG]=~=n !/g#$eg+[^s\x0`n{B1bAQQ!= oQ)~3L&k߯0}tZ K,AQQ& G zk = EfIJ R=+L((GōX~#޲4F bc}2hkküyexhѵ3fLRWXzRl\sEAA~LQ=`~FTXמ3P`֬YxJ<9Nȍ/&?n[ =, ?:*+gŁvu/o+}ɸ喥wĆ p8abg}9{0,c̙PZZ:^CQ#?\ M!rH@[3̙?fªUt:ֆG^lNŊ+PSS~8$-@nn-[N(=̦ b6B⏰Ӽ˻ɲ!.6AvٍfL&KHY1׆ו#)ǵhc3ك@ss3X̟+n"f oXN7 G?>|GAoo [;v`Xn 7Ǐc]֭ACC#l<ь񠶶{߃5[;~e>/;~sNa0bݺuXz5!0NW}QYY'|~!9쯾>pB0>xw( 7xBqP8ı7fnxBhoo۶mc=ל _"{5 ''466'gksEnnnB'xDzy_mhQUUÇi8zZZZ=|p 3/O'ޝغu+{o73g΄,}F"*OD6G /2^u8phoO֭SOƍ5f~z yTPg>---xe+;#JޭV !RNjX6TV_M%I WU}࢘]]]|qV5???JF썴/6 x3L\J؟~6jeY+++q +++>XG 5T:.' rk򮧟~:uX4dϬaj$ iii?~||{@lؚmʲcE zdvڅ?XZ)UU#*sQKt*]#Gxⴴ4=W\qnauBXł1c谷pO -ĀeKoY/<Y"6.s /aCaZgg>9sNd ;;SNŲe JL>#^j!ızy' &`Ŋ+CދE-e\5[i_e &ᮻad"&M:?FȽY'jMf+ YTo%OR"f` P\\giz;' 3~r!ܧ# #+++Af_㪚>9 BQFaĈ1ˉk+[S=3ce^\}MرcdY)=ܣ>==ؾeֲyY6k&yhll~',}`|2a=Se9r jkk1,\x#rsFV/'ϕ[FZxZZT3)3$H^$rإ ؈'[yI%1xyH{av`ؙ5"?g~`z:"W?O]m~虏#Ba&F o۶ F0qGo܈n5uunkۅ4C'w݀6ք3Ҍk_; <^^M"`ݍm۶Bb`#ArN'rA񿼱AOOy|{4&X+/u9dYKvr)1̀%82~z*wlrX @/\^XT@\/"^ۍv㡇6*f w)"G|N1ĖQk IqFTQ6Dn !E!d(XV.1 |2@u+# 9z47З#"Y.J ʐ1 q6b/f$)z^ՊsO%%ڱ!qe+?R->%Eb2UJ0SQQ<1x9e/v)p)_7BƂr{D,C/t-J'"sxZwrey5I&X3CqؤʁO+`HK@OӲG⁄cnBmqIΠ)+9ʛvSpFzbSjN\vK+zB^r4S22 6cHʱ-r{D]V1epx_;KH\ EvT3ʕS,\'q3ŘS2@ rϤj^?ssj?JD :TUnp8k`J K\1 ja7W8<2N_ 2SOoebr5}v\_,Du_w+4ۏq<3X(7N&l5*u \R:_%s"x6C`/F@ko,W(ߕǶƐY=|g|9N,[@1I2MΩYjcmQf׻B@WJPSo .``8s(Cd  Eޫ_ 8^t5]g ^! :\2"Q: ,OcõYDvF&z@`PSӀCs<=fqBtkoO,DBNR:̖ʒ~{amZqꟍ׬ܡy{a #i1/)3'avZt5 n7(fX$0k6§okPQ:;.%JCڌ8bLl8d2j/'Պ>_!EֶKX҂A< *jsßW=' ٿ:#Gzzt`g6F?DiXP"o*3g&ǎCOOz{{ٌ==ڥYƨ*|>z{{9D(fTUD  3)L=3!d9fb&$5(fBR=S̄0g&P̄b&d̄Z턤{g&$EmaD1*٧>3!)LLZb)BRDLlBLI&4EH*2H̄cfMH @MIb&BLI>3!3!dHsFI1KFHxf@sfB0a'$E`8B !̄zfBH\(fB(fBL !3!-fN$2DP)fBRE3!)D102Ġ !C'cf}fBR$cLfBR#̦ aL !ɄkJ 0BfBтzfBʙ)fB !3!9 g& -17"b 3B3B(fBLLb!̄B1B(fBRb&$e<3 >a6!)J1BLj I(fB(fBLIzL1BLbb0B !C$cJ#,NHjyf:fB3B(fBH#mT@ g&0g&P̄B1B(fB>BKrr6!)%6!!)UfB5*=3!f32,I0̄ {,IL˄!gB1B(fBL I]!)czfBRb&24=3BL2pqBR53&$U<3LHj`E%|񦐘/"\zi9[aHɬ!1 lBs& d#Q̄3Bo I,O*__U'xϦRw,j7!$Y'ޓZrF q2N-F{s= =>[/ꈧ/)m b 5چ&rBN[H0xMTtDy/~d̯'2('wQ7\Hlo-̉x܃6U,:ֶbi,vҷϟ޾#wwl1$I\6lrftA0FGY\z2 n$V^i&IoE F,ΥN7:FPD~R#[+\ 7|u5NW|)>MwU2no) +=K65)AӪ-ap-)A6,7)~G{bJtֻ>mKwz hO59BVpjXԸ )ⳏgTK1<:qKzԯ|IO6%Bϛ ϘrTV >^QH\!vj?MaAC.q!p8xU\ z}\4ҨBo8Ƀ#Q)8>y0^Q5_^z̙UZ s+ek!ߙ6}h [0x}}-s&V4CGHqnF_v1NkT1-x<}xUxj 33 f@WϘ+3 f@ f@̀1(ji~?? @U']4RJn_m,bgG&.om 0%0%%u I J v r I %(bÄ2ཋAZ&H{/WMcy%fȷ-Gb7pda?ɾxL"Yjߨo| !ov>94}l2 |\1 Tn.mwTv_03,ްVfSw]`fX%h+g\Ęfbw~g ^?א)Wy f}U^|c[*+͸UD]Nʸ֯'hkHfhIǮOFzvڦ/Zl\~jWے{e6PfH)E603}u@srhHf:LϜƘC0e6b2 IB0޹XqDaLƷQq`@M1NVnL@E@q"D JD%,p!΀!R DP$BTD_(> ⇢ՕN9?4r{~oΩUC#Gڼylƌ6f;v7oڭ[ҥKv){=|J 7?[冬AԮqF9s ޸3m4?-[߿o/^m۶=: 0Wkk-YV\iTWOѣGYLގ9b^RFC էOkooKZZZx EǏ[ww_Rf3alg:u@膉* P`-5k֔RM6ل o=24qDFk׮2d16ۺux{Mkܸqw^4hks>@Prv +ѣm˖-6p,eaA,C{nƵ۷ooa,22+r|m7LIǏ۬Y(2r l@ضn:2t7Uϑ)-2%" L4c4Vb#SZ dYeur=|y*Y$ʫ:˗8!ȒVΙKs*%~ XE΢f@%+,q9).x׮]v!u3g[`+^>Xm{7;̮ PU/\АŠ{E]`M4)9DM.A䳼<ߠ&.~6qsK|'Ju2eJ h2FZމYuiU?>=Xb1=w_iE@ȞOf׽{t_rRآ s腷RHkŋ/edxƯ9p^Ǝf*={[ i-^ls?t| O%ɶʜ)wq )^Zr]Perb'!ό_SrRKcʣzu9.ѡqr7Xx/<q+ɠy׌SAfL˫jof׉'*7.tiK%xeuiW p9@'X*&ŚT;v찧O@c2a6++ֵfgϞ@#@BE Bjr޾}{4aԜW6wC<|2 41nz,͂G0sa?~<k#=GuÇ1A)-H9zlΝ~Nڡ0u]C]M Ҽ{]҈ghIRSHY Y}v7yJH@~5922JrA.>g,\{r|=bv3 \,L|r_&ӕ^r/q?0dkћ,=K۷)mΜ96ydtgSClazW^sQfړ'OgvY ˆ0ܕg4d-5\_lߟ9lߟ!y3'gv\=o=̾? gNT1IbL//'b 0ߟkgfߟ9}}MGU)._.D I\!k5" u;=D!=3 S?$IG̈(#tʺݩϋ(U13.Ϲ/ުU]i8_s}nq=~M6.ڢOᯏ7?lg R{ݗ)LtChԟwQ7Xn #bM Fޏ}Xό+uE.ġd]O]Sx>?+*f.ٟ|Xg(O[L|Ӡ?3gf~e==b1{w]4ɿ5ei;@\f?sp,^ xܤ7uNgjvvn5%fgVҘf&OtXOb՜-k~(n޼ uAsff&?d  2'_+c~ r$#nkW MgM )4 Wٟӧuf)-*ۿxfEa5ow0g5Ҝ@3L ,*f^y--{g(xicWq'&a깨hi4?-΍=AfFx~f$l?>gԛg=~Ob_, f~pfA?3>xC?gf~?,Ιٟ]02eGn|'f~cC1?bkȞ3?Ps/G^ {Kd3:}ïIddG&qRܺu fl8z(={V6}ta. >q z l1_#k&ϳ?28um.8EPM`_$)|瑀bEd ss{ acym{{B> Tbf}ZǫRf]s`|yB/x]Æ\d;m62$d7&M B@Qr`2+鯾vG6 AۢDG0=pabA^|@0>H :` J+$zMR5gl9-N< y#|- g`50#d,L])3Y#SF&U K:4|mv[nff:Sc Ae5@ոP,C ƣIK$QzAf:W—&h1` #(!N2& `=jXQ3J3]_ځ666r10>n)ěWzb~O"WC0lZt؊C)(صTfT)KV8:Lݟ_BnñsB}uxn9nṉ*sl9VgHRznNՓm0/C+>SL<&yA\Y00[1 ytPBV~^fdazy dH Nfh(2\qL9t55?3g5&%$fX7w8G0#k.[)yVI(Sr)i8;R8OXᡮ4%zw'gm #@RlEWӁ%+^CbށIcho.vKׯO5Hpz+9rAixsaNiL# ̜A&_*+h9+UClgf/ryĚbD׮Aj|{Aܵ1yͻs ~59*'yܥ>iJ-Qy&$Mˮl\Q83`/r%c;/|3Lfn҂M2.k=E,㚱S{#Agղr[YV,,r]8Sl!32% oM<̕]yw1̺y:XGepE -z W ," *`"xk ᔢf=/杪>cxyd`̧`@4NG.OEIf@ vk峎CR J2;h&3O9BC >X?~Ц!A/.B(3XxcrBs \C2fxJmq:Psh\|qK7"uZB9svgCaWSyg(L͡m jo~f]FLB?0Ÿ$:{lG'TE(Rf])˖fӕтawc c*v0@1Ϛ?z'ycmaq2B Kn(PdH%0݌.o rb(=uez.U]{vW@F/HH4"8cOL@~1B6[a#$Bwf!Y%ftO,n܏O~qZWv:Z%6AO#ϱĭӝ.>w쮝vzN%c5X*|{ q˵MP`3|Bt]J)1B|t&Pq┡[˗],߇?֫Ga/q~(Z=6N[_[ 1}kְL,XםIENDB`anyremote-6.7.1/doc-html/data/jc/themes/oxygen-blue-arrows.png0000644000232200023220000002610012061426050024651 0ustar debalancedebalancePNG  IHDRBՀe,IDATx^A0ᗐGJzO1Yx.gN᪫Yh[P?/"d'fw"an4m ݵLNi{3P>b~R&X, XQ39E`FciO~gr=5~gvҾҐӘ5 @{{5Wgn ѣrIxw K"frv ~4) 7^#-$ z'3E a d'wz]z#}r-baBDJ|& KK,K ʍ B%l1ˀ3 CH {ߞkֹ8c;k[ 9>~$kax;^kL+^^H|o?vo335B]mva=׉=Oo戮Q'rzu]Kr iJN]Z~ B 2\Ȁ B 22}ߗa~~"޿f\}ef  $d-VI,ҧVr=Z V=[ (zӺ>]o=JފZ !ɚ$Cnsd=a@$_x|k{ko],R޴i6lPqƮg#%?Wz>yWb%E.|^o qei5x'4㩧} ܺf3e .d%\z,X=}ZUlc>KVRG Y;Qz.=/_YNg7m*ӿ4˾33/`,~ή2$;,[ZT~ܕ 瑕w}GGZ%]&\81s&r%c0.4{[ g2-<;sT Ʈ*{֘r5}b Do .5=h>ԣÎfƌ=:?V0y8Z#A-&ͲC-4hnlZ8Ǻ>mǺʪ:TJq=BLQ-u']1hc@+ZȚ AڱS[H#`/kiM55ǪFcc(1liL(\Bqq!HZqܹ5M o1RϦB֤OdDhp!d}f$0Z[!IJYOcLWHW̻eK?eN[? %d4u4,ϢgDcZ4; n\:r6H? LRB$LlV"!f!alJa_9BgFnT,s3͂ŎZ$JkȀv!_c&"k P 9a%RH3"VHR6~&Niz[ /x+s>fF_Z #}L1UG/}$:"k P-ZZ=ۤȭꋝ`mdgY8ltϤn'L` Pk bOIq@{@X:^ trf.%'j&"tbqR5fѣȀ&fKG: a"V+F0KJݠ-hJ.o9\u ~#I IEM 5}?ba 0:1,`f!i'b$Ym6.Y9m;0VLhz2Ҙ&4;N\`jn 1d=n.B$ %d|aRUu/MHRaEZkv͑={4b5SZ `ttX$qc k NSRH2JDQHmz%~d aG Y~z"i#22ifҙE03vKtT'Rd!7ttt0dͥAJ?6he}U_ףyk5555^1)GX}|6'g9τ|V,iⓒ+W}ַ>r> E,R۠hx2gS` ̜!?9 ?ޣ?~<?0f͢-Vj67.qYa;TSrժUjF5\"Brw3Ly=%I T=Eh1)%>_p=jaAYe"}s-d gڿW_teiooRE!ѭc!Hȑ#jV(? ͊SW_3B444cp80 C5/WUqw_bqS" AÏGyDE ˅K۷s7v=kU"t8~5'NPIϧz^6oLaaAodOsG YFn׭[LJ~/W|Iz5e p{#M8V(:uQR {⋩\RE6HlI#/8gט#xB>QMB4眈z.͢Q䷜U~y sFу]=I/`?v{U3}6.[[$9&+_yzE +E^x|}A ,^ o9+?z} Jnx@8'ϑ5;iO# áfD )=q#9QAo8BVX|\#&%'K)--AJJ4DܝsrK nڰ[2@&%kJ)G2:k\q^׬XdR&nz?z&*XTί$?vqsR(ϥ% g8 x55l]\u,/ A8a+8('h\)ڲ+?n6|3x-.؄1K zi RRt43h!kl9 _!`D-ɱT6O!$>W8JI SMBH%Z2N;EmUaB֨//>Њ(BRA-c {u(=.%h*=Sķ'gۑHBO7LK똡v -d6<5.\ >/%~0\ OQpja#?>Y]oSuj!**y |~Bt6 xn'h!k"AhڃWۥAݞ+jM`~?+GA~h;-dM[r矩XvώK,'wx˟@NpwфN}h<ƹt{:9gYGYXD# I般HuP8e;6LٶU#te+;gYc(!߲q.s M6ae7nzO}vN#fؑfq9\}\Ǧ7g(o|t`7)]%C~~>?8$oCe|KIx#Zg./ƞ5\{i)!$BL0c׮ͼ9_8kVxX3QV?̛77wbD(.^Ho|{\5SO=?;G Yc0vtfO]#k`Tܢk2no> >J^^~;o<-8" 40J+;UPSS1.dMz`E9H!*o0&r־˛cpd/5He ̺01s&➒˄1T3fYp !r[.W@]j#=إϷ&GEl"b,iv[+ }00R~$7T0c FM_?V0y8Z#A !P0-vc]L`c]eUC쯐5cGڹ+YS]FfL/q~՘` %~(h41lkiM55ǪFccĠȚ2X `(Q 5H3_>~ /1 !zJз5ѩHW4LV2-t_Mgh4Rqhl8,.Quutt0h!k;4{&`ϮCTo#Uf#)yCUߔ{֪nzjn ,$PP ZE}¹S? hR 1nWu ;ZȚ1sLi2 .`0կuس0M? S;V!DhyIa2f80[&CG1F1) :1)DZ8m&aE Yc)|-%Wv:h2 RV=9c0Ǐe 1c}3mp.-A >1' B! \HQK ~r!{0DB5-dMv("鹌JlN(V+JĉȚ}NJ[C"Ȅܙ@OR.wN=JQ fXvV60FLXh F(oGc}E3u,SG%znew2Xݻ FWEn B+}~m۸d"FdbX۠%0KXpL#3%!u ;91$ 'TLA^/Rn g e&VWI-[,`bܽ{7GԒ"&o^&vM/R왵LPj+#6n,U^1(dݴEp*OIo|.SA jpzrAMǣY,*-8F2֯_#_[@5p$TurHƒF]4--(YP>r}#kD)5rɸtڷpf/m9Bk5r)B*RHp:I zTjի{Y}f6a1H5M:SRI131o/$G>ʕ+2e ?o%3sN~M}kmm|Rsq9 ޡUjF4),.fҥ\r%}݄a:zZVONzn%0u糼\1X~з=qo nw) ;#8E$HR| mG No8r7|3^Jw0wl.Ǐ7Ǝ;(//̟?_ n"33@ YGvi!'cd5x+{l1M|S'C~k+;~!˗/h^DÇR~vUUj7YE YA5gbp$':՜~؇w_@4v 4"|bN\x+7fzQϙUd'߿_m =hv>}:o6'Nh̾ YS1H i>k 3=t) B1! ފP ";r=>3 ڼVz l޼cǪC 9+般iik  qxW8otzcJdHOő1h>J F65VĄJpxR[`g׫d˖-Nee%-h Y wI&1dw7q&fNS'=5G=%peeTx"rx+6 }UtkUWq,*O`ٳ>/,[naMkn MA*Fa0'o\S"nԺ._GQ4KEv(Czfvk Q* oFU N'e`8gQ;r.1~>?';cK'gT4Mi. 6#Ph-)m42 l#oo"a)Ws*<nxd0TZwy'FG?Cc\s\ߣohƻ.dޜ;ph(uZxN%+ij\U6F>v!illPTTѦ:g4 fbh4~x{^DljϤ#%7?%kW3R4El08qjN|>&OU#ёl5l(ћi6mGd GuG}ˡAo"AYY,@ue5a'Lh Y?[aS=}35ke*|BQYYFEZH'wE`5YD#<'|™ИהDȕ18hy\8J\y@@oi9?j_zrM4>ucOu}C+d o !AA@ S*Qح;fXbBHl =Y\{Qb1,`M3aACkMh 2h5jawq%HH$x9 pZ,< Պ4M":bB֨HRҍ{JJtO&dH$'NgV>wY((5iNL)ߏ+feT^f`.Z7W+N0j]RbK*UZ@`1@|iʅ pK\?w4w$.%"NbٵH"`{CH911w\_L' x%Y LI_]:Z$ɫ"M dNYBH%.LA.0kAo^qV;P-/U-Il ,?%}MRY@NWA֮F${Y%vvyav:lYV;:A(,&t381w9.W^vzMN==<(.)r@\+]i8QPs 2RlXlvf%emm7ob[ )>Wt":42"YAbE Ds6O9H-#pRfT$@ w%\xQ֥KT,$I]G'9* (Fs&BFBA7S'g.4n='q "EZ!@ιF zn.=#nkȪE)ٍk:a)p}[=F@Ůb+NQoצKbW[8fY5=Cg5v!E@yW:T!21$ӥ%,+Wkd6ma$L o\Q"OFj2g j g YV##% =̚vK!Ք} s%5OG3"o+ni%(edƭKز&B 9#hi@Vz&TEgW3 ɜ*Bx Њ_m4b1ؿw#Uz&"7w"(P ?5YJDZxd'hNHFHTW?m{8 V>&|R%xj-?k9%#tˇ|ȓ<󜄽=6?ڤ)[)@liD$~<-: E6~Ua//ϹLOGNA2?^V)DsUTPgW9&^dYHDcC?8Ӑ@CUEDƛK,I yȧ_YUxO>{ |1%ȁ(}en!=m+8Y4p Ǐ[ĺ~mN_^p2:E[ ]-Cج6C;0%q-)Dtkvы]etfK xm0@ckI#Ǿ~X+bk4Gb~R&X, XQ39E`FciO~gr=5~gvҾҐӘ5 @{{5Wgn ѣrIxw K"frv ~4) 7^#-$ z'3Ea  Hl9CwKGz=BD&#+,RDI^Zwx<rr۶ "D`'rIJ_m7⩗*~k=t_ XD_+bfל5jChT[9 ! /|Of>8xmO?:_&u:ʁ nx>') )$! !҇beL$k۬qӝ{wF:{9|3\ߏqηXYYA{eFoԁCԠRBy0;{CUU8>d2Iπ ad^"øyS&q,C"CP!`33DaLa`a"qS܋;a2i45QIL|<U9 4#Jattz6W#P! bhn`%SՇDە6 .#P!S/// fL^ ņPoOmUkO hB&ZZZ& awxE22qpp}P5ͮ0YI( bb u?d޸!cê%#T ZO~zۘjF%Ub+;cكO#;6 f +'5 ǯP1/^b}}׮]C Ng(1fDyfx&]iӲ~u,~P YT:h㑵.L xc:T \-J8l܄Njg?_}pW{OaRlB.sBLd2>Ld2D( lmm!w{Gqq;z1ˠ8;hd0p$'6"њq9ȡJ*W`9wITD\(*9JpwkELCćã@bAY2~H]ٖ-[LWyK%ڵl?U]e.>w kL⌦ȋIG9~tƟp5MӫډJn/Q5B֞P] s']N^i:Ț3kaCfOӐBYTW z ^TY`S\ jR?Ì0i:T@\e83dupj(*k~x04KeV-/-ǖs˭qW3n r .6pR%_y߄ B̥MsWj0?f㭻- 2N}7] Q(0Ȁ*iն -dE7”D,U*( SCQ̚5ˈv \5i9.m`Z\r56%DF9E<0!TU9!P\l{euBRmסCJIԯq=ݫ[B1NHW[&z9] kj|]pޜT[ A8'P s*##`T!}ok_E0JH6d)[#$V7iC/{OOpX]qN:ZL(-^$BᰡB``߆զ0p%nl2{iղI݅\}m1/qzg!U8q% AKLZgݐ| ><"+KMhh&+CztLs j5v=hNN%`ΥɪU"UPRYN1G Ŵ\Im-ok3,3V0DM,;Jm]G" EeEx`#{LgƳcvu0F]D4V 2wq]W&)"/;*RmTNAaȠZZR46B%t:r\vpuԮހcbGl<0ғr{ Osj芬͸g/IJʈDhDz'D&$`J ALڲ d9YQ'A056qĉ;n,i+Ts횚x 32VdoO .he2ld 8IL{dxBuCfiƪ)M`5,J6zt@GKf aIuMxʼn9 VF\icWX6 ZdM0ޣXa$xt=ebUG0M`(  XLbnnY®pPV´,ܸ#, Ӷ#+,3ˬW!K! JøC9q`61]HJ(\b/_#ꥏ<"čŲ]UiGr[n kېzȄOv"h^<̡M !{R`X2i@(An k~;~"n]P 6 S MΥSEʹ7ֺ<"W$2|߆عvUݿRk!.|QY(L9z[ʯVcB -K칸G6BdW5e\ %q8em @0ҕjJJL5 mى z@QKWd ݗ";<,Umiژzx< UEIƘ\8ft[H@ 02N&|x3قJ#: XAֺ߂bܸ넱+DI2z7ԭvT"LbBJL@z=JFLd]<cWXJ`0ipVGH>^F8:1H{`]8;;qA&&puV.(4F 1' uhtl} t YcȮ멗>:%|fހbậI8EY`,{o#yV eô q#&vbD 0=~[S4)Hzށ㌅ e&NF'P0 '!&pAáVm%ZmSVV h+쪆C6#78^2lJZ7O*/m&Gx>X!DFم>?kakS oԳpә+o7 <ZkMYO#>^tEοI|v=E*V@;f#e"|:Kpp;>yuާaލ ctE&/bo>ολ7üf-w-\EdZLn芬;OA󘖺n%ErS=` FAp*\!>OK> iS:Ț 1dž+P!A~IMdx"~? G]ۘM kR9 ube0HbM5L5䓻z5H5%ع! )KQkzcE@3%,2JKUdy*dP,ρ#;p\$+&O? &LKeH rH$?I+p "lPScQQY4y@kzX 5A֤d|f_ n {*+-ЁX/Rʠd+X^f#4lu<7>Ck]5ͺ0g]F4Z)Tɞ L l[`[daLfhL. k!`C·Eˮ,FSIZMEkp.3$}N2sddM_@HUvy8s I&hh=*fp}SQB<82#W+܋Qר u 9Uc\ .`ԨxL@'j0Ӳ=a=˞WD9F͕Y=+`H|N\PPiφCR"X[p٤*2cHvBV44#́ЗiF^?^hB*J9u pQ6+xB+!(h胬S`j!LuS@)?mRx&s݌~hw ܺ: "x 7Czr4s;g7gkLAoB9 D!p YyN@8zY;] }/YSݰ8yXJݝ4#7)]jXVd!0Z}0s-Gqc!@x5~i߇ 䐮Z #F=8)X  #gy U|mōZ6uuH qcؕᜤPp bz;}xoA}d=Xuh}~5"̐tB,F)qb.zhk]|>KuzB*8wf^-\˶#I01D':._9 kIܧdD#X @/$^@_TA $׵ \H-%^ N\@`NrbAwKBJHrv`>|OD_L =w[݉**c. D'kƭGWNغf OX}N\Ų˨.yy?Kق @j'9+fLBJE8 )V@ߩ6!\WRAnoW` $إTwɫ}5H^M|r=sBS8aF4&{gCw8‚!m0$]xӟVq3"kg/k& @#^h$2S4=g.Ot더"LHW 556 Iv\v?nT9a_@g0IFGZ˼ FTtp`*2Y\>̼K|wA)5fXLAdZ||Ҭ4K\T(vl]ZKP(p, .@cȑI){6XTQ.Tz^dO_?wu&K&ڱ0 Aq*Rd~xM`_#i稵nȝ¾|zm'.RfCccst^vHa  gCEw%KxjVޠ<,E @t\ks;GJ*qkPص9bպ0 Q>17awcǟ'nN욵ME`Z敋s4P"X;_=Gox_+Ldr$V D֗Dёkm,G. wd\9zZS1 T`l,' 30:ʠ*/~KidIǤNLp=s2g)EҦU@hFD (? ^>7tEs!]Jb7Cz//zXp*(/IBUMqvN&s 9TK˖J-?bAKW,yQNO?OfR`d :^b̔aOwi2h?nIё>{Wod_~/Hl2'0tɓC0Lh՟bu].Xn+TG\Aۻ>~T|l6WJ @>9ilOQnh*`7@1Ɀ|>H~ѺK!@)bA^lfs6s?A}KGboJo曛yXMfg)zv\12{q A7W{3xlf_5 C-\/ p|L LN[؇ @"6ty*ijK _$3$m6˥@P1 L13e*<ܛ_$1oB@~\WV $r`¦A,Jv(ZuV-(wenqK`65VYB.L( fYY;1!MrsVsvq'{>+(+W~czz(3 ?iF<5 f  d,Aסp.Un-tW8ӱ&.zg{o ;g^ U#PvR~ 6?T^&?ܝ9P,~ըAiPX9,28x5I<"ׅE8"A\Vc5 j"~?'\pr Ap"G""~`7`REEą8"H~)`D)'J%1`'̷¡`CMf_g T[9trūAȈQTX \uZŌa0,1kX  B6ʉ_a1T'kC6l@g t.s{A.2BFqCQE\{el8۷?Ǹ>}fqL7BpwjlG1}eR ''pXRs ^jUP#J0EZuds/LoobD J (}@qBW/ؾ S%s8Fϔ*^(bŊw2w|ŜQDXK@>YLz F!8p Ey1Fw%OZT~(tgӅ 1]YqQdyF$X4(^8M`g9]8y Qʘ'r[h#D(@urQZ6CB$NEI+)~f( B%N|lW n EVBsHP}#o=e51ĤZFP@P/UqJSPs!rES _Vd!DI4sjIfFRo39e2Wtݻw2 ,F"qUWCDB+(!E$`ļ '={v2x闈ccP܂6H-]$1*-3,u]w7" T [_{wL:&;^4 coxxDU|Nh7iʉiEP_ tt&5ؾ};w>cEO\u-b['0(ni&%n%Q+i{ $I%OGB8n}??% Ν;I/DqܨNkV+/oBB nxv]wy,yJfQ%f<~m'Z߮9|9󝻛ob'P@gX`@ B[ …Ľk$(JNCKt:z#B1"DD@G=?mvl /d޼sW~N8pcɂ#%qP -tu@M]̞u6FXq֑q#EU9vxgZappN՟@oeݸg)zPY†F9ۍZ|j#B$`@ɍ c9=&<MN]ޙGowE Brhp 姼#Ŝ%B9U%S@1ƢQ\}];~qx4ZISr}t7u4 ]H(@7 j Hvsb/}1ڶY46cxCkOXR O|}W&*p 1Zcُ& )G}^|ًz=mA韏:0r`ߍ7<=o7_w橪??AG^ٳ0@O]؅8ad=Fghu)??AGN5Ь΋'s[+,vM'P>4oן@y#{8Y'SLeԻNwӣG'"l#YЋ10|hHv 2#YL>YE#Ч.u+GCbYNyqޑ xO9?Yq!"$#|l%5h_dϺƋVWT3"'j@7w'E@qG  9n8mkþw7F$F-\sG"6\QVI#{Ķ: {o1.~v}˷/ gOW@ky; "+T>r:?2N1}pWʉ4 -PRP+x@|dq@A*y,wu+r]7%˔BkGV+qDS GF5#+,&/r+o҈X(^ q+v4Ccd<"oX5\諘I?fu<',/Cǝ,@9ۡT5LS_TJ8%t(26u|y/Oc*bXShąmp;5"w>QjBQЅHH"2ɑ<y G3+{oω"Q By0 G- w?Ū!r1Bh#窿}., 0QqTiV{.9G ܿ^8Sdr10Pb+vHȥMX G}#}'>r[5d~c{$tGB:ADi 7@2G$|l;w"ؕAPк [G"VǙo1XWIjdv+wwpȟv>oȔodN T|U=o=͒oyBgL}>Ǚ\>2e%DM9090_=ۙT?ab- FO|P9`';|Eϰ\5򑯸⣬\A/Y3$M9x sg~[yo+~Xdژ9KcEzg{o@93OOۻ7ט7+9,28x0XdS66ȑ_DAEx?0m|_ BC>Ty)q"#2GQ@^kWaÝtpyZd/EFQh5;n:(bŊw2w|#)V͗O?H!#b$>i-]ٓU}(vgavA,)*I|#ʈΞ30&F.qaѢi&s93}<*F`'cQ9oZ*A[K'4iF B,4`D"@(9NʑZ_UKFoks293;sdy*V2%bz%JO1`q,wZOz~vx E1H{n}%*TC>s{̤?+'qA:ܦխ/&4G"\1:f>ع⨭rK/m+$Z?Y5T`Sn-mu$k~7 QCv2?^Eb#=?[$Ռ T*$Pm!9QQjH!`)BFI&;t~*F mS5.C1"'f|W^y_(H :Tdc qm[”-B>6 R- 9Jtb$z)3D5[kBec@,R*ȅB\,~O[o?_I%^z߀H0 ~D#¿/~|!8%tS=ԍQDwxy)˘$Pcl7+#W*nQnr )sg G>vEJnhQ+xI  9#C]M_~ہK%+ɷw]l\_ν>8F"%tИߚ ]>D5hGϦČmrVwlP's,vf0B[سgo݃ (:U-_gj93>zbB\ik|qX||+9% R_ޏbcKv@Wl>s`Ld;مݾD_SH͙Ĺ Ӌn v;1 2|[q~nw,%Bq KrTy\6%C_YD^&nw%;8>2 ;hU6󑽸tYy84<0Pı#/-B> 4Cr.Nr,m#;pZ> }t7}@TPD%NM|CGNO-?D2Tͷ~\M *!S(p{ZЁT|i9?}r242O|q1:1'nw7 uG26P$.BtiOD+<j-D {slz7L N#n&[Nb!ؘ>ߡXx l-n_veٲeo?0qsE^v~{kBak]@M;tZ[ *#rX8J6pzʉ%1Э0gXDN޽6 m@hc18ᄮgOȁxd2*HR"71ڸPm . X^h oQRRK2*HOCgh6\j>D"4v"{=d;qPK<}Dف9jV@%8AUiGbAR3=xQ)QyK^$KUYg\dq%o|ȯ>(ٸ}?gƍ|'$/UAb2Hp>e"̞Z_:W_}5/gmЈf.}Q .r:A2|G6sm?χ2o<ڡe )M`NY%<ҧoAd%Ts {9Sy䂬Yup.Z!p`f}dub<8+%kɚg  ɘ75Gv={Ϯ 8H6ʉn|`eʓ/$cq5(V7XO]W.>\Bn{v[Nj2HKluӘDqDQ[Z/uBQhHuôB߯|3f`&%`ox/e)W#%i5($F0j]r?nubHݡ90*mdOV?]9Nl#N?YO$͉A s NCEVhjvS;jG᯵]eljO>)r~?(?7Y u*JhYKAOCf)Hwt>~8K#`S?37,f2a15"fz̀15гX zlf tvOX f`3R+ 1=P/33>f_,3:' fA?`U:#el tg#@1f2,3 f@ f@̀@ 1=e3c6 ff?3x] xf T2?,3Pc pJ:#+Xf333 f 0̀1bj?3 ; Xf>p63 fn XfA?2ߥeLl3P3bs1  3 ff?3R9P.+]9Ӗ|̮ Nd@\ՙX f3 f@̀~@Xf`;W 8N8c\. gاC@/*OvU%ݡי21?syAN+1 ά*n K,@og覿,J3MRL;δjenBC BU2BX !zL+f^ qkIva4l_;CbAst;;BQ\OtHW~y)*3eJ'8,!o^uޮ24f{G„m!s/ez^ꃱ&*scYgwz{mO/2&WIV*BI~!(ߛAg8\Lrz_G2ťqpsQw,hؙ#r>E1 "ܤD`wz,R? Ts4mVLSFŕbZP,4)iZT$2fI|?kYf+tɷIKHKIENDB`anyremote-6.7.1/doc-html/data/jc/themes/bluecurve-player.png0000644000232200023220000001236312061426050024374 0ustar debalancedebalancePNG  IHDRGaIDATx^=n@;q΁(#NQ7)(Y I* D8FXLfI$uvr%~Q:_)FL igSlQTkb{;wd޼W:={f$VOq񰞀=n?4^v:us̻ͮZ(N*M3 j$?V)GG @#$K=Lo1SH;](_|Aż ݴNNPr~|~僞u z%5 _\p^ $S_,bXhd\N_zZ^'ݶr&΅몊}+D)dp۳/_9f)˽e$&v}=5|.3{h cؔm5nb >rύH32͇ytK>>|}'Dq߂82Q % AdJ8FNJ@ؘS>͊N |dUu0o~=ڶM>%OA 臃Lh@ЀAA O }FUI?tAH{Rf?4o;Y.a\vH0'$!q&7 0$"f&H,"!^XGp!T#G眪84,b0pY4 iCCd2J%2 5ۯkk8sUͿT}yo )%|d)<C@x}R@obb FaA&w} 2{zID9Ȁf,=A ٶmx7c'Mo\e Xe򼚏#:L ~!AK)k "0+J3 i{ X+ F ~HBgJʚhʾiftUI{hM3P?аu2iߤ~t7UQYZ0\jͥPvՖڏuCgsEom}SmhF45h{+N8 %Ќ"j?XMͦ7 vp@3!+Gßoisdo5q TVkac'~ ֋Ţ7 ]{~ BDzA8Ih`~]$IMM͐`svmRׄ:cl<}ivw?S:xr }T:|P:Z/8М]%q//ïXOIn-M[WH 'Ɔ>gAf@{hODm3Rn{SyxP+%X2^;Uu.MPX3t F ZO϶T˶!r9X }FkUWA4Ve$9-fߕSŢ7<$9^Ks235 $26DQʘ kwܤOkj#Wyxx^EBB"@^ ,7HȾɺ!<@ 4y6O T׵մJ8ɨ{s<]Z1co-4k9@(foomh\e;::b  vE׾#ԡk-,,ٳϕ Ziq'nmD^½`OMj+PS>Nъlr ^:c1!9#Oo#] ^+\7?/GO)"Vq3pCxF@Aq{|9oaY~y_A?!hO1 (1gF qBA!b#b@#f#$A>㮷bb"vywpssEn!-B;!l%~*}2?B[!20Z!A !$h!-ȥQB9"]{ f2~"V-g\s['0Q!j?eೄt %K8YB !Q.*^)x9>4v&燭qy\E(-cl̦1x..zmzDHU 2mGJ3ΆQ@L $:UKUP ;V!b2q7 -C M0!IN+רBg;uJPtLx@ -(>sR1/ XIe]w' -hW&.VZ0NJ9[f641 ےD>d"6Ĩ2IA|ۓ0)9h]Bca(J+_*17ᖹaxdUuU3loo/Y,-}pyy!6IbD^h҇)ϡZHG BHH- B ;Ȱ!Cg]n!pZ!}ZAw$l>gȋE9a.FB }B:RDIfy2cXh̤j%h2Y٢W!Cnaݖc>?9,`4MaQkŒ͖<}>4,a T|̬ 0v!0n/+_ݱ@6#B J7vw6)3ñp<4Csi>vA cGzWg 6c(lĊޔ*8s܄QvJ*= uDB q`6eU[_ GJavm1 E@> $%XRLZjV㻓YB_#0,K%2ڝQX.f٠"ϒaJEU?\NeGZqpHji]X=2[[憾垊.6Onj2ŝ󡹿?|v@QÍy08[R&r nwBlX cb٣<Gq0r;s6940~@ u@Chj+0*`*9#75A6hL h нu Lm& ~en ~`ACSЛr L h Нi譭Csn}hh@h@ފ^Oޜ]lRCS1JLa sI`m%roq hh 4}Q 8C}f+S[g0r@o:)f`r: {O@C@w @@C:ظ@=9wlLCӕyfL:1Nkh޸,Onw[)Xp̹7`l0r@ 4 `f]t]roz. :BKxC][g`+  tN=?Ѐ R,8:j&'>uM_:6a ()\1$v/Y,z/ s8A!   RPRP*H IKOfl4?㙷k+cOi !rB !< !4!l6p \B0o}~ X|H B0]^>< vZC(QryρZ3M7fmϯsv~L Uil0Q evq.ogBvCmz*>Vc; ,=uw\U1Q/( -J<=n43D9J\ڷ5c<IENDB`anyremote-6.7.1/doc-html/data/jc/themes/gperfection2-arrows.png0000644000232200023220000002022112061426050025000 0ustar debalancedebalancePNG  IHDRE9 XIDATx^=JA]&+;SXZx)VRy0C# g'E,3i̿Y^_M%˚du_}X'y9\jocSXȋ)XktlK'ϫxE @\6}tN2X0rqh)h tnMOt{;V0rz 00?~GIA'`2ϯIǫ(F/C"Ԍ9λd|Yxs`5- 2 1vvvL1PġCO-E.\/ CS ȯrQola&ȟ|>3pu:XNuam #Z('џIbRnXV +DyeT;6?,a{;,Z8tȈa{Aq_<%?Ry%_HY^}m{ FgAoLӾ0%' X07wdʪ0̂Lxg'302bAsRsD:V߂rp=!r; ¾mLXzN"2Ȉ +χ7hQ,,5z. -Z#X]2G" BwI7ff("QIh,@i"7EUFduՠ,W:X-yʕ!:5ΉF4[q,1 j_ ^oQwPRx~g`jen3"vs3+\*Ee;MNu`UkJaU3B=yA&F"s]n} H?ZDfq=lm#mDjhv] eCHM=NEÇ1rDfI77o㣏n##Aȗ ~.]#iZQhظ2>xyBH?X[nSyl`Y1pDY5%21X(* Xق= R5/BR̂k?*R.JGqQ@\)!Hܼ۫㫚DXZ\̏Huni 2 Q1۷ئl0@"@D/z\AzAAHAF+  0{ao1R~c~AlAdhJH#o̙3EU0_UDfAdNBhY,|oԿ7!fCĔVeYdNO8]z=F"2և e7s`4? <~D$KG<a[-X(jR86"ίu,c.V jJYfY"=qpHdb?y[zM( hrzM;86"e\mhGi2B>ݏ@z#;`Hk # VDB)*Q䵵5NSM>F)X7E6Ggd,3}m7pLE"PnP{52wK.um6"-"@Z@t.ofSyƟ={oEjf-:l,2К(Cd2&?8Cl>1B*au9,~#2 D8Xj [^^.^UU4{?!Ar02 .2fD ?"5]A!^]x"2 DܙV3Dy_/Kde9iGMjhZ52w:XYU3ĭVdy@C8>+z{\* j\:BIsDf@[\7L_xq#y螵Kx-hD(\xCq( M D& |B2bA4[F dAlA$2 [ᔅDfA{g#Uu W., JPQ,Ą4DvKh%QMXQH-RB~b[-fyyds9.]..7|ity=w9sgRU:ۛN:2ӵkWs7ȑ#СCR. vHaVufG^5]36Y-yXSN5 JUTTd][Gd_p8lA.,, VZ6[ժdm>>MJYhN z3γX;vhAn׮I- %0LJyI1kfdRƻ1:E?Qq@bzn8qѣ ';+k|Njz8v ݻwnbm Ӌ.N{1h]]g/Ͷ%^^) | Ub1/Z{S}nܹsOMY4iu1Q&{-2VUU0Nk/?5k۷of0C-7#Ǽ9 1k F)h\s.0X֖¬N p bf|-r?l;Ξ=k馛̋/E5@ ݻqֺG@'k^y?gi4O?5_~i)*ƒKǤM:U;\k2ļgϞl3"))&t:pI-0"vY=<#֝T jO) wI'gf޽Ĉ'xº |„X ߥL=n 6i+W6¬D˱< P|8m?<쳤Pܽt*0F>J[ U.b E!>0K,1_|)fg1P*,p 5gBB baFsp"pzA+h>Ff}̙3YSdPTU/4XXb~FjV~Ż.8ᅙ\V8̪)SM6ٸ63f0AnaRR;0@@,\Rwij*Icf7ͷ2ݢ]/ Rlr4^,$ih:2F^CpI3co6JRG 9䟛kLF_ Lt(Z@D3 3|y+VpU`m=`Mh48RU"b(|@+v،]FYO5@Yc ȔV+L5ۂ 5" K Ȕsz FWfDE1clxHj4 D( "s?MuUxfjENY_εLjUK7¶f 7ܐ_fd*Ϋʱ>xķN0 ['`GvlOx-vޅ:3?*{=S&.}N%GӦM33/ٹsi)UHe"Fb[yoʣ|mjRqNX喔پU瞳wyᇛ[YgŊ dͫL]Ǐ[WgiѦz6vtVht6:伭*ϸ~zΝ;7ҭ*uUXW^yZ~1= :b/7ME)`I}v@n񮩆O0Dhdf JaUe^1!Fo.֘tn*0JҲ{FGZ䄦+&"- hQ/2VI,j)lMG5+hnRŀ9h 71=c.\&%`VЖ-[ٳYi+m挤b.:vٸq'=KUxTT s\RRR)*J奦dvfՀ'|bX멪Y(WW#bF0c}k#o0i,vTca̜r=EÓrȸV,EOwd^{ZTİHgpR]}մ/ZL,$_ZBCCEl8̵ a6,''fiX{I<{L29rvd-^n5cw7KqGwl3rLepHS&ϖs&K9M5l0 I4]2ﲦtIYQ]mPra1jMВIa!\uUfرBZVGK8Q5I|@Hȓc$ G=<$yB kVY* 2J9lA6Uլu4>lbXܭ[.73Y{w2ǽ{[ d3Xh "9_79y =Sygr[`z@{h%dn v?mo-)ZSk.gZ'lF ڤhٳr64VNt1Gl&L kߪ~*ٽ{wbJ{N#,tB t!ӜzVmb9fEt3WZeyU ~"g(u'XȀy16ɨo ZaV2z}.@NW+{M54C=d&O<.Ww ߓA.Zŵvٺޒ׷dY7hf"C&\x{Av~=]t1ي45krJur^/XhJ#[D?)vmehXh,]R^=Zk,r4M駉aNJS͵`AgL M& gn.o90tRwLL."dز_]6bq Lvr;Ȫۿ32֮};~ FYX_}D(]|ɈTq6Y4rvU0,Оfe 6֩ \+ %F l(%UP a]Y0k':φ027rz_/&+5gc6oMfcfA?Mf` 83 ygـ0+= ـ휀f<9hm6 ̀~ sBAfXM6ff@Aaff@@^a\Г\ 3 d%MKӜgf`5430@f@3̠k c6ssɶ ̀0 3vN@3kr&̀f| @w 3yf @vf +6fn XI l^ 6lـ1f{̠6XgD~5/ul@HRPXrG"SD-׿-yft;g0CIހ- ЋtEs{82~eDBx{bnBB!3 !B(7}xl`q~ jXˏ ڦF(yR}R].^7`y'n(tq;`w$s*.)z`T;VXmyC}4s Ӓ{L7փQ r1t.z"OБDGm\xGU^=zm~ሓE֢qڲH"FFXH[ef>h/+IENDB`anyremote-6.7.1/doc-html/data/jc/themes/nuvola2-arrows.png0000644000232200023220000002643212061426050024011 0ustar debalancedebalancePNG  IHDRE,IDATx^ڽJA ,5;,,mRJ?`XaY dH @bӬ==ܧ6Oe&L2uԿ09HɃRv8M/If^:5?޶<3 47S5md6|~q>RF6FV<' !Mi|!]ĝ JgQhpGZMi!׀~H$A6{!_i%lttRK6%nt@ B}0,U $GZh [A6t݀FXփ;7al@va4xeB ӸvVBYlhkX>`:BʼdDId ,S/p"g_>E@R'W_لeJ `i͗gyn6t'Te$0Y9I:.0} >~5Ʊc0>,zLgr<`SU?'=f$ Vjo R5 P&qE0)mkWa jd+f5hG㬲5M(hv lȸ 1b1ٖ j I28X`llk|~ PiB[%,=@+V lA-t|ZI0ޓ_g0WmR98$\1ɪT^ZSvJ@k>N.-!cu³98;K)I$[&t7,GVo(8` Z3H9GpNB>+va_}NVR!۩N*:18~c-<4].w?ƞc=R (BuX:@±DX)Z(urnT AJEjK|=93Z[|:Z2x_nW7_ ?]Ȋ0tiQa$5'"$YHRK" f\VӁ.C)_έ`;,]f]9tPAVZ?%I`@ΑP׏ f=b"F Zz "m2 {we??hKlȯDJlۓ#;ɱ1p-Ngy8 Ap['xn9$ ( y`Y\hK ! (ՅɬAPRX|޽F@x^*ԴBV`ϣ.-ᓲr.Z6A"] SY2Jك\c.6Y w7۲:|0W^4@B?olߝr4hm*I NI)*ytbzi:05H p]bhΎ33? 4HXQ-O`+4Baw\D,~y/K`iFZRrTnAMpa.-S542pvG47izM1#(GmF9mv2#Ķ4Mi~e~W/5+&ii>IWg(qcnP6TbS:WJۃw= sKjqʒF ?AP/n f 0*ϻT(N0CBpW< /׀2.h Zo>lhT (kնF`KT F\?z & ߇a[PʭEZ3> ޓUK9d臚ftkT&<5q ,@kjGSMw4EGpwI N 0>~g?wwzu_\kJmOc sF@ Jq: f@\ww0[KUa5 x8 {oHZ{ l _BpgrA pOx"e޳g1M9rȐ ݔJg>z@pGx^*8HHD30##ge> oC@k01?ꖮ926DP.$߸\,"og!!0ӤP`aݸ.?A`P)NNP_C 5|xL/A`Y259e@P&B ?l13ϘtTIT'& dNPeHo!*F PpP$>)ZU-[I>Dz'` 9U{piZ?-WoO*jG */NYg٧{Y|= x(K|8a.\Bؽ{7h ?s@k^xǹHg'9`'(Ģߓ+7`I n$eB }D&&4YuٻƝD`&}2`qXߟ~qg]5U~ͼ .-PJXD 4.@P4͟9mƛMͯH# C.a M SOW S!hdt#Amu5a&:N`;HYL sU](%}mDjP +*nPe%/1`QBʤP(INPFa@ q\m#Q T0B161ٌ^ &Mev63XE% (myN7ikk[o+ (QP, a 0c0 x\1 ;NϰPܦly4}e^k )RZ1߂W +ӄZ Y`4Ȃ`8`0'm(xշ9r$:)OjB{uຄq@qAdp}pHa{vOQ.^z)Z+a5:'XzW(\R Bk]+^;A zc82$B'Ԟe<@ c 00 MÖpE,3AQ*'|2G х"fl.OGAKmG- ԷR\OW{ز~> 'CŸge׈t !:v6"+tȺ5Q su]2JxQ(8>t= k _Ro\z)C;vQepx U(:Ⱥ7@~{38v^ǘ`Dc _Ž_wU\QfB)]%qmu[IOx; 0 iniyI2t‰E)uPA$cefKPYQd%v' ݹ6yqF5K< AR8lq>2@9O`J%NQq 'P NBDX.,+wA!'y{ l"PcP6LLDƔ9>wi| pm?/x?o#" |<x" qtH2tB9TdǖI0TAG[@7rXq?:MQTX %w75Րi壅S615!Ei06wAPGcIgl&gvx>τ}MBf]l3ḇDJ)7bmƬl|v=h2 a.KQqR7ai@sdNT 1!Wql]jABɯ!\ =SeF~~i|Ckz\ CA!C ppP瞇l/{ǙWYM1=l,?j@!bPL{⚎^̳9QݖfQhW =ymV4QNBk¦:|C _fO++;@W m;l^ gNӞ4mN`3FvT (RAޙ[Ynk׮eӦMݻseB`Nf9dzmf[ RIp:SA͗a\硪"Dq04Ҍbۏ=HX!iawzlnh miho(QĂ=QXfTϰd͂ USم+|1e01ppQc3:nGQBՇP3Ϥ%";-JscH*;C,~lyF|0)Sk 62 v duu]hxg;U op4;XNJ7Ej8xa}AAtH >aw,Xٱ@+d5=A̞= Z[8ev+߆w/Vf>w4wJ::Ta0kimBQ@# !  W1X nI*g5!W`( [M9vȨܾmjyx-Dſ88Sfq R% quy:]I 9!/Bt㦛P# #^]6& ҩ;Gs*mۜ`@(mnbe"Mf@xHp39a}&'?5zڎcQ͒;/=𑹗bAXl0mS*lO" +8$m| ly"ܴF=;ycY j`E#Oi$chwuv?0}3> /8Ir'D` 6* ɄD 4_n }}#Oä9L**8%RdcnXPD9gS%hPJ53"gaϯqi>/.qFu5s$aC'TLYw~GCM uQpj0JV*++3g'x"chh6pԩ\{4S΅_,Z kMRzOQ&IOIvQ.bA2e%\66` KEE \wu{̜9e^y,Yʕ+jrd֧?MCⴷдh*+EH!UklD 8ԥRJ%!7ġL*π_=g1BF@PZzgAj ߰×%:::슧PJq9p%ʏRl T 9Lƍ<{3;pR4)eup| gz:͏a% P1-YdN tte3]m.a"Qf`62o?sr Dlڊ&n=Oz2Z[ijʿ_kϣ/]}58R$?/,2Bؒu\׍!4eCR֒N~E1رe]ƢE='l㿒'c-Q ɓ0-+UN 꺶$IxY7=Pfc>~O)$DeO8d8t]U#@Ţۖ2MFmU|o|0Qg_1+"#|ߎ]<+x.3l ?LLsC2FeƂBڶ ߏag]uU}5ukrָA"=R Ɇ4(ʜD -EVF@!26mA*a;s߃RHyce׈ ':h )|iZ#4b!q7"(hs!ps] c04ĂӠ5UJ1<΄s(A@e^Aٚ0 )K:[f 3yV|Wk[caJPQ ;^sSSLGf/oGlG:| Ò뇌 ˷ DJ̺!x,m͸01aSaff]03?hcc~kbsGBDE|Z u,HaS^yx"([B$[h`Y*Ɨ9I`bI`׿!:vdCBY`H<"f?82gN  P8aH]CCi$%7N:a?5=K,X:Z`DK_EVvF$i*w8*$[$R2K0^ VhP9KGH gzJeƍ<iϣ|?q`1 6S#2H({( : FX]x:~a"fjͲ u@/sYP5 l {wTDjY+s lҊJlm)$X񜄂y ܟ+{Cػ$wy-1pA$___bLIeNfɹ t'74ڟ< 4 ГC=&IOr+f Ԟ_`Y h 59:%~'17 0phhЕh1Wt4d iɤrxZ#@C 4 Ѐ@ 4d$ ]<`654Y@WhhF34`yT-+g@Cu` hЀ74D@grp'7d ! t*K@P@@ρ<`$Ѐ~X̺@,TIe'l+YzϜIkhГk: ''|4y@xpNnO, Ѐ@ 43D`ry`{|jra<zɖ/8%dre@3Й$ t0AK'744P{ 44h?hhPNnnoosMwn0d.fQBSt;Mfcf9a Ir`ɂs $NB&!nQSxl3F߿)B=- --PB ld^!XܞXlq v/ PO?N؊G_GiPr#nNtR]y?xmRɵz hӠsQfG;!]3Wvu?%;3Ө:\?~@دm;w9{w[ML)'pjr{U|fQ&HO@H_üH TnHmFbBA*2ZѴI*O'MM ' ZmiZJPM`5a" R)a[,+%"NKG<4h%"[Bm+"1@f"u Вl ADD("K ==MLRxHiO1!(BH{pXqX'$LoWi|+8xk;_xhjӌw?vVpa"r &ϔ=V 7ÍIYHBB1%sPʌ C*6H?r+ev Ҡu|{m;L,?rA+tG>DMbQRJ?r`iŁdy)J)qE<@)Sww~KQ8^ cݘJ)Sɼy!M$:Yݩø&L̺`<^r4h5>\eʼT.W n{ Z}~^L]FSUc 75\JӟhgL½TTT0)+=Uni̶ %G\eǔca0Võ4h9gZԷŢǢn'Ni3SN2 8x`F0/X1 ~bl߾GV~NE z0jc{aq'c>Hcv&$K rbٮdևm_3gnB2!eģ_NhXٛԐDB6dCo/'UZJXכ.tc$rnI=| tĺe d+JyqY^d|7@ ף'hɁJ12'3cVO7㛳'Ø%ˑ{d3u5Z!e̙_x4̫@gsߓO*?+t%JH,Mq+5|{0A}A8+W7 B>T,XiP*[9H$]odA^fhEiЪE.yHph ʫO UU$ d( #7җIy"Ŀ>]rbѠ5 @i`ke?x5B9EOث FzH4%8 +m0\bV6v^֨ﲲ*L2쀧/R~ScrB `QғxAY cV^ v 4$-py~>| )y"v~ Q79#V??&bM1Q>=\4'zXX1kP;;;&[" J&f Z.3gΰc<ӘK֨SL΄p4f ZvYuL#Q+H7(ј5h`pÝ^1O(/ј!jsfDy%NturMDc֠UQ8` rɳQ@.# _n9' z5'aOŅnrkl. Jg0f<̲9Lu%%cTDKa3 W6 #l!2ab KWtOFQU#j# Ds{qžˠę9Av}w}4饗R2T4r؜OX3|57B6YxݽyxP{#CWcaƌlܸ;4ZB~/l|I~j'쯶y~ػe'OКJ.[˜+D$JQD2h˰mxJ{ja4vN51E4 (n1l6  a쉽k>VR3?t[ccB_'.Gy' !EuW;"-mn 1c[zx1@xP`FI!H;Ů5dδRL)(T2޹m6|>-`Ls='~ð_bZ1"LtxwobXnO.f*!?F3Y@(2IV0z0 /GC[抽aq |s0K,Aȴ_M `eAY47u?pl3,`$3u*m9tz>N$|}F+PH(NF{>c):Bkl,*țQ1pW֖>}mu9SO/Nțٳ);^_=NSN @fI$յB.ȃ9%tDJɌRJA0` AvHF{ n=tt6lH)pd1f\r ÒWwwyB(膮(vjq 1s`'k{4ʉkcrI)ш iI+H)Ok7dMDwst8]%pPq #; ܌hՆ 2iB&`/zN"(oKl[|'ih %8p6l(ɡP!CZ3 U6)uВ '߂zAbdƢ8|0`2")2r7]'xGt^ Tg:%R(|&+!z!NzCZwD[s0͍~Z9 Qtca(Q,ѫEF2 z*#=Ƞ5Q%󥺆\}B g\M?f͚Y[[˹EGhaðeaMn^g#!0L.db"(6G0'v8Ph揃cBng!)*.;oՑ<"=p'ȇPqmZjuV%yB51hhfsa'.2B\1i*T(a6W!zD¿•sg&w躔' (b i$K|\u|Gbc03{ܢ(2ҍߊeb`ǕWBW0LtnK5q6"@DD?jgWI4 4?f?$xC "'bˇܽӧOo>=ZhM4D$xhB`bsǖ]ddy%hm&*ۀH bR'7gMu~kn̝F)c4vGE<@h73tGytݥvTWWC:::: 0Є- ӤxbrEB,\1{`Yڎ{QR]lQ_[\sŊtb F" 㼶k+,A/UUUÒZ -*z`]BN0̷ $6Ыu R9cD"Uda!+FLj MIorRę!@X->w{yPF#+Qf\7_x[R޽t[R/\;3lFBdM}k[kw3uuB [`"SI!L&PR,9a|IwRCoo/80F,:kA:9X J&aϚQYH4}i?' !,zO'Xx1o۷Go @0@^e/u r.d—zϞ}=zT M:褘A&Є D4.u[S=uf櫃 _F#Ng@К3a׿bL@ M;n_=e קu/DͅBk͸S:#@$;w„Ky`}v<-ԩwɐB_(RU>w~#l%2ABElźG_}[fHKfkK2`hHƙwzY. A jü8yTrssZ{}wG\f!>ZI-;bRܹsxZ)&# ݁#m6MLLL/z^@jKWFL-fclذ[ZZ߶JdZXRH"&u]Rk&f?>dfVS6n7ش o\I} 5O'֮]˦MԦ{u6̙,Zxz*2'j~r(Zsɍ08n$9& !,뇀T7oCɜ"goΝee1@Vb[gK(i⮮tw\veiD6fG TVe6*`0Ĥq7ԗʊoP6͚5k=UׇMdR@-)/\3"̕˭[x}bR(֞bfɭAJQTUk3WylV+Aك`eW@v>l2]ATݲe ?|3o-#r-2aIXf ;^ZE\2nrkf_(m Cv&mAKF Xb֦ է,p Dld GjUH,s$Z34i),J<߸ Jx\X*D Of59 ^@jT>Y"qUWCᶒJ[c ӟTm0ʼnIe>_"k5fkՃd޸J ca6G6x[Ue ošhFYjPe7&;}Zh+Y*z6WybūQrl]MNN0eebzT;ԘZ h7QTPB%s:D ##/N5̫e> RApYYj%sbLܼMɜ6g>ѫɱ22hl陬i&'sqDZ"")$$ڞl{vj|9Yc=_K= <t2K tvfUN*kEzr@C,d +gh`@9 Г5@kr t&K ~gn ~+@C$@Cϖns0@A'k@זH@O&C}L44 Ѐ@  4 Ѐ@Lv:/듀/g3t@g '[]9 / dpWMܓS[}\9 hh`@ XAt&g0r@O@Й,t4 Е, 44Ajr.Р' tRd+[=kYgIkhГk: ON;h} A+#74 Ѐ@ Ϯnry`/{ ra+uL ~:$#V%0r=@4MU#7{ "kf4J"!0Fwaم0l~3,f)^_PW "4GOA{uiF#Ln.1HiIhDI"@>]F49+fo?7ܷ}Uu~ jDYu..Napc LF&"H˸_('P0;+ADY&Gw8}mGLDMctW7+EQ*H;1wAɈCEqNN ~݋%x!&>j%fhᗝ3i Mہ*p5FWib֬ U8ZJB#onN`ddH~A&e=jpM֛q`"# 7ՔBou``QW=H$Jh% g'y?!DdB88chh*o0p,n(n抁_FDW'P<nZK^Ùbi)s$8W;v~F˗iN5188(E d`Z*-$ns _ػb!..lqO5-M>UB+fgXX|!D] bzz7B~޾g KH!^eY =Aܥ4fr'Y5@0D?:+L£T*HAzJx).tTçX8L] ץ:-Ip{/N7??\?W*jyav?VB=4&Q~cހmwbM.8qpd:n ~̧ٜqg9Jf1N'7}O]g˅9:UPN rLGJeS-ah򫭗80.C`h @O1@bh{m?%hEj'KJ b Gʹ|v=Br`hvZڻ048p)kTWW2 Рjjj⍴mۆ 77"^Ofk4t'nl&%}-3U+uGeK Eާtָ_4R ^˩Ο?T֧F#Mq}>Y\GZ!Fjkƥk"Һw׮]400ȇTY[[T;%f|Z&܋bHd]׭h}ƦԪxVo﹕{Ђfn6#3'sW#]4M=ܱX4MSb}>Yx,?9P{ jhYj@yԇ'ˁ^̔MS[jMmgD/Wِ:pu)m#iG fp4Զsnf C4[YiSX JjժzaS+f:J֭#4-ď:Z1@ xG]O}H"vR" Od;jd":x̙3TUUe63mcǨܹC_osISRǏsCCCJ(p}Jͬvm,ɡCdB]|i>>|(@nrMLLPeeɆ^NПEs-qڱcG "݌aHW֭{n"--tbF Ôq`h$ȰGĤxNI<U9*f۷',[샣1OnEE]p#}?9JKrPH,%蛀 `g8BҫK-34;%L*'ZwEy;w "t)S3'N WCeq͞J,UFf ];oj`.KDߎa8{N訤RE9uW~<9y;5Fc抺Z3-öX50MMMϾ5%~ 9+ H2Ϟ%Bz kfNn5{`h088(Fvȇb yQIlnvoMqHTg8F}]:~81|褠wk 3lNVg!04qG%KTkf79y$=zԮ .B sU5v(3gTjhpLG"tvv#Cr{֔'@ @#}$Ρ04#c뺧vIr)ھ};y}K*Gl}e~i;gڴiSm|^G߿}n`0H =OH$GߴCPI&]!M`6%`QF.9x6{ҋ$@ ^UAsq72{H3{GvlAZ ZzAk fvNc^$$vxM0t{QWKs헕Ʉ(6D@6 ֠9 -?ĄR2tI*xЂ4Q15`PbJж]<LVI&>5\Xq:i! )h۠ 1LQ@?A ]nLhV t&d2w{P)k1%6`-tQ+ Ē|P1B3+c0Ҙ Zm*p&KΝ>[Z! NZ鴊Z@S. )Z#"Ƽ^Ҹb\uETԮ+|*.`*ކ I4)*v|;::PS OMMy/uu5(.};1Y]2oX|#ׯe1-^5v]-P6F~=!f4G[p M=+XJOED7"]5\]V17S}*㲶K bz-KKKz漹)rrr ;v;<?~G̚=6<<|3Xnb#2??I0ː2lYX/{kfy{{[.RrIX49KF(zi󸹹9Z𭭭HQ (ZV'1 fpp0%p`mcRm uq9H)~\-4ۓ͆efr:o2]nM 7HjJQt6NSk Uk]aq/ f333x@kT*%% (!d "E 񏼺ZMa 2)@xv$@b;$>XGfB[ԋu&$95 !e| ag}XiB& Ʒ]W%oR:j h䔋O>Ӂ+@8u4e6+I}[UC;(()m3֒@+-ԂU0!e1TMDcBZ_Lԗ"h$c4}>P'j)HLZC;'33"%7;w{νH h38^bttJPWc PqM@g,gisu5]jhn>_R5JҊ+x88 e.mDhkb)[VVVwׅBezܢ^5T{猆| }ZgJN8AESSՖlro+uۛbũq.3-Scmoooak?J#Iy μ!1@^#xmuW3pwj5ΗC+\R6fgř[^#ب8Aِ, ---\AD.z{{9 `;r2Id@=m i릋9@-5]J)۰V\̗*ͩKa P?t^ZOOX.X9s/M˄:DIcNDUvྵ\$sS%?9F˙sZN݆'xhNpjnnW+oѣ<% ,١mPkD2 O߱jdl €z)yR!rZ.J 03fqf|d©e.t|oA -`\KE)e`cJϤH$0 R%30#pf,xH"NgO\rcP_pч9R/lm>fxa 3$} }|\Ó',jaA81gvfsi9umP9vֳԻ0h4 5ƜX`[ >_I)0[f;8Bp]uI,q7ͥr3%g-WVCo9mvvsS;e̾a64_^{Zb:_;rDT#ۓx5`w͖TJ])\#sRR*Rgf.Jߴ{=&٣`~޲-1W|zWm8e e3R AdF KHeՙĕEj1zvf9y޽N[YYIiw^ W}VCC{gN pyQIЀw*_0+4RN}YS#O-7L>|8ւ93*[6URRNΰ&.C$Tii~ZQgؿ h`P/FYI{]P&RK (Km7"׌nT' |- i,'{Ոv{άt:N* Jmπen b(6@f-pTA FC66hI+%<=$gCo筏}TW2Ϳ1^ =2nSAH;C phC@?[mcB3r]4nފ[V`` Xphh})hM4V Ή4x g34[oh@h@Ab@w},'/g3tT `Ru@CXX[ -]o[@Cs\9 hh`h@CЀfw\,8twecjLFn ]4409 LN1Sz hh, 44Ajsn 4h ѓs 440])YJbD j2x}r8ACo=``0܀S܀h@t]˽^ʃ3v]3tDCb{&[g`+  tN=?Ѐ T,8:j&'xyyk~Yֱ 0 ALJPJe|~!̧`NWNǩgq&`QiA[<>x[.vA0nlsR|̆۫$S?x].dzPD}O4 PT 8|, X yOf֥zػc( o/JE*i;[O,'WVH1]eg{2lrڊVz R'-AB%yg׶ݻ9Ov<5FD]e>vwh ,=~(Ur5_0@S\={~ ձWy{,V&5"h>`jJ@&4gs^'-7B 4?Ѐ 41Ѐ  4 Ѐ@mzRm^^Dq2?jR-78F8!¢ xTUgW%&A)_ҧՈM+M9jZmCA[)lEAMPUϵ\E%\ZWvkkqZ{; I  d|ѹ?4=>h<0 6@a03u8)]?.Զ:t9`7cV6;rM=47Ns'VXm#MCko ## A|gkz\4T5s:&KZ?'~q#orAK!i  m1ٌ3WapSgRLKhonCa+{Zu ZKtɿT`* d@UbD4͆LsÓ۳#=6U{0c!AZ\w@EaҶSo.u:$29ފX/_z~4QLy$Ql0 KF.4{6 %RJ$~ m>z:#YyY)^@Pˢ #W|UJch f8#o,uup)*R !~+  "13#$yXYlxʋ; Hdt%-fm,yt#4;-;fp$=:n;TY4$%Q-, ߿d}{shg'PSPIĄXvF)%p&`s,v]Ra>鴨l%PB# XRb53,D~{h-<&cQL 6a#76 'MA NYw=6?ea: i~O=[ye9atNZ)eu,%H &)/$GMpiJC;hb f"84]9CdƩh*22h `@h͏&$f_j:I,FbIIsڿ2׼T=*:toߠIZSeJW4MZ4hMS%ƤiI6˭]~+ʤyQ>xLI1M:3r p&.^ܒzhMrkRйئإ9[A p&z Ņ_LuϩEZKrnN3~)φ\K+w7ioԠ=F۟G 6it=R0 xhvg""}r.9yI1S_t]X2@E%X9oJ8DdNY\!N>:кxܭS}{3 I5VRAJrm?<ϵ<nuS20M ayk׎K/I}B!-[Fsa9yO~̡ҁ*xLmgrLZrE}qL8ElXAsfr,Ķ!dѱs{~(Q7f7im+,,iUYJw0QbK5}2NHa}]i2N9PjON3!it%zI3ܠaH [t%Q{;HzqPXHC y[&#d@HZxlS﬙SHKt1Sg̕TO IQ[IWIYHL@YeB2nF}X=xu%ky.?dXdw1|VJzZpz+*3 nl3gb2ۅ4܂0ԙyg)-T?fsը\Ck(]whJnTuA,؊@P_m:͙χt+4%w77}/r?'RR $ j+'QǎN@f93ECn-R RJQCͪꦂ\s^v:N3Qu]+{㑪ɨSdn(KZHNso><;Z;b52z0G./";},l >}-6 w8Zb޻΁dalVc_L1k^QHF6/{m4 o"jl~^{+Cn-|>{weq cDYxIMO^9kR/flZA eU- X5ô :Z6sd7>ÛjbTBx2T{-,+ vRHxK~6G}cE`5+B L !Sx鈟[&ò`0 IJ m޽;%!ͪhXKzi3H'ggZ>hmjsR|{2tl[^^ӧOpP_MM'ݙ pЁ -x.[n@$@?#-!1IWEA|z;HL\9#]KP,}8× |xV ft5܏k$_xYZ&P>]Jd);B<ѥppӤS@=ȪZSd#OJӕ34M='{hm;HL׶m[Ld :TmqJЁ\MvvʨQ5k ,୷>P߮6GV]tᤦZYfT&wdne~\,crQ6˒{\y꘍rke%I f3o >/rիSNUƋ?˦(F]Un/[ǚ5kؾ};-5O{6 ~̹&e 2};oVĉN_~ qW;<'=z @]EP텪Agz׻Xieűqת3(:К 7eNX=@o >_ p5@0h'#:u5\eYX1\.0  34U5 `61(,0<(.8]\ꍻػ[b֋h:NђZIrnPUաKM!0yp{{h{tjj]ɶf" AUAxIgNK gD[ϭ#)y. Em$؀!i{j{JKK3wggRZ9Hq%b)`ؑBۆVl"p$l_ZnL7B!BacZV6RJ~W*dHtǒS/-xz*3jKY\!TMbigQaƶI22ᖋm[r[~䰍mxfd?7]Yo7ԱD3 9ЫS"+*#LgʏȸwG00VQ?x nkH)Ռ`cJ\qEkNn$ uZ:s17oL#qCn L/ + ?[S%1 EZ~y<9+2mE{/}ĪPWr^d5b|3gi.ITk6pAiY`#qv⻤=,\PZdB euuɍ?i2 ;6%X Z %f5k[))U| +FvßA[*@ƬϠgdR֫`5j:Ç9at"RPSUkfg-a m\ͣnB14X_!Po"[yo( TSOۆܹsYz5'.߃ {2֮F|y0~\ Vv檟炞ɪU~x5;6L8ӌ9'G0ςy(,$?ܿ.b4Bu~lּ+ak_~;]y%w./Իwk!b?;>y} MDZR}Aöm̙SFk6M6n7ojEuskVLI&~_+LU^*zc5Uvڥo,~?C aܸq'ֳ:^/ HXl^ ".l"0{q:TVLIi)p_0򢋐RЀZKPoXgqFZNII'\>E\aՠ)++cZB+g4m۶*Eh9˗/G)ߣGՉ< lۮԓTPZ /%%%s<@kb7ZMzռ˼j ZM+//= ԳܚfneCס5;pp DȲ8&)M -jց Gv+7sv!OMv|\̼/#P7KeD=YG68m->9 C| %UZw{c+ϩ\Cfwܺ&OURW d G2d:@8HB$Zqf0 sq*~3RzHwA)"lȠإݏ/ϺiU̥k 3 ̩aE;߂wKpdS3)B0J\MiAMD]\o\^Di2QDZ1yŅu@A3VޱzJ~O~ ,QҢJR"8) 8r:'0KkNy7{6&w(!K(S 4csmy೏nذ0W݄+rB:.e%0%|s2wE^\ 3Ϣ&J q MزeKC D^FYEmȌ[3emBkR^X{[yBU`s)t ˗/~&gŊIhf8 ACQ^^ԁfPlt>!Wx`9_.̩0_pC^ . @@#IK0%?vKᬍqa&e Qw!^gA+@t*}O ǏbEI8\q j6sP+b6 ȫK~*OʿT( n ~? PqS.0Jh*ȂHȱ|?8 Y튎ߝLmUž2]530AF 7] =_8 KTuݳ-]aZ;PV İ(sQfS~)FYR-xRZ wعN˨{ڵk82QZKDsrX7S~+ /?ݏ> L:r J"ӽg8qd MΝ~8ac08ug ?_𚾀Fw޶|a.,0Գ<[]=`e *My&<י3A1nZYnӹKS8Ø|8pn?eשıٕitsLqL;:JJ` X`#_y#<s, K^>?kXk76Gn@C@& x|}ЀO~߶Z=3@S ݬ= Ч_.ŀɕ%@AwC9R 0pzhf ʣ  4+@7 ghj9`hŁ hh@CFh "[Fnjh`\}\%@& iG$ghjw6D$W,tۑ4dGn-74 Ѐ@ f|Y L.khp032I0As%bG.܀#70+=GnР0p  l<ulP4WXhq3y;--xN0 =?oo{^# 1JE&Z-]vnC[&o[BpM /hB^\s94yC۷܎KC%< :`hߴ!,147ݨHDFxӴώ 7=N @s@8dSL*FohQPmVAJ^?({w٘n 5;<>15AlkNvmE&bsk}ڋ b+k9vvܺnP?^>6ϳx<'_| !@!72D@! 2B/2~s~/q\QoUwhmYR "Snxt}NR- RHB@B b˘HHR5YuN{wFhj`هsgpnkk+T9!?D( E&._]ׯW$?"ׯk!P+W`f^?M`2<<d2 M1^>GU!E&pLd2t:-lq1ħ Β#݇BLaLO#ه21;4OTs/?ˢ U g4s G9022B0Jh; TD$@pK;Řٳg~@}0 6Dˇ T*d*ⅅtuuA-5+avW׹ul&ɟ-~!? m )dĉH}ʊ@**Bqt]7[Ie\$/DSI7dOcpY(* )21774QCvcCL<2VȆDWhrˇ8OS|}Q?D<Ԕ<2iʞp8c=y?9B<7RU]^ RdbttԚ)$)vrpR|FbR0-Q sk02*oԡ"P!B=zzzˊù@#ܒ"RU;gP篫͛"6?NoOwQF[SC;ycpp  Ռh7nߖE==^uBԇQ1[k?\D[؊%jV>k]w`Kp^PHl6km4B\f sNg.I%>^*s*Rrj},d*db{{SaXQ )@t?d^ cJ&j%]T ZǘPUJ "3=xx!eh!j,$FՊ[.z9B 6`HKKC3u^;N(#7 Ƙի7 UwJM5#;Ūf+ooE&kbu $" L4]j %u3ӄn魉0}_]k8W^l?! )meQLh~93*++܌rpakȦN~Ġ_63![z^׬jF0bNmu$&+//&kkicD^#Է`ǎ](Xڿ즴G?.0t36pQi}q$&ߕV] G$d.m(ݍU!++ Ơ)մϟ?]35esPPP3g```@JXc3 5ƪ*vJz9w!bNֆdDgNM;_Z'.7] ܸqZrwiсLI,T_bL>}>Vע`[,H誯vқBٗ6?pgb,;#k ''G,GlJe1~߾}v=Ľ1c-xɓ'QZZo޼9۷vL>CLc$68=kp՚.5nW?Ɩ_oOB^3?~QBTk~]w^wo!bJsLLL`C#h^pTo?D3kZ Ɏb`f4jC~O>徳>?kD?S>y裋,CD-;;S!&B#sp5*cB#V{hM|x!֤tmS1*5!7AY7!ȄB#BhdB\02!׳G&K1АבҗJtD@Ld0ߒN|sxtWd2P6 bzBK2Kьfϛ v3QbX$&ͯ42.g)8T~6h:~bT޵Ժ"nʞV!. 1a TZ\b8Zq4q{KgBۖvkj5RaIu߸ĆN}޾ݻ#G5fF73|VKt^3ae޽{lRŧ ~mҶifm{T'dGj-ĉ7o;wZTkdimXgmhfmqZƫHAF_N Y>@257ȈZYGYf5o=!`0Pm1Uۮ}оh֫1 1nҊEDX7sf̘`i]Eh۠joŐҞ>h_>о>I˹:5Z\FvnPE9sj#T?ϭ7uSxFQguXp!>(f5V6^돍o5서F,:fӦM,Y$:ŬYg'WGL ^K\SܱY {#r9my睷 rNTBvB&&ea0DvRRd>Jܒ:#1>M}&6DN.#cXM~q-ݻ&h6dmpFJ -i2rSWe˖}Ɓ#a1l:'dH{hۡ?j֬YQcbnLңxkzWO h+8Z3}a/*JRY*bk֬a16>G>`*[̩PׅOh_U/_|/GcY,cPa=}{볟V%ߥcIZT~CH3{x景gϷ5i7q\xE7r:_۟f#tu1==ou2X;-j_FzDSχo$ ڂ&M3 o.pGp]k Os8Q*d26q!`p50F5h~y a^N2jqBvd/W3~ʵLu\wMr|];Ç8w01fہ!瓙9I}E0OEOW7-8!;2c9n;~x"4"0~oڋ=?>gCK>% xߣ3vwsŜ{B'p!82 ֥qrͯͦ=b A@ `B6+t䳡gҞ̊?08{BEd\*@֭U"cJ%.ʕ\mۧN12c|(kė U(Q AYo#k8wPG}[:z{0a ŋA Z)O̮Pk}ǐǘWe`El`b$\7J0n•VY_3lY.WE~=>CutPP2o͢SZqQ? +DY_(ԩVOle]y'Q 0a%G܉_dR;@Ӄyz&WoNEcVĵ'p݃y#;!6NDSpgG XDGp1(F 0ϺlXݬxwCRNc=fYn㥗^BQg݅1DAK|8~ MRׇwTAu4%l֮+ɆLXϒNP#sct06_c\}f: "Ukvֺ'hRdXdIP~Xϫ#!7D11LF3w `|ߴe !񳓯S~Xk]obK;&BG\x VbZCIJ5Ҙdn7^`}cȆc <\]kb7NK[bcp1a箉7y}g}d́111 Ԋfy k1au)tJ]Y4J Q6Vnbh zoŲ3?.=OTCxKAKV֭̊5MS)$x< w'+[Rfy_E1 q܏iZ:;0$8ƔIM`&Q |H,<>m=>p64ZqT?܇(p D< *rH,dCbܙ]8(ԮC` ZduB>oIJy\A" ɂRN0lA BН옐 C#@M!Fv!E Ɩ$d=QJ,q\M[- DZ=`w>U> q:R " 4wɃE <BsLDCqVkl,X-A@Pk֎RAǧ1AȽHZ) Ǐ~صEwM9Ji֑k|3)6D* aBT|4AZA؃\(Ė DJ|8dȐk/>KwQͶVxLCqMU䳢ujzo?>}'N *I㙑rm̩SGmv)g-U`\JYەulphI#tl^=;d7y<1[MR+q";Ɓ:߲z'[3rz"Qj`&yc(Μi߄B! |J%j)El82ϗH;X'7݉1U,XecoC |Wyz޹SV>lW} ўɅ1$N 5s?$a dHPh} mރ=Կi$HĺՊK"% NcANг4;WoM4prt "Ȏqfɥ-C*}+MzB>` C9 xE_,.|Bv0kOT VDEMO3[@U%rY>}|6CIܼ7ɟk?/_;ϋـ XdE2 d!G<Fz1E|#BV:+d 2g`1FE,2Xd @ȀU22ҝ,22 d@ d@Ȁ! ]B 2 d濏 tV3|#B Ԡ M Xd/NUAȝ@ȕ}E|#B BXd@ d@Ȁc@_d2` ph2 d2 d{E7:ܹF  2 d2 d@Ȁ}d`2P[te0wYdue6`u:UX B !} Xd~t)Isf}th @РtK(|Lcf?\AN0љ&,\%  xa=ɢ8&&0~b]^6-1z: ޷+_l_vϖhwh/*q+Fi¯::X؂slV?t3fIjI,3ϱ&јqrmfz,2@e@@,J5x9w8 OPłQ,_NsG^Exmg6n0Mmά(P*s5huh5uRjT(~}Nzwj+l)IENDB`anyremote-6.7.1/doc-html/data/jc/themes/default-player.png0000644000232200023220000002144312061426050024023 0ustar debalancedebalancePNG  IHDRF]Z4"IDATx^ܽjAG]WQDM:)SL' I/5\b@<+n7+ +! +ItSI&_e_0 ! Jϟ޾Hu&ocirc1g„Ai du71+ ?AbԘN^ps{xv1xKؓ" Hc^SL1}Lb u~)>69c&t 1! wl!3>U$A@L7Α5u4-qՇW߿HfbNz^N޽ԩ 4 44@1hLh4@A7{gg+&9cJvр Lx%h@?`@w)L~\\nP!,%ŖQxRfir30ō;8y9K;sXfٵ˲:4nbv/x<#\~˗ʕt==ی~_0&aPN466ٳ|!:;;W277gk Hܔ`տ6>|ӧu1TLL,ùs~vG(C1C2dLH Lr;v5=BG)S<>y}ڰe?dVq׫dYl;Bp&6o CC [{vQ\uA0-attatgavV.hM]Ȁ7Uf5=}FU8`507X  :us"]4ځ@!3ykv7EGuʶ#(ІGz-n-H+ʵMo åcs 74io2L٩W\OZ=o7,3'`L 44RF{i/kj-<>Xuۗ2xۊܾ}EEEػw*-MTUU?Lb^ţo0D7? eAޫxEWmY̏9@VD2o<̟?O>u ľoGѡ!k4g&^*~ %7!?dV({IH:O0!x!z0524;BhhB Mkx qq?,$-5 ۷ŋ1$$$L^INNFVVΜ9 6`…. Mz2lޜBZaȬfētSOBL3 IFaQ!>/=uoWY|:ԩS˃Ѿ_QBb\%F9w!5"mC5aR"l؈PUk~ӶMG 5GEEvآڣ 1ʹK K5v^\#K?`]jN RHs&i3AXhu65|8qHXS~&c8$FUbX$&-(^%~ ( K,&ykd6Ԙ0MC֐/CjR3Bd䷒qQ9rD]$&&Jֹc4TKl[!r-E;c CRR֭[={ %%CCfDZ0 _ȍ+W?ނ{Aw߿/Dv)V5mVV{onL`P###p DK+V ''G?fA j魉JPp<پCiR晴 ,sBjPge^:rBhps}2a3i,Քb@ף.Im#&19\y NުגYoƘ)F غu7IZ5e`k#3C,?~ ݻ'cnܗA[nܽaw M$i㻶6 z̩}M_B .\@vv6Ν;n)muE87^Wc,++C{[m\/]s@% MĤ:㸩 ;+-wZb~Ǹ~}ɝ\~]e7nlN%wKK ӑ+1JB}])ޜ-;RBԗ;MNDeG8&w!+ki!l۶ ٪G6,u ܌#sWM%Qo>&"1y>}4 ݻw}KH-1IIbsڴ-tYY\6~vd5'f?oӋ ܢ>nzI kӮ.vN]WXy/ =?;1S`uSb,P?Coތ u\RR"R,hG{Ǹyn8%qa>88 M܊0Q%u_|q==?~ @Էb!chJRZ0CyVyg/m+B;B&YS<}’ M렬 ЄBCBhhB: M#ɢEր56X雥]CWt&anIOiBvXV0Xr;પ_6p95PU+$eܶ32.\eBjCFYP]Vw,YY v:X]FSH."gо=3/}ݼ{Ȣ=~{|s}3P.4coj?Vx#a\ttn43qd7}57 +h[6LFAj؝;q}sKԚěqq"}>3not}MCLj`S9 SNe>ڦj&M>>3s(އh`<`Sӊb.Y עH &GG&HHD+ey<OQ,g@`m/h3zh̝;CY< lBڿ2af(I)!9\959;w.b^l>CUn;&˖-c#Z憞_Ɣ)zCn/C CkL>k֬k Jx:`mYm,|=c뮻@JO0 :b0Gv}Kuyfm. ][[Mx>:kЖmB }qxś…&p>$b 4|p w΢x\!Xa(h`аw-!pYGbŊadַݮip q/xn/^DK4XAFۧNB{{^y8g^'zM!v,E**0A@Jf9хr.Q+Kקg+h+h;z,} 9^ n>UJś-Іd@9ssZ|Cիkx}bɚ "DmHJ-X`).l!{O+HMVcww N癶3>ZpB,X!ghlYT3޶}+pfqF&[CKCi{b0_(Qw̾ΞD<%h^&um6] ޽෭YEB: ;_ۉywΠT_Chj)}u ز‹UU^_3,kVg3ڵO!j}pi ׾w澍_z%=77Fwaٳg!wP_*pxֶ{}C`ot]~ws/  Y|XsƠbE-Kd b mX~?X*bEapee%&{4`on}Μ1VЖ**T`*cG?ƾC{q|>ߏ^y uprb[HW^N'Objt<ⶂD0lL-26= BƓ~/-G<H@#x:DJרk6)i RQ5^,UW "%8pxg궵N,_2+^yOȲH$!4d2JBt|KL ^!+,&滗g8t9 H$ Rv~0 s.J1F&P$TNQˍÇhr+cp"8?,Jw-z/>1sXr%DcqLa0+ǎ1b@RVyn?-2Dߔ>UbecRܧKlωoZ8{ڣ*+]1x.3;gܖh7" }Z${Y.O[̇ܖLYu㵐S4O$VLnf 8ceiS\B!DIhfi}SR1bJfn7 ~ar[.~5 )vnP@m _cXVe[%b1WLH݂Ѣ |urz)ee:gXV`Vx-Ќޖꖶ ZRi=v,|fgX: E!A 8B [F!}bN&G*SpG߽\QC -jXaw!C0BE%@D> meE7Lefi ߌPϞrUNAǣF lmH[JFF| EX,> aeg΅)4{7i;v̈] WoE*b~3 Zlp7JӎXq쐰.F1B71*A(%/SA[zEGgC 8ft@0}ŒBχs| "\aDM|SҭX4,a7O?kirHz%h:X **[v!34kl,]J!E-\Aw@Жl.YDzg;|de<I`! /=#j]0-[;a>5^tO@ZԎUQ񸗳vtǁQ_k4"?L/H᐀̤>특|9r8Ǹ4~}6fv.kAH::yNjy \lp[T>`W9RBKVlR+d.qee2atw5م7;D__1~ &\ꑣA;{;]oɃDŋ'jVMP)nnGlp[S\'==f{[+v[',,l+88"p|Ofbޚ9oٻ Uv0e9%; ;iӝq 9R 2g\yc;Ѯ<}\ݷV?~{#}YƇb9/ h :s @74I@C`N-p Ȝ:lRA ,h@ASc@wFn@V2P 9#7(L4K4tj`{$D:ZROZ`>Ѓ Ѐܶh@f 2eI I C1 4 @Щ)ȝZ R z'@ 4>e Mg6*5aI `Nu:Ѐ@ 4e{, 44K54@9b @h`@_ݵ@CN-퓩^:ubD@_:5i#7h s܀Snh@ͬ9^:]' kh0rwχb9yC t]wgN1{n,܀ 44h XpXA:5P/.Kn1876(Z\ B}K d?f3^o;0 qiOϛȁqt̨RfK(85icI!VeAB& >~;. !>o~ޤ-c4~bho$O+,7mb;{L?M7@>@7:5*^4{dzcÍ9O:?. 6]j ٘BH76uZ&ZJ9~mוzYVS"mH,)Y;! tnlBga6}ͤsʱZn'O2O!o/RՕBHUUDEB2c!{*WQtrHƖv/'FO76,dw<=|3^MI#dx oJHuH~y#ŁQP|Cr)dpuscZ.j}븹 QAP7l8ZiP$)%>*zzTH^˝1x{%pe͞/W @6L)rkdɂ`Ǩgo@X}h=WN=0f཭SkW&r}'L!OGm>0 1)J1p$#};i0ce 6eה,^CRPP 'W~sRp"btJOi>]06M\0@ mM yQr}/:i>U@Qc-ҹJ@M>vF)Ko?v:sBe;{r}^O?==_ <41cl_Wk@Ȁ!!B B 22 d@.N ˸+6nbWD\j޽Q ~[ Xܲ"Q@bj$] j;˲j9?xĒK 6!hl ,A%ِZĉZbs uF]Կs~MMu=OU(XItgIG N*I$X}fB/ TpNwi73v Ip)fA_f c*0K"CD0aB6fU62a,e "Y4{xX&dcqpUP0́"dP:LT` `1vD(dD->+s.E:!@r)6 iD)  2LƇtyݦvM61n$8 &xjl!hapva`:ٶ"O= d AذaB6b\imB54sCOǸʩ;TUK*_e\fgQj"f۶G[sTK 7îi; 8EMMLXEݷ/gôy6ؗ`6rЕ[[!uv,Fÿ61L9d>s80m&C^ G\m"6qn*2y9<7Nd gla. Y@/ >Z"`x0+m^["Ep7`ښk$֯:dbv"}NB6QD"QAn6H !FeYPO'~@1DDaե0}&x1w? s00*e&1 dJ8҆f0|<ƺ*q ">AՍLv D9ʾ@.Äl L)A|tK*1J4d(Q _3+1LȆTXPq ̜NsG{"Pd"N)L@~Ooq4aW@l8# K. {6yM-l41| v÷ՠ XAtd6== xy71 r~``'{eex {ίcoNvG{Ȅll_x7/D]3``%ĪbAfˎn[_dH\.j@X1 l @3`7c6G_ #\2?`f& X$4,l`"tQP]ث#ʡKBAf/tJdRN !Л$W@CjV:r"y"?_& xxޱ'Ȣ^aB>-YWmE}7}ir lg/cZ[;; T*~!+Oܑ$P,"MzZUla !lNö1!GRB !!{(hH(%&r74>D\S+x) ?:A `w7τllc 0; yxgڴ X/:21{-c2.:mbB6kiv!C sQ'ൟD v@e"aB6vmb߅2SC_#ۆPdB6@,k]NmUm44&d5hH%ި/]ޜvp0![!HF> t7wq1!f={4a'/DP~c?00 3IӀB FȆ 8\AV}hJJ>ͼet=cr6= [gB6~/!lR@쓰2#YANwɋFIJvwﰵYV|MklUU$ ȗ>ܨ)_衇c$k+tÛ;Oq3!VxЫ] jPD(,t-.2dDHIcӓ;`Mt!_P **b5{ֵ g^%uP|l ]\?EG,A*" X}uX^Hϯ:~u o|0ET<8hnZW]3.' 9|a`<ԴtDRP#};ꥬ5< 綶RRVƘ0zS:/;߆MBIE^ȎYAcC~ ‚BLᘥzuW * D ںihhA^wka>d"/GaŲ2}p^oWoFul"h @-MpGsh2!$8ZSc+%'`L>18w=]Nh;O()aJh[0rO`S\Fdݽ𧫡qTw7/{HAJq׆ғm0DŽlKʊKhH)rrش!Z8[9舵]~-uNBo$x.uU)g~s88LȆUф PAQ:dV<vsE8G0/t~g, Vd CT> gB6ҫM%;bV R¶!6N:8D-^ܓwښ/+(Y0̫Y؎nTvJ4n'8|oê U(F1@* mdUBI|j]l>BDtK/y)L1"'b)CJ+*Pk8հy(>:m#PuY|1EncBϊ{ ΛGWׂ=[tP]d}|2S"enos3!pF%A6BY+UO+#ޮ1.Z@o{==@ P:_Z{ UlŬcSeŸut'pK>DK??vlDŽl'?s  h(++d#o}ɍ>1΀̥2Xyo=΄l>7l{*{`L(=m!2,Xv>VX{{ ٬lzZFzaB69ힵi?=af"V-r؜]gC[hqf"t]s^ {Q,cΜ9y晜uY̝;YfQTTτl!DK au&p7ydN:$.rn&Nn6nVnvF N=TLB`&X̏/:ugqקS84CkcpQ WTMӥ!a9v>f̘?y.2l[֍/-u\7 vPzpp?~ ٰHDYV0MY.re0#~u!>ZO%K !)uД@:$}f"N8zޔor差%ED IG.9T&dc P0!*zgacÎ>'8HJUgե qRzܜTJn_WdϷPJ:L") U .B?!@ R˲p<V?z!S$`ґT~#>EP9@+l}4i>3uESP QdM*BCC״\òo,D{BP%ŁaB6xE\vP#@)*PNM5C!z(x5DzcR*Z8~l`۶LHy_}Ϯk*,Gmt,g{d !}gB6G`8)t#R/z(IMHHAO災bhD(-gm RA ; m.Jd ҠPW6K2!~*tBJ*+ a {'D>:lzv1sm!hitP>*2zږuWށM*2+{*l(m}ca9?kᦳ8$S ?AFEzUTV 6_1!!QZ0$lEٟS^lA6Ou?VFiMD]jZ}z]0edG ~ד\Й"+&Rpmd %ING^JIs}lݲcB6JN.E*DC ԏ/ ]1BtvH)A Fd-kazd=mc]E/qH ղp9YAe2+b@."̞=!2'3;$S)xg`ޢ6^ {8&d#BtqK \ ami;I5=o %oIJvAUUl(f*op%hezs1d@&bBPi}^~GḌ1PH_oM ѩȓ <D)E.{,!mCAri+MwB8ȸw.nCE1/ T*{N abWHeE 4o?wE) S`DWkww7r`l[п5wykJ!<<6"oỪ5tH&o0f2;bT7K]/RRY]J[2U('r;W(aB66QoY߯Kq;~ xGȂkXzG@JՕ+ dG`Myi qΞQdqH١dL&pONM 2:؎,pvix xF{Maٴ P%CF)P|⤹oÚo3YLjƘkD嶠ұI(B {+rU=& ~[~b63G]sHa9=*!2f-sCuYLĐ)Zz"-[;ioo<@*V-Xl߾CȆ5 b3>h^;^Nz(@ u);ȓ4$;hW蘥;ALV^w%\ByBQE <~ O} g.GqֳI&d9xa?"N8oI5NU E )` f:oa@"edfeZxnT$} \>ɭw&oo<~e)sY+2QR"`ժU |my+vNc/)fž0ľ ,@ `mY_B4k̘wU5$@2(P|:lQ8Z lG$C孰q:l}A0!0 xƫhV=*V'%c$gͬ[_|~>NzY<:!-v^@0!%'GΚ0sr.la $Cm@Bσ쳁]?ZA/BkFlO4--,n] *(5$N_XJ{>__.yfB6JOC:F@lf\JRZ!\ /_R нo~f@@CЀRPVX,o`ެ.K ,ɜf6لlt_TVcDsz6{:S )+' !*Y$e@"8,93H9kC4+𸵶^9M!2wÆGo߁_S]A#T'"t@7ltdBJ;& 9lOP!c4pZ L4/_X+Q0Θo[[A/'h` ^#ɽܳEz|ߠ#>(uJhhI4CvhMjKoS6Ł`pv ]A7GUWU#l,+sۡ+g=C4ڥb赹>(rz$ j0Iw*^@3!SP#i.ǵiwA`Mpr?|;bw ^cK/K\ )@Ê' :ʰGUGƑ'@b}H}B7=oAL-d2m7+0Ȍv(1gpe 0!V!L%p?))>=8 Ie`^PZP@ɞmJT9dZAPul[ ZY*T7kM+ wع||X{/Q0 fq9xqR,B\@9-w;UO{`]ɓ'SVVGlݺU/zϾԩ\r(J1eEK `QJE[}=V}cSp[MPSmc..b6|F6b$Vׁٓz W6qmM.Uu>ȬOkVIE "~;0$,3Ϥ@O~R/72DGZJ}|Ω:Ifm{=s4_@JA"lj56R7Oy{N=@yhCV~xld"]Fɧ\w؇z+@MmgUQSzYY`,LG-GΟg͇>gڋ+qwy2?+&61͍XJ ])D2p숇> !)IxUEf̋C0p(u>;ڄa]tC8rNr}?:eاJ[HE&b"4ױ!;,Y( pH|ϋ/jzJf;xu Rh}B&9eLmH@e/k TScg+dQȀ@8CilǒRXu NbPOzWCg}:)߷΂4#G?ʿ˿`6---@B 裏o+W'|{<*KpF$~p ٘\2s <R)=֟ށL(M\s >QCa-[ߏBBcpp}s/ }I-! PA~ A؄lC)H v&p"wkR@FDɴiӲ"ۢcUBEJ1l`1!15 %'|@- 8J #NMnFq}4i)92aSm۔ 3Ř}A#=KLgjN1͇E:bfe$Wwtmq<1-kRFMƖ6P#DG }SzJqBEcqZ~$N(exVPY]ŀXVWEJKέ!Ⱥ D1J6JY _ؿ NӓX_c EL\):=(jo> f3]zY ,R) Q e4!Q?H\̎N ? m|_)#ғ\N3"d.ȓnm$\FJRM†׵ud3uĭ@ xZJQvZF <*+r"n&):iJTJZ)2 BeCL!`-74o^YlA JÏ>! ["?YU/Xٺ L1+%emGvJqCtZ<1dɇa{iaB~1^F ̨ J1P*&~s.w]*iMbBFwAt!@q*w>qpا" DTm ZH= r8VVpG{;e̲mnmZDŽ|Ξ ܺB6GClf<lpV&1ُ عcۈVe;3NNtXHHX-xZ֞ɟ>JuJ0!B!B Ȁ!&2 dp0!B!w!j p 2 d ZB!);&&2 d@ d@Ȁ!B!BlO$Hz3@1 f9p1 f b@c-% ',3!A ;<3?sVf_5A# v@aKhBee8ZA)PCeE%HŒqE" `eNe҅dM8S1&?Y҆t dfU@EX̖w@XTNB~M)c2[+?L(W,S4z%YSڛN+%sQpM8 \WQRf?KZ N2snFg8 O 5:K~9gaol"eL%aDB\+:i2h%ffi8J! h~v6n ?d;Å>Qt(A-Rth9#L3f0l0zO}:ei,"P+rTyŗ!iJ&Qha7"4&;E_t^lErЕ!? Q C+ H4'a TQYA,#ƀcf[tXtQGaADD`<FP}M o\&;θUr_&-J9K+!7A4pPFJ#r8Oma_LjوMM 8Vfֈx]P" /h!=`2(B C(:qUqw|3iOD(AЈZBιY?1~D*_[UF`O2[D@qV % DH.I qT #i_#kDW>GHA`D"8 > mAZF1X-B(D$Ad!q! '`<ӛȉgmFSLwSћnMJhр# sJ:h؃L2[ķ0.AӺHbfBTPTA]wB 2o<@C{DAW @ӇRz"Jg+E F "ݨKZ?RFr+y$BnBV$]u?2[ֽ{C>6]9VfE@@Jh;(<K|eXchO#aANE( bf[ I@|255/΢T;8k~{*w}siI͑?YD ŖڵN{.|խ#O0=gTb f3"5|!fɵ]WQ~*CO>VfKc|2#Օ :"DZ|OP0* :pa}i(ծb 2!@q gEBÖF~A 3U@a)8 E5XuwG<' +%+הa88qH҂T[XX@SPPa}" Q8e.Y7)]mdl)` Q4/qtU237=A{pB.x0(ρX-]lJ̡Yk.l7LާPt*AA#,V>4b·SocȟD@fw90œ|̖Ipv2״FO"U朘sS2}̶K?,8NRX= qpݰQ)l K8v8:8$$V u98W朙s/`3%sQs3JR0ZL( ZM#>rJe||X-~*=Q-6AHov+\QhrE%xxb/cla`Kxpq9~뜚sw2BϦ>2;\TzDf/03@L8pxnXْIU<-J ҥ62[H^*)Tc1]"lxS}%К,@,]#A%ED -OK?#lik[Ți0*tµW4J̬H&31"+'y7~EIK| Y˟'ș?$\t8lD|9Ez5/jk)D(_HptϽK RJ᠌Ğa _%QNJ̖vO\Gδk񈣝 ~tAH|Hm-?RJ)PZ @7r* RXHi65l Pk"M }_jV[mid!ks8Lh4 ^^p Rc6®ť K 8߬ւ^aM+^`lx"gNX⺮ozVby#t:PXHmAѺ< B$k%Q`u`g@v 4VfK{x|9g\iv3Ԩ\~ PjVRRH@$M#RxKYM N{,Ҵd&:!':ТоЃM)D툪 ^jD}cG7AVLhZ%VfKtsW3r$A!YzPҽ'Tl͠ +EЬֽCs~^.@r@)ТٜgH4= kc|22[cdiaNQR85WO+PcZ'x.e"WlRQPfFM]O"Vfro\4ކVtÛczyY,x[/hV$ W[[N1}b2> Akc)o-q\`3|3?|3梘̍1Z[߰ey|UdKӎ_|ǒ3S}N{xoT_'tJKs䑇1|p233D"|\˙'A&{.W\q .駟NXNk` g g܄qKأ&hIdٳgj*2dJ)47RU?Oχͷ¶Mo}f&u:N&c''4nF~]淿-ws?Gqqu̚5aȱl}a p4E&pƸcHV#[iڲhvf̘luuuy\|,[+Wyf6l؀ybΏcZ[[,ْW8C! +T`s0F}lZXs]2~6n胺ޞJۨ~w'h2w[*.;vwޡaÈc J{<{/|a >>̖J8:x*EhN"WDvk20 -d~Dm+`xgU J?v$>(9,y1/2s衇ϡFUovqf亡&} 9r$͍M|Q-gqςΖf)>#?G05ȒQ 9T4ϜKf8{24,fh0RkHt)P vwG)^ys>pdz?+yx饗/~gM,cDQƌCĀ]m>N[[#F#)lfڢĢ-c]DĄ(&lUm$M7oLJ%8gdC O db*J8¿q… %Ͻ/I?"|xw}a&NHcc9==ڌf ѣ=̖yw?Q]Ÿ =}IvU}-,gy7QD!({}!@uD-s+ʰ~@aa!c+9c~!& #fliudc(i-1ZMݶd3s(i dF$cT{N=`!qJ Az̥R].F g`C%VͦFMBkmЌ@z ǎ,VfKcv6,{ '=D|÷};L{ #:BLlMh '|ie`j*P[oOwm 3qcȮ,mJ)#wW(#G2}+k`gij1fx2SהOk=9:dD+,%Aۓm z ,`d4qg 㻚&J=dC}sC"fm 0V挌 K[s5Bq'C~'@+һ\ z?!CpqQoT kO5nhz_F;BM,CIok#͈ݕb Tm31fXsC63[2M<='Opj= ki@ֽAd{:ә."KK7O)J҂ l}V=I=_k"}xqqC:hn/ex≧XF,cRzIĆA4@Cu,n:0W-&ka[.5L< S_ P$J?y:x.G9^JmY0ʮ _>pWB[[%-e-'_WZ4_ȍ5l$p^~ 4%l%:2Ѐ&OH[3@d9x(粎'5tC!̽/]Gs}W/2 63[Z@n]uu|lijA zLnehi!M~θcHC)G۽d|EOfͳ1f=:"^Oxf Nw6m׭ŬY{2 G?g\wufloce.3 ie %2ؘBLVҶsG;&~Mӎlo+v~I iP6*BOCee14L.裏rUWe{[3Adh2C'"sq0(ĢfeEY?7@k]"sxt_<〈 GB:H7pGqᰙϚ_ii|v#Y%dǰZb e3J&CtaĚzId<5W).7O~7Xld_ @#¼f[`H5l'.{uֻ6M3e۶- :m] csO&4:`PLXغ|ɍ̃>t΁.g<زV}:J)DlLBe壦`,-[&kmD@DNy!#]6bZA mm^F!*:=ī4ᓒn:,3=l0XfGhXOj&!'yr&̖Vj5yY+$znFdW)PbZ$y^IJfYw.Ⓚttxط}N9p㔕1>~mqo8~~Ҋ@ ݡ.ZI|ko3deeQZZJ^^Q__OUU)\_\0G.'8fq3pfn(0ˁX2N΋%\ ^Js? n#NHOO7Kv̚2xNwTWWzj^^|ES>P,/Y|޹8qp0,•f430"CBiʠ(= QuP{K)TVh.Mw޿ ܹs֡2+8p \Pq(/ Gܥ-/t);s&xFdZS äߙCF5Ek ())-#ڄAkp(Yi+/oL*q̙3';қc-Z鋣)K3)w]#2J nYٿWkOg *<17"Tx԰eƒ9QGPgt*ۨ."kaYulwy[d;2i_Z pc97Ҕ*.Ƅ a޼y+]+^EN:$f͚`SrsFVBg-A>`M&U\y-ZF64|Xtɸ=ygp]Sb=4NzF ΙҐAD@ (O:.G)Eu/LO(d5U6--͔+ߜG,#"Ṱ*ȷ)l(HbmxhSZq3uмZFh`f~ ~I֒*r`$Nc"N$Bq& Lv)wtӤ~K.AaE"8Lb- l%#Zóa#; &f.{r΢怓h6o"'(P-1/cfsԸL% 5̭0E_ddjc3[>(v|mmyG>p P E"Lw`i}rL/ ZIDGqFD 0KzfFo_F(Tnt`bq!i{ `(Ah?$!xuol3%{hU({'њ5T)hrι]9xlChhn';8n& y ~in6/^L22њrD#$XP 42[ښjdғw1r@y&I8=`>r7Ȍ3-H#  vy,1` f•dDV7VfK,F<;q0p0Q21uևwMxth!t9O !77_M)>{əWpf•,<0l9%&q„,0)}iNPPaid'N'2,z# t\``č̤ l&8$, -EdfrqgNnWO|!p?_)T/` ,bVٖW7tJ A)8pxυ '3=F2:Ad!+[\DR8Iq(3,ilyLW XϪ\51I\+┃[@k!Vo 9EL)wo"{"ЃUtg)Ocl3;Nlo E񓃊 =4G8"FnY pí8Yʹ5?'Y9$20&*-$l^3r:NX@i$%→LmӸ2.;bY@%%)VR.(0˓‘'xNR%A#?B/Qf7A3&]"-le^N--3"8Y"\|ܴUozUb7.q0ښ"4lZH)Sƥ'Cpq>F^Q ʟumEq_sFkwIKf[ځ[cꁣ6Ъ4-qp6U2ax Ȁյ*+ BVKu` .wWU 1bդ]&԰_z ,N9(/H1e LFBuwW{O.IIū~iP=fzex&H/"+Қo"f?SuQ{ RFhᩆR8PqoW|2݋ s-_9ŌÒEKfOhmme=TMpJuk[&<,ZC  = Ÿ/OM|'0Q.{xy~57o? ~-3DEj` 4_4B{34"T|\"I#VXG^gW.JgQXSo,nʿy`1P"\Me$E*qK}s=Cyrjv4syw"S~l5W(m@l?-gP)tc= ЛN粩w:!$ KtDFج#&_^1O_o(0a!C!l|:c8r,ȹ6Ю3Lfq*:L_Ll8q-Kv.ßuwd\eգ0 v8p?_j-k-ˉԯ-bdttޘL_FkXacΏ({IENDB`anyremote-6.7.1/doc-html/data/jc/themes/ice-player.png0000644000232200023220000002763112061426050023144 0ustar debalancedebalancePNG  IHDRD},sRGB pHYsu IDATxw|uߟ{ @ 4TT8+Sφ]"?< PN6l`/x6ؐN(!$d|~fn6!Qv|̾ޙ׾=k3xǂ?)(,G9Jh}˚a%mū@:K"lfګ9YY8n?SIH%QR9Brӝ QIbb=gNyϕ6lX[ ;&Ư9sʃ?˿2~ )j EO ïFBu|׽eۯϞ,Lo 9jv$q\낂Fge#H\lAfG?&sOxQO.{8Py3(駟m(o11@ AˑAt֭'h^Dׅp4$+5QT,DY(Qx@V24J} [ i&t= -lQHC7;2ûX%*gm('nQ&l lAe#*APHBQlAe#*APFPV ᪔tVWi}1l°_e FW^ͦ 3/0rHT $Ib4+J|d-hV>%uߟLlܺ|oΒ @R㫒Ӎ#,0t@e+;& ^pOui?WeL??}U֪SLǝV&SSgR55>ah_^5z"hH?ZUJ&*[i2G,]$Y|̴~'blJ*}}c$*{q>_W6kŷFv)Sg_rS W² 7 ja%> ~U̟3%zCuzVђw]1T-~!堢s& =,^ʸfuNJx9Ǘ*-;elJ[﩯U CgI+YfdKj. x#,޻.5~Yl_K}7ig<~J؉xq];sJ[>뮋V:Vgduz6eD7Lh?X+:mIg_+Ũg3|dKmI:˯/w/wϩS3F=:5\5bߚtٌ6ϛ9 l**;ΥGsKXS:# wŻΘ\jN/kLBeǵySWf?>uU@Tc &TJoJ͇j2QIޔ{#LCpUt,;'@88FeǵC^ zч&wjzS@PVK6O85Kr ԧ]+ocḌnԻ+\آl `=$:dX7ngRI*MՏ{/X۾ >۶k][ϟJ{%j (=ruƵe9#f%}#V-Z>U>d@ӨsSϟ3%.}ԍKoIJ>椬Yx]+v4GkTI[0x?c!{^n1>fؼ?] {9AA6_ E1^ <㦳,T|eс}t!::[iI\e۾Oa)0gϝ'yzg?RgGI^~FwmdϙʎoR&@WW2@qI5.!x+ ֬Hs|p q?|E6lZqq'+5i7ea ^6 cOՕH|tj}P5Ui%_+zG)gOܰ;2v*y=@2fRf{;#w>R<37vJ@Ͷ=s.aw)gP~dk䴈C1G]peJQQhq .o±6A~pr©_~I(֭SQ0x cFx#ژ]cX* ֭Lp…Gm*esu-ld*;^퓹:vgkS%,tT_meuCK 攏^ ߕXSF8.tIfv<[ms P:5]ek.ki0wTziUd_z"(P)|\ }E_4:һN `ذ@8U]K~m=G:US~@rFL.nDt!=CnThj.cMOVd?}mAkԪvP~saz*;^Șuit ж<5O^VI`Q:mfg9QR蒌YUNgT+UϪZW/mxKSYP^ruF 7G=Ǥ }rodj,u2LSbNa{\1y&xE8UL- ^i9*sÖxefaqiMj{lr2Vn7,n=Gd&ΘP暹4ϡ}=y< QY2M7+uS6T$i Gٲ k^O$qpϰrC.@ Ձ=sxτpmŒ[Q-4C匒EQ8n)!lžnc͎?ܕLЏ:ޕP;_>i GE[ nK F?CQu&]箟>~%|0cKz̈Zy*ׯoT'ڷ|HK?Qso4.Qa*M?iRfMκ|d„F[:ڡC{#lU1:j Jx bK eۻEfHw[:EO2ocMįM@{Ce1-_Ǟ|kjb4-}_ [[cn[9 @C ٲ[G9{g(}c,;! ”8J-_l'7ITjUZk~7u;h sq7J%*uCRde.V^}x*9T] **=0fr蚵?MWYʎW&*;v@jK;|V˵ +AX!휫A_'L9HRʩN׳ۉ=UVK9uH6t=Ĵs}>Hm֯I}>~`mIʹnªp\ @j/U 5 Y3.GXY.k@k_wmZ R[ ns|Uw$ V)~'pU펦QSNWf$ 럐\;0]8c0˗QksJJI /vZI/_o0Pf_De~tI3>sVW>o{Z=/ҏGTjR[7b^7s?3O84n*|rTq;D X5hꆎ$D8m۷[QϒN4y&Ŝ?!TҊ֐q@g?g?`O{|%qj(5J7ꭸ諭Z?rFs5@Eq]|\@{0gsugY3.1ѫGA?;M?{v?@UكlawI _I8gyc朋4Yys)k-y|$?!)'Vqď<[Voّ+Pm)C&}gWBg"R2FxcgYqRg7g\a?, qLDWl}貵_ 8螓dngG>N/-l|[D3rG|o8sMlAg= 3c"˲b$!w=I%g-qZv5a7_S\c"awXc&i HN2F5m9qFl%ERIe%`R=ˉι]C6eFV=?ʦAv0!:eN*~5Ȉ*B{5+p Yn&,KynRn*BC!%L"WÆE |eQ #1Zha8 ֖(o8r)BS[ˢw|oǀ?_a*;(:.KY!d,˾O0 {ʆP,p2ك#(KY8K Ѩbm^!khowTUrHđsGߜLN6s9CXDG6OpdO̝gNɻt~h9!, hT:Z;qg.U?lʜ5YˏЂx*\کɽN*(=M5߹j 6p$]~l&#_!,K8Uϴl|=MX.ss/ >*&OSmǏJf ɢf*Q%wdPIDe+T[ݶT[@8ⷺ7Vy.+Vg ˙{d|ڃ-ъ`gs&˰МB_KTю&3oĢ'XQ׿XGROu":li<,`[vR٢¬DRJJ-)Vgo߳5kkĩ99?ܮ4F{^{|w/M6hRO>;0g0,gzޫM]RkT)o2IDAT䴰Ɗ{:xF~ףJ gG?Fz_;`/}l8uçv>a>ᨕzg>,}fC񲵪 }`ˡM97qP#'(ystt_6br/1- n?a/!!GWn$ KɦW%X[[?~c-s9m/ ?)@)g|OOѶ6}Zl⟭+( ]+(?3u%T?N΅׫ҀJWS܄a o^l|ƒSEQ .T)*KX#3(qh+N]-DdνJ?4ؙex&uJ:%CU8 (HfT˘I>Umip ]f%0bh⽮j}&Qh otVy[iY,rxa=3%'T52.PسG$wwahr5P w_葿PCXT:Q݈1$ k-ow? eWI0l`g7\y`aXN6guuӇu ~V0ⱨxEz?idoMRLhFJl6[7}" ̋ݩl_gkr 0.CH>_}ŝ ST @mTvܞA@[L bmŗEz2q؀`Uv<{G4L@HGV._` IS7BYhoBO%N:Zk2K5::5?j>[^?way4!S_ep$E/xx:[`9/_\-*.|Б <6Z"np]O>2mȎ͟FY%} -I%S5%kr d ?[jIƑ?}3R[7I~HA#SQtݦ=O~ J&jMTaEtL$W.w.`Yclymn5fȾ1m3EMРw~ceǭih\fzMf$ۮ_܍lv,ڬ%U멭Z_CX<׀KJxN7?5}Vuj6Y;ΐ6a#! Vo֟:S3}|AEDrx&M} [\M95ުݖ)l'MOepḆv{Hv&3 |D,箝_6~s<ضlBUØɦck\Vo{og^JI`{G{/FJ Y4΂Yt:T[ɏ~ 3J|>*C35s?SoW*5# ~}0/eG.6΋|Xu60YzCJ~m$Gy%c #۷l Nl펊hsƨ(vz_??c+(c%y޺*C8h֏k{{jٷgm7D9Rgϻ}mͭ:o{ 'o[R{"uWUtܟ8Kjұ'~Awj5<5= vh*(|$9wm7N c\;n\v''kΜ=VhJz"Β":lQGwv;[~esT}A6H}HwFSgϾ\|VH X!1 ,k*rT$ v:R?Fz:-G7t$gIL~<7mۿ7Tlri3ʽd>y(fOSmOJ9%gN39NJ C8V~~xdƉ @=ROP/% tACR*@yn\/}?֬‘*KJ$JJ]¿DGGB'$;&ΒZNdokU]!/?3'k2rLhr .*W_T6sH[k6` lec(S`7 l㔍<(A"؍ HlT6Dp5Af"k6 J lGe*%*RAFP65APFT6T6 lAe#HteuDF]#T6(53HAe#*APx(O`B܍$> Ae#X$nlk6` X c$)LcFm#؍ H<)6Lec`F lAe# ls7ơlD`FAAplQ$`Fx6*Q$$^c~2!_5Ս`F8Ek6lD}6(RXl6ď:`7 lAe#*Ae#r XqtQ`&8(hS6,h`lDlDgp1DyE( `FlQd# Fp+ ؍ v#5A|LylÚ'lp̢ܚFXO:Q [8㌓gϾ N: EE6`FT6p/)}a:̙SUDy!t/;gV\$jN;:T79uoW2ZWe&_HKz]_"G"}O$fҳj"}bbxwE tRhN7918|r>j}gZ=)@EI9^«r˙2녞҉B-W3{\Wk2 O*J`8p HHEO0w ͵~izY&BTT G)Aaуd҂H(,X њQV<؉}RS>5i rBD|rn&''ꫯr37of:HW?pie5Lk?)/pbtf^N-VBk n~zCVZO~֭[ *gjL֊xJ\`{sQO-tď#kn4R8c.^"VSrѸo.5M"~hٴi7a-8}4^ir`0ȭ0 ZaNUT7M7H1κhg;c＀E5A!̥+X!)A'_O6|WGQiuջ4cHrMW9; ko>n @ViӤFPH嵕_)M !-(!Zh%pUX1!ܢonD)ejLLn@3 yB-K|,v[-$d)-$Тл5!=ńjZaْ[4? moq=!Kn!TS8F'jT -H;Vˢ8&$L!AJXFZ$ØL-/Õⶲ F&a'haA-$ %3g&5Њۓk^);s=Bˆ199;1{ݹYx7 zaV1(Eex#9x3W4qG-#St . '@cu z`KO%/oGs&s`l$.H$wSYaGhRS)))tVv@+Ernjw: e_u:=Jx!9h$ر=h ()Tnca{E+鋞dֵWh;!+s}C}zhdee"zIY+qq5tJyCKkB$䮙OrGQ^u4K%H|9QWhW2z6w[/-[3FN-؉3syc $ϭֈ1t5/"Z{4U^&"<4=RiVO߅A$q~} "yb)ո p2дGf0s~OLZX?H-^LÏcx[(e= /sQRZwOto l!y3MI"q8.-+}ehmf;og#;%w7ybZp/c2J=P㊘8Nx&SI&{r* Drqptmg~}5?&]XCK*0x,n^Xzvo5~>vlB_'pj7&G|LӞ 0ֱDvq7 cu ~qt]?KтLDžc[xp+v 3ť4:AJiJ!~K}ZPW1 w7Q4DA#Kn;Iͷox&P˥z|tr(&{9N~-QT R\?q|>bI,ZZ|}Zq- 5*E*dȐ@`5 !UE·D[#?^{ AVWk>y;b'1yjx-6~CZX}8Fr.pm (``G5" ~ X{o%e VE$gbQRE$]Co8H;(\%,Tr?0a3ՎLP^VKoobv\6nBMl'@#ܢWMw8y;P i8gj.Uuxv؇4,,Zt^~{= G8Sz!YOv w]l:!K,TgVAZ+6ny<ËTha5퓱3C cBH۰,RBHd֮]˺ug볞h?{gEoug߻; A-a1aHdQQ̛Qy"op000Λ7+E`@gP}Y! ,H@ȞK!!$Y&zNU?|u5p 3x>*oߐ)pgUz f̘۷ҥ㏱vx7Hc3KupCsP x#-G̪-xw&|2,_oeom|a/C3gTZP(-ԲV{,ػӷo_,^fΜR6NL`:IJ`svmħ^m9#~)OϜ zHFV `Rԣt5> n$g.n}ĜW1kXt/ 2.F̰'NBTW)QT4`FiWKw*' $4K,Att$V3nȀ$I9CsT0_>-& %9"]5j4iؿ{܌ۃ\~=ڳ` Ei `;v,q:XH"@Mj_&L#" n`„01Xwxgjso'4G'« fAȿ^D&lh(BPP(A7Ŧ&iHLf.h~&":"h[#̎Dэ6z-L:8r1 :x N .F8SvTԣŎʑ] =RL acV8m7O=3iH ]= ia2MC@7-ofl:s$Y"قe5DGGS7`0BJ 20o+c7@K7]7=u w bE`ғpq(<9*? ]  J@BuUTeLen* SN<4AaKgE= x/:v I&x܆^4:[PC`x8s}30}t~j6RSPCg9vjIupPlBƨew/!mӚضi?$I.*^=0rdn InX9d٤`'<=L =p!)Ĺz^<&Se#*jУpCspEe tK3Q \2*j+`2֢u$Yz;'>_W'H0n\9(@AAfJ A A#J+>.6$dd6}#a;;Q:Ễ,MIc=$ :Ew@e_qD[9FP( ԢpI02U0 wddU5ϯرDМZXpFCꘙMf5MmBIt^+/̈́Vď`o@46Ja #{e H#j}>LU^250ZPP(Jt XlJj udeYgAzf%:*!C=mf@?h69I$ˢiEy(ȫEATiR͌=zМLɀ`g*yg|ހq[}έ| \;P82ࠨ%nn  "Kz]# J@U+x@mWV'K8Tg3`"}l:DifeRsﱓHf mhCޗ䄔aIe5kQQ!ұ=S -ҸB@FD { >r۷`#&Cs=2:mq`Iۺt2(CԖ5h8f @aKZ= ur.bmNɓw .J/5 3i.p?Pk@Ԉ())amC#,.Q1ge *aLPe_h|7ch 4t n= S},MGAA4i0fx$ٍce&'W:yA灖b KMMEzzz | QAشsؽu;ʲ.#8kUJfjff;{(xU̺MH gQ 3b9"f6؉%XcqZK̼^GJ'wl-x~xٹs'pCsR} EYgQU P;5VAB{UVWp Gp@tBx>&4qu̝;%k~L9)La8b@h5ȼr.|ڮB/E?ǁ}Soӧg,PًIiNfj+}0hT4o ԡ=hL"&4L |h$tI-_ƐB7}//E𱿁wgnL-\mŴ{@U (0 V??CK7Y5/XĤJ8`)E3ܒ{oKή䢄:gh*pN*A蓬*t IW 7*̀{:/"3fz$foY5qu{V0aaauދ| >e4i6'1H]k.!#a?"K`2ֱDv`x8A Ō'ѬuRvo),`qȵ8 ;hTNaݻxg>)CŋqMCjj`FFhh(̜;w{AMi ^|q:R4}rssЀ:oh>V5V&QZz7n>v0F̧{; WP/as_\qa#CcQTIĐ~7\;`RˌE݋ Fڽ )U"JYfX&ѥ&Z)'}ؼy30fhϴ|/ ␕͛0t = l̒,M NLz)&pj q~1g,)FLt pI-&dwY%%p5egɣ}3SWq6{Μ94n9mz5p9P_w$I,UaӁ*Db+vT5I7.3R$̃ j:f8Rt@+lScDžlZ/QlHdu$s)m۶Lf!S7Ij`]k(uB2R͓׽N)~Ob3hEk:mcd;tEeE2T[ˣr2[޾};}A3MI1Z>ϒe^O%B~L (j[銓)c>PW;M,kc2 9s+-*ary 11#^SRY6O@]`fQζ3V>)]f"lWVZ}n^Y.S ?@1+>ƙ1-+@W!6U7LN!K*Ef)S,wJF&=@% V.\2@ER*.uAOmސq F@,z 4 [44aCocB3r4tN4V :`Bt~[?O17`[?_ РWЛr L h НiV!ghs44 Ѐ@  4 Ѐ@@oz-瓀3Mjh`*0[): ~, R[ !9 44/Рgh@CVS[g0r@o:)f`r: {O@C@w=$Ѐ~ι6.Р2DO70tf-+N 4tDA7.ɭ3|:k+`<8pFn`NyJ0rFnh@,߬n^ €}#/ۋ745) ~l,܀@ hh[H訑8ovk~Qo٭c`2x…?JRhnR̬Ҡ_;w0 apH=aɂ[t7LQYT'z QNOJBA (хg5j hl-oՁV@qGjn8[uUⵕxcInۣ,T˹A.l#G(=Z\tU&ryXEuYVIVM @ ȝQIENDB`anyremote-6.7.1/doc-html/data/jc/themes/default-arrows.png0000644000232200023220000002515212061426050024045 0ustar debalancedebalancePNG  IHDRFYb *1IDATx^۱kasPpdIAPA7vɠ $KND,񆼅ц~ ܵ9O>6oL2e*~΃i{ w[ٳɾCTIf<鸘^nړ폆>?gBŸ쀶S}.Qͻ ǣxuNN ddM"?^Z,XX7oJɎspIvgVnycP9Aq~WY6ɃÅ@ xZS2yC  O%^\R pwrT Ll6S쏆T*u+.ܶ %^ka߱Յ xa l 6vuUئ~}{ݻ"lܸO^e|4ec?L BO \Hr)R eKibdceqW]u1+ (7+*,V R#Ps:-Pڙg͓bL;3g9sqW3fz.SW%e5\6~FYEfYmOY"%TLY0ln֚q}[liO`Ck,7ܽ.2J9~mZ3#;ԼAc4#L` Ő-XS֊˧cȄ뱝+<ƨBf]wZsbR2s´m_I᲻@) E:h"1P 刡#01,0КNi Ę;93pRдeD0Ew-FYͼӠԶ([KB/~ca衸5AǤz/6?P%^C_L0 Z{ZæStPa[+ ĭ_LҀa?q`Z]ZØZNզ453/g4atvh+WnٴAֱ֠Z5k hُ[wƥO};'h!XJ) ֺkhz h Br0lrΝ@6εd'L.7 [5:>DBԒخ6T@%*LIbKZ+A+}L233Jvk3Q}[8bHͻJaAQPP$Tuuul߾H)򮛁she~K>C-qId<@ޒ֗YAĥC@H\.G>؀v˳I}/6Lcu)a"H%E?H]Μ{t]`7O(r'&"tqeҙvgtYL_8~oNz-E|L-z1Ӳ 5ZgA&³xAWe+*f@"KnF0ݺCII̿y5-C Ы?5"y7ҚhB;p-M5׳\BU\\yɺNiA ,;9mLYz,w H +8cZk㮌<)5{ L6Z(n!mn˰[Yz*[C7dcff7W!e8 "MN[K _| ]$n[8 "m,.Zcđs5fΚ^m;@k6s*YZ;l'3xi>STtc)uebFyW\|wp Q{ttR*?{:62g;ðlCݗؾKB~W>x=6$d8!Z0|i<50 3jrhs z[mخTytA ?=/cct޳g9^¨6h|`8 [l~]c@ @_R=a DKc5U$|;YSfj,"V+**1bZZk øGT|暃0la >yS\1\vQ}t;ZGa͚58B@(f᪟ީ:*H[N~'Z븬nj7cVot_0`r]T}@s=$L0Ud-Ljx 9+PIɠnR'1 RV5Pg'fc3G?gc 5Ֆ>Zf +ԶQX7X=5eI('Z=J++(o?^ =fZD>zjzeK+8Z&lep|Z|ۈ a>|S{F|5e=0j)#Bkۜ ?qfЄ Ņc/6b&Lx233fڴiV4iP\('s:sJK-ɲvʒ 6I  0 L&M;INC2HhD7N`%` c;@-6%㫰"Y-RTԜqҽL]DȘm&_Ĺf]+wE%fJPŧ2L7?Ζ-[xy7^z%نɓ'3BqلI}i"ЌP{h-ǫ,kSLD{G[gW]UKnn>Zk8vPr `~~>˗S\\ʯkvމxqJfN ` t΀o^nn𧥜gw¬gŒo^g#bXjИ-f߾TiL@cLN.gii&֭_<+i9:-ɬ%IRjrJVrPm7ނ-'1\r9y.a enl?aaW_}u@c[HIgKao룽~|(F}G)_~ -X>?a[UJ {Eh<ړZkFcMIl4]H9(g*gQ "Ԁ/coZ"rXv-n),"o}$ 6{nn|f_Ȟ={8y$_֬a0eQ4WG[zh:ΆnYT<{?on>m*ckR( z E [kFĽk$2aBӧ+ UW٢0l60?oVM {kydW.˖-"_ -bÞyn]EKK911h݆3tC/uy1^{Iة_ȘҥKqݸ00|Pʇ7XYHNN!%%(?Uh']hω'2,"޶i!aP{ViiǣiGT汵ky{nNs~#iSӸeItk<660Ȋʼn6l)L%=umH+CAADMO2$==uďAXg NZQKV]ut2 ZLJ;N @]W}2mKN1HIbפd**7Ns `ytpF2 [LS w tyw}է} MzQQQ%hz5룯GoO7}Èbe܅#?&ߊ#8ljOZILjaj$z`qKN5Rs6x =&,"]" cޭ,:ZZZ\}CQ6=Em$܍>bm$%GcI`83% ;kOxIKKcLXJ1"5+UJá`D;4_Ng{-MJ<ƈ?02設<طoǩ\2ZmŇvıN-.:STC I u |݀e&*$C Ȼ6Oo!ˮOqiȼyY(Ԓh!7+oO̿2.GL0)#NNGw"9\"> BWn>ywfF'/q1uyy9}7ť,)-,7gqW{|C+gl {w%_h#^:3 clcl`t"j rcFLfֺ:jO짵FtN{vbq:SQ(ܺ UoT_ H'?|]U<{qrO+VH٣pzx7hkl†NS" s#L=S_l4*~X0PQTNQ)f"d-9BWJ-LOa΂c`NRA?W{ziӸ+EJvsq44 TO}n1Xq[FT*m_na2wn`ג;# x f~.^b,MD%35PS 6璾^ZmZYYDE9@uI>@>sر-Bk7%%%DܖFYrԖsd;"Eh:@?9ǘ{OcDh_sSt2.Υ-a'n #*{AtбPsJMڬ;_a~ʹ6zLaaRҠsp:.gI܈M7>8u✭c[D'L$%oby~n Gۭ̍ t*\N'+m-<ʏs) sdsؽ4Eӧ.,KDR(Yn7L+X3u* y93.< ,<ȱO5w<-E)E[Li@1 KQby sֳi:2lWW]uV"''g͍9r'xw}WD4VQ;]Py' 2{^Ma$Y2acc1:;;~ *a!{ ~o@k7V(aY6HJ7_'OoQBņGĭ5*(6[pZD.l9,CZ5nPm%f$n(@k7?q6@ AZLBh^UTڰ s턊?a[HөDԃQ(sI5,n[ޑ>yAe6E9 %`fŅ-Z̺h. 3Cxe9!} D3YP>#pB|AYK>y/獀R?: s\o KWWdh ͔/BVEƤx_ԅy.dٵ`]<_GM#(3e˖1*j@FR;7䙅?9<Oqk4p8EN|||hkzdaxb~0 _ԢR\Ɋg=tp~:QȻj=DITAQH"s(cmgj'Q;H؇O Zk[#p*b "m[h>ۭ%E4jBT7V䯏 QأDa{v%uu?@YXXxR\*PG)iãk8e~R@G"=8 9T~-x.-4,:[?l7:i \Noщ\ȃ?ՌYLA.V&ŭ4phtt¶ŧ_akQ" e2f}y.%}};"$$!ĖeIq6,W0}h}i xMmFXc[V_n ?1)NdiKK^a($H儇,Jݤ7 5+ע?J0lGo5nx?H,|VOᙟɚ<Ҹ HI)}nm ~F!R!'O799hw8裁{m`o wu=yfC ^}&I1+{S{q"sKnn2X-0+;Ԓw(U^~nۏDpԧr<3S[/rm#XflzAcw/ tR`Sq@kOac3p?V`Qw+!֏.`# Lފ[8V `on04@'-Ł[G:oW`(7mG:@A`wZA2Sq۔J7|S ؠgKN 60u ``oJlk@'쭱7g5bvwй]g+ 0]YilfX[I2sTo`շNL46g6A VXd [q@+j`t^=R@c{+ؠ+ HhT4Vf4lY@qgTuRc nzxAco%:MVgKq] 8l@{|_?٫c@ F uQ,Uޱِ:ȉ|l9w8b( xZ.M::S)@Q9^'aOV3^kֳgw.//^@E  !ܱ !ɄMw2 SCHnnq(>`W"'SgIUPN=#1زIx@uV@ɳb7c۹2i6_$™p%khh|&∫ӗW#h{>\I#[ + !y"M%@F3L~q@^VcyB5m^UÖ-k7_!MӸo6νnBVU]ϧ "uDYٲ^M՟M7chs1Q)⍣~c dP^}{5k#fPv5dQ]#e*'XXM |lQ Ծ}U'_?X㞊2N?%! Kng/}#qLedQީ.y8tord(LIENDB`anyremote-6.7.1/doc-html/data/jc/themes/tango-player.png0000644000232200023220000002111112061426050023477 0ustar debalancedebalancePNG  IHDRD?"IDATx^ڽJA ,5;,,mRJ?`XaY dH @bӬ==ܧ6Oe&L2uԿ09HɃRv8M/If^:5?޶<3 47S5md6|~q>R͛7OSRy' !/G#gSTa~ a~=CeE(=0P\v д " FBF>y^_,Cxc +W£{y!thvX*83&I%Qh\8}4_K.C~<"8)$YdhH$x4Cѹ|!+W]n ӄ50д/2r:@Z9ݻwIhi)(ה8lrM0PD|ry= eoL6ub@.F6 r+&''\8 a!&y||.\~qO>m\y(8B(]`'NhsFua9c"ڦ3=Y"Vp/,x׵`nn\ָ1QY!T ?7I Jd.fXʼnDe "IwDbb'4j/9&28̓|~ߗ<&a?!w`ΙX<<55%'OPi@g,U*NFD+|ѿ~dh"_-gð:ƵĚne%~oY@NSOǐe0D5oL)iԐ+7I܏41߶ MWb ďm 4PߏuHCvH<2(5*r(]G_BwSm2w}oT.7!&0Є,^XO| 4ٰa^^w=M0yzl߾Py0Dׯo֭S̈! v~x͚5, ^ţWs c娮˗S ^ګ~f bҥKD*ytI<ɽG*Re,lQS?ɂΝCSStHL?W}b((ɓ'w^n"QU/cG#r̭wSxFR PRRP([=7(^ŃxOAԿfhөe7_]ϨGPXh::%i=O#=OzܼǏʕ+e&ūx/IGj{gA`.\v/mʓxE{nKߝ]Gx;!r_X zaժU8}܋4q +{S 1o2&UdGFHdnܸu-u?ԸNM$cNzfNaFb k^x@qR<9Yi^c;2@alٲgΜAQ8IZ&:KzkBvKO4.\'N{tj{{s<'cųT?z[xzN,!ccc={F64~;>}hx4.]¾}بb||34^_UY*śo! T:0@kkT=94U3t JWe,Uy~ūx,78xgr3ׯ\G}}~*Hohh;:AŜq[[Vn߾Ǐ^D"dgP'ējh2<<}+**W6Sߎ$< ˆ׍7zn__M'&& ӵkE ,#)2Fj-!nKDFqAzotVwӈx---Dū,1l}V%}ʵһ翸{Tc]'ڲ7z@W088(Ҷ9 a;wٳg]D+ސ0VhnqO,!B^S%\B&BuAAX ! 4!&0ЄxV M3Є\n1w\= Y?BJ9k=܁@d7pM~c|*8=@ZSGY"2!L8`B:ӱh” H# ZC'AvZE.N,NBsiXl J\wݥf?7=n|w̙ػw/>d} mbx뭷s7t@ at-R tWlW;K-ގ|wyF|NVsᲬm^4m&{M)%pXDK q.aÆaҤIՆk_ɓB#QS"cF<2o<Dvkx 4 JPVnd > Б!%32rH6UBss3 Lqx0*Z-QnaP[ jʹ1]񧼿%fhK~把 L:k֬>#FIܴiӼxvb(>)\axCS۩MԶiLzB_z n4ɶJ2)fܫVBmm- ؕ2Ϛ5 7tL#P\(FY$HO):DQX[ Fʈ=X*l%BܖH)m<#^ zųxBgxf =tW#%+@E#`)bV|<{lbsL$QUU;0NACC#/1añ>6Qbnkv 9uxj˸C[ح1֮?MMMyfs~mrw`W .u$-Ԧ[wq[+>U(~ڵJJ| +h>&!RaC?nڴ>S/o*/ChWA-)++j Mm6P[زvϞ=0}4~c Vր ٙ/ϟO߳}+]/OvR$Se6QjaWDc^}-)%ѹRK܈ٿ?롔݌xZ9}t#> ʂr >3}vj=9tO:Z;LjO uΰݻ9smޅoЩ8vvećc!0Pƺmr{(mۆgD ߩ/mXA5}|ekz,ts;q)3ߑ#GaSx?GR6xE9pA3 诺J=[[ҋJ_l;2Iix5ϳ]`pbXjܛX,w 9"jnxbD{bX:sRV 1bK@pZ\8(jj0iD.wuvD Ejpej*/=g'z^'cs)Z$"6H&1qФ"}*"-_#4KDTJ!t1B"'pxן߷c2[]^-ʈE_a+D}VBXJ=Eg+mmmxo Qs5 W).:I*tѱmm)K1 qX*@0WWUaJ8U[*G{~9rJ  (HH].uQ  -wG{0ӧ1c\ GJlЙ:SCxlXb\o+/`!7^@GsbVPZrDʜd!ˡ LԮbhe>A %o*pX*>Ϟfyy}_BQI2xfQ: 8bOJzBf٦gǎ͛җhE}:P/Mۥ L1D-DOq~1nVIo.mxr[a䄯dVY~b`Ha_Cc$u_1zV<1s5USdHdھ&3Nf&3]Tw72J̈Fދcd>fp쮟 X,xBb?R.S溗s]+Ν"9 '[R:X YpBxAcg:gX)>(1xH#7' ɱDB__'Vc%4B)()y! c3+f+hW~ [ WӂYo@ӏ-(>#2]>/xhX JٽXX3ХRc1s.T&Y;#E%=̈́ G!0tŀG1'bV§oQ (VЖH&\u9L?Q&\9ثx\EE|dc~S$K֯N6K3мD?#+h{O-BM=WDž: "m4DPZ"v@Ǒsqn,Ƣ8DC!1RbeRPG@,'O}m :⯣ꢒWA)/En8Ȕv4*1fL;_{f7IљwOXOZRulQKq]#jbMO!-}}!A -|+z u Pt{宩ggzyEۓ8v(08p@߆[3>] 58(ЂL/GԠb4T|3su1!ᱼ?~:\r[T-[4X$`Vo˜MwpW=[a9|0|ݻd|F rH&~(BN!VED)e𙛒@߳ޡ:-w'o FYVJ( Qs]1[+-GXpf'uxdN@4 t,,]GGB8ŴI`zgi"ęZX7kO.Yӽlup|p8? uО`<΃1fb),e%R3/^,w;G@H( %' Ǯ N v:ThQ/sTXu#( 6CGJ-トnnjul7a2*Η'GxsG}8Υe[InQ+FVP$w(r1@ĜvNi#$̲`9竪iuI~'I3I:,T,"`^v' ph! Բ@V->n_ ̞qt:'ztMd IȏOFn]4t%zp =YDz2p3h@h@A3OЕfSC5lt0Z&[[)> Ա44xl 8CyaQUٍLFn ЕCT:%Ρ~/K hh= 4h@%Tvz2@ϚgV@Y'tR4ހ듓>zrw@<@;pFnG܀h@[,8=޷g0zECKK΀Jg3IR `X#7h`4ACO hhV@3%35ֱ 0 A"kf4J"8NU|~z]7]]%?|6\8T[¾5H=ܩtuyޮWzbx1=91n `B'eQ0ܲ1%^{BNO^#- H̺t;F0:+(I:e'Rؤ+x7[ed@ 460ySSnƠa_ݡX4MUž˰^/)u0j["o/>Sh⡉kµ0N9cXN[*n ]fp V31u8o[_SϏ縻p(,KjzT'!KCA ܀ 44`BֿA&4 h@ЀfL>k%)-e+J%ZY\:ZSwetPGǡ3SW\p (aP vY i.I It:s^<$mN9wBIMŔ3py5>ƍ"$$u,w)BbqH]tǎEł;QƸ~0aF2-Hp ZPtfA\N'8Oi=Jme>>DWy nECu9:Y$z矏!CH :bNÕaf88q'c ~(\8KbZʊ @dQte>tN/xZ^8a& 0s\ 9>s1PQY ' #[7Lzt;Ww ͟DKka93 y?00f$DZa*קxv:** .N 9g^DKH(5ꏨٿ ǤihCChtw%QhILL &_{-cS| V}3n 犪V0iR#C&|B2EЮ@نJGt~7σ0%7)w! G$ѣZw>7jڕn ={AjZ 00D|euûT{(ء}u0GǢ*~*3/%?yI.@Aژӡfdb  ަK.8]eE1@Q}6…|c$Nhlchr v $A}i1X#В Gĩ$5j71e1\$ֱѭ=OMNz_l,o_yNY2"zGCM%vmb UNZ q\U[6a\2f*Yȑ܊ct)4f̳7)XHHH`6vs^AS쒍i̝6~IG-IP}ېe %'XO c!̚>6* ! `zynǞI'`E2PTjTЉ㗸fF"uL-ݼ^QYVpKnRÆah g  :7)$]sxB#,;" HA^p1;,=~I - OHDtJ_TT.:6c 8藐@_Kjj*$MfI'8٬`2S?#=" SLv UojbY+ T gU&jnWv;jJ%shD4MM1$jo%'?RoE]]Ǐ 2GER@ %Bdǎ%q f%xnNZ$$N*V$@$3Ah*qhç P[+**wG?wTh8C4:!%5{E@Wzի#8U&jEEpjp@|/`sƠd I aH-̆W YX"6Vi/ NuWq=4v,UhȨܷ5GVp;tLΐӱc?U$(EH,VT@ك8jITssE<7Ӎ j{Smms.*I4 a+P{'32lUu;)[l*%WGg@I?B*.L8)~Rk<תs@ˣ)72֬L AHv{>58BcnDe7$)2i]WtՇv;yJЀlYt_`"f\dFQ OPE"O7k:w.Uмchr!Ui5LQTE;AH=lũ" 2t:a::Dv:H%UUU:wq5WIRw)KRY+5eǰl<|6T/StB!i{!33K?L1ߞO?UbIH;w>Rh pSگOTP|U].RIH%PsRq~&FFb4)-Cܼ<jRvbGCfnl;EN(wc'?07AȤKGӵ[+Ab2aɓbIS %?zB~Ch^VXb"]ݴgqf Ѣ} 4ϛkkQK\.j:W%_ٔ[2~6E/B7M5vϷXO;L1D"7$Fe) -Q8D -H%Z&Q&$3maAK!#'#"ڂ`ԩ7mztx{;Ĉ1c`5c a5E -2b4X]}5L&sشa@L< &&bލ 0pw }}{ka}Bܿ`,[#K#2&oWM[n!_Rh%>S k?}333g+/-c}p9}#pŵ".!d{a߿ _Z} {fB:iFS/)$*. |q0=UfX|{ ?RbPr-f|#!4ԄFR-'C.Ǭ 2lV+䍹̊QAKE -)Q;ocCḊQ1:s&>k~uF @(pRRH{muHn՚PQFCa#G_i|6 sP\9kw̑h#w - 0 /yKnpssa7_5d)CX. g7S/Ì׋qLah+y*`*-Ħ`k̻~DEpT5#mW .9Q82ǰD,XKU9*gurGb LƏUZK!D+R,@z\8nOƵV_iuE3 CaBR SĔ{a˷[4V( ЦyGbW{®uQz(IpbmNr23e&EpgSUs寵`G9P.` h XرG% Ưhp#h< ؘv`-jZFl Mp!}װ$lZ>xӆВhX/>,rrQ11Xy3f@JxW.qHabz:ZģX}qN96\r $n펧XZh! d0FVaGX [|κt82Zkıլwg2qhW\ϒӟVG  Dr _m&}7_Фf#AT_W c$vBz:m0ز e0[WL}-$;}75AJgsp9.s6#aFvBHt!NaAa}8x]EZ kI=Z~kpz&SHj q]`a+I}񷧞" 8{J|Zʩh)i) ĶYP-DnpZ$1JF  %5Zwr -Xm?֓$عyOǦ6_YmpbLǑ}sNZ&r"h*GQN q@f`X|b$sKoh&b%~z6+j"jħ*W1OOt̲BK{qmsϱt2uE!Y_{߮[w݅y^ +mxYRk,$2Z=]a,*/[rFyI^AB [G]eNWhIU&-Xv!Jke߸-£bhp+C;cLo pg}wY289.\$}?ɌV]6rdZR_[Uo7~FS0B/ǏO?O>@shu!ʇv8IBzqqSt= »w; -!)ޏ\Gvŋ(r2o0L,\sgªrjE. [o|?~-1=-$^a#9sCYQ ݻw? MTSZBϽ9bj{N-K;%=mwVjexǫDCkdFj֭z(ذ.gJc[wϻ?;iMHW_~ .cz):^M&{6Qx?YB.Hܶq ʊ d9UVzn|>hC_}:w|)TH?r ||DJܭJwDZc(V<ԚqʄV(n5[Q1}BHEr9иTJ! -%yK$z4Ѕzz4Iz֔׺>YWWGL;H^)$t~u$V_0IwA A D"H$RhD"H$U%-Òzŕ砷/"1UD'%!mp|~y HKCw[QW]~t›gAJJ_pWTswEMN I}`cw뾂6x{IW[ӶoaTl,OOcx\ǪF}m"O VhI cXA8m @)Vȉ\y%bغasP9cFCy;?T"-3yvUER/cXW,~AL +ҧFuE\h XL+ɚ7oF}]|1f,}v r|:|ZVh9"iƘxA *GsĊ*k}/ =)-oU} <>e_~`~2Mh㏤I.ŪqO={n0h6!=m$j*gr%^%TxWJ <`gBKF X 5_ "'ٳ XuҧaI?Taw GacXxooXW}qUUӧqw_D}E>cBK޸Lf3.=xRJ PN^?FyBq{MnMѣE~J7yh"O!v+3<vUWzq#+pcQ89Qlx^LE y''zYȾ~dZL y/JkDRҤ&unzq^\h+`ܹx}׼gUaSZD"[ܟ(npfDPfgN#9?+'q4ͭ8 n +\nEJE.زu\hEcsn^b+)hsN.iC1wN}…x`#' #?93L.>_^qυZ)ݒ#Y%+!2`00Ei.'3K`޼9K̂5gmυZPU;&Ǐ Mψ?Ǹx97m1` #r~ tX9΅I {p6xqe$Bu**9hֺ Њ[LeEpH>eWFܣ{5IЪZiC%V9F)kKNt\U=+? pdFNm̉.Ŝ̝ 9osV%yJ1/DM}YL[`yː, 6l}L*< ZDO@h@'xVᓍD7#Nȉ΅^\;2GyABߟ%YY qh/慡=yen4.+ K)gqQ=V~; Bj{e^r[~6-b<̾z}Zi/f'Sg܌O=ǎ1HBw -q<+-z'i>' 7N_Ue6rUs>g=ғǚ˅b۵Pp~ۑo2#)vk+ شy|Y'FD/mf_3ֆ0%Ͼ2ؽ%\^o@yQ|;q-w%ޱn7 w ƀlӕ#]κZ9D7h D<oWԆȅVq[HhB7݋;.'eD`A 15r UC{Cb׎Ck\ n;':s;':04F^y3!| 6ʅ^ᬫjBnݱ N;}oQ\2x$ $& .eJ!HG Ň#Է1WQSmt֊pv-HHa_39G 10\Tpp*Eca^;(-.B'"BKbiCb+sp/U17'- °K'aQ]U(*<2DDF!""4:Q_['mt>2NV pTdGdn:oL~#f<I=+DK˧owz+_{)0k. <aQTdw1}Ld)uTOWaOlEaau$'ĉխCMfH9.LJ9U_ Z훾hC+"ˣ:^gde1_0hRz+줕HВ($VaX "q3$׍8TWcw֭^7$U<*[}PUsX8('zsx%Qbb0 L 0̘4 %N2hw6$1IIsF"UR4[7ҪݍchY٘ԴʮzS_G^.aY)0`EoL`Lx KKISpUG:a%F'94h܈LEːeU׃kB6HanF y(+_X֣U 9cM Ma=8iZG)-Eχ:gITⓒpl.tBKx4!tJyF6ImƂGG\$!Df\U-wZRQW N|*hly]isk:rޮ NC o(n£ 'F@$uuآL^A޴NnNoxu mMeM9Vver^V")HT93b'WQUsٛМ68=jQXX Ca{BZV۷U)\CK\.8˃@H Ԑf=)vliݜoQfs-10MڪrI ^hy @^^>q$H¦h;hxIffՏ>JҲ -DYq@S*^73\#!4 Վbػk&s볲z/Q#1Be.-ʷL'\09jꜩͷۛDVZT񢶞7$u8kko~Cwf ŋ߸LTfe~z49=8ސL$mFQ1{D}+6;vB9LP+KQ9^|v +N 3%%(c+hSt999PUՐi2SطZ߼5L,!7U~& p|~'[2|[h/=S.@t(+BnIU׭96(TܦU88ME9# +nvmߤeV׋?VMCnˢC\++KJCVhZQܣ}-XhQfQ9rU?WN\AY:i.^t_%ZBR&Ox85Hϕe" 1[@A2{Y-w8vQ@g5fAY2 507 fRl4JsPgwog3F5@AwOYh 8C^440_އ#ws V@׍`/w|@o[ ݬ='hNR ,  ՗b'knN> Ѐ% Гf覙\pN-hЀ44`I Ѐ@ |8ieI M ̞K1 h`ݤYrf 0r77\S )8C0Ѐ摁44m6f?23aI `n<h@N hhL> `I O荁440 hY$'xo:O6<8 `0InACO6=rnAhƷI5`/w8Cw`@e Fɳ3Iɀ5 "L >rc `hh`@4AC7hh "K~k :6b(qn+,lioQOlgBvgaҞƟ77u=/‘Q"Ws͖IQZ;qjlv-Bᷭ!8˂& M4!|B9w\B|zI[nf%i!rIsW0Yowj~n|nuk "R#UiZgdžs79-u~\fAjm1n.7m8M6͵s j+ȧD5XSw^+ /!dBUDMr":cv5f?&M-L{_TuOolXZ,xz8g Z彚"GD3ru A:yF=RxSǠ\qsΙnѧ>qxʣs|1d9Gobd^,_ȭCIENDB`anyremote-6.7.1/doc-html/data/jc/themes/gartoon-player.png0000644000232200023220000002327612061426050024056 0ustar debalancedebalancePNG  IHDRF8%csRGB pHYsu IDATx}Ǚ=3]),ZV˒|ώl 9gAbC]>0 F>|\ Hpq }vb|'KMKErYGu.}L磦z-OՕ(qBK!gwg{."z׏]=iQQ(}O'n_?~Ct]E݁Ϋcq;yxxO0PpRE[Bn{w9ڔKTf̿XY]8v688WI?CN>]{߻ 'KQ04ʧOi=.SX`'0;Wx/YE~ڀ@=65:xX))ӂ{/ކSп}rwjF8-{;vr&]S&EovN8 KW'NK_Έ c˹d͏nhd DK}A3gΜ9#At݄ 4 }̙)uA-AroI Es, `KAG+rwiK2*ܿ|Gnvj 21ʬ@Av8 ޡ}*( AfkD2+P[](@ Nm!@[ r 7r D!@ [ lbpȑk:l_.]e-o0; }+_9ѥK񍯿ֵ ׿|=O\y.َ|k_{/;Ρ SN>|瞛p}cf|qc+rHSNj}MLLA+O?Ns^pˋ[Wze@kSO?, |y^7~OkXGF-WZ9UQJAp7y晙G)0qOWFG>|쑧vWw|"F{muewݫQҗd/Hٳ;x{7[֠uHoi5-'/Hd֭[-vWthuϨKK~UR.s$GK2m+d˰ju R:y騵tGF|FCkĄ{t{ms`K~~h= <5W֮VJ)e3};WagQ7s;pQAt{w浛/ZZ%( o/..:_j4>Bo/fؓc^ZۿCO0wҬ R?bqw^GkxϾK sQ.Ƚb*{-^}U`ueis?𓿼b''z5rښ?iKRӯiqne)",;"־DӑR&$;F\R[ݿߕ8ww͔QpJ/fՕoYf%/W|zzZɻr]o zg(c2s}zzƍ~ه>42R#J=o[[CO^#yK胎orW\rr^oַ2\K 2On>c & >8oR18`0_~rh"^2\Wx QƎ<=q{Goz(qT u*Amo`#PΫr ?_x傧`/۰XBaOp`br'} ?86&ʔ)+CڣE`6ekD q_Zup.MT5i2 NiZ@  숣u!Zi) LWqD-b%; GlNa:v))͔{f7d6Ob&}Z6?fmR=t6)afsA0=d*rf^Ul LWܺ!Kn+0g-䶻 G_Ow[܋Mfgͫ,www3U=˘bK0 ]Kf8u؏ߺE^XK55q&/a:m%,7: &brjNV,[0 Q߉YL&S ~w{/u ʬi]l(Nìu%޵ҷ7sl8{~ ,5un$L0'/]v}4>۔y6Mhv+ցh[p-!j~%x=_˶!)ZƒpDt<٨&3iL= }O ztZtm^e|,VÂ4 gL7"upa`Ԗiס W2l!&RaRsai/KC% 4_w,ث0 S}GwoshŔ165k֧>֠0z{ `'|.)lbr f0dCYWa!Zc![6\.aC` ؠBM*K/:7430-݆IKh_y!yMǕ8k@rЌQXg`Ƭ$v mݶ :+7[= ݑ?: 6݅7mKY4%HW( '9(wV$v:{=] Vv`]; a 㝮vr'nhrgJ,3#㇎E\]4> S=샡8ƿmZuEoLBMXGF`a0S@}YYG%U˕!3oZɫP<촓QE)6[CEnFA80DKp~ZQEQoUybmC >qRkTRxeZmsg~M*dIvUV?W?z;MVfD1&9΃6kp20=iZSUX7!xhmFg&gEn-sC&R͛__k@imTZ,TuQҾg)*ؿ1{І-2=l:z#eUʹoiY0r:?7:,/^VbR UQ`(L9i3=Ldo/N<ϭz[0N`}?tx.!n\(*yz0ŸVo3gyPXSxSķWz57΅| .g"Tu+w&OanUn[1vl&~]LPDwI(QLlR.J0Fu"d+mUVxs6.1}|-rի*|8w~Tf-|~b1;us;.juݞ^x0hPrWP&C>8NAjsgmIS^#lZͿ[TV@ CB,ovQb܆*rGDNNfFt^Ȓ{ {݋}sټ0^ރم"΍W)e3z4<(+@$ Nwl[K?M'lJ|wM(0"rDnuk<m&3[.jO:PHC w9%&PkhI^lId|kvd-e#9j"l$!tjY$qJN^w6fH?~dSm,VP9Q(/̢ބ[Єxx;6RI#7 ɣ )`t"fv*8%5ꑍE C(^"Jxs.GKalnՖL)`nfCr70gag>ro39m :l=mghn,@y~ʍL!T?EnkwK)V~#5k9%I0h`ncbMIѯnjkRtT3=i^~ϣrV^Ak@ ͭ=mL^9*@{:N&2J^ϬWm%KpNa;؝# MT^Ք(f>fʍᛲٻ;L4iQ>Qeh¸j: WER,l#Lܟ+:GZ)u5lEzs0C3oCM'}4&+D7zib$^a&/y];C0k1H`dŞ1zg@9mGI"-1{0{mHNP<HMɭ?HŸ~RJ!PkO(ZTZ{JyW;>1QPRYf庮1`&fݜԖ~YeBҟfmB /΀Nt[j>{ fhAkܰkʶ5(tZOceu7u] /Jr屲=_`o랆=;l;A[ q&(ϫT*ݶujڀFer;6c〩isd[GVآ5e64Vr]׭jRө:9%608\CFzmym9پZmuIj0vܫ#3(Ia^(ur'7 `BrjٳRZ=g矄aB,Z[3!\h"$3;Ӝ;*B`3 MhJ%94 >zjjAnx[ܡ o+xީac62ӊrJWTAsF. N^`n¨t ~ ;Z(]<&<5hLLh3[ѨO+|B\?ww r` g6Brgc~z\L̷(w7wvf0WIDAT8灉saXM|Lɓ'= }<LOaߝܒ{| >d-Kun'wr!u78yQϞihj*^2qۨ*<ugs4@=dh4 f b f=ڼ$=Ĝј=(^C[ AF+K9Ϫٮdr(tyKu&8ݨz rcWĵgzc']H-˕r/wFF36gzJRa6[Aٮg#mIL#xa#:% B,yk0U[۴mwؐ\gT˻r,\Mzܒ] !)[RRMٝ U}@8G:˻͂()dՖH-nR-Ȭz ]Hn t D]ә IQnAmnA&[[Yc"dKYO"ȤrG( J@-:rd܎[ D r 6nA-JA-dUeRIі -dY9*J[ ؍c", "s -dGYH"L(@ -r ; !@-!@ Mn|dBmAaAv--(P 2mKv(!@,7O)Ȣ %mxn`7[T[.( ԖJxn`!r D]םr Dw FQ$9uJ2g*rR@'6rRYA.n! (%>}&{߻ӧϘZC ɫ|^:݇[-#Z:I]tKQ &vTYvݦ쮛{vCDB@J#0v&'7^h4xz!":pGgw\?AƆmH)e ! s|= b$H7 2n 'jy;0ɏ?P ^*~~2IHR9*v~oWcl;?\G}CߏkΜf )/)bYnȬz`~u y#3 ִR:fyWlf[r>|tZ4TtS##?D[R Ff+1TI[֮43+it +`PZ^/#"VO8:WcdBG MTaejnoY[t{bXzuKoD]}~Q 4?xk# Ɔ "C2SP(Kru nnYdEѿgT4e3~J&Tssxl(zN?Qdkuݤ4ש-j Ef BK拯Biibzf;3"sS~$>|<@w8>47stڂH 9r/ollbfMiԺ-Хe%<)f[lu& 2EfטðݿH:e@hS[d4N7T)SCȼϱmBs ̓F4hP[;v |_hNrSd+M9rR;X_yK}6\~T6Sn^? :7Bcl̶*RH)Z*VIEiyZsݩpAf)$Uqm۝.*Xv-`lL EmhpCҤm #Uv%-b:mP2"Pt2`{LW|2L;;473m:}½_'% =YxD!4pqwI&˲0mCjs-rYyo|6 8z~z_<8&`srHE-N`j.0mW1.'}11lK*}bM7(4>@2%G4՗W`0kk6_\Qzqʃ 9mz]2'yTDwBa6oŕ!Yƞ'|ʟ= æomikӹl!~(B@uA}ATǣ4MpjWRb{s.pYl{-4,e~b#"m6cm_>ϱh>{[?|ģEZfwa 3k 0+Yxy}9ұ *Yh2v&qVd?f#y~?ǪaV?Kf3 屪Wf#T4Ͳ0*=>H}>ejshBK|Dd&t s<&fgK&^hd?kZdYMgZEr]-SLM:U_E&L' mUz>H ~w3)iT݁=nqg F{m)ovs\u"U>l!ܱYs5pYDF|jNgd'e<O:&81~ip..6]؎ 8vSkO_ycqixYŚ5xT]5H=C󨉅x)Sݩ0}HFk``P""I-̺ܷjpiUMUu]&1X 0TP0+tntSOtʬ^H">gPGJ+RJìa e_kB+^) F!nfbDFr0|a\xD"Ɲ6vz{;imB 9rg47·z'ٵ7wYGfǎc\0[m{{5ʃ\ޞ֊ s[ B9?.[ OuVFFF7Z=k;++ѲTY䈂Tޞv֮5 mm-8Lܐ+\^g^divmڴw}J8rJìMz;ɕK,e*r|^|8LzF+/$OA} huNlnٲ?/ a7{gu*_D 87C}1_Z7Q^:B,$Kkh4qMچ:L駝|ڐP7G)z;QW;];g.^~:s\DZ am # g0 u-t~ ̛wB۷,rB^gC7,[\`"\_}뻀G69=VOc, 8"ܹ0%a D"2 r5zwV}fl.AD6_ǙW/|N5D9D_9`+DfW?P'5]C:n-m$2 1 n`LD>^WZ?Ȼvj̣-&3 ,pLhE%U9B[(#{=$ w~G&ڤ}[7I"S#TK(&Dy6N (cCO<33L~a)C|裏YR|= `v>=ک9]^}6ί]ܚ#d XdceeL&<\3G-koo&r?VB5E^k4"s#D ͫJa9'+3/Y)"y,yB D@{?/eZKC?z,(ӧO9$ JsfAwm6\zw7aD` 271) 9AAv Z=: ?# BAdlF!-z:.0<رcdž]~/_ޒՊ1&DJn){!һ>mY,qO,,..bvf255yٳ۷oG|$̻ヒcǎ̙3d11x+D CvTUrTVc ]mݻwc߾}\(  y(m؉!K]TߑYr1jSB"B B޽{9Z{x E`)TcZ mDPcsu:#wF,>~ρ0 | Ss"'JķZ̒fC2gW[msx>եH,yVh" hĉ8ydvcw״ٿPT\ @Nq`/yLf ٨a(Y%;;F8,=P):<{M\:*r}(G!h׃v6_IB4YB6ݾk6 v M hσZ D &< dSl:~b+dE^ p:#a2M h2d3itG fAde݈TW` 9J;rkҹjZFdøO_[|@SNѣ])LBA йtԪZBz+k"LRLu.? /<;`[;:4XaPb9 CsLEx2,2 3n$}6O~8yE5"4@I!Eo[>2gn\D8QܒkʁƗy5)#,׾ϥ)Pj8ѥXe#(ry<.SBB j#r=9ZU0ЖoL fK$J+y2S ~X9#sx~Vy](mծ@^dX䑔h ,y PBm߲4 /ebnݺ 'B[RL$aPB+_\*6zdLw 3—}v: c09nWk+/!wǶnA @9U\ pU7xgW5%<27eo 30|0f1̀%fa $yf_Sigf; L%@3̀007+0O1f`Ǫ]/ XNhf̓@37/na,a qangfj43 ̀0 3 ̀00 nnfp3 ̀0+iff0f7'99(̀f0pf XXA@'4383 3 ss&;~f43H`vf=)̀fUkaLhf1 ^lxl4sV`sl'l 3 ̀0UMҬLv{ \fcdp4 A'  Fc6`430; 0h^} hfr eo33ֱ A#1NFHAAcmLɷ?^t@1eAN0?زK,@A^T1M,ZcNJǘ"p`H:$3731̻ݣ+ kc#Ǖϣ~k2"[bUvg+k#&v|j;}&X냱. RU$<:uktDyZ̷ca"֧˙d<^Zy鄧>_Q h&(PJHl|}j1b9Z_.jAGg#;|swy$س`eHIENDB`anyremote-6.7.1/doc-html/data/jc/themes/tangerine-arrows.png0000644000232200023220000002422712061426050024377 0ustar debalancedebalancePNG  IHDRH=(^IDATx^ڱJ3As6 {IcUXZx)R_Q > ~bd8]%i DL(>;',m8?k5 ~ZWz5fa?,bL/G<&+1DX72XO]0<_agw<=9#UATU ! cwom %U8lYчE!C"҈a^ eށ$@u!`p5Nmu7 1܀ۏd9irE$htwf7ΐ+XD;ssD3 @69!G4""WaܙonP/ fi@2qnY@I- ~2.]aQ" ^N<,,--="r3)&~, ;ͿC6xfFr܇=O!Ǽd^_r@ 'j= ]x64PbKmם7]ik xNM};b.]]DNMb1b  vf@̀11b b@-Jr/#xîb< ' ¦sj)íGVQvY薨; 8,C):5qbdu`qWqi%㎎2 n`HrwVC:IG}S}S{),Ü14Jì(N8xnBt=0 ÚiŌʗE#s][dŅ#ox|MXz}m Cѫ`Մ7^A,XAeVٛ\S lY |ŒդAieV3 b{d  xbe Cyכ¬~ MQL q^.<}[1'tv- +$Wg L]HA5ʿOA#<[KhUy(+$$}rmujHsm+ ߋ(dg?ьJ0| km[axaY/ 0l" a ZlI9ą/Vܿ }NZ1@zIyu4̪jc2ˋ9pWaRaܥ_.M8ݘIaC4RЬ0` ^K:.crHLJqR@:΅y]9Z6}&WpiVYq+AYJ5C'PWUfc%ǂЅL=gitu@Neu QSi<Dv[t>rGh0eootG>>(]E`J) RJì5R7Y)nx7EȪg(f+>+] ~mTfl5zd I ̣g* M %jO@6`[uTt#Y&ܹqfտ/shդ"!r& -v(݃^ee\rzz=~#tfuϕt~9qD0N0khS=<밥Ve.2ַo_|A2yl۶]aqpHxyB0b(ïߓa=]6H ȃUŏlx\:8f[6bޥ_DAE/hc TQb[X^WhBG^ŏ{I2· YKbQLH*IH_GtߜCBJƀHsx% 鿰:hՈA\?(q٬1]a999@֭|| C~ wϙЋ~߿pC> K`A2b{):M>`CcaM:̣`}5~N7fLZuCXԥd,6s.յdY-ξ lt.g2Ҭ4KFbU5)ˋzB,4ۦ-qA$W\8!~p On~M ? q[fi mr7瑤]˿jJhH鴀#hm . i_0u<˚`HBO ς4+/L7ƍ3:>Yco7Dڶ ŹC"ll!lP*9U|',z5Aj $H[f=2mtm: 6Tg˞3;FTQk'D^`9ium y]UǛҡ*0gO#eq`(Ct)f+Z9?V2eX7'.yRCi])xq?c2ck2됳ZpRv$;IaVOY1;uhcX"b1ƔH~Kccc`>DZnK% AlfyQN5нhU",/xnFJ`t=vf{<y0ޣ{0;XaLX jkkTCC02D] q4jg[_GӉ@9rb / oEì' q nlZ: o.<ظi ^Qz. v羜 ^_0kɦ/L/sDjElbk OC#{;৻l:+ހDA?wUdU}azQ2^;@E?_A:*٠<ȡSϼkrJ+Z6iL~tn@&SzͬʬvoWjtJ+R qFرcqUW8W0/׺K:u*k׮{[矧jaȐ!h:V ۋa.x8~nGȏ^,xE(Aof<:$lڴoljSij .wqF=,Gl/^OW^{iʬ1L~N{׾C+RZH_ A0%ҥK&M#ξ5UgU!7dee1k,,iG^LXraTsO.>{=h[Yn{CGfMj8/No7b}9Ķm;16V>3d;sq+׬Ǝ.ѻ0*U's.WU@%g% ޶i+' zL@6xFfI ]tF䲨h~N;##@ݺvc„ X FJWI^X4:wmWQ)O7lҶԧ;gJ*`77yQ?/UrёYc&)i1Gq.okHIO*F2vs+ym'patra Չdddpi;F4vdvM nnu H+T\VOŲ]D}CJvGhE7EouȦMA6$O'~g7sT65~Q[ ٌʜ6"A" 7"V4jn83+;LN 0s)Xr4>g9ad|=[t*2"B ܖ[+}d"{"T#ϧm7+!IQNIP83 9 05`fqq1'5cz:S+ aba~;*KЈ;#):@̼%$/቙"r 'LxrpZf{+mB ()wfMJ@  jr~&"vH7[حDn+>/r۵#|c?͚u;y!jVV*񜭌\1ޝ:l[ >14׹3w$-}^yQNZfn+֕DD7ggrK|svцG>>L7j: #BxN7X,ZTtkx=/$ 0߹Sѩ۷/ ,`ڵDz?8&%k"-gǸJ*iW~o%21ACK<\#&H<6x`f6O-ž&P\\˪i㘛{.W^r EEE<9r؀ i0 @vZ ;q|w c) e50㝯|n7H؀4sxvJ6YfQ^^ΈKnh+H8TđRXTv_u52dH[ΩfkdAvܢypqw-u0:+;+,Ӎ0ܹ,^۶ٰaNJQa Μ ya2;?>' $\{<2m<Æ_fOi<f̘*0Fo;+oX^֣z <6U lVM/b>N*7AH֬+wqvk׮\8v,wLR!#"Fu_XV#Gpn<Vm\zFfbXf/m^zsION*l aL]Dnw<%3y2W\qsUW8QX}Su/YD())Q[> Da]>^w[^l1翱VUPRqR:ѡC@ݫ&B~ʸ/FJ%4ZlF4I&^ HlGl?_TI ̦&Uhhh+5-Eָ.~v%3G,n %& WZ&R]w:u™i "Jk֬ࢋ.RB;:i q

LB/_-qqB^^zKcpJ46ǐS&F5^:dz'$/1kjT):|=uuض)Yc 93sҭG][)KjʾF5/xuFWef2K)t+y)ͧZf"l?1cb A8`IIaN^y}d9KnDٓ!tQH0^@Dw>)w9޽#>iRk5u-<|Ofx}%CmL&[e)B=pRIII;쬪RzXۭDFA`&X||Z.3yyXR2*-:u]meF}һ֡IpDa<+@^WEcAإ$$7׍n>=+j 7|3yyy*A^3gd…m4U4n71!%2?"Uܳ{9D' 5 .|?Jd Tt. BP]<\j~^=4T5 2DeP"GSWիټyskޑ" fT)U; \yFѣzib@cpXfE {O6M)[t`zᲫ.SY;M~QTHd}%t;sD櫍[#sZG< h1j*2զ*ڏ,%’zlB @z4[SXT3AJm2jܦyV?R(en'*!^Wծ.Z5e[),ځJ:ZTK: DFV8_YQ~d,"gJPaKuukRT66ѡoPֈ%ej9nyJY_mr;9TJEK"G)t04K`GM ;:tRf G'ﲬpJ !JIBK/q զӶzFD%Lf+0-DDi`~@-)AUU-N%4F#<|>cT,)Q遂K9AH@i(Aͥ|C"D}dGFkBF#J H"OX07i0[+%RE22kcXcp13 Oaf/ BbYD j8m 6-ۻ?|'t}ܹkaD`;ϪrLccv\\<+bJq׳vX$j^K"VwÑj\ Uic~/ZMveFϞ>v@ РD!fb%ݼd2=8Yu=jeȰ`nS11;"L}l e19/n::vHP5::/;tx`:@< &T/%2nlTШ[4(fłr#͸Meۜi @ɫPp'<{?yR۷w_{z} g0M }^JfkSL F$*FE,]>^J7a۶e~݉55*gBZ;b)%|.R;95߽3XaFқ~5~#iO ޱ]|1 CmQt]NU2@iL)'ʕtc;B3RAU'CJ,)ZNqVv!NV";ߑ $( ,*ncsDlUUwϝ^Smع\APUNGb0sͲ T?10h'ϳ_a ߇̀|@30 $1̀M3 tGi^43 3s4pf 4kuf)pf9f9]‹niZq>@DJi9ߤ6“d&ɼv%X}iIvë$!bтE& _Ďŝ.G7:'nS2n> !>~N|TDwl[{24z:!MZs;^ ^ RxZtIj:7օ*̦˙d>}mt?:!H@z!l6)"Y1 >~y/Sk\/*9E0jd?SU"ȚXdgl2h`\0QnQ"kARԄn`">dQX 3IlXlZ zXh?[ٝ)9Zb$1]I,@_З'q΂ ;VCHثJ&Ժ3rRWTеH?L{03 MTJ$7ܵ/;C%=0}4xX:D A-۟vL`~}[8f? "&ƑW_E[34꼟e%Vp6_ŋx/g+8y !Hʣ1 <~{~D2+O5:o/Nx#xU|rLLqJ`u^NS%~KY| 0,K0l0 0 0 Sa"40$?A Ɣ_%x`f?Qd3!ˊϢf"TVV"  RtZ… q; ~0a&<HRH"1R$qX<&0 ̈́Qb_Q ӦMm˫2axB!d7|3͛FDQY< /Y555("?i#pB3#ڲ ~G =@}}uWsO?f444ԄZ^?͛7`D[!4 M觜7*,4CDms .FWիF(w{Mv͓OZ!3Fo۶ aA/o+blVD(n$XhDm PV6Z0k׮÷vFM"is"B!(<ƍ)s\WI.o2eeKpO%t_ OL&Iƚ2… I(HT_mذa"ET i0#- @CD[I|:tЌSVҕtTGUk#I(AO?M:BSw̛GcfU>Ң^sR_3gٽ?BpMJNBhz# c޲gMTf&4 Otb;FQw?fHPW`2izf،xˍ=7ʄpKabDס@#39Z@ҕ #sQ&,uuuS1{/3k0Z[鵿 IC*%!="Y*w<ً/\F0Tt2+3ɪJ<ɫ|t^dtk7! "y2BӹȮ%)2w!}cG*M3V̌ {24#- X;zvMrJlo u:ɔ@}C#كkz줉1%7*9ٝP5qEI$}F2LHAJ=MѧmbVvfɽdڙN2Ib$Masw0r'HĆKnFJcaƝ#[JJR>}:nx?}Y YaNLG ٵgѓG᯳y*X䓙lڛᔚ+nlZji$=ztww9̶mӳv[rKWoK:PLiV0x̓5cuUo/zBNBD$4ff3tiO#KGG.]TR4)XX䇗k"4M^$u|4]]r3`k;vR@Jtyb%hGqPNp9GiAZSOױ>BҚYHT2M:ް Z!Y*"#9~t=-U){#UV;p؀,d<bQUU:ʗr :yJСCXx1V2w*DoO>.^_VCee6 $b[~,/_ӧM%n@{Rr3ϝ/_!#4ɭ=Նߩt0=Y12 BPI~}ס n00aᒛR(鍢]_ qt ][D`Wr{eF^Om\ ÿ+|X`uJJ8ׁ_0LhK2. A|ELJB@4"d o=.LC-L"P\hZlI?PW_ " cfM13ZE<І̓8_?=5X"ClÄu"I%8[ثO+{T z dń͹!ZD0RׇL>2w׆ISiA^_t&fuEQ9s*qi Zkl3 B&Ƭ)sB?p뇊s mfEhyG6g"YT.VzG܊gFFѨsIW i}0k$'sM*8=]^t Ehï7:D$w JOU+'Ρ{F{5کܸ%&ʱ%T!rϖ`r`ȅ&kHd5KXxoXM1yWr@.}}~MS/z} 26IQٖw: ogÖ4 ]1qK=agc,.bϱ's^Mۥ6BB})$1϶Չ@a nĊl9/`5p+ ^03 ^`&a0Lh0fϟZ;\s|>QWwadț F{hC[<<q Taa"BfDu8$vm@{D%/Wjl!"Q[T-ڶE$/{Հ/}Pd=9:W9xuV@  ntKV CF=6p8̿i ]]g\-d %"`A$ XJb*Bؒ;#B ]C F!HkeiC#u9ok7"JC `|(4**}h#N%Uj9$X73گ2mo~5y]+N>ļY4ZcXŒUw;Ct*toQGy*u<~{XDzRy>2Xf:O3eydW=|TDjAD6Nj30>,6bt x f5Os٦>O|c2ќY.JהNv%(> fsQ}ww-t"x[z^*P\%Œ:"F]"5A+p٭w<^;)fpP;Yph*<<ܹ<{R z#BU#3D !@D4QUUOh=Ho9+& 1 /F) *ũ3HԓYs] mwHλOa ͩ!.8y"P Fk溗~7mBLsf5}rPT<2p8!ۙκA.3E3x(S˲Zwxs=87ATTOs2X96-}Tp9*21\iB&tC<=!xDJ~l+,cW/gE2/3cΜ(B?*^@ͩUjtbW4? dA 2w2|4\29sFBLdae|lpB72 K@". g>\d&5ßN}hUx-fce|f3E9ꫬT귪vT.EOp|zFo{tw9l ZU^=[mJu-J/T؟2 At?ےgЦr/Jy *&VGb>{kJ'rkgT /_{2r_[L  gc)礿)x;ÍjrUiI",my7o(g݉-:" ~` ߭,61oʙE{d!Dfo.J >{f:fCwCO>a ~}KUV}2\?{wp#ECԶ6I(G.@F.GĪ55v*~=JC4ו_BXLe tW@y6`#w ,Lh@Ahh R l tMи bS'z+to0rS[! y~j$`[?oXphh}4pSz+tDzkghcnЀ@ 44 Ѐ@ F'_ވؤb%r_z+8: @h@Ck44ślLmi &܀@@Y[? _@x5#t)7q $zrθ٘+0sgL:1Nkh޸,Onw޶Xp̹7`z6 Ahh_ 偽ܛxޮ3tFC? 蚔~OI XpXA6Fn hhs Ɂ44h[ Xpt LN~[&0 e8! 7<YAv&aodߧG貐"]vEK=GONLx `/(]B.:8BZ!B}8<6e"5B01A8A{#Db~<߾؎G?Fȹ$]T|"B[5Wx2W,z'֩亼U>6z\k*%;ޝV-W<Bߵ{ Pzn6ȧmF:`v{"wБDGmVOVrO_O(̰_0 8PJB0;&>ހxq8r,H]ggyUy4˴mz7hɦu̧]x"_ IIENDB`anyremote-6.7.1/doc-html/data/jc/themes/crystalproject-player.png0000644000232200023220000002747512061426050025462 0ustar debalancedebalancePNG  IHDRE4 /IDATx^ڽJAL&2K&w`iHh*UtVVF-ZcG+s`d;=.!d7Sw?J$B xץ5ӸV [@//ttu[ Eb±3%: aov'r b󔧴&?۾ rJhh(y{U@$}t|2p^d""&D]_>C"/m^ŝ P5S#j#l#!Q՛ݥ<12A`hfDqRW׊q8a߲N ('Dt:@zx@t:\~^||1Y_s{۱7rjR'B\.QV'>`bich71[8f$cwŢK@\&3 !0mRSXM9Y]ny,cKFu0@X>|:~U)׫ 1` D혝k -?v+5z-]h65 Sá7"ر(hjb"zUZB\lrAt5xz;aF;(|ց 0!CX %,C|駔x[[[2ƍ8q"γy9}ߗ|2H>a' Guw,D;\#nA. oBoh|jփ!|Om}= ˓p(UJ_&Ox Xʷ3 ٿxx/--gSCȚfFtb{3YEjIve: Ki퀓XZ,B1F`ym1\Fop܄Mzμ9{{9O{ޟ f<U;44Ȝ^'yL_2;:sjN`7ak4/ wTAQ*35Y h+n4 2ۺ7|R\ڶwggu]%WS*D!A!RP|wNnv2'k河׳-}Oo:Fq= 3qLH`Hm3-y~ӗ_U뮠+RH'‮`mwsp]z\g^tC>@(,CHӹ6~a _sߺ`/}. +ӹv96lDžڽtogG_`)ka::&%W>v[ ci7ǍҶy! ׯmС2Wz}j|?R^qlIqvޏe]nM k$ ko2<!RλlveFOOwѥ`t"!%U~@WF#Q俥P;N?CQHK<1THH$H)U;DʇP<4 POݜIj<{ %mB-ąq g_x92&+\ csj*i"VS- 8g{P IJ!^uuR\US|n")/PNKcy"LSbw7QGgq+!aCh ح5H'cΈGxq~$ RxיΣ>`d4!IW(鮀$ E 1iXMi"if\vz HB^_RiHtN=sS6Կ M  /}OkLLvJ rC1Xθ`MfB-q,di;(X)s l'L j̷6N\ho>4MIgfy4dM75F&(,>, uh#cUb|h4r o$8qRH].6tsm(@"zז8e: ˵\'(TWJ ̳9ԠL>son>W"uX6eQh m[.d,&BH.M|j-Kc) MhjH>BAߎchd qnC"BXkDF"Aȑ&lCx(|yQLPY@.տ!d!R6.vE#B@W,_9͎``XAx l!elńJ dB*EFF)O$5qlgo^9r}\klq pv;M0.XViM=0Tk9~e`:^ ϏvٹPIE} HS( 5|k_-Pm(,CL#5yMvz+v^@{6|Q(]W6<_^95ñ"4aCS[HZgtbQLkMk˙z9~w3S;LH|?h ,~-?G!8~Mp? , üa|w۞|#@YhJ>rv>sw>O:OKV_;_$ c!,1YJ3{Z0:څzn}  c!#J~=v+o>vϧv:N43I>B2^n  :Ha>e>Ԏ),̒#%ɭwn^n?o1,q#fY-4 /гt;>|li p>160:;0;fs%&b- FjLA.>P(h+n)]BŖv"YxEVzC-P&-  |%@ Sٝ=3g.y2癙w?79ϹUj,%E2Ӭ(AD ՞3Q" e U?ɪT*jbP8g"%LLd1U:+Jz jv^9~EէY~|?H¢JDl-}UAPJ1x\US.ɨP"AY)@Y)!\8e_g/ 4*ά ºSFؚΕ0L(R' @eK1_[й~nnq6$)ؒ.:us%ú_0_s\ HؘjԪ sBoYgP:>&'/Szr/#~VcSJ-j5&L@++V#c!ݩQ:'K'CiϦ{RZ,*('tm piLudj<8EkZECpu&gCPFA{U1NS 9ц` CÝF n6L?tT(3@=QO[N,?w61S0AT+ 7_JpCCZCNYϏ]S1}&ԥB]Յ* "&J%+ zaq7(8}wPFC)͢Jjʾf`{F} 9Ϣ+0IF?-Ε,P ]tBULZ8'4lC?Ǩ3V-FOꂗ+YUJ&ZC$d#=1焆|?4Bf"I7vk@O]Pm +Y_Qí}jB)܋sBEnOoƬ*5J^:_1 +Y"2d.'qז!ة1) ;~7V\k.:u:LvU U2ωNIT94ڠ[h|?t~}juc WIAD 3y#Nq6őX PmVGr[PRbG"AI~Ї|G5;.En2y LlԊ+"2dDBX@@|"ò~5\ӻ{SWեSG5Kn9 zs4!/>}(G픰{ׯ_ǿiiMjg{rgcp/Ű1ߏ}]C>Z/ \(^$wdcg~v] &NxZؼ^ɶ~7i?Μv QvLuw|jmmJcy13gȺu~%\ײ%\ nL"P˗^3:# 0`1\z|@M(YbIQ*7o/߾}.Fat58=C^5Kw7s?χYA_@(=ם{8LlwޏgC P":hb{p1DCBXB]hw(QpIr Xa"!^Po>sal}i#_w]]1J'$I8X-Q"IEqQD f`X8iw༷!V+b`jmt6`_~q,]d47! B#9}mQ>(rEUJŭZ>P!*W NIԽ7% F).&)8pL|Q9SPdXW0+<_ \^Rgs?H/nƊ`BRk\Ш_T" yXT #0~M>BKO$ iѝXK*WZ2\*rT$FGx6 7/'N }_z)gcUʸp@oPS3gcG5`+aJ2VVa-%c5CXxlt%\?Dž6& .eOz͖-\a@9Ba4a*E(GMl*ϫ~d^Qw #. Joo夏 V**eYX3crH:a%X6l9~`)A7^e$IVjZw`(BCXUyE)YWֆq7TεԦaԲ~ss׋\$"O!g6diKn<1IEm!hmQ ~': Ti7OPb=ױAOn}&BUl^w@:%:J] )lSZ$cZl=Fϯg?tuE lUuA%i& -p4N?p!@#ܽL?4ɦţ? ?Noz貖 &'=C F-<q`#XZV PsShm AL~~ǁk1<} ͼDLL ۞z&Ϯ-sW FUT9j`(!n& /!Q:m$"Ī<<8N.&Z[ ^㚀6=ej}wPKSjy~hYtr;;DLn$$IĸStP_K;ۀ  MM9s7C 10%\ZIEI& צпUDK}1PE2^<%७OO"ĻQJ͎;b>Tׯ_ϖɓYa @~j!qC,V5L&$D.elܟѷ~t*Db0=ԩqA8 wz{$.bBcֶ/UqEP;.Z_cپ75nu%6`}gO4駆t1#Qn^"]X5#Cr4[U9\ CE\?6ofMܱ\B77spΥ6s.%F:_u t,zwne}*"ۆE!`0?tij?~[7[ sDRcP`,,m@p*XmBU()Na? e| j.)i/'+U)MzWC*hUS`%i6nrN;6>OtA%طIN<.ٳgގС|_3 榋Y]mJZT6^ t}Q̓\(ppXG}cDѩ}{#)&M%L?pIp筷~ܺI=l*zZLa1&>TAQnP` Ly8Oc3tho/?`ر%u;{LޓZrjlyqmx]N D#4΋Y;v \ HuDa>$wɳdK۹q?+lܹqT9!vts3T{@t5k}83;ϟ?'~C W/76z~O&5ԠB:k&.D S;hj37ׂk* zi5~}|3ϩBS;US1 t 6~':kP;߀7BYLu `M lԞB hjԀ<j( ];X9ǚ:b&|$$55>x2z* c** vYҀ3ʀN| X@_tMm}| 5*Tꮝ45 ~`ji:5:(YĆ4Tꕵ jj`u%<[/Bsؚ:& gpn.M=XS㌀ZA707h@ vj@aIz.0ǡwol@woesM ꘞgCzXW敏s|71M t eԠNԀCia~q][&@ E#8΍pM ?7ÇQY팎s9@ľG`p/X;8"YȱL*),۱9I[DD%"vA-""b$EwPJn ؾ]p;:8"ggj;ĺϹ & VV/ucJf& |6>I$f>nVƘ!;,Ha@8Q`Ik8 8P>3Vc푟fjIs|nOl}mU8f|aq?]6#RN0aD$SJp`&lfQ<܅qmƾʱq6~xh}j]9永/|:Y|G7rIBIENDB`anyremote-6.7.1/doc-html/data/jc/themes/human-player.png0000644000232200023220000002053712061426050023512 0ustar debalancedebalancePNG  IHDRE4 !&IDATx^1JA XZY[& `%+ F<8ve&agGy{epnÁad _y$P|e у&%3#JCƽ-]gjЋ@dM=R*bQff\^]3&!sry6$" o'{+o,*CwgȇKDBm~}E{K`=_,"=&f&u&.@6fHD]&G"2U'1qHci@v@qnIuJ=1n0, HX,# :V]=Bp\UoJ,$ }, ax;{kWU}PonkUOPIa-.Å|G0drsA;xcυ}4 /j lMЀ=9x >q6 {x^dv&(+Rc$9nj'7J j5@+QBX jD 5Y#Aeݮx9{R(ao>OK7Тƞ'BJ>wJ. RjT*FsF~&Kո䀧I{D{hVdC0G ~)}w|hT|)SiH5.;Ц(m^dJ>eWX⇢}-mdɨV,eCԦL-v:2R͕5ggVr{KL%6kyȿeׯ_6nԁw$Hr2&v5235ͬeq`mm477zV %  akR 1J"1IlUS MMsѡvPsjKm|F+)'CjT&?׏{AGfggK4:Qi,_tHljV^RS?MtJENNVZm۶a471ĀIej?s:L^+p߸qC޿mU[VV+]wwm_28qz! ;pePQQ!F쨗/I}ӛIDeceyH 7Rʁlif<,l-'ϝ;ϧhۤ%C}0?>70z͆Mt #G@;=_k{a|W5F :iVTP[nAE?2 l.裰~TUUiV~cO{Ә$6QV[tAShHOȵ|؂"vU?x A堟-XGf:;; p1\vM\n{!k---zZ)5vy'DS'Μ9n)v%r4b^~gÑ/M5 QUS%1J>&QAfn%wnnomGhCH|tԷ}Mlsd~ltΝjQ1Mv5PRRvDFR=~z%IuŎ;PXh߾}{>L1cèɓ'144_i)_\1CL$qDR}17Kr=H;q.|yW^fu z1WЃ0)gu:2Εuu=щ~PHF4Ig457ΐjՈNob1/13뾹IYTH {{reK=߭wܹL&&D5ɠ=rZ[[qFG%8G̃x{Ԥ+/KkJ̄p%lKnJ̆0S- TAaBoR̶J˩&O2 醒?a&ԄӲ#0SBNkSB !ڣ&  P7ӵdttZåGRWt&eY^IGQidsYgzX~kInZ@ Uɜwqws/ęА % D#⾀Th 6@qKR5i"H[$CDJq-+[u54>x&8*'$vj;s[4?ntwG.4O SNMQU5^G5au[SW#}`ȤMmo/'Jjd/\t]W9OIMQUY]5^ Qk ˜QvuuuumC:0^6"7~(S,\5MCljk]&oi]"ΙUUU8PK وb9v -M.!ﲻ-taej,VQfؙY.UVVVlٲ/cV$c=+ħp([ܸmmillmmtЀ/}dn&ԴMsj0v2 |r=5 Wqţ0~;-F,X;wAޘpke06o95aqSiX- Oj:n-j:,d+\N#jn&|XYC=Se#k1D\q'*+"!L3pO&O6av,}Qe$BV\;s}TJnõ0(:1`~&&۸tRi"/[:iQDgg\Yi{q#iӦ*df= ɤ X)5776ʶ" <^a.75mi^P~͚p}ؼYxa"˹ {,,^n pĖRԁw}wMaϞ7mxP<~͚5"^a`*$j1^Gرc/^FPװގ}HA^х WuA 6iO|KK xp]Z>& n=&^8ByuĒ;`ڵb/ ,)Oc-qERN:˺ޙo0muL߰$7p}YҢ}jܾ.f@/3ѻ~V!h{E|XEO_s]]Df.jWTUH}xYRsYҴsc'cO^'!w+o߾]zQy7ЁCQ'ﷷ?St7~kfKs61+BA귉qA5` $f 4!js\Qejs|* hN=.MD0G{Сϸ>;e&QF?>: bҁ >bu:skd r-]ǤCƸ-3WmC̡8ͩeOjP롧=ٹ5: <:F^7A/hC#6^D 9u4gNegDιuA*؝: :L-—Nq=}י!z0 il4Dxໞk)`\wHA+GFf,f[ZV2Q"䭟8Z޴R8eCm%у#T}uLy{ А4q7޾^wE4crSoc:liE6u @M. SC\_؀Dž0 e&;rܽ-M"MZtPoM;_*-{ksŴ$De D1:6٬h0|wGV.x?k5g_-#/:tI $hWmxo}p>MԄ n,YxFl՛ߵcS?Yɠ m ˋ~ehKK]{kpMaʹ'ÇR{b"90?agBԥ4ͩ0k1t= L}_;zΣ ^ 60(aְۏX&p)E w1!= 9+egaq @(("Dmw#u`49 .`$cA7Z6K!IF h43j⃷b0iـ16pc )l{7RAC6Rm` 趕>%D*dXmGwa൧e LDKχ&K*3LCsf@;?{` GWT@3gٻc[ˊ խ 6.!s%,߈ׇ9 U=sjoB1-_~/_?`%ɕ4.T6ySe]d 6sl M `JO}yI eVow\6ю5w5RN`6K &$luFgKI` 5S I=|lL^rL|WEw)O ~\zop&K0ԓB`4} ާ l l\Z#`o>ߗ̥ < $ع4 N Q\ lHjŧҏL$2vbNFIp#TwVf: h`s)l:oԓ2`~.@RK`I .pIrRd+67Y\&-%Ws2Ɋe<:? ;8K A \6m@RSQU4)k` t%*D<:_{I`s""x_~_ɇz/iV .n]^Zziyz~Ń59 6@I¥ Ho`ZHj`¡I}I=@5HI`PgةiSϟ?c~|86(q6kX½)4V :ilr(! ]/56tK@F]hzd;j\ǧdg>B:țХ`? f2A~jlcF?L !\t!4M#1LB|EmeWhA<7ɣ)bdEcMCh+( gxe%CG?4Wjdw:fY 1ıG;J OT;G^}XPo[2@+S&xCZIENDB`anyremote-6.7.1/doc-html/data/jc/themes/gnome-player.png0000644000232200023220000001775012061426050023512 0ustar debalancedebalancePNG  IHDREаIDATx^1nA&rP*lMIAI@A Bu*HFfG1ZXG~SFxR۷.+菂 /{-!/u@*[-z=ΨɫOVwNY] XpsO*{O|aeyzt$#u_s ~clA,eNۘkė@o9c<Elh ^D}t-&rwo#p!_oy|T ?C>N @s@8dSL*FohQPmVAJ^?({w٘n 5;<>15AlkNvmE&bsk}ڋ b+k9vvܺnP?^>6ϳx<'_| !@!72D@! 2B/2~s.m\Qɺ뤲ձ⪥ufS'N!@\BL(., %ơE8 Đv ;@ Ӧ [{d[,tPZ$"vQg |{,8) bv:t.Ѩk,PCCCr[ܼyW~ϒJ6D! 0FFF088D ?i8y/^BKK f:h # Yp `||ܶ)h"6XMpQȂH$a455x cHILMM`%W篳ghlcBd$bU2iɓU|p fȊlMpQȂx[T*I1F/c 8-"Kn@86NKF%"m%x%=YK!U ׮޽{En7pLjF4V>U^{Rq|>xЭ3Xc-/Bߍ":8z30F{>dYpr1ЕbB|{'濱WP3OZ[[qةpw:idap!|.2rCWkDp |WžD3ka7s|K z{{i|4 B:m ИV+ޱPbPꂰ,:[Ð3ϫT$>粐> &$IAM !^u,25![iulkaDz~MQ [2 f/Z|>u.\)7•}7t;B^0Gy7"+S_G$0㒖$/=T餶frFG]( y:{f@1Z *E $f `Yǯc /I26 yel,0M !-l[I@(n.n² fέ5ug3%Ie|@td=].XhʻC3]2d ?6\>ZsBfOs2:Λ9ۅ^DGr9<|x-a+F^uO_`}wZO_Q! ޾ yC1%dH$$bO!am} ba]? `ձ_ 7T6)dgHD_;3pE.).]^<{;(+YE]X \5Z1(#?@+1qm$p}$5D!M}\VD| yXeͲ E*vIav呞:.&̚9s~9p%j&4ڞ*!ne$tBWWJ JZw-.}/V;ڈo1 HMEET$Fŏ͛7r|Wqр TKl$н"\ʵ(+(Áz8 ?mƁ-v|oUE/\ccV.8Eo1(%*_zmmmbQ^d+jk`(=ŨYV"]TVVBSv*ɴ!|/8hEp udAb: aZ qP~+0A]§H= ,BA# FA,5 FA# U!`͘3/10rHL2a ´v`}xx8di!; d0 ^|>18y$&P|SNa$="N׎kXz5&OoVGZZ:BRʼnüy`02mٲe8qaǎ_ Ωz| V̝;GaX3f̠͑pÇ#HMMԩS9_X!{n̟?" V?7n܈3g}֨'-m>]nꪞLY e Ğ#P@"ٴi.\LJɐ^}jH@f;)) GӏbXxO"5 3M\/R@л~…}$''#>>rn0# Kӧ)ӷ>MkDf?m G3b޽ضm-Zy/m۷o"AIOB?Th-(OXXsKKX@>}:nC\M"2C#co2 ooƽ{`ZaXCKT id^"''ߧرc/(('O#444(!Yk֬x׮]uzvg/ٳgzuԊ_djI#lXz`˖-F( Vd%K ==.\;wĆ |rVDdy7"h|8B +zu8ޗs Pi*0B7Zh6+?v[# ߿G~~>JuL@S^ jBJJAj`Ν;())O=87n֭[6YI_XXȩÇ9$bdѯq/YoG֍vXʑW|/j祮q.EFFﻦ2Cxz0ܰO;B*TH}Ϫ=ؐ&45 P&E߬^1cPw>Q֑n:61aV|j`h4rbh@,TA /TTTڵkhoo4lS>sz&d`77&7Z E/{gUUJAI!@F!Z2~fHhtJQ hġ@6 $DQ@ -ڐ()e@7m.P4yoކ{o?`93y{;)M롇ԝ{=]?eS0g ;5M2Ms蹔T\dr9?(XA9[ܘ&w4l(z"P !wp Q.cYs}>WWWCee%od;kjj)Ӊ_{ YP;# w~zg~YV[Sc`"kמbZ.`ĉCi=B$84BpWeVm,`=ؾ?1n;s^;)fgup'_2?>g5:~Kh5Uz `F ,"VYʊZ:XGE;G9ӧO,شiŵR<5,9yegrh ̑df>qcǎeAꎪXT)(Sb9.**۷SmҥK\d#G{ Dv6ɐOΑ2/W74"ܙcg@Ñ%+].Wur%psk\SEg E! *Vf⡲ (Ծ?a.0e]OPq.}hL ;E(!CFV?3`޼yC2,ևzAr)Wׯ_;va]?͑iϞ= )UWo+**&~h߯k cz.իɉ9ĉcLzvJAUkAuCѣG)u?01a33'L\d载(σΝ GrO8? =瘾0YOvđ%BygK0mL|qIJ58Ns]p9YzL:g)9p$tWa`cy8VokE&ĉYċX */ɁOIxp.\myByac}2ViHRdMq) ct[9Pb:2zO Ƀ eNN\T;q)b ?Fؙsl, g}ý sZIYX#i^)8*'D5Ι2'E|3mΜFp;UUU;uT vuJ*,عU]63sYX497g~c$"]yވYĺ3Ndh-sbM_X\|[֚@FT oDv̤(^@0EvZIQ.4g"G"D{%I&=mN$Uaza6 <24{sjJg;Rz%cQwb] M999$brfu4 1;.b+|!BR GEl͋hl.5|όt"5;7 T["9rݭ3mXw@Sř#WuP<  P{ЧO[WMl~Ā Sc{R,`3gs0Y|ڷr Q$eaŜvxYLDlΙɩٱ;7%p׮ +ɋ._v=9g.^7-{٠(}ȬrU"!:=yd3kٝї@dh-|~+^O>+Bi9 <#[9+7xFlcE{<6N<|9qّ F.W7=^˙V3]z\4gHFw!27n wbm:syy9D"ݸp9rb@^/d-75l΋92%"'#c}9§ZZZ(tW+**(FV&` nzz#|yVO<̷I@!7طj+λ=]A{!Z=2=ޚʂHdnwXY|ŕx?brfm\;J8\U[[[8W8s-\x9M3걾u<߀5MȞ]µK-plGx[;t~ AlR0K=szߛpV좱qdg=B<]|dBP4@;gVJI Vkdcݏ9'~Xu #F# >m6`ysf3tee]:c{Xa5طƜuNBR!Iw!1[sgЮ5,n ƖӰtw0=7E,sdq aKĴ)=SwQ2&b7>fy놱IF9=?D!HZ ,n +l0âٻcX JfC0kS9!\AӓE,2Xd2Й,tJ 20{Xd#b",25 d{@W&=t:3"!B B 2#`!sJ`!B T:ՀI& 2PB,2xiȀ32`Ͽsq\.:L!WpF  Ȁ d@Ȁڿ\!d"5dSk@ȀAȀ 9P32 d@ d@Ȁ!!B G:̀:3ŀ9eOn@O&ld;!@Ȁ!?d`2`"O Xplܒ~g'_nٍc`_d`"÷.!Uב>f̫3iL q$6H,z.²  x}iT˸$Ɍ=3Vͺ  # !B(ۛ6~V߿ZE9tZ+\Joܽ./H̓\ ǠsQ)tUc٭5θtG=o!9/mm×`~32&z]'(t.y8hR.vwgc"x~۸!i60BzF~yz0 'HM:iG fMy0M|BXsH{5Sf#NşrqVP-(qU8qOdIaHDOe d1rEǬpw5f]# cK00wi4=9VG9{3/w.*a\5kS/0DE1MIiS_ӫV1a['==g]# 7{Xt^ewc& qWg^⨊?ZN6+}i_e MI^\\f&Gph+845V͑ǜ݂R _YLhZwSVdnP"G3HZoSc,_oZQ)Fh,ruybBC4.w-‡#aƎoU1eW)y$}"4zQLsܳ,fgtDߒiuޅ~gX,idQ3аz5%$U"f%H=v)|e?1e?R6r$(d9 8+.,I(&9*h"ԍ͍T^aʦqzz(D*5JsXBkNv3,?{P5;Q^œ\g=Qu(L7PeTidfIvS]u$"w1z! [*JoAh|-:&H3ȇN?eKEZ$uU8Ljfԩ" d%1$EdTB3!F)PJ"\:T\pXڒ&4*oNJ,fG,Lw#CI}r vlن, w dw93h5oU)>~p$t;ҒEhEX9JBρ4}Or (* ZcϞ݌JY+7ʇq{nds?ѕ34j@M_Pc)wKH^t4|`أS$_ʪm.(%Zǃ71$NBk~?%~?F\?P,;[ZZ#LeeeqR,Zxi;ޡ\UrI$8Bkmȑ3&`l;ah5"agg'(Erߏ+47umYOC{wwC t88Zm?b"o0l hA5rkF|m>cp,ZH2<I2G䌚`J&[R0 h؈^6ْ΀Jm Hl#FIsI%I 5o.| MjSVZsMMӤACĎFP9[=&! #m<1 b6l1SY"flv@(ǜ>YZ~z--8k$GZ#ei.*sO9ֹ͕ 0HkA7+QIOLFfjR[yZ2"sqD""rM 1$S=a!b)dw顉mfbZeL|9HR{Z'N-2-f+{9tFaMg/IyOh!n~3Slb7*PJScp)!/I_Ckws^D$Je/ )L9 ,4B)Imq8c!s*+GK[(sN#X@ ,k!pԎ8/>/YMWG>E5ݝ˛aM:TTBەڈc`d^&`lB8==18܌a,eR@؄n2?Vk=ִrr/I=w.x75G۸22cmCU]E`ƇOa}x2碳UCG.ÃR21{5,f#%]zpˬR~MHR}7V{vfǶm[ DLACٙeΚF"/v~"s4ʼ< (&Bq}Xu2^XSiCjr9p7.ƽgMKϬݫ5&淋z+ZvRW#\1Bx26u_jU޶!{_}(--Ӷq?eJJJZ ٿGxe˖!}r.FpQ0v {{RZqO~;xOHR52%@ u*7jjeTXI!H|ܭO>(fg€9[ֽؐoO!\'?u'$2R''UF::V2DPCz)]uʕ pFɺ&>~1_ִ<' z CL0q[Zi~Pχ|`C<| 8b$'476bZaYPZ(o UFtBk~`9O\Ʀa=,:㿐BEE2(jEFhڄ~RkvZDʼnR &D- x[pAaMȾsId&蹿ssoν>syH@QxґX.Y!,s8Apɘsл_Kۂ9z4##1n55մ*qeЈq$w끟΢ 4Ǝ^ N.=vgG@s(klO8ʳuXU9/m  K/%sj9?%9SP@k۩7qԛ@pl!-tdڅp3JAC Mwh5 {m'\p@zCbb"{$!#;Tհf2NҚDwUP! =N- DhN#4exR m\~^ȏ&O_@"@@'?f}=TWU E`^FSâO3(B~ H)Lhsg GD6QQ0*r`,$@GC@)~Y,X{oJ:tZNTt'#w6υJ5!qq+霘wxY(Q-Ĭw߅V%#22 "S&ֹD(/^Eb +Ywa!n>3NZs6҂}Z ulp4B_QAa &>!;fd~PFhrjn7XSǏӶtl(2*J#%0m! H Mמz)^V!kex+Wmg:|*XBg*@5Еίnة6"XlƘB)i性YxֽgǸ͝%&Bk!@$ȖW 0- )4Nlb :2.6e*F۬w&3g#s0躎Cksl m`IF|?c_1bT(U&2ZF&T' d ]Y޽9y=)):mp4s~Y<8cbBDH)y}"]\POj׎ñ'97gʊ {I:wˆùm,fȞ?ln?uør'=b$зo";wIuug]nxt3䕟B4™N'E^޹kuDiZnܰ>@0Qca|3j ܺU ~}.IINUU>|{]@#kWOk{?"bJ,]-%K23DQTP@`S6ywpi\p $O'}ʳŒgSUYN(Q?1!?g =R<:o iqu^]0x`nJ9؛3lKx鱇q )4MVf*sxo̼wk.ef!(:WB_t= pt{L֍ u=9}Mu*6uTEm2.FGkΝyy֐ŧ)-,laf˨!g極k9s(Qu q\Tl,4Mn|Nmu5M@ڦcpv^~?Bᅬ6j+AhIfulsUsrӿ?Os(;ָM;G5&.Xw^x }.hyGq?05UW(CG kJJߓKtt / )Y#2!81 ]DWMMe֮G+*6"{Tu^:?/5eerೃYUV?>}|=MMU9CZGyؕ>#: WCm |8MgلߙrZ׮!p*ǎr$&%ҽjۗ}:LdyO |>o7{܅}gPV$0 {.?n$IJ5 MN#H)raH&67S|؂锘Ec2G{DԲ@ [h ʸW(-){{OTt,q*U񥦺;S&.>ˮivtNsP4N:&vkgMw΢[ !wIŔkob_׭Wa?xijz.nI#ȷmvy4fWZE0$Մ:"CC^]gc@yTۖׯ 4Fqq1GT^.gӧsA4T@H׶nٽKi9(;M,.%Sb6$x:V YVG)Q߲nr9&)Sp=0tPR(ػw/ .d˖-*S^y┟fBו!24 an!CjJ^ZF̶Nat8f̸_+]o(d$ @l(lوd_fSZZB(y*✜̹BQ'Nrl2¥S.pB. %-aȼҊR"$JRBJ4yGD7qHW_'d휋ȸhTHOG0 MS?m bAp1g X6A Z)O@tڍxᇙ6m Uv6OZ:8㻨frn$ hE,Om6E>t]W) fi{hTV‰/N):vhPZfc%`e>ITT]3 D58 (EsU#i/P[ F+c̐]S,TV'{'K tǣ04W5.F'rJk%zr2 h)%L[ ڎrTWSXÓ2r ΐyj**N֝iM !dZ)3MNVPTDNWͣS5 lv/͛122B(ϬݼܑN5h~(c^VC8$v@ld;I)fBϕ J Uv; #jxiB Yq6`x<ʐ0Y˗hD^?YB ].JKcSڌ~_ܚߓ%1CHC#UUDcp⹋bbbZ^w*EEE"vԙyvֆYPq!pVV׼nzA~حplΜA:۽@]9DV"]7zJRJ5GJT<~8l]xݼi ژq\; 3ɗ5λ[>e9HO%?؛3lQQP^NSO5lK 6 2?aO2K/B|.(";C|j*.磭OlJJԒ^>3%NCykMp @$z(1#0|%b@>⻇mʔEExr8_oyiZ1$^ݫ`4┖BAA G؝3Z;Lybb 7٦ε""P(eqۆ 9n#L_!]*y`- ܼW2Ϡϻ8ٸ~k`S @t5^74I@C=R }hpN  Ⱥ#7N]zO5408Ѐ@@3 8r n: .ŀs z`4tS_X0[" JuxϤ 8Р hhH Ѐ@ x}5AdH M K1 X4GSZrȝ R6ŀbgh  hh@LFGn ]hh 4 Ѐ@[44p: `$@jh@21ЀL a  듩q| :`S 0AS v ݵp#7h@3.8r0 Gڀ@g>b3KGn #744hk &@C6&:6b(qn+,lioQOlgBv?Z]'GHERHH{$}XA,a!aceˮ5cB#v xAЇc9<m-&*\ =vJ۳*xۯ~ ;;=_}}~$I $3@I?ܗY5[b+C<=+y6#vnEΗ W4S?m(m:_'? hlS:Ҁ`i홏it (/P'ȱ̀6'h6u%y,!֝I4֗|?_^1 AU#- yOf֥<۱jPA99trJ[vlrԱ^. ^{ B9V+  ψX,/ b1O&+@;歈38O#i|׹kپ^OTI{Lbzs@NKB>Nt 7 ?VGt\{?@X;yz[OMG(]SSeYF gY x>lSSÀ1b ̀11bL{]F1mmE'ڃNMU4Y>czje|.uTsd6\e!5 (`ʥPI5AJ4KI&?ii"5ѦI\HY'%iB$r) `s16D\JEXu=4kdKyX-Ϝ9s޽3梋>Ju,`:!z'rk~43 o|RO?`3@Y `$ `UP ,˗9"ycR!rJ]bTUUĞ@g$6Z>gs3F . FGL̀"FJV^EeEVl;_||_2Ǟu}? =]mOʜͼ ܆=J$A:*VYl?~J L7J!}0R*0 قj-h-`bm`= t9g+`d+[K(JtHJU(k4=dx2cc$lZ* vCc%Dv$EUF3 @m,2>uز.\;nR ;CԷH֠H|c2UtpIHd6t~/>z?_x1V TvmcjH\qɲO D9( B Lv.+kx\vo̜pg&/1&0P"ۻ >ͫMJN)G~ :ݒEr,sk,O>iE\uU'x]>~xdF@@π5kN?JV7"5gW? 5zL .s{Yf"}M٨:GϻifNLט6mj  ),b*,r]tu(Go Ifʲ'GBH͒J暯]jc;@Q}Eq#CC}<7xMH3sʉ'u-X^^(Hd}, ׼y'jb+SQi]w""I|(b?@Ó[=ׄTT/)%>2F@ŋ:ׄ8Ƒ"#<&ٸcR>-^$4JN;͉G8۠%OIISE"1%|*nWԽcj)w,Mǵ500X/E>69@_O 끯q(_xjRSkzIFv"QIpoՕz7l Ab( I"1)FMm(tMM x+nYɮc97Z\k,1~v[okVzSS. =gdDWBsO~ץbnB.`ZWt}]nZz n˟(IƠ@qH|3wioϞL9ŘF=vYtY%gV/㒪n^.ej[.`i1jt;K띗y_YZ;rzY> ka3`_G"8DE. kBQ;9D1*wۘR\|Lj#!u_\+FV@5)k !' uAX{ ;oci'"{a sPcV0oIqD@#9/`@Gjɛ'BGFm[R -QѭU:;-$0FPug"㎾U5$PaaE?H- NMq7NI%fkuֲ'd{ɭMYAk_;el9ͨK~&D<:umXJGc "ᵳ#9eXa3Jxr.| Mc %5/36ND]Z_xi&׆ǾY{#֮Io$pRl rHWL.(fI'RzWw٥ "B$1#Ce&jK/gp۽n̜ ,[sm͏|VbJLNE+?`IeNmÉ)+S!ݶ oaϽ ]8Kjw σ{]P._N,?X`E |ڲRThD, o#9eἻعhRb}WÃuݬ PlHzbzޚz'zo?d`ZdLh#m9FG\F~ DNeN?;5 -^234C_f׵vne!|RHa@QAB-;^ebl?Pށ@I|r]0$<χڵN)L^[̿?= ]fm4O_=}7.:y.wuK0;`do1`x%rdb  7PS?AgT:k#O /9r8w0Y]}cQ(g]8T?Z xޣJ@-{x}SfLcf9P= @bW0bno}Xyr8:##ޛ{l2lCߤ/o0.VWࡇFع9h!@)-^Mn:jW_yWZcPDDUq**h EYd U, \{Wd8(G΃>&/þ"7uLlԕ8 2V@+Vصk'# HN( l} R)PKe; y Sʴ A= K[#MvbHYR-gmB4bJ(`D|-#n[Zr~boad&6r=ϢY[>/e¢Yd,M-BgȎ1)3C H"S+X%!Hɒ;(C}зgU*ɛIЎ,A.FߴvmbI3sC[ Z=Dzs"Ϯwi| =tt "( hMB$Π2Atƀ6Qˍ_"A\fmm'3띝MњS1Wt̜PvFww3ǣm/%̟9?Hw[OAb[  l>I`X6#$mXkf O"6.=[Z&oy!TÂU@޽֨-J1eR?yH<ׇ#odkrx 涸mm<~"[KwOATnVxQ H\1X:VI $8齴Wƶ-GsOS1UED\]f}%'}dFIY2M]k#\~L~'rB`UBr*X ǂX#%w-M9CGG׍Uє$4>u4Q#0NƬ1tb=Nd\)1&Pd=ϊUL9DIٺ U m465?dL}LNAS~fSNynXxhV4yй2u珞HU퇗;OB pVG>E$p0K]Nb߷$g ה%oM:fN7:L{w"i 3o< =[U1& 'M춨SZ܈+)/ADm 3TOĝo&C͞)EdWUߢ'σkfOw Ad" {w]V-}<_vk) $Md ޷d:ꊞKG"Q6v"w {"J?ȠPL7y v,/K [>~ݹ *ٜo~Om={z ?- "̴iUEy`QJPa~uBl <19WN[U(343AZr(!`R(ooUpy Cw eٶv}̪>e`- ,`3|Gٽ?$55z?~Ird.IPJnE|>Mͅpڟ̃"I)mZE~9x)&MUqL?kpa30cD+\ d8y?EwV9eEK\`ܷ,v XeBt ozbpl:ɚqE!h  0)E=r*/AQA@A_e^V¸?1);4vQZ XE󖠹-0x/<"(x=ɰ`:L8v6,^ bv2MX [KJj)?zwþEDAb < 70Cbxü7Ñb3HĠzXaYu$: |쟭޽pQ ^1@xy سo%pXeN'-oӀ?8e 2@$ +| x)*o^{90"eot̿}G<BFxaޕ!,LJU. \=~^cRS9Sf>7ײU&J14jp.>_e/́8L>z̙Xڵ^¬ۀ&2eA$d&'Ζ.ih#leR&Os{?Wn !JX'rE463}=;:ՔUXÜq,(syꩧOgˑ$Vk;;6Y}mn&޹c\ALtmi2(?r7_hX <?[ i/RWWx룥/ˌPd pvr UU@I P7H!e%TM.3T͚e7m(Bsk> CJH2 |*\7|o>{>ϦՉ<^Ǻ,]z 32.u`-MB,rk+I\r\.f2R iEɒ?㫷@kg$E#DG!`[nddw(Eo=(^se{(2:FA p2gBB!%T̈́H95!>.67<'$y߂**`UݣuZr^7_wkÌK.!q`77Pux>C5۾;6n-0E-Rf/8U c,?خ5.U-Z !t`Uh,BRE!J*uI ApЇsZ .[_Ԑʜh#NRc1(Ѐ;1R|x`QcJUyLr9hk#e(>ùL .Z#+HXI$s$8Qsʅ^'> 1Dvw9cPt;u1G$?^5ikL6]]̐ѸD8W8̤2,+$Enz%I,Xb{h\f1?qJTGtDKX9Jk6Uʡ--H>_Zs[Agnѯ)2fy (e֬Y PUfϞM9B{H{{y@D`&3/)^HeE~^څݶuCj6[ㄱD>x\N擥O0^R|tFb*Xђ2o El>OΤ\8Ý q) NXxƌ?([;/sǙzE%ۉ uWrElA;:d|\<.>cFEVk2)ʜgtlB$QGDʣ+Ǡ{{^~b zٚ@FBKc#x^(qWsRvKxUOC]HyYYjX 5y?,3T`*]Q19p멱ݼ%N kIvTYxI*27a8Ī@Tz ';g=&Oey3.bx:zG]"z`pfNٵQn|'(' hE\Eu+)ADLs(JefB U%hR\ePUz|_3^R'qJG>{>y-,yɉ/Zge 9- LoڀuйPhw ij:"Nj ƌ!k -Oab `?ÂGُ,ʘuwQVXhENx5e 5/\ym* e㺍aT#hwSݭ6I#)tZ˽ ]V`¤guOm7.w*d&k6l`DPMO3_=Ȍ38Yw:KOX,"$KT4ى 4ڧAyU~DIɬ|}~#e~rG>螶 Fc\ս7ط{o4>,Vk1QR.]~2)lgÏ>yU{F*tt~N/͞>_X %~xȡV,pHzQnZyE·8$eF?E 𫞽`bW)F b=ag`a/xI>^Q߾:篹xugI'9"~ 7O4fPJg [S@{ Xhff@@0~ 3 @e%tЏ\  & Fa4373gf̀A~13se[fgf@aXvN@32Xhf@3@5k6;@pf]`@3fl6f\``9c6sc6`af@N,'fw&g1`̮ >u:AS\gFc6`43P3 Fa439 hfr `͈2G9 K[60 8!%(2E$xYnFs 1: زH]tѪ=GӁY #QF$$Og'& v !~-Y;B,yyh 'F MGn`Fx8-`;}mjW 'uXoy֋RNYCvNb;=rwJ=a8&G;=gM31 >-gP)tc= ЛN粩w:!$ KtDFج#&_^1O_o(0a!C!l|:c8r,ȹ6Ю3Lfq*:L_Ll8q-Kv.ßuwd\eգ0 v8p?_j-k-ˉԯ-bdttޘL_FkXa# \QIENDB`anyremote-6.7.1/doc-html/data/jc/themes/oxygen-green-arrows.png0000644000232200023220000002204012061426050025021 0ustar debalancedebalancePNG  IHDRA#IDATx^1j0}J/PȘ!7Ȑ=ELz3TU.,~`$yCI$3;m(yV3?@}DzpTOf ë"뇶 @,v ~ o)=PQ x uNZ~Cwp_ ÍHR`LHR&}%y!;L4|||_اc (F[Ap ̬Kyػ0_#@zO\d>BA(|  C7o44bhPA}=,+1_EB@G#9q{mشձu=m,) XkkecqBm:|'«码Cl5ær}~X:yӾ;=>@kh%55syhxi6)@ f@̀1d 33 f@i&b(kf@t]\.2'{Guq;]D2dQ-u" `P-X4BJc)"D*b#MxAq*YZ(9d^y4 ~|d}w5R~9{z̃E7,bke274d3qM)ap <9/}w e |kïJieVKI%@Na(oֆY5.8!D2]0X,fZSm:Xe1P`Z4RSSUhcG u\K`|&mgB8U'فPv4j1yO C4RJJ,5"8-L/`d`xH}'0KNGJ"/ˠuM++25`.6ȿ^]Y{R1c"b}2'2fY˰vJhkm+ M`? *Dds)aVwZ2&N@kB8$jJ@'FnV` jaF$OCfpG<(89x Sᕹ&CMT>)_ͧsmQ+s9&|0 9)B@D2fGF:md{wsUt2ᕾ0͚5k(H_(Ќ蜗Ücb';J9g^  S?/?F9>x)aVÔ92b_v LE>uJ {Hyn_v NAJJ`X @ p>Jhv֠ %. ąu@ ^ʁjfu}tE\uy9rj"3HSP : ;n߁Pc\08{z*0f?xxLm)4J) RJSJ9!J)ouՕ7cmzIu-XcRJgV'p=L8T9U<ܢaV F*Q,8I{$W Ye_G|Ք:X k›DL&';??$y{zdw=m2heVkO8ǘl~ȁDbyDx/P{z(f4tw9Qy]we י4j+vSX?Pap`9EO?@9l޼rf JlwueD _njNj!p~7R(@Ddvv_{E.d`5p3Vf8wd <*H$v2Dn^68~7d' [Gk) 0{6=7DUWL yCD%ߋ`hkicgNVU`iN R #wc(8j\DN4m#LB*EMoV&l0ȬkzɝE),+GnZQJۊfl@d}̂`0ϱ;^a0˃%GPT͍ *lR:뺶JS<4a׀4dL&n4Y5ߡ67Ţk+|*z-R >Gw/y`00+E7.ԟ?bq& c>OƍQVv\dPܽʋZ*k\0w>Y\}2/gqޮ &H1`-7x=D5(f5thZ b//f26Ж=$vW^dz! `j&|6KUXs0 fz5e7  h{UϿТTʾV{Dԁ` y_`lYY偭 sݽ>m.W[5/$pE`:"Y w(cDq1us>bH4abAZ]&WCX)q?Hkk{w+yꩧOn8jN_VI*qOMc3ᇽCp)ܺb)t -"2iw]~s-%`hX,*Xq^^}U&'NfGꯩrm2dWG|P#ʠ}SNDUy8$M<g;C08Sxyǻ$ϠY,XіaOUѱw~@w5{a?;63.^r ;a0zͫ^c ж* L>XlcfplP`t{q%׮ZI̎o:/c+Vs9_Xne@1Y89餓x9cfS rtsuX ۭ8#>ysSrK)aG#RS<%Zj4R&U&F#8FI.W)Qc9\veT.:rҳ/GGՉv+W=̨}D21=Mk[ 2PP{a;lL*$)|F (oR Ӻ).wZ1ӈG.;w < djjjd;YX2G}HuqhF6ƤғC2j"1NYɽ&7r/Ƃ! 9EFe4ZDcĢU "J ,D"͙eױ,Z 0ۑ#Q@pgLUa@>x Z6ʂ lcDر;};ysYW|7ϖ⚛xkxSӳo/ظq# /㡇rCOt֖I,?wCU;%°Q"* .03V#Zi n|͛_7MwcrN-8ׯGe:Z[[ESrqSS^u"'-UEmC@: Z"Rb;; =]*y1}jpK#4,Y"_ioo2c?蒶?LH-5G@ 9,(Ə |?%Tڝ`9B꒨4leR^mƼyزe fb8Ȭ.4:^GZ$0TǪQEFUZ+B +u;*R{+u);T|f̙Rd…7\fvd[azǔ0;#mU#UTUGUQ=Z `?o"v&^_J*/lb@b҂ V 25mc2q!|IޙNEs5?wuqrlG7Be#"YYD΁-- .<ۺlVJ)jokmo2M y|Y8y$2{=$Ew-LR$ 7i&̖QtYE$PF,[־3{lRblB}qy(BkG.Ch?R`D>|0<CP"ÊXPc.; d;S2=#A?.3;,c -oJw7I$^pLm VA: 6Rp2/km82"*:jO[KrH;oN88̎?oۃր@S_tH|g|BeRghl% 9-S(gbq2;d1'H$ASuMy29+|Pogi8,"8ݻ1{`m|쐅 $xM1CE )_PD6A>hb޹Jtuu7$;pHQ[12bt8%CmCؚ6h[Saܹs Y||si,sEt: GNc9g1ehGd OHLBausfOؗchƍ H)[yϕkϟ?LjKˋ"/^\*1%QInSВQ?9x4iD^σ-)HAsBc&iY#0Zï YڵkkS+袋[buvH .XD" molMMY0Z52;ݢRnG(ڵG:b:B׋ dL Nf'F3$S#21LP"L20.~*Tyㅢ"1ˈq2[ƊY dTJ- 0DZi&Eh-Y;h6 T 0b`"m_I_zjjtдq/}&75 %o+Qe8~ᢀtl*9\GYWO3ƍG%#L2uln{qYyD9i2\a|79=ٳwH8lFD:m^3F 01!/< f 3\~O?ޠfٺi+# 1BS[&Rd=S&6b6VCwa2߿~ 1ڎ CoK\K'[DZ\ # !h3䘻@ddfMZC1JN`|^Gj4lG"D(&ʦ4$r%0$w/Dl O.3;:::PJjoo'vxa*% $P[xܚ[~'Lrp1oՠ *"`mI TY6 A swǸqP vo#1Ҹq4nH>܁|>} 433 ̀@ i 8@w)@3̀007+0OUl@]ـuN8A3OV<x0< 4 i43 ̀0 3 ̀00 $ ̓ts30@aIҀ~64cvs8% Ea43o3wf̀  ܬ<f@aNY43p&;A?@3H`vf)̀fYA0ve W k>: 08pc6;ـc63 ̀0 vYLv tQ3cd4 ٠ / 1p430; 0h̀qlpvDx˧#oحc@Fbƒ? "om,cf7۹{b x}@KpJ $Z}r:H6#QN`;3 ףI.iUE:ߔ'<=?Ӳ_xۏ-&;5]<w<-\_ZJ'va̟Mr;/.⊖t,=[L[{ۜ s}^8JǾQ 6hT:/齶+T6y kqw{zx|Қ_}}~$I $3@I?ܗY5[b+C<=+y6#vnEΗ W4S?m(m:_'? hlS:Ҁ`i홏it (/P'ȱ̀6'h6u%y,!֝I4֗|?_^1 AU#- yOf֥BA(<1) B;t"y~%:< ףڈ*vi$=MwZ9W1 XSA=`[퀁'];P ]z(?Ė"::b]ΛTg9@>5z>oQⶀSS˲ 1}NQpSSÀ1b3b b 3w1uuegwǻ&jZ)4.IKhBEbABF!R?G 񁏑@xP)R JM^'^8xz_gG:ٙ|G$U!FN!> WK#zZ"zٯxW}> dc2{x0ڥK&I0r̎H$8e-AIzq!e. ORԊ<@> *R$!84$1lpU8D"P@ܤ?sT+t2 Ѝ׿=d6r*d2^B.7zKNHJcCO 8,ND(ς`(NhhU$S)KFSda2](V&堌`03]nh+=2c:3M_q| F!BޞnRgWf6<38#s۸.و"D,8VvQ// D]nWDZ?lb;5e!P "(_km \fDD,;՝$tCBpT 0(13*):Dw=DAgy]вB%w$k VGE_,pFD>,_{ϥt=$9/yu}@@+LfM/٦%չ 9IVUyv.Cycd6y~"CYD>( @i ~>D̮A=E!q1xl:;C2ly0_+`iv$]iIjw?!@ 01Ke5N`whZpB/.L n$U0c8H%<Mfcp29qN (aG^ד+?uI (@) tH%i;#0\kc), }Lf#+rMtƕ*P AD;̬R;|Y43c{w*^{ Ҷ"\v_a M9l6l UN!nG@lh2+B_Z2TC%N;I| {,]LfC_ ~ħs9L{&"K;q{)"D}fP2@~y?w}[/0H٨\'EF]Az">x.9Nuo1V\|$Yrو$Z54''D6  xUX[ۉv&tHIj*a[)'Q-Q527F\26{\D)|Պ{5v=#Ky@4ВVSTXmns[Mz"yal#$!6z$ ۜho.\ aؘ*\ H0Lf䪮ɦqr"2N6^6LfcMaTTUF7cVyaFKru9;@G8F*05m=t2+*t]RНHrohZ$YF/"lD*J̙3fwŋ*hUq ͬ稤3&<7Ms2VI ZVp;S9r/""T». .u^+mNIZ]6HyL N *Q7miU9U'' -QE P!铻>бb{0s뎚[:Oj5̪7$+*tXE$՘>PB3b;6*Ve T,bJBz<pp' >y Σx+aRÇ%/{2Y>s.9(8%vɋ@=Df?C<6WjsK:w_G !3a(x2^WPT'%MD.Jie>]ƲrPFUIDKq\ ~ I@ۊsUrF6? zy P{~.q- jo}Lh\we*ç@ !$\EUq!*U#8 :v(6 OҼIAll,bOmU0n ʜɧ,^@O}TPm.릾Ye]fI!Ʌ? YA4rƄJk=hE;;-ɲ[O, y0AY3 `߸rOV4iUdP-';9e G]Ufuɴ1 -1fI{7a!MDW64MIN L֛%Jurl2+$Y=} %;.V>ZV6FJ2IfxR*.9YB].vUqKױG&iwXRE P.e[?fڒ%|u8qbG3c[zϑ@emQ& 9>VlU/2 eiiip?RѦ֯g495y[@E+daK9MfÉyMeD (:VWm"Pac hk*z[&*hND i3>ItR_Fct)l]p&prEnalܹcO}_}2Cmh+(iH%$R\jw'f ۘpF\Ix}U^(q':TyByuLLkjss<)t,s8@!vxWTYќ2':ij8a2QºQ uWe \N,3j BY(A/q(@\# @;Sq_I9I| a"_C䒓I]Q߃ :1!4&N *ЙOn7QJ"LBqM8G,\/DeNMHG 8YāQ (Wqvg}r̜D~,E#i%MUݐgz6il3? '2 ܽYus9gN*.˰{erkx! \eA/g_sH2'y \T$Fut4173n@%-cFn;EU A$'/jRAIE# #/rPE5ߥVVK[Y;*fb0mY+$sBgrgΞYp 譬6qGu GqIV \MhTp2.GNbL|d "(لCDh#"8=Eޑxq˄>Mmf5%`\.5M{ϙV%{e{W/90@`IDL(l$ >@K{ 7YbV6յx ׁ+vA0ub<4,NDŽ"4o8B͊}BC&eM0HiŒ:bu輫l.,6mYYq6:33O=oӱǭNM`?SD4f'h̉[cn{GVNZ=/`p<[]ܶ%Fpp>ӭ]Y& (.%.[F=?ȉeNعO[o_CX e^6{np:`騉u,MGMjQ@C'nS#l(P M2uU6Zg!v); D[YLc-1 tGG ӆՏw󥕩֡! el CR{O]U_f.8NTii*ulևNpk@-l#Sd #&b.vیIC&v߬o 5p}!S#@.VI XsSc6OXg@pcCA 5MI0,+gB-ǝ GLymux.ϰLoٸ._hs@Uy-i6;eKJh֑c\7鞀cA CA?pIצH5< Xኈ q83gd"/j#_ƙ]5. .NtY LF, HESUFw_e=p8 v#6E$0,= Y9{B œU#2@wfȜdQ'DفWAUU{usQ56{4@ks8ux$f4[{n9*C$^r# ]%8±*p} Jl@9ŝ # aGE~ؤO=TRѕ.b_uf`-3 `1AUA%I?WV3Nl| SCOki}U*Dd&J_APtֽ -L/ăKJ,Cp(cj%!(gԈ@;M 0{zrr!|X.gIdʆԡ&` -oĥX%X&d5T (m (t5ˡOo0&CJ?/2 )3/H${pPQI RKn{19~+qv݄+=+(rQaRtdy#t*kk_^G6Ed =gycY*W4 (>ȺRyTtmړg_U~˜Z ~Xe,b AYs=>j'˗ ?Mć\ jˤɇ77|y5^c_IىؼC-s 6oMƱ=l$Үԉ(pĄ~Ī,]۞?B$RH6>lĄ%[|2XzD~PP$s}C)r pDPMꃀ~„ `d@|i b(LIX#sxFi"oY" J_4,k(k^P>L/{uh\C'R۠$&c @. Dv%^AB0 { B7W@{"qr L!PgvN圉VDr ΡM>>dbjfҧ ;{9LO T4X@NB E0?N";JYt]˾f@Fp$sc'gY]"/}K1Axuuso}[;wpӆ!Pq{"w̉\Kd?EK㥗^+_ QN;N%"ߣW:S&xVzh9GUYB]SS$sb Xd7MK b:t( *> Aa8Q2Abiq3If0Ckް7XʽDN YFQ!~~Ub4"HR:UfKbȵs.yG !EB~qƚJx;12 @P:G둷oBdNt%sb˄7-]ٟԬXPm/KYfpyr8ln =  3#FO:p1pT W/ƘiQ+ƺE#r]qCUN֦D*sС$Yl8Θm[S^)*e1r8,ϧ\@!bggYue*f9 ; ̉KVr$nJE/G- wЙd@Q ;D.}r]5eBhvXsW̼xR瀗3^#ޣ c 59s4ive{N>dP \{88z]a1s6\UM Sp3 X@|Jra**0uNS؈œJ;eJ/.~rcf{&cRBm#D:&1km}myw~R2}U^iIE#+q]ɯM>Y`h[z0a}t OS&cL[mC-*˴ J[VSŸ: IcP:HCAoi "lL:H;#JV)0?%՟~}q{Ηy\p hf[Sfa $yf)4333 LVgf@A#0OYc6 Jsu@c6`;'`9A3Oyp 3`g榙lpfV aff@af/-@'f`0 30YIҀޛy1 fff0 hf43`m``an<f@aV hf`M̀_ 96Na430 X3`.2 A3743xu,'V0f0O^0flf@am`9 `ovspf€&+==9kA#_ g,' Fc6`430gFa43<̀A:#[n[ K[60 8!%(2E$xYnFs8 @:""Htd 4H#<(l,Gec{#3|95 ~ 3vf3@1!>ƯG]>7t<)Ox.zed5[L wj xҗy5V[N~˜? vzOsA_wU]-[V/X{.m.u^<{mW: /R c;}=l-:Of85x}yVLmv0mnoIENDB`anyremote-6.7.1/doc-html/data/jc/themes/ice-arrows.png0000644000232200023220000003224012061426050023155 0ustar debalancedebalancePNG  IHDRF0>sRGB pHYsu IDATxwxUϝuɲ$[5F&j>B=,%,, ˲K lh' ->B &@)C,˒,%/d$HGQ1TCar`DԘȿ;G~/MQl`\p ߞmmo 5_YNUXVriT "x)Kaů,\|iL[kvF+{V/z]zξ4w;1KXQy>"rWO Sٖ;b5:]wߧoֵK̹\`@fehc1`ZesҰk¶=w,FsÌBy 3~cppL%w)MR8x`AppC7IZs_xuy .?*;CGمK$,ˡ*+ \<NoL'Ғ)sU´k_WlsyaT/^ O[)* C-C7qawgi iſa寯^ҥꫧ+Tvfl}|<*퍧(j+',NgИ ޫ`Uo \1t|]SjȟJT((sٖ+tb[öNEE4[FSlNKΜ_;T+6uj aGhR#?*;S1L:lI y.)u45Li?0lU %?A 671a񃡮6°i#?*;SэLƻ{ =a]T]E5aXoE*ka[|HAVW9!%A"eۅ^٪r L>uZ|2`4Jʓ}r`> <^ $֘s7}Dp_?,6}&)/=. DW TaRIg2wuԐ3/R 6# Jp,ޤ*aGo}ѽaTK!B8]?L]Tn؍* CKomhmL/ w=pWiY)'g @ǚ>3:C{$RmNju+F[E%O)J=uNcɟJRaGr>t aU1q0*?eMS:l\$X;A_Tp>ϖ :/rN;CUTH2o i/8{" u4?v#v;$}V_=oT 7WyoL#uy5#?U-tE2F9XSŒZ+Y#|9DЀ]PTjsr4'S(sTyQ<@N^QۍtwNbUwr%w{:$'g(sB4eվ5o M4K;nZ"."xGd_&Vsv+gpɕupPbuaYd\A;aiGtY2pw#_ +3WJW55wh ԎLʖWF^q[M8*?=~ⱄSֽ45劽YqX3j[Ov9T%y'KED 9>]C%ܟ_aΥ R?)<.^L3TvɛVFsÃ/ȥ{T17?̨o'Q.XD̻jFmo73{ReߵJineN RWqu |Nj+Px͜4O[X^ ;W?Ej;`ܻ.LGͦ#@SmZ<8Yy]l) ܮ:SfP0ܞa3gb"$>2L)0Μk83ؾ_ '>:ZtlUwp\eӖ{~Vq*|wR>DE!I{QZs^5ipK[D_NG͈({tsjS>LEwt<ۿ 4G,0PPa!奕/OсYÔ9Π"$xhi, dzeN3Z8CĕmxאHO+]V˵ 9#Tp_|T oX=KJz@R*@:lHl,Zhtb<^Y𺃭ݞ5j Ѣ)*-yZRu;.jwF9B   Ęz#[-Ek,%DЁb)ώllUDVeP)4;vb72 FS pqUN> 'loQ3 uU|h! G8:Y7 {D]tSQ*U3is3TlfKnQ 4hmUL2:dzbME5PgK~w e?7*;#e+sˮh%7][L3~G?${R6gcnj4^l˸۟`5:U{l_{obq?ȶ$4.όZ#8mkBY JMk]hWGeg9ٜۈJ-z\ ݞ:h.g,`ixv&*u[NsTFۅ s. OClwp:=PV^/gI_u <~Qٙ9jL:[uلa?7a5eQdP`;LaX3֜Txn)o oT\v*'(Jsnm%ؾ@UisO ,6a ,) YO=;o~P]4c7: u:70~ޕ5@i@@O&tdZu9?odXu6'?8Tv1$Qk6'=f1o;sC= ]x U k+'H{durY47'=d: I/Ê&{eoM ۺZ_yy n,:nj{IǷ_`MS`y|8a؎f“/0~zf?' ð4pqi tQ,oqKK(wIhd@-$޵<܃m]7vRѹˊ/ѻkk+ {ݷ80]ȷ(hp{tV/>zz)THTy%% N'~oP[:&@{S˚|M{b#]Kk%x#aV+_*MA{wz;p:A POoj֮Ua4gM:[@a['[GN$+7%_i+Xxqַs.ڑ/Qٙ Z~Hz?$I) 4I;q)?JPKx(IJ{pSJ1/S[8!h W[~ܴV͟?صj%3J,\{zN`6ǯ;::QٙG-`FU\j^p2Դ p" 4IJS\a* %_yjje'[tzǫC-kjLQWi '.O;(JzaߺG(~)>8OHRDn Cai-媢Jo=}'g4&̻Z￳{ ^`FqQrM.P#5%r?7kƑ;7Qc{Jx(I̿䏊|# z19|J4PqƜpm̵3ôf~[5HNôW;5 U![aNHֹpKSo1:w5Szcɋ.*x;WIX0m.Pdjk5_@עaumC>%^è4V2W炫'þ3Z(]^}$r7z)u"3]L @@[8m+x&5ds:#,cޭ'u?YnTvo}B{Sz3R?*~a1T/Pp&uyv$uq7uuoLƷ&zѬ*,3L; (=`ih.6I6펖F5*{$F]&p\Ήg`]@8^S2!]T'IS1|"؉Jk wh^a(?UFO[8)U9Cv* i{PjŠϤlWZ"Ϻ|i S1Bw>}s?Q٣?;ԥc+غ/iO}i&6,kN] ( .{& hfΔ2Jw{M7^7*[(-ZŨ{߃c%g7殧 xw_`G,JKޘ[QrϟN?h2 uO* "ʖ3|rܟe}ϟ.SbuUAvDGQ[].* +ubgry .8}}ㇱF9qv>'+AOXιy;w]BpWkϿ_ӔUaTsIBeggΕo>%ޛỴ|8FOSYFwTo6>Α$pFE1Yy ǞFXֶ':"Mym 4GG2'߳tҬ$.l"黇%2 6mOs񷎷)VRG#V?Vohf+^I>s?eՃNpH>ں蟭ȶL%ena(Qw .z)u2b7kVg e;/F.K+uuff*rڱececO^&Ӄ~QQ~6z{8`3 ӵ3&vޛϏ =7{_"ӄ!xj[}`RR ?B\=ڶzjs&:14{}vߧ Vw$ ˞轢E^!a˼]b'gOۻ" Җ+Φ+l|JEigLaύg5O+VJQٰ.oٲޥ6*𱂖BA*@)5c[~(QZ٪4Y>/U~QA1bl7VW=O:]لS(uP;DHˏl u4yCOIohxdOyRv&JQ(pk%8ښvpF+ * e!eOsF e'~yn޳lq꥞1s.w:x ߺ兇ˮ-Yҥl^i5}Y3Ju>e QuE1sE\d&?ɉZA;;yW*[Ye:tOᜣOMP:E o-CR8N;^]q{Mp[*]yG+Rp:ni8_}?)pwۦaʼnv[өE[yG$$²G-X׸[S6°+Rf‡;ΐͪ%K.Ġg:qg4Xыl?TgJ17[;Eهx{W3u,Pr@ݫ1TJKqJ};> kvoUZJ lmmuf@i#1ӡ]. Swu Ϗ|k>\~nyjjC[:C¤T-Pa4´|y-7;@#l_v՟tUȷCyH O_O˨4R9ϵ.JrWM3Wrz#0* g0*+K9IDATκLVnUh@ӡ!ֻiUM5LYpRCሸ_Al`9beQѻ7"֍?ۓJ\-}Î5zqJ|`T(}l n)NT*\$;_{lTM[UY #KJ*Eﶯ}/W=^߮-I1 t,mGekTEE=*{YA0 @B$H@pnl]XsIX޹~mv`񪢊$ )Oҩe%?gee~ ݝ?ww [ʇg# *4 ՎʖWnkM곴zj6ۅkE, H! zܱM5o>BYpZۻm{UQ7q[h݌2\~ϒBg/Aw0~]=deɃh'] *hpS6( ܮ:SfP0o~lvo2Ѥ,=%f=|Vo:>. c`v`% g'%pvvݸi0YR+weWn$ڕz~Vq*|wR>4`jYx{aD[WIsυ[X)hT~&SYcďm?TeAq _RFo]ecةmɞ.)I΢eYߍEӥU\vO5L[=.mDeːfZ˱K~}zʥSt  9YRuFWoUI1S.H_4>eR&VT {?D;oٱ%* ^ӣqo*me"˔2_e ad_rvA9^tεT(PWgz )4L9\e-Tr?;tjt뽻O@Sk˗ƙs,7vSX7?3Z\en2'OaeYe&=0~.s ӏPH HRǗ~ TH~ヌnkec޽Qbhpύ;{q=߯?Bŭ+*Ζq|9?MRėa-A1[/樬p h6L=yg'S^|" vӷ]|iWWDMGAROϭYO΢.83g@|]v#M[U"ooě),ܓI$ _~aLѬ-tm2u^ҔWןvnľxg{z7rPY{~h}?”3+9R{siqS}] _5[`Pi}S3L7.&.OOQ=⟝"n ݄R򅡶]A=+TYT )ɳ?M$8Y4t|J T>>@@gI@JI|H?~ڵuSIU|{R3FEѳ&~xU~Iek_wG Z_{~M' Cg)dz$gd2ޔTlm~ablUE!0d4g^WD?;e”$e >48Mɜ+f)ૻw,7|eQqz:H?{Kk&rFc?Tf|ˑ']qg4>Oݽ ۺ@Uvrkk0G8s;0q28sa`~)Ol굥cˮ#E-,6)Q2mAo=cN-:zʇ(PWgw9%eҔT&*V0S֠3.ڊjќ̱R*]/>:MYF>3?2Ih+ƫ #;hQjFVNWi@{D'ޘCp;|u;C$M( T6ţ`7 lAe#H(k6S66"Al׈<=65A2Ϧ8Dd:'0!T6 D~z`FT6 l le6"CeS6dj#T6[`F P6kDbȺAT6d)޻`FQ6Ύ rFk6`F_xFlAe#Hf(;DƩD <kNg6"$lD5ՍM8;ȵfcFdld#X$CkFm#؍ H(/#؍ v#FT6T6LgGY*6"?eVk,ڈ,lEe5{5lD#Hg)؈j3 rk 2A"*APFA'.vݺ5 w;%E@Gb_7xtF5otn2w:;S!m虍Z~PGzH^t~`)r0HqѓIq-2:ەE}$n6B)M)rtP9"F t8DG@d&3&ږۉGwDkv T}v\FEF7ʼn$ń w'1c! F%InHD60R [ Y YAN8j$~}7e=RdȠIh8ߒ趐hkaRxӃgp4Sϕ[Q%*"8WV1nwIzO[_.tRh+?IkwX`~) ItDG9v$<$IvrpNU"uH6!+ i4(ifD_# >AdqxI0#IDؑ#n(+$ii<@?IENDB`anyremote-6.7.1/doc-html/data/jc/themes/gion-arrows.png0000644000232200023220000002626612061426050023364 0ustar debalancedebalancePNG  IHDRGa,}IDATx^۽nAG81}""nkJ J<)RnRrGAEEGȄhX ;뱼":?Z{w5Y9:eWK0e:XZO9*%twk~K1]Ͳ5:{nb&sd@+w>.?ʬ&ov=SgL%\^U$yqjkKSٓ{~~#D/3m* VsKKRUd5 R1o,.BF,Ot^({̮b~Pe:h #59=0)eܵkZ֍lJI!켈7[4tuRTV|>bm1'zL]@:X@7 n&=x}|${BU4!x2>ګ=T.ޣw'h z4'!XKNtn}~XZ\A j禎G j'׭8T!hr'q{CDpQHk_j7u5߶zPe+LV\=d2Q<ؕ\GAO-hLh xA`B h^bA h x//<*_ou $M"ʢd203WufaOuY$DEH6YҐ Cξt=ݕN; 9tUW::Xߗ/-ӛ%eߟJy'\p n2aFT̛5nj`p"a"2NU`gnG)Wd |xb1"}Aǁ1 t + aÇ8K͐U=%gEa( _SvNjxmoSp9ĥL$CNEԄ,z{L-3HXd.7b3olyvq53bDBhIw2SJّ O^EҼl}҈` ρ6H OR2VXd-Pj>%j*Ӻ6GO5"~slOeO="}G$L0 F$b-8d̛F= 1F1Bs@S/@>Rܥ-\M`LRʎИv 79#"10Hu{sw21oT#N1y0nEROX-b&EPr5W=&ÿ4|؊% pC@FO?5a5D;õ2m,|XP a,=4'i:d<H@~#882Ƨi[kh jƲt6Fwn5@\|<j](ƀ-?B#XМ5V $N"{>tEړ2}@A!@Xagڟ1 H(F-MHЖNOJ)Յ79 M z)Et Z )ȧ @ oՅ v\ss}%Hx@BT;ôc$R)9hki @1uYɧA$@a p(V) `@WEYE9I%SHMCbtF+"fQ_G8Vw$g>#4vG ԳnY!;Ԍ^=ft X2ݻ(Bbf$tZ/2@bi4h)W}tƨoݏGl߹ey[gq4].F#}y.B5p~n6};z{r _]Fw5TQ/E0 .uf-P'ZhbdL`^Y-UƊf!ik^b)Qyٌ"нBG蘀>#@4$$,~|EtH_$jf3mN4_d :c=Fhtܺ5BshA];>̧j?&`AR6Hudo>l=@1{M4ԗ5წ0OL%%ƝA0@hfgr5>|P)t\ 4G?gjڏGg eHx67f! LIŶJ)h,Pz;gp*t`˫xpV'ѢT5sh:&lplڃ W4G.6gme0I$lu0ʹig;o竳9-mµ79@Zl;{~Ii|ĘFbPd\|9NᔽMMhwG sdQ L8Ν@ḟp8krs.ʦ@|e8roq8)cFFbܤ1~ZLc9t{q8*pX OGCE ZkZd^P0 AN.hϬ_ /Dy;4{֟p}k2_qܟ+sg^L2ӨK@u%@gu]Ke$(e6ƱỈ&#nJ_P~ #.1?3y+vArK[w3e$f׵T3VʤDƍufBmL&CX@Շ 3ΎVHyw^_A£ /-3mpϬT14ofBd$:NqJgfm;{QZ{jןіAb`̢;$|̯?<(111={6,{j-f%f4gg6w:Q]3ϼ=z4֯_Xш/ Ab ZSj2s> 00HL7y3`A߻_"n cSUq2Hm $f3,A]ǝϜh .cZ0/qSV83>bCϏ ;!3GD%,\ЕT&6Q~4'Hf2Z'ArQ̎l5`氈(Vՙ[ ,AJFi z8A:gp%9Tkhwp#Z+AocL4Obo)P7ÑC4G.BE$e S|$fI}&:0z:tPsgyߟYbz8 P_jkk2p '>Ouul{9?4 ![ɟ37—+ͨ*܆=G3?ي3e@~ Rgw'1O#C9!3KL3Ϳ(CK`!37UF *.IݗȲ3KVo:3Lbv?0>HMg=ePr';r?3;P~ Im>s(gN%Z."=?\ܟDmgY#*fRO_3;k͟Rg]rbܟ{C4 RԱ!KY wIХ;v,1KU/f&1u_~ 3{yC KMk;YLH^I;كg>w^~e K}}}/ןTWu !v[~ 3ǝKU+Wd =S3?3E袢k,'cSz^1|g IzԡFQI3g?s)HHYK UJnyַ􆠹?mf\F@,\Eu--@<ʹ y g?so|T]pë(W 7W_Se97[ܟވ pQ0jw sx8p X/)F4Wfן3`9 A wɸ#\L g8D~;8hfL:ӧO4e1:7$$߅+>w=k:I/Sb~_*VOo~?c}:~*lҥKꫯw֭[駟RzcQ1c79! Q ɸi\1.L5 &LDEWh8uh*̑??= 0P\\@IFyX<99yÇ # V!y| $sn/t0FaV> ]ؿ5TBgv4:Tfʕ+Td^^?dTq .#0cb|bӦ?C;38;Ra0=Мx3f.ysa]b^BxjѾ1X3""qp_P{(h%gEa(!/_GQ/h,?l{ . K롇‹/d='a8Ȩ;P!G 8^5*+â3K? [oW C31ٗ0·q#*P=ALD@ed>"fװ?3,X>(~i  N#Z#eFCЦo2)<cԒygpB*pz7KFK"ѯ `̕AܳYNeXf,}_Gk]y/3gel!M{Qw HNNƆ r{0<Ͽrp8.y ^3Bg{2Ihmz|s8XP5 0 0 С(8::TIWx6`1Ɣ4mLZcٚ^!=\q)3@ԉdVن &J@kCU{)ѾQ@l,}44-uM[pA)?sđpd Ӓ&x;D—n؟YO[aSt9vqwT!S(,Ŏؓ_fUw81cy CTH^IE%537"LVs&DX`&iUfj{mmmtEX_7RU\ 6chla(mkQpDR 4E!>>.*C#9"c5T $B+5x2 ҟYn [ XnU~ԋ)/΃|qnH3dh[5{ٓhdW4CLe׆LSxK@091.J9@XgϵOLkJJe<,닺v8]Qx"c#=*Nj'dI+> -h9JЄF 5u,Z&L@egm@Ppښt!.Gd#@51h:m-~uΖzMcR̬9997)c(;QJ2`Px!&g WR,`Y񈋋2cW342FOye։&dPY>W\<ګiD6 X p]\_kkey݉נ^N' (ŚWs2Y͆/7xj2ѯpAs.@AI20͊HU:%CNC!e &D3% g>|"ܲfr'P ו ^z4ƍ͛qa; S&k1gfW{A4S3ZE^ sĨC&y/Bߦܣ0HfFn?-hkqpuw;򊰟R-PQrP{X}rl=5ѵ0s*,{;()1t>GY`","4̈́ܭ`o;hg^ dܻ dgHRϜdJm_.~{2قЂhooiBo;g.jNce r?r E4J]u1Q&c5>g7h5Q߿:TQcŊk ʕ6TTT x8p+)7nyKֽկݕh?estNCyiFD %6ŋY1cQR8hM?4G0`4\G ת3$ƐS?3ىL & Sb3r$ G'"V2**{7qJwEqM͉[Wg~g%ohl(m6~?7X ""&8DGGChb +AH<9c!y80IU5(:Q+pWFvl ghȪ!#t8Q)O ]bȶaK< ",dZgr%gG_4UAаn:x~ehk]vDP161/>JJvb (o(7QEpdl`Eݘe,zW2c ^gqFZt/hqofHoSFwf&RMȔT!Cz:SbXPXUgxgꂌԜ84 Eh!2w> 13 ٚ5f.DDlhc\Gg39@tɓ,fƌ ߻NZ>*#%!+eDpprsUp!+<,<61fq?7JEЎ$1 \l*ZxC=䕔ctNE{[xfDمEu_Cn2v#x%S5X6faT1kB^i!!!)*#&{ߍvua`>-$_芑11~=}XvڌF0FX32:} E[Et-5V.8e%7M5b xp5 ԕaoL{Uʠ7Ɩ,Y:|8<,|h i}D^Mm# ;݅A4 !T"##;C5QQQMZ]CZ[SYѤF^hљ S;҂.:UYބ`/++ P?zʘX#k(_j냨|%P*z>>}kL@yCseƢj﷚GE_4T}} h d 0**=SF)P/\@itU_t֎SZ};M&--Ep Zܨ+AIxjrS0q 3 'MOAy`e\lm|mVNIW#wֆ{;>CCF`pZ?} flrO{z.`QlnFnA Mv~^F;:PPց9Cl)K+c]L|AuTR6#D0ChԵc"^lꐕ1~Fjӊ6H̷J~P3f_J@Ru0}8-/p,̤qg7$jfЖ1]3o{ 7gs5/1 4Fs5QCdw6uG/Je+eʡӇhnf2*D55!ALLLDuKƦ Cru56+eٙoAquiƠ\fa<_A+D0#5ph硠Zw2"hQc)) rsCTUs+ }z ̚ zH Г9b@_hb @Igp:S#wg'oh`u6j|Ca hЀ "H r@Coh@X'U `$@mЀO5 hhX Ѐ_T6hhН>wН 6D@%+ #7hGn-74 Ѐ@ f|;Ig 0pPrw]9@GـJ%ɀz ~J*+6\,GnF44Ps@h@CЀhǼv˙߿:6b(qn+,lioQOlgBv&a%ܠ.z.’ b}{::AFqɟ'YIf&vƞTm'fE_[ !ȄBhBp -V. nS#D0 ׮4\/en;="Y]]݈ %oK~e"D<F]c`j3&V( ֬q-.YfJQ7˲I%rȤlߞ'mKMx!g*{9:qu"x{yB?@$֋{\`@uX1Bz cC{9^d[Ӧ]3OX8E\N۰rE BWyu[sEWĂ3Djsm4fzl&{[BލlU}T$yIENDB`anyremote-6.7.1/doc-html/data/jc/themes/crystalsvg-player.png0000644000232200023220000002345112061426050024601 0ustar debalancedebalancePNG  IHDRD?&IDATx^ܽjMG3"N½qu(I:e)|q2! 5ƕ+]XXe2Ђf9?VZyec8,la~cOf}BA){s$9t<kС:|/扟x(T~ NoT=ŽY|V|N/Y&.cs'e{rJcNaWE-U݊Ag11۾ީy>b=:%ژ:, {ԑIm.]` 7nA/K U?fv 1Ţ[}LW.zT=7 H$Wi?h |}$[+Mg;6W !WĜ !aC!f|}ғ10ݒp[Ǥ5r@V>_M~&i|nm[@ЫJmK)HNF4qJA`B h 4&4Z  h 40xИN^̌_OtIADžK\WǿKMVM->!DB(ADW,]NXIJP." Y|.g#$;dhy.#Z'2Λ0gQ{uxB!Nbeew|w"9>zx?X@!%Ԅ5Cu@mm?t: _Qȕ8_0L?&&T2'I,//--%Y+o4wRD"Dkky4_{xxTu#A6Y60b)%%`D& ?̣v^8@0 DQg*NRӞ)+"y'>jEI`:$Vgj.:;:]I/_hh6/8ƼB3H:ٽ_!J! F2)zY&?!^/?@cu.. A:[[TBf2>p* 5J议Z=z6w0{0GX/Ř;JDɫi,s@4}^Cuu5Ca۱1|}}H\:АS2Ri @TK}N?*7 %̘X] q0)iNfA_T8~to Eϐttt@*P%GIM#H} 'w>-*XU>)17XQ(.lnn%5( y2ר,= TVV=9]U>w#( &a$$T )łpd\> L6/|l ךTIR.{<<+m7o*NJKmfvwwinnNf%5A ;cP-S2 XV6Wp<1zzz\{n H(@_RScVBx2>^ H3[>! k?m-q>ྃ0h峗X[[Í7!#RBlKyK֖,G⧿ADf(?tt>G??iJG E]zmll<ٓ<;|stcܪ3HX{mK>0 Jn:K &iFLɆ$ICi(L3eB:mNKBI`!mRL`šؖ1{]j]ՙ;WC֞=>xy=%u-OƼzzW2yQUk6CkMNNb@\jjN0HQNb/_vE^cQH+&Ѷfgg#[;;#GR>JY}U븷BmfC F@Dz|!(Kwi CF;hƱw^=cP04ZU[٥GF:1ڞM~ `|J^nj_'.]֊- (v. Y2s_~̕@*3͈Kz H$dɍ)R $_*(EޣV`UGU>O4Z$| k90mE|"gŗ7eznH$a)ٟƍI@n|@FJ{X([P;w}OhEt@NtY` - X l 6VӣP1|n_怼~[ H_I$듸͊# NXL3Vza?@kWi ؠjCp { -6 r2\߯.X|)Toݙ\M ݷ'1ĶI؏X U]Z+,PA R-#T1 ! ̎7سw+b+GPQeX}]HJk7= jZ}rh (IꁙvrIp, p)s{93oN1;7]=+8ښ?"*;/ 5u]22i|ofB,TAyJK@Lr"C^ڌϼFx6fu(#@O@ifjLyZB^ozi祁b+ЀaCkg;[ `f Hdd aHRf73&TvvׂAZǴ4*7]H!ͩ$vR#_pΙsC o\ 糴Zo( \ IZ J9+%v:f3n:*ڐj%8'7ꍩZQ,$# /K !\P̿&¤~FZoė2M x> ԰dE*lCJ*B^z3C} $T@1 M4!l'Hο@ :`ZCp-y*̽9>A-S6S-*$K2[WD+yޘ. RB"35HK!DZ@k\ &gtXC`&fCH- ɯ@2{/\v p1{9S| j!LK5 `s̿Zk|NY@f)LW@v$"WVdF{-K%~vsObU58Pwajr^Y$Bffn GNe[fg.'0Ct"-f[sg^rkY:,wŜ%"xyj[ YgT*̿<8{^rkЙ GyA,^EY)mέ,,U,AŰ=gj9nֆZY?#o] ބ F/~W4R'_:B{8V f֚TO?)_¬ {%*fV;&U4^m'F>6hʛ0҂9OwT:CkUO 44we`r&ՙ+wA~%̅RL.~4Z3g^A:`*n+Pº5"`-Ta P=Y9Tq0 ̟)xZ6}W P7^~+9S5~ zv*(81 a0o\~_fsQ,6520dA0:KW*Gv`L4]I|NXf1Yv8u&$Q&ff1wZ/S ٲ.$i [$0a>~oksM_,ȇf0$aVK}a U-tgȆ0d&xlN4I9d:P1Ab1}K6k'sPK Q,zaa7 N|6v,ݧr.՟I0us@åUk6CkMuv3TZVme&&Hbua(a"~?P'H ^NA}g.0^%̼3{4 :lַ9uZ pք@;/gODurTS02qŧ(f㠗k?ѕJ*(Y'#߿ ;3d^rb=CM͟eRsKZkjlc3֥rN!q|jIf0wY9cy2q؂?OQ,@qvBX^+3Pμ|\VϹtQLA;s$n --B D fEM9Cmn&p{/';BzR/sNc‚i^kj;hP~{?X 6B'$" -|48 bBmv e@ vy:WxϿ+ZkNyzӝ^ qk DPw A)=WsRBI(A {Q?q) ^O}cs{ʛ{ۀX| ܉mo` {~sHϿ#Ҋݱb?5`?֭\X|!CkƟgU  <~屃8}|*j~Y/?toUk7|>)oo¼μ|nE ZC_P̽ރ~X&"xJsQ7Z W}8WA1;;{ C*?Q?r|p >e gq;cGVCZCw}0\3c:d ޚKLقxG2S%0 }2+7A` 5>#܋jܪ@khB CwߟY]0?4 2u,H^}3zקq>Hghm79 s &R_3[0 ױP^ʷV7%ݼIím|M턺.9l|oU;"Syi:\j^^3 2}YBr\{Y>"Yh-2`B#ώN{iPϼǴ>P\}Kiٜw|oeqޤp?*|@#;[0~&D?sϪ+r=/ӋpCs zчwaQZghM>r HV.'}o_2ϼU3#&9W6a*QE!HZ<uD"D?TBt(OP?\cXѡ>[FZSghMԀg}WCA JMB"G+,qUD!*:}8{Pc+@@b1qH+.?4AsLr?:VunV1 63G&=s2p|@&Skϟ'wn ݗCkŸ6%'l=I 5TC'v` I6'x"HR|BtL87@kGt\˄P-B@`dT,4`Jm,!*(edpСTH3xBDkRa/OmM 'G{D̊!nG&Ǎ2xJC߾BǗٲ` Q`%ByTuh?t~cjޤ?tmVM{Yc*FQ'CxC ;tY>>iGbCkХ,ABAÓ]%C˕@Z0gsi|7[XdYs-Y%˦gNk@kKn!"R'E/+3x7T#G?OV8ѥj,.P{kiG$=T<Ix s̕J;E1]\PBHgfNQcu0#֩+q|^vO_!gʾdPֆ֋@~LNM5نH+:$LUS7GnߟVYz/s%"*r~H\})VНZCm#/hf׎\yScVad/n?Zzrx̂Lv04<2xl٥VCkЏ{mLYjK% 2ߚj6x=CghWP^q0nĝF9g.Ͷ ?;-Ӻ#KC_ήqc>G Y리`}괷 ?ևoȍ Ւ[kiXA 8}cڊ ݟxx$a^*辴s֢X{]V|nB#&؋Ʃ\efħ^^*c;n0 ]Z[ĥ7Pbm XW> Dp)2vH lc8c /Hj/ʻV 0CԦ)_V81.0dJ ׬M-3V 5!KW8;07=,Ej25M\/ a_h@k\>'+va}>?;Z z_+.0 2۳PZB7љaf<9DV=.r[XBm򋄺zɭ+Ӻ-X0 o~~kJ\mj}X tTjrMp @hj{ xȁ%vЏs25D0dmj&W]ӇS>Sp \C]r(h-~6ߓ RE.p5i"(P AyAJ^0PցyYZ|f<|Hyq8@-Y!T4?h8lH]OQ,r?̅ZB4g'+,|}E+>`L@`Ay5D:sa֪s83lv֟Zb,ȟ:50+|aV0Kgf42i/,[#L&~R:؟:A 5G bg)CTs>L6 3E`iscB A N3Gk8{h-4jX=*+ܑgPqP;ۄZ+fGdiq 4B"wsbg3Б:/jq0в;VCMZǭAk? h39&32m?uLC#Oܩ*Z@\fbg@a5'YGiݑMO`Ǜ@phSS_p@ex`v^;sF 0s0nDva'xЀC™z(3(Cݴ?uz?A@r5RlCZgf t(ʆva̙r\?O 5y*OKKۜICyҊ+^zsC?n@ J8xb8jdsf~UZ8X\0@= y 14#ŭ97A\0c&!k  ^f} f6Ҳ;gtgjr> iGi -Џ{]9 V ' 89}LY `gwpj st0DKgi-vA6TgaҦ>3ߚb/ jh} '-AM fufa7&RlnXqS+$[*ۄ9#va3paK+_^.?wA@#8bw kp ni{Xm 9NޓƄPdUOg߿ŽR_>K8y>Р'4pwC % ̞K1K%ٳh8  DFn@y:.ŀ!\})Xpzhf , 4+@7"34p$mnX@44hI-Knjh`\h&@& lF&34pvs?gh<2Ѐmf7>ُLCXA5@'hhph@~8W, 440W54I`r1Ѐf] 4 dr@C \u| l\$@ܠ' Ѐ@ 4X$`d;y0#ـ$Md|~I&mCX#70+=#7 hhͿ44``hfS[ _7ulP4WXhq3y;--xAN0?ز\%  ttP$З:BR8TdBFh'Fۻ4W'm} #X3E&0?3kɗ<XV\Kghވ[p3٪x^)$}lA,g:6:%58`u=Kwm9p)GQ1˲U~%u6 kex"De,ԭĪ˱͘3gʿN'?0mcBxt7Oro) `F#]r0g+n廊bb#b<&D#1a=b>㞦{M]Xm ļd*-؛42^ (;;硫)`yu PvbKc[bث;{y k'8Բ,&b3c8fb  3 f@ f@̀11b b!13OhZc'N}Hj ͒6'1M4{4 :8,a.,ǰclND׀t\deB_W vuZ[n5;34ŸZFU65Gvݏ @t^x ? c"D>5$+W;ާN֝[yIr^o "H2|4#"x (!̹l~ ,LE&NNbcC]AYS =Lv"7;~(S/_r[Q_ww2_|[/^#2 ׯ_Ǎ7I@䂛7o_"˲6&@d"cpoi|{hGrz8 W_9@deG=ơ4y1 ?/sQ"&3Mx((s0xB `7D&V[(j"j6R^"sL9UCY(j\8+J2L1&:SWIf*"ӑȋ̉\L%c ޲Sb1eP1~7 zQ?}@d nڵk`JE.몏=ZڝQ<,s4Cjig̙pȄ24+1Ę.&Ы"_ ^KZm̀ 2 -9Y!HʜYe>IB⠲}Fy+a j"R{=@gϞaAt(,t%A9 " ̂ ̂ HL/'*9#H2 ,|8UrYdAd~XUf ^V SJO&}'5677Qsk BEH󰵵T!6{0Xh-`Mt:T ޽[翰̂1'l~?=׎,lЯr=LdFQ8h+ß8|?J-2MO5B-8Y1b &x q"起/jg Y$nwHh}z)8Xhuvi0nڔ?sim̑Ο{YjY$&B.r$t:[]ZyjLųT&4K??R"1`@nfi&",2ߥu_ @e21FA]jY$(y"'T7Wf8Fк&KLjY/` `\?gpBfpADKi:J-2a+aP .z|͠ǀ-({ 67%&5.EE;?@x#NcM_8 N8G{jK-2ČO'2~-NЇְp"Cq fByd t ́r;Xݨ$NOX=DfplxzG{iǀ]Rb5>C ԯ]] Í!MN3ZdxiU>|a\)j)wt0U y2PZ>*Jf3ùtx@G,uQbi!2 Ņ5cL!b.2͖`5x3ppE,kxvvv0 |~9_3m@܄YdxSTvO{ds>QZa1 j`>@WBbYKKjqͷqppq<>mM6QA4x2 4lΘCEf;8wgf>3ZaP8x%% (ZȯJǓcSYA99J,2mI]>bNlb;n"E nCF@g5]&EXd7KM8}Pad]ĶE6Ȱn-,ZQx:"3o̧.ɩz 8&@osDEDf7.)O׫ 1?7?)If~:@̂ H2 Gk̂ 2 lA?{g#Iopq!,Z jAx0zv%كLQq/Qm<.j@lCH0@Cd 5sT@XhTz-)u\y^PJcd?~A2_s0d+9XF# 5Ĥ]$tj&M*XN䚉c3K$;U`h$P!BK_D6 9 2d Ѵ3a=/B"#Hxlc\d0 $;B? Q *3tKe\ڡ$KLAɃg]6MBTA;q!Ȇ\!s%8TPɔ3t^! I+gI3f )ctVdE$+CJdفB}zgZJ΀.j }|uд'7I3lGE MV ]B>V>*\hp'd>]8^3u3t+,[N$ 21ъdqewV*?qH3th0(4֚xWЋ] _,4-劜x4vfڮāT| eABE^n$h* 3jGA݉+4999x<Ӽ˼ l_~᧟~~㿅y s /gu}/߹G#!v|lمۭEƌJyo?Co/rfƫʛo> ng(c޾6z}ꫯhww~>}03`YJ:Y3Nz/\ف"ǔ<8oy}Y-0`COS2H=R)8 e3`HxJ*BmYB8B}G7>gfTH,%ֳC˸q88B a2&-RHԞ_㽯8.qh́/0dl>F|'D~~}.||c}$U9=p`|BS#{9""׃xF"")$VH :!C"3X80&'d>bDȧ>k Hg$$37Gyz1ȭ ]wprBGpY~3"SA^ԝG%\h%& &mu`̟':{c9.Y.֌2GQoO G (Ahu&3n!Kiƞ̏9$3B4Bgxj<"1tݟ#p0%{Bk  wO#3OA`.<+3tKewy' OHB8ؓ9NM%PΌz6=i=&xP2{quЭc&U?< 믿;6#8b7dR+7m}S~/cҜ_6)Es L*4gM%f 833 30W/Tf@4\< \bl@IMb6l q^&m6`3 `vR 6ـ00o*080o6'Lʀ휻y 2 3 ̀0 30ɦW /Z3ei M`N@e `gysc0WAef@Aal Lڀ0o*0|1@e&'zi6 s*3ɿ*32i6 t4t̲ي I`0MlT}4oF&4a>m6af@Ag 0ٲ{S`9Ipf澀<+澀`}+E piflPaf ̀6(o=oثc` dzQ;v-RTDb횱N1 އG`DtgXyWa@I֯(BzIQ\;.px!!LfBd&ɼBx(6q?&!cу/S abS]]}Yqr*JNLc\gZdXPXFHX„7$ٺuv£+( t!6ȟ8Gt,RNRE[&gșB{^o̎G)N!DTEUeBf3HJI !d23yy~1W IlՅ~ G2iw bf\4^jh؅'Σ `݅ hωp ߣm4fy'␮)d޷aԆw zE]IENDB`anyremote-6.7.1/doc-html/data/jc/banshee-v2.png0000644000232200023220000002546712061426050021564 0ustar debalancedebalancePNG  IHDRFYb sRGBbKGD pHYsu IDATx{p՝￧穑deK~I/b| [`$6덅͒!!@pTݭłH6]"k{]c ~HjIsz3zOa$͜>}>}Z ²;n^ !@'bYm $d% RfDl_$>NlؾWt E<2FgֻnixX`ٲ޾}3kewBء_˖>Pe@HvJ==pg'r5Yi5_Ad,5L];t?|OA122MPӫP̄c !ѿWFB ϱs)Mw-I*B *]~S quk=k'^x5BX ge!c#'ĄP؄gQ/o$Ժ:% s l>bvPɧm(nBa)|Ey DtSjeT/w"oBJ4u܁e0"3}ALbvCʯ# rUmS۸ X#Q.)6I8!f"6!&&Lp4Nabh&|MaRNMaB&P؄Q )lB؄ BaB(lBMɑ6!WcK!f1m`bCqB̫n 3AaR8MCqBHFabL&Ąi6M̚&ĬP؄P؄؄QQ7M.BL3'ĤVz !cb.泻1)lBLMM !aS؄J ^6!A@б 1_N&ĔCabB(lBL6!&96!tlBslBM !6!6!d,UJ cBƘkS؄б ! MCqBCqBM(+br6 a(N !#lS؄Aab>cR~MaB& 1'VVp}AUUى&S{qq1vF@ar,^ '˗p:ىr1)%JPV@z(P(ukPO/vY*!lfI?~<:XV>b5`DžsCBrS vbԩ4 SǏGQQ\JX6\!4w#Np.\ W ^ }N(nGw['!TBH)!K%dtU!!`RJ节R ++1s##mhB{R o.`6mvuJ.p:1;xPUUwiwR\Z[o555裏k.$pBaX$IL.,^]w];Gnl6x<xXh6:|!z{z`.̺ 'LJX,|fͲը1Ebp뭷bԩx뭷cVI)aw8U0k֬AzkbҤI\S@=[R؅J)*.wމo\K(l6|_Ǹ* 8sE N)-@EE;qգ.jyx5=&y6IK(r[(vcɃp0||1u#(1 Dm}aj-L3rׂXbԲH(c 0&UT+̜93oQ'xD WXy'O`i]`v,7<`Q'NV+/_7]as*P\4 }WUaɒ%(XNvc5 crW )Qr[n3z 3ɲu C)cs񄎒e[ @D Փ'[nI4; I/ߊ?9˗O u&EjM7݄k62L4|h0Ν +Crh{bmcOSuhlE---t V+*++a0qĤϺf…7ПJ Oh` ) Ӧ.o $/N^GEkk+::B`ZN;1y9}QUU< RW]fp82ũDm]3*fy}8z \.NRBގ'PSSoq6ouu5fά±ynG+`]agwD}EG(XlXl)47w`Ϟ=D `; ̳GZ99L( Gz׮]8}4\kB(lp)(*/BQy-%Z}]]:}];w.oab֤I0h(o:(#(r̙3qJJ((J1N'\.u8t. p) Zho޽{rtaBI ;m9:F]())ؙBh8~!(B.v;g/7".rp8'p؈?8'agzjbP8t.,˕VLB---(-)]D  gpGg_;:8| .rp uBB!9s&9(PU}6т5?'bL9S+4R.]@ĭC!!qEtjY(R K3Bmй"Y O cY8 ń]R;~l:; @@FkkBpNx86=jyQ___n̉"c^`b|ʲ%PУKh5kPJKX(SlJq1J. >`0]yG< Px {`0 zUEET}}}X@ )(-D͆}}}pCu: uϊ(暔N說^>g<Sa!d!b `ܹgEO@ Q1nm(\7y2Z0nGMdrZ#d9cym5:8s %4-@ G5c |駸tt)t^6==RSqۍI&dhiiA(/ںZ3b9 /EEEZlFWW@;ygg' ["n=.\\Q6!ى 7⮪ŋ1@7t=`0B֍@kȀ\SQ;}e-]gր+W8*>0 *gRo/*BTeB7o*++qa|>` Oޖ+t2f_7o&L}ߙ@œKa_ ECχK]YYK 8 :N'JKK1cƌSFL Ѐ@W\n|4 Ki\ov$[iӦaڴi7&K?j=Š|8u,‹)E&Thۋ ut 5S3Jyyy^λ]I3gΠ( bdT d'Bw "5.j}.e؅ @oyg<ϐm(nT?p'?kŰJ*H E#ؽ{wA,+)N {-sH|&.a|'+DB𥵳ga $HkKq:^/;tW)}8o~# GNΝ;q%X#)&'nƶe˖a9Iy>ë,)YxfAx7]!mWZ~7xcD ϟ?_R泌 ,ɭR_Foo/V\9$ 6nhh믿'. =܌_o ߏ|+5Q:u 7o>@02XdžTP-!x>Ƃ-:`֭]oEVK9Z;Q__OO6@{0R.n)|c# z̙3صkg~\jn̩ 6͋Ï6q N<_4~^/j.g֬egy^߿'ϜA0"E]-72FJ8 `o'/^ӧ;w-%ҡX_Ԝ2HTV_6x)zש]GgG:goe.L@ P'L?K+tP~PAk+Z[;ތΎB#k̯H)ыlW?f:?C4gϢ΢"B9C#Ą&}pBLH̱PR8!Ą4؄s b<&Ĝ96!l7!y6虃g0ϱb>Bl8!& bDL pBغEY#r Babja3&ĄT6! !,l5!&B&, 18!3lc(N1W&Ĥ)6M9[!t-qBLCqB(lBȘ6qBL(lAib6aKHR– 2 M<&M)tǖ!&tl S6M !cD؜B 9℘ 6 1O!\^slh:cӱ 1On6!TЬ 1 kBӱ 1]mX̐h%6 *)N1 !ɴ5!R5<#dF&0&$&M96M2 لLQSۄ0' aӳ 1 !tlBH FM M&̡8! !c+pRB؄wlbBfNcb6:6MY:A؄ 1c3'lV8&NP$ ~MJ 4[J;!F SmMLń!cUbO&'wl ,b #\ 5 ʕ[:aRb lܸ7nĊ+oDQP]]G[L8qgnp({Ï2mhZ8Nȧ7lw:F #?lߖ-qre|1RV%|}O,!&NUݻ=t]OX=O<쩇S*X7*pK/5k`ٰXw;< Uz>d EQbϞ7ijOzvu >ٳa,ucX*L81t|ܾ5 Z}=T'JGEnP_O47N{^og6:\ ߏիaƍS#ub&e̱3u Kؽ=,S'Bt۷FwҖυrl\6mm݆H_>qϫi|b !녯>)Vkk>$_|Xygϻ= B 9^ʎ5!N'fΜ1n݊%KjzABv̚5+}yG.++âE⋑aFywObj [wx|r 278Rf-e~W1@47aѢE(++Koc~|w-Y[nŏf͂n;^c$9s&Ng8w;뢿hPU5 lǷmL2%9OSõNf3t.;iS@ |> Ή46~5rN]ƹGťZJJJ0w\<$yNQ^^yh(A36ۙnԩStRBMHaɒ,ym~z0 ]SSwt^W aZD0gw"VM&\FԲjRI c iY>C(Xj8 qV A\ycxuT5/66tߟPW΢ j)ɾQ]S5IltFb˫ |9ίO4T?~wy--mۄ"N>~?яؘFG׮}<%KD T,Ú_'Ԫâ IDATʕ+x뭷pQsr躎6ݻ> }!̨I.'v4e/w.ihoo)`=YKJ|VةBÇM c|}d(m4۶mo߾!]D7n\ !'=6biѱ}Au`;w]סimxۻ݈h"HeΝqP5`0FWɁOo|VJ;%Z|RW'vcc#6oތhnnN;;`ac-y-  ǎC 8^+pSk8=}0~uV|I ~lrDN*G/QEx~ڃ&@y@dbǕy<2>HaYxH5\JrۋFWfk)iWy8)%pA );YgF7_.ğܟS]TI;6V>7pO,CBҊ6%R*(\B[J+y?6!#e"1HoyBH~.H9=Δog!ɤlűŝQJ]GH˚'dX(RJ@,I)>VDސiJ S6.cG_'<4 GmE(k:tԱũRa4]&t&0]~; IMQm KZȤd"C[z"}Cbx;L}r[JTcs>/m(.C#ji' )eJK|G}p6O9M_<[ CsϐmJ9y|UE_Zy)mk :;!u}ȕ!2vObcQOd֣ڱȠ1z՘>ȫ/MbDE(Z}-[u$c1N)=p>d,l)->I̥؟Ʊhmٜ7rLRbAJDx$s7& m;Ù/9ሴFc) ?mR$_~rJ,Hb#4 4!E- ֕d!HAL/]F'< 7\?`FIENDB`anyremote-6.7.1/doc-html/data/jc/fileManager.png0000644000232200023220000001215112061426050022026 0ustar debalancedebalancePNG  IHDRFYb sRGBbKGD pHYsuIDATxM$WS!nDDFDd\BF!U\B .aPM&ƅnʝ.D\q]u9Uuy`vwuU[]owQw/[o yJ\Vn%dWߡW{>j89I}~E yw]?gF(Iukz|ֱ7>=^~ jy9 1:tZA:Վ;kRQ_|VDu79V\25nt>==;xJ/7NBRc{% Ng?bDƻv?O71w PƱ}ь f{Ra2{n9s쐟4Y=vݨFD TV/^|~q}د@W>o78;++UB6@E:m|qVq;MbE kICǏy020:x1c? cwnCDsvvݷ?|n:Rؿ1ÜD#c?Ucu582l]jǾdEb?i]nG̰d}|;RͯQߏ}b&*ß"g`;vFlS~jz3)PPU *aToq Pa43m @ vj c@F rJb @(3pa;:@خVrZfqƲ5q%M[{lzŹə]߆C̯IBCq pl9v1,6& #WnaD*D_#rl 3m Pm 5䛉R> a9 0y<@%v[ ̴LꮡˆlZeyCq0}Wwc=V Mv/ns&0kJmm6@ϖc a2l PYς=u+6SD %w<@ŷ͵B(%m38]BEˡ͝#};Yؾ!`ZSo9J˴Հfz X@RQT(l@f)Qӧ Pε86e2`rGخ .XpXH(Fci5a8Bq N)o9pw ~^SCqJ4qpC>a,6kr%hӺna/IԴцKGmbVF#ZǾ&ێCpT sǷ'"g.xF7vc*2<&/@87 b3k cz<[#l#s~qȾPfw v :}YCq5!XEF;$ PW k3Q~Yv N}Ӯ_ur嫟黝; ?!o:QPVi}ǃ:w~EU2N$7Ŋ~*˽onrx˻w M߾r0Il}!vlb\ˆr9w{: C*-W5X4uwHϣc_7m rq;sn CwaxJy,ri[c?6nh ɰ8 /P S{ 칡ѯ_Vض>cۦ9YdJ:Vp|xGTp KVg?wH SrcvRRa+= cK] zp:d4ReYkyo)})Ǟ:_~9sf_rQ:?XsÄ3c H$۫?f =>q c#왙8DX1s/۱8@}X9;Qh<œ߾gۓ;6采 81r aUe;}53uo,XaHr,n 䜩38zVNA2ƻlnj)59m;~.lu>> Md%9P@|%c0-P! f\is-^slmSۆCӉqM"ȳ7//걎 k 70V|AyrF'ۢu>(a^n9z]]aqe7[j˰wez~WXo""*wh_ v f)1U{.T[XjmP.h)^jrg0Ϙʪ1DLuKcn(apu6z[Z py)hx>Uw{FMk[WUJ]ǫDqXNkx!kE9ͱmazLWHJfE 5|LwIݾb 6\{9v®ysퟺ 8dž)L0QKq @(SP0/91+pNCϱQA#"Ǹ3m. Ron=e]M< kUZ)L+qN91 ]Ů58.-b.lkw[ǻ) V{s;A%4vxSj͙ W͠rqҔn!h"Sб'y ,#ҔCvf+pȱ"plZpl*i{v{ ]`;RF^=6a2?ѡ¶ R3Dp@mkEs;|}ㅘ%BMc" IUvjY4/d?Dcs'ssL`Z-ᡦ.W%WlU)n%B|:.Kfsl^ڡ"s)8($YgCӎ74TVʎ+$L {ֈ *O?V0;WjXH>#;+w_$%2.-o5؈zzQۆt1>va߷1+ έ@x!׆DrF+68"|\\0@ 3akBr:n'Z+{R %r"ީ_)S*{7U+؀*iTF0ya(EDW]VӺuȨцP\D羸Uo :ƈ p-/Ǹ}Nm_>W.r ){â0;2  zl1Ha8@l0`6akc0ZI34dA&l8Pʐ2TjCeN? s:ea M#oH]"1@ցKt}]7&x]!k_G .,lD ԕ>[ ;5@D PckIZ 7? -4тm> 3u%W#+v\%Pܶ-Lq|gc B`}4fY Xy?w%}Iڶ[{;/ի o<Sopjɱ`5`Uplqzz&gr6@B<~mr~8n< &kcQ60!@i'&yPصG Շ96 %[d!LS&&(Cqxoco>9ܑwܑg~|\ϟ'""joRP>A#{x99i-45w{>qw_9t6Ԗ'q|k`WqbܾpamT 05wl=ߣ\8*\k?O "bS \d;_Uſw{ L ^)ߥ^\ѠwBS*MuO ¤_~W/}\zk"AnK7rEO'`ŧ{E;nQyy◾2w;n Wj/I{&(eB{y_*B4#XIENDB`anyremote-6.7.1/doc-html/data/img/0000755000232200023220000000000012100017561017263 5ustar debalancedebalanceanyremote-6.7.1/doc-html/data/img/bg-sidebar-gray.png0000644000232200023220000000535612061426050022744 0ustar debalancedebalancePNG  IHDRߊsRGBbKGD pHYs  tIME#/jztEXtCommentCreated with GIMPW IIDATxkUOBd&zD$%?Zji!ۓu?_ۓmΊPTś(&\&.\ -n Vizx=@ivܙ:u2_. :fǎy$͜>@OߩO\gJ422$?t(k̦R]Iq[DJ%H\;]vZZsГO/ԩi>Xa{{}lݖ͛+T*iZioo6|AO/sؠ?4lAj+RPq;.Odrj25Ġkgfg27w+,..|Mޓ,+IENDB`anyremote-6.7.1/doc-html/data/img/bullet-blue.png0000644000232200023220000000041612061426050022211 0ustar debalancedebalancePNG  IHDRHsRGBbKGD pHYs  tIME ^bIDAT10ѯXd$!1^{tsqD9ܜLL܊O}Ocʁ*i1,7N{"1DKNɔ\v%Йq?; CJi##z{{k(V ;U9S_a iGuJIENDB`anyremote-6.7.1/doc-html/data/img/bg-sidebar-red.png0000644000232200023220000000522112061426050022543 0ustar debalancedebalancePNG  IHDRߊsRGBbKGD pHYs  tIME etEXtCommentCreated with GIMPW IDATxAhun[VKPXءF!JBʓ7XB;E{ ˗}k?][qdɒo-oO}t[ 58DM&~͚46mJϖ-*Dcx8;v{hHoݚ?ʕ<.$p#o3ŋɹsTߤ6=}n&9|6|ݸlߞ_t('&;ډ .woܘzzGS;Z?mKdl,,8[}zb%/ڽꥹ4t(SOzTFd:yJdkwjVח[]9u't(}Cɫl} ~-PzOup&'ԓ6?$9p@X##/Ok|<)A"%L9"PK~}Zǎ :홧9u*)Ab=p?.PG>yRhmLiAZvSsǀ@Kxw)P+l@ :K@@Att@At@AAt@@Att@At@AAt@@Att@At@At@AAt@@Att@At@AAt@@Att@At@AAt@AAt@@Att@At@AAt@@Att@At@AAt@@Att@Att@At@AAt@@Att@At@AAt@@Att@At@At@AAt@@Att@At@AAt@@Att@At@AAt@@At@@Att@At@AAt@@Att@At@AAt@@Att@Att@At@AAt@@Att@At@AAt@@Att@At@AAt@AAt@@Att@At@AAt@@Att@At@AAt@@At@@Att@At@AAt@@Att@At@AAt@@Att@At@At@AAt@@Att@At@AAt@@Att@At@AAt@AAt@@Att`ݶfE+@A?w P|ϞᄈV҃ޕ$gX>^|6a (n]2%woؐtɧbO胃Y5Ԡ'IcӦNH>"Pj{lR*PbлNdl*PbГwǎ$I{[J zP[G}_X QeLh$oMrBOʕY:::_V+ٵIJ znۖۯF‹"-?27q;ޫO$##IWsgڵ˓gw&?f9(!W>2ञ$3O'nA(5W2{HZǎs5Ġ9sǏ}d:O\0Ͻ^O:k ;ލ^ѩCIENDB`anyremote-6.7.1/doc-html/data/img/bg-sidebar-blue-top.png0000644000232200023220000000154612061426050023526 0ustar debalancedebalancePNG  IHDR2)sRGB pHYs  tIME }RtEXtCommentCreated with GIMPWIDATxjU&$IK4bX%D+"RХ o+pE7X* 1mhdtdf\  Y gOo80mmIjW9wpO&ƪWQpZd{g7Yҽ$I]9t.Gqt-նT?5hUfkejr0o_8jom[[n;l6wS;Y5ξs:˥;=Wt8VhƝvks߸vf8]z : j|-+-A"($W]t('9>XɵE6=ٗVV[Euv'Crn.7܉^t(3Ǻ\t(ѧ*i>t(j@эu:?eAt(JI:mEWjtD: :: : ?VIENDB`anyremote-6.7.1/doc-html/data/img/bg-sidebar-gray-bottom.png0000644000232200023220000000151112061426050024233 0ustar debalancedebalancePNG  IHDR2)sRGB pHYs  tIME RtEXtCommentCreated with GIMPWIDATxK]uizM!kѴVmQFl?27ZM%冚dys&zFz~zx΃'o9pNOh: :: : :AvV҃t}gg Pzз޽V҃~WonғVe (9Zn߾e (9裣cYqPrЏf{3KK?YJ z:Zm$7goZJ z'Yu=EԠ|a2IrZJ z:F߾/j(1Irג$ ͅYJ <9$rJ=IΞ}+}%If.~5 @iA|b0ν$vdcwPZГOSOSCga'?nn=z\>@)At:y;YYyGr @ A?};$}j4SS9qY a 7:>48&r3V$tbviءe6G@ۛJbi8 AO\yf ՟Ws믲Ԡhdn~6f66~&}eu%dFv^g/v]׶AIENDB`anyremote-6.7.1/doc-html/data/img/bg-sidebar-green-top.png0000644000232200023220000000152512061426050023674 0ustar debalancedebalancePNG  IHDR2)sRGB pHYs  tIME cltEXtCommentCreated with GIMPWIDATxOhd~m.m?d :TP@1FP'EDt""! B dCʐQ:S1ǭC45sy<=;`Ѵe4=Y]Ko}si۞ [9C࿳%[Wݗ(KĶU'߸Yt7uY<'f.gzL6saf4fF2:M~: Wٹn_vt=,ԝ>.}m]fWߋv`fNN}}|ˊصZ :bx|z\lc<_F]` Gc/+^+^i};?;v?@i:P+iM-Iyj%PMmwfݛSY~9O?/PK?c%]I~yUTv>We9;9"PzV>$j=ARmk2j(>?ZwVxa(=3I?}/^ܹk (B_,a (93VNmh(uPhcɒ9k@AO =~\n(53n|:y*Ҵ F#޿ON $ڽ;IRr5p2PbgmdԏKݷVUU5~6f3U;r'I…}d[d~:$ھ=3wځ~SiyތoK20̝c5(%Xg͟O6oQROjdd: t;sww'kE 9I2z|94jت;Y"Y4i4 yY]Ig`:=ӺtrPjЧ?zӧ )/_fnLSk@A=fɓ=K͛ݶ4G >`%IENDB`anyremote-6.7.1/doc-html/data/img/bg-navigation-on.png0000644000232200023220000000122212061426050023130 0ustar debalancedebalancePNG  IHDRdfwsRGBbKGD pHYs  tIME5(VT9tEXtCommentCreated with GIMPWIDATxٱMBaOBܐX.]@ `g l`PZTv4Z 663׼99s^61,"ż|W)FA*h-u>h~/yO._-NV9[?N/ן"=7Hf/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    s@BCOYHe4DU{vUry>(fk!~( uN|ZDA]<IENDB`anyremote-6.7.1/doc-html/data/img/question.png0000644000232200023220000000135412061426050021646 0ustar debalancedebalancePNG  IHDRasRGBbKGD pHYs  tIME9HI9lIDAT8˥KQ?736j^?  zQh6F*] DrQ[-D.H*=$3G2gEս{?|9cTݢŷYa@y^4]+hR{z~Y+vng7]VoQ%^{+W?SQr+<NQ{obTۓlֵ4-‘<.+͊clZ=xLzs4p p|!YCG^1{ӎOem bw H8x>@HPFx<@af(1>ZruB)KRDQEl•{!)ϱca1Tf>;1)cm^c96D"U6YVpjUS}A%HLkcR ryt;@(~2Db7TB9r]!-& .8%e{Zj\D}2ұ5C&Xk1QDԘCm+Iqv'#^_rMC\ 5mɒx\rR=c5#YLK6?C&m"e!ov6v^sf䏻pZ)h۩9o#r9I3 1Oe%bLIENDB`anyremote-6.7.1/doc-html/data/img/no.png0000644000232200023220000000127012061426050020410 0ustar debalancedebalancePNG  IHDRasRGBbKGD pHYs  tIME: 8IDAT8˥KTQ8 1YL9!aR1YH=ΐ/Ie eE%1yq4cr\ξpjJF|^kZ?p~-e.F*[%4ܲ,Jas_7t R}jN 2[X_MH){='"`H o^i+%(,2!MGSZ={}t{{y3-l$A ()s d,87I|Zا&rkӉɯNXtBRM09x~GH!}rB6wǷ8w,8ւz{`nSVm| qc(ev0M#Ž;؃z!TAOI!Y!V 1CkKDFR/*吵 :¤G$bdkcHPfb09iMG`=5RT= +m))JVuu_b'ǰd&L\ bk߰aXw#Ev^F-be!ĥ&IENDB`anyremote-6.7.1/doc-html/data/img/bg-foot.png0000644000232200023220000002066112061426050021336 0ustar debalancedebalancePNG  IHDRXdZAN#sRGBbKGD pHYs  tIME  ٮxtEXtCommentCreated with GIMPW IDATxۖ8=_Y_U%Ml .J>ǔ,3hkkkkkkkk+/(w5ގşx֏+m:ƞxZNח%];Hw\cr=i6<\>Ni}G\͋fGqGۗ9B1Hf{\_y##nXD4@7tj:I0A0i_6qNa㡛=&=*|V6LpBPxqXrͪ6D:>h^s7 (ղ~1?m2XQ5kxwڧ1ODD?8@\ήJ .8xڑ2Fh`fqd#y)O,8\=&K Zbys5Ȩo}XY洏ew,Y29&i!g)颲Su/q.6x$߁)w lo#QQҟfݔG sl^OÝ/gd H?&WN|T\bBZ/TR]KeĖ%,r7ZVӓ03R@$\JE:O؄+ϣ2+%:|{ڐ܅ۭw;A~@OԬw V{f+:"`, dAq{TSYj@<+ER2&qU< Jڹdc,#jP+a>n";"}tчdj\Irm @K&ϰRqH;;V[pJ26yA?VO>BBt^PWh.{׶AWK<з̡Fl(I>bVsmTc Vc @,D–;RGuhsK @6 WxHWngAeŏRxB{䅦lTtE!9U0c+w!zbV'm!AtSu/=/\,-)bP} ʯZ S+Q!Y*WCX oór@JE{Wduqdvw+zNu*gy:`e.q8F͊(Z5kv,Y-P;-,:j>EvR@= ViUe,VP% G\9X`$T1L %XC{0@~3P6|9-ڀВPtE+1vPCWv@lSpbu| wa2W^["I PyOUMӣdߝ7k+`y*X܅*;ː\% '%Cug) g8 Zf+ʥ7J RӷLqU++j50 Ү-h'w aT+[⠀UR}%`UbOD"K Յ\]xPE_..#=lԬԬ _[ Czŀ Ү=4S@- ժ2} >v+K&Ղn5nE$aqW>q)rjZe+R\ό4[`a+A7,fTH_ MZ!he`jH08)b.UgTҽ T@ljMC.HiVµP5k)DRȧs*5 ]@6j6'k18݂W$ycz*] XAY.+m)Vrk!y yiP\DZ]acUbGR8T+hVMkxۑt?2boA׻WDPMFIӸ]y"pVц.O*cp*N[Otisu8eze@Y/0PrmPo" v{rnA/\=lԀIɪRRR9xլ0:'xj)fV!uVfRJXիqvozfb C0eR: Tj2U 6 ~J=>]W J|O~sX\R3UmZ$\i C GbeIB* [j^dɋjP%QhWd:[܀A QdX*ժbJIգZr"n;e{$SqςqZ"l-R-( _!KwRRԩߐC˛ /Tc|+swz`E&0|e=TT9W"0uGs憛oV a"}; *^O[g SW%)U$Rd [H@ts+_m b A.GVDJٝ -D=ɡ[uoWۖ' T^b4zum>5O,:'!UYpOs=IAk,sf^Ŋ.^ZUS()IX͚_ʧfe4Ω~uhA ĥg5򬐷0bDhA$֛\UPVKݘ9 yBeñV4[QVj5doj&Te*+a;fKv1+#åQjKW+-E!TEa*"DU*hQgT.' lsg?5ba"#mj0V54yb%uJ|C@_ 7fNWQ·~0¬"&݃ZD}҉֩-)׊uGV'фJA1+gZukgS#)gS?\ꢻ6;#|b$hR|Z Vl5Rd4ncvC/B|QG&-Cǀ(Te*.f>,t1ЬNZM VXiue .CR]7Ԗ5ˆTܛNO3xz#p՗]40?F,jfrӴu~=@e.j2ƫw&155=PCpr$.W \DUD6o ,!L5 shUmvD>mUX5V\ҁU{W g5FǛ U $I̦j$ŝ" )ȳrvMR/#+B,=7.F>o*ب QU.\צUORV QxAjzIJV3-p̺.eW^uEzWiu[uH6lbⰥdO-klZeW oHpxU( qmэ _ur}jr]VL WX+,wGZu-ka"G_Qu(/'&7. 2J( xA4݃SUT7O¡* (LQU$p*5 ԭl,][: UЫ(^~BZEc֝g+SSuJsV&Ti pf](T@$}UrP]SQӪS,ϲ{uC*- ǪJK<8*UE95V]5`})lU>e@ 5 ۂg? lRr Bm ס\EN\9O , %ҋ*v\ɮYy#c"AJVkl+n%WczdoKQ;%z;E%*|W&hT1IXqS 2*ovhJ(WB V~\Vހu)l'yGaŕVÖ n?’׹7L,೵ZR7*AJmlB bW@mLe-9UNsQВ`/JIN2/ª88ߦ rqK묨SkՓ `VZxAU*ހu)de a+ \܈0xi B b/ ,% u7+&ӝwH #]~TɤT2#p +[j:d\_ l-Gaku@1Bp]&+{oEO<NeeG&fKs(U + O@˂n [y1hU*HaP289t_͐m۝[ 3PsDVʼnN>ʯJyʭt*WX`Հu)h--yiJxe܈@XIm[%J-.ȹ`Tl{^'wD7 @Հְ:6 1—*'lkrU}i$de'n;`5<5`}}(nSNjVT[[V[aammm XmmaO$-ީ=wukxjkkjkkzHx445`}(]іO/n6,O|&?IENDB`anyremote-6.7.1/doc-html/data/img/yes.png0000644000232200023220000000146412061426050020601 0ustar debalancedebalancePNG  IHDRasRGBbKGD pHYs  tIME;{IDAT8˥KlTuwaұ/1ŒQ:⢔Uƨpa-Ac41ƤBڦ-C[ iv^EIE |s|c2PA1ӓe=FڋI;dxr֥xW޹Dަ2T ^d8y ]WS)LAiMՓi 4;In?EN""Ym.IKt6mɻo1tpyk]+/hsکccmy Ě_H-ihg0=;ֿN*XHU᎜Dj VQcp 9}h??H7q`UX1'NVc&S38ʥ#v]UmhLjQ%W-m7*Zvb|8O]m̞b4zVpKI 2ٻ(%Xkt$x!~>c]zyI`]nYÄKX;$nᛉK`%.zvV%9?GGfqBŅ)/2/}.Tilq a $"I.y,3}OY9Xs%4f6R+X\ԼpDW,IGю!="],};LςGUQ|uIENDB`anyremote-6.7.1/doc-html/data/img/bg-sidebar.xcf0000644000232200023220000001447512061426050022002 0ustar debalancedebalancegimp xcf fileBB-u gimp-commentCreated with GIMPgamma0.45454999804496765gimp-image-grid(style intersections) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 32.000000) (yspacing 32.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches)  0CKanten       $#/?O_o/?O_o/?O_o    "@i!,} $U &_ ' )i*J+@,J-i.. /_0/U00}0,111i1@1"1 1                           = ="=@=i===,<}<<U;;_: 99i8J7@6J5i4 2 _1 U/},,ٜi@" $                            }}>> Hintergrund     '  +7  $ D d !1AQaq!1AQaq!1AQaq?_!$& ( ) *,--./0011211!$& ( ) *,--./0011211!$& ( ) *,--./0011211ݿc&!ӂ& $: & 'c)*+,-.c./0:/0&001&1c11111                        =====<<;:9986 5 4 20-=====<<;:9986 5 4 20-=====<<;:9986 5 4 20-=====c=&=<<&<;:;:9c987654 c2 1 :/&,&c$                            }}>>Farbe     % %1)9IYiy )9IYiy )9IYiy )9IYiy rrrrrrr r   rrrrrrr r   rrrrrrr r   rrrrrrr r   rrrrrrr r   rrrrrrr r   rrrrrrr r    r    r    r    r    r    r    r    r   }}>>anyremote-6.7.1/doc-html/data/img/bg-sidebar-red-top.png0000644000232200023220000000145212061426050023345 0ustar debalancedebalancePNG  IHDR2)sRGB pHYs  tIME otEXtCommentCreated with GIMPWIDATx?hUW{DEqIѡ)1EfG] $fsEJD3EA偓Xh|yyPh9LsYrVS&ݩ.^婮] ҾiSV_nQt_.۶sϞwAyc` ]Oݛǎlٿ:̥f3y;z<{Ç_jY08'O;cYyPjN :?Sp{zRt(ƵT?͛3<Ũ :G'TFة/;xrD*FR廑ۡ@ K~Dޜ=;㴠@)zL :ivJL^ PGZ$4uA"Ԓ_$I]"P;ڸ17vL?zf.P?ۛw6=c?t(ښ5iGqP[Zx+W :oRA-Z$P.A⵵ :| t@AAt@@Att@At`N+m*IENDB`anyremote-6.7.1/doc-html/data/img/bg-sidebar-old.xcf0000644000232200023220000007530612061426050022556 0ustar debalancedebalancegimp xcf fileBB!O gimp-commentCreated with GIMPgimp-image-grid(style intersections) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 32.000000) (yspacing 32.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches)  #b|g|rahmen      i 3CScs,<L\l| ,<L\l|  , < L \ l |  ,   " 2) 1 4 5789:;;<======== >) 1 4 5789:;;<======== >) 1 4 5789:;;<======== > ÃP*) v0j34j6P7P8j9::j;<v<<==P=*== >% ( ) +,-.//0111211111% ( ) +,-.//0111211111% ( ) +,-.//0111211111*P %v (j)+j,P-P.j///j00v0111P1*11                        =========<;;:987 5 4 1)=========<;;:987 5 4 1)=========<;;:987 5 4 1)==*=P===<v<<j;::j9P8P7j64j3 v0 ÃP*)                        111110110//.-,+) ( % 111110110//.-,+) ( % 111110110//.-,+) ( % 11*1P1100v0/j...j-P,P+j)(j%v *P }}>>dunkel&      #m#y#f  - = M ] m } ! !!-!=!M!]!m!}!!!!!!!!" ""-"="M"]"m"}""""""""# ##-#=#M#]  !#$&% + 1 7< '(*,-./01345689:;==?@ACDEFGHJKLMOPQRSTVWXY[\]__abcdfghikkmnopqs!"#$%'')*,,./01345679:;==?@ACCEGHIJKLNOPQRTUVWYY[\]__abcefgiijl "#%&'(*+,-./02356689:;<>?ABCCFFHIJKMMOPRSSUVXYY[]]__acce!##$&'(**+-.012345789;<=>?ABCDEFHIJKLNOPRSSUVXYZ[]^  !"$%&'(*+,./01244579:;<=>@ABCDFGHIKKMNOQQSTUW  !#$%''(*+--.02244679:;<>??@CCDFGHJJLMOO  !""$%&')*+,./02345679:;<=?@ABCDFGI !"#$&'()*,-./02345679:<<=>@B  "#$%'()*+-./12345689:  !"#%&'(*+,-.0023  !#$%&((**,   ""#%% + 1 7= ?Atuwxy{{}~mooqrstuwxyz{}~fgijkkmooqrttvwxyz|}~_`abcefhhiklmnpqrtuvwxz{|}~XYZ\\^_aaccffhijkmnopqssuvwxy{|}~QRTTVWXYZ\]^_aacdeggikklnoprrtuwxyz|}~~JKLMOPQRSTVWYZZ\]^`abceeghjjlmnoqrrtuvxyz{|~BDEGGIILLMOOQRSTUXYZ[\]^`abcefghjjlmnoprstuwxzz||~;<>?@ACDEFHIJKMNOPQSSUVWXZ[\^^`abdefghiklmopqrstvwxyz|}~5578::<=?@@BCDEFHIJKMNOPRRTVWXYZ[]^^`abcefghiklmnpqrsuvwxy{|}~-/012456799;<=??ABCDFGHIJLMNPPRSUUWXY[\\^_`abdefhijkmmopqrtuvxyz&()*+,-/012356899;<=>@ABCEFGHJKLNOPPRSTUVXYZ\]^_`acdefhijllnoprr ""$%'()*+,./11245679:;==?@ACCEFGHJKLMNOQRSUVWXY[\]^`abcdefhjkl!!#$%'()++-.012345679:;=>?@ABDEFGIJKLMOPQSTTVWYZ[\^^`abce!"#%%'(*++-/001346779:;=>@@ACDEGHIJKLNNPQRTUVXYZ[\^  !"$$&'))+,../02356789;<=??@BCDEGHIJLLNOPQSTVV  !"#%&'(*+,-/01235679:;<=>@ABCDFGHIKLMNP  !#$%&((*+,-.012456789;<>>@ABCEFGI  "#$%'()*+-./023456899;<=?@A  "#$&&()*,-./12245689: !"#$&'()+,-.0113 !"#%&(()+,   !#$%% + 1 7 =   gás8 ׺} ׶ԬVӥҞӑјxАMωςm{}~~tuvxyz{|}]mnoprstvvxy{{|~ fghjklmnoqrstuwxyz|}~&^`abdefgijklmopqrstvwxyz|}~KXYZ[\]_`accefgijklmnpqrtuvwxz{|}~ePRSTUWXYZ[]^_abbdeggijkmmopqstuvwxz{|~uIKLMNPQRSTUWXY[[]^_`acdeghijklnoprssuvwyz||~}CDEFGIIKLNOPQRSTUWXY[\]^_`bceeghijklnopqrtvwxyz{}};<=>AABDEGHHJKLNNPQRTUVWXZ[\]^`accdfghikkmooprsuvv45789:<=>@@ABDEFHIJKMNNPQRSUVXYZ[\^^`abcefghjklmno-/012445789:;=>?ABCDEGHIJKMMOQQSTUWXYZ[\]^`abdeghh&'(*+,-/01245678:;<=?@ABCDEFHIKKMNPQQSTVWWYZ[]^_`a ""$%&((*,,..01335678:;<=>?ABDEFGHIKLMOOQRSUUWXYZ !#$&&()*+--/01235678:;<>?@ACCEFGHIKLNNOQRS "#$%'')+,,./02346789:<<>?@ABCEFGIJKL  !"#$&'(*++,./02356789;;<>?@BCDE  !"$$&'()+,..012356789:<=>  !#$%&()**,..0133567   !"$%&())+,..0 !!#$%'((  !" " ( -I                                                        }}>>hell      $2$RbXbdbp%^%n%~%%%%%%%%&&&.&>&N&^&n&~&&&&&&&&'''.'>'N'^'n'~''''''''(((.(>(N(^15 55-5=5M5]5mD2P[atb(b8bH                        B=;7 4 2.+(%""%(+.2 4 8;===================B=;7 4 2.+(%""%(+.2 4 8;===================B=;7 4 2.+(%""%(+.2 4 8;===================B=:6 3 1 - * ' $ ! !  $""!  &%##"!! *(('&%$#"!  -,+*)''&%$##!  /..-,**)('&%$$""   2110/.,+*))('&%$#""!   5432100.-,++))((&&$#"!! 877543321/..-,+*)('&%$$""  ;:98765532100/--++*)('&%%$""!  >=<;:99866532110/.,,+*)('&%%$#"!  A@>>=<;:98766443210/.-,+**)(&&%$#!!  CBA@@>>=<;:98776533200/.--+*)(('&%##"! FEDDBB@@?>=<;::8775542200/.-,++*(('%%$#"! IHHFFEDCBA@?>=<<:98776532210/.-,+**)(&&$$#"! LKJIIHFFDDBBA@?>=<;;:9776542210/.-,+*))''&%##"!!ONMLLJJHHGFEDCBA@?>=<;:98876543211/.--+**)''&$$#"!!RQPONMMKJIIGFFEDCBA@?>><<::9866543210/..,,*))''%%$#"! UTSRQPOOMLKKJIHFFEDCBAA@>==<;:98755432100/--++))('&%$##" XVVTSSRRPOONLLKJIHGFEDCBB@?>=<<;:9876553211/..-,**)('&%%#""!ZYYXWVUTSRQPONMMLKIIGGFEECCA@@>==<;:98765432200..-++*)('&&%$"!]\[[ZYWWVUTTRQPONMLKJJHHGFEECCBA?>==<:99876543211/..-,+*)('&%$``_]\\[ZYXWVUTTRQQPNNMLKJIHHFFDDCBA?>>=<;:98776432100..-,+*)('ccb`_^^]\[ZYXWWVTSRRPPONMKKJIHGFFDCBBA@?>=<;:99776442210/.-,+*fedccba`_^][[ZYYWVVTSRRPPOMLLKJIHGGEDDCA@@>>=<;;98865443210/.-ihgfeedbb`_^^]\[ZYXWVVUSRRQPNNMLKJIIGFEEDBBA@?>=<;:98765433110lkjihgfedccba`_^]\[ZYXXWVTSRQPPONMLKJIHGGEEDBAA@?>=<;:99865543nnmlljihgffecbaa`_^]\[ZYXWVVTTSRPPONMLKJIHGGEDCCBA@?>=<<;98875 @=;8 5 2/,(&# "%'*.2 4 7 @=;8 5 2/,(&# "%'*.2 4 7 @=;8 5 2/,(&# "%'*.2 4 7 @=:7 4 1 . + ' % " !  $"!  &%$#"!  )(''%$##"!  ,+*)(('%$##"!  /.-,+**)''%$#"!!   210/..,+**(''%%$#!!   543110/.--+*))'&&%$#"!      =====================================<<<;;:9876 5 30=====================================<<<;;:9876 5 30=====================================<<<;;:9876 5 30 ?rqponmlkjiihgfedcaa`_^]\[ZYYWWVUTSRQPONMLLJIIGFFEDBBA@@>=<;:99utsqpponmlkjihhffddcba__^]][ZYYWWUTTRRQPOOMLLKIIGFEEDCBA@?>><;wvvutsrqponmlljihhgeeccba`_^]\\ZZYWWUUSSRQQOOMLLKIIHFFEDCBA@?>{yyxvuttsrqponmlkjiihgfedcba``^^][ZYYXVVUTSRQPONNMKJIIHFFEDCBA}|{zyxwvvutsrqponmmkkihggfedcbaa_^]]\ZZYWVVUTSSQQOOMMKKJIHGFED~}}{{yyxvvussrqqonnlkkjihgfedcba`_^]][ZZYXWVUTSRQPONNMLJJIHG~}}{{yxxwvutsrqqoommlkjihgfedcbaa`^]\[[ZYXWVUTSRRPOONMLJJ~}}|zzyxwvutssqpponmljjiggfedcbb``^]][ZYYXWVVTTRQPONNM~}||zyyxwvutsrrqonmllkjihgfedcbaa__^]\[ZYXWVUTTSRPP}||{zyxwvuttrqpoomllkjihgfedcba`__^]\[YYXWVUUSS~||{zxxwvutsrqponmllkjihgfeddbba`^^]\[ZYXWVU}}|{zyxwvuutrqqoonllkjihggeddcba__^]\[ZYX~}|{zzxwvvusrqqponllkjihgffedcba`_^]\[~|{{zzxwwvussrqoommlkkihhfeeccba`_^~}|{{yxwvuutsrpponmlljiiggeedcba~}|{{yywvuttsrqoonmmkjiiggfec~~}{zzyxwvusrrqponmmkjjihg~}|{{yxwwuutsrqqonmmkki~}}{zyxwwvussrqpoomm~}|{zzxxwvutsrqpo}|{zzxxwvuusr}}{{zyxwvu~}}|{zyx~}|{~i3wÅYʼnƢNJ\ ! 9v~;> ;> ;> 8665432100..-+*))('&$$#"!  :8776443310/.--+*))''%%$#"!  ><;;:98665432100..-+*))('&%$#""  @@?==<;997665432100..-,**)'&&%$#""! CBA@@>=<<::9876543211/..,,+*)('&%$#""  FEDCBBA?>><<;:98765433100..-,**)(''&$#"!!  IGGFEDCBAA@?><<;:98766532100..-,+*)((&%$##!!LKJIHGFEDCBAA@?>=;;:98765442100/.-,+**(''%$$#"! NMMLKJIHGFEDDBBA@?==<;:98775432200/.-,+**('&%%##!! QQPONMLKJIHHFEDDBAA??>=<;:98865432110/.-,++)('&&$##"! TSSQQPNNLLKJIHHFEDDCBA??>=<;::9775432200/.-,+**((&&%#""! WWUTSSQQOONMLKJIHGFEEDBAA@?>=<;:99875443210/..,+*)('&%%$#"! ZZXWVVUSSRQPONMLKKIHGFEEDBB@@?>=<;;98876543210/.-,+*))''&%$#"! ]\\ZZYXVVTTRRQPONMLKJIIHFFDDCBA@?>=<<:98876543210//.,,**(('&%$#"`_^]\\[YXWVVUTSRQPONMLKJJIGGFECBBA@@>=<<;:9866442210/.--,*))''&%cba`_^]\[ZYYWWVUTSRQPONMLKJJIHGEEDCBA@?>==<;:9866543210/.-,+**)(feccba``^^\[ZZXXVVUTRRjPOOMMLKIIGFFEDCBA@?>=<;::9876543310//.,,+hggfddcbaa_^^][ZYXXWVUTSRQPONMLKKIIHGEEDCBB@?>><;::9876543321//.kjiihgeedcba`__^\\[YXXWVUTSRQPONMMLKJIHGFEECBBA@?=<;;:9776543220nmmlkjiggfedcbaa`_]]\ZYYXWVUTSRRQPNNMLKIIGGFEDDBAA??==<;:9876643qppnnllkjihgfedcbb`__^]\[YYWWVUUSRRPONMMLKJIHGFEDDCA@?>>=;;:9876tsrqpoonmlkjhhgfedcba`_^^]\ZZXXWVUUSRQQPOMLLJJIHGGFECBB@@>>=<;:9wvuttsqppnnmkkjihgffecbaa`_^]\[ZYXWVUTSSQQPNNLLKJIHGFEDDCB@@?>==:8 4 2.+(%!"&),.1 4 8;>=:8 4 2.+(%!"&),.1 4 8;>=97 3 1 - * ' $   !  $#""  '&%$#"!!  *)('&%$$"!!  ,+))('&&$#"!  0/.,,+*)('&%$#""   20//.,,+*)('&%%$""!  53210//.-,+*)('&&$$""!  8775442210..-,+*)((&%%$#"! ;:99766442210/.-,+*)('&&$#""  >=<;:98765443210/.-,+*)('&&%$#"!  A@?>==;::9866432100/.-,+**)''&%##"!  CCBA@?>=<;::8766543200//-,,**)''%%$#"!  FFDDBAA@?>=<;;99876543210/.-,++*)('&%$""!  JIHGFEDCBA@?>=<;;:9776543210/.--,*))('&%$##! LLKIHHGFECCBAA?>=<;;987765432100..-,+*)''&%$#"!!ONMMKJJIHGFEDDBA@@>==<::9876544221//-,,+*)('&%$##" RQPONMLLKJIHGFEDCBAA@>>=<::9876543210/.--+**)('&&%#"!!UTSRRPOOMMKJJIHGFEDCBA@@>><;;:98765442210/-,,**)((&%%$"!! XWVUTSRQPPNNLKKJIGGFEDCBAA@?>=<;:98765432110..-++*)(''%%$#!!ZZYXWVUTSRQQONNLLKJIHHFFDCCAA?>>=<;998776443100/.,,+*)('&&$#"! ^]\ZZYXWVUTSRQQONMMLKIIHGFFDDBB@@?==<;:98775433210/.-,+*)('&%$$"a__]]\[YYXWWUUSRQPPNNLLKJIIHGFDDCB@@?>=<<:9887554320//.-,+*))(&&ccba`^]]\[ZYXWVVTTSRQPONMLKJIHHFEDDCB@@?>=<<:98765443210/.-,+*)(feddbaa`_^]\[ZYXWVVTTSRQPONMLKJIHGGFEDCBA@?>=<;:98866442210//--+ihhgeeccaa`_^]\[ZYXWVVUTSQQPONMLKJIHHFEEDBBA@?>=<;::9776543210/.lkjihggfecbaa__^]\[ZYXWWVUSSQQPONMMKJIHHGEEDBBA@?>==;:9977654221nnmlkkihggfddcba`_^^][[ZXWVVTSSQQPONMLKJIHGFFEDCBA@??=<;;:986644rqponmmkjihgffedcb``_^]\\ZYYXWUUTSRQPONMLLJIIHGEDDCBA@?>><<;:887ttsrqponmlkkjhhffedbaa`_^^][ZYYXWVTTSRQPPNMMLKIIHGFEDDBAA?>==<:9wwvutsrqponmlkjihhgfedcba`_^]][ZZYWWVUTSRQPONNLLJJHHFEEDCBA@??==zzyxvvussrqponmlkkjihgeedcbba_^^\[[ZYXWVUTSRQPONNMKKJIHGFEDCBB@?}|{zyywwvttsrqqoonllkjihgfeddba`_^]\\ZZYXWVUTSSQQPONMLKJIHGFEDCC~}|zyyxwvutsrqponnlljjhhgeedccb``^^]\[ZYXWVUUSRQQPNNLLKIIHGFE~|{{zyxwvutsrqppnnmljjihgfedcbb`_^]]\[ZYXWVUTTRQPPNNMLKJIH~}}|{zxxvvuusrrpoomllkjihgfeeccb``_^]\[ZYXWVUUSRRPPNNMKK~~}{{zyxwvutsrqpoommlkjihgfeddbba`_]\[[ZYXXVUTSSQPPON~=97 3 1.+'$!#&*,/3 68;=97 3 1.+'$!#&*,/3 68;=97 3 1.+'$!#&*,/3 68;<86 2 0 - * & #   "!  $#"!  '&%$##"  *))''%%$#"!  -,+**)('%%$#"!  0/.--,**((&&$$#"!!   32110/-,+*)('&&%$#"!  6443220//.-++*)('&%$##"! 9876543210/..-,**)''&%%##!  ;:98665433100/-,,*))('&%$#""! >>=;;:98765432100/.-++*(('&&$#""  AA??>=<;:98765442110..,++*)(''%$##"  DCCBA@?=<<;:9876653311//.-,+**)'&%$$"!  GFEDCBAA@?>=<;:98765542110/.,,+*)(''%%$"!  JIHGFEECBAA@?>=<;:98865443110.--,+*))(&&%$#"! MLKJIHGFEDCCBA@?><<;:99866442210/.-,+*))''&$$#"! ~ =:6 3 1 =:6 3 1 =:6 3 1 <95 2 0             }}>> Hintergrund     c,cLgXgdgpdXdddpd|ddddddddddee ee$e0e<eHeTe`elexeeeeeeeeeeefff f,f8fDfPf\fhftfffffffffffgggg(g4g@gL                                             }}>> Auswahlmaske ghzzzijZjbjjjrjzjjklllllllmnnnnnnnopppqqq qrssssss#s't'u'u+u/u3u7u;u?v?w?wCwGwKwOwSwWxWygyoywyyyy<|( #/ 2b3567b889#:::<;|;;;;;===========================================gկ|< $# '(b*+,-b-./#//0</|////0111111111111111111111111111111111111111111================================================================1111111111111111111111111111111111111111111111111111111111111111================================================================1111111111111111111111111111111111111111111111111111111111111111================================================================1111111111111111111111111111111111111111111111111111111111111111================================================================1111111111111111111111111111111111111111111111111111111111111111================================================================1111111111111111111111111111111111111111111111111111111111111111================================================================1111111111111111111111111111111111111111111111111111111111111111===============================;;;;|;<;::#:98b8765b3 2 #/<|(      11111111111111111111111111111110////|/<.//#.--b,+*(b'$# կ|<u}}>>anyremote-6.7.1/doc-html/data/img/bg-sidebar-yellow.png0000644000232200023220000000522512061426050023310 0ustar debalancedebalancePNG  IHDRߊsRGBbKGD pHYs  tIMEnNtEXtCommentCreated with GIMPW IDATxO7;$.-i{H6Az) ))'bҋR{QX**^!C!6M`$&LfaS#s73ox*];No냙y SÇӯOC%%N* e0<$P|w?σ~?knIs>Y?L4n\fy)}'k${~WꯓQv~wz@1a,yV>$IW2@qQdͭ}|yA^?u|]1AbO7S~x&EF}ɭ__ysP]I.J _pBN齹dSI|eF}x4<[Et43ŞgI>z_h#Y@vN3>-Pjp0mGqP_xSt(?t(^@z ū :?tt@At@AAt@@Att@At@AAt@@Att@At@AAt@AAt@@Att@At@AAt@@Att@At@AAt@@At@@Att@At@AAt@@Att@At@AAt@@Att@At@At@AAt@@Att@At@AAt@@Att@At@AAt@AAt@@Att@At@AAt@@Att@At@AAt@@Att@Att@At@AAt@@Att@At@AAt@@Att@At@At@AAt@@Att@At@AAt@@Att@At@AAt@@At@@Att@At@AAt@@Att@At@AAt@@Att@Att@At@AAt@@Att@At@AAt@@Att@At@AAt@AAt@@Att@At@AAt@@Att@At@AAt@@At@@Att@AvA P Yzh(>y+@A_ Pz{9+@A%%ɵw,%}jdtPtЇ'͹tW߶꺮[:4Lo($GFoXJ=73Y:wodޜez>#I{!Y>f(1IR/<7^ Pw?qth(Du]yNv%tf!+@)'$ en\]O=I=Oͨ_`#Zp&޼1|<#mPRлv~{9ߛ̿jxrPB7cԓd`T3X{7}lƗ_ HpAkvz/OH[n{d@ߗRuMoml<>x,ׯMɌ_RxLJ3>eM(1Ya鴓mq;~p hIENDB`anyremote-6.7.1/doc-html/data/img/bg-sidebar-blue-bottom.png0000644000232200023220000000150712061426050024225 0ustar debalancedebalancePNG  IHDR2)sRGB pHYs  tIME ,tEXtCommentCreated with GIMPWIDATxkeOjUl8!Oz <) 8WpNmek6]6uzG^7<(@Ѫ&At@@Att@At@AAt߃>}/P|7{C+@A<[JzkC+@A_Rݗz~1[J\i (9'׳ƒ@AiLHs" R$g_j^kwR~I~d{UPdg9r3(1I$#@A?1S'zv~Yt(.I=y|+[[҂ެ ǒ$aNPZГSyQۖ`Fѳ>pn!?-=lz}U@)A`V<=OM;6rnn9(!QNIrX.ʙc]]onz-g_2ܘ5`/=I.痲հNHs,O8PX5kT+K^zw{\Yh[J ŕn0n Vj:xSŅ=;'ɖ3bߟy7uX*~Oޚ|:G/}xi<<+yw{9TNZwݲq1@ A_ۿI=In;[ݞ;Zzz)_7lޖ;?Ճ K9Ir^~_ [X[6gl00c3X&2KRz4;e̫Ԡ/l}/g YJ s9ܛ#>ΙQk@AkOɯsr},;Sius7~z_n˸IENDB`anyremote-6.7.1/doc-html/data/img/bg-sidebar-yellow-bottom.png0000644000232200023220000000136712061426050024615 0ustar debalancedebalancePNG  IHDR2%rsRGB pHYs  tIME "?tltEXtCommentCreated with GIMPWdIDATxOq3cv`(7E$A N\\8ss%rE))bl}xvy̯4nûoOSMN~0 ;; ; ;  ˸ui.:@rq&\q+$VH/ϬZ{#SC$f{}|m`ps7 V;;ܲ@2F6`9#5'9ҹȺhp7kE&X GD{DDD~dDlXz8"bT]ZVuU4![/hV/Zy.""bb GD{ّc>yw>O3c|9Cg>^W~U :q󫽿hmG&׸̾>^|G5 we˸GDۓQEsMFkS,XeMA#}l,t@Bq)ԕͲxb;D{_Ӫ*GG|Gw IENDB`anyremote-6.7.1/doc-html/data/img/bg-sidebar-blue.png0000644000232200023220000000534312061426050022725 0ustar debalancedebalancePNG  IHDRߊsRGBbKGD pHYs  tIME'o[ttEXtCommentCreated with GIMPW >IDATxkdYvIȏh,]Z(A`Aw9ۡ F=uBKI2i[Sy0XC-syA{73S$jP_d`#cCw Vlt񠝥L>H$94ܟ #WC6sqr.gN S2>t(f&o5snb$o=Fleii3tx}6k%;yxOV6J6\=ݭMAk:n`@A :nh@UA*VQ7: : : :: : : :: : : : :: : : :: : : : @Att@At@AAt@@Att@At@AAt@@Att@At@At@AAt@@Att@At@AAt@@Att@At@AAt@@M: : :: : : :: : : : :: : : :: : : :: nt@At@AAt@@Att@At@AAt@@Att@At@AAt@AAt@@Att@At@AAt@@Att@At@AAt@@Att: :: : : :: : : :: :: : : :: : : :: : t@AAt@@n PzuZ{ PzWv}aU{GV҃ڴJ'_-%P_n{h (9GGrΚ%䠏ldQb>6ԟCߓ7_ʙ @ Aߎ~N=Is~b0 Xv{зwN>5j9}l 'suknz|b޿66*p 5[3j]Ds,G2:},#_>WjaA|u'SԒ$<'/BPZ{:n]IL'ɖއsgsQٟy\[j]ߜQ\x{m穹>lXsgܐ? ,%}6'Wԓdemٲ=hAAgɼ7⿝u&'wdW4lo|ss;eYޟJoZTX'wrPjgw>s[J 3c98;ϽS#q?^?M|95hzRI+Mk5 |gGs&IENDB`anyremote-6.7.1/doc-html/data/img/bg-navigation-off.png0000644000232200023220000000116012061426050023267 0ustar debalancedebalancePNG  IHDRdfwsRGBbKGD pHYs  tIME*4tEXtCommentCreated with GIMPWIDATx;N@?E] Qx $Ecgvkh"9g {(mb8_N} .5)v;F]qx<=e9[T<O[%yj]. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   $+KjRT];X]vsO9GPJ)۶4q"5)j!~HMQu|MB9xBIENDB`anyremote-6.7.1/doc-html/data/img/bg-sidebar-gray-top.png0000644000232200023220000000154512061426050023540 0ustar debalancedebalancePNG  IHDR2)sRGB pHYs  tIME @1tEXtCommentCreated with GIMPWIDATxKuafSk5c/֗(hj lnvrb (w<?>7x;v3L&r]HOO ?Op3Nhj;X)+(FF=\2 /ГCVZ8sl-f vlmmfllloQocyy9Z]qx]ٌ;wnOkӂXX33Cѣ D.tHEVkׯ{wwf#2Pݎ_]jM݋>`qW;۷>tHM2SoD6gm| AԌěoDҥcuA #"}/!M͙XeI ExK刈ׂzSq@Tsl :('#"揳*1@k)F檠@FGE_/R6X, :ȑXm:X,Fg#@<$tH]ww@r@٬"t@AAt@@Att@At`/h߹ħ IENDB`anyremote-6.7.1/doc-html/data/img/bg-sidebar-yellow-top.png0000644000232200023220000000135612061426050024111 0ustar debalancedebalancePNG  IHDR2%rsRGB pHYs  tIME  !tEXtCommentCreated with GIMPW[IDATxMMa3̗1c#N6ecBRbkllB)Ȃ,LYq3W,j{Oog.=&G!Y}y^뙷ܜkE5qս/v .qH.Nfwol03ӎFTўh=h?}_߻L1tPv'7~|1twyqSדz߶e7kY!]Ƶt*WeOŽ?9).R+ĢQ,^st[߳s1xlM$jĜh|Iܭ1|/U qHŦXp9"xsBOG[J{t4'|;@ff$W;@{#J,N=QtKwm7 }ގWN7;@Z_;@Zno7 )C 9URӳVҋjqHNT ;@rj$Z. wq@wqwq@wqw ; ;\ʋ=bIENDB`anyremote-6.7.1/doc-html/data/anyRemote16.png0000644000232200023220000000100712061426051021331 0ustar debalancedebalancePNG  IHDRaIDATx^OKTQ;ԦE4EWhSm+$Bd)-Lkp2@!hrUT*[ ZHilj4CgΙ{,BL>{8qDPjq Z:w70c=gSoƀJ)oh3=%XD `([7)'j>+c }&v1z Kˆъ;3c ':nc2B87]-V 8k U|k.3V|&.t1.4[AfD%~鹑AN]탨|;7{^~| 'JSy;Ix2҅RJkfIgn7(gQU>[4%)Zpj%ӟ>""%$ h4+]zk[uܚu|VV1 IENDB`anyremote-6.7.1/doc-html/data/kanyremote2.jpg0000644000232200023220000005713012061426051021463 0ustar debalancedebalanceJFIF_`Created with GIMPC    #%$""!&+7/&)4)!"0A149;>>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;X"K !1AQST"Raq236Ur#sBb$5C%4dc#Q23!1A" ?*ɬTYuy9(rbkbfc}`-sdS hoʚ P,dg3.Rt#0G}Lr>toc7p׸oa;*L -e6%DIԵj,nyI{pJ_KdaP={׼T5zk &J^ cޚǽ0e%/g CXL_KdaP={WRx|0){<>T5zk &J^ cޚǽ0e%/g CXL_KdaP={WRx|0){<>T5zk &J^ cޱlޘ2_0 m|6!TulBWaF@! l|tJFFm"3ЉF,Qcakު<;$l~:SfAl nI͞GciۍLW&q-aov^ +dt;r07wv(N!S|cmobp͟h>ofjnPӓVYQwFD\vo'w9Y9CKR"f|.5ňSOIr. ,GD٘@ױ9̈́?OXۇ;"G$|wPÛGItmOzF#&9h2D#L=y+pFL&^|COSꆑ(mJJ_ ;SKdaP={ոW &J^ cޚǽ0e%/g CXL_KdaP={WRx|0){<>T5zk &J^ cޚǽ0e%/g CXL_KdaP={WRx|0){<>T5zk &J^ cޚǽ0e%/g CXL_KdaP={WRx|0){<>T5zkGE&0hZ%GGK1W!,_p?VZlgLaf(j p@D rGGKnv9rNdw:*䣢0h' ۿٷ( 0utN٠ev|l>|߂}?([O9hGA]уy- >0#q-sN>(_kJ)dSL2籞 ۯc̋Kf#+fʊrQQy:W.tG9nQ~+bG(Niɍf;IV4kWM܏,NW|wןlA]\s}ߔe_O^#-h?i-h?k:p:p繴qCNG[><[>EG!=b @"Os 9QyCtfVp-b/͐Ḽ$Ӟi|C>D!M3=޳oiN{8a5"?_5yO{t'9mPӛ/|#tf&gOAN{87?5yLlڰ[׵4繴CNs<i?i?5iӳ=͜0ӛ OG|'#tvtӳ=͜0ӛ OG|'#tvtӳ=͜0ӛ OG|'#tb3{m#h7OuӞ 9ϐyhғkuDl6q{oi{Ӟ 9yhCG]+I6t繳s!IOy9l↜x<>C溋]9mEG!"A]5sg4~EG!"A]5sh↜Ȩ<\h?k]9m<0Ӛȸ] sg 4I|ԱHfͯCEts 9c'1σCts8arqNjVl̦;oQnyab?ow*-29/m߼Ypt]ψ8 sZK[w.+wV~ru5ULK@ |g|&bmŷu3:(a5Z&lzk^kuy3*܅MN2)tUF4]c}[6=7`~$$wR9d?>P@$ fˮ2fACQUatue^,y{?=;A#h aQfYc(\nBgM'(|hdTAqkn,ٰ+m$ 7CןG9pÔ85w'o nVnq~ű1:jUQBm( j=; xn5űjlOSx[ns RHCgYTj*#ED2 ƵkesA&Ͷ{o 4dh>oTqɼImY﫩t1#C/ʹ0ۡt+=2b۟^FE^ٿ{k.Pֳmјy%fߧ0Az^Z*eUMH16 'x[~OUJ&K{FMf]&nh(xlB: )*u|FWI+7naR9oh#0>_-Qšήfs mɈ"hi%]g:ˡdoAC ݗyh+qz&*#NdK48dw{Gu+ ؋) ͓FTH^XK[cl] 446[Ac8MM=DUUmsM6J"PsFcg݆.۫x%Q:1XND2pl Y7]uFܵ暃+oәh#3o:ˉ6V5 pAI+vhPN-LX Hb/>[kv ^1&UTgcdmsa&[41OqFnzn4{ۿk|r՘$c.}#*LCس7(f>6T J(!/1^Ü;Wɷcvyo|r ǫ8EAe(o\8mc3Z :&ݢVvkEط`aXorbc#qWR Fٳw8y{2 p^YZA|qRI[5cbx- 6%%MTDŽ+=Ӽ- =7ivoqNۏXy:!G FFFujg01!ܽavs'1w6Ӎ6l]k7mn⚄c[iDO^ac*d?>6 zɧs㎢Hc1 6;u٠y֛{ǚj2f5NHj饏.}kXtz#?yAtdG4gihX΍yI:AG'8d@hXΎN;qyUҭv(6U:LDS1`#&kIUajf:-DlZ8)ujl$^ckch'hꥎnsĴt|c2W4 \v`;v%v+\ 5ь2]g_vgks[|bä}`kbIgmۿr-]3'{YSQۯ#chodCoBmq7^ҋm;=c*ÞkD:G;IzJ,QK$Τa}ɴw/e> }4nuF\͆ ./eO=B2*i$|l/|{ּ߈Z16|/s5\ݡ8ܱ4-|.a7{Ā~*-nT**t$hk<YmNEplmǛikZ?4™885]i>"t4TӰ)Z~ozh{Ղ ~#(`6J5֐_LBjѲ8cts[+A; %=NUF*X^YyNbqS1auk E;YJ̪#$/ǡW }+%McpCiqۻp?ӝQXS"r06P6sf)~[H߼nASD$&Arw߈^4,OG(+"5ɯ3 i[`Nѵz{i#plau w}NR>J=*TΥl؃[< ׸4ƝἄX"45l'd&i4q(+X5'AS(_L*k sY-pp}Qabi{!qkPyDlNl5OpO8q?^>\)(/PAPTuQ[Qls$b69w-p3sEPdoK^AYjZ#4S {NB#snp,f uL؃D-{cs pq Pe.^1oSl$AMMd驳4W56uwβN\Iޚ:;SEsSgY'zjl$AMMd驳4W56uwβN\Iޚ:;SEsSgY'zjl$AMMd驳4W56uwβN\Iޚ:;SEsSgY'zjl$AMMd驳4W56uwβN\Iޚ:;SP}'CVSgY'z-1Cʏ?4NS\o6#}K}7ӷCɏ%Uҭv(( ưO'nJ;l>{蠈GC;lk{Llz=U[9‚41+es%kng49r%'jj1*ZabFԥpa%%7&M sEB^~˩D6b$U=m=+#k8mN@)2DCGOPm=@IݼDdߓ==orԳbv,GJ[#!ayypmнM1D>9*5"s\6i>rmEl j`lc0qm] ?)v#ӳ$C c8ĒIF18E&ZH&6F5 {l}go=W'_U#NzʆT9[[5o`v7x>!1ŏktnc1k B޵F%a&wMs =t|AMMAIwM+qcI&ۻHm^x r~?4NS}^og拧\r:73A ߥZQγ:)ytʫS浦 n/qSO}6t |r!)n[p.4E #H|n{#]`I$ r`\7S85ՙ5>I$7R)UU Rg!|/`p7mF4~ITc&Ie-s/V0\6w=+]$ګb/aٷz\>l5khLAz z~T:͢2| ewv{x%-1o#4q]hZ @q!mFZv:T !Z6nرUQVja 9,ui?%lxv.`]S9 ,X콯 م2s <:Ga|f>7g{lEMڻ)`]=$%6̲ֆ4`-{D@DDq/k/sei+=F;q^etC#lrfe {湎SrL*ਆ3 UCd-i765Anr, ?GSUv:iZ?ָm,vAծƩaPK8&CIuwڦJz|2:<$&1i4<|2VCT㑆Nߚ7԰>nedn-{[܃LTRE]UBaQ9~V71mOI9AQLɣʦtqG>vEmWۄ6xE;LtcH -A۳fۨKN)ˣ5J9Đ52 K9CUE5kji#11 yIͽ%EWt%$XᬆH I0$i2͘.*~V=߉q$%bر q(Zl{ou`#7Xv;3Wa :FN ]ZﰝX||L6%U$5`bsA(4+)i飉έc-P %-85λ,̥rH,+Iinـe>t~8["sDzy sqf7۷O =4&+dny{KY(y;n}5srUC C ֻp f'xxØN͏dn0q`$Y>ͻa REHS!V\6۴-kZ,DžRD]id|#tH渴ğUXڂ̴S-LѶ75i$|Si_6 Y`sd?7fu!Lnn,~;:]mžgU͘|vm ճm6SCdf2\Hh ۳hۿbe%kkVEg/9[n/V de(-=3~VNV`.6&p#E#ﴙ]a`%׾ە(8d6h}gz~`mOE&˗4g iA i눍Xr0H $svz ~%KOOc#cisok 'YL66L0C,77u6H]rrQpn kc3# mUIcrvvaܠT5Fs23.ڬSLr@^]ca-C*^37.Woݛ|P\e4lv'WXe̵y׫ic.Ėovu/>fHI!,uLԲgvl :m\nc_G*uUsQ&V;uq 4ж'MM%LLk+2ij)}E+ccj 6GZ\֓abyl2٦k ěd$-{[~&>-=<j$&9ċ7~WZ9*e|Z SQ;3ќcwo :)瑹5әA,fSqmh0%[3/ZȐapбE` 92I!k Xfӳr q L2gk \{> "" ""ҳzY )~7D/~h~/̓95}߼3\&[OwV~yD]TD]tK.@D]tN(F=gU O,*eZINZ.'qٔt`|-vR oeabu.fH_ԇh:T9MSOO4L[(lKM-u܃vjK((j13(犦Yc`yty284oI Zˈ2⨎o!tް݃nݜ;Kk5U#OdO(綒mWO(ǟVc4qi6k^HpiuḝE~-Oi ?d33a{'e9A\*aU3 LG_3YkA٢݈,Z[xcţ&e,{ݦٮ3mu6MSISXj&kDbt-,Z3l~7X䕹Z6cEu^戮XKe{6sZ4v:&@ 56QOݴЃm9; {*BMyZ~Sd\8e=^ V$C$ֹ{MB[K5f ;GJ;ϕnC[l6 rKcQtllO 9C6Yd;5 mG6fsPvhZ[6l.;=7guoجr3 WE3ˣ!#Hp~ű : W?T$`w6rvs%'(*"]FAxdmȼw%ָJpAl EWSaTA8DD&%Ґ I$IZ1kMqqt$\ǸXs8;;?ag0VދTlCe47U<95=پCS/`C:6^Dt\=90RWI+dHG0].t%2sZ.\lSۋ(?p}r9btN۸xSV]9*iOQ_shtlC{C+\m΃ESp`ΎEbk\kdqp,ݍOıTTkS虔 nmHdaTкJoil&y,h6U5\\gOLS+KOXrt/g רx ~?4X/~h~/̓95}}h97}}Ma]J<*2 oAX@D{à"Xt=oAK7 "Y,ރă\O1ǥytn-/7$bifG݇@K7%xc+vzf훖l:{à,emam6,:z 堟xL ;:zl de ۓgSރ ,6XD^f}^f}C_9I}}.`=M_wuGN'Wg9ǘ i97}}**Jt214Jٗ{ZJJ,J g1-`H-qcܼKWC-l,V 7ﻆoB tOP6f,szֽïu ĩVCˤX|mx.go VR; Fs+MtՔZVB߶c|[fh j>uA; !k#!i76!~۠KUn5Ů{h ngHSˈAe8sh mN;#l,1U=x$nsݳ3k`+ JiktOT 5͵q4S+ehs@x͸qq̤v!Bf4.nEސGV 詰SӺL:N7+Fpr[O2R;ǹ 3<:fѷhٸ 0=iqMzA-u;)3&@ J~m;vsT#`#|~;VN*,JaHh.(7.u,Ri׶qxmȾƂw ᩈKO4sFύ?Z9pjDBIa9F-ϵlp)(1'802Mo3tliAD@DDD@F1gbsHۓAVTQGX3;)1?sU^2B}c%Pk1(m;䔑q϶`:h4)Z T!A_IRqlB$.,זX؂U 5d>8FG-CtMtlhhsqfDRVD-T l#.?#i#@)9Dn{γiSO D+6m\>hRrdc#iͳ޶e\ZX߉9c&7 p-#UQYQ=3]%Bd0:+VyEDGNY͸k眴 qrܛ0мWC#gc}I Hkr˃ÌK+b{'is\ۧg2bbqX lRF$dZ4؋~S}!]%&4fx ^,=bo )))ELI3\=V;cFûvgVRlF@GѕtI,lZ1[c檔6(e&@ im\:7-}&j u5`uKYI%8ke߱ stLjE})]3rњ+`b6e2.S} ͸!±9(Zنhj4d-v+JWTiGHKo>'H\̓nAv!B;if Bk57- PN*ʈ Lbi"/ 7fߚNͮ+eQɇQR˗4en/q~  _Lϼ/g4<߾W6#}K}/?}K}/?ҭv((X)s҃K=%.0Y=Lg3Ozg{G33ޙs w{G3=,ks&qr>&iog8gX#-ȫa6-3&qHm3&qHm3&qHm3&qHm3&qHm3&qHm3&qHm3&a;wwNA0`gw{;ރ`Lz9\/Y=!ps %/:|L}WyIKރѰnsR礠7=(åϑ= =b>0t|a AGH=b>0t|a AGH=b>0by$c@p(="3z )>D'~h~/̓97}}u2[\lz^܌E,S6Xߗ0i ߥZQZ|vjZz G?9 uxӹ͙k؞ߜ -qk+pzvT2Z*&29skW2Q UC\X3{$˘[#m{$#ZڢDbK'ˀ!H^b K(%1I"xaiqm`/s-mG$j'YC_يM\7`ܮM }; "!l[1;Pl+ӽ#sOAk# :7&|f&:CF58mp7bt3v[ngt#zRֺX `/_o08PIW83yH\ G()SNY,E)c-mi-8 _%3fuFK4Peѱ5\܋\7bnNKR43g29t@`wރa/FIƸ{1̿6bZSPQU40˴Er.{jp:= 33 ..k˵ن[ak#噒62KL_vgg뼋s@A8]3QlHnjsE惴Z=68ߧyҽѱ -9QU-L #Ӕ6=o:٪$ĕ+\F# sPv-dP:V^;(;8,y˱(cbdcY =ޡ i;..wmT/7W65:nvkoneW'elUqF,S A\,E͈/PcVR2)IE΅Z-ۯ}B ubdqhq .P7nTt8t5r SĮc9潬C.$nIPchmHxhiڃ`Rͨ.ݤ_(%ٲ7PPZ &5Y#4ω㕮I٘\{rv6V%A|58 Ho!s9YW8Dn O͕59Fܣpd1j)(w6mW ؅0Wrl6*a )M9=' 'Ivb1wo.5OS)&$[lo)ݱ*y4ge:㧨xF=FX^98lB]XIKQ5M<+9K5}g}Pu, Գ)QZK8Béi dc2|ۘuF,o❀+{wјlv:%*ikJbtqNف /;azkLMnLΎٳ{urY>n`6ic}geMon}exH0"!e`.VCl$HcvWθ;M {@'PFmi>P:>VHuzVrz2jc9ZBI0 GemwNژ`n]ŤݱcY=py3{s4<#vV -ks9y$QdwXcuZbj.Zi&kL47[h\N .uz5pݦ;Y5sf! Hasd|cl,{oRJ${^qm=P\ ;1YmDNxcI$sMlUôB%#;6|kܩ]LR%k@ ֐O ηt ')t ޞ=1I-#U}/=,,i-7m;,Px".sCXU݈4E)kKq 쮸'}nYE$o2,mX tBag"q,_RCIn?&V2A9~OYmQ-sCmn|ZiA& w׺ |6mWk]'gIyF){Yv~J#6 O1(,:#/w51 -iD2\kܻn n(ѥ6۶/z imD-sC6p#[|>M8HEE~lGɿ_+G`X#Sѕ5pMwV~XE$vxYX/ U5^y,y\2g4hpA'~hrH]?{_(%ZnJG]-wV~TDDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@SR1I&v`wmMDl ֆb].40,M =K#aT3A͗%>>wAPݾNN6l:gٔ\NrI.n 'Å1 !o Iq A ]CvAm `,6*g=)Res6wz&et lJGS{~A#Fc}tE-dcL5NJCRŤ+_Rd=%,ziG0?1 c_ηwRz&tԵk̓ѹ-+auwMTi#G085CR>/TRz&tԱ40,KSp93S)q-fft@$ 6{֚g0 5vhlck2 vBpU5œhlvoŝ =K~bt =KCRĺ]CRXbмHi ruC>㿢Lc/t__(%_:īibAS$l캗xnU?RkƔOMĞtKR[zO">7zoq'R[;1OMĞtIԖt/oq'>7u%>tIOMĝIlO">7zoq'R[;1OMĞtIԖt/oq'>7u%>tIOMĝIlO">7zoq'R[;1OMĞtIԖt/oq'>7u%>tIOMĝIlO">7zoq'R[;1OMĞtIԖt/oq'>7u%>tIOMĝIlO">7zoq'R[;1OMĞtIԖt/oq'>7u%>tIOMĝIlO/H͢kи/M}n$'ۦNvc{Wt̚WM˂'ۦOM}n$Kgb:wWMɭWt̸/M}n$'ۦNv#{Wt̚WM˂'ۦOM}n$Kgb:wWMɭWt̸/M}n$'ۦNv#{Wt̚WM˂'ۦOM}n$Kgb:wWMɭWt̸/M}n$'ۦNv#{0\.q7.ڋAntWe/*:TՔ{QMϋ̌bNV:5Ada!)zUjCu JMQ%aФKQ @|6 0Gxcb׳usaj GUj@&X)A,2s@үDC߇8q[x=w PBvli>r(Ѝ|`TհaPXRQ%4t(Nٖ/8\; TR j͇['_ٟ!P5f=$m* g|ת$`Jfp#Q2bqv3$t 4%΄OC/"S|I) J A",n$bO]?"6) eE,9h<ـz/5A[mn곪ۺl%IĩP m&F_%0 V))e$>C$CIwg0knҥ9Z \Z*›%1jba@3q1HG:N$rmGB:-^"b0@ "@eMK3@$9=Cǚ`&T9|!adJWKҵ.Cd])$:<FO2ܑFK(e5ϊXv=|IK֮J).c<CB@4~ η Q@Դ!liiԪ,5iNS}DYجV.ո""NfDۮShAi$i%@I!JQ;^mD\& 9A!q'[JLձ%=zqk-feqCWd^Wm$}ard:DԔX{<ѯ戙ҥCbљXs _c!,( $Gy->JxV4LUո/ɐld1#c6S@:Z4Ck`:w(,8Dۈ(2{Y64C̛f|qZi%ƌA2֟;#댂&ݴ'|t63VE|ݼIq*ŬivzlLsveWv <44π2Hsxz5.1$.z_!㹺ƥiJEouIjj.Uq2UG*L$cDˊlj W ~U 6Y!*  MO-d9+F1i9`V :OMu&I+n"0y >H҇bW]eگޖg%|lr.PXVɼV/YW!^ 3_=~d"w1rz"+l1)J t )dTFj׈qBE6.l+lV/ 65"nzezҘ/މ+<ۜ$oa;tP.C:ħ`ř ֫&5%L,n{|hD5T%U!~ T,IoEPm4yhvK{F 6*7ATRdGsCk`Vll4,4NNɨ#x'ϛ:xAy|B(gڰA!5ć{뀅G.&ݦB_#lg Vb6%?;9| `rJץ6lke8Wjz0O#[> 9Ѐ5^J4a@az)6B*{;)K2a4/}ɤKmXDMbyR;}&Uxv /|t ]UcN/.y84f IkyyWz3Y>5n'n$3L> RP4 Co BʙIZI+I~Dؠ2 leإS_\F ǚXZ$lR?e|Xd$hJ݋~GSgKgM~,'x?BSlCs!} ZdDBt TI\=d$z\. ʙr^TCJ2,6H.UUaɖY>* s9fs+k;;.>!K}1(%,alSXg _1ħtU-:Ne)8_Hr7;\i*cN Ѿ)({{(W]^1 4<'x/ZTxɤ˾&ؙ M\ўqFEZD]A@ C|pp1u$m$n7ZkXb׏{L^+  KA^ ^q ))3f{YMpsy_/d$qu/40'xw9blU cQ5nvjV8vF\NVռxY (pE!'x)(1a3ǦІY|UT K@757c,KAX p.4UtbX/li0Z'vw4Rpkݓ O筤ذcQM`۠_Le]4ϻlpuz3XT XI^IкWC3,]Y,]Zm'qۊQqKZ؈uO.7[:Vj0?| NQŨ_b IpЪ-)5u 9[2|b%-+sY /+ ^9{mZP^=yN] AOUH Uf3?íȥ*Iv{CdoiC qZeI5zO[0î\2M#z`#|4i8>MS]c{Zن/tdiI/iӑAA 9`|/mH B;/7 Aqb6v7qvL.ƛ=R=ˑu3f?!vzzCJu6e>*نc=I&?bXR ®hMn];NftE?` {hfm/,of 瀾`'xP16)]'x=}u09۶-uU]xp[[ɿwGDfXu$'m؜o (>}}O]k<zsvvĿrKt֗W_}Ay)=A+Tsn(MqP`ou^DEA#1odn+&axrD mg8x$FDNzKǨ Kj<^Z>/*+Wҫ+//O~AOzE N Y:Aqjק2ͪ>YX|ϖ'=pmmZ*QT`]e"Tmo{,oޑ .}.4WnMoqyUMxœZD+,_I??>ڝO>=.g1,<,Փ뽘%{¦ѹmI_J:}!mnH:uaοK}o'4L޼Eo~n%}ݻoZm:_{&K^IOH9ɛk>Ç}AC:J7J@ifˀ[PR;lH$ߋaogNԺ\Br[J+ݹsgVyw~Cu/;p?Uh1?O_~  qN!E|H2j[%ԫ7=2DwXtMKmK$UOeLıF/+.qn8 UM t޻GTxHtW靷8xQ~yx~'6v FnKK'|]aU\ŭM'ZPBe`6#bC -M%m6}]kVaTI7=_Go~/Yx-M:?O΋s 5^X( r؏ Vиgfg\4nnq oׇ]6 s;Hξm>s3غEbe8Y!y+65欹R:*ܙ"UCJ{:TȗtA\nvm'n* j+W M{[MGI'y}!k.&4+E-Ib"0=u#*Bӭ[>l j[>Si6KQ5CryW ]kr8{{|6I,7c쨮;OUVBB IH blNx|If&3q?f2q8,1``V]!KEnͩ|VnF*{:,$fv͚G@PO(w n*_ DLK  7E.{kBsa7Pkq iGZN`t:;ZY+`*XE%*- pYʤT 0HGX:VA2`9;Jz3@'vk->sוp0yd(W*P(0yX (q܇HT_!(!I QswpLt] /<"|kYS s"}"OI*pkjE>T {.nI3 }2d 4BЊWA/%@F $rI^3xUs/Rl:c+5ξζ) O8 A4Ò4Ugth#e&AiŋH(8PXDo߾w```t2k]]ޢIbX$BN ?.”)aѹS@kaMc* ӰèA !G6Bqƌm4= UÕ8|04];]pGೈqg&*(Yku9|ѳ5RD׋n¶sNغu3Ӌs.0|N.&jN^((*2hlɘѓ3sid ǟ54:L wfU@j$KKVȑ#@G`?8QM#ȣ`Ӡi=3w߃W^y Au#B/#rP)\upۺcu@GgW `3`s8AOW;/3d!Q ܞײ5l!aӨj60J@betK#/[z!cT☭KHqJtJa.鸓&N+"w2]P:|߆(*.$H82yx {l}h 3S_g3Ov`3-Ǧ Äχ"Jx@ ={]PYc[SQU4ah`4>fNJ%m;v{mtTu"pi;33irhPXg<겪ј$uT0+f׏01aUAk!v) L,dSD ia6Zaa <H=GZeJ׬ND79o J/ݤ@* @`i^Onk%ִ橸7_6/)6uy+%uB3T6Lб X$Jٌ\DV|mADYg s4³]6eq 0X\^tUMg^z}M}X8kL0uSVLV,Nԋ}wO*y r:fΪ!qJܺ]أ,vi挑;nNJ lz̠G~1RݢDklh rm7'.Κ;  }x_~~a}˷U ɸбzFCtxγ_2|w~~˷mYM 6lhy ÅKXטqx%IB9Wsu^Z.f$YSpCA2X6\~`=2^QSG>=圁Z; D7Q_yl,꜋·0PMFkazmDDht}ŢoشJ*咘΋ Wg)pof[xUD ZkvRubrbG=ΏywT>\u[:C'IC`3kBx } 4rxj6rR ,8~ꢉ:nko~H ŸZL5olN]@_+ZZPMf!6P;@!=䴄G{(JR`5; abuV^ov NS\S%tdjC à8OY[u#>99,kl2ڳn*-4ҎQ`r'k((HKq~bxiҙjkj) p"ׅMzgdW9&k-< {ndq$T؏o .6S-dZRH]jBMjRP~h5f5hI,ogӗ$IDJf5zٖ{l[ɵ.-yP-bX(H Bqǖe"%^@Ϲurd-$q%B z3WAz8= h;>qh?wƁĽFZ!&@OW7K+?K(fWRr$ʢB XMM ܊RT} ͼ:B.˗b_ o:K`}U>N4-6Dnל'}N0Μ;B2Q@8k}UF¿ر{'tucіMM&y`H;,¥O5tvw 솩^.5SADx߄eKtjkESZ3r&I꘦eXۓnzg%ק Uۆq50Xi̪C۽+E(!#On4;r?[؆>&2%fM fϰ$s9ִ} j_6/n,%y<+?C鱪hOOy(y|u'7[jrEn3ګ0jF(uτq=|ޙ=s$=vʜvd`ZZZdYq[B/iʫ XiEM7Ԇ#0@wt[79 \ qf$ڪ'WI :oФ=QevKNYB]!e$tŋ Q6CAM!qpEdl~8//p)ی.>< ?G7 cxeZ0Ǚ񢅹-,͟;ẏO3N2;6!x I={ó~.T"x[PB{/q_\/Q LXyR%[pySpƎC{]Pڒn1bڥD 5k;o피$sj l"Lνo"DB{:,`!F45Μ7X ryBzadkFŭW̮0UJO?'djRJK:mj.>wÇ7-< #Zꔼ.>줂 '}MWVڼa4c uWlx} }֛?u$߶E}4 |]O o.I:iw3jb]٥SJ\"PH,h[DeT7ۨ<YF6V̩k身;rŰi #~P9 'd-^$uTvA:f&,4Xf4c$ٳ  75%Mgϟ wSJ--(;l_RYn`"Z5϶ Q\ĹOɸ$v~KP#Mw8 ¯Μ?{ .T-;/+Qmp|*!uON$')1;Q c/yPZh$|DR[oi̋ #YZ937P깫n\ԳF$1 ؒ8gvu%+Vgsgϛ:oSdǍE6oH`3^EZvC >kJ[?kލOksw<(sC$G)vǮȯ;{g Gل&sYK oQQp75h`삓'6s.Nq"=%nr@c1:wբ,@8:g_^ &L@{:lӛIxZ@wvCd&KH]e%e [V3, 1=3ij3f=aԨ&rTHȜ{g~ضsy-L% ^i!(/ت%Ntf%og}Ci}iz pPąi6ٷ::y1{^:|2uZA3͑uܚ9E)-ŔBn!XjoGu|7|a~Nv0 "UƕRO W/WvQ1\57 kNy >~Jio@Td @'6];Ķ IY3W4QFz ]WjoI@ UjIF-kku]:B ZSi(P"k]eE䳎Jh`pP5Mg9z\i9I#[MZy\ʻ;j4.k_7 AV{oX[?Ui&D>T 376y]W}l="uٛ9![U0`5^ZkT-f )P%e=;!F=87`_j У<#+L+\|'t]Ꝩ\q>qZZ#8;^w{ gvN\ZcfLy=6c;5`HylTEPn?a: $^QXtnmsӀw ^`لD&iqC=FkT~3[ 5 ]SSS[j.;?YaW{JcQBg̅SXPyXepD|3p_ f>S")tX7< #5}qn  +BB[FinRXRD ԙgܳ[oF8!zrنDlC4] _=m4*ϛ'`# 50_80,j4k,XU#>\EGDBPG%ČMrm;oʽXK1a(T'%vu&]ue R CBl$Bwl~HOtTpZxᤸk/? Iev]I{ͷAWfPh'qp-b4E`>iȍn7x!ő -d[D}͏H_xh-G4 z2t4RܒυRyY'ՄP0`#:yNt>LŠ켺^.2X#bg=_sBK */tQͼ ɱ/yM/":ŠU:75ĥ\,)A~7g%p j<ॗ_EiGa[,n[SVqfӎϙY0kӧ\)HIĹ:cLʯ;t*P-@]i xc|(ms!OKw~npͫeXul4qa u׽ _OHՈUO 60l]F_m({=NyW(h.g?~ ^ H'ʹx_|*e UtxƱf A@pY)>$އvuW/Br!,8s6̙5uйpɲS^FyM k_mB!< `@cL_ _ _;ҋϏym+.߽FퟁtG-q>a2 ̸`Xm'IQC:p{ B.FQ\yyMpێ]Nؤ)Ia4$28$ȣXPz,rRplg=*/zywtʹ3!+,.J.NҪw4:GdQǰk>X&+5 ia:)Đ8[sxQtD Q۰k,vǎvK0B A2$}xDiCtKc֝u ]h@Z =dfRC ٚK$xȬT?s+qh+$~TbmJ>dy} O9p;vD%؈ O5ذ!g ԴC^JwZ8LƒqVx)r4`Hk&=2Iiac^`F("`(BJ'>0.[q8nU%^y1*`LvvvSX!/DKjوeL$4g"JmYn$$ HFC7'yO6{1;*YpV@C9z,o,u9z{Y> ӋUfqr6#[fЩ"!Ib³s>*eLEZ;SVP6hVX1:vNjhʰw %U:El4_*J@:[z;WVUH:@D/zWgz(m*jY,Q3 7b/l`c1X+)I-0c B'ON"/Dbnn<\׀Z@hy~>߭VXx2{5\J4PO}H-2kᔰơ1_'Ѹޫ6v‚a—qP-Mmo`ed I p9e'HФ U*3gs] *Yz5N0P"D 3;OȲ#7cY|_{^lu:*lq`C4bۊWZ~&s7tѐ$0?S[QmlKsvtSːw%0m%|5@&%Ef,-%]GJ]jOnD}ؠ嫘`{iy ρg$B;j(|G. -BF ШbMBVFf-'TVGl AN}D[myQ{g΀ɓ'uDD"ABbY\/%1ɪ*.f)?:GkcMq2#k%e3ftR|΅0LmNك (F!DQ hW;nxi Ly^u \J6 Fi:)!CP4ua$2=jt=$ڟP0EF,B@X=k:5j!gYg rKʖ@VN9JRb?rx`dL:^R5;id+,L(}$v^fVǎ("dfVhHJU R$Hߋ-KE7nRA:+9y%a?SڧعI[(FbuK^Տ'kKe0YIv)"k^ףּ(j@cbE>tZ|e+y^6XmP%2nQ*/Jw*m?=Г×n4Ff7i[O%2=! D} [\u5R_:5u&I#|6{jg}z1f' b[9sϨ86c/֊vq7-*"0?=I(#`4== /xOɐM#қ"mm \ؽRۺqIJE騫b,2XHw=wqn=!^>0u Y#[ogziŤbVu ƇQQ? F/n[9lpwILaBC{Q%x2GWO,&{5zL"ijX7s~hL}-f{3!H1l*RZ`&۶ls6Z߶}'FPP{`fP}K6 #O>^q o`5JQQ| ut<_EъJ޻sr@(R!Q\f6SO%0w,}Gk6H#q.hUtN_M?TQB%7!u MK~ Ȣ0?#2,8,d:o2{(}RjfŲE=.]ֿGXFg~uDI[Bݜp½ǣ65I- )rwB=@Ժ`N}FTQj5+(hPm4* ./@ t}UXEc+Eyuvth4YI4pam"N/`ѶY{_v b. 542%GwPKS$oVNTpegETK Aߢ^ W%BE4$u("+e6 Sϩf VW{?w-2$SD0WMeSUImK&q2,aB7kZ JM*@ R/gYUZ%?Pd"c~[PGC.&P HKͶ<@% eM8"6n"0޵\\ JU\69bsIS\)SѐW|EhkmU \b~& [\{&e e'=0ͱD:ua! ) znhOZA{F&:mvb%+_;˕5TE|Ï0;n.ylތ,3 1 MXEl::)fP hN28z z&Տjs_wUP*pVL߮n]rxU9 ?4Nn\T3 L!l2=:{N ohhE@4=VKU7ߏS#l&ySU)hW,92cԧa mDĖXt49J ֬yM-VcDф#U 8[.1 *}5x3_> ZӊHYo,V&,7ue1k??v6-&uv=OR]2++ : hWTn<[RBbXT#G(L. K0I *ZVV͵\Vpk*B"`JTLR]jO9KԌ{|cЙTz*1_tP (5na|%`'X,/,$"e78 T#'[.'2n\MvL\`'3JIՄu{W*DQ"R>*1$' SfD>-{n$VRue.I~,;jCb' Dr,?$IjyT'[ h' |B9V 8.}(+pU;G*JW?W1EiE%Bq. sDb 깙iΧcXyw8-zۓ^GE.9PCU:î+W%ITK͆I..^`ק6ա?PQ:~mI" tmV H^'A%QAD>L*jm Ps$(Dy b @q/t g @zΔ>>1HYCJqת"|4 cM"`5pc00pL %C2iKܚ>/5+L4 N&yՙձHv1Gp ڸ`s= aY.3uk<*Xmϛ~t. űQ̑c{,L;dTHjg8PZ>a k居HiT`:ƪ'_m"I%a6)֊aZ Ck_a7C Ȫϗ)#;%Ǥj0\p@N]Ӧ!@1 4BJsVcHZkWi:yI_{x3(Rj&K-#!GUs5pygZ{)@q lE6Hx=syl$H EGP4yET5/A fVp"VׁَyˡC589av12zK@g}M kv 팂ۼsOv*#Co`җyLL+Xq3Dȣq8ƾ uD=R;84$UA VOTf\-`Q=*5b JohhcA,腭 E =4tw16 s[S 82Ks,[AOAffKKBB Ky3N`uΝ!9cŗE,uz#UŬ0fb^0 2V˾HU@]Se(Zzs3}JAnX #e4åVj .q|[ \zY8+dQlUPKRS4B6햮hNp0p,5'ƒ$ ` .)[7N0\jC}?wS5AKdZ*'j;C-h٥c"eoY)%>pJdYkhľ8Fh+5T-(>+/PgLԃ 3Pr"dNg6هt[0I ?ׯi=MK>gܩSP?xTRaV \eǦ(IdH0kd UICeAe dW#!|ŗ?E\ ynA+/_1h~+W1(#1$aYٳ1? ĥ Pm:tA`uqj&'z6E| x)}t`QPKU̓j*36tcbaB"JQ"@L<*JduV \XuX\2uֻT)h{렵 O?  AʦM  pV"lRzuJ #q$t6!Nkc+fU o߫Ԝg€Lpnn\5"q%.'e jq1-͟W+U17 ^vs76~w)KRT|?>쬬!o'*fid,v |Z6ZMF* |YPJyyt#JMivUW:YaH0`^ͅ儤{ՃU [o\M x҄q.Ho8c6F72 t-ʳfLG HXppۭOSpI@HNi$EYU7n<\s͵xj@GQok{}t;wwZ^}{-m0}D8cTX|ΞwI|HtK1*F< xyWᡇ~mlB "'R]Z5P.\ [+D,}n{fLF4U|م o~ӳ(46sYlxu*y;:]ĵ^O˯dʹWݽ=WnT䩨#c. +UVU1DPKh#޾~һO;m/E^]LA"pxJfԩ(}sSL:=*| g?cG bT.mܹ \j?qX:I `}}nhٶ٧Îm[RTتp9(0bfCaw@`U% .\2ysHJ6eSYU=ƈwL16DZ7Ƒt\,V% զ46*#Ck>l>X=pkp8J LJ}XtKaŲŨ*L(%gL /\V=[ilrKO=?񏡫 }!nYkYɽ҂LO]Up6D] +/xfH#.dM _x>WZ f'{emPnٶzT=oYU[ h;w07k̪ho {4}=|j9[7qc\Z0 aZբ՚Q{u%~=c##yDc7gDjѧ8[4)A,u_R1ݰ!4fͨ?8aU1w; ɖ2V@J!*xPlPjy=Dža^!iJtH>#~x#b!py 9 F kPw5?k?xE1޵"P ~{zQ7s3E^^ս[1_ {gCS&O{o/f| b?z?S9 JꪊY{ع:- _[ՌbG%Bձ=a@DVG5k7ހƦQD'2: }}GY=oIٱS1WURxfm܈=bۆi>' }zXho hEa)NI d >{삿z S ^tDG 3z'~M2 Ì I*aTb"Ύ?@-e1ζ Jw%Ęj%~Ьol* ]ɑ4L"L5Ft=~ĩW So)O/yc!e{*,Q?xP^ܯ5٫M~~හ,=3~IH6cDՁĦ#RO&JF]c9Mra.2tC*kL*& QRo]mus8$IU1S>)px<qgCSXAdQe8po|\KKL 9"+T=,|0DAd[eh)Ϭπ}}d;fڳ) PT^' `cs>o*3lC%D+Täk^NL $1gƣz3*0N U1wנvF+:U J^8ze洜账ÂK(k)N0pcMx  JDxuNC+ JUo#J"TZY L鷲O&%8QG19I/SeG!U>ǣfu{X4IT2Nu%oHOMU1뗼Pfb Bا$\XqH`$ yQ/Jʏf*l8IxXM4rC+_inu t;S2 0br~l?ўNRp3>UKX\+tJ,(&=ȳ4Y%vvk*AFmR$o R4E<}t%7I b.x<roi\YHv) t$Ĭ$͉-dXB0JH2[` hll\ǃf8\jUvc's-쏚 ̤~'uhqP{_0j$cJW">q Ok( usGZcE I[ D@և*mc0$r>3b82aGM8hBR,}$ .0_E{t8vTKHT'30 RO֠,BuP<8=ßO"ΨX=R75Ee;Mfd"51 FDaٽXGYZC >wSID=5_065ά~fP"8&48e-7p?W]?K< vUbS鵩t2:1>%9j˸ oE4X \OӁ*ɓ.Y:*C XQ /rgƩ1+l2 Z AFg$Np` 6Z]V @X u|ߦF~xe.YE Aՠ 1 h4aCpND,k2 dyZ)`ՠ:x[FEU1Kph)חՉ0F<V!˽Vr~d8օV9[`E*} އ/v+\rru?yVԡ͞Z!Gžf3eŠl*M 4\ 3+[=qA;4pQt"to ^p5 xwlsH8iSxz-@&g R OgS\ʆn£=Y\Rf}Y+ \ Hb(Q2r2 d آPc۾"h Hv\J<#(~SNJ¡@Y!}܀X# kl0`h{Y}0ByE"1J8vTL8m=.g.2,.8EV̹jX#u CfDjsW2"16,.Ǝ>Ndx^-ƥN)ES0`v$ۯWF$ԃݮ `-CW+0,[ G+o* fE0Nf6D?z_҇Y~m \qX ~dtE_Er͟ zbS{m=~V|_Ǽi+ֆ<~ӕ-K*f6ޕ>Q}$Y Ē|  P 1ؐrJ-!>$B\)S 'ؒLb Yv35gfxf{fvWz{zz3 /)q> Ȗ0vz s8I/š,.%G_yS4ubg&syz~) P,M| IYF5ē+G~}Իzr=D;'PiWgz/{Vl-X,L3<=TJ"mets{g8(gOm>{≁nj*'>ʆ6;.H;:Ums2nc)4B-kkQ s'V'iE@ ZD^w=ʊ쎑pD i9>a"dǑͶ嬘~\A_5})͋/9[YY%ƕٳg)ԅ o{DΦ?>aW^x}q2p֯,+׈K/oxș/ 8wJ?-8|0OÇ,m`={_Yx3#r}x ؿ?Oann/cp?1_Jϔsg cCiy|8JC_^1Y:럳d-$jB>/XSryDXYgծ3)zkPVZA]] |lט"s0W¾.]H5OAn\gj5XrUr^&F>Wb8O)]|IG\[N;|A16* SF;"o;|OROQ-G6]>{֍@H3 .kd88ptukK*|O]lZ 65<RTчW\og E;TfWФ`%Ï`Hd,j?$tuUg{(}ioy@.~&s +~D;tSvbQN;D' H:I z0 s F&m0$xԔCp"H;Է!vr9.YFLmz. bw_+GIM=j7 ɬ#2 麂]z£̑x?4s?nZFޑ<ֿer;Z+{ $ݮ֨A9雃n° -GJt{]ڡɠ'ZDBHLj&?zB4} F\:,}=TNt߆8?XnPgL~E*q pz85|@ҶTb(߭KQ hx|՘GةZ/ϔZ@Eh5^iy킌gG"}jQ0p#Q=HGjmxTK\OXCeKǣkON*d5ؤk{4o 'Q<3$8h)4yb.#"nPDa hUXen 4/y8۴ߜ_T/bxH83j6BGwڕi'9tݱ> ój frG=mZ<t#`2BB׈νCʠ[ L@n[`PmH}Z6@ IV`ShKPlju1InE? h&"j}b D>k,25E{b@/Wry* 9S|JJԳ G;IeGyaz ΌSW8Ϯl Tc !T6ɡu_bqKG9 JUɤX4Pf&?$}9ɣ+C#(7vH][Xk[8Q.l]:=kv"m&v|9O[s|mxjtoK/T?I1 h9)V ܒihFHFI&VckbyhvAxFX EH\b8 :!uZ͹B @.ꓛ^m#P;pQȏXB0K@kԁSSYiɉy4V\)cɺn9HH#h,*DjCHV#ҍ5Rcж~32%m8Ҋ)0m|-udWijےjB`WהSOٔ>LUެlilĵb/ HjCկ )uI]J \Nɒ7F}H2w P+jk쀋I]}w3H^ f^^Q#Fl Ta4"iĒpf)|q&3$ l X y>`VZ;xXqm\BlgOY6]gMgo:Xfvjc~::0DIENDB`anyremote-6.7.1/doc-html/data/anyRemote.png0000644000232200023220000011231412061426051021166 0ustar debalancedebalancePNG  IHDR\rfIDATx^ i?+/ @s={okYz]{_uW7JHQm ENF@̘AkpFdFs ?ؓ(0( 'V8p@6bL[LI$%7]쮮޽osA.v*Ro5ꭽQ]՟ @5f/69Fv(BVKRf@.&!@ M`#3d$HYH!P g7~pۀKkuǭ$4{V{5z@YiS Ȣ ʆl€mzaXWəA H @Iy CDXPr/$_߫ns%Dg/?DĴiP EMPhTǞesbo y,@! %: 4`(@GaFxSc(Vm_s ?,6kϬڸ[y-Ew޸X%`&@./wvh9<%X`%^(xyp7xz (3H\NtaaR^Ns W"+0 A4,ufiEdbgb(W&{m0"%YNG^ǶKT/v"zщ17pzuu+!tWJ/ R_,|m??ՇNyQP^smVlw9MOj Hjf)o1Zh3-Ms31M$@V.D9h˩]i 0 CzC[r/11 3b*M--0ơfQ ,9%$O@64$F8AFJ0h@S.8;9ǫzˣLÓO؝ɴˆ!3 /~ͮK&k.˫ڎ,Hn6-A %0 fN",|Ab I) N,Ajɧ~K,f2ix80KВ/B_DJ xl`f46`1NS,Ð4@G)vN}қ6Re)fhC.qR<;ū5>Ef 9_|d|y~*:oԗ_"A⍻ڽ> ̱`W@ð2"C#J mecap.G;i`h aIbIxEKdWS;cƇ ڥ֔ 64Zke QLZ062E)DT1쫝4䯫=Hkb:ˤЯ|3ݍӣ ~|7޺"mmA5kxK] ] ˯w] &7mW^k۝Mě3"Ax]sKΑj E%p! EA# ^x|0>xXRQzO祈o$mG"ʒihz^bܴ쭍xS:- O⼇Hts.FΔaQ{KʑRv;#SZu[ggÇ>v=6qɏ} ~7vTJ7o.A*,( @Kmǀ-A>5$Ƀ0Lɰ$g!p(l!8&@$Pjg{j9~SIy2/Xm'֡fL;Ú Ni͆&3@)CE)6lX1-X4$D!J0@ş!@W :|}gǥzO|t+ ܩ|1 )</~^W^}E[Mf@ҳXK< ӌAF--$ "ZMAkfaRE `~0ޫTx8lm9]G!.1)vG.$|X~{Z:k;Ea$ w+[ʼvUa,|)@%V4aKlHbt0سt@r2t}IIa<3!H%Ȁ<@)j G N1F`suiO}qz|Mp[?m1{]xmO>q:_{߼Qsj{ Y^vK!vE0.}Y%PD&aqpd;ہip:[:rP ",dEq:ă`>NH1%+@}A{(`&9e0P`6%$YAFn/0d)pc)dJFNd"iJSF=:S8WCg<}]O#<.vsKi__  5_|8鋴?kx`w nq;q+/^5KZu2.t삮V뺲]ZX(ݙkIZKQf5FPs.s Q/Fb_ J6Xy/&pUq/RGp;` McGXcH7pCHXq^F0Fy;bLob@MXxuW^5` qI {/=y'ܧVVCwBǺO ᤻ijDUX]Y{+QV- ,P tJ9Lut:mư !e<B_jss߼wIlz>KDQb uE6FDQvhWX-.`_"b޻;ǃb!%lz]MǞ3oMh8Ϸ5DJ cdp@+QXɜldl#ڥ8b(]{,xwC"jEQ: oꈨ#v/ktG].׸}U2ַo|oQo~wXMJ7-twAzM'nmSX|g ;xd= ?ɪ_tjkmQښVV{+EPؤlZ b#ZX8P@%]ZW,fC6i4$y6i6i_&l `Ab@rW"v]IfaI9{^+DS}z%_Zp< u10k (tG'g^gnDȣ64A^v ln$a  =PHp,2l\b%$2 lvZ%[=f7cfA!30"7Z6} Q ԕN/\WE=}7_~9e1 2`YZunB"-[Q}h^[A]m'.W}l}Ux5+׫SxyڽnXbٶ|;޹1\\T,"SsAD)[.!: 0 bS8l`&J`MA$a@!Hȴ ٲfۆZJeX%VѺxb8>JN:97omnݼ1ũ5Ogv4#6>߷Q0:ت/_j7d*̻wr Xc!clQX1RF)d0&ܧ)$@8Vf1`;p-g4L*% `{*.2dy3 P SfUʆM0F4zwYw䤞AzU>q}oNHO?SO 8=F6?y+*6w/;/~QX+o׿xV&(B: >FpZ` d f1 r 3!'  &<պN}nW9t7o'?lSuGKxvɏ(̗|^M\O _w对?UCeAvbqDdx`(̐[!P:d0,گ2ł@ d "0ev/&@|m?dS 53@hyUCQ2r9ڬ)rPji"HF]{ ~'?yO)8ɟ?矇߹l 6[~_]܈ȣe醝+ 7mUDA@ۈ.EQkkHtBed )^6 $qQ.%m=S+l2Ԕ. eA٦-eÒafKL b ]>9˭Z낣׻o[ ''w-c E~9y?UcXyp;%HGD%H)AFD DMr( f0Ok@S`Ѧɞr,-& Ҟm{fʴP N\)5W*wεm;=u+$6 dOb|Lܮg|#֑,M1x.z2ާ,A_\Ɉ`q%Ap ŞsW.XrLFmpR[k)m)(ss&}G;m\ xe~(O>F•OGXNI1풪Gp-,̨S%XKRAB*: GtDADbGxTDR(͜7o=H'n,xLdD-w0id1Dsܿ6xlqqq)Az$5.|L`Sc W\gT_яB.}]EM#t*pMvVе`j=@MD9g d: UY Qpv4acnLǐ܍)s _wu.k/1sOmY H=xz^U G'otcWHuʭSX +*Ӹ(se[Q1i*XwCCa: KhD<]Nk;(Ʒ~0|T3x,;.Ggއg1<3U옼4pVpy|4@\|:.$J\Af,xSGX.pK9r{;gޥ8Nݟ|tj}2GL~lLe=OwO/Ϭb%Q}T5t;X}RoGcab#mmK/w_p o{~+ >$&~=3k6G=$økǙ>55SeL88ڞ=6T2mQEj =+MSݴVƾϏem>O;|=!xkUNo\6u67%[FT*׭g\Zl1h kɔ5(Rr, hV:8il¦]oo/~*q}µ\ ?Xď._{/i֏rR܂"3cv\,!0)I gq.@4D% v:)>=Yo/>.ޖ_i9yn #N߫[{ ĻÏr;nye w,!cݐN`(mI6 ӉBA+-2T+ԑjr4!T.2);A)D-tTu,Vu<"ݵ _虓g>y=G0GX>\Nk~Ю94_\lJNG k lǦvlap9 0c L@Dch`xh aCH)Xmtܯr?:ZwG}2P6a!>jqrrJtEm~?1qCB5r?W=ڰ.i\2<;&W%q9Qv;o"y-HDv3SИ(8%3}FN z_|aCɗ7?+ŬNкE|N 'k^ ⋱k<֞#|;|+npqn;`dGVlP!XrrRrdkikG؀q@:9EE .u޽oܿ?}~pcU=~"i/{Qߩ۝|83Lȟ1cJ4Ԉ\("\ 8.%K1@6LD!1 fdP'ьФg{cHua!}ip4}]]}N4s[oQ}ܺ`:3k^Wv^7]zYghºaT;j7 Ak0{]dS>K"#``^Il]ld h39@am66@7&H ?4btzR%1DL#:a9m&yƯ  8ɵ ?pAGX|!Vˑ9! `]G1L)3(X bLy$PuN>y !m.\BY(jkk%k+R{.4d~3/cHh>ڛ^b6)NX-o4m=K!8=9Q#w|N+h+;xE;ޫF+7JJX95Za{| ?dCiS߶,׶2_ korFڤla_}$M ;uv̸`qK f7"HV(;/@R( f5d ;wgi Άb99Oo'^=ol"N|!d{@! t"RQ4  0db>9&s@CaAjJ*')~8אtF@zxɺCM_? ]K@Yf>8;kxFBs` @?a:M6fOFgGhaN78P.5:°\@$J,c?E@c2'WW^ ClR',!lF$NK1WY_[cL9y:u*u~DK yNfg o P-5P ꕕ@xvq%lVk)|-صs{a]Z}[cA(d3 [p o~&Hv3=#1=Gg* 0+SX ,2I%Dp^%D,D8%B JyՕfHPcjP*K#AAt ypWZ^>}קȝfEܰ#L6-|SX88H֜'樓'<#Ŏ?% 6K}~R8Mf<8`<%P ` K fR qP+3˹r\goVJ'!UI"?DX{x2^XOI> X#|Z(~\@|걎\A_C}7{¶)L̸qqr+ %(2S'p̅L`F1  T) @)XĎL_ټeE'GͿBc=?jOXǬeÊ%^ ߈pPȣRTw0Pf?J>\$/|yOID3$b QP3 $ܼոCW)j󁃒2 @d]Р+ňqf,H#U(ԊT/e.3J+D|(%Ȭ:c#T 8`Qk 3xGYz^>tiS\(3~:%xHa;Zd@d( V 2P!sP3ڼ3 $@XłRHJ pvPکu\$00бn+][C&P"@oCZ$%aNWa?}g1:^j`"+a믝c1BzZ>s4PQd6/;='a&Pqn,B󱒯Y( h q:X̨fkNsgJK LaꐣZ[\*PRr@pD(= KKKcT8J u]w9# / f r/V, 2riu>(r̜bhY*Q)W) Ua)n> Y6rX^z=wfc6c ZlJYZMY8SJe!T @5EmgAuU`!Μ@, #B `Pa aJ~eDl >чyaOw=&vV;7 !hlbj===W\qJG(e\ Z4$Dy TU5렦hFdfȎUfvi̚I$@"/`M\==oW^UsNdqFaP AMm5`5? H*p28Pm_`-:]=}?8X61Οah7vF2GH\}CsFcS \e!( <ˡA<- BŨd];v2sCg±;XGb$aC=}e f~45_Wg|i}BO|pi+v33M4ÅNrTbJh_=ψ S<_;=dgX `k4şeh-ǥr*Ԥ,/s$048$rj:ÛT@wW's   #dB#B(r?U R026 ߿GdKTChcy}l$x"a~/t%w+`1B4LUb @0 ,x0d2a;2fhǙdή^8p6M.|\Q?:2 Z,ߓ ܲ6YA$\N%zٴD3)O ZO ߠ4PU]M"@W_j`9`IIEOqܾ a;ٖ' 釔2\zPs UUh*YS1P%,[6<* pOs3$ |v:&ʲR }Ex칗 aջa!: i~]]c$d5R4R7:KUUU vzs( G^ %s'D H$g|N%%qmERCoZeXHewWUT~5Z,jSu>y8y˾7a$fc9Hh74踔 ކu-7ߜ@(Tz׀7@&&a׶ 0^tacע%ɓ_zzzK2 *ι5韐k-)00`Ni`xDT#ϻY Ugz nICfm#k@|ۆհfB\jf>3s$ahl3;N?v"VS@3840aQIгxWڎn(a 3}ye `} #?pc(OL.6łAl'8,C:?x:N8"4g/=RR]ҁ][[FG (g..Ef 3wm5%qZ-Ǵ0|VXB:  { pB)༊IA `iӂӍށkN93Ig&>w3P2(Y` HaeTfBM5*al| N@_ E؆p =%iTZ ρP`YUl ?:n@-!=*C+vmU˧/E0abAp̞zʂka-S };I5g)()l][7!5aᄨ#J:zAOW L2iWSyM FbU`U,59:nxi[ Pg+ X|櫫wC#|l ^mAA:7x~w_=}#VVp8 ct2>' *~h$z焜V-kW@(uN6I"47 Rh&7,|0Àsh֮,,@E;R@ەA@^q9|uk`rr^x 0Ո" m#H]&] O21Nzmqe&46o dpy^ߤ5ۿѳ(aQ GTJ;HN( uM޸~=}-pE{LC|ۮO=x1 ; {;wp7Suڠ4)bzltFq֖ ZBЛr_a[!qD:ށdJK=|oF]8' ęvMe|0%b#= \ O(4ps!$P`'ēOի-s?j!Ka ExLq(R(dL~ekKk3s˘KJc,O0$m«x~`c j)뇏0,OtTwQO<&T/cuU0I@Dp ph}}/9`xAԗGFk@MFؼq:F$P༆:@Y?u=x翀SN&rP(] BC]](.>ѳ>ZY.bd&d L2'L316 \!x;g8<3 -ߓZE9S~sa^c#"Aq=9I`\o?ήNF>.#z&*=pQkXS|?Qx} (j&) 8} F@KqEDyupO%CN}#@eC?oe0DhWjCgb񞤫=}}4'/LTaWkٚMHs|r &#|@3yYF@&dxm-νbYU1¬ynQt= #Uf ']BdxeƗ?#UL Uv\ic6lRF-ɴsjiU,il@UX&,,kٶ'2Ӟ[Qx_߫od5 :Z֦8#}Ck[gBmtWgwJ &9P5@OcS&:[OLPSrȞILiOW\O3  >C4uPW33nj0әMAhGH9Kuoظ>(g] P :ËZY@Z;(zC։%0_4LQq}">Pxg_h5u1v üރvyn@M^(Օ^;KcJj0EmM9T4`f=΢awYv;S c]|Κ_|%Ku3&^>_HBAת{"-@ j> yh!Mq'ʕ+8yAɩ mʻ0Jى `>׿#GpI؄&'5EF3?eg]3}da U@f#POB4?|Eˡ`ɖ,Yvn˖rZm6glbjQ09_vwO*>k5Dҭ߁bIvQSlCsl"Qx¹sbTLLOWwIffd9 RNƱV'`w? R " D1jز~5Xry^zEʆHn:A 8泷߆ad^x Ύ hmn}{w!#Tq-a[߁A[RVՆH28|6+&ةӋMXp|~*k^wl(H1Ch Mѐk@zAp/ 8sj33.[ޞ^ꀎ]p:D Quu!êuW:Gŗ_o|;#pZkp ^BjjN^K嚄ӹo?LlLLP3o$zxdCكo&̯f>uU{B>o`|y4\Wu|~Z)Π,SQam‚ ۸qC, E` !rI6L'Z'OZ۳ͷ;nxA%+03 C ޽?'9g0"g~ඛ[5w3}|c'Nc3pO~N:CBrK;:l'G{k lZ}  r+vl*jW]WL4fl-Pm3Z^9V.-B:ih,I_5lLCܧnkW: . CsS{ӀMi8CIѕ@4M2<](~e\KRx{!7O)0Zd1\066!MGepH߉B 싟;?>M/w+OkjJ i_B K} 8\s/!4T,@[t ٢ fx?Bb~?>jW`p~E; f(7yY#Nɞc>xM9 A5hDu\OS D@ljAP6[ͳwnOAޜM1d4+}dիZs*C$clj2'O^&#IA.q`=@tI@eH,>K8/p8P WہWމ])N@-‰U01,Li>--qO1bӧR>O' ۈ 0<>${wd2mVfnEU5W}8iF#TDeZ 9r$F,Aۖ -tКJ)`\9 hj@PS+3 |K񋇓 ={?̯!?'0y"b~Dp_z]E+3>PXH>I"op#ʛki~m$+м~ԉZoB>7}l?$"|;f/AGh5ڋo0dԙV i-r^ z'e3r9%9JCl hʋ D`gS@g>9E'N"#q7!dӁ)#f>$~Ҷö-[P@KXrFȸ]]=h_^z|3{ +{z0X0GhҮϣ0`ę__?>a(R"E QV?:`~2M K$TS iC[D9>1,e= fyi`iVR$iWg-@tvvbyE*n>PYY|Qc iys] ˅{{'WV >3fSO|dRl`%#Qxb|  `fw1{9مZ~5y}zǘ}"x_4 c9_ 66Ec\!!Q[L̉AAA S D _C2zwO/FՈd\oC_;**[."ǟ.,@+@>&iu:2wvꮵR >{oIc &5ƙ IX;YF“ }Oj:pY=Bd+Ii=<#Vi҂Qk$mU s 0HY466%.ֲ]M Pa":&Rܻ#ZS;h, L GI0&IGރy(!plG K}r)=`TF/$(g i:v9eM@9rg`!fU t_$|j5M(G&L?Np辑UKyRS`)_ˏ8 GN3SX\_N:K$TtVsjG1{?]ڽVS;J~Z3%}AUdi_;**D2dhkkxOʢ^)k H+{ A2|MCiS|D4)XROcq8zt0{@3WN ܶ<6=fN/5Bj(*q@|Wt ,1]pJQJV4w R(v`Sϔ.a~ݟ \w|VӷBC}YY4fZaTU یvm\ +o|Zسvlĩ'SAtUp33.ǫ_39v\[6mh7K}zm]-~o[7m7F[۬^S@#; [:aK0>>]t)Ѷ<ث`ժU FFF1d6$XtMȜMԨvp7?"^ & _z\]SK݁'uf"RVdGGW <hxÈ\JcQ)`td TGE8{j 4cOAc|1Jw |srX-8m|sm* A@k.ߵ=P}4 )o5wWN'Ɗh}S XVm@u+.B(AE:pRtBF@R%F̯s2aϞ˙F@XE&3'Q~g^3ˢ%/˔[p=s$v'O~$`@w'?ׄ?J#OL6p}p}å.ݩS?>(4*p&?g]_=}gɰ"2#+W\|r! `bbbP%v}rs#/4. U -Q6u SO=_ַɧo~EjRQ%7N=֗ :4uΟߨ̯Kn)|[hy0bOM@ۢE!9?:o~ Q)N<}TCrukoZFHRtggWb΄PFrfe~OOkwzW>|è޿Ax啗U2ZǕ9$ `Č X$k(&fyjmkV:G}1,N? PpDx=q42y6jkኝ*ȇΜp8r<Ǩ? 7 X7Q Աy_>€eV /z: b#a}9"۳;p1uU55QОPSs=0h3qF֙fd y*%I>4~ˀLRPoko@]55 !YzCڵe}#؄3QÇXJ*6,NN)M J˖-I|D4 0eڬ1g\ aĞU`=ySY_F}i ;.'g!1W8!etT32:VJ~wv[n 99iܼ #R7BbM+f~1J .l$ RsLG8lW^ $p@iIF"Tyx/sHOL3ߞ8^ avhcA,ӿcX|i'GWJ$|{ 8+7n6'Ɔz>k.VMD&z;gb`Q$)JϞ @e3(@D5e~m$ >}[JX<1/iVnR'0{`Xad1'pm'+јѷǘ2X]m TUV2OQfΜN RÖI~;">p]LI|vY.qwyDBtQk)IWëVjV,L:~9~CE>B+>Ƨ=b[y$p^^~ʇVT{m.3_ t! (NǎwO¼FشaGjkjWb ^}#ՉH@`D$9} ̰D=g| αw&M夤۷~#0n 4! 0(bBXto?TTT%⚄\2`;SUw#Q3 $Br!b@giZ`=QZ= 'q" VD0 z\MF2y(d؀̾X&vw~o ;s3s!w0T|&ODɶ8H5o+Il_^b2P / {@_꿜~tl'`FVc6y;7Zq0`<|C  >!+>Zqzz t==$H2wE n6a`JiՊEa\=y|*ZG4-` c-0i&U m Q | 4ݳ e~ 3\+6=} h0X1`T#J?BZ!X̤,\[6z3Ppyo& l\#WQlv@1aLONm/xF5- FK2?H' hB,|L{hh 4c&󸧼淩!rZ0SDp"A7=V{ g=y6hJt!:Z5%-Y$$7wsY$rd hV 7w%)tV(bxMF` 8 ah< ?Ty!FP$p58v=pDODў_NٙyR\$%fb~=ejVWTB0|Oypϻy::XS[z# `o1,2\R}+āuhٴOt86 ]_݈5EYigg̛7%2ހ$ jv8#AySP'] D|̳Vܼ.rHEdS?駟jĥnv8ӝ(jLaz) (DaGTo3? [n \8nn[TpOP[FY;m<ЊEbNzo"L:Ͻt %4`zAYT憵?vϱ njSxW#A!]a-~'߰`OwiOԖb5cJQA5_gU.P(f6\%b5K5 7s |V8YUd o K.+WEJ!5Zyv漢9Qvw}G+*U=ƘxF!O&cM"eӹUI ؄\ET[ς o [a  .wR%R E.@ (9H@JzSi)ppBFD~|$Kakv? !*yRA@M8ᖏWϿp~c0:<,0mX( {MWk@P~{*`Ru\mP7H "G;"服X`A f"jTBgЪv_45}W<~i#`:Vv掯S $ :F rЬµ1++k뮅?5@cX+P<<LN'%?W1A$H)j=d`0ϙ} :gx%gȂ mz[9l6Z/Q`r*0%%k=%PNJA˘^}A3ݪeU+*x{|*<++KOiU{nO&cgߎʮx!R+І59<=B!]bp)p#.s} ;pŢ?#cO`v@u3&+B~3ha~|>  = Hd⢚B6@{!kL"<>~']Q?W7l-+CkK ޱ2?{{z]뱉ѣo3I5} p5Q\*L5cLt3e!d\ ՃFC~}  Ӳ0*L ]%fɘuAPu5', EU4_V ~টjh_@G0~Ug/c8c?6~חhHX/E*] `9™:YlڸvJ&=nȓ@QB9x>~ZOt=Gڏb-$ DZ+8i*I9 ^|uT"iK D{91ZwApg'd~kB[U9rr8/@VߵUhO<DVLƸǧe 'jeVy"Aц#5%w!@6tEP4et ZKp,Q/,$P|H?A U@N<. fx0/(E IY b͓͎UWRHV+xe7Utߞj7dlf(V_yV8[h.Rd >D9 ;/(^ a[q۾hhNIQ 8 9}84}gP;wк}9™𡑂H<#`Ĝ);_{OD!i|H;LC"(?`t(e|W $.$*'/!7~̔zDsPN9pB#]g @/UTwG3 B9V5 P;0 }C5U4zE'["[ s1㇒zo%vPp%JZ,*ȁѱqUC$x<f*}# _&r;٤I}rfzT @U sIdRرs;,]^Vc?ogOJD<ާ ?6hS-`5؉zڷ?WY |=r.mo+oKڸ%x? #|t˯}p.k} {o ?OwޑN*_q*MHŚbw`5ME? U~GɏS0>MQ~@m3:T"P9OC 嵾Рqw=IAuU zm{e u&8z8g?Ø}J^2Hz{1&&` t~Xj% p4 ?tw|&ظ(3y,iowme`pC0Q@ݍ>cc޼mV򫶺?CIc|/bUK<#޹.釶M|q \{ ֮{$b ۋhal}zALbxNM'L7a$M<}Y8y=8{[[MEE5޵+_WQʀS:Q_~d (|Ǭ-[t%.6oSϽG9*wv9T=7o4֬^ [&\UVZD _w>k:9S=ܣxl0S/1{UˠeCiu- -s9GmNn+{l>ÄGe;j2ը{-XUUM ̫WUdÒ5J<3Bɞ/t\e22%P\9@ %0 app+ YD;]{ٵ VӺرnȅ]cK[!W|{0?1>] 8~p|v=oF` \m+-_Ȇt؞+܅NpU{p{{ZwˡlZ'Ŏ;n܂KV-[7p gn;YOҞXU&F Bs=#07@//5( XO)Q) hb)797A9ɴ܎!\ÑY(ӧN[n۷~rHaqTJ-{oꙩ_cz?|nTEo|_ZuFǿy >}lAi4bQ N|5! _ÿ?;6q>q0`|_PgSfAA} ٬YM2w 6?&z455, m & 49 ݝ߿Mxɧ`*Gxo[)+ ۜhKF<<=Qj|)&'H -y^;: L1x'_o1L=aܨio~0:2li%kxBhʛ:Ν?}fD}/?tNz=H S@h1 nv [mY 07'D'\*MByDZHΣ#px饗[qQ9cc !1sO2m>{$/$+Qc~=Ǟpr\q5/:)_rF0S{𱱱X ]cPQE38A:9C/n-]} ],B`^/~|QCc+̟?L?#hu O9Xhf,]-b`r JO$ O|RUNi>@. 3'a6{LfNlZzcHǝw}\ {}2M&FG! #!soH8OLX,?7Zڂ!3ȩL;9}sV&be,<|6$Fu~n'aPmw"L"Tp;s^ 1l@\ (>e6S߱*DGF^`Z߰n16w`λF߉oA0W1V>Gp|4N{9( Bk+`v“ll psp~L, y6Ʃ˜/]惴w|=W , IJL/If:i)L2y f̟?OMY?MBʩkȩFjЩbqě|v!TWL$q&- V@#ERtϋ&YpM-WV9,B.) grTV䤵j[f&7yu`#,Hb#N.0cW J'@] u3X8qvJ&0=k "Mge)}{Zy}fhfF!XcxyJ}R5< **<9ƩJ5n` ,Bs20WhOxjU/w!) S:5!|> ߋA~P* ^0ݏ{hA!HW$^d T g7tjh'}qz#۹^ajםP?ʊ1/%dΌ.*H@ ̓35`& *:ᥪҖbΟ tc3ҍD֣m]u ǍH=PB MC|R7Hoy(3;}:=Z|rU JW]S?rշ~c}+wK/F(FHMX-CXبdUq_ˏ{1~Yvmbxe&2+9Dh(2iX!:MB10>8t/&gACop^A4Ia6hJQ$N7&dUfuM=M 1>G9ddkBk1@RWItDi _l_Q@`m_B>% ;@ I//ۉւwz;`m7(Kq 5bx)x{q4'B}Nufx=>/*MB@<3̯7mXSiAQO$dlofS2/:6CUvTr P"/t6' "3D| |axAV i%b~ZuٕU?hi}"@޺e4Ӹ0tf4Gt$^e,+S*ݤҰ8mC f콓Z@iR[1۟KoAb y?xzm? e~ͻg6Wx.Hk%F>v@iJ::f @^$QJXOyP5_AS*+t8A$) f*Tt "'ajD$Eگwsi坞>i\Qi":6a=޳4LJ(u] 2eph)L̯22sga{L8MDkZK=rHSB1wŐaN2HcHnH'}׊=܏\Na-.t/E.V_*@T̅&!K?@Ͷ ˴3Zd|3Ѳ1Ǵ\Xcqqm;ͅsvQ:39fbGـ%H!ZV_}]u~zΩ ?11AU/O?;Hj܌X=g]qfygE;h$}9; ]V 8y׬9yT8cVw1ZUe}emPQZA T6դ??MӴQiM4hkm6%2.5, 0߾N2 3qgs=9{=01  g$S 8ЋeJC^ Xw9(Kglx^WtɇC.@#uO7.]{Ic]/ard$0{pcTkt"АZI!C묙U_({e1kS *u7`R/xx-&͗D@"_%P ӯ6>'h#xV<ҁ+DVDRQPU-KGRC*m䤁S4Nhq0LP4^Hi<Y-yMُ F*i3N-6ey`ϡfRQRZ81g# < ipf:6$Kn*J۽h5zVcNtԭTQ1\VQ+*ve-k֕YvKT̘DA|wS \vywI#EꚄ:ii8`3{SY1Lr [gr*U"L\s#XT\Rk~"d=]؁OI2m0F"!7$ ANo6hnjq۵,Ƣ<ԗd W;oCǮ8r(#ض=\S`kԌ PgD}L gq iE"xkMӧ$0 i]y&Ok6{.}-lX70yE@ks+4֮Y˖.e׌>L,%\= nvsa2;\=ϕVbyRtDt:i2gt|$KWނ$8O)L0zDfL#P G q2{TҦF}E 2 3..G RSMF H020LPsȥ7vcDgIbbYҁd`gjtg71nАAgÕ p WLW1@Oj ,2_=2Q`F9N}O(aҙ;> u`b%\SS xk @R1q4 6 \0 >L[xM`93'FS`4<Vҙ*贔, <GPЬ_XXz6Gy1½zW3X@K2J'af))EbQB5y9eۉLp18q_,81|hDL^),aD"?,9&,XTOkd]B>:Bn XKqe`۟jħEf G닶}Xc$M)F` ``EGQSL頍_('R" u/N|Z fa0ݢ;l7)-W5-ޜ . X/˂r@9ow3uH H)x&K@,= H%S!bR411f4`qKnGya2Atfk14"X1t&K\r!ޟ ܈,,+1 Ec\mT$EڲKBpbmHQJ/YKa.\S<Ĉ HsKMz*\Uv sr+4BM'aymwB2 o0D#ӷC4mh6.0M{G w' axU*.*rҽ$)*,!?N8 Xٝ0~{g}:|Ow!z$8Dӏ?2 )Kptoy+Qg~xɢmAjk pb(c{o^g ZI`DX#PqQo RmΟ?s9-{獽< b" AUu AIrj!L`KݳM9srf.\TbAx[]_Vzu۩\p$]9\ R1=PNhP+G hSQ[=|,r6T?*e{HDz '1EI^z/~8ٟ0ZkHwܾ-~;>}$^iA)ЇY%ۈMgi?Ҡ@3[]S2ZQt) +>~7O_(vh2Գ<٭`~DF4` 8pM~;^5h)$`Fo@^n%W~'Vy}57n!Lj0`۩إg~G!+i@ج ,1?X]]U3K ڂ%j *~_u˘%S @4t3ǎ74 K]Tį'%dco V jJ韕~Gzw, +| 7btsiR=\5ޔgeE~???1{J2w} -i/P-\c8$s<'@=5jHIENDB`anyremote-6.7.1/doc-html/data/anyremote256.png0000644000232200023220000011231412061426051021463 0ustar debalancedebalancePNG  IHDR\rfIDATx^ i?+/ @s={okYz]{_uW7JHQm ENF@̘AkpFdFs ?ؓ(0( 'V8p@6bL[LI$%7]쮮޽osA.v*Ro5ꭽQ]՟ @5f/69Fv(BVKRf@.&!@ M`#3d$HYH!P g7~pۀKkuǭ$4{V{5z@YiS Ȣ ʆl€mzaXWəA H @Iy CDXPr/$_߫ns%Dg/?DĴiP EMPhTǞesbo y,@! %: 4`(@GaFxSc(Vm_s ?,6kϬڸ[y-Ew޸X%`&@./wvh9<%X`%^(xyp7xz (3H\NtaaR^Ns W"+0 A4,ufiEdbgb(W&{m0"%YNG^ǶKT/v"zщ17pzuu+!tWJ/ R_,|m??ՇNyQP^smVlw9MOj Hjf)o1Zh3-Ms31M$@V.D9h˩]i 0 CzC[r/11 3b*M--0ơfQ ,9%$O@64$F8AFJ0h@S.8;9ǫzˣLÓO؝ɴˆ!3 /~ͮK&k.˫ڎ,Hn6-A %0 fN",|Ab I) N,Ajɧ~K,f2ix80KВ/B_DJ xl`f46`1NS,Ð4@G)vN}қ6Re)fhC.qR<;ū5>Ef 9_|d|y~*:oԗ_"A⍻ڽ> ̱`W@ð2"C#J mecap.G;i`h aIbIxEKdWS;cƇ ڥ֔ 64Zke QLZ062E)DT1쫝4䯫=Hkb:ˤЯ|3ݍӣ ~|7޺"mmA5kxK] ] ˯w] &7mW^k۝Mě3"Ax]sKΑj E%p! EA# ^x|0>xXRQzO祈o$mG"ʒihz^bܴ쭍xS:- O⼇Hts.FΔaQ{KʑRv;#SZu[ggÇ>v=6qɏ} ~7vTJ7o.A*,( @Kmǀ-A>5$Ƀ0Lɰ$g!p(l!8&@$Pjg{j9~SIy2/Xm'֡fL;Ú Ni͆&3@)CE)6lX1-X4$D!J0@ş!@W :|}gǥzO|t+ ܩ|1 )</~^W^}E[Mf@ҳXK< ӌAF--$ "ZMAkfaRE `~0ޫTx8lm9]G!.1)vG.$|X~{Z:k;Ea$ w+[ʼvUa,|)@%V4aKlHbt0سt@r2t}IIa<3!H%Ȁ<@)j G N1F`suiO}qz|Mp[?m1{]xmO>q:_{߼Qsj{ Y^vK!vE0.}Y%PD&aqpd;ہip:[:rP ",dEq:ă`>NH1%+@}A{(`&9e0P`6%$YAFn/0d)pc)dJFNd"iJSF=:S8WCg<}]O#<.vsKi__  5_|8鋴?kx`w nq;q+/^5KZu2.t삮V뺲]ZX(ݙkIZKQf5FPs.s Q/Fb_ J6Xy/&pUq/RGp;` McGXcH7pCHXq^F0Fy;bLob@MXxuW^5` qI {/=y'ܧVVCwBǺO ᤻ijDUX]Y{+QV- ,P tJ9Lut:mư !e<B_jss߼wIlz>KDQb uE6FDQvhWX-.`_"b޻;ǃb!%lz]MǞ3oMh8Ϸ5DJ cdp@+QXɜldl#ڥ8b(]{,xwC"jEQ: oꈨ#v/ktG].׸}U2ַo|oQo~wXMJ7-twAzM'nmSX|g ;xd= ?ɪ_tjkmQښVV{+EPؤlZ b#ZX8P@%]ZW,fC6i4$y6i6i_&l `Ab@rW"v]IfaI9{^+DS}z%_Zp< u10k (tG'g^gnDȣ64A^v ln$a  =PHp,2l\b%$2 lvZ%[=f7cfA!30"7Z6} Q ԕN/\WE=}7_~9e1 2`YZunB"-[Q}h^[A]m'.W}l}Ux5+׫SxyڽnXbٶ|;޹1\\T,"SsAD)[.!: 0 bS8l`&J`MA$a@!Hȴ ٲfۆZJeX%VѺxb8>JN:97omnݼ1ũ5Ogv4#6>߷Q0:ت/_j7d*̻wr Xc!clQX1RF)d0&ܧ)$@8Vf1`;p-g4L*% `{*.2dy3 P SfUʆM0F4zwYw䤞AzU>q}oNHO?SO 8=F6?y+*6w/;/~QX+o׿xV&(B: >FpZ` d f1 r 3!'  &<պN}nW9t7o'?lSuGKxvɏ(̗|^M\O _w对?UCeAvbqDdx`(̐[!P:d0,گ2ł@ d "0ev/&@|m?dS 53@hyUCQ2r9ڬ)rPji"HF]{ ~'?yO)8ɟ?矇߹l 6[~_]܈ȣe醝+ 7mUDA@ۈ.EQkkHtBed )^6 $qQ.%m=S+l2Ԕ. eA٦-eÒafKL b ]>9˭Z낣׻o[ ''w-c E~9y?UcXyp;%HGD%H)AFD DMr( f0Ok@S`Ѧɞr,-& Ҟm{fʴP N\)5W*wεm;=u+$6 dOb|Lܮg|#֑,M1x.z2ާ,A_\Ɉ`q%Ap ŞsW.XrLFmpR[k)m)(ss&}G;m\ xe~(O>F•OGXNI1풪Gp-,̨S%XKRAB*: GtDADbGxTDR(͜7o=H'n,xLdD-w0id1Dsܿ6xlqqq)Az$5.|L`Sc W\gT_яB.}]EM#t*pMvVе`j=@MD9g d: UY Qpv4acnLǐ܍)s _wu.k/1sOmY H=xz^U G'otcWHuʭSX +*Ӹ(se[Q1i*XwCCa: KhD<]Nk;(Ʒ~0|T3x,;.Ggއg1<3U옼4pVpy|4@\|:.$J\Af,xSGX.pK9r{;gޥ8Nݟ|tj}2GL~lLe=OwO/Ϭb%Q}T5t;X}RoGcab#mmK/w_p o{~+ >$&~=3k6G=$økǙ>55SeL88ڞ=6T2mQEj =+MSݴVƾϏem>O;|=!xkUNo\6u67%[FT*׭g\Zl1h kɔ5(Rr, hV:8il¦]oo/~*q}µ\ ?Xď._{/i֏rR܂"3cv\,!0)I gq.@4D% v:)>=Yo/>.ޖ_i9yn #N߫[{ ĻÏr;nye w,!cݐN`(mI6 ӉBA+-2T+ԑjr4!T.2);A)D-tTu,Vu<"ݵ _虓g>y=G0GX>\Nk~Ю94_\lJNG k lǦvlap9 0c L@Dch`xh aCH)Xmtܯr?:ZwG}2P6a!>jqrrJtEm~?1qCB5r?W=ڰ.i\2<;&W%q9Qv;o"y-HDv3SИ(8%3}FN z_|aCɗ7?+ŬNкE|N 'k^ ⋱k<֞#|;|+npqn;`dGVlP!XrrRrdkikG؀q@:9EE .u޽oܿ?}~pcU=~"i/{Qߩ۝|83Lȟ1cJ4Ԉ\("\ 8.%K1@6LD!1 fdP'ьФg{cHua!}ip4}]]}N4s[oQ}ܺ`:3k^Wv^7]zYghºaT;j7 Ak0{]dS>K"#``^Il]ld h39@am66@7&H ?4btzR%1DL#:a9m&yƯ  8ɵ ?pAGX|!Vˑ9! `]G1L)3(X bLy$PuN>y !m.\BY(jkk%k+R{.4d~3/cHh>ڛ^b6)NX-o4m=K!8=9Q#w|N+h+;xE;ޫF+7JJX95Za{| ?dCiS߶,׶2_ korFڤla_}$M ;uv̸`qK f7"HV(;/@R( f5d ;wgi Άb99Oo'^=ol"N|!d{@! t"RQ4  0db>9&s@CaAjJ*')~8אtF@zxɺCM_? ]K@Yf>8;kxFBs` @?a:M6fOFgGhaN78P.5:°\@$J,c?E@c2'WW^ ClR',!lF$NK1WY_[cL9y:u*u~DK yNfg o P-5P ꕕ@xvq%lVk)|-صs{a]Z}[cA(d3 [p o~&Hv3=#1=Gg* 0+SX ,2I%Dp^%D,D8%B JyՕfHPcjP*K#AAt ypWZ^>}קȝfEܰ#L6-|SX88H֜'樓'<#Ŏ?% 6K}~R8Mf<8`<%P ` K fR qP+3˹r\goVJ'!UI"?DX{x2^XOI> X#|Z(~\@|걎\A_C}7{¶)L̸qqr+ %(2S'p̅L`F1  T) @)XĎL_ټeE'GͿBc=?jOXǬeÊ%^ ߈pPȣRTw0Pf?J>\$/|yOID3$b QP3 $ܼոCW)j󁃒2 @d]Р+ňqf,H#U(ԊT/e.3J+D|(%Ȭ:c#T 8`Qk 3xGYz^>tiS\(3~:%xHa;Zd@d( V 2P!sP3ڼ3 $@XłRHJ pvPکu\$00бn+][C&P"@oCZ$%aNWa?}g1:^j`"+a믝c1BzZ>s4PQd6/;='a&Pqn,B󱒯Y( h q:X̨fkNsgJK LaꐣZ[\*PRr@pD(= KKKcT8J u]w9# / f r/V, 2riu>(r̜bhY*Q)W) Ua)n> Y6rX^z=wfc6c ZlJYZMY8SJe!T @5EmgAuU`!Μ@, #B `Pa aJ~eDl >чyaOw=&vV;7 !hlbj===W\qJG(e\ Z4$Dy TU5렦hFdfȎUfvi̚I$@"/`M\==oW^UsNdqFaP AMm5`5? H*p28Pm_`-:]=}?8X61Οah7vF2GH\}CsFcS \e!( <ˡA<- BŨd];v2sCg±;XGb$aC=}e f~45_Wg|i}BO|pi+v33M4ÅNrTbJh_=ψ S<_;=dgX `k4şeh-ǥr*Ԥ,/s$048$rj:ÛT@wW's   #dB#B(r?U R026 ߿GdKTChcy}l$x"a~/t%w+`1B4LUb @0 ,x0d2a;2fhǙdή^8p6M.|\Q?:2 Z,ߓ ܲ6YA$\N%zٴD3)O ZO ߠ4PU]M"@W_j`9`IIEOqܾ a;ٖ' 釔2\zPs UUh*YS1P%,[6<* pOs3$ |v:&ʲR }Ex칗 aջa!: i~]]c$d5R4R7:KUUU vzs( G^ %s'D H$g|N%%qmERCoZeXHewWUT~5Z,jSu>y8y˾7a$fc9Hh74踔 ކu-7ߜ@(Tz׀7@&&a׶ 0^tacע%ɓ_zzzK2 *ι5韐k-)00`Ni`xDT#ϻY Ugz nICfm#k@|ۆհfB\jf>3s$ahl3;N?v"VS@3840aQIгxWڎn(a 3}ye `} #?pc(OL.6łAl'8,C:?x:N8"4g/=RR]ҁ][[FG (g..Ef 3wm5%qZ-Ǵ0|VXB:  { pB)༊IA `iӂӍށkN93Ig&>w3P2(Y` HaeTfBM5*al| N@_ E؆p =%iTZ ρP`YUl ?:n@-!=*C+vmU˧/E0abAp̞zʂka-S };I5g)()l][7!5aᄨ#J:zAOW L2iWSyM FbU`U,59:nxi[ Pg+ X|櫫wC#|l ^mAA:7x~w_=}#VVp8 ct2>' *~h$z焜V-kW@(uN6I"47 Rh&7,|0Àsh֮,,@E;R@ەA@^q9|uk`rr^x 0Ո" m#H]&] O21Nzmqe&46o dpy^ߤ5ۿѳ(aQ GTJ;HN( uM޸~=}-pE{LC|ۮO=x1 ; {;wp7Suڠ4)bzltFq֖ ZBЛr_a[!qD:ށdJK=|oF]8' ęvMe|0%b#= \ O(4ps!$P`'ēOի-s?j!Ka ExLq(R(dL~ekKk3s˘KJc,O0$m«x~`c j)뇏0,OtTwQO<&T/cuU0I@Dp ph}}/9`xAԗGFk@MFؼq:F$P༆:@Y?u=x翀SN&rP(] BC]](.>ѳ>ZY.bd&d L2'L316 \!x;g8<3 -ߓZE9S~sa^c#"Aq=9I`\o?ήNF>.#z&*=pQkXS|?Qx} (j&) 8} F@KqEDyupO%CN}#@eC?oe0DhWjCgb񞤫=}}4'/LTaWkٚMHs|r &#|@3yYF@&dxm-νbYU1¬ynQt= #Uf ']BdxeƗ?#UL Uv\ic6lRF-ɴsjiU,il@UX&,,kٶ'2Ӟ[Qx_߫od5 :Z֦8#}Ck[gBmtWgwJ &9P5@OcS&:[OLPSrȞILiOW\O3  >C4uPW33nj0әMAhGH9Kuoظ>(g] P :ËZY@Z;(zC։%0_4LQq}">Pxg_h5u1v üރvyn@M^(Օ^;KcJj0EmM9T4`f=΢awYv;S c]|Κ_|%Ku3&^>_HBAת{"-@ j> yh!Mq'ʕ+8yAɩ mʻ0Jى `>׿#GpI؄&'5EF3?eg]3}da U@f#POB4?|Eˡ`ɖ,Yvn˖rZm6glbjQ09_vwO*>k5Dҭ߁bIvQSlCsl"Qx¹sbTLLOWwIffd9 RNƱV'`w? R " D1jز~5Xry^zEʆHn:A 8泷߆ad^x Ύ hmn}{w!#Tq-a[߁A[RVՆH28|6+&ةӋMXp|~*k^wl(H1Ch Mѐk@zAp/ 8sj33.[ޞ^ꀎ]p:D Quu!êuW:Gŗ_o|;#pZkp ^BjjN^K嚄ӹo?LlLLP3o$zxdCكo&̯f>uU{B>o`|y4\Wu|~Z)Π,SQam‚ ۸qC, E` !rI6L'Z'OZ۳ͷ;nxA%+03 C ޽?'9g0"g~ඛ[5w3}|c'Nc3pO~N:CBrK;:l'G{k lZ}  r+vl*jW]WL4fl-Pm3Z^9V.-B:ih,I_5lLCܧnkW: . CsS{ӀMi8CIѕ@4M2<](~e\KRx{!7O)0Zd1\066!MGepH߉B 싟;?>M/w+OkjJ i_B K} 8\s/!4T,@[t ٢ fx?Bb~?>jW`p~E; f(7yY#Nɞc>xM9 A5hDu\OS D@ljAP6[ͳwnOAޜM1d4+}dիZs*C$clj2'O^&#IA.q`=@tI@eH,>K8/p8P WہWމ])N@-‰U01,Li>--qO1bӧR>O' ۈ 0<>${wd2mVfnEU5W}8iF#TDeZ 9r$F,Aۖ -tКJ)`\9 hj@PS+3 |K񋇓 ={?̯!?'0y"b~Dp_z]E+3>PXH>I"op#ʛki~m$+м~ԉZoB>7}l?$"|;f/AGh5ڋo0dԙV i-r^ z'e3r9%9JCl hʋ D`gS@g>9E'N"#q7!dӁ)#f>$~Ҷö-[P@KXrFȸ]]=h_^z|3{ +{z0X0GhҮϣ0`ę__?>a(R"E QV?:`~2M K$TS iC[D9>1,e= fyi`iVR$iWg-@tvvbyE*n>PYY|Qc iys] ˅{{'WV >3fSO|dRl`%#Qxb|  `fw1{9مZ~5y}zǘ}"x_4 c9_ 66Ec\!!Q[L̉AAA S D _C2zwO/FՈd\oC_;**[."ǟ.,@+@>&iu:2wvꮵR >{oIc &5ƙ IX;YF“ }Oj:pY=Bd+Ii=<#Vi҂Qk$mU s 0HY466%.ֲ]M Pa":&Rܻ#ZS;h, L GI0&IGރy(!plG K}r)=`TF/$(g i:v9eM@9rg`!fU t_$|j5M(G&L?Np辑UKyRS`)_ˏ8 GN3SX\_N:K$TtVsjG1{?]ڽVS;J~Z3%}AUdi_;**D2dhkkxOʢ^)k H+{ A2|MCiS|D4)XROcq8zt0{@3WN ܶ<6=fN/5Bj(*q@|Wt ,1]pJQJV4w R(v`Sϔ.a~ݟ \w|VӷBC}YY4fZaTU یvm\ +o|Zسvlĩ'SAtUp33.ǫ_39v\[6mh7K}zm]-~o[7m7F[۬^S@#; [:aK0>>]t)Ѷ<ث`ժU FFF1d6$XtMȜMԨvp7?"^ & _z\]SK݁'uf"RVdGGW <hxÈ\JcQ)`td TGE8{j 4cOAc|1Jw |srX-8m|sm* A@k.ߵ=P}4 )o5wWN'Ɗh}S XVm@u+.B(AE:pRtBF@R%F̯s2aϞ˙F@XE&3'Q~g^3ˢ%/˔[p=s$v'O~$`@w'?ׄ?J#OL6p}p}å.ݩS?>(4*p&?g]_=}gɰ"2#+W\|r! `bbbP%v}rs#/4. U -Q6u SO=_ַɧo~EjRQ%7N=֗ :4uΟߨ̯Kn)|[hy0bOM@ۢE!9?:o~ Q)N<}TCrukoZFHRtggWb΄PFrfe~OOkwzW>|è޿Ax啗U2ZǕ9$ `Č X$k(&fyjmkV:G}1,N? PpDx=q42y6jkኝ*ȇΜp8r<Ǩ? 7 X7Q Աy_>€eV /z: b#a}9"۳;p1uU55QОPSs=0h3qF֙fd y*%I>4~ˀLRPoko@]55 !YzCڵe}#؄3QÇXJ*6,NN)M J˖-I|D4 0eڬ1g\ aĞU`=ySY_F}i ;.'g!1W8!etT32:VJ~wv[n 99iܼ #R7BbM+f~1J .l$ RsLG8lW^ $p@iIF"Tyx/sHOL3ߞ8^ avhcA,ӿcX|i'GWJ$|{ 8+7n6'Ɔz>k.VMD&z;gb`Q$)JϞ @e3(@D5e~m$ >}[JX<1/iVnR'0{`Xad1'pm'+јѷǘ2X]m TUV2OQfΜN RÖI~;">p]LI|vY.qwyDBtQk)IWëVjV,L:~9~CE>B+>Ƨ=b[y$p^^~ʇVT{m.3_ t! (NǎwO¼FشaGjkjWb ^}#ՉH@`D$9} ̰D=g| αw&M夤۷~#0n 4! 0(bBXto?TTT%⚄\2`;SUw#Q3 $Br!b@giZ`=QZ= 'q" VD0 z\MF2y(d؀̾X&vw~o ;s3s!w0T|&ODɶ8H5o+Il_^b2P / {@_꿜~tl'`FVc6y;7Zq0`<|C  >!+>Zqzz t==$H2wE n6a`JiՊEa\=y|*ZG4-` c-0i&U m Q | 4ݳ e~ 3\+6=} h0X1`T#J?BZ!X̤,\[6z3Ppyo& l\#WQlv@1aLONm/xF5- FK2?H' hB,|L{hh 4c&󸧼淩!rZ0SDp"A7=V{ g=y6hJt!:Z5%-Y$$7wsY$rd hV 7w%)tV(bxMF` 8 ah< ?Ty!FP$p58v=pDODў_NٙyR\$%fb~=ejVWTB0|Oypϻy::XS[z# `o1,2\R}+āuhٴOt86 ]_݈5EYigg̛7%2ހ$ jv8#AySP'] D|̳Vܼ.rHEdS?駟jĥnv8ӝ(jLaz) (DaGTo3? [n \8nn[TpOP[FY;m<ЊEbNzo"L:Ͻt %4`zAYT憵?vϱ njSxW#A!]a-~'߰`OwiOԖb5cJQA5_gU.P(f6\%b5K5 7s |V8YUd o K.+WEJ!5Zyv漢9Qvw}G+*U=ƘxF!O&cM"eӹUI ؄\ET[ς o [a  .wR%R E.@ (9H@JzSi)ppBFD~|$Kakv? !*yRA@M8ᖏWϿp~c0:<,0mX( {MWk@P~{*`Ru\mP7H "G;"服X`A f"jTBgЪv_45}W<~i#`:Vv掯S $ :F rЬµ1++k뮅?5@cX+P<<LN'%?W1A$H)j=d`0ϙ} :gx%gȂ mz[9l6Z/Q`r*0%%k=%PNJA˘^}A3ݪeU+*x{|*<++KOiU{nO&cgߎʮx!R+І59<=B!]bp)p#.s} ;pŢ?#cO`v@u3&+B~3ha~|>  = Hd⢚B6@{!kL"<>~']Q?W7l-+CkK ޱ2?{{z]뱉ѣo3I5} p5Q\*L5cLt3e!d\ ՃFC~}  Ӳ0*L ]%fɘuAPu5', EU4_V ~টjh_@G0~Ug/c8c?6~חhHX/E*] `9™:YlڸvJ&=nȓ@QB9x>~ZOt=Gڏb-$ DZ+8i*I9 ^|uT"iK D{91ZwApg'd~kB[U9rr8/@VߵUhO<DVLƸǧe 'jeVy"Aц#5%w!@6tEP4et ZKp,Q/,$P|H?A U@N<. fx0/(E IY b͓͎UWRHV+xe7Utߞj7dlf(V_yV8[h.Rd >D9 ;/(^ a[q۾hhNIQ 8 9}84}gP;wк}9™𡑂H<#`Ĝ);_{OD!i|H;LC"(?`t(e|W $.$*'/!7~̔zDsPN9pB#]g @/UTwG3 B9V5 P;0 }C5U4zE'["[ s1㇒zo%vPp%JZ,*ȁѱqUC$x<f*}# _&r;٤I}rfzT @U sIdRرs;,]^Vc?ogOJD<ާ ?6hS-`5؉zڷ?WY |=r.mo+oKڸ%x? #|t˯}p.k} {o ?OwޑN*_q*MHŚbw`5ME? U~GɏS0>MQ~@m3:T"P9OC 嵾Рqw=IAuU zm{e u&8z8g?Ø}J^2Hz{1&&` t~Xj% p4 ?tw|&ظ(3y,iowme`pC0Q@ݍ>cc޼mV򫶺?CIc|/bUK<#޹.釶M|q \{ ֮{$b ۋhal}zALbxNM'L7a$M<}Y8y=8{[[MEE5޵+_WQʀS:Q_~d (|Ǭ-[t%.6oSϽG9*wv9T=7o4֬^ [&\UVZD _w>k:9S=ܣxl0S/1{UˠeCiu- -s9GmNn+{l>ÄGe;j2ը{-XUUM ̫WUdÒ5J<3Bɞ/t\e22%P\9@ %0 app+ YD;]{ٵ VӺرnȅ]cK[!W|{0?1>] 8~p|v=oF` \m+-_Ȇt؞+܅NpU{p{{ZwˡlZ'Ŏ;n܂KV-[7p gn;YOҞXU&F Bs=#07@//5( XO)Q) hb)797A9ɴ܎!\ÑY(ӧN[n۷~rHaqTJ-{oꙩ_cz?|nTEo|_ZuFǿy >}lAi4bQ N|5! _ÿ?;6q>q0`|_PgSfAA} ٬YM2w 6?&z455, m & 49 ݝ߿Mxɧ`*Gxo[)+ ۜhKF<<=Qj|)&'H -y^;: L1x'_o1L=aܨio~0:2li%kxBhʛ:Ν?}fD}/?tNz=H S@h1 nv [mY 07'D'\*MByDZHΣ#px饗[qQ9cc !1sO2m>{$/$+Qc~=Ǟpr\q5/:)_rF0S{𱱱X ]cPQE38A:9C/n-]} ],B`^/~|QCc+̟?L?#hu O9Xhf,]-b`r JO$ O|RUNi>@. 3'a6{LfNlZzcHǝw}\ {}2M&FG! #!soH8OLX,?7Zڂ!3ȩL;9}sV&be,<|6$Fu~n'aPmw"L"Tp;s^ 1l@\ (>e6S߱*DGF^`Z߰n16w`λF߉oA0W1V>Gp|4N{9( Bk+`v“ll psp~L, y6Ʃ˜/]惴w|=W , IJL/If:i)L2y f̟?OMY?MBʩkȩFjЩbqě|v!TWL$q&- V@#ERtϋ&YpM-WV9,B.) grTV䤵j[f&7yu`#,Hb#N.0cW J'@] u3X8qvJ&0=k "Mge)}{Zy}fhfF!XcxyJ}R5< **<9ƩJ5n` ,Bs20WhOxjU/w!) S:5!|> ߋA~P* ^0ݏ{hA!HW$^d T g7tjh'}qz#۹^ajםP?ʊ1/%dΌ.*H@ ̓35`& *:ᥪҖbΟ tc3ҍD֣m]u ǍH=PB MC|R7Hoy(3;}:=Z|rU JW]S?rշ~c}+wK/F(FHMX-CXبdUq_ˏ{1~Yvmbxe&2+9Dh(2iX!:MB10>8t/&gACop^A4Ia6hJQ$N7&dUfuM=M 1>G9ddkBk1@RWItDi _l_Q@`m_B>% ;@ I//ۉւwz;`m7(Kq 5bx)x{q4'B}Nufx=>/*MB@<3̯7mXSiAQO$dlofS2/:6CUvTr P"/t6' "3D| |axAV i%b~ZuٕU?hi}"@޺e4Ӹ0tf4Gt$^e,+S*ݤҰ8mC f콓Z@iR[1۟KoAb y?xzm? e~ͻg6Wx.Hk%F>v@iJ::f @^$QJXOyP5_AS*+t8A$) f*Tt "'ajD$Eگwsi坞>i\Qi":6a=޳4LJ(u] 2eph)L̯22sga{L8MDkZK=rHSB1wŐaN2HcHnH'}׊=܏\Na-.t/E.V_*@T̅&!K?@Ͷ ˴3Zd|3Ѳ1Ǵ\Xcqqm;ͅsvQ:39fbGـ%H!ZV_}]u~zΩ ?11AU/O?;Hj܌X=g]qfygE;h$}9; ]V 8y׬9yT8cVw1ZUe}emPQZA T6դ??MӴQiM4hkm6%2.5, 0߾N2 3qgs=9{=01  g$S 8ЋeJC^ Xw9(Kglx^WtɇC.@#uO7.]{Ic]/ard$0{pcTkt"АZI!C묙U_({e1kS *u7`R/xx-&͗D@"_%P ӯ6>'h#xV<ҁ+DVDRQPU-KGRC*m䤁S4Nhq0LP4^Hi<Y-yMُ F*i3N-6ey`ϡfRQRZ81g# < ipf:6$Kn*J۽h5zVcNtԭTQ1\VQ+*ve-k֕YvKT̘DA|wS \vywI#EꚄ:ii8`3{SY1Lr [gr*U"L\s#XT\Rk~"d=]؁OI2m0F"!7$ ANo6hnjq۵,Ƣ<ԗd W;oCǮ8r(#ض=\S`kԌ PgD}L gq iE"xkMӧ$0 i]y&Ok6{.}-lX70yE@ks+4֮Y˖.e׌>L,%\= nvsa2;\=ϕVbyRtDt:i2gt|$KWނ$8O)L0zDfL#P G q2{TҦF}E 2 3..G RSMF H020LPsȥ7vcDgIbbYҁd`gjtg71nАAgÕ p WLW1@Oj ,2_=2Q`F9N}O(aҙ;> u`b%\SS xk @R1q4 6 \0 >L[xM`93'FS`4<Vҙ*贔, <GPЬ_XXz6Gy1½zW3X@K2J'af))EbQB5y9eۉLp18q_,81|hDL^),aD"?,9&,XTOkd]B>:Bn XKqe`۟jħEf G닶}Xc$M)F` ``EGQSL頍_('R" u/N|Z fa0ݢ;l7)-W5-ޜ . X/˂r@9ow3uH H)x&K@,= H%S!bR411f4`qKnGya2Atfk14"X1t&K\r!ޟ ܈,,+1 Ec\mT$EڲKBpbmHQJ/YKa.\S<Ĉ HsKMz*\Uv sr+4BM'aymwB2 o0D#ӷC4mh6.0M{G w' axU*.*rҽ$)*,!?N8 Xٝ0~{g}:|Ow!z$8Dӏ?2 )Kptoy+Qg~xɢmAjk pb(c{o^g ZI`DX#PqQo RmΟ?s9-{獽< b" AUu AIrj!L`KݳM9srf.\TbAx[]_Vzu۩\p$]9\ R1=PNhP+G hSQ[=|,r6T?*e{HDz '1EI^z/~8ٟ0ZkHwܾ-~;>}$^iA)ЇY%ۈMgi?Ҡ@3[]S2ZQt) +>~7O_(vh2Գ<٭`~DF4` 8pM~;^5h)$`Fo@^n%W~'Vy}57n!Lj0`۩إg~G!+i@ج ,1?X]]U3K ڂ%j *~_u˘%S @4t3ǎ74 K]Tį'%dco V jJ韕~Gzw, +| 7btsiR=\5ޔgeE~???1{J2w} -i/P-\c8$s<'@=5jHIENDB`anyremote-6.7.1/doc-html/data/ganyremote-devdet.png0000644000232200023220000007060212061426051022651 0ustar debalancedebalancePNG  IHDRZkcsRGB pHYsutIMEiLtEXtCommentCreated with GIMPW IDATxwXGwv;@z!H )5&_4bl1*j4bCK"&QI *U8 3sE ^> BmUZ!![au Bj7? #N>"fbg!>@IS'Iz7Ml P]|=qw +jxzj| ' ZFUc.:%qm-MEiIEqX,z^T`0tj)B!yX͓bRSMITUf50 @!i{_.I$ERbd(N 5AEAKBW6EoK$5!p|jkbp#r+OrI}avW^ڳ xP,JVP,a% eȭ}H|bE5<ǒax/t=@Di,?lE5R4 K JBSo^L{"?\[#(tܒu)W'|_2ߵm?CPc?a%R䁽>]v%;2 c!![^Q]M^š`PTڰ22p`^<\ˁiΠ phExQ)+}"|wRJ͂($S[cpB0Y. _.y h5PWj8w7^|\c:xQ } @ g" P'jX$d0 =<)Ir^g;"FVا@RDK#1 ʂ:!VF z^ w10<{$I7&޸}7\riBQ]%LI>X^^]I2UZ[ eh5%xn灛 w&*ֽ(&\ðdS-h9O "ADBCӸ>wgra( "Wwk܉j i1%E][#$_ L2j@RRḱ{0]{cQ5(kQ%'MpoBz)Xp`WHR2W8߮?gXt ߼}(??7.&KV<6LN2Ja5{C!l(3|;:'R <LM~@QXpDNQRUp% \ۘG*fn(TaO`30ȯ}nByQs'܉:K],aN?'e{_G37K>!fQGp $Ij8&keA!gJT=Ou_fkAu诀vh B!P;`a PNԡGM^NO)KeK'@Wwy Byu,1vB &0 >37&f(@!p<[MmUSUmOpHݡ)7oPVV!!7?i|3cСwqumSEE{Xb0  7?~WQQܾېt;; ]\r޽111+Wf7SN,m:7aO=x۶_~-''GSCcVCCC~ӌbΟڅ fdfVTThjjϙ=[___:=цUEUUUMMM9t>mmlmǖ_vۻ?~:s#fϞqE׬QWWokMMM}{ܹooDyE… M| iDرxӧN5fώ9^i661b!`Y XNzbR;w[gdfL6ƺu+Wqf=Of2 .1xЙ::;iQGlobH.Ѓ0%KO<5r(Oπ{IcǎW$)SB.~~,&SGl-?nnݺ'O@yyp9:˭h84w]BĻ~ ~i||P(wKsfӪo_1&df|󍭭9AyEeX,144mcGV,g`jWW'"b1rj{w+Z\Լy{y{4Wk>Hdk:$-YYrx_~dI|>_$X~ǎ>}P(.,q!nM _?q+]$=ڽ{wZz:^zQϞ=v9\޽O>/ _ȩCϞV9#xqݻwk޽ӧMDgT1cCT(ٸisPxXAù𗟯onnH,emMgix!+fee`>`0&@oŵ(Hxb)SYɫ7 y!K/ܱc玝;~;uh-{@֐熆FAE={_ &IwyszzZAA!rwwW,X+S* =˖-SBg;m4m'5%eҥS{ͩ&3Ֆ:4jʵkNf{/#cccY.**"I@yE(HEywSSennNRU'c.TUUyy/\;dJg))F#b߾}oݺyfغK֯ c2T[n--[VQQ?:lZԘҢŋgϚMCloDg 'S KZaAm9.>>?`AMzBUU;C)KǏ5]]] }͛jc:>1aaa ,6m޽{MLL$.^#࣏䬛`0 \nrr)$'?`TWW$D(ǭ^ƆN)))=kVyyLMKpwԆwY,&m޼a߯e0Re\~MU"""6#B:H= gHpgH*wyYiii鋜ؐ)SH2~9uuXPP֟ظ߿IAA7mEEE)))S*6=q„ӯ Y,Vѣ ժʯCFFQkkӦ ݺw6}zQQٳino//F\MaÆޝnnaql6{!322&yɝY^f!׽[WbKV[ DyfzKBy|q"^"" X2xmq ?%C("<|W'!'..:Ϩ(_??g mvy :]i~ѣG,[׮ӧOlƪ@iiik׬qqqa+CBEF6Nyㆲr9 qxJ?|ay9r?ߜȏHVi˩b3 SK.ѻP2BP:sŋUTO-ctuuׅ$I4HEEU_vۻwQ$iE ƙf_}l߰hgg oOwx5Cuφ^~XPx䩑FyxzDK D1]w]&O~^^..A$exVZuBƉBzDZߖCtRY.W!@_˩S׬]Q@ˮ^xW_Ϟ=O>B`5xxx뻹Ι= 9p?__?km---wssp"(…d}CSK+(0=E5N8 \,5s A<3{ل AwޕPUU`(ɒ՟]H*?zXRޜ+b<ξDoF8Gu <?܂ꘚފ>}#nݾ}޽EO E669sHx_~du$|H$ήwuuS*}ɶ3f|˖.900/_"I|ݻW5ك~p{?|P(~!-,gO_ϜQ-U\H.*7Yr2S?pUKA &I@~VROs;X!ԉ }>b#F8:8عCNHسg}!d2P[ɏlmmd سl2:.tL!ӦMpRSR,]*A0޸c'Es[6?/,x[.hh R$_3uJu"1kbfo^!PG!vϗ3wifff ’VXPhfjAwQ*C/\pO>ǗfggWWW~CbWT#䴥 JTXLnZaݏc,xFM&z꫕֊( S:Lr.~ '77..n6_ϢTv|}ŋfO09(CCuh~~~_EEE#22GU__x"Zu.'K}MC_ғ7B(g]nFFʟ:L^)P1I=Wk#7r.CCV\Y\\`|qΝ;,ࣀ '҉Ç֬Ybu6j(ziշo^TXrG bmLLLwdIc:*\bQQBgXjLArR_&[9$S+iy'֊zsR L+3f1좩DQ𢌿jWabm|W<~$! ,Bc"fQG=>8-5nTDÆ nŊ>>?)tb0 D}0<3}OkVuo(h%ee///U!Թtp2OOOYmz !PG'{Uy@!߿:Rb1DgfBC J,At~[QQf0}Z"> z @ IDAT*)a8i7oo=~! %=ted[1a}X(6%Pl p>akQ ( !_F2@[DO" 'oݹzz!>kBNBa8A!!pB B! '!0 BNBa8A!!B B! '!0 pBa8A!!BNB! 'dg^]{؊@ x?{M1лÒzb>  _gyGoʝzƪ!h8?s =}VUUx ->qXjs^+,nH,fuލ2X(WGWWWzI$I6'i2rq=<=CBrxq{xz4hʕ<ORHu###&Hx^ߗS=:S#G ػNrΝAM:%///))i &ѫ.[ܻ!;vK_y"5vʕφ_8ܺu D"wRRQ#'9-vxUU՜9zx 0{މ>7wa}thC<(**#=<ݵ{9v/xDC\z}cׯLN7JmB 'o6BL[<ػ~9qdmظIJ-̹΍>{v-[ln@@@ffƳg '۷8pS ,^j 8 ɼgK/ Kiɒ%;vhᢓ'QQQtu?uJKKKNNM@upݿπysg 8i{g8 \ۅ/\ 9 #Y@_u٧On&=~dYff&ݽ{?gΜ='Mojii+lp---qH;;;%%%Y=@su8ǻ9giշFJXchhƧG,\z􌾾cKtqqqTRRn3ܜ Y9[lBݱEPRRqƶgϞ߽{w+Bw=z{t~}$|H$g~-|{/_|KW/+;}W<[ٳGDx\ XښNm{ǎ$IJ29=AbkiYGGFF }^V ͑Mbccݤ]--' 0p]__$wӧ wUbB#,-->{m۶ލ/$os7B]]]̙C|Mᤦ,YT2E.u݁[ɏ3Y={WL&SVr+ܲ6:u:t(G$%;V^ﵲ9ROȮ>ܷo[n޼.,ҥ0N|}}ؼ9==b+9We-7up"1is7o4662 <}x!աp8\yf(++pBrqVS+,(ݻm-555c1i$剹9uL&},laaYիW:'>gZ]] g-˗ӖԴ4wwHMM2nL//////7wy}BUU;C._0h LɩHB)XXXmۋ 9\WO94b##&1!P^Սr}}=[C$sBl &MI}}ܯD!.T$+At[ Rj~ s\!Ev]!!t0 P' ߁~с BuЫPWYQ.XL&SYQqi0 PG '| 5屺Mo[-M-X\XXPXTЋ˥!7oſ~f{ BGb.FjjjPQQQR}]n٭ ٕѥK#c*Y%%%y"d``o`HoE|>_Iȸŧ0 P:U}: ŠrIP,y޽{-m' vNnj:^_gW yVp@jP(βjff.<^mQaAYiY=\'Uttu!:J8թDb:X70 zeeZ"g^.004**,d2ӅB-H,K$$YTXhmD(Pebj^X޸xuB54~Z(6^YYQ! HdXtӯ *<^Zb*n\&^,''=l3HTSUS '!AN^;a))QSSMQ7R$"_I4/IgXPݺwg0eey95&&f@Óz#@0!:r8y}5`ZYϟ[|IX,f2E6zRRR"Nժ!+^ 445R?u(#IY_W`0Hu;AN322(/z^SS#yYAHMnd0 -mNZJH$.).640 y<^IIq}}}eeeA~2[] ?J./+jkkJJB!;ANvu,%=>ڭ^uM$+qIIIjJ D.={YWWUJ'DMuˢ"$jlv"(]=]u /jkj@UUUHSKRN1 PxfIXXvUSSc1$EUqdHHS27omcfSU]]UYYA<]Ե[7]]ee A˗t!ֽ5@ TWK!bqYiIt>\$I7WӅBaQaMTT+^U '!!tpBBG1-zךlX8QUUߊGwNUUMr*Ot.WMI.] xBp\ǫ-,,222zu*ZWW)ϫQUUm!%|~ngIPQQ70Lu%';BCS#SUS]"U N@CCSCC7B7jlv\w@ҥQ NBdK*.BNBa8A!!pB B! '!0 BNBa8A!!B B! '!0 pBa8A!k#!]z8ǾA!4pB{YiӚ>!B]maaillLj᤼<5% $Iܾu ccc!$=-o_g c#c//wo訪@ 'UՆFF3՘nuu@ pBoN(bXN(J,@ '@Q$ DH~"EEEhkk[XZXZX ~AE}}ݍ7Ĥ?y^^***VϞfffx7n(++K]|=_.Yw9hr֐څ fdfVTThjjϙ=[__m vZNNƀ󭆆W9oGh555o<|OT%өoE 80޾i]߼bCJHm%>HٳgmMmïe9«kRƧ>nryxx5n|WGr΍Ĥwﴯ5IuֆO~.:zƍF.崹!A <(|[d̌Ӧ۶m{8eUr*^mظҲq5{VnOrE͛PMC&WI#Vjkk|J&rWeoƪJ@ hs AZR7kijZw劕AAM?O?͙3{РAvvv={Ay?>tذ֖bCOgҟq+S2[~ClQml W))"~ڹsȐvvv3Cg\o$e5弋=/L"Iͩ>}yϞV'gffiHky WLNCZUN''")uh心pbtuu惐o_%#3F A9/^'))p_[O.],\͛^޹sw˗kkk.W ?]_x >jHCS`(Ey{p֭k׮e1nݺFGD 1>oHiR+&!-"%RS&ZXqr*Hdy;uqˏ"N?G wwsw[xQuM5^^Qi#G}dͫ$CH|wKr+'\똘g[nH$NJJj'裣GIO<5r(Oπ{%gmZATVTʜ644jUEE]reXXvA/裏֬^baÆz{{ ^It2o|/ox?nd)nOD1cZlHi=BVL2Л}yymܸANCPN6D֮U1Y iC9Dڌ$>}{xDĞȃM2^&##Ѩm۶>}Сt:XpO;6nHY_/Zu"IZЬ4:͛7bqrՉS/_@DE4μ=<bΟGe8b6l$gsgnb0׭_436n>{ر ^RR.lq碣lbfPO9pUV_pa[߽0w\;;;w7ӦK,yI˗{rݒŋFEmذ!--c7H$Zx~Y im9**c5k>th޽/_!!m+= !9ڐӹɴiXYYx`KIV~ õCȃƍwA"Z|'"I53b⤉ݓ-@pȑ XxKsyIWTVbCC66>}@(}Z~+:+gD[KUruť̬BQOxcm.GNCF5Nl!zzz~~{)Ɇbe***lxJVCZ[N;{߹s}_8}ŋY[[;3c7ǏU7mcCdzYՐpn W/zM/^EbI"Ⱥ5wo[Ebs玴zXa΋7nUZ5lШB7n _r 1յѣ###BaľNN н{9p@(())7ϖ]__$=77G$m{ǎ)w3g FVv6O;|HjM+ztf7_Y+' r{|d2驞UW=|5{~sKN9i\W8yƸwlmC芑$jꬬ*Yti-i332-_~Act`jHi߆*&!m(CFXL5 `2@tl<W7m~3/dXEߊpС8::r833G4fXEok/d۷[7o [uatٳGͳ-f'ig5{[55UvvMOO99IJG.]""">:-[955cƎ=~Dm(ņ} 6޽{E/_۫dfdl۶Ϗünwn.JKKLY iC9G^?[@׮]jj?n1tFh}}ݞ={8'!m(݇]/brVkAĄ`)))&@jj}V|~վN})gZ]]tɤڶc,,,TUU޽?qLKM{)剹To&m޼a߯d-e2Zqsgy@A^ރuu|XȐ![nY/' *?}{+**nJϯ鰱~.G羖]/+gFA$$$Q@p9Vee堠63,{;?cپ~~VWW>t888D2?,+!!Ȉ`(++Orz>N"8ɓ99_NxTTT ŋWWUo¸/ɜ7o޼yoܣyOoo׮voH>"#owG$oʪ׾}{lHky iq7NN`ﶅϛ?J__?(0pĉEQ@qcgϙSVV KMVQQ)p8V ~HTGK./Yx&Lji9eJȚ5ky S <(l]s߾tt;[[prrN}8љ5kmJKKIl^>mۋ 9\W(/]d!S1"0p Ww% 7nHOrtZf-֭ۨګaaaiaa 6ҹju$ Yャqqq.ڵk .q_\\+őB- 9ZDD'Orvvύ#P’v}БFގ쩩SnNBrtt|>x]g!IN0!.SWTEQ8BN44KʺtEYiV48Bupҭ[NNN]tpN)*..n=z!Z'Gɵ5Ώeaa!!aano |TRV8B;TU: $_d~AV%/}x43y!֗M `Թ]z%33Ӫ/ƎblO^W\m.&.6>8YgN[oq\F?JallxRw==D W~}.Bxu>hE6# ?ϓ+W>{ 111..nH흔D 8$죏=&I?yQ<<="Զ*a8A̴iKhA;8x!uE'>yyy/_ć'11RSS)iy{x8Ĝ?+Iػ~9qdmظIʻɜgnݒe˖V."""2sMMu?pss500p43t+Wo@ 8|… |} ll x<ޥ9si}@(}ZVۥr 1յѣ###BaľNN н{/p@(()񓷏=ڽ{wZz:^L|>_$)Xxvvv}}[XښM;vJW`>`0y<ޗ_}%F*% N 8\Nnn Bm--᤯ӡCϞ=zj_̙_ILUuή ̬U[XX޽{ILKM|\5+W\O%[MԴ?8mo^EunƦ{MMMEoߪ262~.}S^VV??hdhHDBBBEEQАbE=_QQQjrPPM/gQQQJJjt9`پ~~322<G|`ORR8`dd`0~9uuXPPo~YmZE8م:5 <=n޼~.W?/#({x&C'}\bgk NNNbة':::fܺm[ii)Iuo\bQQBgXlYZ7}tuu۷rl^dɺCLQQQ1bD`x Tg{܅i$* ڊ:@ ZՊ{TlV*uUZ.6Td!ƐDP@Ǐ{xor]B͖[3tu:qcAǍvy]ΧC'MSe%uu.Z]LM\ %O5XG]= (,ςdzo t N@:>`:\:"+[^O{+.9$LUȑMMM |gA6 0ʕ+_ jf3a<o )gm6yu5V؍UTT|ht93\BϦڦKUN9sZMMdsg;(HMe砘r1 LԾ ?{whh!!K=M6VsaÆOJb}IZRlk_y$B'O&?cȑ {ʻw7zXX55K=6}ZJYӃ(ͣ_?ggzJF#G}}}݇ k.go?# 0BmtPgS9::J}ydTŋ}||?`GEG?~hҾںUVN6=v׭Xx挙keKxҲҭ[ڱcBћ]~Ёwo$I':|xem2?i,- ""1 ;gNk{xsttee塃7ʬC\lԳgeNg)^z2W^ѱ://Y޽__iqqxoL'~)BO?MOO _{ZIFFFv=B CBBg̜~hAΛgee'`fs!19յSoŋr//[YYN^2K?dIuuk/Gn033'p<7'! ˕hhh 8ǏJ{!knn. -\GG!t srsܘߺպ2bO%{{R˩w;gQW//+{c z G r,LmV!~aÆK.oih Ј#Sw~=hAvݻw= 066fXgИ}CJrv횐0ÇHMػWWOࡃS_u 8r踱>zt ןL>֭:u :!'C)P%ݮ2{&ASo'If?xPXT4g%+a /A11az~rr2Bð 77Wa::-\۪z2O:e֯X8|?fg-9"0@j:lj8hp8w% mlll,_fMTttYSKxTdq;88]Noe˪F~2rR,\WG'4tC\\#zhBqWrÆ3fZXXFl.)h8|60cy{{O2南1y$f:td ,--Ǐ/d=fgtm)Qћ -ޒ%(w+^z2-Ј\GWw̘f]ΧC'aKŚ_6^b׮)#H8x6%O5XG]=FtPDJ%%ɩx^ame_P7qQp_C@Vvvs¡7$Er8̓>Ixm/:sttu&:O~ % H' N@:]k9JچN:/|mjjmv`n\.n.S4yy[m>Aݺ-XC F޽˕Y`Vظ6;j SS3PLLkWhj4d&M'>sD$°?BNDmP(XxۚիUUU74Hnr洚zEEŮݻWZ}%K +->z hMUUզȨа_}f(ɡ= T  ΜI5zۈO>9zud=sd!wb]tW?UrM wQ798 PP%+ygΜ ?wܾ$}}|| >zyŇPP%ޜBի R?]ݥ,--ΜID /_K8uuu]tԼxA@OP(`}CO:%A^/3OҼl7\Gkhhbee~x~{=]]@  >vt'3o߾UU'L8pP(̼ɩ,X{֭?cճϟ/^?)f_~=&6ɓ'ff7z BhcDAXh-[IHXpի f͚c@:i5PC>|Νۇ;M6111N#a5555 ʔW%y۪³s"6Eܾ}ڵkW_㹹LNn[nwl/,,ݳgȣovkpHTYYYYY cdW8)2rAAAk׭Cip8w% mllll03@WGС#7Faii9~x%9ZKKٹxa wwtkDEGΚ;eZҥK!'''$DOOoɒ_TVVR_2${[R8M!4!4BSS}tٲRfRKr֭_M&pw50w)S7VҕOBOr?,W\zuʕׯ]SA,{# # [tn"dr3%f\vv UVAo9::޺yN@: t H'N@:t H'N@:Љȸ㳊g=iZIG0LCYȼyAM([/*t:ܜf+BEݺy0R6l"Ptx$/7 C)utbbbuPj!E狇RUNjꌍۦuu@ڲJj@:P|P\[$"Nh&maM$I~:( e@CO'dF#-Nv)!džZ=}DFF;:2?ell4vą iAAAӧO_x^KӉ BH$ͮ.]|冈o݃ x~ĉz [en#yĄsέY㏻?}4,,!le˖ >׷ Z 9nnn>|ӧOS^'m:QWWYC#Y<!) KJJCKפ}R˻t"N7>|wںK̔䅬kfÿ6bò^߬Dc*8ReK]Q0T$) cWw^ɒUUUO8矋ߺus͛7o^KBKlԿW Kӧ $#-]` u7Duu/^\|ykk>N~e`FP?M y-_wߝ@4]S]M /fG.Z?hwO?$4섖6|"󟺚Z]>061655x^UkҐjj-.*"IewQ__˗/aݣY' !-ᩌmݞ4raGE?(|["ÒG/*䗗WUTMcZ[YIں(qeBBN0aܹ- }- Aƞ=l,~.~нi1]@ 4$imm,~?>g(I v֭W^^ރf}wkiw^/^>|ԡat@;0Ԃo޶Y$ry*O<}zj555qF#PPTT(lml !IRfz䩼fjf+?o+^rT0XBFiB,aE"48I(RWli}Oϳƍ[r !tauV-mm"ѫpoOQQ"^f!/I[[Krgav`7o\v-,U+WEl OK;|ÌQ M?ySDW*++ םЮ҉<|>?6>ԴVCCCCCZXXʻvDCCcZ|/fA!:y\njӧ!(5:ihh&#ccJݢ"F\sJcc#"v-^Bʕ+f̘tiSMLL_嬬=3t_TWWYf4-3ly!-9Xkǩ+C1(i^#XgFӲTgFvj3f,],0 ?`7;9N`@Tq|W[̝;'))&LRI}v"sRkڵ_nTKnӦMq?;i: @GGCaAt} 4Ms.]e7f۶mLQz!۷館(*+3S䔳)q\ރM6m*N8˗VUW# #I̴PD⿉_pT &&Ǐۻ7quϟ?tvh"p~M3fTUU7v)S y!bmuހ7+k,;YQ4Z6tit3,#w3裡Æ͛;OUUy';v,Zhy)g('v9>|!'--mĈxϥJ.+5VP^Af&/P>zonnVWW]RRZ]U83X611UZZ:u4m0QDQ~'Yc8os&%⳶=BW)' srr*** $$|:z[gcxc>\WWYXXTUY5yd+<M8|B$qjuuu^|NO]v|2BBi 0 X,*6t""ظB3t޼NJ#Òcc㢢OG}̱cbF2:Y@`ffVZZUkCCaA쎒N(D"$I_7cC-VRzmee% 8AD =K>yNz@qb IQWOG}L=a|:+fecGi$H$D"P$ٙ/ĢES,E8l6A0I$ITQQQtv(X,A~D"!Daب>v/E, SQQQUUUSS7@&u¨ IR41ĸqPQQil6C\@fHI}~fl&s3T TJL+HDE18bLFzM=ev02`tx@!Ē?xmGi:َ &NuPRmdNQ:Vo;%+8)lcu)顡jK<"*XV؈qˬ%|iw.񭳈JڰeLl󌤒*V3 eq$? {mHch m$;7:S4-j+"W>yxp+j7yEG9ާ/5xz$%$((@#[]Im!"hkC#-ŸR$oITM(ZE:*JD F߬uU|x.IYi*@H^9c>A\C<}mb!eu JI$<Ob;].~ȷ OKmmjK'#' pýʅp߮M[)LTА9CU9ĩ.SI]tVZGrcֹMJв `)$gk}f4=Z@]_h o]׿؊wQ~S{?TAsUZ edrNjNJrsRu~WOm1 W%l8NRg (`Nְ'*؜G*9ħ'5'Q~%ulzRMyb!Xy2gh|٧xXaXlNk"Ir=NNjNJ7S4k 2ydrMNJ&/QH~%u|faO1`U9QɽKr=NMj^J=;Z bbsYZ{?ԽE#1sZ؃`7.kc 8}Жvղ+$ };Z bbsY^LnJrgSuT^yYSYelj %.2 qc$C"W|G}MZ䩆K*x7$'z=5aO1`U9&57QH ~%91Ghc*zg$ Øw8Nh=6wmm~jEm<XJ 7d'u0, '5ʹ1Ghc)ɍO2;C]sjNְ'*؜G"侧ħ%?PJBNְ'*׹CmQ2;CU䶨ĮMw<ŁVdrKjJr[Tu ĮMw<ŁVdrJꎡJrWT ĮMw<ŁVdqJꞡ1䮩ĮUڧxXaXkG䮩CNJꞡJU]w<ŁVdqJꞡ1䮩C]jwwlW퓞QL*JieA+ZmI@<q4Ӽu0, k"]S2;CNKjJ]"{_O]TŐ̘Yx:JBʶ;9TqbojtdJm31]#{n+N#n Ӽu0, k#r[Tu ħ%GP ~%uտ~֫\/MBGim!@k/'ww<ŁVds>Kj1侨Į#Z.Sor5 pa -(ev0;=Nְ'*׹C}O2;CNK~JUMw<ŁVdr.Lj~J&5?QH ~%uݪ!cﺆm%n-g J@$`):d[ܘE#1Φ)ĩY$. %Ȝ¥;Mw=}[aNզc8ixΰ4츐RV)8k 2y{E#1Φ'C] Wj.~hi'i:$T@N0+Pj;euKZDHY e oxXaXkG:֥)ħ&/QH~%t=)PNNpAw5w@WEa!e 7)*[X;:d[ȅoR~U[T8c{NOܧxx|eqxdYf"Pp\UWk{d& Mh1r@CiRk 2y{2v""&m g;5%f@JU3%];"H- [nC|!yaHa;qY{Qo2kb)Ĉy6R988AYd=XuuUZEFҍ?O=i)-wjYd.NMJ\2y#mjm JwcVZLs.[IƛTv,U c ?|V%'&zӪSښSZuJ{K]+N!kJа$(b j,y\VN2QM3mV mc)$y4aX#NOikT4}RzMMc&. "0JB;EmK~<ʼnAM5TޯC晥X bĠsVĈġ[S+;)H8 0s/v?U/ M֍ZI[(Zrf}fV(zGtGҝGM}/.[%N9ˣDCh} :ր’TD})zM-~(|,>=Y5&~n[騰yv 7d-Iy%\#!6Nvn~Ƌ}͒lP[RR >TIBN뙦k48(umŬ,QBbC0k ABj\zV z/N.gnnӏ/Xʢ~Io,HO>|]3@C|[imxˎGvsd7(l<-( P@\SEn_z, .Fn[ڎ;2J>c*(+۪_?1tY=Z#n"Φ%Db/Š8#G.vrNrOzL[m)S0|a[ ʹw~ڦMwikRm)AӲ, Mp!A坧@Zr3X;7őn^K]+E\"9KPV.'.oBqvUyYr?Dסn1mV%7R !'+rq,e]'P+D;-AGei[C;x$doumPN:KL_$[ؖ#G%LV-J[+BR!kVBsr*!sWJu6*ج QC2FpIUM%xp-p|/g{_;kc[kW*2QYm #` N+{ME]5.h[#ZgE\]OZ`mpJc)u-= Oq󮴰+ +NSSLq+ jڗ(*L)l)S;`Wovg"赶X-0R:)o젤mo ʄjBHgXFiqו©$6R8Dبw%ɶ=BE.LyH%%IV ֲ?=3@r_Km|uְ7O)rcA/; Jk qoپ<ڤprC uT  )ୣuM@r/%3 E ǩԘϽr JҐ/S{<'˄a5Ul C} e0 ZD,2b6[Cm,#**Q8NRBڦh'C><4w9wh2JJQ6 ܑJ2ޙIwh[mژ/^F@)PQWS3@FMV{O\ܠ[]1BJʈ^;^V6wmT~yn?Q%vA;m., #*ZJ\-NTJf;V;bst ./-e<Ҕ)dcHpqyS43L_NvkzwW<%6~]F`>"O=A~?kRh:oTr*6-X$kšsuR.DvW87)$yV\^/hTaiȑ/rc2ӂ@O3n핔('i;T3>m/O?m,-(CŕH2 IQF7$hbMҡ6ޣ ٥#cL1 -m)js NVvv;6Ʈ:Q9yMi!JP <( #lՃ6l@'Z"nඤFDR‹*B7*g(J1g 7K s-8Csѐy7'[?Qd֥:P3-lrDWFt6 (-Gzղ1祳u{r.C(D5IR\APs!@JsbG֍)%m3Җx)ʳ+SDDWkSٲ+Ֆdg)MՄī^$֒.MCr {%{~Ĩ|+w/˻3Ց46PʺGJ\s8!X8]֓ehxר= |}̻!!B|oixTbs%|S'>ħJϸ{+zAZvHn'3qOLU+>ĮJvHn'3qWLU+>ĮJvHn'3qWLU+>ĮJvHn'3qWLU+>ĮJvHn'3qWLU+>ĮJvHn'3qWLU+>ĮJvHn'3qWLU+>ĮJvHn'3qWLU+>ĮJvHn'3qWLU+>ĮJvHn'3qWLU+>ĮJvHn'3qOL>m3JԧixTbs9Iϸ{)>zm3JԧixTbs9Jϸw)>zm3JԧixTbs9xIϸ{)zm3JԧixTbs9xIϸw*Q'>ĮJvHn'3qGLQ'>ĮJvHn'3qGLQ'>ĮJvHn'3qGLQ'>ĮJvHn'3qGLQ'>ĮJvHn'3qGLQ'>ĮJvHn'3qGL9oUݒL2!Џ9IR7Tw+AJia(V|5%֕W~ݪ/v֯?U_ M֖Ff>"O=??kYzx]QrTin܃)޸Hq;ieK-@A <Յ?oR -a>yn!&Eɻ-yL;!ն6kg##IXۼؐa39qVR7Ok44i6^K/y }Z VRN|^%capKͶV 1{OϼmfM05<.-pSm!!jJJ;k'e;ͻ&B/Kc3،VWӊBg%۹e晠";B~[JWBcyRZS dc}dZNjD+jy˸%j+cSGh$|!3@ii{uũw$p:Z' >Btmhս<#3r *:d6V߰A; V׫|ZY]# 強$(jyj[+*R~5lL׽ ̽'lJ^zxKiz[\%lx\.MqLY|@>Čv-+RdKO:(Z*mpT460?2lJ^xL`_b:/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/):/*iAlbR+:/*=XIXs>1<,6'vN9aR 5%0=k{5ǐҲgqYU̅YM;a[(V> hL%13oHYnLW}Rۍ)+I TX5z{)r?p\xxRd~O1s)M,Wh5 2d 5`yJzLU{F}2#_q< ІT6Ax)2Vi_y]Vӎ!o4l9<%Ԯ 5{~v1LEwQ?9RZ6"܅ ._1C7?] !%[(RTp$Mؔ%JPJ@$Z{& dԖ{Nڛ9!*'tt#L͛4HŐ57l)|6MjQxȁ&΋{1*4U0iDe/K_Q `都mͿ@n J8Q@ diȗHsSj5su\2  jm#m+ Չ~;edJPIQJA%*8`O ML]uwLpJU (JKY PCs\5=qe.lJT8mVHݴBõfo[?'ܝߊVXKKL Ң(GQztM>nu8; l) RHP³] ^ xX+R|SkPrСcnj=˕Q4j.! E( y `"פܕ7"Dňn2e[Dw(JV۶rTjbJ! R@53%JPޑvڻfߪ kB)r{cŗu\rhAP݂+Yl9QyL0KO$l)'hTxXHA"&ez}L8' rH-NVW8@4]3mW[iH/-/M);DH)IIVvR#/H -m@Ņ,ܢ^ϧrB_(6S.tZGW\rs ]7eHž@} JWlphJ1\&[o#/ !ʹ$7R(m$(`[5Ɲ/Ħʍڞh BmԢC*Q*|'d Rgݝӳoqvv#.ը)(x!*’S<8.ϳtxlȵܵL;R!/l8_RG֬w%@ vWVS8BTw{D;";%;m!IVdknoq,kM"f;qfW Ô(aBa鷁.}( ]*h ҩf*h ҩf*h ҩf*h ҩf*h ҩf*h ҩf*h ҩf*h ҩfj^W%6~^ݪ/vtO Ժ3 I}QQ~mꐸ2wlA AX>ldc*=~/oR#+JؐN+?Kqqr_/hq﨣vܪ3Ii4j*O98aX\t;#rHwk8n)Z~R:i9KhvGVGd{NR:iiKhvG- 3`bƙLs%˖P]ya)Bs1$t;#rHwh +O[GM#=ݧ)m4vRt;#rHwh +O[GM#=ݧ)m4vRt;#rHwh +O[GM#=ݧ)m4vRt;#rHwh +O[GM#=ݧ)m4vRt;#rHwh +O[GM#=ݧ)m4vRt;#rHwh +O[GM#=ݧ)m4vRt;#rHwh +O[GM#=ݧ)m4vRt;#rHwh +O[GM#=ݧ)m4vRt;#rHwh +O[GM#=ݧ)m4vRt;#rHwh +O[GM#=ݧ)m4vRt;#rHwh +O[GM#=ݬOdA>IIA?mJN@$k###@X_)}ĥ#ޣ@X_)}ĥ#ޣ@X_)}ĥ#ޣ@X_)}˱qma)$)*4Vݪ/v?ג%6~]F`>"O=;/o[I-e G@:oV}~^|,>=Y@`z)(R`z)(R`z)(R`z)(R`z)(R`z)(R`z)(R`z)(R`z)(R`z)(R`z)(R`z)(R`z+܄)IHMN<_UH?? TSrεݮ\auRA>f3 p^(AVBSGxǞ%ݥDvfGim{ .pjP9c؊oe*AC ##89H9kftP#7„-JKjO9'* g p85mlf|PJWvqԹn$9)\e)D%C N7s5P[Alxؘep{Gލ?7ώ57"2$p(ZiJZQYXSwدeV VVsmnӪ uN3ޒd)<: 95bۄ8yzΈl~zFCORI^QMzwݚ򟄿k<4R-'CG4ҝEML(qay)V1Ju7ީUg~..KEՖ]=+Wž.ϫWoL4-xzW><]=+W®L ^.ϫOOJ6OK/TOJ𧋧sUݓ6OM'TOJ𧋧sU݃6kҹ|)\w`@Zt}_ xzW>]ϭ:pgeekҹ|)\s>;/)]OJ𧋧sU̧}xv?]=+Wž.ϫW8#6@[t}_ xzW>\pGcmoҹ|)\s>;i_OJ𧋧sUͧ}|v?]=+Wž.ϫW8#6@[t}_ xzW>\pGcmoҹ|)\s>;i_OJ𧋧sUͧ}|v?]=+Wž.ϫW8#6@[t}_ xzW>\pGcmoҹ|)\s>;i_OJ𧋧sUͧ}|v?]=+Wž.ϫW8#6@[t}_ xzW>\pGGdeoҹ|)\w>;/)[OJ𧋧sU @Zt}_ e4TSsk`?@YKo)PO:T9bgQ 1j?^O]lv6OO'TkQtξ6OidM]=ME{:1kQtξ6Oizc@kOi_ 0GaIYp QloO@jBRޑ6Lf/v-vEkɾ\?wiDK0t'?Ju7ީ|HR[#JYP#Pm|^^V~^|,>=YrzXڻ=,om]ڮx#ޡB<.0Bxohmd-8#$cӊwirzXڻ2 }ݗlDDk \R0IN \;ᩚwԉaEia 9)NVT98P.+ݧc{j֢ne~}x*4BmBYLHJ 'h, b|ZͨI˱ OߍG[mm"=,om]q\7F;92YD<#E-n9H}5m:"mWoŽ(+m,QT3lg c{jӊwkCnjېPޑt]6t!ҕ$ $YM֥G=jnVdBAZ\q)I%Jā=,om]ڡJ>dg'+Jj8.$é QJJ|%@DAU4!Y3_ $+'t*/e(iā8569߁$fm% n\Yl@IIAIߞ''nW{bm|{2];n|߰ѹI^풒d'4s˭Iztnmڛ-!o!*Iܵ )!'g#;uPQn*4 Z6*'f,5,ܬdD%nj\B)I+ >P7W+d(2޸ZoÕ3k}&BXZOQ>J21@LL֏M6o3ۜ϶OS X-i); AI ƫfVbh0^C3%XZЕBoh i um71@JmŌ 񱵱j17MSizU&ܦJe.LK qնQ $F( ~hT@in+)$)R}$Pwl֒VT67};Zg`ck@}f-Wer ԧPimGk. nWGjٷ$TQ'Jjl+kџ96IC I8A$4G4ƱycCQ Zes0Ԝy# EWer ԧPimGk. n:3P][\.v$x$&6Tq>ߛBRЛKP\X`cB [i23\ZOZ54[*vKmmcg9 ddS M-T oƀf}Fi$nKW8mIIuu^ʰVn%\BB6rBJsrA$4AJY.pfHڔvR 3m.Zy%kjeD;(#p$8"晨eu^ʰVn%\BB6rBJsrAzF Tvv@^-%jHq̡߰@oLҩ@T u56"5#d]Hp(z7bMe2RJA{_>`Of4|2HqS$`\a[Rsݓ* 'yk}x_-0z)uSZeيH,ȩ5\ZwV0N5~¶p+!!;[X*NQf]ipxD#>S$`\a[Rsݓ+[}KaeJH sȠ:nhT ~ګIdq«IE e mڒ i˻KiV’7 g]P3KfejaS-Ԡ-eE kPpRFFsP FiBoG*יI1"9OI' `ꔶןwTpcim%:-T7f=#u[j* ʷk$5C֞q0[,)mV[lVFS eoG*יI1"9OI' `ꔶןwTp13QwHp"'R<"%Ik,qRI9K@kua%ߨ y7_k5YZ`ד%6~]F`>"O=5oS;-9G5 Ju7ޭL)B|eJl=Y%ڮ};]MkL\<Ԕ 4@JRQD͍{Xvv{v=|\EmzJd0`DYtaH*Xw`[ ϛtzK 7Wm /M-`!+ 1dx;#ݧ{Xvv{\:Ȩ/QOy7yʓo!Kp$jŗjŗq. ߍZhTd[\V2N2|dbӃR;;=ڐ}h}=/Mn3v*%JBH䌘\M#/Wľ^ݺg>,>1L5/A*SɌlGO94$J٣|Jݢa d;\O ́>wi/.EWC>"JjCKfٳ;e70ogJoiߩWsƝq?2hvjS!0)%`c}lfC78J&3^(PJy庠8BYI3Ҁ}+hIIRƎ%d<W0Ϡqq X4 :&乹$!O'v7 BP)H$ѢnoQ[b- [-JV; c;G9dܝLԱm]x6Jԕ)ţ<"mqJ|d”[E[rm%1#.-ړX oξѢnoQ[b- [-JV; c;G9Ni@F,:jQ{5r@KjZ,midd nHo="Nڞ-d8;փ쬊P54$)+)^TV``y[f=sff:Q0 Qlnt^iN\57څZUoLz1N˭?5E~.i{^&ZH2}7p:J6ֲP@;J#~55 S\ؑod,ˋ*JGԄoUe&׫ضAT[4[~DR/W;98$?zvۨj "Ve(Z@89[Yf"$()qc)J S6ws P ┠1Y@23 -`HsoݺjXg . `mgE\W-;+JT=fm0*H, [ S2YXJII8#xx5[5Uxm|a˔RN 8BCx%'"$:"—͸km۸'NeCJ;)FUwf<_pz{d]q$\ R@_J2Rp$䀡6x5[5Uxm|a˔RN 8BCx%'"4h&Ĩy"V[d9䨟%(ʰ*wJ! D)JIWG*⎏)ZOjej[hQRAdܕxی6 %%Ցwy&5Uw@~,C[ P[<*B$ł *-RoS˺9=ۂ\m ۙJx6Ҝ(kz&][T\unp D଑>kEɏdzif}'. ]HCFr8ɷԪM|wG'p\R덡s)OS}Mi@G<Ft}k3e$/#XH R 8ҔU~5 M׫_{O}^PMtZ']y>ΔSII/>oR~^|,>=X3Li)L43@)L43@)L43@)L43@)L43@)L4![ܐun%IECӍۿmkf)b#ſqy qTkgBr*BDl `qZ$ŢR?9JxPt ODG.- NʂA6.p|hEq>cZ/,7&dy*D35MGn 8+iL%գ1Dxꊆ*J^NkfⴻB F ޵$vCr#ť'aCsalr27AWV;S[o6$ZLy%EXR ݂I=+EիF9-Zm^/$RBJvr owAi oHj2eVm;R0 SY* Sk#;mݑ\:5T׮nU5NȊZsm%^ćP-?N(F\#$\pA#-%ԡ:қXdm!@)'y\/ ɃymkV.Z*[AQ8>ogyR>Fr8"Z M!26.%eA[ g;-+juE^Eԫ.sK,p㻂;+JI3 phE65o>Y@O 6dPjߎYi+-%N$ 0'\vf夻܋r栐 `4U8.pi;IG0䥙 [l9g!upBLA$,‚vҁR4˻<&4}J^DhR(;r>+Rh)fRh)fRh)fRh)fRh)f꿢oԞ/vn?')xKmpݦ-G.|D=Yfxڻ)b;6Rr?5gϊU3LVL4iT3@VL4iT3@VL4iT3@VL4iT3@VL4iT3@V-Umd{myk<IͮS%ͦ[ qD+ Q&%nri@Ch>9}l+9V`#,x9L5S4ZU3LS4ZU3LS4ZU3LS4ZU3LS4ZU3LS4ZU3LS4ZU3LS4ZU3LU^`ה%6~^G5? MExhј:OKo:oTN(ݢ[N&"wjmu|*m,ln~^|,>=Y'ڭN$ˁw[nUY=fOb{X\u۱u1XBAAqJ#8xdsY }«lN&;ƄuG<]jjSZ< d%`vέC-gVL35Klp@0+kdn?WT[ᣇYt! S7줸 ><$:o 6Sq]nr"q2%,i )Y*q'l3B24Qi! ;%j ~zlZיu ^R˙IJvNדؠ!"IzGɷel!I$99Dq|*jB~J-iM!iږARRwtƆ3rhۖ4S&SϭT[ZUg#v$c/O{-d&T6/)x7HP>09MCu&MZP$3nR3VIgp5Lͅ:^lgZKaԥhQy* gr\EtxDuEcq/0JU:YrIHՌPiM?9ے1^J\[d2y# Kw>3u ./KnCo,!Xᔢ$RG9ȩhmB ̕-ϸ?1L`FFSR()JJRǹn#W*\*zKl֓δ*u]g$őoŜXςA UI+'t*Wg-.ci*> k)um_@CN $EXCZ! /jAjR6# mgoq_v=SysVlė"$%_HmW8JP}{AgsK:G<L,:BFrsNriK$[/fSR~s!,kYCdGG5A$GAk桸ٝrꭷv 2 `\P9Fϔh+X]ҝBE; '~0d)d`vʳJ4sU[%|{3dV-m )+ SjIH A>PCL_fY`z)Iw%nfU2|{-:z+Kp!2jB()nݹ8߹oJX#bڣŭmEEÅ%hRs'$wcEL>ŵVعHJTIq#HKiVVԬڣZOEqBO )['#d`lܵlj^ơ8d:C#ozyNRy9=&n˽282Su*!.! pchdbh;Nĉ"2Cn A*aBpАcokL;H 8bH\Zpq4q/J՞qNuxj'xRnTiF=f7LTۢeĜw@ lҥcD[;r?bn~9EvHkϜw}CxXv-pyME|IHZml q Ve}RڼmFS6<\83;RZ.bKSN`=xD1僻w5[Nө'gC`Ø"p5]%R,XUQaAt8VR;$d3ҫN1cMXN7¯t6;X

How to use anyRemote

tray icon and menu

To run anyRemote frontend execute command:

  • Gnome: ganyremote
  • KDE: kanyremote

After startup anyRemote icon will appear in the tray. To open main window choose "Restore" tray menu item. It is possible to specify -o option to open main window at startup. Upon startup frontend will scan all found configuration files and show list which will look like the picture below.

main window

The status column shows does particular application runs on PC or not. Frontend will rescan application activity each minute (can be changed in preference window).

To run anyRemote it needs just to double-click application name. Alternatively it is possible to use tray menu items Execute/Stop, or File->Execute/Stop menu items in main window.

In preferences window (see below) it is possible to specify locations of configuration files, filters and tune various parameters.

main window

To use anyRemote GUI it needs to have at least one element in "Directory" list. In normal situation frontend will find location of configurational files automatically.

main windowBy default frontend will scan for BT devices each minute. Found devices will be marked as Available in list. To be detected an BT device must be in discoverable mode. If new BT device will be detected, then Device Detail window (see below) will be shown automatically.

In Device Detail window it is possible to

  • ping BT device
  • verify will it works with anyRemote in AT-mode
  • upload J2ME client to the phone
  • configure anyRemote autostart in case of BT device will be found
  • set configuration file which will be used by anyRemote if BT device will be found

main window

If something goes wrong be double sure that all software prerequisites are installed.

How to use anyRemote from command line

By default anyRemote will search the following configuration files:

  • /.anyremote.cfg
  • $HOME/.anyremote.cfg

You can specify another configuration file with -f option, for example:

anyremote -f /...path_to.../xmms.cfg -s peer[,peer ...]

See Man page for details.

You may find some predefined configuration files in these directories:

  • cfg-data/AT-mode
  • cfg-data/Server-mode
  • cfg-data/Bemused-emulation

Web interface

To use anyRemote with any device which contains web browser and which can connect to PC by TCP/IP (GPRS, Wi-Fi, ...) it is possible to use built-in web interface.

Logging

By default anyRemote does not prints any logging information.

It is possible to add command

Make(var,Log,by_value,false|true|debug);
to the (Init)= ... command sequence in the configuration file or use -log command line option to allow logging.

By default all logging information will be stored in $HOME/.anyRemote/anyremote.log file. This could be altered by setting $(TmpDir) variable or -tmpdir commandline option.

If $(TmpDir) variable or -tmpdir commandline option are points outside of user home directory, then logging information will be printed to the file $(TmpDir)/anyremote.log.${USER}

Sound control with amixer

If configuration file uses amixer utility to control sound volume and if it needed to control a non-default (0) sound card it is possible to add the folowing command

Make(var,MixerCard,by_value,1); % change 1 to the appropriate sound card number

to the $HOME/.anyRemote/hook_init file.

If configuration file uses amixer utility to control sound volume and if it needed to control a channel different from Master it is possible to add the folowing command

Make(var,MixerChannel,by_value,PCM); % change PCM to appropriate channel to control

to the $HOME/.anyRemote/hook_init file.

anyremote-6.7.1/doc-html/g-shots.html0000644000232200023220000001022712061426051020056 0ustar debalancedebalance anyRemote · Control your computer with your phone

gAnyRemote

Tray icon menu.

Execute and Stop items allow to run or stop anyRemote. Preferences item opens the main window.

tray icon menu

Main window.

Here it is possible to choose a configuration file, which will be used by anyRemote.

  • Field Status can be: Not available, Available and Running
  • Field Mode can be: AT, Server, Bemused, iViewer or empty.
  • Field Type can be: Application, Custom, Example or empty.

It is possible to filter-out items from this list with help of filters from Preference window.

main menu

Preferences window.

preferences

Device browser

device browser

Device details

device details

Editor window

configuration file editor

Tips.

If You did not see icons in menus and buttons run gconf-editor and check the keys

/desktop/gnome/interface/buttons_have_icons
/desktop/gnome/interface/menus_have_icons
anyremote-6.7.1/TODO0000644000232200023220000000000112061426052014553 0ustar debalancedebalance anyremote-6.7.1/ChangeLog0000644000232200023220000004421113231303523015645 0ustar debalancedebalance* Mon Jan 22 2018 Mikhail Fedotov - 6.7.1 - Improve interoperability with GUI frontends. * Tue Jan 15 2018 Mikhail Fedotov - 6.7 - Some fixes. Configuration file for MPV was added. * Tue Mar 15 2016 Mikhail Fedotov - 6.6.1 - Bluez-related fixes. * Sat Feb 27 2016 Mikhail Fedotov - 6.6 - Scale images and cover pictures automatically and separately for each connected client. Add Set(hints,...), Set(list,dir,...) and Set(text,file,...) commands. Added -cfgdir and -tmpdir commandline options. * Mon Dec 08 2014 Mikhail Fedotov - 6.5 - Avahi support. * Sun Mar 02 2014 Mikhail Fedotov - 6.4 - Support for keyboard and mouse emulation events for Android client. * Thu Sep 12 2013 Mikhail Fedotov - 6.3.2 - Configuration file for SMPlayer2 as added. FreeBSD and some other fixes. * Wed Jun 12 2013 Mikhail Fedotov - 6.3.1 - Small enhancements and bugfixes. * Sat Apr 27 2012 Mikhail Fedotov - 6.3 - Configuration file for DjView was added. Multiconnection support. Named cover auto-uploading. * Tue Dec 18 2012 Mikhail Fedotov - 6.2 - Use $(TmpDir) in configuration files to store temporary file. Use $(WaitSeconds) variable to kill neverending scripts. Use allowed_hosts file and $(AllowedOnly) variable to access control. Avoided to use bash in favour of sh in configuration files. Support multiple inheritance for modes. Configuration file for Foobnix and Noise were added. Majority of audio player configuration files were reworked. * Mon Oct 08 2012 Mikhail Fedotov - 6.1 - Support of XML services interface. Support Set(vibrate,duration) command. Add possibility to disable GLIB usage (for OpenWRT build). Major code restructurization. * Thu May 17 2012 Mikhail Fedotov - 6.0 - Support of build-in web server, no anyremote2html package needed anymore. Commands Set(parameter,icon_size|icon_padding,...) and Get(icon_size|icon_padding) were added, command Set(skin,...,split,sizeXX...) and Set(parameter,lazy_repaint) were removed. Lot of configuration files were updated. * Thu Jan 05 2012 Mikhail Fedotov - 5.5 - Use popen() for get command results. Configuration file for guayadeque (thanks to Fabian Frank) was added, support inheritance in mode definition, add Set(popup,...) command, drop support of Set(text,wrap,..) command. Some configuration files reorganization. * Sun Sep 4 2011 Mikhail Fedotov - 5.4.2 - Configuration file for Clementine (thanks to Lorenzo Prez de Arce) and DeadBeef (thanks to s_erge) were added. * Tue Mar 15 2011 Mikhail Fedotov - 5.4.1 - Small bugfix. Configuration file for CMUS (thanks to Arthus Belliqueux) was added. * Sat Feb 12 2011 Mikhail Fedotov - 5.4 - Fix work in AT-mode with Bluez 4.X * Tue Oct 19 2010 Mikhail Fedotov - 5.3 - Support volume control through PulseAudio. Added configuration files for Miro player, MPRIS-compatible players. Some fixes in configuration files. * Wed Aug 25 2010 Mikhail Fedotov - 5.2 - Enhanced support for Get(password) command. Properly handle ampersand in file names. * Thu Jul 8 2010 Mikhail Fedotov - 5.1.3 - Some configuration files and documentation were corrected. Added configuration file for QMMP. * Sat Mar 13 2010 Mikhail Fedotov - 5.1.2 - Some configuration files and documentation were corrected. * Wed Feb 03 2010 Mikhail Fedotov - 5.1.1 - Fixed Red Hat bugzilla bug 560182. Some configuration files and documentation were corrected. * Mon Jan 04 2010 Mikhail Fedotov - 5.1 - Better support of Command Fusion's iViewer, tested on iPod Touch. Exclude keyjnote, kpdf, kuickshow, kview, noatun and KDE3-related configuration files from the release. Added configuration file for Dragon player. Add KDE4 support in Kaffeine configuration file. * Mon Sep 14 2009 Mikhail Fedotov - 5.0 - anyRemote was rewritten using multithreading and GLib. Native D-BUS support. Format of configuration file was significantly changed. * Mon Mar 30 2009 Mikhail Fedotov - 4.18.1-1 - Add GuiAppModes tag to configuration files. * Tue Mar 17 2009 Mikhail Fedotov - 4.18-1 - Get(password) and Get(ping) commands were added. Experimental support for iPhones/iPods with Command Fusion iViewer installed. * Wed Feb 4 2009 Mikhail Fedotov - 4.17-1 - Fixed crash with all-in-one2.cfg. Added configuration files for Impressive (former KeyJnote, thanks to Cedric Barboiron). * Tue Jan 27 2009 Mikhail Fedotov - 4.16-1 - Add possibility to set SDP service name. Corrections of configuration files. Configuration files for KsCD/KDE4 and Eye-of-Gnome were added. Created icon auto-upload feature. * Fri Jan 16 2009 Mikhail Fedotov - 4.15-1 - Fixed crash issue in case of anyremote was runned without X. Fix hang in Load() command in case of empty file. * Sat Jan 10 2009 Mikhail Fedotov - 4.14-1 - Small corrections in configuration files. Configuration files for AlsaPlayer, Digikam (thanks to Marcus Hardt) and GPicView were added. Syntax of Emulate() command was extended. * Sun Dec 07 2008 Mikhail Fedotov - 4.13-1 - Small corrections in configuration files. Configuration file for WmCtrl and Juk/KDE4 were added. * Thu Nov 13 2008 Mikhail Fedotov - 4.12-1 - Added configuration file for XBMC (thanks to Everthon Valadao), Okular Gwenview/KDE4 and Amarok2/KDE4. Support non-UTF8 encodings in configurational files. Intergrated FreeBSD patch by Alex Samorukov. * Mon Oct 20 2008 Mikhail Fedotov - 4.11-1 - Fixed issues with non-correct handling of files and directories names with braces and brackets in some configuration files. Several small changes in code. * Mon Oct 6 2008 Mikhail Fedotov - 4.10-1 - Fixed issue with non-correct handling of files and directories names with braces and brackets in some configuration files. A lot of changes in documentation. Several small changes in code. * Mon Sep 29 2008 Mikhail Fedotov - 4.9-1 - Get(version) command was introduced. Added possibility to create user-specific phone initialization. * Tue Sep 9 2008 Mikhail Fedotov - 4.8.1-1 - Small corrections. * Thu Sep 4 2008 Mikhail Fedotov - 4.8-1 - Added configuration file for gThumb (thanks to Adriaan van Kekem) Added GuiDescription field to configuration files. * Thu Aug 7 2008 Mikhail Fedotov - 4.7.1-1 - Fix crash issue if no bluetooth service runned * Tue Aug 5 2008 Mikhail Fedotov - 4.7-1 - Updates of configuration file for DVB-T viewing by Kaffeine (thanks to Johann Bauer), configuration files for Keyjnote (thanks to Gabriel) and Evince were added. * Fri May 30 2008 Mikhail Fedotov - 4.6-1 - Small enhancements. configuration file for kaffeine (thanks to Massimo Robbiati) was added. * Sun May 18 2008 Mikhail Fedotov - 4.5-1 - Configuration files for DVB-T viewing by Kaffeine (thanks to Johann Bauer) Kmid, Smplayer, Decibel-audio-player, amarok (v3) (thanks to Carlos Snchez Mateo) were added. anyRemote was tested with Motorola-KRZR-K1 Better integration with anyremote2http - "-http" command line parameter was added. * Fri Mar 07 2008 Mikhail Fedotov - 4.4-1.fc8 - Spec file correction. Configuration file for GnomeRadio was added. Some minor enhancements. Move J2ME part to the separate package because of licensing issues. anyRemote was tested with Sagem-my501c * Mon Feb 15 2008 Mikhail Fedotov - 4.3-1.fc8 - Enhanced Set(... font ...) commands. Enhanced Bemused clients support: playlist operation supported whenever possible. Added configurational file for Mpd in Bemused-emulation mode. Anyremote was tested with SE-W950i. Support for touchscreen devices was improved. * Fri Jan 10 2008 Mikhail Fedotov - 4.2-1.fc8 - anyRemote was tested with Motorola-RIZR-Z3 Command RemoteOn, RemoteOff, TempDisconnect were deprecated. Commands Make(...), Emulate(...) were introduced. Xautomation dependency is deprecated (XTest support is build-in). * Mon Jan 07 2008 Mikhail Fedotov - 4.1 - anyRemote was tested (without success) with Samsung-SGH-X820 anyRemote was tested with Samsung-SGH-U600 (thanks to Pierre Dumot) Command Flush(all) and Set(cover, ...) were introduced. Syntax of Timer() command was changed. CancelTimer() command was deprecated. * Sat Dec 15 2007 Mikhail Fedotov - 4.0 - Configuration files for xmms2 (thanks to Gyuris Szabolcs), Comix, Elisa and Xfmedia were added. Configuration files for Digikam, KMplayer and Twinkle were removed. A lot of corrections in configuration files. Now anyRemote could work with some IR remote controls supplied with TV tuner cards. Anyremote was tested with Nokia-6288, Nokia-6111 in server mode throgh IR connection and with IR remote from AverMedia Studio 507. Actually this is the first release which is possible to work somehow in server mode with non-JSR-82 compatible phones. * xxx xxx xx 200x Mikhail Fedotov - 3.6 - Support for touchscreen devices was added in java client. anyRemote was tested with Motorola-A1200 (thanks to Sebastian Turzanski) Motorola-K1 patch by Kevin Fox was integrated. Configuration file for digikam was corrected. * xxx xxx xx 200x Mikhail Fedotov - 3.5 - Small enhancements. Command Get(is_exists,...) was added. Configuration files for Gmusicbrowser and Moc were added. Configuration file for Kopete was modified to work correctly with kopete-anyremote-0.4. * xxx xxx xx 200x Mikhail Fedotov - 3.4 - Small enhancements. * xxx xxx xx 200x Mikhail Fedotov - 3.3 - Small enhancements. Command Set(disconnect) was introduced. Fixed build issue in Gentoo. * xxx xxx xx 200x Mikhail Fedotov - 3.2 - Configurationfile for xine (new version) and MythTv (thanks to Tim Hicks) were added. cfg-examples directory was renamed to cfg-data. *.spec file was changed: solid rpm was separated into 3 RPM's. Lot of bugfixes and small enhancemens. * xxx xxx xx 200x Mikhail Fedotov - 3.1 - New command Get(screen_size|model) was introduced. Set(image...) command was enhanced. In AT-mode nothing will be sent to phone after RemoteOff command. Java client was corrected to work properly with Nokia-E70. Configuration file for Mplayer, Quodlibet, VLC and Nokia-E70 were added. A lot of bugfixes. Difference beetween 3.0 and 2.12 -------------------------------------------------------------------------------- New command Set(image,...) was introduced. It allows to transfer to phone images and then show them on the screen. According to this feature communication protocol was slightly changed. Communication code in java client was reworked completely. configurationfile for Kpdf, Listen and Open Office Impress were added. Since this versions all temporary and log files will be created in $HOME/.anyRemote instead of /tmp. Difference beetween 2.12 and 2.11 -------------------------------------------------------------------------------- configurationfile for Aqualung was added. anyRemote was tested over Wi-Fi connection between Nokia-E61 and PC. Java client starts to support CDLC-1.0 phones. A lot of bugs were fixed. Difference beetween 2.11 and 2.10 -------------------------------------------------------------------------------- Java client was tested on Motorola-V3i and Nokia-E61. Set(iconlist,...) command was introduced. Added possibility to use 16x16 or 32x32 png icons. Configurationfile for Kopete was added. A lot of bugfixes and enhancements. Difference beetween 2.10 and 2.9 -------------------------------------------------------------------------------- Java client was tested on Motorola-L6 and Siemens-S65. New capability to work as back-end with separated GUI front-endswas introduced. New commands Set(parameter,...) and Set(repaint) was introduced. Command Set(debug,...) was changed to Set(parameter,debug,...). A lot of bugs were fixed. Configuration file for Exaile was added. Difference beetween 2.9 and 2.8 -------------------------------------------------------------------------------- New commands Include(...) and ExecAndSet(upload,...) were introduced. Now it is possible to upload icons to Java Client. configurationfiles for Audacious, Banshee, BMP, Freevo, JuK, MPD, Totem, custom made RSS reader and configuration file for icon uploading were added. Difference beetween 2.8 and 2.7 -------------------------------------------------------------------------------- New commands Load(...) and Set(list,select,...) were introduced. configurationfiles for KdeTv, Gwenview, Rhythmbox, XdTV were added. Difference beetween 2.7 and 2.6 -------------------------------------------------------------------------------- New command Macro() was introduced. Command Set(list,menu...) was changed to Set(menu...). It is possible to add custom menu to any screen of Java Client. It is possible to select several files in file manager screen of Java Client. Several little enhancements and bugfixes. v2.7.1 differs from v2.7 only by updated Java Client Difference beetween 2.6 and 2.5 -------------------------------------------------------------------------------- Several enhancements and serious bugfixes. Set(volume,X) command was introduced to show volume bar. Difference beetween 2.5 and 2.4 -------------------------------------------------------------------------------- File manager which looks like MC was added to Java Client. Several enhancements and bugfixes. Xine management example was added. Difference beetween 2.4 and 2.3 -------------------------------------------------------------------------------- Maintenance release. Java Client was tested with Nokia-6021 Difference beetween 2.3 and 2.2 -------------------------------------------------------------------------------- Enhancemens were made mainly in Java Client. Now it supports: different icon layouts, it can be configured to run in fullscreen mode. Exception handling improved and lots of bugs were fixed. Difference beetween 2.2 and 2.1 -------------------------------------------------------------------------------- Look and feel of GUI of Java Client was redesigned. Now it is possible to change colors and font size. Choose actions possible not only by numeric key but also by joystick. Support of lists was added (now anyRemote can be configured to support playlists) Difference beetween 2.1 and 2.0 -------------------------------------------------------------------------------- Bugfixes and small enhancements. (EnterMode) and (ExitMode) event handlers were added. Set(text,...) command was added. Difference beetween 2.0 and 1.4 -------------------------------------------------------------------------------- This release is the first step to create application which could provide "bemused-like" functionality. Format of configurational file was changed completely. Now anyRemote could works as server (like bemused). Java client was created for JSR82-compatible phones. Difference beetween 1.4 and 1.3 -------------------------------------------------------------------------------- Concept of key "alias" was introduced. Tool was tested on Siemens-S55. A lot of bugfixes. Difference beetween 1.3 and 1.2 -------------------------------------------------------------------------------- Concepts of "mode" was introduced to make possible to set more than one command to the key. Tool was tested on SE-K750 (BT&IR). Some bug was fixed and some code was cleaned up. digikam and kmplayer, kuickshow and web-stream and "mega-example" all-in-one examples were addded. Difference beetween 1.2 and 1.1 -------------------------------------------------------------------------------- It is possible substuitute current time into command handlers. Two new handlers for connect and disconnect event were added. "Greeting" configuration option was deleted in favour of new connect handler. Anyremote was tested with Motorola-V500 with cable connection. kview, tvtime and keyboard emulaton examples was added. Difference beetween 1.1 and 1.0 -------------------------------------------------------------------------------- SonyEricsson-K700-related patches included. Added 2 examples of conf.files (For Sagem and for SE). Daemon configuration option was changed to AutoConnect. Kplayer, KsCd, Noatun, Twinkle examples were added. Difference beetween 1.0 and 0.9 -------------------------------------------------------------------------------- Sagem-related patches included. Now AnyRemote accept empty +CKEV input also (+CKEV: ,1). Difference beetween 0.9 and 0.8 -------------------------------------------------------------------------------- Auto-detect phone model. CmerOn/CmerOff conf. parameters are not mandatory now. Difference beetween 0.8 and 0.7 -------------------------------------------------------------------------------- Auto-muting feature during incoming call. Switch remote control functionality on/off without disconnect. Difference beetween 0.7 and 0.5 -------------------------------------------------------------------------------- Handling incoming calls. It is possible to set multikey command. -h command line was option added. Difference beetween 0.5 and 0.4 -------------------------------------------------------------------------------- Changed format of conf file. Docs corrected. Difference beetween 0.4 and 0.3 -------------------------------------------------------------------------------- Greeting parameter added to configuration file. Alarm feature added. Correction of misprintings in README. Examples of configuration files in directory cfg-examples were corrected. anyremote-6.7.1/compile0000755000232200023220000001632613144520723015465 0ustar debalancedebalance#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2016-01-11.22; # UTC # Copyright (C) 1999-2017 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: anyremote-6.7.1/config.guess0000755000232200023220000012743212100021545016415 0ustar debalancedebalance#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-06-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-gnueabi else echo ${UNAME_MACHINE}-unknown-linux-gnueabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: anyremote-6.7.1/specs/0000755000232200023220000000000013226200116015204 5ustar debalancedebalanceanyremote-6.7.1/specs/control.ubuntu0000644000232200023220000000203112673224605020142 0ustar debalancedebalanceSource: anyremote Section: utils Priority: extra Maintainer: Mike Fedotov HomePage: http://anyremote.sourceforge.net Build-Depends: debhelper (>= 6), autotools-dev, libbluetooth-dev, libx11-dev, libxtst-dev, libxi-dev, libglib2.0-dev (>= 2.18), libdbus-1-dev (>= 1.2.4), libdbus-glib-1-dev (>= 0.76), libavahi-core-dev, libavahi-client-dev Standards-Version: 3.9.3 Package: anyremote Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libbluetooth3, libxtst6, libavahi-common3, python Description: Remote control software for PC. . anyRemote is remote control software on Linux, which can manage PC through Bluetooth, InfraRed, Wi-Fi or TCP/IP connection. Package: anyremote-data Depends: Replaces: anyremote (<<6.6) Architecture: all Description: architecture independent files for anyremote . This package contains the data file for anyremote. Package: anyremote-doc Section: doc Depends: Architecture: all Description: Documentation for anyremote . This package contains the HTML documentation offline. anyremote-6.7.1/specs/anyremote-mdv.spec0000755000232200023220000002253313231303546020666 0ustar debalancedebalance%define name anyremote %define version 6.7.1 %define release %mkrel 1 Summary: Remote control through Wi-Fi or bluetooth connection Name: %{name} Version: %{version} Release: %{release} License: GPLv3+ Group: Applications/System Source0: %{name}-%{version}.tar.gz URL: http://anyremote.sourceforge.net/ BuildRequires: libbluez-devel, x11-proto-devel BuildRequires: glib2-devel >= 2.20.1, dbus-devel, dbus-devel >= 0.80 BuildRequires: dbus-glib-devel >= 0.80 BuildRequires: libxtst-devel >= 1.0.3 BuildRequires: avahi-devel >= 0.6.25 Requires: bc, wmctrl, dbus-glib >= 0.80, avahi-libs, anyremote-data >= 6.6 Provides: anyremote = %{version} BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot %description Remote control software for applications using Wi-Fi or Bluetooth. %prep %setup -q %build ./configure --prefix=%{_prefix} --libdir=%{_libdir} make CFLAGS="$RPM_OPT_FLAGS" %install rm -rf $RPM_BUILD_ROOT %makeinstall INSTALLDIR=$RPM_BUILD_ROOT %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %{_bindir}/%{name} %{_datadir}/man/man1/anyremote.1.lzma %changelog * Mon Jan 22 2018 Mikhail Fedotov - 6.7.1 - Improve interoperability with GUI frontends. * Tue Jan 15 2018 Mikhail Fedotov - 6.7 - Some fixes. Configuration file for MPV was added. * Tue Mar 15 2016 Mikhail Fedotov - 6.6.1 - Bluez-related fixes. * Sat Feb 27 2016 Mikhail Fedotov - 6.6 - Scale images and cover pictures automatically and separately for each connected client. Add Set(hints,...), Set(list,dir,...) and Set(text,file,...) commands. Added -cfgdir and -tmpdir commandline options. * Sat Dec 20 2014 Mikhail Fedotov - 6.5 - Avahi support. * Sun Mar 02 2014 Mikhail Fedotov - 6.4 - Support for keyboard and mouse emulation events for Android client. * Thu Sep 12 2013 Mikhail Fedotov - 6.3.2 - Configuration file for SMPlayer2 as added. FreeBSD and some other fixes. * Wed Jun 12 2013 Mikhail Fedotov - 6.3.1 - Small enhancements and bugfixes. * Sat Apr 27 2012 Mikhail Fedotov - 6.3 - Configuration file for DjView was added. Multiconnection support. Named cover auto-uploading. * Tue Dec 18 2012 Mikhail Fedotov - 6.2 - Use $(TmpDir) in configuration files to store temporary file. Use $(WaitSecons) variable to kill neverending scripts. Use allowed_hosts file and $(AllowedOnly) variable to access control. Avoided to use bash in favour of sh in configuration files. Support mutliple inheritance for modes. Configuration file for Foobnix was added. Majority of audio player configuration files were reworked. * Mon Oct 08 2012 Mikhail Fedotov - 6.1 - Support of XML services interface. Support Set(vibrate,duration) command. Add possibility to disable GLIB usage (for OpenWRT build). Major code restructurization. * Thu May 17 2012 Mikhail Fedotov - 6.0 - Support of build-in web server, no anyremote2html package needed anymore. Commands Set(parameter,icon_size|icon_padding,...) and Get(icon_size|icon_padding) were added, command Set(skin,...,split,sizeXX...) and Set(parameter,lazy_repaint) were removed. Lot of configuration files were updated. * Thu Jan 05 2012 Mikhail Fedotov - 5.5 - Use popen() for get command results. Configuration file for guayadeque (thanks to Fabian Frank) was added, support inheritance in mode definition, add Set(popup,...) command, drop support of Set(text,wrap,..) command. Some configuration files reorganization. * Sun Sep 4 2011 Mikhail Fedotov - 5.4.2 - Configuration file for Clementine (thanks to Lorenzo P�rez de Arce) and DeadBeef (thanks to s_erge) were added. * Tue Mar 15 2011 Mikhail Fedotov - 5.4.1 - Small bugfix. Configuration file for CMUS (thanks to Arthus Belliqueux) was added. * Sat Feb 12 2011 Mikhail Fedotov - 5.4 - Fix work in AT-mode with Bluez 4.X * Tue Oct 19 2010 Mikhail Fedotov - 5.3 - Support volume control through PulseAudio. Added configuration files for Miro player, MPRIS-compatible players. Some fixes in configuration files. * Wed Aug 25 2010 Mikhail Fedotov - 5.2 - Enhanced support for Get(password) command. Properly handle ampersand in file names. * Thu Jul 8 2010 Mikhail Fedotov - 5.1.3 - Some configuration files and documentation were corrected. Added configuration file for QMMP. * Sat Mar 13 2010 Mikhail Fedotov - 5.1.2 - Some configuration files and documentation were corrected. * Wed Feb 03 2010 Mikhail Fedotov - 5.1.1 - Fixed Red Hat bugzilla bug 560182. Some configuration files and documentation were corrected. * Mon Jan 04 2010 Mikhail Fedotov - 5.1 - Better support of Command Fusion's iViewer, tested on iPod Touch. Exclude keyjnote, kpdf, kuickshow, kview, noatun and KDE3-related configuration files from the release. Added configuration file for Dragon player. Add KDE4 support in Kaffeine configuration file. * Mon Sep 14 2009 Mikhail Fedotov - 5.0 - anyRemote was rewritten using multithreading and GLib. Native D-BUS support. Format of configuration file was significantly changed. * Mon Mar 30 2009 Mikhail Fedotov - 4.18.1-1 - Add GuiAppModes tag to configuration files. * Tue Mar 17 2009 Mikhail Fedotov - 4.18-1 - Get(password) and Get(ping) commands were added. Experimental support for iPhones/iPods with Command Fusion iViewer installed. * Wed Feb 4 2009 Mikhail Fedotov - 4.17-1 - Fixed crash with all-in-one2.cfg. Added configuration files for Impressive (former KeyJnote, thanks to Cedric Barboiron). * Tue Jan 27 2009 Mikhail Fedotov - 4.16-1 - Add possibility to set SDP service name. Corrections of configuration files. Configuration files for KsCD/KDE4 and Eye-of-Gnome were added. Created icon auto-upload feature. * Fri Jan 16 2009 Mikhail Fedotov - 4.15-1 - Fixed crash issue in case of anyremote was runned without X. Fix hang in Load() command in case of empty file. * Sat Jan 10 2009 Mikhail Fedotov - 4.14-1 - Small corrections in configuration files. Configuration files for AlsaPlayer, Digikam (thanks to Marcus Hardt) and GPicView were added. Syntax of Emulate() command was extended. * Sat Dec 07 2008 Mikhail Fedotov - 4.13-1 - Small corrections in configuration files. Configuration file for WmCtrl and Juk/KDE4 were added. * Thu Nov 13 2008 Mikhail Fedotov - 4.12-1 - Added configuration file for XBMC (thanks to Everthon Valadao), Okular Gwenview/KDE4 and Amarok2/KDE4. Support nonn-UTF8 encodings in configurational files. Intergrated FreeBSD patch by Alex Samorukov. * Mon Oct 20 2008 Mikhail Fedotov - 4.11-1 - Fixed issues with non-correct handling of files and directories names with braces and brackets in some configuration files. Several small changes in code. * Mon Oct 6 2008 Mikhail Fedotov - 4.10-1 - Fixed issue with non-correct handling of files and directories names with braces and brackets in some configuration files. A lot of changes in documentation. Several small changes in code. * Mon Sep 29 2008 Mikhail Fedotov - 4.9-1 - Get(version) command was introduced. Added possibility to create user-specific phone initialization. * Tue Sep 9 2008 Mikhail Fedotov - 4.8.1-1 - Small corrections. * Thu Sep 4 2008 Mikhail Fedotov - 4.8-1 - Added configuration file for gThumb. Added GuiDescription field to configuration files. * Thu Aug 7 2008 Mikhail Fedotov - 4.7.1-1 - Fix crash issue if no bluetooth service runned * Tue Aug 5 2008 Mikhail Fedotov - 4.7-1 - Small enhancements * Fri May 30 2008 Mikhail Fedotov - 4.6-1 - Small enhancements * Sun May 18 2008 Mikhail Fedotov - 4.5-1 - Better integration with anyremote2http: -http command line parameter was added. * Tue Mar 07 2008 Mikhail Fedotov - 4.4-1.fc8 - Spec file correction. Some minor enhancemens. * Tue Mar 02 2008 Mikhail Fedotov - 4.3-4.fc8 - Spec file correction. Move J2ME stuff out of the package. * Tue Feb 26 2008 Mikhail Fedotov - 4.3-3.fc8 - Spec file correction * Sun Feb 17 2008 Mikhail Fedotov - 4.3-2.fc8 - Spec file correction * Mon Feb 15 2008 Mikhail Fedotov - 4.3-1.fc8 - Bugfixes and small enhancements.Support for touchscreen devices was improved * Fri Jan 10 2008 Mikhail Fedotov - 4.2-1.fc8 - Spec file modified. %package data Summary: Configuration files for anyRemote Group: Applications/System %description data Configuration files for anyRemote %files data %defattr(-,root,root,-) %{_datadir}/%{name} %package doc Summary: Documentation for anyRemote Group: Applications/System %description doc Documentation for anyRemote %files doc %defattr(-,root,root,-) %{_datadir}/doc/%{name} anyremote-6.7.1/specs/anyremote.spec0000644000232200023220000002601113231303557020074 0ustar debalancedebalance# norootforbuild %define name anyremote %define version 6.7.1 Summary: Remote control software for applications using Bluetooth or Wi-Fi. Name: %{name} Version: %{version} %if 0%{?suse_version} || 0%{?sles_version} Release: 1.suse11 %endif %if 0%{?mandriva_version} %define release %mkrel 1 Release: %{release} %endif %if 0%{?fedora_version} || 0%{?rhel_version} || 0%{?centos_version} Release: 1%{?dist} %endif %if %{undefined suse_version} && %{undefined sles_version} && %{undefined mandriva_version} && %{undefined fedora_version} && %{undefined rhel_version} && %{undefined centos_version} Release: 1 %endif License: GPLv3+ %if 0%{?suse_version} || 0%{?sles_version} Group: System/Management %else Group: Applications/System %endif %if 0%{?suse_version} || 0%{?sles_version} BuildRequires: bluez-libs, xorg-x11-devel, xorg-x11-libX11-devel, xorg-x11-libs, avahi-devel Requires: bluez-libs, xorg-x11-libs, wmctrl, avahi-libs, anyremote-data >= 6.6 %endif %if 0%{?mandriva_version} %ifarch x86_64 Requires: binutils, coreutils, bc, gawk, libbluez2, libxtst6, libxtst6-devel, wmctrl, avahi-libs, anyremote-data >= 6.6 BuildRequires: libbluez2, libxtst6, libxtst6-devel, x11-proto-devel, libbluez-devel, avahi-devel %else Requires: binutils, coreutils, bc, gawk, libbluez2, libxtst6 >= 1.0.3, libxtst6-devel >= 1.0.3, wmctrl, avahi-libs, anyremote-data >= 6.3 .1 BuildRequires: libbluez2 >= 3.15, libxtst6 >= 1.0.3, libxtst6-devel >= 1.0.3, x11-proto-devel, libbluez-devel, avahi-devel %endif %endif %if 0%{?fedora_version} || 0%{?rhel_version} || 0%{?centos_version} Requires: bc, wmctrl, avahi-libs, anyremote-data >= 6.6 BuildRequires:bluez-libs-devel, libX11-devel, libXtst-devel, xorg-x11-proto-devel, avahi-devel %endif %if %{undefined suse_version} && %{undefined sles_version} && %{undefined mandriva_version} && %{undefined fedora_version} && %{undefined rhel_version} && %{undefined centos_version} BuildRequires: bluez-libs, avahi-devel Requires: bluez-libs, wmctrl, avahi-libs, anyremote-data >= 6.6 %endif Source0: %{name}-%{version}.tar.gz URL: http://anyremote.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-build %description Remote control software for applications using Bluetooth or Wi-Fi. %prep %setup %build ./configure --prefix=%{_prefix} make CFLAGS="$RPM_OPT_FLAGS" %install make install DESTDIR=$RPM_BUILD_ROOT %if 0%{?suse_version} || 0%{?sles_version} strip $RPM_BUILD_ROOT/%{_prefix}/bin/anyremote mkdir -p $RPM_BUILD_ROOT/%{_defaultdocdir} mv $RPM_BUILD_ROOT/%{_prefix}/share/doc/%{name} $RPM_BUILD_ROOT/%{_defaultdocdir}/%{name} %endif %clean [ "$RPM_BUILD_ROOT" != "/" ] && [ -d $RPM_BUILD_ROOT ] \ && rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %{_bindir}/anyremote %if 0%{?mandriva_version} %{_datadir}/man/man1/anyremote.1.lzma %else %{_mandir}/man1/anyremote.1.gz %endif %changelog * Mon Jan 22 2018 Mikhail Fedotov - 6.7.1 - Improve interoperability with GUI frontends. * Tue Jan 15 2018 Mikhail Fedotov - 6.7 - Some fixes. Configuration file for MPV was added. * Tue Mar 15 2016 Mikhail Fedotov - 6.6.1 - Bluez-related fixes. * Sat Feb 27 2016 Mikhail Fedotov - 6.6 - Scale images and cover pictures automatically and separately for each connected client. Add Set(hints,...), Set(list,dir,...) and Set(text,file,...) commands. Added -cfgdir and -tmpdir commandline options. * Sat Dec 20 2014 Mikhail Fedotov - 6.5 - Avahi support. * Sun Mar 02 2014 Mikhail Fedotov - 6.4 - Support for keyboard and mouse emulation events for Android client. * Thu Sep 12 2013 Mikhail Fedotov - 6.3.2 - Configuration file for SMPlayer2 as added. FreeBSD and some other fixes. * Wed Jun 12 2013 Mikhail Fedotov - 6.3.1 - Small enhancements and bugfixes. * Sat Apr 27 2012 Mikhail Fedotov - 6.3 - Configuration file for DjView was added. Multiconnection support. Named cover auto-uploading. * Tue Dec 18 2012 Mikhail Fedotov - 6.2 - Use $(TmpDir) in configuration files to store temporary file. Use $(WaitSecons) variable to kill neverending scripts. Use allowed_hosts file and $(AllowedOnly) variable to access control. Avoided to use bash in favour of sh in configuration files. Support mutliple inheritance for modes. Configuration file for Foobnix was added. Majority of audio player configuration files were reworked. * Mon Oct 08 2012 Mikhail Fedotov - 6.1 - Support of XML services interface. Support Set(vibrate,duration) command. Add possibility to disable GLIB usage (for OpenWRT build). Major code restructurization. * Thu May 17 2012 Mikhail Fedotov - 6.0 - Support of build-in web server, no anyremote2html package needed anymore. Commands Set(parameter,icon_size|icon_padding,...) and Get(icon_size|icon_padding) were added, command Set(skin,...,split,sizeXX...) and Set(parameter,lazy_repaint) were removed. Lot of configuration files were updated. * Thu Jan 05 2012 Mikhail Fedotov - 5.5 - Use popen() for get command results. Configuration file for guayadeque (thanks to Fabian Frank) was added, support inheritance in mode definition, add Set(popup,...) command, drop support of Set(text,wrap,..) command. Some configuration files reorganization. * Sun Sep 4 2011 Mikhail Fedotov - 5.4.2 - Configuration file for Clementine (thanks to Lorenzo P�rez de Arce) and DeadBeef (thanks to s_erge) were added. * Tue Mar 15 2011 Mikhail Fedotov - 5.4.1 - Small bugfix. Configuration file for CMUS (thanks to Arthus Belliqueux) was added. * Sat Feb 12 2011 Mikhail Fedotov - 5.4 - Fix work in AT-mode with Bluez 4.X * Tue Oct 19 2010 Mikhail Fedotov - 5.3 - Support volume control through PulseAudio. Added configuration files for Miro player, MPRIS-compatible players. Some fixes in configuration files. * Wed Aug 25 2010 Mikhail Fedotov - 5.2 - Enhanced support for Get(password) command. Properly handle ampersand in file names. * Thu Jul 8 2010 Mikhail Fedotov - 5.1.3 - Some configuration files and documentation were corrected. Added configuration file for QMMP. * Sat Mar 13 2010 Mikhail Fedotov - 5.1.2 - Some configuration files and documentation were corrected. * Wed Feb 03 2010 Mikhail Fedotov - 5.1.1 - Fixed Red Hat bugzilla bug 560182. Some configuration files and documentation were corrected. * Mon Jan 04 2010 Mikhail Fedotov - 5.1 - Better support of Command Fusion's iViewer, tested on iPod Touch. Exclude keyjnote, kpdf, kuickshow, kview, noatun and KDE3-related configuration files from the release. Added configuration file for Dragon player. Add KDE4 support in Kaffeine configuration file. * Mon Sep 14 2009 Mikhail Fedotov - 5.0 - anyRemote was rewritten using multithreading and GLib. Native D-BUS support. Format of configuration file was significantly changed. * Mon Mar 30 2009 Mikhail Fedotov - 4.18.1-1 - Add GuiAppModes tag to configuration files. * Tue Mar 17 2009 Mikhail Fedotov - 4.18-1 - Get(password) and Get(ping) commands were added. Experimental support for iPhones/iPods with Command Fusion iViewer installed. * Wed Feb 4 2009 Mikhail Fedotov - 4.17-1 - Fixed crash with all-in-one2.cfg. Added configuration files for Impressive (former KeyJnote, thanks to Cedric Barboiron). * Tue Jan 27 2009 Mikhail Fedotov - 4.16-1 - Add possibility to set SDP service name. Corrections of configuration files. Configuration files for KsCD/KDE4 and Eye-of-Gnome were added. Created icon auto-upload feature. * Fri Jan 16 2009 Mikhail Fedotov - 4.15-1 - Fixed crash issue in case of anyremote was runned without X. Fix hang in Load() command in case of empty file. * Sat Jan 10 2009 Mikhail Fedotov - 4.14-1 - Small corrections in configuration files. Configuration files for AlsaPlayer, Digikam (thanks to Marcus Hardt) and GPicView were added. Syntax of Emulate() command was extended. * Sat Dec 07 2008 Mikhail Fedotov - 4.13-1 - Small corrections in configuration files. Configuration file for WmCtrl and Juk/KDE4 were added. * Thu Nov 13 2008 Mikhail Fedotov - 4.12-1 - Added configuration file for XBMC (thanks to Everthon Valadao), Okular Gwenview/KDE4 and Amarok2/KDE4. Support nonn-UTF8 encodings in configurational files. Intergrated FreeBSD patch by Alex Samorukov. * Mon Oct 20 2008 Mikhail Fedotov - 4.11-1 - Fixed issues with non-correct handling of files and directories names with braces and brackets in some configuration files. Several small changes in code. * Mon Oct 6 2008 Mikhail Fedotov - 4.10-1 - Fixed issue with non-correct handling of files and directories names with braces and brackets in some configuration files. A lot of changes in documentation. Several small changes in code. * Mon Sep 29 2008 Mikhail Fedotov - 4.9-1 - Get(version) command was introduced. Added possibility to create user-specific phone initialization. * Tue Sep 9 2008 Mikhail Fedotov - 4.8.1-1 - Small corrections. * Thu Sep 4 2008 Mikhail Fedotov - 4.8-1 - Added configuration file for gThumb. Added GuiDescription field to configuration files. * Tue Aug 5 2008 Mikhail Fedotov - 4.7-1 - Small enhancements * Fri May 30 2008 Mikhail Fedotov - 4.6-1 - Small enhancements * Sun May 18 2008 Mikhail Fedotov - 4.5-1 - Better integration with anyremote2http: -http command line parameter was added. * Tue Mar 07 2008 Mikhail Fedotov - 4.4-1 - Spec file correction. Some minor enhancemens. * Mon Feb 15 2008 Mikhail Fedotov - 4.3-1 - Bugfixes and small enhancements.Support for touchscreen devices was improved %package data Summary: Configuration files for anyRemote %if 0%{?suse_version} || 0%{?sles_version} Group: System/Management %else Group: Applications/System %endif %description data Configuration files for anyRemote used to manage different applications. %files data %defattr(-,root,root) %{_datadir}/%{name} %package doc Summary: Documentation for anyRemote %if 0%{?suse_version} || 0%{?sles_version} Group: System/Management %else Group: Applications/System %endif %description doc Documentation for anyRemote in HTML format %files doc %defattr(-,root,root) %{_defaultdocdir}/%{name} anyremote-6.7.1/specs/anyremote-suse.spec0000644000232200023220000002166113231303570021052 0ustar debalancedebalance# norootforbuild %define name anyremote %define version 6.7.1 Summary: Remote control through Wi-Fi or bluetooth connection Name: %{name} Version: %{version} Release: 1.suse11 License: GPLv3+ Group: System/Management BuildRequires: bluez-devel, xorg-x11-devel, xorg-x11-libX11-devel, xorg-x11-libs, glib2-devel, dbus-1-devel, dbus-1-glib-devel, avahi-devel Requires: libbluetooth3, xorg-x11-libs, dbus-1-glib, wmctrl, avahi-libs, anyremote-data >= 6.6 Source0: %{name}-%{version}.tar.gz URL: http://anyremote.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-build %description Remote control software for applications using Wi-Fi or Bluetooth. %prep %setup %build ./configure --prefix=%{_prefix} make CFLAGS="$RPM_OPT_FLAGS" %install make install DESTDIR=$RPM_BUILD_ROOT strip $RPM_BUILD_ROOT/%{_prefix}/bin/anyremote mkdir -p $RPM_BUILD_ROOT/%{_defaultdocdir} mv $RPM_BUILD_ROOT/%{_prefix}/share/doc/%{name} $RPM_BUILD_ROOT/%{_defaultdocdir}/%{name} %clean [ "$RPM_BUILD_ROOT" != "/" ] && [ -d $RPM_BUILD_ROOT ] \ && rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %{_bindir}/anyremote %{_mandir}/man1/anyremote.1.gz %changelog * Mon Jan 22 2018 Mikhail Fedotov - 6.7.1 - Improve interoperability with GUI frontends. * Tue Jan 15 2018 Mikhail Fedotov - 6.7 - Some fixes. Configuration file for MPV was added. * Tue Mar 15 2016 Mikhail Fedotov - 6.6.1 - Bluez-related fixes. * Sat Feb 27 2016 Mikhail Fedotov - 6.6 - Scale images and cover pictures automatically and separately for each connected client. Add Set(hints,...), Set(list,dir,...) and Set(text,file,...) commands. Added -cfgdir and -tmpdir commandline options. * Sat Dec 20 2014 Mikhail Fedotov - 6.5 - Avahi support. * Sun Mar 02 2014 Mikhail Fedotov - 6.4 - Support for keyboard and mouse emulation events for Android client. * Thu Sep 12 2013 Mikhail Fedotov - 6.3.2 - Configuration file for SMPlayer2 as added. FreeBSD and some other fixes. * Wed Jun 12 2013 Mikhail Fedotov - 6.3.1 - Small enhancements and bugfixes. * Sat Apr 27 2012 Mikhail Fedotov - 6.3 - Configuration file for DjView was added. Multiconnection support. Named cover auto-uploading. * Tue Dec 18 2012 Mikhail Fedotov - 6.2 - Use $(TmpDir) in configuration files to store temporary file. Use $(WaitSecons) variable to kill neverending scripts. Use allowed_hosts file and $(AllowedOnly) variable to access control. Avoided to use bash in favour of sh in configuration files. Support mutliple inheritance for modes. Configuration file for Foobnix was added. Majority of audio player configuration files were reworked. * Mon Oct 08 2012 Mikhail Fedotov - 6.1 - Support of XML services interface. Support Set(vibrate,duration) command. Add possibility to disable GLIB usage (for OpenWRT build). Major code restructurization. * Thu May 17 2012 Mikhail Fedotov - 6.0 - Support of build-in web server, no anyremote2html package needed anymore. Commands Set(parameter,icon_size|icon_padding,...) and Get(icon_size|icon_padding) were added, command Set(skin,...,split,sizeXX...) and Set(parameter,lazy_repaint) were removed. Lot of configuration files were updated. * Thu Jan 05 2012 Mikhail Fedotov - 5.5 - Use popen() for get command results. Configuration file for guayadeque (thanks to Fabian Frank) was added, support inheritance in mode definition, add Set(popup,...) command, drop support of Set(text,wrap,..) command. Some configuration files reorganization. * Sun Sep 4 2011 Mikhail Fedotov - 5.4.2 - Configuration file for Clementine (thanks to Lorenzo P�rez de Arce) and DeadBeef (thanks to s_erge) were added. * Tue Mar 15 2011 Mikhail Fedotov - 5.4.1 - Small bugfix. Configuration file for CMUS (thanks to Arthus Belliqueux) was added. * Sat Feb 12 2011 Mikhail Fedotov - 5.4 - Fix work in AT-mode with Bluez 4.X * Tue Oct 19 2010 Mikhail Fedotov - 5.3 - Support volume control through PulseAudio. Added configuration files for Miro player, MPRIS-compatible players. Some fixes in configuration files. * Wed Aug 25 2010 Mikhail Fedotov - 5.2 - Enhanced support for Get(password) command. Properly handle ampersand in file names. * Thu Jul 8 2010 Mikhail Fedotov - 5.1.3 - Some configuration files and documentation were corrected. Added configuration file for QMMP. * Sat Mar 13 2010 Mikhail Fedotov - 5.1.2 - Some configuration files and documentation were corrected. * Wed Feb 03 2010 Mikhail Fedotov - 5.1.1 - Fixed Red Hat bugzilla bug 560182. Some configuration files and documentation were corrected. * Mon Jan 04 2010 Mikhail Fedotov - 5.1 - Better support of Command Fusion's iViewer, tested on iPod Touch. Exclude keyjnote, kpdf, kuickshow, kview, noatun and KDE3-related configuration files from the release. Added configuration file for Dragon player. Add KDE4 support in Kaffeine configuration file. * Mon Sep 14 2009 Mikhail Fedotov - 5.0 - anyRemote was rewritten using multithreading and GLib. Native D-BUS support. Format of configuration file was significantly changed. * Mon Mar 30 2009 Mikhail Fedotov - 4.18.1-1 - Add GuiAppModes tag to configuration files. * Tue Mar 17 2009 Mikhail Fedotov - 4.18-1 - Get(password) and Get(ping) commands were added. Experimental support for iPhones/iPods with Command Fusion iViewer installed. * Wed Feb 4 2009 Mikhail Fedotov - 4.17-1 - Fixed crash with all-in-one2.cfg. Added configuration files for Impressive (former KeyJnote, thanks to Cedric Barboiron). * Tue Jan 27 2009 Mikhail Fedotov - 4.16-1 - Add possibility to set SDP service name. Corrections of configuration files. Configuration files for KsCD/KDE4 and Eye-of-Gnome were added. Created icon auto-upload feature. * Fri Jan 16 2009 Mikhail Fedotov - 4.15-1 - Fixed crash issue in case of anyremote was runned without X. Fix hang in Load() command in case of empty file. * Sat Jan 10 2009 Mikhail Fedotov - 4.14-1 - Small corrections in configuration files. Configuration files for AlsaPlayer, Digikam (thanks to Marcus Hardt) and GPicView were added. Syntax of Emulate() command was extended. * Sat Dec 07 2008 Mikhail Fedotov - 4.13-1 - Small corrections in configuration files. Configuration file for WmCtrl and Juk/KDE4 were added. * Thu Nov 13 2008 Mikhail Fedotov - 4.12-1 - Added configuration file for XBMC (thanks to Everthon Valadao), Okular Gwenview/KDE4 and Amarok2/KDE4. Support nonn-UTF8 encodings in configurational files. Intergrated FreeBSD patch by Alex Samorukov. * Mon Oct 20 2008 Mikhail Fedotov - 4.11-1 - Fixed issues with non-correct handling of files and directories names with braces and brackets in some configuration files. Several small changes in code. * Mon Oct 6 2008 Mikhail Fedotov - 4.10-1 - Fixed issue with non-correct handling of files and directories names with braces and brackets in some configuration files. A lot of changes in documentation. Several small changes in code. * Mon Sep 29 2008 Mikhail Fedotov - 4.9-1 - Get(version) command was introduced. Added possibility to create user-specific phone initialization. * Tue Sep 9 2008 Mikhail Fedotov - 4.8.1-1 - Small corrections. * Thu Sep 4 2008 Mikhail Fedotov - 4.8-1 - Added configuration file for gThumb. Added GuiDescription field to configuration files. * Tue Aug 5 2008 Mikhail Fedotov - 4.7-1 - Small enhancements * Fri May 30 2008 Mikhail Fedotov - 4.6-1 - Small enhancements * Sun May 18 2008 Mikhail Fedotov - 4.5-1 - Better integration with anyremote2http: -http command line parameter was added. * Tue Mar 07 2008 Mikhail Fedotov - 4.4-1 - Spec file correction. Some minor enhancemens. * Mon Feb 15 2008 Mikhail Fedotov - 4.3-1 - Bugfixes and small enhancements.Support for touchscreen devices was improved %package data Summary: Configuration files for anyRemote Group: System/Management %description data Configuration files for anyRemote used to manage different applications. %files data %defattr(-,root,root,-) %{_datadir}/%{name} %package doc Summary: Documentation for anyRemote Group: System/Management %description doc Documentation for anyRemote in HTML format %files doc %defattr(-,root,root,-) %{_defaultdocdir}/%{name} anyremote-6.7.1/specs/anyremote-fedora.spec0000644000232200023220000002226313231303534021332 0ustar debalancedebalanceSummary: Remote control through Wi-Fi or bluetooth connection Name: anyremote Version: 6.7.1 Release: 1%{?dist} License: GPLv3+ Group: Applications/System Source0: http://downloads.sourceforge.net/anyremote/%{name}-%{version}.tar.gz URL: http://anyremote.sourceforge.net/ Requires: bc,wmctrl,ImageMagick,anyremote-data >= 6.6 BuildRequires:bluez-libs-devel >= 5.0, libX11-devel, libXi-devel, libXtst-devel, xorg-x11-proto-devel, glib2-devel >= 2.24.1, dbus-devel >= 1.2.24, dbus-glib-devel >= 0.86, avahi-devel >= 0.6.25 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %description Remote control software for applications using Wi-Fi or Bluetooth. %prep %setup -q %build %configure make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %{_bindir}/%{name} %{_mandir}/man1/%{name}.1.gz %package data Summary: Configuration files for anyRemote Group: Applications/System %description data Configuration files for anyRemote %files data %defattr(-,root,root,-) %{_datadir}/%{name} %package doc Summary: Documentation for anyRemote Group: Applications/System %description doc Documentation for anyRemote %files doc %defattr(-,root,root,-) %doc %{_defaultdocdir}/%{name} %changelog * Mon Jan 22 2018 Mikhail Fedotov - 6.7.1 - Improve interoperability with GUI frontends. * Tue Jan 15 2018 Mikhail Fedotov - 6.7 - Some fixes. Configuration file for MPV was added. * Tue Mar 15 2016 Mikhail Fedotov - 6.6.1 - Bluez-related fixes. * Sat Feb 27 2016 Mikhail Fedotov - 6.6 - Scale images and cover pictures automatically and separately for each connected client. Add Set(hints,...), Set(list,dir,...) and Set(text,file,...) commands. Added -cfgdir and -tmpdir commandline options. * Sat Dec 20 2014 Mikhail Fedotov - 6.5 - Avahi support. * Sun Mar 02 2014 Mikhail Fedotov - 6.4 - Support for keyboard and mouse emulation events for Android client. * Thu Sep 12 2013 Mikhail Fedotov - 6.3.2 - Configuration file for SMPlayer2 as added. FreeBSD and some other fixes. * Wed Jun 12 2013 Mikhail Fedotov - 6.3.1 - Small enhancements and bugfixes. * Sat Apr 27 2013 Mikhail Fedotov - 6.3 - Configuration file for DjView was added. Multiconnection support. Named cover auto-uploading. * Tue Dec 18 2012 Mikhail Fedotov - 6.2 - Use $(TmpDir) in configuration files to store temporary file. Use $(WaitSecons) variable to kill neverending scripts. Use allowed_hosts file and $(AllowedOnly) variable to access control. Avoided to use bash in favour of sh in configuration files. Support mutliple inheritance for modes. Configuration file for Foobnix was added. Majority of audio player configuration files were reworked. * Mon Oct 08 2012 Mikhail Fedotov - 6.1 - Support of XML services interface. Support Set(vibrate,duration) command. Add possibility to disable GLIB usage (for OpenWRT build). Major code restructurization. * Thu May 17 2012 Mikhail Fedotov - 6.0 - Support of build-in web server, no anyremote2html package needed anymore. Commands Set(parameter,icon_size|icon_padding,...) and Get(icon_size|icon_padding) were added, command Set(skin,...,split,sizeXX...) and Set(parameter,lazy_repaint) were removed. Lot of configuration files were updated. * Thu Jan 05 2012 Mikhail Fedotov - 5.5 - Use popen() for get command results. Configuration file for guayadeque (thanks to Fabian Frank) was added, support inheritance in mode definition, add Set(popup,...) command, drop support of Set(text,wrap,..) command. Some configuration files reorganization. * Sun Sep 4 2011 Mikhail Fedotov - 5.4.2 - Configuration file for Clementine (thanks to Lorenzo P�rez de Arce) and DeadBeef (thanks to s_erge) were added. * Tue Mar 15 2011 Mikhail Fedotov - 5.4.1 - Small bugfix. Configuration file for CMUS (thanks to Arthus Belliqueux) was added. * Sat Feb 12 2011 Mikhail Fedotov - 5.4 - Fix work in AT-mode with Bluez 4.X * Tue Oct 19 2010 Mikhail Fedotov - 5.3 - Support volume control through PulseAudio. Added configuration files for Miro player, MPRIS-compatible players. Some fixes in configuration files. * Wed Aug 25 2010 Mikhail Fedotov - 5.2 - Enhanced support for Get(password) command. Properly handle ampersand in file names. * Thu Jul 8 2010 Mikhail Fedotov - 5.1.3 - Some configuration files and documentation were corrected. Added configuration file for QMMP. * Sat Mar 13 2010 Mikhail Fedotov - 5.1.2 - Some configuration files and documentation were corrected. * Wed Feb 03 2010 Mikhail Fedotov - 5.1.1 - Fixed Red Hat bugzilla bug 560182. Some configuration files and documentation were corrected. * Mon Jan 04 2010 Mikhail Fedotov - 5.1 - Better support of Command Fusion's iViewer, tested on iPod Touch. Exclude keyjnote, kpdf, kuickshow, kview, noatun and KDE3-related configuration files from the release. Added configuration file for Dragon player. Add KDE4 support in Kaffeine configuration file. * Mon Sep 14 2009 Mikhail Fedotov - 5.0 - anyRemote was rewritten using multithreading and GLib. Native D-BUS support. Format of configuration file was significantly changed. * Mon Mar 30 2009 Mikhail Fedotov - 4.18.1-1 - Add GuiAppModes tag to configuration files. * Tue Mar 17 2009 Mikhail Fedotov - 4.18-1 - Get(password) and Get(ping) commands were added. Experimental support for iPhones/iPods with Command Fusion iViewer installed. * Wed Feb 4 2009 Mikhail Fedotov - 4.17-1 - Fixed crash with all-in-one2.cfg. Added configuration files for Impressive (former KeyJnote, thanks to Cedric Barboiron). * Tue Jan 27 2009 Mikhail Fedotov - 4.16-1 - Add possibility to set SDP service name. Corrections of configuration files. Configuration files for KsCD/KDE4 and Eye-of-Gnome were added. Created icon auto-upload feature. * Fri Jan 16 2009 Mikhail Fedotov - 4.15-1 - Fixed crash issue in case of anyremote was runned without X. Fix hang in Load() command in case of empty file. * Sat Jan 10 2009 Mikhail Fedotov - 4.14-1 - Small corrections in configuration files. Configuration files for AlsaPlayer, Digikam (thanks to Marcus Hardt) and GPicView were added. Syntax of Emulate() command was extended. * Sun Dec 07 2008 Mikhail Fedotov - 4.13-1 - Small corrections in configuration files. Configuration file for WmCtrl and Juk/KDE4 were added. * Thu Nov 13 2008 Mikhail Fedotov - 4.12-1 - Added configuration file for XBMC (thanks to Everthon Valadao), Okular Gwenview/KDE4 and Amarok2/KDE4. Support nonn-UTF8 encodings in configurational files. Intergrated FreeBSD patch by Alex Samorukov. * Mon Oct 20 2008 Mikhail Fedotov - 4.11-1 - Fixed issues with non-correct handling of files and directories names with braces and brackets in some configuration files. Several small changes in code. * Mon Oct 6 2008 Mikhail Fedotov - 4.10-1 - Fixed issue with non-correct handling of files and directories names with braces and brackets in some configuration files. A lot of changes in documentation. Several small changes in code. * Mon Sep 29 2008 Mikhail Fedotov - 4.9-1 - Get(version) command was introduced. Added possibility to create user-specific phone initialization. * Tue Sep 9 2008 Mikhail Fedotov - 4.8.1-1 - Small corrections. * Thu Sep 4 2008 Mikhail Fedotov - 4.8-1 - Added configuration file for gThumb. Added GuiDescription field to configuration files. * Thu Aug 7 2008 Mikhail Fedotov - 4.7.1-1 - Fix crash issue if no bluetooth service runned * Tue Aug 5 2008 Mikhail Fedotov - 4.7-1 - Small enhancements * Fri May 30 2008 Mikhail Fedotov - 4.6-1 - Small enhancements * Sun May 18 2008 Mikhail Fedotov - 4.5-1 - Better integration with anyremote2http: -http command line parameter was added. * Fri Mar 07 2008 Mikhail Fedotov - 4.4-1.fc8 - Spec file correction. Some minor enhancemens. * Sun Mar 02 2008 Mikhail Fedotov - 4.3-4.fc8 - Spec file correction. Move J2ME stuff out of the package. * Tue Feb 26 2008 Mikhail Fedotov - 4.3-3.fc8 - Spec file correction * Sun Feb 17 2008 Mikhail Fedotov - 4.3-2.fc8 - Spec file correction * Fri Feb 15 2008 Mikhail Fedotov - 4.3-1.fc8 - Bugfixes and small enhancements.Support for touchscreen devices was improved * Tue Jan 10 2008 Mikhail Fedotov - 4.2-1.fc8 - Spec file modified. anyremote-6.7.1/COPYING0000644000232200023220000010451312664332726015150 0ustar debalancedebalance GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . anyremote-6.7.1/depcomp0000755000232200023220000005055212100021546015451 0ustar debalancedebalance#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2012-03-27.16; # UTC # Copyright (C) 1999-2012 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # A tabulation character. tab=' ' # A newline character. nl=' ' if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' "$nl" < "$tmpdepfile" | ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependent.h'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. # However on # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\': # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... # tcc 0.9.26 (FIXME still under development at the moment of writing) # will emit a similar output, but also prepend the continuation lines # with horizontal tabulation characters. "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form 'foo.o: dependent.h', # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ < "$tmpdepfile" > "$depfile" sed ' s/[ '"$tab"'][ '"$tab"']*/ /g s/^ *// s/ *\\*$// s/^[^:]*: *// /^$/d /:$/d s/$/ :/ ' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test "$stat" = 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' "$nl" < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: anyremote-6.7.1/config.sub0000755000232200023220000010532712100021545016057 0ustar debalancedebalance#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-04-18' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i386-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: anyremote-6.7.1/configure.ac0000644000232200023220000001176713231303437016377 0ustar debalancedebalance# # anyRemote - a bluetooth remote for your PC. # # Copyright (C) 2007-2018 Mikhail Fedotov # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.63) AC_INIT([anyremote],[6.7.1]) AC_CONFIG_SRCDIR([src/main.c]) AM_INIT_AUTOMAKE # Checks for programs. AC_PROG_AWK AC_PROG_CC # Checks for libraries. # Checks for header files. AC_HEADER_STDC AC_HEADER_SYS_WAIT CFLAGS="$CFLAGS -I/usr/local/include -Wall -D_REENTRANT -O2 -g" AC_CHECK_HEADERS([fcntl.h stdlib.h string.h sys/ioctl.h sys/time.h termios.h unistd.h glib.h]) # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_TIME #AC_CHECK_HEADER_STDBOOL AC_TYPE_UID_T AC_C_INLINE AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_SSIZE_T AC_TYPE_UINT32_T AC_TYPE_UINT8_T # Checks for library functions. AC_FUNC_MEMCMP AC_FUNC_SELECT_ARGTYPES AC_FUNC_CHOWN AC_FUNC_FORK AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK AC_FUNC_MALLOC AC_FUNC_REALLOC AC_CHECK_FUNCS([bzero gethostbyname gettimeofday inet_ntoa isascii memset mkdir regcomp select socket strchr strdup strerror strrchr strstr strtol]) AC_PATH_PROG(PKG_CONFIG, pkg-config, no) #AC_CONFIG_FILES([Makefile # src/Makefile]) AC_CANONICAL_HOST AC_ARG_ENABLE(bluetooth, [ --disable-bluetooth disable bluetooth support]) case "$host_os" in linux*) if test x"$enable_bluetooth" != xno; then AC_CHECK_HEADERS([bluetooth/bluetooth.h], [], [echo "Can not find bluetooth.h ! Install bluez-dev package or use --disable-bluetooth";exit]) AR_EXTRAFLAGS="$AR_EXTRAFLAGS -DUSE_BLUEZ=1" AR_EXTRALIBS="$AR_EXTRALIBS -lbluetooth" fi ;; freebsd*) if test x"$enable_bluetooth" != xno; then AC_CHECK_HEADERS([bluetooth.h], [], [echo "Can not find bluetooth.h ! Install it or use --disable-bluetooth";exit]) AR_EXTRAFLAGS="$AR_EXTRAFLAGS -DUSE_BT_FBSD=1" AR_EXTRALIBS="$AR_EXTRALIBS -lbluetooth -lsdp" fi ;; esac AC_ARG_ENABLE(xtest, [ --disable-xtest disable xtest support]) if test x"$enable_xtest" != xno; then AC_CHECK_HEADERS([X11/extensions/XTest.h], [], [echo "Can not find XTest.h ! Install it or use --disable-xtest";exit]) AR_EXTRAFLAGS="$AR_EXTRAFLAGS -DUSE_XTEST=1" AR_EXTRALIBS="$AR_EXTRALIBS -lX11 -lXtst" fi AC_ARG_ENABLE(iconv, [ --disable-iconv disable iconv support]) if test x"$enable_iconv" != xno; then AC_CHECK_HEADERS([iconv.h], [], [echo "Can not find iconv.h ! Install it or use --disable-iconv";exit]) AR_EXTRAFLAGS="$AR_EXTRAFLAGS -DUSE_ICONV=1" fi AC_ARG_ENABLE(glib, [ --disable-glib disable glib support, impiles disable-dbus]) if test x"$enable_glib" != xno; then AC_CHECK_LIB(gthread-2.0, g_thread_init) PKG_CHECK_MODULES([GLIB], [glib-2.0], [], [echo "Can not find glib !";exit]) AM_PATH_GLIB_2_0([],[],[],[gthread]) AR_EXTRAFLAGS="$AR_EXTRAFLAGS $GLIB_CFLAGS -DUSE_GLIB=1" AR_EXTRALIBS="$AR_EXTRALIBS $GLIB_LIBS" else enable_dbus=no AR_EXTRALIBS="$AR_EXTRALIBS -lpthread" fi AC_ARG_ENABLE(dbus, [ --disable-dbus disable dbus support, impiles disable-avahi]) if test x"$enable_dbus" != xno; then PKG_CHECK_MODULES([DBUS], [dbus-1 >= 0.61], [], [echo "Can not find dbus-1 ! Install it or use --disable-dbus";exit]) PKG_CHECK_MODULES([DBUS_GLIB], [dbus-glib-1], [], [echo "Can not find dbus-glib-1 ! Install it or use --disable-dbus";exit]) DBUS_CFLAGS="`$PKG_CONFIG --cflags dbus-1`" DBUS_LIBS="`$PKG_CONFIG --libs dbus-1`" DBUSG_CFLAGS="`$PKG_CONFIG --cflags dbus-glib-1`" # anyRemote do not needs gobject-2.0, but dbus-glib does #DBUSG_LIBS="-ldbus-glib-1" DBUSG_LIBS="`$PKG_CONFIG --libs dbus-glib-1`" AR_EXTRAFLAGS="$AR_EXTRAFLAGS $DBUS_CFLAGS $DBUSG_CFLAGS -DUSE_DBUS=1" AR_EXTRALIBS="$AR_EXTRALIBS $DBUS_LIBS $DBUSG_LIBS" else enable_avahi=no fi AC_ARG_ENABLE(avahi, [ --disable-avahi disable avahi support]) if test x"$enable_avahi" != xno; then PKG_CHECK_MODULES(AVAHI, [avahi-client >= 0.6], [], [echo "Can not find avahi ! Install avahi headers or use --disable-avahi";exit]) AR_EXTRAFLAGS="$AR_EXTRAFLAGS $AVAHI_CFLAGS -DUSE_AVAHI=1" AR_EXTRALIBS="$AR_EXTRALIBS $AVAHI_LIBS" fi AR_EXTRAFLAGS="$AR_EXTRAFLAGS -DDATADIR=\\\"${datadir}\\\"" AC_SUBST(AR_EXTRAFLAGS) AC_SUBST(AR_EXTRALIBS) AC_CONFIG_FILES([Makefile src/Makefile]) AC_OUTPUT anyremote-6.7.1/src/0000755000232200023220000000000013231303722014661 5ustar debalancedebalanceanyremote-6.7.1/src/peer.c0000644000232200023220000016205713231303366015777 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2018 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include "atsend.h" #include "btio.h" #include "common.h" #include "conf.h" #include "dispatcher.h" #include "executor.h" #include "gen_ar.h" #include "peer.h" #include "pr_btspp.h" #include "pr_frontend.h" #include "pr_l2cap.h" #include "pr_rfcomm.h" #include "pr_serial.h" #include "pr_socket.h" #include "pr_stdin.h" #include "pr_web.h" #include "state.h" #include "str.h" #include "utils.h" extern char tmp[MAXMAXLEN]; // executor.c extern void customizePeer(int id, int szX, int szY, int coverSz); static int _peerCounter = 1; static SingleList * _connections = NULL; static int peerWrite (ConnectInfo* peer, const dMessage* msg); static int peerWriteBytes(ConnectInfo* peer, const char* command); static void writeIViewerHeartbeat(int fd); static void writeBemusedHeartbeat(int fd); static ConnectInfo* allocPeer(boolean_t allocCache) { ConnectInfo* peer = (ConnectInfo*) malloc(sizeof(ConnectInfo)); peer->id = _peerCounter; _peerCounter++; peer->mode = SERVER_MAX; peer->state = PEER_DISCONNECTED; peer->port = -1; peer->connectionData = NULL; // specific to connection peer->portStr = NULL; if (allocCache) { peer->cache = (DCache*) malloc(sizeof(DCache)); int i=0; for (; icache->lastValues [i] = NULL; peer->cache->lastValuesSize[i] = -1; } } else { peer->cache = NULL; } return peer; } static void freeCachedData(ConnectInfo* peer) { INFO2("[DS]: freeCachedData() peer %d", peer->id); DCache* cache = peer->cache; if (cache) { int i = 0; for (; ilastValues[i]) { free(cache->lastValues[i]); cache->lastValues[i] = NULL; } } } } static void freePeer(void* data) { ConnectInfo* peer = (ConnectInfo* ) data; INFO2("[DS]: freePeer() %d", peer->id); if (peer->connectionData) { free(peer->connectionData); } freeCachedData(peer); free(peer); } // do not take into account connection-less peers (HTML + XML) static int countConnections() { int cnum = 0; SingleList* list = _connections; //INFO2("[DS]: countConnections() enter %d", listSingleLength(list)); while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (peer->state == PEER_CONNECTED && peer->mode != FRONT_END) { cnum++; } list = listSingleNext(list); } return cnum; } // do not take into account connection-less peers (HTML + XML) static int countOtherConnections(ConnectInfo* peer) { int cnum = 0; SingleList* list = _connections; while (list) { ConnectInfo* otherPeer = (ConnectInfo*) list->data; if (otherPeer->state == PEER_CONNECTED && otherPeer->mode != FRONT_END && otherPeer != peer) { cnum++; } else if (peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML) { cnum++; } list = listSingleNext(list); } return cnum; } static int dummyOpen(ConnectInfo* connInfo) { DEBUG2("[DS]: dummyOpen"); return EXIT_OK; } static int dummyFD(ConnectInfo* connInfo) { return -1; } static int setupNope(ConnectInfo* p) { return 1; } static int acceptNope(ConnectInfo* p) { switch (p->mode) { case SERVER_WEB: logger(L_INF, "[DS]: Built-in web server: init OK"); break; case SERVER_CMXML: logger(L_INF, "[DS]: Built-in XML server: init OK"); break; case CLIENT_ILIRC: case CLIENT_NOAT: case SERVER_STDIN: logger(L_INF, "[DS]: Unix client: init OK"); break; } return 1; } static struct { int id; int (*descriptor) (ConnectInfo* p); int (*openConnection) (ConnectInfo* p); int (*setupPre) (ConnectInfo* p); int (*listenConnection) (ConnectInfo* p); int (*acceptConnection) (ConnectInfo* p); int (*setupPost) (ConnectInfo* p); // unused ? int (*writeConnection) (ConnectInfo* p, const dMessage* msg); int (*writeBytesConnection) (ConnectInfo* p, const char* value); void (*resetConnection) (ConnectInfo* p); void (*closeConnection) (ConnectInfo* p, int final); } _peerHandlers[] = { // type get FD open setup_pre listen accept setup_post write write bytes reset close // (EXIT_OK/ (1/-1) (1/-1) (1/-1) (EXIT_OK/ (1/-1) (EXIT_OK/ (void) (void) (void) // NOK) NOK) NOK) {CLIENT_RFCOMM, rfcommFD, rfcommConnect,rfcommSetup, setupNope, acceptNope, setupNope, peerWrite, NULL, rfcommReset, rfcommClose}, {CLIENT_AT, serialFD, serialOpen, serialSetup, setupNope, acceptNope, setupNope, peerWrite, NULL, serialReset, serialClose}, {SERVER_TCP, socketFD, socketOpen, setupNope, socketListen, socketAccept, setupNope, socketWrite, peerWriteBytes, socketReset, socketClose}, {SERVER_BT, btsppFD, btsppOpen, setupNope, setupNope, btsppAccept, setupNope, peerWrite, peerWriteBytes, btsppReset, btsppClose }, /*call btsppListen from btsppOpen */ {CLIENT_ILIRC, uxsFD, uxsOpen, setupNope, setupNope, acceptNope, setupNope, NULL, NULL, uxsReset, uxsClose }, {CLIENT_NOAT, serialFD, serialOpen, setupNope, setupNope, acceptNope, setupNope, peerWrite, NULL, serialReset, serialClose}, {SERVER_STDIN, dummyFD, stdinOpen, setupNope, setupNope, acceptNope, setupNope, NULL, NULL, stdinReset, stdinClose }, {SERVER_WEB, webFD, openWeb, setupNope, listenWeb, acceptWeb, setupNope, writeWeb, NULL, webReset, webClose }, {SERVER_CMXML, webFD, openWeb, setupNope, listenWeb, acceptWeb, setupNope, writeWeb, NULL, webReset, webClose }, #ifdef USE_L2CAP {SERVER_L2CAP, l2capFD, l2capOpen, setupNope, l2capSetup, l2capAccept, setupNope, peerWrite, peerWriteBytes, l2capReset, l2capClose }, #endif {SERVER_UX , socketFD, dummyOpen, setupNope, socketListen, socketAccept, setupNope, peerWrite, peerWriteBytes, socketReset, socketClose}, // not used {FRONT_END , feFD, feOpen, setupNope, setupNope, acceptNope, setupNope, NULL, NULL, feReset, feClose } }; void freePeers() { INFO2("[DS]: freePeers() start"); listSingleFullFree(_connections, freePeer); _connections = NULL; freeState(); INFO2("[DS]: freePeers() end"); } static int addTcpPeer(ConnectInfo* peer, char *strPort) { // check is it port or unix socket char * ch = strPort; int isPort = 1; while (*ch != '\0') { if (isdigit(*ch)) { ch++; } else { isPort = 0; break; } } if (isPort) { peer->mode = SERVER_TCP; peer->port = atoi(strPort); if (peer->port <= 0) { printf("ERROR: Improper port to use %d!\n", peer->port); ERROR2("[DS]: Improper port %d to use", peer->port); return EXIT_ABORT; } DEBUG2("[DS]: Peer %d: TCP Server mode, port %d", peer->id, peer->port); } else { /*sprintf(tmp, "Unix socket Server mode. Use socket %s\n", strPort); logger(L_DBG, tmp); if ((ret = openSocketPort(SERVER_UX, -1, strPort)) < 0) { return -1; } peer->mode = SERVER_UX; peer->portStr = stringNew(strPort); */ printf("ERROR: incorrect port\n"); return EXIT_ABORT; } return EXIT_OK; } // // fill ConnectInfo structure, return EXIT_ABORT in unsuccessful // static int addPeer(char * portIn) { if (portIn == NULL) { return EXIT_ABORT; } INFO2("[DS]: addPeer() %s", portIn); char* strPort; // device should be in format: // deprecated // 1. (AT mode) /dev/something used with AT mode commands // 1. (AT mode) rfcomm:00:12:EF:32:21:1A:xx (xx is integer from 1 to 32) // 2. (Server mode) socket:NNNN or used with java client // socket:/path/to/socket used with java client (SERVER_UX, not used) // 3. (Server mode) bluetooth:NN or bluetooth (port will be = DEFAULT_BT_CHANNEL) used with java client // 4. (Server mode) web:NNNN built-in web server // 5. (Server mode) cmxml:NNNN XML services interface // 6. local:/some/path used with java client, like 1, but no AT commands // 7. ilirc:/dev/something like 1, but no AT commands // 8. stdio used with java client, like 1, but no AT commands // 9. avahi skipped here ConnectInfo* peer = allocPeer(BOOL_YES); if ((strPort = strstr(portIn, INET_SOCKET)) != NULL) { strPort += strlen(INET_SOCKET); if (addTcpPeer(peer, strPort) == EXIT_ABORT) { free(peer); return EXIT_ABORT; } } else if ((strPort = strstr(portIn, PEER_TCP)) != NULL) { strPort += strlen(PEER_TCP); if (addTcpPeer(peer, strPort) == EXIT_ABORT) { free(peer); return EXIT_ABORT; } } else if ((strPort = strstr(portIn, ILIRC_SOCKET)) != NULL) { strPort += strlen(ILIRC_SOCKET); peer->mode = CLIENT_ILIRC; peer->portStr = stringNew(strPort); DEBUG2("[DS]: Peer %d: Unix socket client mode, socket %s", peer->id, peer->portStr->str); } else if ((strPort = strstr(portIn, BT_SOCKET)) != NULL) { strPort += strlen(BT_SOCKET); peer->mode = SERVER_BT; if (strstr(strPort, ":") == NULL) { // just "bluetooth peer->port = DEFAULT_BT_CHANNEL; } else { strPort++; peer->port = atoi(strPort); } DEBUG2("[DS]: Peer %d: Bluetooth Server mode, channel %d", peer->id, peer->port); } else if ((strPort = strstr(portIn, L2CAP_SOCKET)) != NULL) { #ifdef USE_L2CAP strPort += strlen(L2CAP_SOCKET); peer->mode = SERVER_L2CAP; if (strstr(strPort, ":") == NULL) { // just "l2cap" peer->port = DEFAULT_L2CAP_PORT; } else { peer->port = atoi(strPort); } DEBUG2("[DS]: Peer %d: L2CAP Server mode, port %d", peer->id, peer->port); #endif } else if ((strPort = strstr(portIn, UNIX_SOCKET)) != NULL) { strPort += strlen(UNIX_SOCKET); peer->mode = CLIENT_NOAT; peer->portStr = stringNew(strPort); DEBUG2("[DS]: Peer %d: Serial Client mode (no AT). Use device %s", peer->id, peer->portStr->str); } else if ((strPort = strstr(portIn, STDIN_STREAM)) != NULL) { peer->mode = SERVER_STDIN; DEBUG2("[DS]: Peer %d: stdin", peer->id); } else if ((strPort = strstr(portIn, RFCOMM_DEVICE)) != NULL) { if (!(strlen(portIn) == strlen(RFCOMM_DEVICE) + BT_ADDR_LEN + 3 || // 00:12:EF:32:21:1A:p strlen(portIn) == strlen(RFCOMM_DEVICE) + BT_ADDR_LEN + 4) || // 00:12:EF:32:21:1A:pp portIn[strlen(RFCOMM_DEVICE)] != ':' || portIn[strlen(RFCOMM_DEVICE) + BT_ADDR_LEN + 1] != ':') { printf("ERROR: Improper connect string !\n"); free(peer); return EXIT_ABORT; } char sBtAddr[18]; strncpy(sBtAddr,portIn + strlen(RFCOMM_DEVICE) + 1,17); sBtAddr[17] = '\0'; peer->mode = CLIENT_RFCOMM; peer->port = atoi(portIn + strlen(RFCOMM_DEVICE) + BT_ADDR_LEN + 2); peer->portStr = stringNew(sBtAddr); DEBUG2("[DS]: Peer %d: Serial Client mode, device %s : %d", peer->id, peer->portStr->str, peer->port); } else if ((strPort = strstr(portIn, WEB_SOCKET)) != NULL) { strPort += strlen(WEB_SOCKET); // check is it port char * ch = strPort; int isPort = 1; while (*ch != '\0') { if (isdigit(*ch)) { ch++; } else { isPort = 0; break; } } if (isPort) { peer->mode = SERVER_WEB; peer->port = atoi(strPort); if (peer->port <= 0) { printf("ERROR: Improper port to use !\n"); ERROR2("[DS]: Improper port %d to use", peer->port); free(peer); return EXIT_ABORT; } DEBUG2("[DS]: Peer %d: Web Server mode. Use port %d", peer->id, peer->port); } else { logger(L_ERR,"[DS]: can not determine web server port"); free(peer); return EXIT_ABORT; } } else if ((strPort = strstr(portIn, CMXML_SOCKET)) != NULL) { strPort += strlen(CMXML_SOCKET); // check is it port char * ch = strPort; int isPort = 1; while (*ch != '\0') { if (isdigit(*ch)) { ch++; } else { isPort = 0; break; } } if (isPort) { peer->mode = SERVER_CMXML; peer->port = atoi(strPort); DEBUG2("[DS]: Peer %d: XML Server mode. Use port %d", peer->id, peer->port); } else { logger(L_ERR,"[DS]: can not determine XML server port"); free(peer); return EXIT_ABORT; } } else if ((strPort = strstr(portIn, AT_DEVICE)) != NULL) { strPort += strlen(AT_DEVICE); peer->mode = CLIENT_AT; peer->portStr = stringNew(strPort); DEBUG2("[DS]: Peer %d: Serial Client mode. Use device %s", peer->id, peer->portStr->str); } else if (strstr(portIn, AVAHI_USE)) { // do nothing logger(L_DBG, "[DS]: Avahi flag is ON"); freePeer(peer); return EXIT_OK; } else { peer->mode = CLIENT_AT; peer->portStr = stringNew(portIn); DEBUG2("[DS]: Peer %d: Default: use serial Client mode. Use device %s", peer->id, peer->portStr->str); } _connections = listSingleAppend(_connections, peer); return EXIT_OK; } void writeToFrontEnd(const char *buf) { SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (peer->mode == FRONT_END) { feWrite(peer,buf); } list = listSingleNext(list); } } void connectNotify(int peer) { DEBUG2("[DS]: connectNotify"); writeToFrontEnd("Connected"); sendEventToExecutor(peer, ID_EVT_CONNECT); } static boolean_t needStoreState() { int connCnt = 0; SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML) { connCnt += 2; // need to store state in any case if WEB/CMXML is used } else if (peer->mode == SERVER_TCP || peer->mode == SERVER_BT || peer->mode == CLIENT_NOAT|| peer->mode == SERVER_UX #ifdef USE_L2CAP || peer->mode == SERVER_L2CAP #endif ) { connCnt += 1; } if (connCnt > 1) { break; } list = listSingleNext(list); } DEBUG2("[DS]: needStoreState() %s", (connCnt > 1 ? "Y" : "N")); return (connCnt > 1 ? BOOL_YES : BOOL_NO); } boolean_t haveConnectionless() { SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML) { return 1; } list = listSingleNext(list); } return 0; } int definePeers() { DEBUG2("[DS]: definePeers"); char* peers = getDevice(); // split peers by ',' char *sep; char* peer = peers; int ret = EXIT_ABORT; while ((sep = index(peer,','))) { *sep = '\0'; INFO2("[DS]: definePeers() peer %s", peer); int ret1 = addPeer(peer); if (ret1 != EXIT_ABORT) { ret = EXIT_OK; } peer = sep+1; } int ret1 = addPeer(peer); if (ret1 != EXIT_ABORT) { ret = EXIT_OK; } free(peers); int fePort = getFrontEnd(); if (fePort > 0) { ConnectInfo* peer = allocPeer(BOOL_NO); peer->mode = FRONT_END; peer->port = fePort; DEBUG2("[DS]: Add FE peer id=%d on port %d", peer->id, peer->port); _connections = listSingleAppend(_connections, peer); } if (needStoreState()) { DEBUG2("[DS]: definePeers() init state"); initState(); } if (haveConnectionless()) { DEBUG2("[DS]: definePeers() connectionless connectNotify"); connectNotify(0); } DEBUG2("[DS]: definePeers done %d (peers #%d)", ret, listSingleLength(_connections)); return ret; } int openPeers() { DEBUG2("[DS]: openPeers %d", listSingleLength(_connections)); int ret = EXIT_OK; SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (peer->state == PEER_DISCONNECTED) { INFO2("[DS]: Open peer with mode %d", peer->mode); int ret1 = _peerHandlers[peer->mode].openConnection(peer); DEBUG2("[DS]: openPeers peer %d ret code %d", peer->id, ret1); if (peer->state != PEER_DISCONNECTED) { // for TCP (etc.) connection still can be in DISCONNECT INFO2("[DS]: Open peer %d connect fdescriptor %d", peer->id, _peerHandlers[peer->mode].descriptor(peer)); } if (ret1 != EXIT_NOK) { ret = ret1; } } else { DEBUG2("[DS]: openPeers peer %d have state %s", peer->id, (peer->state == PEER_DISCONNECTED ? "DISCONNECTED" : (peer->state == PEER_WAIT_LISTEN ? "WAIT_LISTEN" : (peer->state == PEER_WAIT_ACCEPT ? "PEER_WAIT_ACCEPT" : (peer->state == PEER_CONNECTED ? "CONNECTED" : "UNKNOWN") ) ) ) ); } list = listSingleNext(list); } return ret; } void closePeers(int final) { DEBUG2("[DS]: closePeers %d", final); SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; _peerHandlers[peer->mode].closeConnection(peer, final); list = listSingleNext(list); } } int disconnectPeersInternal(ConnectInfo* peer) { int canForceExit = 0; dMessage* dm = allocDMessage(); dm->type = DM_SET; dm->subtype = ID_SET_DISCONN; dm->size = 16; dm->value = strdup(CMD_STR_DISCONNECT); if (peer->mode == SERVER_BT) { if (getIViewer() || getBemused()) { canForceExit = 1; } else { logger(L_INF, "[DS]: Got exit event: send disconnect message"); if (btsppWrite(peer, dm) != EXIT_OK) { canForceExit = 1; } } } else if (peer->mode == SERVER_TCP) { if (getIViewer() || getBemused()) { canForceExit = 1; } else { logger(L_INF, "[DS]: Got exit event: send disconnect message"); if (socketWrite(peer, dm) != EXIT_OK) { canForceExit = 1; } } } else if (peer->mode == SERVER_UX) { logger(L_INF, "[DS]: Got exit event: send disconnect message"); if (socketWrite(peer, dm) != EXIT_OK) { canForceExit = 1; } } else if (peer->mode == CLIENT_RFCOMM || peer->mode == CLIENT_AT) { int fd = _peerHandlers[peer->mode].descriptor(peer); if (fd >= 0) { sendCMER(fd, CMER_OFF); } canForceExit = 1; #ifdef USE_L2CAP } else if (peer->mode == SERVER_L2CAP) { if (l2capWrite(peer, dm) != EXIT_OK) { canForceExit = 1; } #endif } else if (peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML) { canForceExit = 1; } else if (peer->mode == FRONT_END) { canForceExit = 1; } free(dm->value); free(dm); DEBUG2("[DS]: disconnectPeersInternal %d mode=%d can force exit=%d", peer->id, peer->mode, canForceExit); return canForceExit; } // retuns 1/-1 // return code is used in case of exit only int disconnectPeers(void) { DEBUG2("[DS]: disconnectPeers"); int ret = 1; SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; int ret1 = disconnectPeersInternal(peer); if (ret1 != 1) { ret = ret1; } list = listSingleNext(list); } DEBUG2("[DS]: disconnectPeers can force exit=%d", ret); return ret; } // Do some tuning of opened connection // (used in client mode) int setupPeersPre(void) { DEBUG2("[DS]: setupPeersPre"); int ret = -1; SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; int retS = _peerHandlers[peer->mode].setupPre(peer); if (retS != -1) { ret = retS; } list = listSingleNext(list); } return ret; } static boolean_t isDataCacheable(int what) { if (what == ID_SET_BG || what == ID_SET_CAPTION || what == ID_SET_FG || what == ID_SET_FONT || what == ID_SET_ICONS || what == ID_SET_HINTS || what == ID_SET_LAYOUT || what == ID_SET_STATUS || what == ID_SET_TITLE || what == ID_SET_VOLUME || what == ID_SET_COVER) { return BOOL_YES; } else { return BOOL_NO; } } // 0/1 int isDataOld(ConnectInfo* peer, int subtype, const char* data, int size) { if (!isDataCacheable(subtype)) { return 0; // consider as new value } if (!peer->cache) { return 0; // consider as new value } if (subtype >= ID_SET_MAX) { return 0; // consider as new value } //DEBUG2("isDataOld(): %d -> %s", subtype, (data?data:"NULL")); DCache* cache = peer->cache; int isOld = 1; if (cache->lastValues[subtype] == NULL) { isOld = 0; // consider as new value } else if (cache->lastValues[subtype] != NULL && (cache->lastValuesSize[subtype] != size || memcmp(cache->lastValues[subtype], data, cache->lastValuesSize[subtype]) != 0)) { free(cache->lastValues[subtype]); cache->lastValues[subtype] = NULL; cache->lastValuesSize[subtype] = -1; isOld = 0; // consider as new value } if (isOld == 0) { cache->lastValues[subtype] = (char*) calloc(size + 1, 1); memcpy(cache->lastValues[subtype], data, size); cache->lastValuesSize[subtype] = size; } return isOld; } // // Default peer writer // static int writePeer(int fd, const char* buffer, int n) { int nbytes = write(fd,buffer,n); if (nbytes < 0) { ERROR2("[DS]: writePeer() error %d",errno); errnoDebug("[DS]: writePeer() write ",errno); // testing debug } return nbytes; } static int peerWrite(ConnectInfo* peer, const dMessage* msg) { const char* command = msg->value; int count = msg->size; if (!command || count <= 0) { return EXIT_OK; } if (strcmp("End();",command) == 0) { // used only for WEB/CMXML return EXIT_OK; } if (msg->type == DM_SET) { if (isDataOld(peer, msg->subtype, command, count)) { INFO2("[DS]: Skip to send the same data to peer %d", peer->id); return EXIT_OK; } } int fd = _peerHandlers[peer->mode].descriptor(peer); if (fd < 0) { return EXIT_NOK; } return (writePeer(fd, command, count) > 0 ? EXIT_OK : EXIT_NOK); } // // Sync peer after connect // static void syncPeer(ConnectInfo* peer) { if (peer->mode == SERVER_TCP || peer->mode == SERVER_BT || peer->mode == SERVER_UX || peer->mode == CLIENT_NOAT #ifdef USE_L2CAP || peer->mode == SERVER_L2CAP #endif ) { ERROR2("[DS]: syncPeer %d", peer->id); static struct { string_t* (*hooks[6]) (int) ; // CF,TX,LI,FM,WM,EF } _renderHooks[] = { // CF TX LI FM WM EF /* SERVER_TCP+ */{{renderCtrlForm, renderTextForm, renderListForm, NULL, renderWmanForm, renderEditForm}} }; int f = curForm() - 1; INFO2("[DS]: syncPeer form %d", f); if (_renderHooks[0].hooks[f]) { string_t* content = _renderHooks[0].hooks[f](peer->port); if (content) { //char buf[256]; //strncpy(buf,content->str,255); //buf[255] = '\0'; //INFO2("[DS]: syncPeer sync content %s", buf); int fd = _peerHandlers[peer->mode].descriptor(peer); if (fd >= 0) { INFO2("[DS]: syncPeer write to peer %d %d", f, fd); writePeer(fd, content->str, content->len); } stringFree(content, BOOL_YES); } } if (curForm() == CF) { // take care about cover int fd = _peerHandlers[peer->mode].descriptor(peer); if (fd >= 0) { string_t* page = renderCtrlFormCover(); writePeer(fd, page->str, page->len); stringFree(page, BOOL_YES); const char* nc = cfNamedCover(); const char* cv = cfCover(); if (!nc && cv) { string_t* page = stringNew("Set(cover,noname,"); stringAppend(page, cv); stringAppend(page, ");"); eMessage* em = (eMessage*) malloc(sizeof(eMessage)); em->peer = peer->id; em->type = EM_STRING; em->value = strdup(page->str); stringFree(page, BOOL_YES); sendToExecutor(em); } } } } } // // Default peer reader // int readPeer(int fd, char* buffer, int max) { int nbytes = read(fd, buffer, max); if (nbytes < 0) { // Read error //ERROR2("[DS]: readPeer() error %d",errno); errnoDebug("[DS]: readPeer() read ",errno); // testing debug } else if (nbytes == 0) { DEBUG2("[DS]: readPeer() EOF"); } //DEBUG2("[DS]: readPeer() got >%s< %d", buffer, nbytes); return nbytes; } // // TCP peer reader with quirk for iViewer // static int readIVPeer(int fd, char* buffer, int max) { //DEBUG2("[DS]: readIVPeer()"); int nbytes = read(fd, buffer, max); if (nbytes < 0) { // Read error ERROR2("[DS]: readIVPeer() error %d",errno); errnoDebug("[DS]: readIVPeer() read ",errno); // testing debug } else if (nbytes == 0) { DEBUG2("[DS]: readIVPeer() EOF"); } else { boolean_t heartbeat = BOOL_NO; char *hptr = buffer; //DEBUG2("[DS]: readIVPeer() got %s", buffer); //while ((hptr = strstr(hptr, "h=0"))) { if (strstr(hptr, "h=0")) { // do not erase it from read data, because it used as disconnect timer in cfg.files /* *hptr = '\r'; hptr++; *hptr = '\r'; hptr++; *hptr = '\r'; */ heartbeat = BOOL_YES; } hptr = buffer; while ((hptr = strchr(hptr, '\3'))) { // end-of-text marker in CommandFusion // replace \3 separator to \r *hptr = '\r'; } if (heartbeat) { DEBUG2("[DS]: readIVPeer() send iViever heartbeat"); writeIViewerHeartbeat(fd); } } //DEBUG2("[DS]: readIVPeer() got >%s< %d", buffer, nbytes); return nbytes; } // // CLIENT_NOAT peer reader // in IR communication a lot of 'empty' chars (= -1) could be added // static int readIRPeer(int fd, char* buffer, int max) { int nbytes = read(fd, buffer, max); if (nbytes < 0) { // Read error ERROR2("[DS]: readIRPeer() error %d",errno); errnoDebug("[DS]: readIRPeer() read ",errno); // testing debug } else if (nbytes == 0) { DEBUG2("[DS]: readIRPeer() EOF"); } else { buffer[nbytes] = '\0'; char * k2 = buffer; while (*k2 != '\0') { if (*k2 == -1) { *k2 = '\r'; } k2++; } } //DEBUG2("[DS]: readIRPeer() got >%s< %d", buffer, nbytes); return nbytes; } // // BT peer reader with quirk for Bemused // must read VOLM command with an additional value byte // SHFL/REPT _can_ follow with an additional byte - so don not bother about them // static int readBmPeer(int fd, char* buffer, int max) { int nbytes = read(fd, buffer, max); if (nbytes < 0) { // Read error ERROR2("[DS]: readBmPeer() error %d",errno); errnoDebug("[DS]: readBmPeer() read ",errno); // testing debug } else if (nbytes == 0) { DEBUG2("[DS]: readBmPeer() EOF"); } else { boolean_t heartbeat = BOOL_NO; char *hptr = NULL; while ((hptr = strstr(buffer, "CHCK"))) { // erase it from read data *hptr = '\r'; hptr++; *hptr = '\r'; hptr++; *hptr = '\r'; hptr++; *hptr = '\r'; heartbeat = BOOL_YES; } if (heartbeat) { DEBUG2("[DS]: readBmPeer() send Bemused heartbeat"); writeBemusedHeartbeat(fd); } // hack to make it work correctly with Bemused clients char c = '\r'; if (nbytes >=4 && (strncmp((buffer+nbytes-4), "VOLM", 4) == 0 //|| // read only VOLM without value to set /*strncmp((buffer+nbytes-4), "SHFL", 4) == 0 || strncmp((buffer+nbytes-4), "REPT", 4) == 0*/)) { int ret; if ((ret = bt_readchar(fd,&c,500000)) < 0) { DEBUG2("[DS]: readBmPeer: Bemused hack: read < 0"); } else { sprintf(tmp, "[DS]: readBmPeer: Bemused hack: read >%c<", c); logger(L_DBG,tmp); buffer[nbytes] = c; nbytes++; } } } //DEBUG2("[DS]: readBmPeer() got >%s< %d", buffer, nbytes); return nbytes; } static int readPeersInternal(ConnectInfo* peer) { //INFO2("[DS]: readPeersInternal peer %d", peer->id); char buf[MAXCMDLEN]; memset(buf, 0, MAXCMDLEN); int len = 0; //printf("read_command\n"); if (peer->mode == SERVER_STDIN) { len = stdinRead(buf,MAXCMDLEN); // returns EOF in case of error and EOF if (len > 0 && len != EOF) { DEBUG2("[DS]: read_command SERVER_STDIN %d %s\n", len, buf); parseCommand(peer->id, buf); } } else if (peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML) { len = checkWebPort(buf, MAXCMDLEN); // returns EOF in case of error and EOF if (len > 0 && len != EOF) { DEBUG2("[DS]: read_command WEB/CMXML %d %s\n", len, buf); parseCommand(peer->id, buf); } } else { /* use select() for others int fd = _peerHandlers[peer->mode].descriptor(peer); if (peer->state == PEER_CONNECTED && fd >= 0) { char* p = buf; while (len < MAXCMDLEN) { char c; int ch = bt_readchar(fd,&c,100); INFO2("[DS]: readPeersInternal read from peer with mode %d got %d", peer->mode, ch); if (ch == EOF) { INFO2("[DS]: readPeersInternal EOF peer with mode %d", peer->mode); buf[0] = 0; peer->state = PEER_DISCONNECTED; break; } else if (ch == EOF-1) { break; } else if (ch >= 0 && (c == '\r' || c == ';')) { break; } else if (ch >= 0 && c != '\r' && c != ';') { *p++ = c; len++; } } buf[len] = '\0'; stringAppend(buffer,"\r"); // separator stringAppend(buffer,buf); } */ } return len; } static int doReadPeer(ConnectInfo* peer, int fd) { char buf[MAXCMDLEN]; memset(buf, 0, MAXCMDLEN); //DEBUG2("[DS]: doReadPeer() ready to read from fd %d (peer %d)", fd, peer->id); int rc = 0; if (peer->mode == SERVER_TCP && getIViewer()) { rc = readIVPeer(fd, buf, MAXCMDLEN); } else if (peer->mode == SERVER_BT && getBemused()) { rc = readBmPeer(fd, buf, MAXCMDLEN); } else if (peer->mode == CLIENT_NOAT) { rc = readIRPeer(fd, buf, MAXCMDLEN); } else if (peer->mode == CLIENT_RFCOMM || peer->mode == CLIENT_AT) { rc = atRead(peer, buf, MAXCMDLEN); } else if (peer->mode == FRONT_END) { return feRead(fd); } else { rc = readPeer(fd, buf, MAXCMDLEN); } if (rc <= 0) { // EOF or error DEBUG2("[DS]: doReadPeer() EOF or error fd %d (peer %d), reset connection", fd, peer->id); _peerHandlers[peer->mode].resetConnection(peer); return EOF; } parseCommand(peer->id, buf); return 1; } int processPeers() { //DEBUG2("[DS]: processPeers()"); fd_set read_fds; FD_ZERO(&read_fds); struct timeval tv; tv.tv_sec = 0; tv.tv_usec = 100; int max_fd = -1; int readCnt = 0; SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; //DEBUG2("[DS]: processPeers() peer %d state %s", peer->mode, // (peer->state == PEER_CONNECTED ? "CONNECTED" : // (peer->state == PEER_WAIT_LISTEN ? "WAIT_LISTEN" : "WAIT_ACCEPT"))); if ((peer->state == PEER_CONNECTED && !(peer->mode == SERVER_STDIN || peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML)) || peer->state == PEER_WAIT_LISTEN || peer->state == PEER_WAIT_ACCEPT) { int fd = _peerHandlers[peer->mode].descriptor(peer); //DEBUG2("[DS]: processPeers() peer %d connected %s state (fd=%d)", peer->id, // (peer->state == PEER_CONNECTED ? "CONNECTED" : // (peer->state == PEER_WAIT_LISTEN ? "WAIT_LISTEN" : "WAIT_ACCEPT")), fd); if (fd >= 0) { FD_SET(fd, &read_fds); //} else { web, xml can have that // DEBUG2("[DS]: processPeers() peer with mode %d improper descriptor", peer->mode); } if (max_fd < fd) { max_fd = fd; } } list = listSingleNext(list); } if (max_fd >= 0) { // have some peers int rc = select(max_fd + 1, &read_fds, NULL, NULL, &tv); //if (rc != 0) { // DEBUG2("[DS]: processPeers() select()=%d, maxfd=%d",rc,max_fd); //} if (rc == 0) { // timeout //DEBUG2("[DS]: processPeers() no data from select()"); } else if (rc < 0) { // some error //DEBUG2("[DS]: processPeers() error %d", errno); errnoDebug("[DS]: processPeers() select ",errno); // testing debug } else { //DEBUG2("[DS]: --------------------------------------------"); //DEBUG2("[DS]: processPeers() got data from select()"); list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; int fd = _peerHandlers[peer->mode].descriptor(peer); if (fd >= 0) { //DEBUG2("[DS]: processPeers() %d descriptor on peer %d", fd, peer->id); if (FD_ISSET(fd, &read_fds)) { //DEBUG2("[DS]: processPeers() FD_ISSET %d descriptor", fd); if (peer->state == PEER_CONNECTED) { //DEBUG2("[DS]: processPeers() peer %d readable", peer->id); int rr = doReadPeer(peer, fd); if (rr == EOF) { freeCachedData(peer); int cnum = countConnections(); DEBUG2("[DS]: processPeers() countConnections %d", cnum); // no more connections if (cnum == 0) { DEBUG2("[DS]: processPeers() disconnect notify"); return EOF; } } else if (rr > 0) { readCnt++; } } else if (peer->state == PEER_WAIT_LISTEN) { DEBUG2("[DS]: processPeers() peer %d listenable", peer->id); if (_peerHandlers[peer->mode].listenConnection(peer) < 0) { DEBUG2("[DS]: readPeers() fails to listen from peer %d (fd=%d)", peer->id, fd); } } else if (peer->state == PEER_WAIT_ACCEPT) { //logger(L_DBG,"[DS]: ************ new connection **********"); DEBUG2("[DS]: processPeers() accept connection from peer %d (fd=%d)", peer->id, fd); if (_peerHandlers[peer->mode].acceptConnection(peer) == EXIT_OK) { int cnum = countOtherConnections(peer); DEBUG2("[DS]: processPeers() countOtherConnections %d", cnum); // do this only on first connect if (cnum == 0) { DEBUG2("[DS]: processPeers() connectNotify"); connectNotify(peer->id); } else { freeCachedData(peer); if (needStoreState()) { syncPeer(peer); } } // too late, because syncPeer() was already done //if (peer->state == PEER_CONNECTED) { // _peerHandlers[peer->mode].setupPost(peer); //} } } //} else { // DEBUG2("[DS]: processPeers() no FD_ISSET on peer %d", peer->id); } //} else { // DEBUG2("[DS]: processPeers() no descriptor on peer %d", peer->id); } list = listSingleNext(list); } } //} else { // DEBUG2("[DS]: processPeers() no peers to read"); } //DEBUG2("[DS]: processPeers() special cases"); // special cases list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (peer->state == PEER_CONNECTED || peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML) { int rc = readPeersInternal(peer); if (rc < 0 || rc == EOF) { // EOF or error DEBUG2("[DS]: processPeers() EOF or error special case (peer %d), close connection", peer->id); _peerHandlers[peer->mode].closeConnection(peer, 0); return EOF; } else if (rc > 0){ readCnt++; } // Only stdin, web and cmxml goes here. None of them can have state PEER_WAIT_ACCEPT //} else if (peer->state == PEER_WAIT_ACCEPT) { // //DEBUG2("[DS]: processPeers() TODO aa1"); } list = listSingleNext(list); } //DEBUG2("[DS]: processPeers() return %d", readCnt); return readCnt; } int writePeers(dMessage* dm) { INFO2("[DS]: writePeers"); int ret = EXIT_NOK; if (needStoreState()) { updateState(dm); } SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (dm->peer == PEER_ANY || peer->id == dm->peer) { if (peer->state == PEER_CONNECTED || peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML) { INFO2("[DS]: write to peer %d (%d)", peer->id, dm->peer); int ret1 = (_peerHandlers[peer->mode].writeConnection == NULL ? EXIT_NOK : _peerHandlers[peer->mode].writeConnection(peer, dm)); if (ret1 != EXIT_NOK) { ret = ret1; } } } list = listSingleNext(list); } //INFO2("[DS]: write result %s", (ret == EXIT_NOK? "NOK": "OK")); return ret; } static int writeByteInternal(int fd, int byte) { unsigned char byte2write[2]; byte2write[0] = (unsigned char) byte; byte2write[1] = '\0'; if (write(fd, byte2write, 1) < 0) { logger(L_ERR, "error writing bytes"); return EXIT_NOK; } return EXIT_OK; } static int peerWriteBytes(ConnectInfo* peer, const char* command) { int fd = _peerHandlers[peer->mode].descriptor(peer); if (fd < 0) { logger(L_DBG,"[DS]: peerWriteBytes() no connection data"); return EXIT_NOK; } // send command if (fd >= 0 && command && command[0]) { char byteStr[MAXCKPDLEN]; memset(byteStr,0,MAXCKPDLEN); strncpy(byteStr,command,MAXCKPDLEN-1); DEBUG2("[DS]: peerWriteBytes >%s<", byteStr); char* bStr = strtok(byteStr,","); while (bStr != NULL) { //DEBUG2("[DS]: Next byte is >%s<", bStr); char bStripped[4]; while (*bStr == ' ') { bStr++; } int i = 0; while (*bStr != ' ' && i < 3) { // 0 < ... < 256 bStripped[i] = *bStr; bStr++; i++; } bStripped[i] = '\0'; //DEBUG2("[DS]: Next byte is >%s<", bStripped); if (writeByteInternal(fd, atoi(bStripped)) != EXIT_OK) { logger(L_DBG,"[DS]: Fails in peerWriteBytes()"); return EXIT_NOK; } bStr = strtok(NULL,","); } } //logger(L_DBG, "peerWriteBytes EXIT"); return EXIT_OK; } int writeBytesPeers(char* command) { int ret = EXIT_NOK; SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (peer && peer->state == PEER_CONNECTED && _peerHandlers[peer->mode].writeBytesConnection != NULL) { INFO2("[DS]: write bytes to peer %d", peer->mode); int ret1 = _peerHandlers[peer->mode].writeBytesConnection(peer, command); if (ret1 != EXIT_NOK) { ret = ret1; } } list = listSingleNext(list); } return ret; } // // In case of WEB/CMXML it is enougn to send name of file, not full content // int writeFilePeers(dMessage* dm) { INFO2("[DS]: DM_SETFILE %d %s %s %s", dm->peer, (char*) dm->value, dm->file, dm->scaled); if (needStoreState()) { updateState(dm); } int size = 0; char* buf = NULL; dMessage* dm2 = NULL; boolean_t evaluated = BOOL_NO; SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (dm->peer == PEER_ANY || dm->peer == peer->id) { if (peer->state == PEER_CONNECTED || peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML) { INFO2("[DS]: write file to peer %d", peer->id); if (peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML) { // nothing, state stored by updateState(...) above } else { if (evaluated == BOOL_NO) { evaluated = BOOL_YES; // read data from file buf = readFromFile(dm->value, dm->scaled, &size); INFO2("[DS]: writeFilePeers got from file %s %d bytes", dm->scaled, size); if (buf && size > 0) { dm2 = allocDMessage(); dm2->type = DM_SET; dm2->subtype = dm->subtype; dm2->value = buf; dm2->size = size; } } if (dm2) { if (_peerHandlers[peer->mode].writeConnection != NULL) { _peerHandlers[peer->mode].writeConnection(peer, dm2); } } } } } list = listSingleNext(list); } freeDMessage(dm2); return EXIT_OK; } int writeCKPD(dMessage* dm) { //logger(L_DBG, "[DS]: Send CKPD"); SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (dm->peer == PEER_ANY || dm->peer == peer->id) { if (peer->state == PEER_CONNECTED && (peer->mode == CLIENT_RFCOMM || peer->mode == CLIENT_AT)) { int fd = _peerHandlers[peer->mode].descriptor(peer); if (fd >= 0) { logger(L_DBG, "[DS]: Send CKPD"); sendSeq(fd, (char*) dm->value); } } } list = listSingleNext(list); } return EXIT_OK; } /*int writeCMER(dMessage* dm) { logger(L_DBG, "[DS]: Send CMER"); SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (peer->state == PEER_CONNECTED && (peer->mode == CLIENT_RFCOMM || peer->mode == CLIENT_AT)) { int fd = _peerHandlers[peer->mode].descriptor(peer); if (fd >= 0) { sendCMER(fd, dm->size); } } list = listSingleNext(list); } return EXIT_OK; }*/ // // returns EXIT_OK if at least one connection exists // int connected() { SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (peer->state == PEER_CONNECTED && peer->mode != FRONT_END) { return EXIT_OK; /*} else if (peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML) { // connection-less, check clients num _WebConnection* cn = (_WebConnection*) peer->connectionData; if (cn) { if (haveClients(cn)) { return EXIT_OK; } }*/ } list = listSingleNext(list); } return EXIT_NOK; } // // Send heartbeat message to all TCP connection. // Suppose we have only one connection to iViewer // static int socketWriteByte(int fd, int byte) { unsigned char byte2write[2]; byte2write[0] = (unsigned char) byte; byte2write[1] = '\0'; if (write(fd, byte2write, 1) < 0) { logger(L_ERR, "error writing byte to socket"); return EXIT_NOK; } return EXIT_OK; } static void writeIViewerHeartbeat(int fd) { // reply message is h=1\03 socketWriteByte(fd, 104); // h socketWriteByte(fd, 61); // = socketWriteByte(fd, 49); // 1 socketWriteByte(fd, 3); // \03 } static void writeBemusedHeartbeat(int fd) { // reply message to "CHCK" is "Y" writePeer(fd, "Y", 1); } void writeHeartbeat(ConnectInfo* peer) { int fd = _peerHandlers[peer->mode].descriptor(peer); if (fd >= 0) { writeIViewerHeartbeat(fd); } } void sendIViewerHeartbeat(void) { SingleList* list = _connections; while (list) { ConnectInfo* peer = (ConnectInfo*) list->data; if (peer->state == PEER_CONNECTED && peer->mode == SERVER_TCP) { // iViewer connection can be TCP only writeHeartbeat(peer); } list = listSingleNext(list); } } // // returns EXIT_OK if there are only client peers and all peers unconnected // int needExit() { SingleList* list = _connections; while (list) { ConnectInfo* cn = (ConnectInfo*) list->data; if (cn->state == PEER_CONNECTED) { return EXIT_NOK; } if (!(cn->mode == CLIENT_RFCOMM || cn->mode == CLIENT_AT || cn->mode == CLIENT_ILIRC)) { return EXIT_NOK; } list = listSingleNext(list); } return EXIT_OK; } // // returns EXIT_OK if there are web/cmxml peer exists // int needFinalizer() { SingleList* list = _connections; while (list) { ConnectInfo* cn = (ConnectInfo*) list->data; if (cn->mode == SERVER_WEB || cn->mode == SERVER_CMXML) { return EXIT_OK; } list = listSingleNext(list); } return EXIT_NOK; } // // returns EXIT_OK if there are AT peer exists // // TODO: mutex ? int needAtMainMenuReturn(int peerid) { SingleList* list = _connections; while (list) { ConnectInfo* cn = (ConnectInfo*) list->data; if (cn->id == peerid && (cn->mode == CLIENT_RFCOMM || cn->mode == CLIENT_AT)) { return EXIT_OK; } list = listSingleNext(list); } return EXIT_NOK; } // // returns EXIT_OK if there are server-mode peer exists // int isServerMode() { SingleList* list = _connections; while (list) { ConnectInfo* cn = (ConnectInfo*) list->data; if (cn->mode == SERVER_BT || cn->mode == SERVER_TCP || cn->mode == SERVER_WEB || cn->mode == SERVER_CMXML || cn->mode == SERVER_UX || cn->mode == CLIENT_NOAT #ifdef USE_L2CAP || cn->mode == SERVER_L2CAP #endif ) { return EXIT_OK; } list = listSingleNext(list); } return EXIT_NOK; } // // returns EXIT_OK if there are server-mode (no WEB/CMXML) peer exists // /*int isServerModeNoWeb() { SingleList* list = _connections; while (list) { ConnectInfo* cn = (ConnectInfo*) list->data; if (cn->mode == SERVER_BT || cn->mode == SERVER_TCP || cn->mode == SERVER_UX || cn->mode == CLIENT_NOAT #ifdef USE_L2CAP || cn->mode == SERVER_L2CAP #endif ) { return EXIT_OK; } list = listSingleNext(list); } return EXIT_NOK; } int isWebServer() { return needFinalizer(); } // // returns EXIT_OK if there are at-mode peer exists // int isAtMode() { SingleList* list = _connections; while (list) { ConnectInfo* cn = (ConnectInfo*) list->data; if (cn->mode == CLIENT_RFCOMM || cn->mode == CLIENT_AT || cn->mode == CLIENT_ILIRC) { return EXIT_OK; } list = listSingleNext(list); } return EXIT_NOK; }*/ // // returns EXIT_OK if there are CLIENT_RFCOMM/CLIENT_AT peer exists // int isAtModeDuplex() { SingleList* list = _connections; while (list) { ConnectInfo* cn = (ConnectInfo*) list->data; if (cn->mode == CLIENT_RFCOMM || cn->mode == CLIENT_AT) { return EXIT_OK; } list = listSingleNext(list); } return EXIT_NOK; } // // In iViewer mode returns TCP port (search for the first TCP connection) // int getIViewerTcpPort(void) { int port = -1; SingleList* list = _connections; while (list) { ConnectInfo* cn = (ConnectInfo*) list->data; if (cn->mode == SERVER_TCP && cn->port >= 0) { // SERVER_TCP handle also Unix (file) sockets return cn->port; } list = listSingleNext(list); } return port; } boolean_t checkActiveCall() { SingleList* list = _connections; while (list) { ConnectInfo* cn = (ConnectInfo*) list->data; if (cn->mode == CLIENT_RFCOMM) { if (rfcommCheckActiveCall(cn)) { return BOOL_YES; } } else if (cn->mode == CLIENT_AT) { if (serialCheckActiveCall(cn)) { return BOOL_YES; } } list = listSingleNext(list); } return BOOL_NO; } boolean_t hasActiveCall() { SingleList* list = _connections; while (list) { ConnectInfo* cn = (ConnectInfo*) list->data; if (cn->mode == CLIENT_RFCOMM) { if (rfcommHasActiveCall(cn)) { return BOOL_YES; } } else if (cn->mode == CLIENT_AT) { if (serialHasActiveCall(cn)) { return BOOL_YES; } } list = listSingleNext(list); } return BOOL_NO; } void getClientSize(int peer, int fd) { DEBUG2("[DS]: Detect cover size for peer %d", peer); int n = write(fd,CMD_STR_GETCOVERSZ,16); if (n < 0) { logger(L_ERR, "[DS]: Error on detect cover size (w)"); return; } char buf[MAXCMDLEN]; memset(buf, 0, MAXCMDLEN); n = readPeer(fd, buf, MAXCMDLEN); if (n <= 0) { // EOF or error logger(L_ERR, "[DS]: Error on detect cover size (r)"); return; } buf[n] = '\0'; // Msg:CoverSize(xxx,); DEBUG2("[DS]: Cover size reply for peer %d is %s", peer, buf); char* pos = strstr(buf,"CoverSize("); if (!pos) { logger(L_ERR, "[DS]: Error on detect cover size (p)"); } pos += 10; // "CoverSize(" char *p2 = pos; while (isdigit(*p2)) { p2++; } *p2 = '\0'; int sz = atoi(pos); DEBUG2("[DS]: Cover size for peer %d is %d", peer, sz); DEBUG2("[DS]: Detect screen size for peer %d", peer); n = write(fd,CMD_STR_GETSCREENSZ,17); if (n < 0) { logger(L_ERR, "[DS]: Error on detect screen size (w)"); return; } n = readPeer(fd, buf, MAXCMDLEN); if (n <= 0) { // EOF or error logger(L_ERR, "[DS]: Error on detect screen size (r)"); return; } buf[n] = '\0'; // Msg:SizeX(xxx,);SizeY(xxx); DEBUG2("[DS]: Cover size reply for peer %d is %s", peer, buf); pos = strstr(buf,"SizeX("); if (!pos) { logger(L_ERR, "[DS]: Error on detect screen X size"); return; } pos += 6; // "SizeX(" p2 = pos; while (isdigit(*p2)) { p2++; } *p2 = '\0'; int xsz = atoi(pos); DEBUG2("[DS]: X screen size for peer %d is %d", peer, xsz); pos = strstr(buf,"SizeY("); if (!pos) { logger(L_ERR, "[DS]: Error on detect screen Y size (attempt 1)"); // try again n = readPeer(fd, buf, MAXCMDLEN); if (n <= 0) { // EOF or error logger(L_ERR, "[DS]: Error on detect screen size (r)"); return; } buf[n] = '\0'; pos = strstr(buf,"SizeY("); if (!pos) { logger(L_ERR, "[DS]: Error on detect screen Y size"); return; } } pos += 6; // "SizeY(" p2 = pos; while (isdigit(*p2)) { p2++; } *p2 = '\0'; int ysz = atoi(pos); DEBUG2("[DS]: Y screen size for peer %d is %d", peer, ysz); customizePeer(peer, xsz, ysz, sz); } anyremote-6.7.1/src/pr_btspp.h0000644000232200023220000000226212664332726016704 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PR_BTSPP_H_ #define _PR_BTSPP_H_ #include "peer.h" int btsppFD (ConnectInfo* conn); int btsppOpen (ConnectInfo* conn); int btsppListen(ConnectInfo* conn); int btsppAccept(ConnectInfo* conn); int btsppWrite (ConnectInfo* conn, dMessage* msg); void btsppReset (ConnectInfo* conn); void btsppClose (ConnectInfo* conn, int final); #endif anyremote-6.7.1/src/loop.h0000644000232200023220000000200312664332726016015 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // Main loop // #ifndef _LOOP_H_ #define _LOOP_H_ 1 void loopStart(); void loopStop(); void loopDestroy(); void addKeepalive(const char* tmout); void setKeepalive(); #endif anyremote-6.7.1/src/Makefile.am0000644000232200023220000000332013226200116016710 0ustar debalancedebalance# # anyRemote - a bluetooth remote for your PC. # # Copyright (C) 2007-2018 Mikhail Fedotov # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # bin_PROGRAMS = anyremote anyremote_SOURCES = main.c dispatcher.c executor.c cmds.c parse.c utils.c conf.c \ xemulate.c atsend.c btio.c pr_l2cap.c pr_web.c pr_frontend.c ar_dbus.c \ queue.c mutex.c thread.c list.c var.c alarm.c timer.c hash.c loop.c str.c \ pr_stdin.c peer.c pr_btspp.c pr_socket.c pr_rfcomm.c pr_serial.c \ sys_util.c security.c mode.c state.c gen_html.c gen_xml.c gen_ar.c avahi.c \ parse.h executor.h cmds.h utils.h xemulate.h conf.h common.h common.h ar_dbus.h \ pr_l2cap.h pr_web.h pr_frontend.h btio.h atsend.h dispatcher.h lib_wrapper.h \ queue.h mutex.h thread.h list.h var.h alarm.h timer.h hash.h loop.h str.h \ pr_stdin.h peer.h pr_btspp.h pr_socket.h pr_rfcomm.h pr_serial.h \ sys_util.h security.h mode.h state.h gen_html.h gen_xml.h gen_ar.h avahi.h anyremote_LDFLAGS = @LDFLAGS@ anyremote_LDADD = @AR_EXTRALIBS@ AM_CFLAGS = @AR_EXTRAFLAGS@ anyremote-6.7.1/src/ar_dbus.h0000644000232200023220000000222712664332726016473 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _AR_DBUS_H_ #define _AR_DBUS_H_ #define TYPE_ERROR 0 #define TYPE_INT 1 #define TYPE_UINT 2 #define TYPE_DOUBLE 3 #define TYPE_BOOL 4 #define TYPE_STRING 5 #include "parse.h" int dbusInit(); void dbusFinish(); int dbusCommand(int subtype, const char* descr, const char* cmdString, cmdParams* params); #endif anyremote-6.7.1/src/executor.c0000644000232200023220000006277013226200116016674 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include "lib_wrapper.h" #include "ar_dbus.h" #include "common.h" #include "utils.h" #include "cmds.h" #include "conf.h" #include "executor.h" #include "dispatcher.h" #include "pr_frontend.h" #include "queue.h" #include "timer.h" #include "var.h" #include "peer.h" #include "state.h" extern int getClip (char *string); // from atsend.h extern char tmp[MAXMAXLEN]; extern int gotSignal; extern boolean_t stillRun; static int handle_command(int peer, char* cmd); static int handle_alarm (char* cmd) ; static int isBemusedCommand(char *cmd); static int isInpLircCommand(char *cmd); static int isLircCommand (char *cmd); static int isIViewerCommand(char *cmd); static void handleInit(); static void handleConnect(); static void handleDisconnect(); static void handleExit(); static void cleanAutoRepeatFlag(); int commandTimer = 0; int repeatTimer = 0; char modifierString [MAXARGLEN]; int flushConf = 0; SingleList * _peers = NULL; void freeEMessage(void* ptr) { eMessage *em = (eMessage *) ptr; if (em) { free(em->value); free(em); } } void sendToExecutor(eMessage *buf) { queuePush(Q_EXEC, (void*) buf); } static void freePeerDataList(void* data) { PeerDef* peer = (PeerDef* ) data; free(peer); } static void freePeerData(int id) { SingleList* list = _peers; while (list) { PeerDef* peer = (PeerDef*) list->data; if (peer->id == id) { DEBUG2("[EX]: Free peer %d data", id); list = listSingleRemove(_peers, peer); freePeerDataList(peer); return; } list = listSingleNext(list); } } static void executorCleanup() { listSingleFullFree(_peers, freePeerDataList); } void customizePeer(int id, int szX, int szY, int coverSz) { // MUTEX ??? SingleList* list = _peers; while (list) { PeerDef* peer = (PeerDef*) list->data; if (peer->id == id) { if (szX != -1) { peer->xSz = szX; } if (szY != -1) { peer->ySz = szY; } if (coverSz != -1) { peer->coverSz = coverSz; } return; } list = listSingleNext(list); } PeerDef* pd = (PeerDef*) malloc(sizeof(PeerDef)); pd->id = id; pd->xSz = szX; pd->ySz = szY; pd->coverSz = coverSz; DEBUG2("[ ]: Peer data: Sizes %d -> %d %d %d", id, pd->xSz, pd->ySz, pd->coverSz); _peers = listSingleAppend(_peers, pd); } static eMessage* getEFinalizer() { eMessage* em = (eMessage*) malloc(sizeof(eMessage)); em->peer = PEER_ANY; em->type = EM_AS_IS; em->value = strdup("End();"); return em; } void sendEventToExecutor(int peer, int event) { eMessage* em = (eMessage*) malloc(sizeof(eMessage)); em->peer = peer; em->type = EM_EVENT; em->value = malloc(sizeof(int)); *((int *)em->value) = event; sendToExecutor(em); if (needFinalizer() == EXIT_OK) { sendToExecutor(getEFinalizer()); } } static void initExecutor() { dbusInit(); //logger(L_INF,"[EX]: DBUS initialized"); handleInit(); //logger(L_INF,"[EX]: init hooks done"); setInitDone(); printConf(); dMessage* dm = allocDMessage(); dm->type = DM_EVENT; dm->subtype = ID_EVENT_INIT; sendToDispatcher(dm); } // Should we auto-repeat command (timeout about 1/10 second) ? static void doAutoRepeat() { // Should we auto-repeat command (timeout about 1/10 second) ? if (repeatNow() && getAutoRepeat()) { int isOdd = ((int)repeatTimer/2)*2; if (repeatTimer > 100) { // Check for infinite loop. Only 50 autorepeats per one press cleanAutoRepeatFlag(); return; } else if (repeatTimer > 0 && isOdd == repeatTimer) { DEBUG2("[EX]: Auto repeat command ... (%d)", repeatTimer); handleCmdByKey(PEER_ANY, repeatNow(),NULL); } repeatTimer++; } } static void doTimers() { //DEBUG2("[EX]: check timers(%d)", commandTimer); // Verify commands executed by timer (timeout about 1 sec) if (commandTimer == 50) { //logger(L_DBG,"[EX]: Verify timer commands ..."); verifyTimerCfg(1) ; commandTimer = 0; } else { commandTimer++; } } static int handleKeyMsg(int peer, void * ptr) { char * cmd = (char *) ptr; sprintf(tmp, "[EX]: (%d) got key >%s<", peer, (cmd ? cmd : "NULL")); logger(L_DBG, tmp); handle_command(peer, cmd); return 0; } static int handleStringMsg(int peer, void * ptr) { char * msgIn = (char*) ptr; sprintf(tmp, "[EX]: got string >%s<", msgIn); logger(L_DBG, tmp); execDynamically(msgIn); return 0; } static int handleEventMsg(int peer, void* ptr) { int exitFlag = 0; if (ptr == NULL) { return exitFlag; } int* evt = (int*) ptr; if (*evt == ID_EVT_CONNECT) { logger(L_DBG, "[EX]: got event EVT_CONNECT"); handleConnect(); } else if (*evt == ID_EVT_DISCONNECT) { logger(L_DBG, "[EX]: got event EVT_DISCONNECT"); handleDisconnect(peer); //} else if (*evt == ID_EVT_INIT) { //logger(L_DBG, "[EX]: got event EVT_INIT"); // handleInit(); } else if (*evt == ID_EVT_EXIT) { logger(L_DBG, "[EX]: got event EVT_EXIT"); handleExit(); exitFlag = 1; } return exitFlag; } static int handleAlarmMsg(int peer, void * ptr) { char * cmd = (char *) ptr; sprintf(tmp, "[EX]: got alarm >%s<", cmd); logger(L_DBG, tmp); handle_alarm(cmd); return 0; } static int handleAsIsMsg(int peer, void * ptr) { logger(L_DBG, "[EX]: got as is"); char * cmd = (char *) ptr; dMessage* dm = allocDMessage(); dm->type = DM_SET; dm->subtype = ID_SET_MAX; dm->size = strlen(cmd); dm->value = (void*) strdup(cmd); sendToDispatcher(dm); return 0; } static struct { int id; int (*hook)(int peer, void* p); } _msgHooks[] = { {EM_KEY, handleKeyMsg }, {EM_STRING, handleStringMsg}, {EM_EVENT, handleEventMsg }, {EM_ALARM, handleAlarmMsg }, {EM_AS_IS, handleAsIsMsg } }; pointer_t executorRoutine(pointer_t thread) { if (queueExists(Q_EXEC) != RC_OK) { logger(L_INF,"[EX]: Do not start executor thread"); return NULL; } logger(L_INF,"[EX]: Start executor thread"); initExecutor(); while (stillRun) { eMessage *em = (eMessage *) queuePop(Q_EXEC); if (em != NULL) { DEBUG2("[EX]: got event from %d", em->peer); int exitFlag = (_msgHooks[em->type].hook)(em->peer, em->value); freeEMessage(em); if (exitFlag) { break; } } //logger(L_DBG, "[EX]: command processed of empty input"); // Should we auto-repeat command (timeout about 1/10 second) ? doAutoRepeat(); // Timers check (once per second) doTimers(); if (!stillRun) { logger(L_DBG,"[EX]: Break from loop ..."); break; } //logger(L_DBG, "[EX]: wait a bit"); usleep(20000); // loop timer (1/50 of second) } executorCleanup(); DEBUG2("[EX]: thread stopped"); return NULL; } static void handleInit() { int i = 0; type_key *k = findItem(EVT_INIT, &i, NULL); if (k && i == FLAG_EXACT) { logger(L_INF, "[EX]: Exec cmd on init"); handleCmdByKey(PEER_ANY,k,NULL); } handleHook(ID_EVT_INIT); } static void handleConnect() { int i = 0; int ok1 = EXIT_NOK; type_key *k = findItem(EVT_CONNECT, &i, NULL); if (k && i == FLAG_EXACT) { logger(L_INF, "[EX]: Exec cmd on connect"); ok1 = EXIT_OK; handleCmdByKey(PEER_ANY,k,NULL); } int ok2 = handleHook(ID_EVT_CONNECT); if (ok1 == EXIT_OK || ok2 == EXIT_OK) { if (needFinalizer() == EXIT_OK) { sendToDispatcher(getDFinalizer()); } } } static void handleDisconnect(int peer) { int i = 0; cleanAutoRepeatFlag(); freePeerData(peer); type_key *k = findItem(EVT_DISCONNECT, &i, NULL); if (k && i == FLAG_EXACT) { logger(L_INF, "[EX]: Exec cmd on disconnect"); handleCmdByKey(PEER_ANY,k,NULL); } handleHook(ID_EVT_DISCONNECT); } static void handleExit() { //printf("[EX]: handleExit\n"); freeTimers(NULL); //printf("[EX]: handleExit EVT_EXIT\n"); int i; type_key *k = findItem(EVT_EXIT, &i, NULL); if (k && i == FLAG_EXACT) { logger(L_INF, "[EX]: Exec cmd on exit"); handleCmdByKey(PEER_ANY,k,NULL); // Since we exiting now we did not interested in return code } //printf("[EX]: handleExit handleHook\n"); handleHook(ID_EVT_EXIT); //printf("[EX]: handleExit free data\n"); freeTimers(NULL); // can we create timer in (Exit) ??? freeVars(); freeCfg(); freeRegexps(); dbusFinish(); freeState(); //printf("[EX]: handleExit EXIT\n"); } static void cleanAutoRepeatFlag() { // Clear auto repeat flag logger(L_DBG,"[EX]: Clean auto repeat flag"); setRepeatNow(NULL); repeatTimer = 0; } static int handle_alarm(char* key) { DEBUG2("[EX]: handle_alarm() >%s<", (key ? key : "NULL")); if (!key) { return EXIT_OK; } int i; cmdParams params; type_key *k = findItem(key , &i, ¶ms); if (k && i == FLAG_EXACT) { handleCmdByKeyEx(PEER_ANY,k, NULL, 0); if (flushConf == 1) { logger(L_DBG, "[EX]: Flush old configuration"); flushConf = 0; flushOldConf(); } } // else do nothing return EXIT_OK; } static int handle_key_press(int peer, char* key, int isRepeatable) { DEBUG2("[EX]: handle_key_press() >%s<", (key ? key : "NULL")); if (!key) { return EXIT_OK; } if (peer != 0 && strncmp("CoverSize(",key,10) == 0) { int v = 0; int i = 10; while (isdigit(*(key+i))) { v = v*10 + (*(key+i) - '0'); i++; } DEBUG2("[EX]: CoverSize: %d >%d<", peer, v); customizePeer(peer, -1, -1, v); } if (peer != 0 && strncmp("SizeX(",key,6) == 0) { int v = 0; int i = 6; while (isdigit(*(key+i))) { v = v*10 + (*(key+i) - '0'); i++; } DEBUG2("[EX]: SizeX: %d >%d<", peer, v); customizePeer(peer, v, -1, -1); } if (peer != 0 && strncmp("SizeY(",key,6) == 0) { int v = 0; int i = 6; while (isdigit(*(key+i))) { v = v*10 + (*(key+i) - '0'); i++; } DEBUG2("[EX]: SizeY: %d >%d<", peer, v); customizePeer(peer, -1, v, -1); } // If modifier was set already it needs to verify which sequence we go if (modifierString[0] != '\0') { strcat(modifierString," "); // Add one space first strcat(modifierString, key); DEBUG2("[EX]: Modifier+sequence is: >%s<", modifierString); } // Execute appropriate command int i; cmdParams params; type_key *k = findItem((modifierString[0] == '\0' ? key : modifierString), &i, ¶ms); if (k && i == FLAG_EXACT) { if (isRepeatable && (!repeatNow()) && getAutoRepeat()) { logger(L_DBG, "[EX]: Set auto repeat flag"); setRepeatNow(k); } handleCmdByKey(peer, k, NULL); // Clean modifier string modifierString[0] = '\0'; if (flushConf == 1) { logger(L_DBG, "[EX]: Flush old configuration"); flushConf = 0; flushOldConf(); } } else if (k && i == FLAG_MULTIKEY) { logger(L_DBG, "[EX]: Got part of multi keys sequence. Nothing to do."); if (modifierString[0] == '\0') { logger(L_DBG, "[EX]: Start of multi key sequence"); strcpy(modifierString, key); } if (needAtMainMenuReturn(peer)) { sendToMainMenu(peer); } } else if (k && i == FLAG_PARAMETR) { logger(L_DBG, "[EX]: Got parametrized command"); handleCmdByKey(peer, k, ¶ms); // Clean modifier string modifierString[0] = '\0'; } else { // User had pressed some key ... // Send ToMainMenu sequence of CKPD's to show main menu again if (needAtMainMenuReturn(peer)) { sendToMainMenu(peer); } logger(L_DBG, "[EX]: No approprite key definition was found"); if (modifierString[0] != '\0') { // Clean modifier string modifierString[0] = '\0'; logger(L_DBG, "[EX]: Clean modifier string"); } } return EXIT_OK; } static int handle_at_command(int peer, char* cmd) { // Handle different keypresses // Motorola: +CKEV: "1",1 // SE : +CKEV: 1,1 // Sagem: in rare ) cases it could be (between > and <) >,1:< ? int isSE = MODEL_SE; char *key = cmd+7; // Sagem test // key+=3; if (*key == '"') { // Seems this is Motorola key++; //logger(L_DBG,"[EX]: +CKEV is in Motorola format"); isSE = MODEL_MOTOROLA; } if (*key == ',') { // Seems this is Sagem logger(L_DBG,"[EX]: +CKEV is in rare Sagem format (Empty code)"); isSE = MODEL_SAGEM; } int i = 1; if (isSE == MODEL_SE) { // SonyEricsson & default while(key[i] != ',') { i++; } key[i] ='\0'; i = i+1; } else if (isSE == MODEL_MOTOROLA) { // Motorola while(key[i] != '"') { i++; } key[i] ='\0'; i = i+2; } else if (isSE == MODEL_SAGEM) { // rare Sagem case *key ='\0'; } else { logger(L_ERR,"[EX]: Can't recognize +CKEV event !!!"); return EXIT_NOK; } if (key[i] == '1') { //logger(L_DBG,"[EX]: Button down event"); dMessage* dm = allocDMessage(); dm->type = DM_EVENT; dm->subtype = ID_EVENT_FRONTEND; dm->value = (void*) strdup(key); dm->size = strlen(key); sendToDispatcher(dm); return handle_key_press(peer,key,1); } else if (key[i] == '0') { //logger(L_DBG,"[EX]: Button up event"); // In general we skip this cleanAutoRepeatFlag(); return EXIT_OK; } //else DEBUG2("[EX]: something wrong: key should be pressed or released: cmd=>%s< char=>%c<", cmd, key[i]); return EXIT_NOK; } static int handle_command(int peer, char* cmd) { //logger(L_DBG,"[EX]: handle_command"); if (!cmd) { return EXIT_OK; } if (memcmp(cmd, DEF_MSG, 4) == 0) { // Got event from Java client logger(L_DBG,"[EX]: Got event from client"); return handle_key_press(peer, cmd+4, 0); } else if (memcmp(cmd, DEF_CKEV, 6) == 0) { return handle_at_command(peer, cmd); } else if (memcmp(cmd, DEF_CLCC,6) == 0) { //logger(L_INF,"[EX]: Caller ID received. Skip it."); return EXIT_OK; } else if (strstr(cmd, DEF_RING) != NULL) { // Incoming call, this event sent periodically until used answered a call logger(L_INF,"[EX]: Incoming call notification. Skip it."); // Handled inside peer read function return EXIT_OK; } else if (isLircCommand(cmd)) { // LIRC tricks return EXIT_OK; } else if (isInpLircCommand(cmd)) { // inputLIRC tricks return EXIT_OK; } else if (isBemusedCommand(cmd)) { // Bemused server emulation tricks return EXIT_OK; } else if (isIViewerCommand(cmd)) { // CommandFusion iViewer protocol support return EXIT_OK; } else { // SERVER_STDIN ? Just direct input, try it //printf("DEBUG: Is it SERVER_STDIN ? %s\n", cmd); char *p = cmd; while (*p != '\0') { if (*p == '\n') { *p = '\0'; break; } p++; } return handle_key_press(peer,cmd,1); } DEBUG2("[EX]: Unhandled cmd %s", cmd); return EXIT_OK; } // // Should be used in AT mode only // void sendToMainMenu(int peer) { logger(L_INF,"[EX]: sendToMainMenu"); char *tmm = NULL; if ((tmm = getToMainMenu()) != NULL) { dMessage* dm = allocDMessage(); dm->peer = peer; dm->type = DM_CKPD; dm->subtype = ID_SET_MAX; dm->value = (void*) tmm; dm->size = strlen((char*) dm->value); sendToDispatcher(dm); } } // // Bemused server limited emulation // we could get more than one command at once // static int isBemusedCommand(char *cmdIn) { DEBUG2("[EX]: isBemusedCommand: >%s<",cmdIn); int isBemused = 0; char *cmd = cmdIn; char *last = cmdIn + strlen(cmdIn); while (cmd < last) { int handle = 0; int shift = 4; char oneCmd[16]; memset(oneCmd,0,16); char paramValue[8]; paramValue[0] = '\0'; if (strncmp(cmd, "CHCK", 4) == 0 || strncmp(cmd, "DINF", 4) == 0 || strncmp(cmd, "EXIT", 4) == 0 || strncmp(cmd, "FADE", 4) == 0 || strncmp(cmd, "FFWD", 4) == 0 || strncmp(cmd, "GVOL", 4) == 0 || strncmp(cmd, "INF2", 4) == 0 || strncmp(cmd, "INF", 3) == 0 || strncmp(cmd, "LIST", 4) == 0 || strncmp(cmd, "NEXT", 4) == 0 || strncmp(cmd, "PAUS", 4) == 0 || strncmp(cmd, "PLEN", 4) == 0 || strncmp(cmd, "PLST", 4) == 0 || strncmp(cmd, "PREV", 4) == 0 || strncmp(cmd, "RMAL", 4) == 0 || strncmp(cmd, "RWND", 4) == 0 || strncmp(cmd, "SHUT", 4) == 0 || strncmp(cmd, "STEN", 4) == 0 || strncmp(cmd, "STOP", 4) == 0 || strncmp(cmd, "STRT", 4) == 0 || strncmp(cmd, "VERS", 4) == 0) { handle = 1; } if (strncmp(cmd, "VOLM", 4) == 0 || strncmp(cmd, "REPT", 4) == 0 || strncmp(cmd, "SHFL", 4) == 0) { unsigned char bc; // this must be handled in dispatcher thread if (strlen(cmd) == 4) { if (strncmp(cmd, "VOLM", 4) == 0 && strlen(cmd) == 4) { // read only VOLM without value to set ERROR2("[EX]: isBemusedCommand: %s without value", cmd); return 1; // do nothing, but treat it as Bemused command } // It is possible for REPT/SHFL: toggle command handle = 1; } else { bc = ((unsigned char) *(cmd + 4)); if (strncmp(cmd, "VOLM", 4) == 0) { // VOLM 0-255 -> 0%-100% sprintf(paramValue, "%d", ((int)bc * 100)/255); DEBUG2("[EX]: isBemusedCommand: VOLM parameter >%s<", paramValue); } else { // 0/1 sprintf(paramValue, "%d", ((int)bc == 0 ? 0 : 1)); DEBUG2("[EX]: isBemusedCommand: %s parameter >%s<", cmd, paramValue); } handle = 1; shift = 5; } } if (strncmp(cmd, "SLCT", 4) == 0) { unsigned char bc1 = *((unsigned char*) (cmd + 4)); unsigned char bc2 = *((unsigned char*) (cmd + 5)); unsigned int ix = bc1*256+bc2; sprintf(paramValue, "%d",ix); DEBUG2("[EX]: isBemusedCommand: SLCT parameter >%s<", paramValue); handle = 1; shift = 6; } if (strncmp(cmd, "SEEK", 4) == 0) { sprintf(paramValue, "%d", (((unsigned char)*(cmd + 4)) << 24) + (((unsigned char)*(cmd + 5)) << 16) + (((unsigned char)*(cmd + 6)) << 8) + (unsigned char)*(cmd + 7)); handle = 1; shift = 8; } if (strncmp(cmd, "DLST", 4) == 0 || strncmp(cmd, "DOWN", 4) == 0 || strncmp(cmd, "FINF", 4) == 0 || strncmp(cmd, "LADD", 4) == 0 || strncmp(cmd, "PLAY", 4) == 0) { unsigned char bc = *((unsigned char*) (cmd + 4)); sprintf(paramValue, "%d",bc); shift = 5 + bc; handle = 1; } if (handle) { isBemused = 1; strncpy(oneCmd,cmd,4); oneCmd[4] = '\0'; if (paramValue[0] != '\0') { strcat(oneCmd,"(-1,"); strcat(oneCmd,paramValue); strcat(oneCmd,")"); } DEBUG2("[EX]: isBemusedCommand: one command >%s<", oneCmd); handle_key_press(PEER_ANY,oneCmd,1); } else { break; } cmd = cmd + shift; } return isBemused; } // // LIRC dev/event handling // static int isLircCommand(char *cmdIn) { // should got replay in form "0000000000010184 00 TEXT linux-input-layer" // "0000000000010192 00 CHANNELUP linux-input-layer" DEBUG2("[EX]: isLircCommand: >%s<",cmdIn); char *cmd = strdup(cmdIn); char *bufPtr = NULL; if (strncmp(cmdIn, "000000",6) != 0) { free(cmd); return 0; } char *token = strtok_r(cmd," ",&bufPtr); if (token == NULL) { free(cmd); return 0; } token = strtok_r(NULL," ",&bufPtr); if (token == NULL) { free(cmd); return 0; } token = strtok_r(NULL," ",&bufPtr); if (token == NULL) { free(cmd); return 0; } handle_key_press(PEER_ANY,token,1); free(cmd); return 1; } // // inputlirc dev/event handling // static int isInpLircCommand(char *cmdIn) { // should got replay in form "2 0 KEY_1 event6" DEBUG2("[EX]: isInputLircCommand: >%s<",cmdIn); /*char *f = cmdIn; sprintf(tmp, "isLircCommand: DUMP >%c< >%d<",*f,*f); logger(L_DBG,tmp); */ int isLirc = 1; char *data = NULL; char *cmd = strdup(cmdIn); char *bufPtr = NULL; char *token = strtok_r(cmd," ",&bufPtr); if (token == NULL) { free(cmd); return 0; } token = strtok_r(NULL," ",&bufPtr); if (token == NULL) { free(cmd); return 0; } token = strtok_r(NULL," ",&bufPtr); if (token && (strncmp(token, "KEY_",4)==0 || strstr(token, "_KEY_") || // can be CTRL_ALT_KEY_F3 strncmp(token, "BTN_",4)==0)) { data = token; token = strtok_r(NULL," ",&bufPtr); if (token && strstr(token, "event") == NULL) { // /dev/input/eventX or eventX isLirc = 0; } } else { isLirc = 0; } if (isLirc) { DEBUG2("[EX]: isLircCommand: one command >%s<", data); handle_key_press(PEER_ANY,data,1); } free(cmd); return isLirc; } // // Command Fusion iViewer protocol support // static int isIViewerCommand(char *cmdIn) { // should got replay in form // aXX=value\3 // dXX=value\3 // h=0\3 // i=1\3 // lXX=value\3 -- not yet supported // m=[portrait|landscape]\3 // p=value\3 // sXX=value\3 // n=value DEBUG2("[EX]: isIViewerCommand: >%s<",cmdIn); char* cmdTmp = (char*) calloc(strlen(cmdIn) + 1, sizeof(char)); strcpy(cmdTmp,cmdIn); if (!((cmdTmp[0] == 'a' && isdigit(cmdTmp[1])) || (cmdTmp[0] == 'd' && isdigit(cmdTmp[1])) || (cmdTmp[0] == 'l' && isdigit(cmdTmp[1])) || (cmdTmp[0] == 's' && isdigit(cmdTmp[1])) || (cmdTmp[0] == 'm' && cmdTmp[1] == '=') || (cmdTmp[0] == 'p' && cmdTmp[1] == '=') || (cmdTmp[0] == 'n' && cmdTmp[1] == '=') || strcmp(cmdTmp, "h=0") == 0 || strcmp(cmdTmp, "i=1") == 0 )) { free(cmdTmp); return 0; } char *bufPtr = NULL; char *token = strtok_r(cmdTmp,"=",&bufPtr); if (token == NULL) { free(cmdTmp); return 0; } token = strtok_r(NULL,"=",&bufPtr); DEBUG2("[EX]: isIViewerCommand: OK >%d<", (int) strlen(cmdIn) + 6); char* cmd = (char*) calloc(strlen(cmdIn) + 6, sizeof(char)); strcpy(cmd,cmdTmp); strcat(cmd,"("); if (cmdTmp[0] == 'm' || cmdTmp[0] == 'p' || cmdTmp[0] == 's' || cmdTmp[0] == 'n') { strcat(cmd,"-1,"); if (token != NULL) { strcat(cmd,token); // token is string } strcat(cmd,")"); } else { if (token != NULL) { strcat(cmd,token); // token is numeric } strcat(cmd,",)"); } free(cmdTmp); DEBUG2("[EX]: isIViewerCommand: one command >%s<", cmd); handle_key_press(PEER_ANY,cmd,1); logger(L_INF, "[EX]: isIViewerCommand: EXIT"); free(cmd); return 1; } anyremote-6.7.1/src/gen_xml.h0000644000232200023220000000352512664332726016507 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PR_GEN_XML_H_ #define _PR_GEN_XML_H_ #include "lib_wrapper.h" #define XML_SOFTKEY_NUM 4 #define XML_BUTTON_PRESS "xml_button=" #define XML_SHORT_MENU "xml_me=" #define XML_LONG_MENU "xml_mw=" #define XML_LIST_MENU "xml_lm=" #define XML_LIST_MENU2 "xml_ll=" #define XML_LIST_MENU_EXT "xml_lext" #define XML_EFIELD_CANCEL "xml_ec" #define XML_EFIELD_SUBMIT ";?xml_ef=" string_t* renderCtrlXMLForm(string_t* ip, int port); string_t* renderTextXMLForm(string_t* ip, int port); string_t* renderListXMLForm(string_t* ip, int port); string_t* renderWmanXMLForm(string_t* ip, int port); string_t* renderEditXMLForm(string_t* ip, int port); string_t* renderPassXMLForm(string_t* ip, int port); string_t* sendXMLMenu(int form, string_t* ip, int port, int idx); void parseScreenDef (char* buffer); void parseCiscoModel(char* buffer); void renderXMLImage(); int xmlScreenWidth(); int xmlScreenHeight(); boolean_t xmlScreenGrayscale(); void xmlSetLayoutOk(boolean_t ok); #endif anyremote-6.7.1/src/gen_html.c0000644000232200023220000005044312664332726016647 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include "str.h" #include "var.h" #include "utils.h" #include "conf.h" #include "state.h" #include "gen_html.h" #include "mutex.h" extern char tmp[MAXMAXLEN]; // Predefined templates #define HTTP_HEAD1 "\n\n\n" #define HTTP_HEAD2 "\n" #define HTTP_HEAD3 "\n" #define HTTP_HEAD5 "\n\n
" #define HTTP_SCRIPT "\n" #define HTTP_SCRIPT_CALL " onload=\"clearForms()\"" #define HTTP_HEAD_CSS_0 "\n" #define HTTP_TABLE1 "\n\n\n\n" //#define HTTP_TABLE3 " \n"); if (!bottomlineSkin() && col == 3) { stringAppend(page, " \n\n\n"); col = 0; } i++; col++; } mutexUnlock(M_STATE); stringAppend(page, " \n\n
" #define HTTP_TABLE3 " " #define HTTP_MENU1 "\n [" #define HTTP_MENU3 "] " #define HTTP_LIST1 "\n
\n\n
" #define HTTP_TAIL "\n
Reload page
\n\n\n" int _screenSize = 540; // min(width,heigth) void initHtmlGenerator() { char* v1 = dupVarValue("ScreenSize"); if (v1 != NULL) { _screenSize = atoi(v1); if (_screenSize <= 0) { _screenSize = 540; } free(v1); } INFO2("[WS]: $(ScreenSize) = %d", _screenSize); } int htmlScreenWidth() { return _screenSize; } int htmlScreenHeight() { return _screenSize; } string_t* fontHTML(const char* f) { string_t* fh = stringNew(""); if (strncmp(f,"small",5) == 0) { stringAppend(fh, "h6>\n"); } else if (strncmp(f,"medium",6) == 0) { stringAppend(fh, "h4>\n"); } else if (strncmp(f,"large",5) == 0) { stringAppend(fh, "h2>\n"); } return fh; } static int getUseCSS() { return 0; } char abuf[8]; static char* getAccessKey(int index) { if (index == 10) { abuf[0] = '*'; abuf[1] = '\0'; } else if (index == 11) { abuf[0] = '0'; abuf[1] = '\0'; } else if (index == 12) { abuf[0] = '#'; abuf[1] = '\0'; } else { sprintf(abuf,"%d",index); } return abuf; } static void addFormMenu(int formId, string_t* page) { mutexLock(M_STATE); SingleList* list = userMenu(); INFO2("[WS]: addFormMenu %d #%d", formId, listSingleLength(list)); switch (formId) { case CF: case TX: case WM: if (listSingleLength(list) > 0) { string_t* menu = stringNew("
"); //stringAppend(menu, "
"); while(list) { //INFO2("[WS]: addFormMenu add item "); if (list->data && ((string_t*) list->data)->str) { stringAppend(menu, HTTP_MENU1); stringAppend(menu, ((string_t*) list->data)->str); stringAppend(menu, HTTP_MENU2); stringAppend(menu, ((string_t*) list->data)->str); stringAppend(menu, HTTP_MENU3); //INFO2("[WS]: addFormMenu item %s", ((string_t*) list->data)->str); } list = listSingleNext(list); } //stringAppend(menu, "
"); stringAppend(menu, "
"); stringAppend(page, menu->str); stringFree(menu, BOOL_YES); } break; case LI: case EF: { int listSz = listSingleLength(list); if (listSz > 0) { int useCSS = getUseCSS(); if (useCSS) { string_t* menu = stringNew("
\n
    \n"); int i = 0; while(list) { if (i == 0) { stringAppend(menu, "
  • data)->str); stringAppend(menu, "\">
  • \n"); } else { if (i == 1 && listSz > 2) { stringAppend(menu, "
  • \n\t
  • \n\t
      \n\t"); } stringAppend(menu, "
    • data)->str); stringAppend(menu, "\">
    • \n\t"); } i++; list = listSingleNext(list); } if (listSz > 2) { stringAppend(menu, "
    \n"); } stringAppend(menu, "
  • \n
\n
\n"); stringAppend(page, menu->str); stringFree(menu, BOOL_YES); } else { string_t* menu = stringNew(""); int i = 0; while(list) { stringAppend(menu, "data)->str); stringAppend(menu, "\">\n"); i++; list = listSingleNext(list); } stringAppend(menu, "
"); stringAppend(page, menu->str); stringFree(menu, BOOL_YES); } } } break; } mutexUnlock(M_STATE); } string_t* renderFormHead(int form, const char* caption, const char* fg, const char* bg) { string_t* head = stringNew(HTTP_HEAD1); stringAppend(head, caption); stringAppend(head, HTTP_HEAD2); if (form == LI) { stringAppend(head, HTTP_SCRIPT); } stringAppend(head, HTTP_HEAD3); stringAppend(head, HTTP_HEAD4); // Do some CSS styling int useCSS = getUseCSS(); stringAppend(head, HTTP_HEAD_CSS_0); //stringAppend(head, HTTP_HEAD_CSS_1); char buf[16]; sprintf(buf,"%d",_screenSize); stringAppend(head, HTTP_HEAD_CSS_B1); stringAppend(head, fg); stringAppend(head, HTTP_HEAD_CSS_B2); stringAppend(head, bg); if (form == LI) { stringAppend(head, ";\n\twidth:"); stringAppend(head, buf); stringAppend(head, "px"); } stringAppend(head, HTTP_HEAD_CSS_B3); if (form == CF) { stringAppend(head, HTTP_HEAD_CSS_BT1); stringAppend(head, fg); stringAppend(head, HTTP_HEAD_CSS_B2); stringAppend(head, bg); stringAppend(head, ";\n\tborder-radius:10px;\n\t-moz-border-radius:10px;\n\t-webkit-border-radius:10px;\n\tborder:2px solid "); stringAppend(head, fg); stringAppend(head, ";}\n"); stringAppend(head, "p.widthScr {\n\twidth:"); stringAppend(head, buf); stringAppend(head, "px;\n\toverflow:auto;\n}\n"); } else if (form == LI) { stringAppend(head, HTTP_HEAD_CSS_L1); stringAppend(head, fg); stringAppend(head, HTTP_HEAD_CSS_B2); stringAppend(head, bg); stringAppend(head, HTTP_HEAD_CSS_L3); stringAppend(head, buf); stringAppend(head, "px"); stringAppend(head, HTTP_HEAD_CSS_B3); } else if (form == TX) { stringAppend(head, "p.widthScr {\n\twidth:"); stringAppend(head, buf); stringAppend(head, "px;\n\toverflow:auto;\n}\n"); } if (useCSS) { char w2[16]; sprintf(w2,"%d",_screenSize/2); char w2_11[16]; sprintf(w2_11,"%d",_screenSize/2-11); char w2_10[16]; sprintf(w2_10,"%d",_screenSize/2+10); stringAppend(head, HTTP_HEAD_CSS_MENU1); stringAppend(head, buf); stringAppend(head, HTTP_HEAD_CSS_MENU2); stringAppend(head, w2); stringAppend(head, HTTP_HEAD_CSS_MENU3); stringAppend(head, w2); stringAppend(head, HTTP_HEAD_CSS_MENU4); stringAppend(head, w2_11); stringAppend(head, HTTP_HEAD_CSS_MENU5); stringAppend(head, w2); stringAppend(head, HTTP_HEAD_CSS_MENU6); stringAppend(head, w2_10); stringAppend(head, HTTP_HEAD_CSS_MENU7); } stringAppend(head, HTTP_HEAD_CSS_99); stringAppend(head, HTTP_HEAD5); if (form == LI) { stringAppend(head, HTTP_SCRIPT_CALL); } stringAppend(head, HTTP_HEAD6); return head; } string_t* renderCtrlHTMLForm(string_t* no_use, int port) { INFO2("[WS]: renderCtrlHTMLForm %d", bottomlineSkin()); string_t* fontSpec = fontHTML(cfFont()); string_t* page = renderFormHead(CF, cfCaption(), cfFg(), cfBg()); stringAppend(page, "<"); stringAppend(page, fontSpec->str); stringAppend(page, "\n

"); stringAppend(page, cfStatus()); stringAppend(page, "

\nstr); mutexLock(M_STATE); if (bottomlineSkin()) { const char * nc = cfNamedCover(); const char * cv = cfCover(); //printf("COVER %s %s\n", nc ? "Y" : "N", cv ? "Y" : "N"); if (nc) { stringAppend(page, "\n"); } else if (cv) { stringAppend(page, "\n"); } } mutexUnlock(M_STATE); stringAppend(page, HTTP_FORM); stringAppend(page, HTTP_TABLE1); char buf[8]; sprintf(buf,"%d",iconPadding()); stringAppend(page, buf); stringAppend(page, HTTP_TABLE2); int i = 0; int col = 1; int iconMax = (bottomlineSkin() ? ICON_NUM_BTM : ICON_NUM); mutexLock(M_STATE); while (i < iconMax) { const char* icon = cfIcon(i); const char* hint = cfHint(i); INFO2("[WS]: renderControlForm %d %s", i, (icon? icon : "NULL")); if (bottomlineSkin() && (!icon || strcmp(icon,"none") == 0)) { break; // skip if empty icon specified } stringAppend(page, HTTP_TABLE3); if (!icon || strcmp(icon,"none") == 0) { // stringAppend(page, ""); } else { // stringAppend(page, ""); } stringAppend(page, "
"); stringAppend(page, " \n"); stringAppend(page, "<"); stringAppend(page, fontSpec->str); stringAppend(page, "\n

"); stringAppend(page, cfTitle()); stringAppend(page, "

\n"); const char* v = cfVolume(); if (useVolume() && v && strlen(v) > 0) { stringAppend(page, "

"); stringAppend(page, v); stringAppend(page, "%

"); } stringAppend(page, "str); stringFree(fontSpec, BOOL_YES); addFormMenu(CF, page); stringAppend(page, HTTP_TAIL); return page; } string_t* renderTextHTMLForm(string_t* no_use, int port) { INFO2("[WS]: renderTextHTMLForm"); string_t* fontSpec = fontHTML(tfFont()); string_t* page = renderFormHead(TX,tfCaption(),tfFg(),tfBg()); stringAppend(page, "<"); stringAppend(page, fontSpec->str); mutexLock(M_STATE); const char* tx = tfText(); if (tx) { while (1) { const char* tx2 = tx; tx = strstr(tx2, "\n"); stringAppend(page, "\n

"); if (tx) { stringAppendLen(page, tx2, tx - tx2); } else { stringAppend(page, tx2); } stringAppend(page, "

"); if (!tx) break; tx++; } } mutexUnlock(M_STATE); stringAppend(page, "\nstr); stringFree(fontSpec, BOOL_YES); addFormMenu(TX, page); stringAppend(page, HTTP_TAIL); return page; } string_t* renderListHTMLForm(string_t* no_use, int port) { INFO2("[WS]: renderListHTMLForm"); string_t* fontSpec = fontHTML(lfFont()); string_t* page = renderFormHead(LI,lfCaption(),lfFg(),lfBg()); stringAppend(page, "<"); stringAppend(page, fontSpec->str); stringAppend(page, HTTP_FORM); stringAppend(page, HTTP_LIST1); int idx = 0; mutexLock(M_STATE); SingleList* list = lfList(); char num[16]; while (list) { sprintf(num,"%d", idx); stringAppend(page, "\n"); list = listSingleNext(list); idx++; } mutexUnlock(M_STATE); stringAppend(page, "\n
\n"); addFormMenu(LI, page); stringAppend(page, "\nstr); stringFree(fontSpec, BOOL_YES); stringAppend(page, "\n"); stringAppend(page, HTTP_TAIL); return page; } string_t* renderWmanHTMLForm(string_t* no_use, int port) { INFO2("[WS]: renderWmanHTMLForm"); string_t* fontSpec = fontHTML(cfFont()); string_t* page = renderFormHead(WM, cfCaption(), cfFg(), cfBg()); stringAppend(page, "<"); stringAppend(page, fontSpec->str); stringAppend(page, cfTitle()); stringAppend(page, "str); mutexLock(M_STATE); const char* window = wfImage(); if (window != NULL) { stringAppend(page, "\n"); } mutexUnlock(M_STATE); addFormMenu(WM, page); stringAppend(page, HTTP_TAIL); stringFree(fontSpec, BOOL_YES); return page; } string_t* renderEditHTMLForm(string_t* no_use, int port) { INFO2("[WS]: renderEditHTMLForm askpass=%d", efPassword()); string_t* fontSpec = fontHTML(cfFont()); string_t* page = renderFormHead(EF, efCaption(), cfFg(), cfBg()); stringAppend(page, "<"); stringAppend(page, fontSpec->str); stringAppend(page, HTTP_EDIT1); mutexLock(M_STATE); stringAppend(page, efLabel()); if (efPassword()) { stringAppend(page, HTTP_EDIT3); } else { stringAppend(page, HTTP_EDIT2); } stringAppend(page, efText()); mutexUnlock(M_STATE); stringAppend(page, HTTP_EDIT4); addFormMenu(EF, page); stringAppend(page, "\nstr); stringAppend(page, "\n"); stringAppend(page, HTTP_TAIL); stringFree(fontSpec, BOOL_YES); return page; } // // Use this for internal password check // string_t* renderPassHTMLForm(string_t* no_use, int port) { INFO2("[WS]: renderPasswordForm"); string_t* fontSpec = fontHTML(cfFont()); string_t* page = renderFormHead(EF, "Enter Password", cfFg(), cfBg()); stringAppend(page, "<"); stringAppend(page, fontSpec->str); stringAppend(page, HTTP_EDIT1); stringAppend(page, "Enter Password"); stringAppend(page, HTTP_EDIT3); stringAppend(page, HTTP_EDIT4); // add menu manually stringAppend(page, "\n"); stringAppend(page, "\n"); stringAppend(page, "
\n\nstr); stringAppend(page, "\n"); stringAppend(page, HTTP_TAIL); stringFree(fontSpec, BOOL_YES); return page; } anyremote-6.7.1/src/atsend.h0000644000232200023220000000216412664332726016332 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _ATSEND_H_ #define _ATSEND_H_ #include "peer.h" int setupAtConnection(ConnectInfo* p, int fd); int atRead (ConnectInfo* conn, char* buffer, int max); int sendSeq (int fd, const char *string); int sendCMER (int fd, int onOff); int getClip (int fd, char *string); #endif anyremote-6.7.1/src/conf.h0000644000232200023220000000434412664332726016003 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _CONF_H_ #define _CONF_H_ #include "parse.h" #include "list.h" #include "mode.h" char* getAT_CMER (int what); char* getCharset (void); char* getDevice (void); char* getToMainMenu (void); char* getServiceName (void); int autoConnect (void); int getAutoRepeat (void); int getBaudrate (void); int getDebug (void); int getFrontEnd (void); int getModel (void); int getRetrySecs (void); int getWaitTime (void); int getUseScreen (void); int getIViewer (void); void freeCfg (void); void freeCmds (SingleList* commands); void printConf (void); void printKeys (type_key* k); void setModel (char *m); void setInitDone (void); boolean_t getLog (void); boolean_t getBemused (void); boolean_t getIViewer (void); void setLog (const char* value); void setBemused (const char* value); void setIViewer (const char* value); void setWaitTime (const char* value); void setRepeatNow (type_key *k); type_key* repeatNow (); type_key* findItem (const char *key, int *flag, cmdParams *param); type_key* findExact (mode *mode, const char *key); SingleList* getCommand (type_key* item); void setBtAddress (char* a); char* getBtAddress (); void freeBtAddress(void); boolean_t boolValue(const char* value); #endif anyremote-6.7.1/src/utils.c0000644000232200023220000003364113226200116016171 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include "common.h" #include "lib_wrapper.h" #include "utils.h" #include "conf.h" #include "mode.h" #include "var.h" #include "alarm.h" #include "queue.h" #include "mutex.h" #include "timer.h" extern char tmp[MAXMAXLEN]; extern CONF conf; // Some globals char logfile [MAXLEN]; // used by Flush() command to temporary store old configuration static mode *flushModes = NULL; static SingleList *flushAlarms = NULL; static HashTable *flushTimers = NULL; #ifdef USE_ICONV #include iconv_t convertorTo = (iconv_t) -1; iconv_t convertorFrom = (iconv_t) -1; #endif ////////////////////////////////////////////////////////////////////////////////// // // Functions related to logging // ////////////////////////////////////////////////////////////////////////////////// static void initFile(char* what, const char* name) { // store data in first arg int useuser = 0; char *prefix = dupVarValue("TmpDir"); char *h = getenv("HOME"); if (prefix) { strcat(what, prefix); if (h) { if (strncmp(prefix, h, strlen(h)) != 0) { useuser = 1; } } else { useuser = 1; } } else { if (h) { strcat(what, h); strcat(what, "/.anyRemote"); } else { // could it ever happen ? strcat(what, "/tmp"); useuser = 1; } } strcat(what, name); if (useuser == 1) { char *u = getenv("USER"); if (prefix && u) { strcat(what, "."); strcat(what, u); } } free(prefix); return; } void initLog() { if (getLog()) { initFile(logfile, LOGFILE); printf("INFO: log file is %s\n",logfile); // Just truncate file FILE *fplog = fopen(logfile, "w"); if (fplog) { fclose(fplog); } if(getuid()==0 && conf.uid) { // do not open file as superuser #ifdef __cplusplus int dummy = #endif chown(logfile,conf.uid,conf.gid); } mutexNew(M_LOG); printTime(); sprintf(tmp, "anyRemote v%s", PACKAGE_VERSION); logger(L_CFG, tmp); } } void releaseLog() { mutexRemove(M_LOG); } static void logger2(const char *head, const char *str) { //printf("logger ENTER\n");fflush(stdout); FILE *fplog; time_t logtime; //struct timeval tv; //struct timezone tz; if (!getLog() || logfile[0] == '\0' || (head && strcmp(head, "DBG") == 0 && getDebug() == 0)) { return; } mutexLock(M_LOG); fplog = fopen(logfile, "a"); if (fplog!=NULL) { if (head && strcmp(head, "CFG") != 0) { time(&logtime); struct tm* timeinfo = localtime (&logtime ); //gettimeofday(&tv, &tz); char stime[32]; stime[8] = '\0'; sprintf(stime, "%2d:%2d:%2d", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); //sprintf(stime, "%2d:%2d", tv.tv_sec, tv.tv_usec/1000); fprintf(fplog, "[%s] - ",stime); } if(head != NULL && strcmp(head, "CFG") != 0) { fprintf(fplog, "%s - ",head); } fprintf(fplog, "%s\n",str); fclose(fplog); } else { printf("Can not open log file >%s<\n", logfile); logfile[0] = '\0'; // print this error only once } mutexUnlock(M_LOG); //printf("logger EXIT\n");fflush(stdout); } void logger(int head, const char *str) { switch (head) { case L_CFG: logger2("CFG", str); break; case L_INF: logger2("INF", str); break; case L_WARN: logger2("WARNING", str); break; case L_ERR: logger2("ERR", str); break; //case L_DBG: default: logger2("DBG", str); break; } } void printTime() { time_t logtime; time(&logtime); char *timestr = (char *) ctime(&logtime); timestr[strlen(timestr)-1]=0; logger(L_CFG, timestr); } ////////////////////////////////////////////////////////////////////////////////// // // Functions related to encoding conversion // ////////////////////////////////////////////////////////////////////////////////// int needConvert() { int ret = 0; #ifdef USE_ICONV if (convertorTo != (iconv_t) -1) { ret = 1; } #endif return ret; } #ifdef USE_ICONV void closeConvertor(void) { if (convertorTo != (iconv_t) -1) { iconv_close(convertorTo); convertorTo = (iconv_t) -1; } if (convertorFrom != (iconv_t) -1) { iconv_close(convertorFrom); convertorFrom = (iconv_t) -1; } } void encodingHook() { closeConvertor(); char* to = dupVarValue("ToEncoding"); if (!to) return; char* from = dupVarValue("FromEncoding"); if (!from) { free(to); return; } DEBUG2("encodingHook() start conversion from >%s< to >%s<", from, to); convertorTo = iconv_open(to, from); if (convertorTo == (iconv_t) - 1) { ERROR2("Can start conversion %s -> %s, not supported by iconv()", from, to); } convertorFrom = iconv_open(from, to); if (convertorFrom == (iconv_t) - 1) { ERROR2("Can start conversion %s -> %s, not supported by iconv()", to, from); } free(to); free(from); } #endif ////////////////////////////////////////////////////////////////////////////////// // // Functions related to Flush() command // ////////////////////////////////////////////////////////////////////////////////// extern int flushConf; int flushData() { //logger(L_DBG,"flushData"); flushConf = 1; flushModes = getModes(); forgetModes(); flushAlarms = getAlarms(); forgetAlarms(); flushTimers = getTimers(); forgetTimers(); // Now we ready to load new cfg. return EXIT_OK; } void flushOldConf() { freeTimers(flushTimers); flushTimers = NULL; freeModes(flushModes); flushModes = NULL; freeAlarms(flushAlarms); flushAlarms = NULL; } void printHelp() { printf("Usage: anyremote [-f conf.file] [-s peer[,peer ...]] [-log] [-a] \n"); printf(" [-cfgdir directory] [-tmpdir directory]\n"); printf(" [-fe port] [-u username] [-name SDP service name] [-password]\n"); printf(" or: anyremote -h|-v\n\n"); printf(" -h|--help print this help\n"); printf(" -v|--version print version of anyRemote\n"); printf(" -f /path/to/file specify configuration file\n"); printf(" -s peer[,peer ...], where peer possible values are\n"); printf(" tcp: (Server mode - TCP/IP connection)\n"); printf(" bluetooth: (Server mode - bluetooth connection)\n"); printf(" web: (Server mode - Web interface)\n"); printf(" cmxml: (Server mode - XML interface for Cisco IP phones)\n"); printf(" local:/dev/ircommX (Server mode - IR connection)\n"); printf(" rfcomm:XX:XX:XX:XX:XX:XX:CC (AT mode - bluetooth connection,\n"); printf(" where XX:XX:XX:XX:XX:XX is bluetooth device address,\n"); printf(" and CC is channel number - integer from 1 to 32)\n"); printf(" /dev/ttyACM# (AT mode - cable connection)\n"); printf(" /dev/ircomm# (AT mode - IR connection)\n"); printf(" ilirc: (use with inputlircd)\n"); printf(" stdin\n"); printf(" avahi - register SDP service using Avahi\n"); printf(" Default peer value is bluetooth,tcp:5197,web:5080,avahi\n"); printf(" It is possible to specify several peers for Server mode configuration files only\n"); printf(" It is possible to specify only single peer of web: or cmxml: type\n"); printf(" -log print verbose logging information to $HOME/.anyRemote/anyremote.log\n"); printf(" -cfgdir override default location of directory with configuration files\n"); printf(" -tmpdir override default location of directory to store temporary files\n"); printf(" -a reconnect automatically in case of connection failure, used only in AT-mode\n"); printf(" -fe work as backend for GUI frontend. Use specified port to connect to frontend.\n"); printf(" -name if bluetooth or TCP/IP connection is used, allows one to specify SDP service name\n"); printf(" -password ask password on connect\n"); printf(" password should be stored in $HOME/.anyRemote/password file in a plain text\n"); printf(" -u|--user if started from root, allows one to set effective user ID to specified user\n\n"); } int getUidGid(char *username, uid_t *uid, gid_t *gid) { /* Set uid and gid to the preferred user (found in setuid.h). Can either be * numeric or a string, found in /etc/passwd. */ struct passwd *pw; if ((pw = getpwnam(username))) { // Name exists *uid = pw->pw_uid; *gid = pw->pw_gid; return EXIT_OK; } /* something Bad happened, so send back an error */ return EXIT_NOK; } void freeMMessage(void* ptr) { int *mm = (int*) ptr; free(mm); } static void sendToMainThread(int *m) { queuePush(Q_MAIN, (void*) m); } void sendAbort() { int* i = (int*) malloc(sizeof(int)); *i = M_ABORT; sendToMainThread(i); } void sendDisconnect() { int* i = (int*) malloc(sizeof(int)); *i = M_DISCONNECT; sendToMainThread(i); } void stripCommandEnding(char *s) { if (s && strlen(s) >= 2) { s[strlen(s)-2] = '\0'; // strip ); } } ////////////////////////////////////////////////////////////////////////////////// void errnoDebug(const char* tag, int err) { DEBUG2("[DS]: %s error %d (%s)", tag, err, strerror(err)); /*switch (err) { case EPERM: DEBUG2("[DS]: %s error EPERM (Operation not permitted)", tag); break; case ENOENT: DEBUG2("[DS]: %s error ENOENT (No such file or directory)", tag); break; case EINTR: DEBUG2("[DS]: %s error EINTR (Interrupted system call)", tag); break; case EIO: DEBUG2("[DS]: %s error EIO (I/O error"), tag); break; case EBADF: DEBUG2("[DS]: %s error EBADF (Bad file number)", tag); break; case EAGAIN: DEBUG2("[DS]: %s error EAGAIN (Try again)", tag); break; case ENOMEM: DEBUG2("[DS]: %s error ENOMEM (Out of memory)", tag); break; case EBUSY: DEBUG2("[DS]: %s error EBUSY (Device or resource busy)", tag); break; case EFAULT: DEBUG2("[DS]: %s error EFAULT (Bad address)", tag); break; case EISDIR: DEBUG2("[DS]: %s error EISDIR (Is a directory)", tag); break; case EINVAL: DEBUG2("[DS]: %s error EINVAL (Invalid argument)", tag); break; case EFBIG: DEBUG2("[DS]: %s error EFBIG (File too large)", tag); break; case ENOSPC: DEBUG2("[DS]: %s error ENOSPC (No space left on device)", tag); break; case EPIPE: DEBUG2("[DS]: %s error EPIPE (Broken pipe)", tag); break; case EDESTADDRREQ: DEBUG2("[DS]: %s error EDESTADDRREQ (Destination address required)", tag); break; case ECONNRESET: DEBUG2("[DS]: %s error ECONNRESET (Connection reset by peer)", tag); break; default : DEBUG2("[DS]: %s error %d", tag, err); break; }*/ } ////////////////////////////////////////////////////////////////////////////////// // // iconv() support // ////////////////////////////////////////////////////////////////////////////////// #ifdef USE_ICONV char * convCharsetSimple(char *str, int direction) { if (!str) return strdup(""); size_t size = strlen(str); return convCharset(str, size, direction); } char * convCharset(char *str, size_t size, int direction) { DEBUG2("convCharset >%s<", str); char *out; if (!str || size == 0 || (direction == CNV_TO && convertorTo == (iconv_t) - 1) || (direction == CNV_FROM && convertorFrom == (iconv_t) - 1)) { DEBUG2("convCharset skip conversion"); out = strdup(""); } else { char *buf, *holder; size_t insize, outsize, bufsize, r; insize = size; outsize = bufsize = insize * 4; buf = (char *) malloc(bufsize); holder = buf; iconv_t cnv = (direction == CNV_TO ? convertorTo : convertorFrom); r = iconv(cnv, &str, &insize, &buf, &outsize); if (r < 0 || insize != 0) { DEBUG2("convCharset error on conversion %d", (int) outsize); free(holder); return strdup(""); } size = bufsize - outsize; buf -= size; out = (char *) malloc(size + 1); memcpy(out, buf, size); out[size] = '\0'; free(holder); } return out; } #endif ////////////////////////////////////////////////////////////////////////////////// anyremote-6.7.1/src/pr_stdin.c0000644000232200023220000000577512664332726016704 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include "common.h" #include "utils.h" #include "pr_stdin.h" extern char tmp[MAXMAXLEN]; // // Support for stdin non-blocking IO (actually only Input) // // need a non-blocking IO because of another connection to front-end // at the same time // #define NB_ENABLE 1 #define NB_DISABLE 0 static char stdinbuf[1024]; static int cnt = 0; static int kbhit() { struct timeval tv; fd_set fds; tv.tv_sec = 0; tv.tv_usec = 0; FD_ZERO(&fds); FD_SET(STDIN_FILENO, &fds); //STDIN_FILENO is 0 select(STDIN_FILENO+1, &fds, NULL, NULL, &tv); return FD_ISSET(STDIN_FILENO, &fds); } static void nonblock(int state) { struct termios ttystate; //get the terminal state tcgetattr(STDIN_FILENO, &ttystate); if (state==NB_ENABLE) { //turn off canonical mode ttystate.c_lflag &= ~ICANON; //minimum of number input read. ttystate.c_cc[VMIN] = 1; } else if (state==NB_DISABLE) { //turn on canonical mode ttystate.c_lflag |= ICANON; } //set the terminal attributes. tcsetattr(STDIN_FILENO, TCSANOW, &ttystate); } int stdinOpen(ConnectInfo* conn) { //printf("stdinOpen\n"); DEBUG2("[DS]: Server mode. Use standard input"); nonblock(NB_ENABLE); conn->state = PEER_CONNECTED; return EXIT_OK; } void stdinClose(ConnectInfo* conn, int final) { if (final) { //printf("stdinClose\n"); nonblock(NB_DISABLE); } conn->state = PEER_DISCONNECTED; } void stdinReset(ConnectInfo* conn) { stdinClose(conn, 0); } int stdinRead(char* buf, int max) { int ch = '1'; //nonblock(NB_ENABLE); while (kbhit() && cnt < max) { //printf("readStdin kbhit() OK\n"); ch = getchar(); //printf("readStdin got %d %c\n",cnt,ch); if (ch == '\n' || ch == EOF) { break; } stdinbuf[cnt] = ch; cnt++; } if (cnt == max || ch == '\n') { stdinbuf[cnt] = '\0'; strcpy(buf,stdinbuf); int i = cnt; cnt = 0; return i; } buf[0] = '\0'; return (ch == EOF ? EOF : 0); } anyremote-6.7.1/src/var.h0000644000232200023220000000244112664332726015642 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // $(variables) handling // #ifndef _VAR_H_ #define _VAR_H_ 1 typedef struct VV { char *value; int size; } varData; int setVarSimple (const char *name, const char *val); int setVar (const char *name, const char *val, int size); varData* searchVar (const char *id); void freeVars (void); const char* getVarValue (const char *name, int *sz); char* dupVarValue (const char *name); #endif anyremote-6.7.1/src/atsend.c0000644000232200023220000003445012664332726016330 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // AT+CKPD commands handling // #include #include #include #include #include #include #include "parse.h" #include "utils.h" #include "btio.h" #include "conf.h" #include "dispatcher.h" #include "peer.h" #include "pr_rfcomm.h" #include "pr_serial.h" #define PAUSE_TIME 1 extern char tmp[MAXMAXLEN]; static int useQuestionInCLCC = 0; char callerId[MAXLEN]; // // max should be >= 100 // int writeAtCommand(int fd, const char* command, char* answer, int max, int timeout, char* expect) { int count=0; int readcount; char tmp2[100]; int timeoutcounter=0; int found=0; if (fd < 0) { return 0; } logger(L_DBG,command); DEBUG2("writeAtCommand command >%s<", command); if (expect != NULL) { DEBUG2("writeAtCommand skip till >%s<", expect); } // send command if (command && command[0]) { write(fd,command,strlen(command)); tcdrain(fd); } if (max == 0) { return 0; } answer[0]=0; do { // try to read some bytes. usleep(100000); //write(1,".",1); timeoutcounter++; // read data readcount=read(fd,tmp2,sizeof(tmp2)-1); if (readcount<0) { readcount=0; } tmp2[readcount]=0; // add read bytes to the output buffer if (readcount) { //DEBUG2("writeAtCommand got reply >%s<", tmp2); strcat(answer,tmp2); count+=readcount; // if we have more time to read, check if we got already the expected string if ((timeoutcounter%s<\n", bytes); // initial timeout was 5 writeAtCommand(fd, bytes, answer, size, 40, expect); } int sendCMER(int fd, int onOff) { char answer[100]; char cmd[64]; char * cmer = getAT_CMER(onOff); if (cmer == NULL) { return EXIT_NOK; } strcpy(cmd,cmer); free(cmer); strcat(cmd,"\r"); //sendSyncCommand(cmd, answer, sizeof(answer), NULL); writeAtCommand (fd, cmd, answer, sizeof(answer), 10, NULL); if(!IS_OK(answer)) { DEBUG2("ERROR: AT_CMER SET >%s< -> %s\n", cmd, answer); return EXIT_NOK; } return EXIT_OK; } // Send AT+CKPD command static int sendCKPD(int fd, char *key) { char answer[1024]; char ckpd[MAXCKPDLEN]; if (key == NULL || key[0] == '\0') { logger(L_DBG,"Empty symbol in sendCKPD()"); return EXIT_NOK; } DEBUG2("sendCKPD >%s<", key); sprintf(ckpd,"%s\"%s\"\r", DEF_AT_CKPD, key); int model = getModel(); if (model == MODEL_SE || model == MODEL_SIEMENS) { // SE-K700, Siemens-S55 // If we send AT+CKPD=X // SE phone will replay // OK // +CKEV: X,1 // +CKEV: X,0 // And we need to filter out that CKEVs char expect[16]; strcpy(expect, DEF_CKEV); strcat(expect, " "); if (model == MODEL_SIEMENS) { strcat(expect, "\""); } strcat(expect, key); if (model == MODEL_SIEMENS) { strcat(expect, "\""); } strcat(expect, ",0"); // Wait button up event sendSyncCommand(fd, ckpd, answer, sizeof(answer), expect); //DEBUG2("Expect >%s<", expect); //DEBUG2("Got all >%s<", answer); // Filter out button up char *ptr = strstr(answer, expect); if(ptr == NULL) { logger(L_DBG,"cant find button up event"); } else { int z; int l = strlen(expect); for (z=0; z%s<", answer); } else { sendSyncCommand(fd, ckpd, answer, sizeof(answer), NULL); } parseCommand(PEER_ANY, answer); return EXIT_OK; } // // Should be used in AT mode only // int sendSeq(int fd, const char *seq) { if (getUseScreen() == 0 || seq == NULL) { return EXIT_OK; } DEBUG2("sendSeq() >%s<", seq); char* copy = strdup(seq); char *bufPtr = NULL; char *ckpd = strtok_r(copy," ",&bufPtr); while (ckpd != NULL) { //DEBUG2("NEXT sendSeq()->sendCKPD()>%s<", ckpd); if (strcmp(ckpd, PAUSE_STR)==0) { sleep(PAUSE_TIME); // Just wait a bit } else { sendCKPD(fd, ckpd); } ckpd = strtok_r(NULL," ",&bufPtr); } free(copy); return EXIT_OK; } static void parse_CLCC(char *clcc, char* dest) { // There are could be more than one call at time ... but here we will get then one-by-one // +CLCC: 1,,4,0,0,"",129, char *start ,*ptr; int commaCount = 0; ptr = clcc; while(ptr && commaCount < 5) { if (*ptr == ',') { commaCount++; } ptr++; } if (ptr == NULL) { // Call was finished strcpy(dest, "FINISHED"); return; } if (ptr && *ptr == '"') { ptr++; } start = ptr; while(ptr && *ptr != '"' && *ptr != ',') { ptr++; } if (ptr) { *ptr = '\0'; } if(start) { DEBUG2("parse_CLCC >%s<", start); } else { DEBUG2("parse_CLCC >NULL callerID<"); strcpy(dest, "NO CALLER ID"); return; } strcpy(dest, start); return; } int getClip(int fd, char* CallerID) { char clcc[MTEXTLEN]; char answer[1024]; char *ptr; int tryAnyway = 0; answer[0] = '\0'; logger(L_DBG, "getClip()"); // Some phones uses AT+CLCC?, some just AT+CLCC (Sagem, Siemens-S55, SE-K750) if (useQuestionInCLCC == 0) { //logger(L_DBG, "getClip() send AT+CLCC"); strcpy(clcc,DEF_AT_CLCC); strcat(clcc,"\r"); sendSyncCommand(fd, clcc, answer, sizeof(answer), NULL); if ((ptr = strstr(answer,DEF_CLCC)) != NULL) { parse_CLCC(ptr,CallerID); return EXIT_EXACT; } else if (strstr(answer,"OK") != NULL) { return EXIT_OK; } else if (strstr(answer,"ERR") != NULL) { logger(L_WARN, "Got ERROR on AT+CLCC. Will try AT+CLCC?"); useQuestionInCLCC = 1; // Ask phone again; but will never ask AT+CLCC more } else { tryAnyway = 1; // Ask phone again; to be sure } } if (useQuestionInCLCC == 1 || tryAnyway == 1) { tryAnyway = 0; //logger(L_DBG, "getClip() send AT+CLCC?"); strcpy(clcc,DEF_AT_CLCC); strcat(clcc,"?"); strcat(clcc,"\r"); sendSyncCommand(fd, clcc, answer, sizeof(answer), NULL); if ((ptr = strstr(answer,DEF_CLCC)) != NULL) { parse_CLCC(ptr,CallerID); return EXIT_EXACT; } else if (strstr(answer,"OK") != NULL) { return EXIT_OK; } else if (strstr(answer,"ERR") != NULL) { logger(L_ERR, "Got ERROR on AT+CLCC?"); return EXIT_NOK; } } DEBUG2("sendClip() unappropriate answer: >%s<", answer); return EXIT_NOK; } // CLIENT_RFCOMM / CLIENT_AT int setupAtConnection(ConnectInfo* peer, int fd) { char answer[1024]; char cmd[32]; answer[0] = '\0'; sendSyncCommand(fd, "ATZ\r", answer, sizeof(answer), NULL); //sendSyncCommand("AT\r", answer, sizeof(answer), NULL); // Do not care - it can fail after reconnect //if(!IS_OK(answer)) { // ERROR2("AT -> %s\n", answer) // return -1; //} sendSyncCommand(fd, "ATE0\r", answer, sizeof(answer), NULL); if(!IS_OK(answer)) { ERROR2("ATE0 -> %s\n", answer); } char* ptr = getCharset(); if (ptr) { sprintf(cmd,"%s\"%s\"\r", DEF_AT_CSCS, ptr); sendSyncCommand(fd, cmd, answer, sizeof(answer), NULL); if(!IS_OK(answer)) { ERROR2("Can't set charset to %s\n", ptr); } free(ptr); } // Determine model sprintf(cmd,"%s\r", DEF_AT_CGMI); sendSyncCommand(fd, cmd, answer, sizeof(answer), NULL); //Set model in conf. data setModel(answer); if (getModel() == MODEL_MOTOROLA) { // Motorola RIZR Z3 needs to set MODE=2 to allow AT+CLIP command // do not care about responce sendSyncCommand(fd, "AT+MODE=2\r", answer, sizeof(answer), NULL); } sprintf(cmd,"%s\r", DEF_AT_CLIP); sendSyncCommand(fd, cmd, answer, sizeof(answer), NULL); if(!IS_OK(answer)) { ERROR2("Can't set CLIP ON\n"); } int ret = sendCMER(fd, CMER_ON); if(ret != EXIT_OK) { ERROR2("fails in set event reporting on"); return -1; } // Siemens S55 needs additional AT+CMEC=2 to make AT+CKPD works // not sure about other Siemens phones if (getModel() == MODEL_SIEMENS) { sprintf(cmd,"%s\r", DEF_AT_CMEC); sendSyncCommand(fd, cmd, answer, sizeof(answer), NULL); if(!IS_OK(answer)) { ERROR2("ON AT+CMEC\n"); } } // Will set global callerId [MAXLEN]; ret = getClip(fd, callerId); if(ret == EXIT_NOK) { // Got ERROR on AT+CLCC; probably phone does not supports this command printf("ERROR: fails in getClip\n"); if (peer->mode == CLIENT_RFCOMM) { _RfcommConnection* cn = (_RfcommConnection*) peer->connectionData; if (cn) { cn->useCallId = BOOL_NO; } } else if (peer->mode == CLIENT_AT) { _SerialConnection* cn = (_SerialConnection*) peer->connectionData; if (cn) { cn->useCallId = BOOL_NO; } } } return 1; } // // rfcomm peer reader // in case of incoming call try to get caller ID // int atRead(ConnectInfo* peer, char* buffer, int max) { if (! (peer->mode == CLIENT_RFCOMM || peer->mode == CLIENT_AT)) { ERROR2("[DS]: atRead() peer type mismatch"); return 0; } if (!peer->connectionData) return EXIT_NOK; _RfcommConnection* cnr = NULL; _SerialConnection* cns = NULL; int fd = -1; boolean_t useCallID = BOOL_NO; boolean_t hasCall = BOOL_NO; if (peer->mode == CLIENT_RFCOMM) { cnr = (_RfcommConnection*) peer->connectionData; fd = cnr->fileDescriptor; useCallID = cnr->useCallId; hasCall = cnr->hasActiveCall; } else if (peer->mode == CLIENT_AT) { cns = (_SerialConnection*) peer->connectionData; fd = cns->fileDescriptor; useCallID = cns->useCallId; hasCall = cns->hasActiveCall; } if (fd < 0) { ERROR2("[DS]: atRead() not connected"); return 0; } int nbytes = read(fd, buffer, max); if (nbytes < 0) { // Read error ERROR2("[DS]: atRead() error %d",errno); errnoDebug("[DS]: atRead() read ",errno); // testing debug } else if (nbytes == 0) { DEBUG2("[DS]: atRead() EOF"); } else { buffer[nbytes] = '\0'; if (strstr(buffer, DEF_RING) != NULL && !hasCall) { // Incoming call logger(L_INF,"[DS]: Incoming call"); // This event sent periodically until used answered a call if (cnr) { cnr->hasActiveCall = BOOL_YES; } else if (cns) { cns->hasActiveCall = BOOL_YES; } if (useCallID) { char callerId[MAXLEN]; int ret = getClip(fd, callerId); if (ret == EXIT_EXACT) { // Active call exists, got ID strcat(buffer, "Msg:InCall(,"); strcat(buffer, callerId); strcat(buffer, ")\r"); nbytes = strlen(buffer); } } else { strcat(buffer, "Msg:InCall(,)\r"); nbytes = strlen(buffer); } } } //DEBUG2("[DS]: atRead() got >%s< %d", buffer, nbytes); return nbytes; } anyremote-6.7.1/src/str.c0000644000232200023220000000722412664332726015661 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // On OpenWRT size of GLIB package is more than 700kb, what is nearly unacceptable // for embedded systems. For such systems use custom made wrappers. // #include #include #include "str.h" #ifndef USE_GLIB //////////////////////////////////////////////////////////////////////////////// // // Strings // //////////////////////////////////////////////////////////////////////////////// #define SZ_MAXSIZE ((size_t) -1) static inline size_t nearestPower(size_t base, size_t num) { if (num > SZ_MAXSIZE / 2) { return SZ_MAXSIZE; } else { size_t n = base; while (n < num) { n <<= 1; } return n; } } static void stringMaybeExpand (string_t* string, size_t len) { if (string->len + len >= string->allocated_len) { string->allocated_len = nearestPower(1, string->len + len + 1); string->str = realloc(string->str, string->allocated_len); } } string_t* stringAppendLen(string_t *string, const char *val, size_t len) { stringMaybeExpand(string, len); strncpy(string->str + string->len, val, len); string->len += len; string->str[string->len] = '\0'; return string; } string_t* stringSizedNew(size_t dfl_size) { string_t *string = malloc(sizeof(string_t)); string->allocated_len = 0; string->len = 0; string->str = NULL; stringMaybeExpand(string, MAX_VALUE(dfl_size, 2)); string->str[0] = '\0'; return string; } string_t* stringNew (const char *init) { string_t *string; if (init == NULL || *init == '\0') { string = stringSizedNew(2); } else { size_t len = strlen(init); string = stringSizedNew(len + 2); stringAppendLen(string, init, len); } return string; } string_t* stringTruncate(string_t *string, size_t len) { string->len = MIN_VALUE(len, string->len); string->str[string->len] = '\0'; return string; } string_t* stringAppend(string_t *string, const char *val) { if (val == NULL || *val == '\0') { return string; } return stringAppendLen(string, val, strlen(val)); } string_t* stringAssign(string_t *string, const char *rval) { if (string->str != rval) { // Assigning from substring should be ok since stringTruncate does not realloc stringTruncate(string, 0); stringAppend(string, rval); } return string; } char* stringFree(string_t *string, boolean_t free_segment) { char* tmp = NULL; if (free_segment && string) { free(string->str); } else { tmp = string->str; } free(string); return tmp; } boolean_t stringHasPrefix(const char* str, const char* prefix) { int pl = strlen(prefix); if (strlen(str) < pl) return BOOL_NO; return (strncmp(str, prefix, pl) == 0 ? BOOL_YES : BOOL_NO); } #endif anyremote-6.7.1/src/mutex.h0000644000232200023220000000217112664332726016214 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // Mutex related wrappers // #ifndef _MUTEX_H_ #define _MUTEX_H_ 1 enum MutexID { M_LOG = 0, M_WEB, M_QUEUE, M_STATE, M_MAX }; int mutexNew (int id); void mutexLock (int id); void mutexUnlock(int id); void mutexRemove(int id); int mutexExists(int id); #endif anyremote-6.7.1/src/hash.c0000644000232200023220000001306412664332726015773 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include "common.h" #include "hash.h" #include "list.h" // // Hash related wrappers // #ifdef USE_GLIB #include HashTable* hashNew(DestroyCallback valueDestroyFunc) { return g_hash_table_new_full(g_str_hash, g_str_equal, free, valueDestroyFunc); } void* hashFind(HashTable* hash, const char *key) { if (hash && key) { return g_hash_table_lookup(hash, key); } return NULL; } void hashReplace(HashTable* hash, const char* key, void *value) { if (hash && key) { g_hash_table_replace(hash, strdup(key), value); } } int hashRemove(HashTable* hash, const char* key) { if (hash && key) { if (g_hash_table_remove(hash, key)) { return RC_OK; } } return RC_NOK; } void hashDestroy(HashTable* hash) { if (hash) { g_hash_table_destroy(hash); } } void hashForeach(HashTable* hash, HashForeachFunc func, void *data) { if (hash) { g_hash_table_foreach(hash, func, data); } } #else static unsigned int str2hash(const char *str) { unsigned int hash = 0; for(; *str; str++) { hash = 31*hash + *str; } return hash; } static void* get(struct StrHashTable *table, const char *key) { unsigned int bucket = str2hash(key)%NR_BUCKETS; struct StrHashNode *node = table->buckets[bucket]; while (node) { if (strcmp(key,node->key) == 0) { return node->value; } node = node->next; } return NULL; } static int insert(struct StrHashTable *table, char *key, void *value) { unsigned int bucket = str2hash(key)%NR_BUCKETS; //printf("insert %s to %d\n", key, bucket); struct StrHashNode **tmp = &(table->buckets[bucket]); while (*tmp) { if (strcmp(key,(*tmp)->key) == 0) { break; } tmp = &((*tmp)->next); } struct StrHashNode *node = NULL; if (*tmp) { //printf("insert %s remove old\n", key); free((*tmp)->key); if(table->free_value != NULL) { table->free_value((*tmp)->value); } node = *tmp; } else { node = malloc(sizeof(struct StrHashNode)); if(node == NULL) { return -1; } node->next = NULL; *tmp = node; } node->key = key; node->value = value; return 0; } static int removeNode(struct StrHashTable *table, const char *key) { unsigned int bucket = str2hash(key)%NR_BUCKETS; struct StrHashNode *tmp; struct StrHashNode *tmp_prev; tmp_prev = NULL; tmp = table->buckets[bucket]; while (tmp) { if (strcmp(key,tmp->key) == 0) { break; } tmp_prev = tmp; tmp = tmp->next; } if(tmp) { free(tmp->key); if(table->free_value != NULL) { table->free_value(tmp->value); } if (tmp_prev) { tmp_prev->next = tmp->next; } else { // remove first table->buckets[bucket] = tmp->next; } free(tmp); return RC_OK; } return RC_NOK; } static void destroyData(struct StrHashTable *table) { int i = 0; for (;ibuckets[i]; while (tmp) { free(tmp->key); if(table->free_value != NULL) { table->free_value(tmp->value); } struct StrHashNode *t = tmp; tmp = tmp->next; free(t); } } } static void foreach(struct StrHashTable *table, HashForeachFunc func, void *data) { int i = 0; for (;ibuckets[i]; if (!tmp) continue; //printf("foreach %d\n", i); while (tmp) { if (tmp->key && tmp->value) { func(tmp->key, tmp->value, data); //} else { // printf("foreach %d corrupted hash data\n", i); } tmp = tmp->next; } } } HashTable * hashNew(DestroyCallback valueDestroyFunc) { HashTable * hash = malloc(sizeof(struct StrHashTable)); int i = 0; for (;ibuckets[i] = NULL; } hash->free_value = valueDestroyFunc; return hash; } void* hashFind(HashTable* hash, const char *key) { if (hash && key) { return get(hash, key); } return NULL; } void hashReplace(HashTable* hash, const char* key, void *value) { if (hash && key) { insert(hash, strdup(key), value); } } int hashRemove(HashTable* hash, const char* key) { if (hash && key) { return removeNode(hash, key); } return RC_NOK; } void hashDestroy(HashTable* hash) { if (hash) { destroyData(hash); free(hash); hash = NULL; } } void hashForeach(HashTable* hash, HashForeachFunc func, void *data) { if (hash) { foreach(hash, func, data); } } #endif anyremote-6.7.1/src/pr_stdin.h0000644000232200023220000000207512664332726016677 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _STDIN_H_ #define _STDIN_H_ #include "dispatcher.h" #include "peer.h" int stdinOpen (ConnectInfo* c); void stdinClose(ConnectInfo* c, int final); void stdinReset(ConnectInfo* conn); int stdinRead (char* buf, int max); #endif anyremote-6.7.1/src/dispatcher.h0000644000232200023220000000313412664332726017200 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _DISPATCHER_H_ #define _DISPATCHER_H_ #include "str.h" enum DispMsgType { DM_SET = 0, DM_GET, DM_SETFILE, DM_SENDB, DM_SENDS, DM_CKPD, //DM_CMER, DM_EVENT, DM_FRONTEND, DM_TYPE_MAX }; typedef struct { int peer; int type; int subtype; int size; void* value; char* file; char* scaled; // scaled file name } dMessage; pointer_t dispatcherRoutine (pointer_t thread); void sendToDispatcher (dMessage *buf); void freeDMessage (void* ptr); dMessage* allocDMessage(); void parseCommand (int peerId, char* cmd); void closePort (int final); char* readFromFile (const char *cmdTag, const char* file, int* size); dMessage* getDFinalizer (void); #endif anyremote-6.7.1/src/peer.h0000644000232200023220000000537712664332726016020 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // Message queue related wrappers // #ifndef _PEER_H_ #define _PEER_H_ 1 #include "list.h" #include "dispatcher.h" #include "parse.h" enum PeerState { PEER_DISCONNECTED = 0, PEER_WAIT_LISTEN, PEER_WAIT_ACCEPT, PEER_CONNECTED }; typedef struct { char* lastValues [ID_SET_MAX]; int lastValuesSize[ID_SET_MAX]; } DCache; typedef struct { int id; int mode; int state; int port; void* connectionData; // specific to connection DCache* cache; string_t* portStr; } ConnectInfo; int definePeers (void); int openPeers (void); // EXIT_OK/EXIT_NOK int setupPeersPre (void); // -1/1 int disconnectPeers(void); // -1/1 void closePeers (int final); void freePeers (void); int processPeers (void); // EOF/0/N>0 int readPeer (int fd, char* buffer, int max); int writePeers (dMessage* dm); int writeFilePeers (dMessage* dm); int writeBytesPeers(char* command); int writeCKPD(dMessage* dm); //int writeCMER(dMessage* dm); void writeToFrontEnd(const char *buf); //int isAtMode (void); // EXIT_OK/EXIT_NOK int isAtModeDuplex(void); // EXIT_OK/EXIT_NOK int isServerMode (void); // EXIT_OK/EXIT_NOK //int isServerModeNoWeb(void); // EXIT_OK/EXIT_NOK //int isWebServer (void); // EXIT_OK/EXIT_NOK int connected (void); // EXIT_OK/EXIT_NOK int haveConnectionless(void); // 0/1 int needExit (void); // EXIT_OK/EXIT_NOK int needFinalizer (void); // EXIT_OK/EXIT_NOK int needAtMainMenuReturn(int peer); // EXIT_OK/EXIT_NOK void sendIViewerHeartbeat(void); int getIViewerTcpPort(void); // /-1 void connectNotify(int peer); boolean_t checkActiveCall(); boolean_t hasActiveCall (); void getClientSize(int peer, int fd); int isDataOld(ConnectInfo* peer, int subtype, const char* data, int size); #endif anyremote-6.7.1/src/cmds.c0000644000232200023220000012743413126472435016001 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // //#define _GNU_SOURCE #include #include #include #include #include #include "ar_dbus.h" #include "cmds.h" #include "common.h" #include "conf.h" #include "dispatcher.h" #include "peer.h" #include "executor.h" #include "parse.h" #include "utils.h" #include "alarm.h" #include "timer.h" #include "var.h" #include "mode.h" #include "xemulate.h" #include "pr_btspp.h" #include "sys_util.h" extern char callerId[MAXLEN]; extern type_key* repeatCmdPtr; extern char tmp[MAXMAXLEN]; extern SingleList* _peers; static int processCommands(SingleList* commands, cmdParams* p); char tmptext[MAXCMDLEN]; int remoteOn = 1; static string_t* substParams(const char* in, cmdParams *params) { if (in == NULL || *in == '\0') { // Empty command. Skip it. //logger(L_ERR,"[EX]: substParams(): null input"); return NULL; } //DEBUG2("[EX]: substParams >%s<", in); char *command = strdup(in); char *ptr = command; char *papameterized = NULL; int pc = strlen(PARAM_CALLID); int pm = strlen(PARAM_MODE); int pp = strlen(PARAM_PARAM); int pi = strlen(PARAM_INDEX); int pb = strlen(PARAM_BTADDR); string_t* cmdBuffer = stringNew(""); while(ptr != NULL) { //DEBUG2("[EX]: current cmd >%s<", ptr); papameterized = strstr(ptr, PARAM_START); // $( //if (papameterized != NULL) { // DEBUG2("[EX]: papameterized >%s<", papameterized); //} if (papameterized == NULL) { // Just copy //logger(L_DBG, "[EX]: no more parameters"); stringAppend(cmdBuffer, ptr); //DEBUG2("[EX]: cur cmd >%s<", cmdBuffer->str); break; } else if(strncmp(papameterized+2,PARAM_CALLID,pc) == 0) { *papameterized = '\0'; stringAppend(cmdBuffer, ptr); // First part stringAppend(cmdBuffer, callerId); // Add params ptr = papameterized + pc + 2; } else if (strncmp(papameterized + 2,PARAM_MODE,pm) == 0) { *papameterized = '\0'; const char* m = getModeName(); stringAppend(cmdBuffer, ptr); // First part stringAppend(cmdBuffer, m); // Add params ptr = papameterized + pm + 2; } else if (strncmp(papameterized + 2,PARAM_PARAM,pp) == 0) { // This is a trick to make Bemused commands like VOLM works // also it is used in Java Client list handling *papameterized = '\0'; stringAppend(cmdBuffer, ptr); // First part if (params == NULL) { // value can be empty logger(L_WARN, "[EX]: No parameters supplied!"); // this is useless //stringAppend(cmdBuffer, PARAM_START); //stringAppend(cmdBuffer, PARAM_PARAM); } else { stringAppend(cmdBuffer, params->value); // Add params } ptr = papameterized + pp + 2; } else if (strncmp(papameterized + 2,PARAM_INDEX,pi) == 0) { // Used in Java Client list handling *papameterized = '\0'; stringAppend(cmdBuffer, ptr); // First part if (params == NULL) { logger(L_WARN, "[EX]: No parameters supplied !"); // this is useless //stringAppend(cmdBuffer, PARAM_START); //stringAppend(cmdBuffer, PARAM_INDEX); } else { stringAppend(cmdBuffer, params->index); // Add params } ptr = papameterized + pi + 2; } else if (strncmp(papameterized + 2,PARAM_BTADDR,pb) == 0) { *papameterized = '\0'; // First part stringAppend(cmdBuffer, ptr); // Add XX:XX:XX:XX:XX:XX char *d; if ((d = getBtAddress()) != NULL) { stringAppend(cmdBuffer, d); } ptr = papameterized + pb + 2; } else { int pLen = (papameterized == NULL ? 0 : 1); if (pLen) { char * br = index(papameterized+2,')'); pLen = (br == NULL ? 0 : br - papameterized - 2); } char* varName = malloc(pLen + 1); strncpy(varName, papameterized + 2, pLen); varName[pLen] = '\0'; *papameterized = '\0'; stringAppend(cmdBuffer, ptr); // First part varData* var = searchVar(varName); if (var != NULL) { //logger(L_DBG, "[EX]: substitute: searchVar() OK"); if (var->size > 0) { stringAppendLen(cmdBuffer, var->value, var->size); // Add params //} else { // logger(L_DBG, "[EX]: substitute: empty var"); } //DEBUG2("[EX]: cmd var value >%s<", cmdBuffer->str); // seems it is more confusing than helpful, but some sh scripting uses $() } else { // Just copy //sprintf(tmp, "[EX]: Just copy >%s<", ptr); //logger(L_DBG,tmp); stringAppend(cmdBuffer, "$("); stringAppend(cmdBuffer, varName); stringAppend(cmdBuffer, ")"); } ptr = papameterized + pLen + 3; free(varName); } } //DEBUG2("[EX]: substParams: final cmd >%s<", cmdBuffer->str); free(command); return cmdBuffer; } static char* executeSimpleCommand(const char* exec, size_t* sz) { if (exec == NULL || strlen(exec) == 0) { logger(L_DBG, "[EX]: executeSimpleCommand null input"); return NULL; } if (remoteOn != 1) { logger(L_DBG, "[EX]: executeSimpleCommand remote if OFF"); return NULL; } DEBUG2("[EX]: executeSimpleCommand >%s<", exec); char* gstr = executeCommandPipe(exec, sz); //It is OK if gstr == NULL because command can have no output DEBUG2("[EX]: executeSimpleCommand RET bytes >%zd<", (*sz)); return gstr; } static int processSendCmd(const char* sDescr) { int ret = EXIT_OK; char all[MAXMAXLEN]; memset(all,0,MAXMAXLEN); strncpy(all, sDescr, MAXMAXLEN-1); char *tag = strtok(all, ","); if (tag == NULL) { logger(L_DBG, "[EX]: processSendCmd(): incorrect input (1)"); return EXIT_NOK; } if (strlen(sDescr) <= strlen(tag) + 1) { // Set(tag,) or Set(tag) without any value logger(L_DBG, "[EX]: processSendCmd(): incorrect input (2)"); return EXIT_NOK; } char *ptr = tag + strlen(tag) - 1; // strip spaces from tail while ( *ptr == '\0' || *ptr == '\n' || *ptr == '\t' || *ptr == ' ') { *ptr = '\0'; ptr--; } ptr = tag + strlen(tag) + 1; // strip spaces from head of value while ( *ptr != '\0' && (*ptr == '\t' || *ptr == ' ')) { ptr++; } DEBUG2("[EX]: processSendCmd() is >%s< >%s<",tag,ptr); dMessage* dm = allocDMessage(); dm->size = 1; dm->subtype = ID_SET_MAX; if (strcmp(tag, SEND_STRING) == 0) { dm->type = DM_SENDS; dm->size = strlen(ptr); } else if (strcmp(tag, SEND_BYTES) == 0) { dm->type = DM_SENDB; } else { logger(L_DBG, "[EX]: processSendCmd(): incorrect input (3)"); free(dm); return EXIT_NOK; } dm->value = (void*) strdup(ptr); sendToDispatcher(dm); return ret; } static void sendData(int type, int flag, char *data, int count) { DEBUG2("[EX]: sendData() >%d<",count); dMessage* dm = allocDMessage(); dm->size = count; dm->subtype = ID_SET_MAX; if (type == ID_SEND && flag) { logger(L_DBG,"[EX]: sendData() send as bytes"); dm->type = DM_SENDB; } else if (count > 0) { // just check count to be sure we goes here from right place dm->type = DM_SENDS; } dm->value = (data ? (void*) strdup(data) : NULL); sendToDispatcher(dm); } int execDynamically(char *command) { logger(L_DBG,"[EX]: execDynamically"); SingleList* tmpCmd = NULL; storeCmds(&tmpCmd, command); // parse command on-the-fly int ret = processCommands(tmpCmd,NULL); freeCmds(tmpCmd); return ret; } static int loadCmds(int subtype, const char *file, const char* exec, cmdParams* params) { INFO2("[EX]: Command: Load %s", (file ? file : "NULL")); if (file == NULL) { return EXIT_NOK; } FILE *fp=fopen(file,"r"); if (fp == NULL) { return EXIT_NOK; } struct stat file_status; stat(file, &file_status); if (file_status.st_size <= 0) { logger(L_DBG,"[EX]: loadCmds - file is empty"); fclose(fp); return EXIT_NOK; } char *command = (char*) malloc(file_status.st_size+1); *command = '\0'; int ret = EXIT_OK; while (fgets(command, file_status.st_size+1, fp) != NULL) { DEBUG2("[EX]: Retrieved line %s of length %d ", command, (int) strlen(command)); ret = execDynamically(command); } free(command); fclose(fp); return ret; } int handleHook(int hook) { if (hook < 0 || hook >= ID_EVT_MAX) { return EXIT_NOK; } const char* _hookNames[] = { "hook_init", // ID_EVT_INIT, "hook_exit", // ID_EVT_EXIT, "hook_connect", // ID_EVT_CONNECT, "hook_disconnect" // ID_EVT_DISCONNECT }; DEBUG2("handleHook() >%d<",hook); char hookFile[MAXLEN]; char *t = getenv("HOME"); if (t) { strcpy(hookFile, t); } else { strcpy(hookFile, "."); } strcat(hookFile, "/.anyRemote/"); strcat(hookFile, _hookNames[hook]); return loadCmds(-1, hookFile, NULL, NULL); } /*static void uploadPixOld(char *cmdLine) { DEBUG2("uploadPix >%s<", cmdLine); int prefixSz = 0; // image,icon,_name_,_file_|image,window,_file_|cover, _file_ if (strstr(cmdLine,UPLOAD_PIX) != NULL) { prefixSz = strlen(UPLOAD_PIX) + 1; } else if (strstr(cmdLine,UPLOAD_COVER_DATA) != NULL) { prefixSz = strlen(UPLOAD_COVER_DATA) + 1; } else { int nCh = strlen(UPLOAD_ICON) + 1; prefixSz = nCh + strstr(cmdLine+nCh,",") - (cmdLine+nCh) + 1; } else { int nCh = strlen(UPLOAD_COVER) + 1; prefixSz = nCh + strstr(cmdLine+nCh,",") - (cmdLine+nCh) + 1; } char* fname = cmdLine + prefixSz; char* p = fname; while (*p != '\0') { // remove trailing \n if exists if (*p == '\n') { *p = '\0'; break; } p++; } //sprintf(tmp, "uploadPix file >%s<", fname); //logger(L_INF,tmp); FILE *fp; struct stat buf; long fLen = 0; if(stat(fname, &buf) == -1) { logger(L_ERR,"can't get file size!"); if (strstr(cmdLine,UPLOAD_COVER_DATA) == NULL) { // in case UPLOAD_COVER_DATA we will send empty image to clear previous one return; } else { logger(L_DBG,"uploadPix(): send empty cover"); dMessage* dm = allocDMessage(); dm->type = DM_SET; dm->subtype = ID_SET_MAX; dm->size = 11; dm->value = (void*) strdup("Set(cover);"); sendToDispatcher(dm); return; } } else { fLen = buf.st_size; } if (!S_ISREG (buf.st_mode)) { logger(L_ERR,"not regular file"); return; } //sprintf(tmp, "uploadPix >%ld<", fLen); //logger(L_DBG,tmp); fp=fopen(fname,"r"); if (fp == NULL) { logger(L_ERR,"can't open file!"); return; } uint32_t szh32 = (uint32_t) fLen; uint32_t szi32 = htonl(szh32); char * fBuffer = (char*) calloc(fLen+prefixSz+12,1); // 11 = "Set(" , ");\0" if (fBuffer == NULL) { logger(L_ERR,"no more memory!"); return; } strcpy(fBuffer, "Set("); strncat(fBuffer, cmdLine, prefixSz+1); memcpy((void*)fBuffer+prefixSz+4, (const void *) &szi32, 4); // length on binary data if (fp) { #ifdef __cplusplus size_t dummy = #endif fread(fBuffer+prefixSz+8, sizeof(char), fLen, fp); fclose(fp); } strcpy(fBuffer+prefixSz+fLen+8,");"); dMessage* dm = allocDMessage(); dm->type = DM_SET; dm->subtype = ID_SET_MAX; dm->size = prefixSz+fLen+10; dm->value = (void*) fBuffer; // transfer ovnership to dispatcher sendToDispatcher(dm); return; }*/ static void uploadPix(int subtype, char *cmdLine) { DEBUG2("[EX]: uploadPix >%s<", cmdLine); int prefixSz = 0; // image,icon,_name_,_file_|image,window,_file_|cover,noname, _file_ if (strstr(cmdLine,UPLOAD_PIX) != NULL) { prefixSz = strlen(UPLOAD_PIX) + 1; } else if (strstr(cmdLine,UPLOAD_COVER_DATA) != NULL) { prefixSz = strlen(UPLOAD_COVER_DATA) + 1; } else if (strstr(cmdLine,UPLOAD_COVER) != NULL) { int nCh = strlen(UPLOAD_COVER) + 1; prefixSz = nCh + strstr(cmdLine+nCh,",") - (cmdLine+nCh) + 1; } else { int nCh = strlen(UPLOAD_ICON) + 1; prefixSz = nCh + strstr(cmdLine+nCh,",") - (cmdLine+nCh) + 1; } char* fname = cmdLine + prefixSz; char* p = fname; while (*p != '\0') { // remove trailing \n if exists if (*p == '\n') { *p = '\0'; break; } p++; } sprintf(tmp, "[EX]: uploadPix file >%s<", fname); logger(L_INF,tmp); char * fBuffer = (char*) calloc(prefixSz+6,1); // "Set(" + "," + "\0" if (fBuffer == NULL) { logger(L_ERR,"[EX]: no more memory!"); return; } strcpy(fBuffer, "Set("); strncat(fBuffer, cmdLine, prefixSz); char * fName = (char*) calloc(strlen(fname)+1,1); if (fName == NULL) { logger(L_ERR,"[EX]: no more memory!"); return; } strcpy(fName,fname); dMessage* dm = allocDMessage(); dm->peer = PEER_ANY; // TODO - use specific peer dm->type = DM_SETFILE; dm->subtype = subtype; dm->size = -1; dm->value = (void*) fBuffer; // transfer ovnership to dispatcher dm->file = (void*) fName; dm->scaled = (void*) fName; sendToDispatcher(dm); return; } static void uploadCoverToPeers(const char* command, char* file, boolean_t isExec) { if (!file) { return; } int sz = strlen(file); if (sz > 1 && *(file+sz-1) == '\n') { *(file+sz-1) = '\0'; } DEBUG2("[EX]: uploadCoverToPeers %s<>%s", command, file); SingleList* list = _peers; char * fBuffer = (char*) calloc(strlen(command)+5,1); // 4 = "Set(" + "\0" if (fBuffer == NULL) { logger(L_ERR,"no more memory!"); return; } strcpy(fBuffer, "Set("); strcat(fBuffer, command); if (isExec) { strcat(fBuffer, ","); } while (list) { PeerDef* peer = (PeerDef*) list->data; DEBUG2("[EX]: Prepare cover for peer %d", peer->id); char buf[16]; sprintf(buf,"%d",peer->coverSz); char* dup = strdup(file); int ssz = strlen(dup); int c = ssz; while (*(dup+c) != '/' && c >= 0) { c--; } if (c != ssz) { c++; } int dot = ssz; while (*(dup+dot) != '.' && dot >= 0) { dot--; } if (dot > 0) { *(dup+dot) = '\0'; } DEBUG2("[EX]: Parsed file name %s", (dup+c)); string_t* scaledFile = stringNew("/tmp/"); stringAppend(scaledFile,dup+c); stringAppend(scaledFile, "_"); stringAppend(scaledFile, buf); stringAppend(scaledFile, ".png"); free(dup); DEBUG2("[EX]: Scaled file name %s", scaledFile->str); string_t* cmd = stringNew("convert -resize "); stringAppend(cmd, buf); stringAppend(cmd, "x"); stringAppend(cmd, buf); stringAppend(cmd, " -depth 8 -background transparent "); stringAppend(cmd, file); stringAppend(cmd, " "); stringAppend(cmd, scaledFile->str); stringAppend(cmd, " 2> /dev/null"); DEBUG2("[EX]: Scaled command %s", cmd->str); size_t sz = 0; char* dummy = executeCommandPipe(cmd->str, &sz); if (dummy) { // can be NULL free(dummy); } stringFree(cmd, BOOL_YES); DEBUG2("[EX]: uploadCoverToPeers Final command %s %s", fBuffer, scaledFile->str); dMessage* dm = allocDMessage(); dm->peer = peer->id; dm->type = DM_SETFILE; dm->subtype = ID_SET_COVER; dm->size = -1; dm->value = (void*) strdup(fBuffer); // transfer ovnership to dispatcher dm->file = (void*) strdup(file); dm->scaled = (void*) strdup(scaledFile->str); stringFree(scaledFile, BOOL_YES); sendToDispatcher(dm); list = listSingleNext(list); } free(fBuffer); } static void uploadCoverCmd(const char* descr, boolean_t isExec) { char* dup = strdup(descr); char* ptr = strstr(dup,",cover,"); ptr += 7; while (*ptr != ',') { ptr++; } ptr++; char* f = strdup(ptr); *ptr = '\0'; uploadCoverToPeers(dup, f, isExec); free(dup); free(f); } static void uploadWindowToPeers(const char* command, char* file) { if (!file) { return; } int sz = strlen(file); if (sz > 1 && *(file+sz-1) == '\n') { *(file+sz-1) = '\0'; } DEBUG2("[EX]: uploadWindowToPeers %s<>%s", command, file); SingleList* list = _peers; char * fBuffer = (char*) calloc(strlen(command)+5,1); // 4 = "Set(" + "\0" if (fBuffer == NULL) { logger(L_ERR,"no more memory!"); return; } strcpy(fBuffer, "Set("); strcat(fBuffer, command); while (list) { PeerDef* peer = (PeerDef*) list->data; DEBUG2("[EX]: Prepare image for peer %d", peer->id); char bufx[16]; char bufy[16]; sprintf(bufx,"%d",peer->xSz); sprintf(bufy,"%d",peer->ySz); char* dup = strdup(file); int ssz = strlen(dup); int c = ssz; while (*(dup+c) != '/' && c >= 0) { c--; } if (c != ssz) { c++; } int dot = ssz; while (*(dup+dot) != '.' && dot >= 0) { dot--; } if (dot > 0) { *(dup+dot) = '\0'; } DEBUG2("[EX]: Parsed file name %s", (dup+c)); string_t* scaledFile = stringNew("/tmp/"); stringAppend(scaledFile,dup+c); stringAppend(scaledFile, "_"); stringAppend(scaledFile, bufx); stringAppend(scaledFile, "x"); stringAppend(scaledFile, bufy); stringAppend(scaledFile, ".png"); free(dup); DEBUG2("[EX]: Scaled file name %s", scaledFile->str); string_t* cmd = stringNew("convert -resize "); stringAppend(cmd, bufx); stringAppend(cmd, "x"); stringAppend(cmd, bufy); stringAppend(cmd, " -depth 8 -background transparent "); stringAppend(cmd, file); stringAppend(cmd, " "); stringAppend(cmd, scaledFile->str); stringAppend(cmd, " 2> /dev/null"); DEBUG2("[EX]: Scaled command %s", cmd->str); size_t sz = 0; char* dummy = executeCommandPipe(cmd->str, &sz); if (dummy) { // can be NULL free(dummy); } stringFree(cmd, BOOL_YES); DEBUG2("[EX]: uploadWindowToPeers Final command %d %s %s", peer->id, fBuffer, scaledFile->str); dMessage* dm = allocDMessage(); dm->peer = peer->id; dm->type = DM_SETFILE; dm->subtype = ID_SET_IMAGE; dm->size = -1; dm->value = (void*) strdup(fBuffer); // transfer ovnership to dispatcher dm->file = (void*) strdup(file); dm->scaled = (void*) strdup(scaledFile->str); stringFree(scaledFile, BOOL_YES); sendToDispatcher(dm); list = listSingleNext(list); } free(fBuffer); } static void uploadWindowCmd(const char* descr) { DEBUG2("[EX]: uploadWindowCmd %s",descr); char* dup = strdup(descr); char* ptr = strstr(dup,",window,"); ptr += 8; char* f = strdup(ptr); *ptr = '\0'; uploadWindowToPeers(dup, f); free(dup); free(f); } static int isConvertable(int what) { if (what == ID_SET_LIST || what == ID_SET_ILIST || what == ID_SET_FMGR) { return 1; } else { return 0; } } static int exitCmd(int subtype, const char *oper, const char *exec, cmdParams* params) { logger(L_INF, "[EX]: Exit command processed"); sendAbort(); return EXIT_OK; } static int includeCmd(int subtype, const char *file, const char *exec, cmdParams* params) { logger(L_INF, "[EX]: Command: Include"); if (file == NULL) { ERROR2("[EX]: Can not Include() file with empty name"); return EXIT_NOK; } int ret = EXIT_OK; if (load_cfg(file, 0) == EXIT_NOK) { logger(L_ERR,"[EX]: Can not include file !"); } printConf(); return ret; } static int getCmd(int subtype, const char *descr, const char *exec, cmdParams* params) { if (descr == NULL) { return EXIT_NOK; } INFO2("[EX]: Command: Get %d %s", subtype, descr); strcpy(tmptext, CMD_GET); strcat(tmptext, "("); strcat(tmptext, descr); strcat(tmptext, ");"); dMessage* dm = allocDMessage(); dm->size = strlen(tmptext); dm->value = strdup(tmptext); if (isServerMode()) { dm->type = DM_GET; dm->subtype = subtype; } else { free(dm->value); free(dm); return EXIT_NOK; } if (subtype == ID_GET_PING && strlen(descr) > 5) { // Get(ping,_timeout_); addKeepalive(descr+5); } sendToDispatcher(dm); return EXIT_OK; } static int execAndSetCmd(int subtype, const char *descr, const char *exec, cmdParams* params) { INFO2("[EX]: Command: ExecAndSet %d", subtype); if (!isServerMode() || remoteOn != 1) { return EXIT_OK; } if (descr == NULL || exec == NULL) { logger(L_DBG, "[EX]: execAndSetCmd(): Empty command or description"); return EXIT_NOK; } //printf("TRACE S %s->%s\n",descr,exec); size_t resLen = 0; char *res = executeSimpleCommand(exec, &resLen); if (res == NULL) { // just replace NULL to empty string res = malloc(1); *res = '\0'; } int dlen = strlen(descr); if (subtype == ID_SET_IMAGE) { INFO2("[EX]: ExecAndSet upload icon/image/cover of size %d",(int)resLen); char *chunk = (char*) calloc(dlen + resLen + 2, 1); strcpy(chunk,descr); strcat(chunk,","); memcpy(chunk + dlen + 1, res, resLen); DEBUG2("[EX]: ExecAndSet upload icon/image/cover %s", descr); if (strstr(descr,",cover") != NULL) { uploadCoverCmd(chunk, BOOL_NO); } else if (strstr(descr,",window") != NULL) { uploadWindowCmd(chunk); } else { if (strstr(descr,",icon") != NULL) { uploadPix(subtype, chunk); } // Set(image,show|close|cursor|nocursor|remove_all) processed below } free(chunk); } else if (subtype == ID_SET_COVER && strstr(descr,",noname") != NULL) { logger(L_INF, "[EX]: ExecAndSet upload cover"); uploadCoverToPeers(descr, res, BOOL_YES); } else if (subtype == ID_SET_COVER && strstr(descr,",by_name") != NULL) { string_t* command = stringNew(CMD_SET); stringAppend(command,"("); stringAppend(command,descr); stringAppend(command,","); stringAppendLen(command,res,resLen); stringAppend(command,");"); dMessage* dm = allocDMessage(); dm->type = DM_SET; dm->subtype = ID_SET_COVER; dm->size = command->len; dm->value = (void*) strdup(command->str); stringFree(command,BOOL_YES); sendToDispatcher(dm); } else { // Replace all ");" inside buffer to "@@" since Java Client will separate commands by ");" char *p; while ((p = strstr(res,");")) != NULL) { // binary data ??? *p = '@'; p++; *p = '@'; } boolean_t converted = BOOL_NO; #ifdef USE_ICONV char* decodedVal = res; if (isConvertable(subtype) && needConvert() == 1) { decodedVal = convCharset(res, resLen, CNV_TO); converted = BOOL_YES; DEBUG2("[EX]: Decoded string >%s< ", (decodedVal ? decodedVal : "NULL")); } int sz = (decodedVal ? strlen(decodedVal) : 0); int memSize = sz + dlen + 7; #else int memSize = resLen + dlen + 7; #endif char *chunk = (char*) calloc(1,memSize+1); strcpy(chunk,CMD_SET); strcat(chunk,"("); // For example, Set(title strcat(chunk,descr); strcat(chunk,","); #ifdef USE_ICONV memcpy(chunk+5+dlen,decodedVal,sz); // could be binary data here ???? strcpy(chunk+5+dlen+sz,");"); if (converted == BOOL_YES) { free(decodedVal); } #else memcpy(chunk+5+dlen,res,resLen); // could be binary data here strcpy(chunk+5+dlen+resLen,");"); #endif //printf("CHUNK: %s\n", chunk); dMessage* dm = allocDMessage(); dm->type = DM_SET; dm->subtype = subtype; dm->size = strlen(chunk); dm->value = (void*) strdup(chunk); sendToDispatcher(dm); free(chunk); } free(res); //logger(L_INF,"[EX]: execCmdAndGetResults finished"); return EXIT_OK; } static int execAndSendCmd(int subtype, const char *descr, const char *exec, cmdParams* params) { logger(L_INF, "[EX]: Command: ExecAndSend"); if (!isServerMode() || remoteOn != 1) { return EXIT_OK; } if (descr == NULL || exec == NULL) { logger(L_DBG, "[EX]: execAndSendCmd(): Empty command or description"); return EXIT_NOK; } //printf("TRACE S %s->%s\n",descr,exec); size_t resLen = 0; char *res = executeSimpleCommand(exec, &resLen); if (res == NULL) { logger(L_ERR, "[EX]: execAndSendCmd: executeSimpleCommand() returns NULL"); return EXIT_NOK; } // Just send string int bytesFlag = (strstr(descr, SEND_BYTES) ? 1 : 0); sendData(ID_SEND, bytesFlag, res, resLen); free(res); return EXIT_OK; } static int sendCmd(int subtype, const char *descr, const char *exec, cmdParams* p) { logger(L_INF, "[EX]: Command: Send"); int ret = EXIT_OK; if (descr!= NULL && isServerMode() == EXIT_OK) { // WEB/CMXML will skip this message inside ret = processSendCmd(descr); } return ret; } static int setCmd(int subtype, const char *descr, const char *exec, cmdParams* p) { INFO2("[EX]: Command: Set %s", (descr ? descr : "NULL")); if (descr != NULL && isServerMode() == EXIT_OK) { if (subtype == ID_SET_IMAGE) { // handle Set(cover|image,icon|window|cover,[...]_image_file_name_); separately. if (strstr(descr,",cover,") != NULL) { uploadCoverCmd(descr, BOOL_NO); } else if (strstr(descr,",window,") != NULL) { uploadWindowCmd(descr); } else { if (strstr(descr,",icon,") != NULL) { uploadPix(subtype, (char*)descr); } // Set(image,show|close|cursor|nocursor|remove_all) processed below } } else if (subtype == ID_SET_COVER) { if (strstr(descr,",noname,") != NULL) { char* ptr = strstr(descr,",noname,"); uploadCoverToPeers("cover,noname", (ptr+8), BOOL_NO); } else if (strstr(descr,",by_name,") != NULL || strstr(descr,",clear") != NULL) { string_t* command = stringNew(CMD_SET); stringAppend(command,"("); stringAppend(command,descr); stringAppend(command,");"); dMessage* dm = allocDMessage(); dm->type = DM_SET; dm->subtype = subtype; dm->size = command->len; dm->value = (void*) strdup(command->str); stringFree(command,BOOL_YES); sendToDispatcher(dm); } } else if ((subtype == ID_SET_LIST && strncmp(descr,"list,dir,",9) == 0) || (subtype == ID_SET_ILIST && strncmp(descr,"iconlist,dir,",13) == 0)) { INFO2("[EX]: Command: Set list from dir %s", (descr ? descr : "NULL")); string_t* command = stringNew(CMD_SET); int shift; if (subtype == ID_SET_LIST) { stringAppend(command,"(list,replace,"); shift = 9; } else { stringAppend(command,"(iconlist,replace,"); shift = 13; } const char *p1 = descr + shift; const char *p2 = p1; while (*p2 != ',') { p2++; } p2++; stringAppendLen(command, p1, p2-p1); INFO2("[EX]: Command: Set list from dir2 %s", p2); string_t* ff = executeDirListCommand(subtype, p2); if (ff) { stringAppend(command, ff->str); stringFree(ff,BOOL_YES); } stringAppend(command,");"); dMessage* dm = allocDMessage(); dm->type = DM_SET; dm->subtype = subtype; dm->size = command->len; dm->value = (void*) strdup(command->str); stringFree(command,BOOL_YES); sendToDispatcher(dm); } else if (subtype == ID_SET_TEXT && strncmp(descr,"text,file,",10) == 0) { INFO2("[EX]: Command: Set text from file %s", (descr ? descr : "NULL")); string_t* command = stringNew(CMD_SET); stringAppend(command,"(text,replace,"); const char *p1 = descr + 10; // text,file const char *p2 = p1; while (*p2 != ',') { p2++; } p2++; stringAppendLen(command, p1, p2-p1); INFO2("[EX]: Command: Set text from file %s", p2); int len; char *buf = readFromFile("", p2, &len); if (buf) { stringAppendLen(command, buf, len); free(buf); } stringAppend(command,");"); dMessage* dm = allocDMessage(); dm->type = DM_SET; dm->subtype = subtype; dm->size = command->len; dm->value = (void*) strdup(command->str); stringFree(command,BOOL_YES); sendToDispatcher(dm); } else { //INFO2("[EX]: Command: Set ELSE %s", (descr ? descr : "NULL")); const char* data = descr; string_t* command = stringNew(CMD_SET); stringAppend(command,"("); // Change \n in input to real '\n' const char *p1 = data; const char *p2 = data; while (p2 != NULL) { p2 = strstr(p1, "\\n"); if (p2 == NULL) { stringAppend(command,p1); } else { stringAppendLen(command,p1, p2-p1); stringAppend(command,"\n"); p1 = p2 + 2; } } stringAppend(command,");"); dMessage* dm = allocDMessage(); dm->type = DM_SET; dm->subtype = subtype; dm->size = command->len; dm->value = (void*) strdup(command->str); sendToDispatcher(dm); stringFree(command,BOOL_YES); } } return EXIT_OK; } static int makeVarCmd(const char *descr, const char *exec) { logger(L_INF, "[EX]: Command: Make(var,...)"); int ret = EXIT_OK; const char *eValue = exec; if (exec && strstr(exec,"by_value") == exec) { eValue = (exec + 9); } size_t resLen = 0; char *res = NULL; if (eValue == exec) { if(exec == NULL) { logger(L_DBG, "[EX]: Empty Make(var,...) command"); return EXIT_NOK; } res = executeSimpleCommand(exec, &resLen); // if return data is NULL, it is OK, need to clean up var value if (resLen > 0 && *(res+resLen-1) == '\n') { resLen--; } } else { // set "by_value" if (eValue) { resLen = strlen(eValue); res = strdup(eValue); } else { resLen = 0; } } ret = setVar(descr+4,res,resLen); if (ret != EXIT_OK) { logger(L_DBG,"[EX]: Fails in setVar() (Make)"); } free(res); return ret; } static int makeModeCmd(const char *descr, const char *exec) { logger(L_INF, "[EX]: Command: Make(mode,...)"); int ret = EXIT_OK; int i = 0; type_key* k = findItem(EVT_EXITMODE, &i, NULL); if (k && i == FLAG_EXACT) { logger(L_DBG, "[EX]: Exec cmd on exit from mode"); ret = handleCmdByKey(PEER_ANY,k,NULL); if (ret == EXIT_STOP) { return ret; } //} else { // logger(L_DBG, "[EX]: Leave mode"); } switchMode(exec); i = 0; k = findItem(EVT_ENTRMODE, &i, NULL); if (k && i == FLAG_EXACT) { logger(L_DBG, "[EX]: Exec cmd on enter to mode"); ret = handleCmdByKey(PEER_ANY,k,NULL); if (ret == EXIT_STOP) { return ret; } } else { logger(L_DBG, "[EX]: Entered to mode"); } return ret; } static int makeAlarmCmd(const char *descr, const char *exec) { logger(L_INF, "[EX]: Command: Make(alarm,...)"); char *sExec = strdup(exec); char* file = strtok(sExec,","); char* macro = strtok(NULL,","); int ret = EXIT_NOK; if (file != NULL && macro != NULL) { addAlarm(file, macro); ret = EXIT_OK; } free(sExec); return ret; } static int makeRemoteCmd(const char *descr, const char *exec) { if (exec && strcmp(exec,"on")==0) { logger(L_INF, "[EX]: Command: Make(remote,on)"); remoteOn = 1; } else if (exec && strcmp(exec,"off")==0) { logger(L_INF, "[EX]: Command: Make(remote,off)"); remoteOn = 0; } return EXIT_OK; } static int makeDisconnectCmd(const char *descr, const char *exec) { logger(L_INF, "[EX]: Temporary disconnect command"); dMessage* dm = allocDMessage(); dm->type = DM_EVENT; dm->subtype = ID_EVENT_DISCONNECT; sendToDispatcher(dm); return EXIT_OK; // But what with the rest of the command line ? (now just skip) } static int makeStopCmd(const char *descr, const char *exec) { logger(L_INF, "[EX]: Command: Make(stop)"); return EXIT_STOP; } static int makeFlushCmd(const char *descr, const char *exec) { logger(L_INF, "[EX]: Command: Make(flush)"); return flushData(); } static int makeExitCmd(const char *descr, const char *exec) { return exitCmd(ID_MAKE_EXIT,descr,exec,NULL); } static int makeNoneCmd(const char *descr, const char *exec) { return EXIT_OK; } static int makeCmd(int subtype, const char *descr, const char *exec, cmdParams* params) { DEBUG2("[EX]: makeCmd %d %s", subtype, descr); static struct { int id; int (*hook) (const char *descr, const char *exec); } _makeHooks[] = { {ID_MAKE_DISCONN, makeDisconnectCmd}, {ID_MAKE_MODE, makeModeCmd }, {ID_MAKE_ALARM, makeAlarmCmd }, {ID_MAKE_FLUSH, makeFlushCmd }, {ID_MAKE_STOP, makeStopCmd }, {ID_MAKE_REMOTE, makeRemoteCmd }, {ID_MAKE_VAR, makeVarCmd }, {ID_MAKE_EXIT, makeExitCmd }, {ID_MAKE_NONE, makeNoneCmd }, {ID_MAKE_MAX, makeNoneCmd } }; return (*_makeHooks[subtype].hook)(descr, exec); } static int ckpdCmd(int subtype, const char *descr, const char *exec, cmdParams* params) { logger(L_INF, "[EX]: Command: SendCKPD"); if (descr == NULL) { return EXIT_NOK; } if (isAtModeDuplex()) { dMessage* dm = allocDMessage(); dm->type = DM_CKPD; dm->subtype = ID_SET_MAX; dm->size = strlen(descr); dm->value = (void*) strdup(descr); sendToDispatcher(dm); } return EXIT_OK; } int macroCmd(int subtype, const char *descr, const char *exec, cmdParams* params) { logger(L_INF, "[EX]: Command: Macro"); if (descr == NULL) { return EXIT_NOK; } int runIt = 1; int ret = EXIT_OK; if (exec != NULL) { size_t resLen = 0; const char* eValue = exec; if (exec && strstr(exec,"by_value") == exec) { eValue = (exec + 9); } char* res = NULL; if (eValue == exec) { if(exec == NULL) { runIt = 0; } else { res = executeSimpleCommand(eValue, &resLen); if (res == NULL) { logger(L_ERR, "[EX]: macroCmd: empty condition value, skip execution"); return EXIT_NOK; } if (*(res+resLen-1) == '\n') { resLen--; } } } else { // set "by_value" if (eValue) { resLen = strlen(eValue); res = strdup(eValue); } else { resLen = 0; } } if (res == NULL) { runIt = 0; } else { if (strcmp(res,"0") != 0 && strcmp(res,"0\n") != 0) { // test return code $? runIt = 0; } } free(res); } if (runIt == 0) { logger(L_DBG,"[EX]: macroCmd condition not met"); return EXIT_OK; } int found; type_key *k = findItem(descr, &found, NULL); if (k && found == FLAG_EXACT) { ret = handleCmdByKey(PEER_ANY, k, params); DEBUG2("[EX]: Return code from macroCmd -> handleCmdByKey() is %d",ret); } return ret; } int macroCmdCallback(const char *descr, const char *exec, cmdParams* params) { if (descr == NULL) { return EXIT_NOK; } string_t* d = substParams(descr, params); string_t* e = substParams(exec, params); INFO2("[EX]: macroCmdCallback after subst >%s< -> >%s<", (d ? d->str : "NULL"), (e ? e->str : "NULL")); int ret = macroCmd(-1, (d ? d->str : NULL), (e ? e->str : NULL), params); if (d) { stringFree(d, BOOL_YES); } if (e) { stringFree(e, BOOL_YES); } return ret; } static int processOneCommand(cmdItem* ci, cmdParams* p) { int ret = EXIT_OK; static struct { int id; int (*hook) (int subtype, const char* descr, const char* exec, cmdParams* p); } _cmdHooks[] = { {ID_EXIT, exitCmd }, {ID_EXEC, execCmdNoPipe }, {ID_SENDCKPD, ckpdCmd }, {ID_SET, setCmd }, {ID_EXECSET, execAndSetCmd }, {ID_TIMER, timerCommand }, {ID_SEND, sendCmd }, {ID_EXECSEND, execAndSendCmd }, {ID_MACRO, macroCmd }, {ID_LOAD, loadCmds }, {ID_INCLUDE, includeCmd }, {ID_GET, getCmd }, {ID_MAKE, makeCmd }, {ID_EMU, emulateCommands}, {ID_DBUS, dbusCommand }, {ID_CMD_MAX, NULL } }; INFO2("[EX]: processOneCommand >%s< >%s< >%d<", ci->descr == NULL ? "no description" : ci->descr, ci->exec == NULL ? "no exec" : ci->exec, remoteOn); if (ci->type == ID_MAKE && ci->subtype == ID_MAKE_REMOTE && ci->exec && strcmp(ci->exec,"on") == 0) { logger(L_INF, "[EX]: Switch remote on"); remoteOn = 1; return EXIT_OK; } if (remoteOn != 1) { logger(L_INF, "[EX]: Remote is off. Skip"); return EXIT_OK; } if (ci->type < 0 || ci->type >= ID_CMD_MAX) { logger(L_INF, "[EX]: Unknown command"); return EXIT_NOK; } string_t* sDescr = substParams(ci->descr, p); string_t* sExec = substParams(ci->exec, p); INFO2("[EX]: processOneCommand after subst >%s< -> >%s<", (sDescr ? sDescr->str : "NULL"), (sExec ? sExec->str : "NULL")); const char* descr = (sDescr ? sDescr->str : NULL); const char* exec = (sExec ? sExec->str : NULL); if (_cmdHooks[ci->type].hook) { ret = (*_cmdHooks[ci->type].hook)(ci->subtype, descr, exec, p); } if (sDescr) { stringFree(sDescr, BOOL_YES); } if (sExec) { stringFree(sExec, BOOL_YES); } return ret; } static int processCommands(SingleList* commands, cmdParams* p) { SingleList* list = commands; while (list) { cmdItem* item = (cmdItem *) list->data; if (item != NULL) { /*if (item->descr == NULL) { sprintf(tmp, "Process next command NULL parameters"); } else { sprintf(tmp, "Process next command %s",item->descr); } logger(L_DBG, tmp); */ int ret = processOneCommand(item, p); if (ret != EXIT_OK) { if (ret == EXIT_STOP) { logger(L_DBG, "[EX]: Stop execution on current command sequence"); return EXIT_STOP; // just stop execution of command sequence } } } list = listSingleNext(list); } return EXIT_OK; } // // Top-level command processing function // int handleCmdByKey(int peer, type_key* k, cmdParams* p) { return handleCmdByKeyEx(peer, k, p, 1); } int handleCmdByKeyEx(int peer, type_key* k, cmdParams* p, int sendToMain) { if (k == NULL) { logger(L_DBG, "[EX]: handleCmdByKey() NULL input"); return EXIT_NOK; } int ret = EXIT_OK; sprintf(tmp, "[EX]: handleCmdByKey() >%s<",k->key); logger(L_DBG, tmp); SingleList* commands = getCommand(k); if (commands == NULL) { logger(L_DBG, "[EX]: No appropriate command was found by getCommand()"); } else { //sprintf(tmp, "[EX]: ready to execute command"); //logger(L_DBG, tmp); ret = processCommands(commands, p); // In AT mode: User had pressed some key ... // Send ToMainMenu sequence of CKPD's to show main menu again // Do we send it even if remote is off ? if (remoteOn == 1 && peer != PEER_ANY && needAtMainMenuReturn(peer) && sendToMain == 1) { sendToMainMenu(peer); } } return ret; } anyremote-6.7.1/src/pr_frontend.c0000644000232200023220000001320012664332726017360 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include #include #include #include #include "common.h" #include "lib_wrapper.h" #include "executor.h" #include "utils.h" #include "peer.h" // // Frontend support (ganyremote/kanyremote) // extern char tmp[MAXMAXLEN]; static char frontEndBuf[MAXLEN]; typedef struct _FrontendConnection_ { int fileDescriptor; } _FrontendConnection; int feFD(ConnectInfo* conn) { _FrontendConnection* cn = (_FrontendConnection*) conn->connectionData; return (cn ? cn->fileDescriptor : -1); } static int frontendOpenInternal(_FrontendConnection* conn, int portno) { int flags; sprintf(tmp, "[DS]: connect to frontend >%d<",portno ); logger(L_DBG, tmp); struct sockaddr_in serv_addr; struct hostent *server; conn->fileDescriptor = socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0); if (conn->fileDescriptor < 0) { logger(L_ERR, "[DS]: opening socket for frontend"); return EXIT_NOK; } if (-1 == (flags = fcntl(conn->fileDescriptor, F_GETFL, 0))) { flags = 0; } fcntl(conn->fileDescriptor, F_SETFL, flags | O_NONBLOCK); server = gethostbyname("localhost"); if (server == NULL) { return EXIT_NOK; } memset((void *) &serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length); serv_addr.sin_port = htons(portno); int ret = connect(conn->fileDescriptor,(const struct sockaddr *) &serv_addr, sizeof(serv_addr)); if (ret != 0 && errno != EINPROGRESS) { sprintf(tmp, "[DS]: connect socket for frontend (%d) errno = %d", ret, errno); logger(L_ERR, tmp); return EXIT_NOK; } return EXIT_OK; } int feOpen(ConnectInfo* conn) { DEBUG2("[DS]: Open front end connection"); if (conn->connectionData && ((_FrontendConnection*) conn->connectionData)->fileDescriptor >= 0) { close(((_FrontendConnection*) conn->connectionData)->fileDescriptor); } if (conn->connectionData) { free(conn->connectionData); } conn->connectionData = (_FrontendConnection*) malloc(sizeof(_FrontendConnection)); _FrontendConnection* cn = (_FrontendConnection*) conn->connectionData; cn->fileDescriptor = -1; DEBUG2("[DS]: Open front end connection. Use port %d", conn->port); if (frontendOpenInternal(conn->connectionData, conn->port) != EXIT_OK) { logger(L_ERR,"[DS]: can not open front end port"); conn->state = PEER_DISCONNECTED; return EXIT_NOK; } conn->state = PEER_CONNECTED; return EXIT_OK; } void feClose(ConnectInfo* conn, int final) { _FrontendConnection* cn = (_FrontendConnection*) conn->connectionData; if (cn) { if (cn->fileDescriptor >= 0) { close(cn->fileDescriptor); } cn->fileDescriptor = -1; } conn->state = PEER_DISCONNECTED; } void feReset(ConnectInfo* conn) { feClose(conn, 0); } void feWrite(ConnectInfo* conn, const char* buf) { _FrontendConnection* cn = (_FrontendConnection*) conn->connectionData; if (cn && cn->fileDescriptor >= 0) { int n = write(cn->fileDescriptor, buf, strlen(buf)); if (n < 0) { logger(L_ERR, "[DS]: Error writing to frontend"); } } } static int readFromFrontEnd(int fd, char *buf, int size) { //logger(L_INF, "[DS]: readFromFrontEnd"); if (buf == NULL) { return EXIT_OK; } bzero(buf,size); int n = read(fd,buf,size-1); if (n < 0) { //logger(L_ERR, "[DS]: Error reading from socket"); return EXIT_NOK; } else { *(buf+n) = '\0'; if (n > 0) { sprintf(tmp, "[DS]: Got from frontend (%d) >%s<", n, buf); logger(L_DBG, tmp); int i = 0; int k = 0; for (i=0; i k) { *(buf+k) = *(buf+i); } k++; } } *(buf+k) = '\0'; sprintf(tmp, "[DS]: Got from frontend (%d) >%s<", n, buf); logger(L_DBG, tmp); } } return EXIT_OK; } int feRead(int fd) { // Verify commands from front-end int ret = readFromFrontEnd(fd, frontEndBuf, MAXLEN); if (ret == EXIT_OK) { if (frontEndBuf[0] != '\0') { DEBUG2("[DS]: feRead() >%s<", frontEndBuf); eMessage* em = (eMessage*) malloc(sizeof(eMessage)); em->peer = 0; em->type = EM_STRING; em->value = strdup(frontEndBuf); sendToExecutor(em); return 1; } } return 0; } anyremote-6.7.1/src/pr_socket.h0000644000232200023220000000237112664332726017045 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PR_SOCKET_H_ #define _PR_SOCKET_H_ #include "peer.h" int socketFD (ConnectInfo* conn); int socketOpen (ConnectInfo* conn); int socketListen (ConnectInfo* conn); //int socketSetup (ConnectInfo* conn); int socketAccept (ConnectInfo* conn); int socketWrite (ConnectInfo* conn, const dMessage* msg); void socketClose (ConnectInfo* conn, int final); void socketReset (ConnectInfo* conn); #endif anyremote-6.7.1/src/state.c0000644000232200023220000010623012664332726016166 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include "str.h" #include "utils.h" #include "conf.h" #include "list.h" #include "state.h" #include "mutex.h" #include "gen_xml.h" #include "var.h" extern char tmp[MAXMAXLEN]; boolean_t _stateInited = BOOL_NO; static ClientState _state; static SingleList* _userMenu = NULL; static int _curForm = CF; int _iconPadding = 0; int _iconSize = 64; void initState() { INFO2("[DS]: initState"); mutexNew(M_STATE); _state.cf.layout7x1 = BOOL_NO; _state.cf.upBtn = NULL; _state.cf.dnBtn = NULL; _state.cf.joystick = BOOL_YES; _state.cf.keypad = BOOL_YES; _state.cf.caption = stringNew("anyRemote"); _state.cf.title = stringNew(" "); _state.cf.status = stringNew(" "); int i = 0; for (;iicon) { stringFree(item->icon, (item->icon->str != NULL)); } if (item->string) { stringFree(item->string, (item->string->str != NULL)); } free(item); } void freeState() { if (_stateInited == BOOL_NO) { return; } INFO2("[DS]: freeState"); mutexLock(M_STATE); if (_state.cf.caption) stringFree(_state.cf.caption, BOOL_YES); if (_state.cf.title) stringFree(_state.cf.title, BOOL_YES); if (_state.cf.status) stringFree(_state.cf.status, BOOL_YES); if (_state.cf.upBtn) stringFree(_state.cf.upBtn, BOOL_YES); if (_state.cf.dnBtn) stringFree(_state.cf.dnBtn, BOOL_YES); int i = 0; for (;istr != NULL)); } void freeMenu() { INFO2("[DS]: freeMenu %d", _curForm); listSingleFullFree(_userMenu, stringItemFree); _userMenu = NULL; } void setupDefMenu() { INFO2("[DS]: setupDefMenu %d", _curForm); mutexLock(M_STATE); freeMenu(); addDefMenu(); mutexUnlock(M_STATE); } SingleList* userMenu() { return _userMenu; } int menuSize() { return (_userMenu ? listSingleLength(_userMenu) : 0); } SingleList* menuNth(int n) { return (_userMenu ? listSingleNth(_userMenu, n) : NULL); } void setMenu() { char *token = strtok(NULL,","); if (!token) { return; } while (isspace(*token)) { ++token; } if (strncmp(token,"add",3) == 0 || strncmp(token,"replace",7) == 0) { logger(L_INF, "[DS]: setMenu add/replace"); if (strcmp(token,"replace") == 0) { setupDefMenu(); } char *token3 = strtok(NULL,","); while (token3) { while (isspace(*token3)) { ++token3; } INFO2("[DS]: Set(menu, ...) %s", token3); mutexLock(M_STATE); string_t* dup = stringNew(token3); _userMenu = listSingleAppend(_userMenu, dup); token3 = strtok(NULL,","); mutexUnlock(M_STATE); } } else if (strncmp(token,"clear",5) == 0) { mutexLock(M_STATE); freeMenu(); mutexUnlock(M_STATE); } else { ERROR2("[DS]: Can to parse Set(menu, ...)"); } } //////////////////////////////////////////////////////////////////////////////// // // Control form // //////////////////////////////////////////////////////////////////////////////// void setCfCaption(const char * s) { mutexLock(M_STATE); if (_state.cf.caption == NULL) { _state.cf.caption = stringNew(s); } else { stringAssign(_state.cf.caption,s); } mutexUnlock(M_STATE); } const char* cfCaption() { return (_state.cf.caption ? _state.cf.caption->str : NULL); } void setCfTitle(const char * s) { boolean_t setupMenu = (_curForm != CF); mutexLock(M_STATE); if (_state.cf.title == NULL) { _state.cf.title = stringNew(s); } else { stringAssign(_state.cf.title,s); } mutexUnlock(M_STATE); setCurForm(CF); if (setupMenu) { setupDefMenu(); } } const char* cfTitle() { return (_state.cf.title ? _state.cf.title->str : NULL); } void setCfStatus(const char * s) { boolean_t setupMenu = (_curForm != CF); mutexLock(M_STATE); if (_state.cf.status == NULL) { _state.cf.status = stringNew(s); } else { stringAssign(_state.cf.status,s); } mutexUnlock(M_STATE); setCurForm(CF); if (setupMenu) { setupDefMenu(); } } const char* cfStatus() { return (_state.cf.status ? _state.cf.status->str : NULL); } void setIcons() { boolean_t setupMenu = (curForm() != CF); char* token = strtok(NULL,","); if (token && strcmp(token,"SAME") != 0) { setCfCaption(token); } token = strtok(NULL,","); mutexLock(M_STATE); while (token) { while (isspace(*token)) { ++token; } int ic = -1; if (strncmp(token,"*",1) == 0) { ic = 9; } else if (strncmp(token,"#",1) == 0) { ic = 11; } else if (strncmp(token,"0",1) == 0) { ic = 10; } else { ic = atoi(token)-1; } if (ic >=0 && ic < 12) { token = strtok(NULL,","); while (token && isspace(*token)) { ++token; } if (_state.cf.icons[ic] == NULL) { _state.cf.icons[ic] = stringNew((token?token:"none")); } else { stringAssign(_state.cf.icons[ic],(token?token:"none")); } INFO2("[DS]: setIcons %d %s",ic,_state.cf.icons[ic]->str); } token = strtok(NULL,","); } mutexUnlock(M_STATE); setCurForm(CF); if (setupMenu) { setupDefMenu(); } } void setHints() { char* token = strtok(NULL,","); mutexLock(M_STATE); while (token) { while (isspace(*token)) { ++token; } //DEBUG2("[DS]: setHints %s",token); int ic = -1; if (strncmp(token,"*",1) == 0) { ic = 9; } else if (strncmp(token,"#",1) == 0) { ic = 11; } else if (strncmp(token,"0",1) == 0) { ic = 10; } else { ic = atoi(token)-1; } if (ic >=0 && ic < 12) { token = strtok(NULL,","); while (token && isspace(*token)) { ++token; } if (_state.cf.hints[ic] == NULL) { _state.cf.hints[ic] = stringNew((token?token:"")); } else { stringAssign(_state.cf.hints[ic],(token?token:"")); } INFO2("[DS]: setHints %d %s",ic,_state.cf.hints[ic]->str); } token = strtok(NULL,","); } mutexUnlock(M_STATE); } static void setUseVolume(boolean_t use) { _state.cf.useVolume = use; } // // Set(skin,default|bottomline|3x4|7x1 // [,keypad_only|joystick_only] // [,ticker|noticker] <-- TODO // [,volume] // [,choose,_button_] <-- TODO // [,up,_button_] [,down,_button_]) // void setSkin() { setUseVolume(BOOL_NO); // reset volume usage flag _state.cf.layout7x1 = BOOL_NO; char* token; boolean_t setupMenu = (curForm() != CF); mutexLock(M_STATE); if (_state.cf.upBtn) { stringFree(_state.cf.upBtn, BOOL_YES); _state.cf.upBtn = NULL; } if (_state.cf.dnBtn) { stringFree(_state.cf.dnBtn, BOOL_YES); _state.cf.dnBtn = NULL; } while((token = strtok(NULL,","))) { if (strcmp(token,"bottomline") == 0 || strcmp(token,"7x1") == 0 || strcmp(token,"6x1") == 0 || strcmp(token,"5x1") == 0) { _state.cf.layout7x1 = BOOL_YES; } else if (strcmp(token,"volume") == 0) { setUseVolume(BOOL_YES); } else if (strcmp(token,"keypad_only") == 0) { _state.cf.keypad = BOOL_YES; _state.cf.joystick = BOOL_NO; } else if (strcmp(token,"joystick_only") == 0) { _state.cf.keypad = BOOL_NO; _state.cf.joystick = BOOL_YES; } else if (strcmp(token,"up") == 0) { token = strtok(NULL,","); if (token) { if (_state.cf.upBtn == NULL) { _state.cf.upBtn = stringNew(token); } else { stringAssign(_state.cf.upBtn,token); } } } else if (strcmp(token,"down") == 0) { token = strtok(NULL,","); if (token) { if (_state.cf.dnBtn == NULL) { _state.cf.dnBtn = stringNew(token); } else { stringAssign(_state.cf.dnBtn,token); } } } } //if (_state.cf.layout7x1) { // freeCfCover(); //} mutexUnlock(M_STATE); setCurForm(CF); if (setupMenu) { setupDefMenu(); } } const char* cfIcon(int i) { if (i < 0 || i >= ICON_NUM) return NULL; return (_state.cf.icons[i] ? _state.cf.icons[i]->str : NULL); } const char* cfHint(int i) { if (i < 0 || i >= ICON_NUM) return NULL; return (_state.cf.hints[i] ? _state.cf.hints[i]->str : NULL); } void setCfCover(const char * s) { //printf("setCfCover %s\n", s); mutexLock(M_STATE); if (s) { if (_state.cf.cover == NULL) { _state.cf.cover = stringNew(s); } else { stringAssign(_state.cf.cover,s); } if (_state.cf.namedCover) { stringFree(_state.cf.namedCover, BOOL_YES); _state.cf.namedCover = NULL; } } else { freeCfCover(); } mutexUnlock(M_STATE); } void setCfNamedCover(char* s) { //printf("setCfNamedCover %s\n", s); mutexLock(M_STATE); if (s) { if (_state.cf.namedCover == NULL) { _state.cf.namedCover = stringNew(s); } else { stringAssign(_state.cf.namedCover,s); } if (_state.cf.cover) { stringFree(_state.cf.cover, BOOL_YES); _state.cf.cover = NULL; } } else { freeCfCover(); } mutexUnlock(M_STATE); } const char* cfCover() { return (_state.cf.cover ? _state.cf.cover->str : NULL); } const char* cfNamedCover() { return (_state.cf.namedCover ? _state.cf.namedCover->str : NULL); } void freeCfCover() { //printf("freeCfCover\n"); if (_state.cf.cover) stringFree(_state.cf.cover, BOOL_YES); if (_state.cf.namedCover) stringFree(_state.cf.namedCover, BOOL_YES); _state.cf.cover = NULL; _state.cf.namedCover = NULL; } // cover-audio -> /usr/share/..../cover-audio.png string_t* findNamedCover(const char *name) { char *confDir = dupVarValue(VAR_CFGDIR); string_t* fpath = confDir ? stringNew(confDir) : stringNew(""); if (confDir) free(confDir); stringAppend(fpath, "/Icons/common/"); stringAppend(fpath, name); stringAppend(fpath, ".png"); struct stat statbuf; if (stat(fpath->str, &statbuf) < 0) { // not found char *h = getenv("HOME"); if (h) { stringAssign(fpath, h); stringAppend(fpath, "/.anyRemote/Covers/"); stringAppend(fpath, name); stringAppend(fpath, ".png"); if (stat(fpath->str, &statbuf) < 0) { stringFree(fpath, BOOL_YES); return NULL; } } else { stringFree(fpath, BOOL_YES); return NULL; } } if (S_ISREG(statbuf.st_mode) || S_ISLNK(statbuf.st_mode)) { return fpath; } stringFree(fpath, BOOL_YES); return NULL; } const char* cfBg() { return (_state.cf.visual.bg ? _state.cf.visual.bg->str : NULL); } const char* cfFg() { return (_state.cf.visual.fg ? _state.cf.visual.fg->str : NULL); } const char* cfFont() { return (_state.cf.visual.font ? _state.cf.visual.font->str : NULL); } void setCfVolume(const char * s) { if (s) { if (_state.cf.volume == NULL) { _state.cf.volume = stringNew(s); } else { stringAssign(_state.cf.volume,s); } } else { setCfVolume(""); } } const char* cfVolume() { return (_state.cf.volume ? _state.cf.volume->str : NULL); } boolean_t useVolume() { return _state.cf.useVolume; } boolean_t bottomlineSkin() { return _state.cf.layout7x1; } const char* cfUpButton() { return (_state.cf.upBtn ? _state.cf.upBtn->str : NULL); } const char* cfDownButton() { return (_state.cf.dnBtn ? _state.cf.dnBtn->str : NULL); } boolean_t useKeypad() { return _state.cf.keypad; } boolean_t useJoystick() { return _state.cf.joystick; } //////////////////////////////////////////////////////////////////////////////// // // List form // //////////////////////////////////////////////////////////////////////////////// static void setLfCaption(const char * s) { if (_state.lf.caption == NULL) { _state.lf.caption = stringNew(s); } else { stringAssign(_state.lf.caption,s); } } const char* lfCaption() { return (_state.lf.caption ? _state.lf.caption->str : NULL); } // rely on previous strtok() static void setLfList(boolean_t useIcons) { char *token3 = strtok(NULL,",\n"); while (token3) { if (strlen(token3) > 0) { // avoid empty list item ListItem * item = malloc(sizeof(ListItem)); char * semicolon = index(token3,':'); if (useIcons && semicolon) { *semicolon = '\0'; semicolon++; item->icon = stringNew(token3); item->string = stringNew(semicolon); } else { item->icon = NULL; item->string = stringNew(token3); } _state.lf.items = listSingleAppend(_state.lf.items, item); } token3 = strtok(NULL,",\n"); } } static void setLfIndex(const char * s) { _state.lf.selIdx = (s ? atoi(s) : 1); } void setList(boolean_t useIcons) { logger(L_INF, "[DS]: setList"); boolean_t setupMenu = (_curForm != LI); char *token = strtok(NULL,","); if (!token) { return; } while (isspace(*token)) { ++token; } if (strncmp(token,"add",3) == 0 || strncmp(token,"replace",7) == 0) { mutexLock(M_STATE); _curForm = LI; char *token2 = strtok(NULL,","); // can be NULL if (!token2) { return; } logger(L_INF, "[DS]: setList add/replace"); if (strcmp(token,"replace") == 0) { freeLfList(); } if (strcmp(token2,"SAME") != 0) { setLfCaption(token2); } setLfList(useIcons); // rely on previous strtok() mutexUnlock(M_STATE); } else if (strncmp(token,"close",5) == 0) { char *token2 = strtok(NULL,","); // can be NULL if (token2 && strcmp(token,"clear") == 0) { mutexLock(M_STATE); freeLfList(); mutexUnlock(M_STATE); } _curForm = CF; setupDefMenu(); return; } else if (strncmp(token,"clear",5) == 0) { mutexLock(M_STATE); freeLfList(); mutexUnlock(M_STATE); return; } else if (strncmp(token,"fg",2) == 0) { mutexLock(M_STATE); setFgBg(LI,BOOL_YES); mutexUnlock(M_STATE); return; } else if (strncmp(token,"bg",2) == 0) { mutexLock(M_STATE); setFgBg(LI,BOOL_NO); mutexUnlock(M_STATE); return; } else if (strncmp(token,"font",4) == 0) { mutexLock(M_STATE); setFont(LI); mutexUnlock(M_STATE); return; } else if (strncmp(token,"select",6) == 0) { mutexLock(M_STATE); _curForm = LI; setLfIndex(strtok(NULL,",")); mutexUnlock(M_STATE); } else if (strncmp(token,"show",4) == 0) { _curForm = LI; } else { ERROR2("[DS]: Can to parse Set([icon]list, ...)"); return; } if (setupMenu) { setupDefMenu(); } } int lfIndex() { return _state.lf.selIdx; } const char* lfBg() { return (_state.lf.visual.bg ? _state.lf.visual.bg->str : NULL); } const char* lfFg() { return (_state.lf.visual.fg ? _state.lf.visual.fg->str : NULL); } const char* lfFont() { return (_state.lf.visual.font ? _state.lf.visual.font->str : NULL); } void freeLfList() { if (_state.lf.items) { listSingleFullFree(_state.lf.items, listItemFree); _state.lf.items = NULL; _state.lf.selIdx = 1; } } SingleList* lfList() { return (_state.lf.items ? _state.lf.items : NULL); } SingleList* lfListNth(int n) { return (_state.lf.items ? listSingleNth(_state.lf.items, n) : NULL); } int lfSize() { return (_state.lf.items ? listSingleLength(_state.lf.items) : 0); } //////////////////////////////////////////////////////////////////////////////// // // Text form // //////////////////////////////////////////////////////////////////////////////// static void setTfCaption(const char * s) { if (_state.tf.caption == NULL) { _state.tf.caption = stringNew(s); } else { stringAssign(_state.tf.caption,s); } } const char* tfCaption() { return (_state.tf.caption ? _state.tf.caption->str : NULL); } static void addTfText(const char * s) { //INFO2("[DS]: addTfText %s", s); can be too long if (_state.tf.text == NULL) { _state.tf.text = stringNew(s); } else { stringAppend(_state.tf.text,s); } } static void resetTfText() { if (_state.tf.text) { stringTruncate(_state.tf.text,0); } } const char* tfText() { return (_state.tf.text ? _state.tf.text->str : NULL); } const char* tfBg() { return (_state.tf.visual.bg ? _state.tf.visual.bg->str : NULL); } const char* tfFg() { return (_state.tf.visual.fg ? _state.tf.visual.fg->str : NULL); } const char* tfFont() { return (_state.tf.visual.font ? _state.tf.visual.font->str : NULL); } void setText(boolean_t split) { //logger(L_INF, "[DS]: setText"); boolean_t setupMenu = (_curForm != TX); char *token = strtok(NULL,","); if (!token) { return; } while (isspace(*token)) { ++token; } if (strncmp(token,"add",3) == 0 || strncmp(token,"replace",7) == 0) { mutexLock(M_STATE); _curForm = TX; char *token2 = strtok(NULL,","); // can be NULL if (!token2) { return; } //logger(L_INF, "[DS]: setText add/replace"); if (strncmp(token,"replace",7) == 0) { resetTfText(); } if (strcmp(token2,"SAME") != 0) { setTfCaption(token2); } if (split) { char *token3 = strtok(NULL,"\n"); while (token3) { //INFO2("[DS]: Set(text, ...) %s", token3); addTfText(token3); token3 = strtok(NULL,"\n"); } } else { addTfText(token2 + strlen(token2) + 1); } mutexUnlock(M_STATE); } else if (strcmp(token,"close") == 0) { char *token2 = strtok(NULL,","); // can be NULL if (token2 && strcmp(token,"clear") == 0) { mutexLock(M_STATE); resetTfText(); mutexUnlock(M_STATE); } _curForm = CF; setupDefMenu(); return; } else if (strncmp(token,"clear",5) == 0) { mutexLock(M_STATE); resetTfText(); mutexUnlock(M_STATE); return; } else if (strncmp(token,"fg",2) == 0) { mutexLock(M_STATE); setFgBg(TX,BOOL_YES); mutexUnlock(M_STATE); return; } else if (strncmp(token,"bg",2) == 0) { mutexLock(M_STATE); setFgBg(TX,BOOL_NO); mutexUnlock(M_STATE); return; } else if (strncmp(token,"font",4) == 0) { mutexLock(M_STATE); setFont(TX); mutexUnlock(M_STATE); return; } else if (strncmp(token,"show",4) == 0) { _curForm = TX; } else { ERROR2("[DS]: Can to parse Set(text, ...)"); return; } if (setupMenu) { setupDefMenu(); } } //////////////////////////////////////////////////////////////////////////////// // // Edit form // //////////////////////////////////////////////////////////////////////////////// static void setEfCaption(const char * s) { if (_state.ef.caption == NULL) { _state.ef.caption = stringNew(s); } else { stringAssign(_state.ef.caption,s); } } const char* efCaption() { return (_state.ef.caption ? _state.ef.caption->str : NULL); } static void setEfLabel(const char * s) { if (_state.ef.label == NULL) { _state.ef.label = stringNew(s); } else { stringAssign(_state.ef.label,s); } } const char* efLabel() { return (_state.ef.label ? _state.ef.label->str : NULL); } static void setEfText(const char * s) { if (_state.ef.text == NULL) { _state.ef.text = stringNew(s); } else { stringAssign(_state.ef.text,s); } } const char* efText() { return (_state.ef.text ? _state.ef.text->str : NULL); } void setEfPassword(boolean_t use) { _state.ef.pass = use; } boolean_t efPassword() { return _state.ef.pass; } // rely on previous strtok() void setEditfield() { logger(L_INF, "[DS]: setEditfield"); boolean_t setupMenu = (_curForm != EF); char *token1 = strtok(NULL,","); if (!token1) { return; } char *token2 = strtok(NULL,","); if (!token2) { return; } char *token3 = strtok(NULL,","); // can be NULL mutexLock(M_STATE); setEfCaption(token1); setEfLabel (token2); setEfText (token3 ? token3 : ""); setEfPassword(BOOL_NO); mutexUnlock(M_STATE); setCurForm(EF); if (setupMenu) { setupDefMenu(); } INFO2("[DS]: setEditfield done %d", _curForm); } void setPassField() { logger(L_INF, "[DS]: setPassField"); boolean_t setupMenu = (curForm() != EF); mutexLock(M_STATE); setEfCaption("Enter password"); setEfLabel ("Enter password"); setEfText (""); setEfText (""); setEfPassword(BOOL_YES); mutexUnlock(M_STATE); setCurForm(EF); if (setupMenu) { setupDefMenu(); } } //////////////////////////////////////////////////////////////////////////////// // // Window Form // //////////////////////////////////////////////////////////////////////////////// // // Set(image,window,_image_file_name_) // Set(image,icon,_icon_name_,_image_file_name_) -- not supported // Set(image,show|close|cursor|nocursor|remove_all) -- only 1,2 are supported // void setImage(const char* cmd, const char* file) { INFO2("[DS]: setImage %s %s",cmd,file); boolean_t setupMenu = (curForm() != WM); if (!cmd) { return; } while (isspace(*cmd)) { ++cmd; } if (strncmp(cmd,"window",6) == 0) { logger(L_INF, "[DS]: setImage: window"); setCurForm(WM); if (!file) { return; } while (isspace(*file)) { ++file; } mutexLock(M_STATE); if (_state.wf.window) { stringAssign(_state.wf.window, file); } else { _state.wf.window = stringNew(file); } mutexUnlock(M_STATE); } else if (strncmp(cmd,"show",4) == 0) { setCurForm(WM); } else if (strncmp(cmd,"close",5) == 0) { setCurForm(CF); setupDefMenu(); return; } else { logger(L_INF, "[DS]: setImage: skip command"); return; } if (setupMenu) { setupDefMenu(); } } const char* wfImage() { return (_state.wf.window ? _state.wf.window->str : NULL); } //////////////////////////////////////////////////////////////////////////////// // // Params // //////////////////////////////////////////////////////////////////////////////// void setParams() { char *token = strtok(NULL,","); if (!token) { return; } while (token) { while (isspace(*token)) { ++token; } if (strncmp(token,"icon_padding",12) == 0) { char *token2 = strtok(NULL,","); if (!token2) { return; } while (isspace(*token2)) { ++token2; } _iconPadding = atoi(token2); if (_iconPadding <= 0) { _iconPadding = 0; } INFO2("[DS]: Use icon padding %d", _iconPadding); } else if (strncmp(token,"icon_size",9) == 0) { char *token2 = strtok(NULL,","); if (!token2) { return; } while (isspace(*token2)) { ++token2; } int iconSizeScale = atoi(token2); if (iconSizeScale <= 0) { iconSizeScale = 64; } if (iconSizeScale <= 32) { _iconSize = 32; } else if (iconSizeScale <= 48) { _iconSize = 48; } else if (iconSizeScale <= 64) { _iconSize = 64; } else { _iconSize = 128; } INFO2("[DS]: Use icon size %d", _iconSize); } else { ERROR2("[DS]: Skip Set(parameter, ...) %s", token); } token = strtok(NULL,","); } } int iconPadding() { return _iconPadding; } int iconSize() { return _iconSize; } static void updateStateSetFile(dMessage* dm) { DEBUG2("[DS]: updateStateSetFile %s", dm->file); if (strncmp(dm->value,"Set(cover,noname",16) == 0) { setCfCover(dm->file); xmlSetLayoutOk(BOOL_NO); // Need to regenerate } else if (strncmp(dm->value,"Set(image",9) == 0) { setImage((dm->value + 10), dm->file); // 10 = 9 + "," } else { ERROR2("[DS]: Unknown command file: %s", (const char*) dm->value); } } static void updateStateSet(dMessage* dm) { const char* value = dm->value; DEBUG2("[DS]: updateState %d", (value ? (int) strlen(value) : -1)); char * cmd = strdup(value); stripCommandEnding(cmd); if (strlen(cmd) < MAXMAXLEN) { INFO2("[DS]: parse %d %s", curForm(), cmd); } else { INFO2("[DS]: parse %d ... command too long ...", curForm()); } char* token = strtok(cmd,","); while (isspace(*token)) { ++token; } if (strncmp(token,"Set(status",10) == 0) { setCfStatus(cmd+strlen("Set(status,")); } else if (strncmp(token,"Set(title",9) == 0) { setCfTitle(cmd+strlen("Set(title,")); } else if (strncmp(token,"Set(icons",9) == 0) { setIcons(); xmlSetLayoutOk(BOOL_NO); // Need to regenerate } else if (strncmp(token,"Set(hints",9) == 0) { setHints(); xmlSetLayoutOk(BOOL_NO); // Need to regenerate } else if (strncmp(token,"Set(font",8) == 0) { mutexLock(M_STATE); setFont(CF); mutexUnlock(M_STATE); } else if (strncmp(token,"Set(fg",6) == 0) { mutexLock(M_STATE); setFgBg(CF,BOOL_YES); mutexUnlock(M_STATE); } else if (strncmp(token,"Set(bg",6) == 0) { mutexLock(M_STATE); setFgBg(CF,BOOL_NO); mutexUnlock(M_STATE); } else if (strncmp(token,"Set(volume",10) == 0) { char* sz = strtok(NULL,","); mutexLock(M_STATE); setCfVolume(sz); mutexUnlock(M_STATE); } else if (strncmp(token,"Set(layout",10) == 0 || strncmp(token,"Set(skin",8) == 0) { setSkin(); xmlSetLayoutOk(BOOL_NO); // Need to regenerate } else if (strncmp(token,"Set(cover",9) == 0) { char* subcmd = strtok(NULL,","); if (strncmp(subcmd,"by_name",7) == 0) { setCfNamedCover(subcmd+8); xmlSetLayoutOk(BOOL_NO); // Need to regenerate } else if (strncmp(subcmd,"clear",5) == 0) { setCfNamedCover(NULL); xmlSetLayoutOk(BOOL_NO); // Need to regenerate } else { ERROR2("[DS]: Improperly formed command Set(cover,...)"); } } else if (strncmp(token,"Set(list",8) == 0) { setList(BOOL_NO); } else if (strncmp(token,"Set(iconlist",12) == 0) { setList(BOOL_YES); } else if (strncmp(token,"Set(text",8) == 0) { setText(BOOL_NO); } else if (strncmp(token,"Set(menu",8) == 0) { setMenu(); } else if (strncmp(token,"Set(editfield",13) == 0) { setEditfield(); } else if (strncmp(token,"Set(image",9) == 0) { ERROR2("[DS]: Improperly formed command Set(image,...)"); } else if (strncmp(token,"Set(popup",9) == 0) { // ignore } else if (strncmp(token,"Set(disconnect",14) == 0) { // ignore } else if (strncmp(token,"Set(fullscreen",16) == 0) { // ignore } else if (strncmp(token,"Set(vibrate",11) == 0) { // ignore } else if (strncmp(token,"Set(parameter",13) == 0) { setParams(); } else if (strncmp(token,"End",3) == 0) { // ignore } else { ERROR2("[DS]: Unknown command %s", token); } free(cmd); } void updateState(dMessage* dm) { if (dm->type == DM_SET) { updateStateSet(dm); } if (dm->type == DM_SETFILE) { updateStateSetFile(dm); } } anyremote-6.7.1/src/xemulate.h0000644000232200023220000000201612664332726016674 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _XEMULATE_H_ #define _XEMULATE_H_ #include "parse.h" int emulateCommands(int subtype, const char *descr, const char* cmdString, cmdParams* params); void freeDisplay(void); #endif anyremote-6.7.1/src/cmds.h0000644000232200023220000000302112664332726015773 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _CMDS_H #define _CMDS_H #include "parse.h" #define PARAM_START "$(" #define PARAM_CALLID "CallId)" #define PARAM_MODE "Mode)" #define PARAM_PARAM "Param)" #define PARAM_INDEX "Index)" #define PARAM_CFGDIR "CfgDir)" #define PARAM_HOME "Home)" #define PARAM_BTADDR "BtAddr)" #define SEND_STRING "string" #define SEND_BYTES "bytes" void setToFile (void); int handleCmdByKey (int peer, type_key* k, cmdParams *p); int handleCmdByKeyEx(int peer, type_key* k, cmdParams* p, int sendToMain); int execDynamically (char *command); void flushOldConf (void); int handleHook (int hook); char* executeCommandPipe(const char* exec, size_t* sz); #endif anyremote-6.7.1/src/xemulate.c0000644000232200023220000003237112673224605016672 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // //#define USE_XTEST #include #include #include #include #ifdef USE_XTEST #include #include #include #include #include #endif // some of X11/XF86keysym.h does not contains this key #ifndef XF86XK_AudioForward #define XF86XK_AudioForward 0x1008FF97 #endif #ifndef XF86XK_MonBrightnessUp #define XF86XK_MonBrightnessUp 0x1008FF02 #endif #ifndef XF86XK_MonBrightnessDown #define XF86XK_MonBrightnessDown 0x1008FF03 #endif #include "common.h" #include "utils.h" extern char tmp[MAXMAXLEN]; #ifdef USE_XTEST static Display* disp = NULL; #endif static int modifierCtrl = 0; static int modifierAlt = 0; void freeDisplay() { #ifdef USE_XTEST if (disp) { XCloseDisplay(disp); disp = NULL; } #endif } #ifdef USE_XTEST static void fakeKeyProcess(KeyCode fakeKey, int shift) { DEBUG2("fakeKeyProcess Key=%d Shift=%d Ctrl=%d Alt=%d", fakeKey, shift, modifierCtrl, modifierAlt); KeyCode shiftKey = XKeysymToKeycode(disp,XK_Shift_L); KeyCode altKey = XKeysymToKeycode(disp,XK_Alt_L); KeyCode ctrlKey = XKeysymToKeycode(disp,XK_Control_L); if (shift) { XTestFakeKeyEvent(disp, shiftKey, True, CurrentTime); } if (modifierCtrl) { XTestFakeKeyEvent(disp, ctrlKey, True, CurrentTime); } if (modifierAlt) { XTestFakeKeyEvent(disp, altKey, True, CurrentTime); } XTestFakeKeyEvent(disp, fakeKey, True, CurrentTime); XTestFakeKeyEvent(disp, fakeKey, False, CurrentTime); if (modifierAlt) { XTestFakeKeyEvent(disp, altKey, False, CurrentTime); } if (modifierCtrl) { XTestFakeKeyEvent(disp, ctrlKey, False, CurrentTime); } if (shift) { XTestFakeKeyEvent(disp, shiftKey, False, CurrentTime); } } static void mouseClick(int button) { XTestFakeButtonEvent(disp, button, True, CurrentTime); XTestFakeButtonEvent(disp, button, False, CurrentTime); } static void mouseDoubleClick() { mouseClick(1); usleep(1000); mouseClick(1); } static void setModifier(const char *btn, int on) { if (strcmp("Ctrl", btn) == 0) { modifierCtrl = on; } else if (strcmp("Alt", btn) == 0) { modifierAlt = on; } else { DEBUG2("emulateCommands: improper modifier %s", btn); } } static struct { const char* ksStr; int shift; KeySym ks; } ksTable[] = { {"!", 1, XK_exclam}, {"\"", 0, XK_quotedbl}, {"#", 1, XK_numbersign}, {"$", 1, XK_dollar}, {"%", 1, XK_percent}, {"&", 1, XK_ampersand}, {"`", 1, XK_apostrophe}, {"*", 1, XK_asterisk}, {"+", 1, XK_plus}, {"-", 0, XK_minus}, {".", 0, XK_period}, {"/", 0, XK_slash} , {":", 1, XK_colon}, {"<", 1, XK_less}, {"=", 0, XK_equal}, {">", 1, XK_greater}, {"?", 1, XK_question}, {"[", 0, XK_bracketleft}, {"\\", 0, XK_backslash}, {"]", 0, XK_bracketright}, {"^", 1, XK_asciicircum}, {"_", 1, XK_underscore}, {"@", 1, XK_at}, {"parenleft", 1, XK_parenleft}, {"parenright", 1, XK_parenright}, {"comma", 0, XK_comma}, {"semicolon", 0, XK_semicolon}, {"space", 0, XK_space}, {"Back", 0, XF86XK_Back}, {"Close", 0, XF86XK_Close}, {"Eject", 0, XF86XK_Eject}, {"Forward", 0, XF86XK_Forward}, {"AudioForward", 0, XF86XK_AudioForward}, {"AudioLowerVolume", 0, XF86XK_AudioLowerVolume}, {"AudioMute", 0, XF86XK_AudioMute}, {"AudioNext", 0, XF86XK_AudioNext}, {"AudioPause", 0, XF86XK_AudioPause}, {"AudioPlay", 0, XF86XK_AudioPlay}, {"AudioPrev", 0, XF86XK_AudioPrev}, {"AudioRaiseVolume", 0, XF86XK_AudioRaiseVolume}, {"AudioRewind", 0, XF86XK_AudioRewind}, {"MonBrightnessDown",0, XF86XK_MonBrightnessDown}, {"MonBrightnessUp", 0, XF86XK_MonBrightnessUp}, {"PowerOff", 0, XF86XK_PowerOff}, {"WakeUp", 0, XF86XK_WakeUp}, { NULL, 0, NoSymbol} }; static KeyCode keysymStr2keycode(Display* disp, const char* keysymStr, int* shift) { (*shift) = 0; KeySym ks = NoSymbol; int i=0; while (ksTable[i].ksStr) { if(strcmp(ksTable[i].ksStr,keysymStr) == 0) { ks = ksTable[i].ks; (*shift) = ksTable[i].shift; DEBUG2("match keysymbol %s %ld %d", keysymStr,ks,(*shift)); break; } i++; } if (ks == NoSymbol) { ks = XStringToKeysym(keysymStr); if (ks != NoSymbol) { // ok, got it int i=0; while (ksTable[i].ksStr) { // now detect shift if(ksTable[i].ks == ks) { (*shift) = ksTable[i].shift; break; } i++; } } } DEBUG2("matched %s %ld %d", keysymStr,ks,(*shift)); if (ks == NoSymbol) { DEBUG2("couldn't map keysymbol %s", keysymStr); ks = XStringToKeysym("space"); (*shift) = 0; } KeyCode kk = XKeysymToKeycode(disp, ks); if (kk == 0) { kk = XKeysymToKeycode(disp,XStringToKeysym("space")); } // check shifted //KeySym ks2 = XKeycodeToKeysym(disp, kk, 0); // deprecated int keysyms_per_keycode_return; KeySym *ks2 = XGetKeyboardMapping(disp, kk, 1, &keysyms_per_keycode_return); if (*ks2 != NoSymbol) { if (*ks2 != ks) { // possibly shifted KeySym lower_return; KeySym upper_return; XConvertCase(*ks2, &lower_return, &upper_return); if (upper_return == ks) { (*shift) = 1; } } } XFree(ks2); return kk; } #endif // Input can be something like: // key,a,key,by_value,40,keyup,b,keydown,c,mouse,1,mouseup,1,mousedown,1,mousemove,100,100,mousermove,10,10,mousedblclick,sleep,1000 // int emulateCommands(int subtype, const char *descr, const char* cmdString, cmdParams* params) { logger(L_INF, "Command: Emulate"); #ifdef USE_XTEST if (descr == NULL) { logger(L_ERR, "[EX]: emulateCommands(): no command"); return EXIT_NOK; } if (disp == NULL) { disp = XOpenDisplay(NULL); } if (disp == NULL) { return EXIT_NOK; } char * cmd = strdup(descr); KeyCode fakeKey; int shift = 0; char* token = strtok(cmd,","); while (token) { if (strcmp(token,"keyup") == 0) { char * key = strtok(NULL,","); if (key) { if (strcmp(key,"by_value") == 0) { char * keyval = strtok(NULL,","); if (keyval) { fakeKey = XKeysymToKeycode(disp,strtol(keyval, (char**) NULL, 0)); if (fakeKey == 0) { logger(L_DBG, "emulateCommands: improper keyup value"); continue; } } else { logger(L_DBG, "emulateCommands: keyup value absent"); continue; } } else { fakeKey = keysymStr2keycode(disp,key,&shift); } XTestFakeKeyEvent(disp, fakeKey, False, CurrentTime); } else { logger(L_DBG, "emulateCommands: improper keyup"); } } else if (strcmp(token,"keydown") == 0) { char * key = strtok(NULL,","); if (key) { if (strcmp(key,"by_value") == 0) { char * keyval = strtok(NULL,","); if (keyval) { fakeKey = XKeysymToKeycode(disp,strtol(keyval, (char**) NULL, 0)); if (fakeKey == 0) { logger(L_DBG, "emulateCommands: improper keydown value"); continue; } } else { logger(L_DBG, "emulateCommands: keydown value absent"); continue; } } else { fakeKey = keysymStr2keycode(disp,key,&shift); } XTestFakeKeyEvent(disp, fakeKey, True, CurrentTime ); } else { logger(L_DBG, "emulateCommands: improper keydown"); } } else if (strcmp(token,"key") == 0) { char * key = strtok(NULL,","); //DEBUG2("emulateCommands: PARSE %s %c >%s<", token, *(token+4), key ? key : "NULL"); if (key) { if (strcmp(key,"by_value") == 0) { char * keyval = strtok(NULL,","); if (keyval) { //printf("Emulate key %s\n",keyval); DEBUG2("emulateCommands: key value is %s", keyval); fakeKey = XKeysymToKeycode(disp,strtol(keyval, (char**) NULL, 0)); if (fakeKey == 0) { logger(L_DBG, "emulateCommands: improper key value"); continue; } } else { logger(L_DBG, "emulateCommands: key value absent"); continue; } } else { DEBUG2("emulateCommands: key is %s", key); fakeKey = keysymStr2keycode(disp,key,&shift); } fakeKeyProcess(fakeKey, shift); } else { logger(L_DBG, "emulateCommands: improper key"); } } else if (strcmp(token,"modifier") == 0) { char * on = strtok(NULL,","); if (on) { int v = 0; if (strcmp("1", on) == 0) { v = 1; } char * mval = strtok(NULL,","); if (mval) { setModifier(mval, v); } else { logger(L_DBG, "emulateCommands: modifier absent"); } } else { logger(L_DBG, "emulateCommands: improper modifier value"); } } else if (strcmp(token,"mousemove") == 0) { char * x = strtok(NULL,","); char * y = (x ? strtok(NULL,",") : NULL); if (x && y) { XTestFakeMotionEvent(disp, -1, atoi(x), atoi(y), CurrentTime ); } else { logger(L_DBG, "emulateCommands: improper mousemove"); } } else if (strcmp(token,"mousermove") == 0) { char * x = strtok(NULL,","); char * y = (x ? strtok(NULL,",") : NULL); if (x && y) { XTestFakeRelativeMotionEvent(disp,atoi(x), atoi(y), CurrentTime ); } else { logger(L_DBG, "emulateCommands: improper mousermove"); } } else if (strcmp(token,"mousedblclick") == 0) { mouseDoubleClick(); } else if (strcmp(token,"mouseup") == 0) { char * x = strtok(NULL,","); if (x) { XTestFakeButtonEvent(disp, atoi(x), False, CurrentTime); } else { logger(L_DBG, "emulateCommands: improper mouseup"); } } else if (strcmp(token,"mousedown") == 0) { char * x = strtok(NULL,","); if (x) { XTestFakeButtonEvent(disp, atoi(x), True, CurrentTime); } else { logger(L_DBG, "emulateCommands: improper mousedown"); } } else if (strcmp(token,"mouse") == 0) { char * x = strtok(NULL,","); if (x) { mouseClick(atoi(x)); } else { logger(L_DBG, "emulateCommands: improper mouse"); } } else if (strcmp(token,"sleep") == 0) { char * x = strtok(NULL,","); if (x) { usleep(atoi(x)); } else { logger(L_DBG, "emulateCommands: improper sleep"); } } else { logger(L_DBG, "emulateCommands: unknown operation"); } token = strtok(NULL,","); XFlush(disp); } XFlush(disp); free(cmd); #endif return EXIT_OK; } anyremote-6.7.1/src/timer.h0000644000232200023220000000250612664332726016174 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // Timers handling // #ifndef _TIMER_H_ #define _TIMER_H_ 1 #include "parse.h" #include "hash.h" typedef struct TC { char *macro; int timeout; int max_times; int ticks; int times; int status; } timerCmd; void verifyTimerCfg (int ticksInSec); void freeTimers (HashTable* tms); int timerCommand (int subtype, const char *id, const char* op, cmdParams* p); HashTable* getTimers (void); void forgetTimers (void); #endif anyremote-6.7.1/src/ar_dbus.c0000644000232200023220000005036612664332726016475 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #ifdef USE_DBUS #include #include #endif #include "ar_dbus.h" #include "cmds.h" #include "common.h" #include "utils.h" #include "var.h" extern int macroCmdCallback(char *descr, char *exec, cmdParams* params); // from cmds.c extern char tmp[MAXMAXLEN]; typedef struct Dp { char *id; char *service; char *path; char *interface; #ifdef USE_DBUS DBusGProxy *proxy; #endif struct Dp *next; } type_dp; typedef struct Cb { char *id; struct Cb *next; } type_cb; int getParamType(char* tc) { if (!tc) { return TYPE_ERROR; } if (strcmp(tc,"int")==0) { return TYPE_INT; } if (strcmp(tc,"uint")==0) { return TYPE_UINT; } if (strcmp(tc,"double")==0) { return TYPE_DOUBLE; } if (strcmp(tc,"bool")==0) { return TYPE_BOOL; } if (strcmp(tc,"string")==0) { return TYPE_STRING; } return TYPE_ERROR; } #ifdef USE_DBUS DBusGConnection *connection = NULL; type_dp *proxies = NULL; type_cb *callbacks = NULL; void intCb (DBusGProxy *proxy, int data, gpointer user_data) { //printf("intCb %s\n", (char*) user_data);fflush(stdout); //printf("data %d\n",data); cmdParams p; strcpy(p.index,"-1"); sprintf(p.value,"%d",data); macroCmdCallback((char*) user_data, NULL, &p); } void uintCb (DBusGProxy *proxy, uint data, gpointer user_data) { //printf("uintCb %s\n", (char*) user_data);fflush(stdout); //printf("data %u\n",data); cmdParams p; strcpy(p.index,"-1"); sprintf(p.value,"%u",data); macroCmdCallback((char*) user_data, NULL, &p); } void doubleCb (DBusGProxy *proxy, double data, gpointer user_data) { //printf("doubleCb %s\n", (char*) user_data);fflush(stdout); //printf("data %f\n",data); cmdParams p; strcpy(p.index,"-1"); sprintf(p.value,"%f",data); macroCmdCallback((char*) user_data, NULL, &p); } void boolCb (DBusGProxy *proxy, gboolean data, gpointer user_data) { //printf("boolCb %s\n", (char*) user_data);fflush(stdout); //printf("data %s\n",(data?"true":"false")); cmdParams p; strcpy(p.index,"-1"); sprintf(p.value,"%s",(data ? "true" : "false")); macroCmdCallback((char*) user_data, NULL, &p); } void stringCb (DBusGProxy *proxy, const char *message, gpointer user_data) { //printf("stringCb %s\n", (char*) user_data);fflush(stdout); //printf("msg %s\n",message); cmdParams p; strcpy(p.index,"-1"); strncpy(p.value,message,MAXARGLEN); macroCmdCallback((char*) user_data, NULL, &p); } static type_dp* findProxy(char *id, type_dp** prev) { if (id == NULL) { return NULL; } type_dp* ptr = proxies; while (ptr != NULL && strncmp(ptr->id,id,MTEXTLEN) != 0) { if (prev != NULL) { *prev = ptr; } ptr = ptr->next; } return ptr; } static void freeProxy(type_dp *proxy) { g_object_unref(proxy->proxy); free(proxy->id); free(proxy->service); free(proxy->path); free(proxy->interface); free(proxy); } static void freeProxies() { logger(L_DBG, "freeProxies()"); type_dp *tm; while (proxies != NULL) { tm = proxies; proxies = proxies->next; freeProxy(tm); } } static void freeProxyByName(char *id) { type_dp *prev = NULL; type_dp *prox = findProxy(id, (type_dp**) &prev); if (prox != NULL) { if (prox == proxies) { // remove in head proxies = prox->next; } else { if (prev != NULL) { prev->next = prox->next; } else { logger(L_ERR, "[EX]: freeProxyByName(): Previous item absent for non-first element"); return; } } freeProxy(prox); } else { logger(L_ERR, "[EX]: freeProxyByName(): no such dbus connection"); } } static void addProxy(char *id,char *s, char *p, char *i, DBusGProxy *proxy) { logger(L_DBG, "addProxy()"); if (id == NULL || proxy == NULL) { return; } if (findProxy(id,NULL) != NULL) { logger(L_DBG, "addProxy(): proxy already exists"); return; } type_dp *tm = (type_dp *) calloc(sizeof(type_dp),1); tm->id = strdup(id); tm->service = strdup(s); tm->path = strdup(p); tm->interface = strdup(i); tm->proxy = proxy; if (proxy == NULL) { logger(L_DBG, "addProxy(): proxy is NULL"); return; } // Insert in head if (proxies == NULL) { // Insert first tm->next = NULL; } else { tm->next = proxies; } proxies = tm; } static char* addCb(char *id) { logger(L_DBG, "addCb()"); if (id == NULL) { return NULL; } type_cb *tmp = (type_cb *) calloc(sizeof(type_cb),1); tmp->id = strdup(id); // Insert in head if (callbacks == NULL) { // Insert first tmp->next = NULL; } else { tmp->next = callbacks; } callbacks = tmp; return tmp->id; } static void freeCbs() { logger(L_DBG, "freeCbs()"); type_cb *tmp; while (callbacks != NULL) { tmp = callbacks; callbacks = callbacks->next; free(tmp->id); } } int dbusInit() { //logger(L_DBG, "dbusInit"); GError *error = NULL; #if (GLIB_MAJOR_VERSION <= 2 && GLIB_MINOR_VERSION < 36) g_type_init (); #endif dbus_threads_init_default(); connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); if (connection == NULL) { ERROR2("[EX]: Failed to open connection to bus: %s", error->message) g_error_free (error); return EXIT_NOK; } return EXIT_OK; } void dbusFinish() { freeProxies(); freeCbs(); dbus_g_connection_unref(connection); } // // Input can be something like: // connect,_id_,_service_,_path_,_interface_ // set,_id_,_method_,[int|uint|double|bool|string,_value_] // get,_id_,_method_,int|double|bool|string,_variable_name_ // signal,_id_,_method_,int|double|bool|string,_callback_id_ // int dbusCommand(int subtype, const char *descr, const char* cmdString, cmdParams* params) { logger(L_INF, "Command: Dbus"); GError *error = NULL; gboolean retCode = TRUE; if (connection == NULL) { logger(L_ERR, "[EX]: dbusCommand(): no connection"); return EXIT_NOK; } if (descr == NULL) { logger(L_ERR, "[EX]: dbusCommand(): no command"); return EXIT_NOK; } DEBUG2("[EX]: dbusCommand(): %s", descr) char * cmd = strdup(descr); char* token = strtok(cmd,","); while (token) { char * id = strtok(NULL,","); if (strcmp(token,"connect") == 0) { logger(L_DBG, "[EX]: dbusCommand(): connect"); char * serv = strtok(NULL,","); char * path = strtok(NULL,","); char * intf = strtok(NULL,","); if (id != NULL && serv != NULL && path != NULL && intf != NULL) { //DEBUG2("[EX]: dbusCommand(): dbus_g_proxy_new_for_name %s %s %s", serv,path,intf) DBusGProxy *proxy = dbus_g_proxy_new_for_name (connection, serv, // ex.: "org.freedesktop.DBus", path, // ex.: "/org/freedesktop/DBus", intf); // ex.: "org.freedesktop.DBus"); addProxy(id,serv,path,intf,proxy); // proxy can be NULL here if (proxy == NULL) { logger(L_DBG, "[EX]: dbusCommand(): get NULL proxy"); } } else { logger(L_ERR, "[EX]: dbusCommand(): improper input id-service-path-interface"); } } else if (strcmp(token,"close") == 0) { logger(L_DBG, "[EX]: dbusCommand(): close"); freeProxyByName(id); } else if (strcmp(token,"set") == 0) { logger(L_DBG, "[EX]: dbusCommand(): set"); type_dp *prox = findProxy(id,NULL); if (prox == NULL) { ERROR2("[EX]: proxy %s not registered",id); return EXIT_NOK; } if (prox->proxy == NULL) { logger(L_DBG, "[EX]: dbusCommand(): recreate proxy"); DBusGProxy *proxy = dbus_g_proxy_new_for_name (connection, prox->service,prox->path,prox->interface); if (proxy == NULL) { logger(L_DBG, "[EX]: dbusCommand(): get NULL proxy"); } prox->proxy = proxy; } if (prox->proxy != NULL) { char * method = strtok(NULL,","); char * type = strtok(NULL,","); char * value = strtok(NULL,","); if (method != NULL && type != NULL && value != NULL) { int sendType = getParamType(type); DEBUG2("[EX]: dbusCommand(): method %s with 1 param of type %s",method,type); if (sendType == TYPE_INT) { retCode = dbus_g_proxy_call (prox->proxy, method, &error, G_TYPE_INT, atoi(value), G_TYPE_INVALID, G_TYPE_INVALID); } else if (sendType == TYPE_UINT) { retCode = dbus_g_proxy_call (prox->proxy, method, &error, G_TYPE_UINT, atoi(value), G_TYPE_INVALID, G_TYPE_INVALID); } else if (sendType == TYPE_DOUBLE) { retCode = dbus_g_proxy_call (prox->proxy, method, &error, G_TYPE_DOUBLE, (double) atof(value), G_TYPE_INVALID, G_TYPE_INVALID); } else if (sendType == TYPE_BOOL) { gboolean sb = (strcmp(value,"true") == 0); retCode = dbus_g_proxy_call (prox->proxy, method, &error, G_TYPE_BOOLEAN, sb, G_TYPE_INVALID, G_TYPE_INVALID); } else if (sendType == TYPE_STRING) { retCode = dbus_g_proxy_call (prox->proxy, method, &error, G_TYPE_STRING, value, G_TYPE_INVALID, G_TYPE_INVALID); } else { ERROR2("[EX]: dbusCommand(): unsupported param type %s",type); } if (!retCode) { ERROR2("[EX]: dbusCommand(): failed in d-bus proxy call %s",method); g_object_unref(prox->proxy); prox->proxy = NULL; } } else { DEBUG2("[EX]: dbusCommand(): method %s with no params",method); retCode = dbus_g_proxy_call (prox->proxy, method, &error, G_TYPE_INVALID, G_TYPE_INVALID); } } } else if (strcmp(token,"get") == 0) { logger(L_DBG, "[EX]: dbusCommand(): get"); type_dp *prox = findProxy(id,NULL); if (prox == NULL) { ERROR2("[EX]: proxy %s not registered",id); return EXIT_NOK; } char retVals[512]; if (prox->proxy == NULL) { logger(L_DBG, "[EX]: dbusCommand(): recreate proxy"); DBusGProxy *proxy = dbus_g_proxy_new_for_name (connection, prox->service,prox->path,prox->interface); if (proxy == NULL) { logger(L_DBG, "[EX]: dbusCommand(): get NULL proxy"); } prox->proxy = proxy; } if (prox->proxy != NULL) { char * method = strtok(NULL,","); char * type = strtok(NULL,","); char * var = strtok(NULL,","); if (method != NULL && type != NULL && var != NULL) { int retType = getParamType(type); int ret; DEBUG2("[EX]: dbusCommand(): method %s with 1 param of type %s",method,type); if (retType == TYPE_INT) { gint ri; retCode = dbus_g_proxy_call (prox->proxy, method, &error, G_TYPE_INVALID, G_TYPE_INT, &ri, G_TYPE_INVALID); sprintf(retVals,"%d",ri); DEBUG2("[EX]: dbusCommand(): got int %d",ri); ret = setVar(var,retVals,strlen(retVals)); if (ret != EXIT_OK) { logger(L_DBG,"[EX]: dbusCommand(): Fails in setVar() int"); } } else if (retType == TYPE_UINT) { guint ri; retCode = dbus_g_proxy_call (prox->proxy, method, &error, G_TYPE_INVALID, G_TYPE_UINT, &ri, G_TYPE_INVALID); sprintf(retVals,"%u",ri); DEBUG2("[EX]: dbusCommand(): got uint %u",ri); ret = setVar(var,retVals,strlen(retVals)); if (ret != EXIT_OK) { logger(L_DBG,"[EX]: dbusCommand(): Fails in setVar() uint"); } } else if (retType == TYPE_DOUBLE) { gdouble rd; retCode = dbus_g_proxy_call (prox->proxy, method, &error, G_TYPE_INVALID, G_TYPE_DOUBLE, &rd, G_TYPE_INVALID); sprintf(retVals,"%f",rd); DEBUG2("[EX]: dbusCommand(): got double %f",rd); ret = setVar(var,retVals,strlen(retVals)); if (ret != EXIT_OK) { logger(L_DBG,"[EX]: dbusCommand(): Fails in setVar() double"); } } else if (retType == TYPE_BOOL) { gboolean rb; retCode = dbus_g_proxy_call (prox->proxy, method, &error, G_TYPE_INVALID, G_TYPE_BOOLEAN, &rb, G_TYPE_INVALID); sprintf(retVals,"%s", (rb?"true":"false")); ret = setVar(var,retVals,strlen(retVals)); if (ret != EXIT_OK) { logger(L_DBG,"[EX]: dbusCommand(): Fails in setVar() boolean"); } } else if (retType == TYPE_STRING) { char *rc = NULL; retCode = dbus_g_proxy_call (prox->proxy, method, &error, G_TYPE_INVALID, G_TYPE_STRING, rc, G_TYPE_INVALID); memset(retVals,0,512); if (rc != NULL) { strncpy(retVals,rc,511); } ret = setVar(var,retVals,strlen(retVals)); if (ret != EXIT_OK) { logger(L_DBG,"[EX]: dbusCommand(): Fails in setVar() string"); } g_free(rc); } else { ERROR2("[EX]: dbusCommand(): unsupported param type %s",type); } if (!retCode) { ERROR2("[EX]: dbusCommand(): failed in d-bus proxy call %s",method); g_object_unref(prox->proxy); prox->proxy = NULL; } } else { logger(L_DBG, "[EX]: dbusCommand(): set with no output params"); } } } else if (strcmp(token,"signal") == 0) { logger(L_DBG, "[EX]: dbusCommand(): signal"); type_dp *prox = findProxy(id,NULL); if (prox == NULL) { ERROR2("[EX]: proxy %s not registered",id); return EXIT_NOK; } if (prox->proxy == NULL) { logger(L_DBG, "[EX]: dbusCommand(): recreate proxy"); DBusGProxy *proxy = dbus_g_proxy_new_for_name (connection, prox->service,prox->path,prox->interface); if (proxy == NULL) { logger(L_DBG, "[EX]: dbusCommand(): get NULL proxy"); } prox->proxy = proxy; } if (prox->proxy != NULL) { char * signal = strtok(NULL,","); char * type = strtok(NULL,","); char * cback = strtok(NULL,","); if (type != NULL && cback != NULL) { int stype = getParamType(type); DEBUG2("[EX]: dbusCommand(): signal %s with 1 param of type %s",signal,type); char* cb = addCb(cback); if (stype == TYPE_INT) { dbus_g_proxy_add_signal(prox->proxy, signal ,G_TYPE_INT, G_TYPE_INVALID); dbus_g_proxy_connect_signal(prox->proxy, signal, G_CALLBACK(intCb), cb, NULL); } else if (stype == TYPE_UINT) { dbus_g_proxy_add_signal(prox->proxy, signal ,G_TYPE_UINT, G_TYPE_INVALID); dbus_g_proxy_connect_signal(prox->proxy, signal, G_CALLBACK(uintCb), cb, NULL); } else if (stype == TYPE_DOUBLE) { dbus_g_proxy_add_signal(prox->proxy, signal ,G_TYPE_DOUBLE, G_TYPE_INVALID); dbus_g_proxy_connect_signal(prox->proxy, signal, G_CALLBACK(doubleCb), cb, NULL); } else if (stype == TYPE_BOOL) { dbus_g_proxy_add_signal(prox->proxy, signal, G_TYPE_BOOLEAN, G_TYPE_INVALID); dbus_g_proxy_connect_signal(prox->proxy, signal, G_CALLBACK(boolCb), cb, NULL); } else if (stype == TYPE_STRING) { dbus_g_proxy_add_signal(prox->proxy, signal ,G_TYPE_STRING, G_TYPE_INVALID); dbus_g_proxy_connect_signal(prox->proxy, signal, G_CALLBACK(stringCb), cb, NULL); } else { ERROR2("[EX]: dbusCommand(): unsupported param type %s",type); } } else { logger(L_DBG, "[EX]: dbusCommand(): set with no output params"); } } } else { ERROR2("[EX]: dbusCommand(): improper input - command is %s",token); free(cmd); return EXIT_NOK; } token = strtok(NULL,","); } free(cmd); return EXIT_OK; } #else // Just simple stubs to make compilation possible int dbusInit() { return EXIT_NOK; } void dbusFinish() { } int dbusCommand(int subtype, const char *descr, const char* cmdString, cmdParams* params) { return EXIT_OK; } #endif anyremote-6.7.1/src/mode.h0000644000232200023220000000305212664332726015775 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _MODE_H_ #define _MODE_H_ #include "str.h" typedef struct Mt { string_t *name; string_t *parent; type_key* keys; struct Mt *next; } mode; void printModes (void); char* getModeName (void); // return name of current mode mode* getInternalMode (void); mode* getDefaultMode (void); mode* getCurrentMode (void); mode* addMode (const char *name, const char *parent); mode* findMode (const char *name); void switchMode (const char *modeName); void setCurrentMode (mode* m); void forgetModes (void); // transfer ownership of modes mode* getModes (void); void freeModes (mode* pmodes); // if parameter is NULL, delete all modes stuff #endif anyremote-6.7.1/src/thread.h0000644000232200023220000000264212664332726016324 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // Message queue related wrappers // #ifndef _THREAD_H_ #define _THREAD_H_ 1 #ifdef USE_GLIB #include "glib.h" typedef GThreadFunc ThreadFunction; #else typedef void* (*ThreadFunction) (void* data); #endif enum ThreadID { T_DISP = 0, T_EXEC, T_AVAHI, T_MAX }; enum ThreadParam { JOINABLE = 0, DETACHED, }; void threadInit (void); int threadNew (int id, ThreadFunction func, void* data, int joinable); void threadJoin (int id); void threadExit (int id); // terminates the current thread, call only from right place !! int threadExists(int id); #endif anyremote-6.7.1/src/dispatcher.c0000644000232200023220000004022113126472435017165 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __FreeBSD__ #include #endif #ifndef __FreeBSD__ #include #endif #include "lib_wrapper.h" #include "atsend.h" #include "btio.h" #include "conf.h" #include "common.h" #include "utils.h" #include "executor.h" #include "dispatcher.h" #include "security.h" #include "list.h" #include "alarm.h" #include "pr_frontend.h" #include "pr_btspp.h" #include "pr_socket.h" #ifdef USE_L2CAP #include "pr_l2cap.h" #endif #include "pr_web.h" #include "pr_stdin.h" #include "queue.h" #include "peer.h" #define TMPDISCONN_TIME 60 extern CONF conf; extern char tmp[MAXMAXLEN]; extern char callerId[MAXLEN]; boolean_t dispIsJoinable = BOOL_YES; int gotExitSignal = 0; static int _callTimer = 0; static int _initialized = 0; // Then port will be closed from a forked child use 0 void closePort(int final) { if (final) { logger(L_DBG,"[DS]: closePort"); } if (getFrontEnd() > 0) { if (final) { writeToFrontEnd("Exiting"); } } closePeers(final); } static void handleActiveCall(void) { if (_callTimer >= 20) { // about a second // Will set global callerId [MAXLEN]; boolean_t stillActive = checkActiveCall(); if (!stillActive) { strcpy(callerId, "NO CALLER ID"); eMessage* em = (eMessage*) malloc(sizeof(eMessage)); em->peer = PEER_ANY; em->type = EM_KEY; em->value = strdup("Msg:EndCall(,)"); DEBUG2("[DS]: Send message to executor thread %s", (char*) em->value); sendToExecutor(em); } _callTimer = 0; } else { _callTimer++; } } char* readFromFile(const char *cmdTag, const char* file, int* size) { FILE *fp; struct stat buf; long fLen = 0; if(stat(file, &buf) == -1) { logger(L_ERR,"can't get file size!"); } else { fLen = (int) buf.st_size; INFO2("[EX]: readFromFile file size id %ld", fLen); if (!S_ISREG (buf.st_mode)) { logger(L_ERR,"not regular file"); } else { fp=fopen(file,"r"); if (fp == NULL) { logger(L_ERR,"can't open file!"); } else { int prefixSz = strlen(cmdTag); uint32_t szh32 = (uint32_t) buf.st_size; uint32_t szi32 = htonl(szh32); char * fBuffer = (char*) calloc(fLen+prefixSz+7,1); // 7 = ");\0" if (fBuffer == NULL) { logger(L_ERR,"no more memory!"); *size = -1; fclose(fp); return NULL; } strcat(fBuffer, cmdTag); memcpy((void*)fBuffer+prefixSz, (const void *) &szi32, 4); // length on binary data if (fp) { //size_t dummy = fread(fBuffer+prefixSz+4, sizeof(char), fLen, fp); fclose(fp); } strcpy(fBuffer+prefixSz+fLen+4,");"); *size = fLen+prefixSz+7; INFO2("[EX]: Command: CONTENT %s", fBuffer); return fBuffer; } } } if (strncmp(cmdTag, "Set(cover", 9) == 0) { // cleanup the cover on client char * fBuffer = (char*) malloc(12); strcpy(fBuffer, "Set(cover);"); *size = 11; return fBuffer; } *size = -1; return NULL; } dMessage* allocDMessage() { dMessage* dm = (dMessage*) malloc(sizeof(dMessage)); dm->peer = PEER_ANY; dm->type = 0; dm->subtype = 0; dm->size = 0; dm->value = NULL; dm->file = NULL; dm->scaled = NULL; return dm; } dMessage* getDFinalizer() { dMessage* dm = allocDMessage(); dm->type = DM_SET; dm->subtype = ID_SET_MAX; dm->size = 6; dm->value = (void*) strdup("End();"); return dm; } void freeDMessage(void *ptr) { dMessage* dm = (dMessage*) ptr; if (dm) { if (dm->value != NULL) { free(dm->value); } if (dm->file != NULL) { free(dm->file); } if (dm->scaled != NULL) { free(dm->scaled); } free(dm); } } static int dispatchEvent(dMessage* dm) { if (dm->subtype == ID_EVENT_FRONTEND) { writeToFrontEnd(dm->value); } else if (dm->subtype == ID_EVENT_INIT) { logger(L_INF, "[DS]: Got init OK event"); return EXIT_INITOK; } else if (dm->subtype == ID_EVENT_DISCONNECT) { logger(L_INF, "[DS]: Got disconnect event"); disconnectPeers(); closePort(0); return EXIT_DISCON; } else if (dm->subtype == ID_EVENT_EXIT) { logger(L_INF, "[DS]: Got exit event"); gotExitSignal = 1; // in server mode wait client to close connection and then exit if (disconnectPeers() == 1) { logger(L_INF, "[DS]: Got exit event: exit immediately"); closePort(1); return EXIT_ABORT; } } return EXIT_OK; } static int dispatchSendString(dMessage* dm) { DEBUG2("[DS]: Send(string) %s", (char*) dm->value); return writePeers(dm); } static int dispatchSendBytes(dMessage* dm) { DEBUG2("[DS]: Send(bytes) %s", (char*) dm->value); return writeBytesPeers((char*) dm->value); } static int dispatchSet(dMessage* dm) { logger(L_DBG, "[DS]: Set(...)"); return writePeers(dm); } static int dispatchNone(dMessage* dm) { return EXIT_OK; } // rely on DispMsgType enum static struct { int id; int (*hook)(dMessage* p); } _dispMsgHooks[] = { {DM_SET, dispatchSet }, {DM_GET, dispatchSet }, {DM_SETFILE, writeFilePeers }, {DM_SENDB, dispatchSendBytes }, {DM_SENDS, dispatchSendString }, {DM_CKPD, writeCKPD }, //{DM_CMER, writeCMER }, {DM_EVENT, dispatchEvent }, {DM_FRONTEND, dispatchNone } }; static int processOutputData() { //logger(L_DBG,"[DS]: processOutputData"); int ret = EXIT_OK; // Verify commands from queue (timeout about 1/2 sec) dMessage* dm = (dMessage*) queuePop(Q_DISP); if (dm != NULL) { //DEBUG2("[DS]: Got event %p %d", dm, dm->type); if (connected() == EXIT_NOK && !haveConnectionless() && !(dm->type == DM_EVENT)) { // can process these even if no connection //logger(L_DBG, "[DS]: No connection. Skip event"); } else { if (dm->type < DM_TYPE_MAX) { ret = (_dispMsgHooks[dm->type].hook)(dm); } } freeDMessage(dm); } if (ret == EXIT_ABORT) { DEBUG2("[DS]: processOutputData ret %d", ret); } return ret; } void parseCommand(int peerId, char* cmd) { //DEBUG2("[DS]: parseCommand >%s<", cmd); char *prev, *next; if (cmd == NULL) { return ; } //skip lines starting with \n and \r if (cmd[0] == '\r') { cmd++; } if (cmd[0] == '\n') { cmd++; } // most common case if (!cmd[0]) { return; } // if recieved multiline command - handle line by line and return prev = cmd; next = strchr(cmd, '\r'); if (next == NULL) { // Java client will send +CKEV: 1,1; +CKEV: 1,0 next = strchr(cmd, ';'); } if (next) { logger(L_DBG, "[DS]: parseCommand multiline"); char copy[1024]; int len; do { len = next-prev; if (len >= 2) { memcpy(copy, prev, len); copy[len] = 0; // use recursion parseCommand(peerId, copy); } prev = next+1; next = strchr(prev, '\r'); if (next == NULL) { // Java client will send +CKEV: 1,1; +CKEV: 1,0 next = strchr(prev, ';'); } /* handle in reader if (next == NULL && getIViewer()) { next = strchr(prev, '\3'); // end-of-text marker in CommandFusion }*/ } while (next) ; // now return return; } logger(L_DBG,"[DS]: -------------------- Command read --------------------"); DEBUG2("[DS]: parseCommand >%s<", cmd); if (IS_OK(cmd)) { // OK - nothing to do return; } if (strncmp(cmd, DEF_AT_CKPD, 8) == 0 || // This is echo of sent message in AT mode; nothing to do strncmp(cmd, DEF_CLDEBUG, 12) == 0) { // This is debug message from java client; nothing to do return; } // This is keepalive message, handle it internally if (strncmp(cmd, DEF_CLPING, 8) == 0 && useKeepalive()) { setKeepalive(); return; } eMessage* em = (eMessage*) malloc(sizeof(eMessage)); em->peer = peerId; em->type = EM_KEY; em->value = strdup(cmd); DEBUG2("[DS]: Send message from peer %d to executor thread %s", peerId, (char*) em->value); sendToExecutor(em); return; } static void hookInitOnce() { if (_initialized == 0) { // setgid if(conf.uid && getuid()==0) { DEBUG2("[DS]: setuid/setgid %d,%d",conf.uid,conf.gid); #ifndef __FreeBSD__ setgroups(0, NULL); #endif setgid(conf.gid); setuid(conf.uid); } _initialized++; } } static int doDisconnect() { logger(L_INF, "[DS]: Got disconnected"); //printf("Got disconnected\n"); freeBtAddress(); if (gotExitSignal) { logger(L_INF, "[DS]: Got signal, exiting"); closePort(1); return EXIT_ABORT; } writeToFrontEnd("Disconnected"); sendDisconnect(); sendEventToExecutor(0, ID_EVT_DISCONNECT); if (disconnectPeers() == 1) { logger(L_INF, "[DS]: Closing the port"); closePort(0); } return EXIT_DISCON; } void sendFinalizer() { if (needFinalizer() == EXIT_OK) { logger(L_DBG,"[DS]: sendFinalizer()"); eMessage* em = (eMessage*) malloc(sizeof(eMessage)); em->peer = PEER_ANY; em->type = EM_AS_IS; em->value = strdup("End();"); sendToExecutor(em); } } void dispatcherCleanup() { logger(L_DBG,"[DS]: dispatcherCleanup()"); freePeers(); } static int processInputData() { //logger(L_DBG,"[DS]: processInputData()"); int retRead = processPeers(); //if (retRead != 0) printf("GOT %d\n",retRead); if (retRead == EOF) { logger(L_DBG,"[DS]: processInputData() EOF"); return doDisconnect(); } else if (retRead > 0) { // something was pricessed sendFinalizer(); } // it is OK if retRead == 0 return EXIT_OK; } static int doMessageLoop() { int ret = EXIT_DISCON; while (1) { //logger(L_DBG,"[DS]: doMessageLoop LOOP"); // read from sockets, etc. ret = processInputData(); if (ret == EXIT_ABORT) { logger(L_DBG,"[DS]: doMessageLoop abort on read "); break; } else if (ret == EXIT_DISCON) { logger(L_DBG,"[DS]: doMessageLoop disconnect on read"); break; } // Is call still active ? (timeout about 1 seconds, check it inside) if (hasActiveCall()) { handleActiveCall(); } ret = processOutputData(); if (ret == EXIT_ABORT) { logger(L_DBG,"[DS]: doMessageLoop abort on check queue"); break; } else if (ret == EXIT_DISCON) { logger(L_DBG,"[DS]: doMessageLoop disconnect on check queue"); break; } // Main loop timer (1/50 of second) usleep(20000); } // while (forever) return ret; } static int doConnectionLoop() { if (setupPeersPre() != 1) { // Init modem: AT, ATE0, AT+CMER, in server mode waits for connection logger(L_DBG,"[DS]: Init connection error"); return EXIT_OK; } logger(L_DBG,"[DS]: Init connection OK"); if (connected() == EXIT_OK) { logger(L_DBG,"[DS]: doConnectionLoop connectNotify"); connectNotify(0); } dispIsJoinable = BOOL_YES; logger(L_DBG,"[DS]: Start message loop"); int ret = doMessageLoop(); DEBUG2("[DS]: Stop message loop %d", ret); return ret; // EXIT_DISCON / EXIT_NOK is OK here return EXIT_OK; } pointer_t dispatcherRoutine(pointer_t thread) { int ret = EXIT_OK; logger(L_DBG,"[DS]: start dispatcher thread"); // wait init ok event while (1) { ret = processOutputData(); if (ret == EXIT_ABORT) { dispatcherCleanup(); return NULL; } else if (ret == EXIT_INITOK) { break; } //logger(L_DBG,"[DS]: wait init OK event"); usleep(50000); } logger(L_DBG,"[DS]: got init event"); int dmn = autoConnect(); int rs = getRetrySecs(); strcpy(callerId, "NO CALLER ID"); if (definePeers() == EXIT_ABORT) { logger(L_DBG,"[DS]: Incorrect device specification"); dispatcherCleanup(); sendAbort(); return NULL; } while (1) { logger(L_DBG,"[DS]: ************ outer loop **********"); if (openPeers() == EXIT_OK) { // Open device logger(L_DBG,"[DS]: Device open OK"); hookInitOnce(); dispIsJoinable = BOOL_NO; DEBUG2("[DS]: Start connection loop"); int retLoop = doConnectionLoop(); DEBUG2("[DS]: Stop connection loop %d", retLoop); if (retLoop == EXIT_ABORT) { DEBUG2("[DS]: Dispatcher abort"); dispatcherCleanup(); return NULL; } } else { // open port logger(L_DBG,"[DS]: Device open error"); } //printf("Connection closed or lost\n"); logger(L_INF, "[DS]: Connection closed or lost"); // Can't open port or it closed again int isServer = isServerMode(); if (!gotExitSignal && (dmn || isServer == EXIT_OK || ret == EXIT_DISCON)) { int timeout; if (isServer == EXIT_OK) { timeout = 2; // wait only 2 seconds } else if (ret == EXIT_DISCON) { timeout = TMPDISCONN_TIME; ret = EXIT_OK; } else { timeout = rs; } INFO2("[DS]: Wait %d seconds to connect/open server socket ...", timeout); //printf("Wait %d seconds to connect/open server socket ...\n", timeout); dispIsJoinable = BOOL_NO; sleep(timeout); dispIsJoinable = BOOL_YES; } else { // Proceed to exit printf("Exiting ...\n"); sendAbort(); break; } } // Finish all logger(L_INF, "[DS]: Stop dispatcher ..."); closePort(1); dispatcherCleanup(); return NULL; } void sendToDispatcher(dMessage *buf) { if (queuePush(Q_DISP, (void*) buf) == RC_OK) { DEBUG2("send to dispatcher %d", buf->type); } } anyremote-6.7.1/src/executor.h0000644000232200023220000000257712664332726016722 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _EXECUTOR_H_ #define _EXECUTOR_H_ #include "lib_wrapper.h" enum ExecMsgType { EM_KEY = 0, EM_STRING, EM_EVENT, EM_ALARM, EM_AS_IS }; typedef struct em { int peer; int type; void* value; } eMessage; typedef struct { int id; int xSz; int ySz; int coverSz; } PeerDef; pointer_t executorRoutine (pointer_t thread); void sendToExecutor (eMessage *buf); void freeEMessage (void *buf); void sendEventToExecutor(int peer, int event); void sendToMainMenu (int peer); #endif anyremote-6.7.1/src/loop.c0000644000232200023220000000617112664332726016022 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // Main loop // #include #include #include #include #include #include #include #include #include #include #include "lib_wrapper.h" #include "conf.h" #include "utils.h" #include "alarm.h" #include "queue.h" #include "dispatcher.h" #include "peer.h" #include "pr_frontend.h" extern void aboutToExit(); boolean_t adminRoutine(pointer_t data) { int *mi = (int*) queuePop(Q_MAIN); if (mi != NULL) { int m = *mi; free(mi); if (m == M_ABORT) { logger(L_DBG,"[ML]: got exit request"); addKeepalive("-1"); aboutToExit(); // exit here } else if (m == M_DISCONNECT) { logger(L_DBG,"[ML]: got disconnect request"); addKeepalive("-1"); if (!autoConnect() && needExit() == EXIT_OK) { // no active connection (and all peers are clients) logger(L_DBG,"[ML]: Exit because of disconnect"); aboutToExit(); // exit here } } } keepaliveTest(); return BOOL_YES; } #ifdef USE_GLIB static GMainLoop *loop = NULL; gboolean alarmTimeout(gpointer data) { //logger(L_DBG,"[ML]: alarmTimeout"); manageAlarms(ALARM_CHECK); return TRUE; } void loopStart() { loop = g_main_loop_new(NULL, FALSE); g_timeout_add(100, adminRoutine, NULL); // 1/10 of second g_timeout_add(15000, alarmTimeout, NULL); //logger(L_DBG,"g_main_loop_run"); g_main_loop_run(loop); } void loopStop() { g_main_loop_quit(loop); } void loopDestroy() { g_main_loop_unref(loop); } #else static int _alarmTimer = 0; static int _frontendTimer = 0; void loopStart() { while (1) { if (queueCanPop(Q_MAIN)) { adminRoutine(NULL); } // about 15 seconds _alarmTimer++; if (_alarmTimer > 150) { manageAlarms(ALARM_CHECK); _alarmTimer = 0; } // about 1/10 seconds keepaliveTest(); // Main loop timer (1/10 of second) usleep(100000); } } void loopStop() // do nothing { } void loopDestroy() // do nothing { } #endif anyremote-6.7.1/src/gen_xml.c0000644000232200023220000005642612664332726016512 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include "str.h" #include "utils.h" #include "conf.h" #include "sys_util.h" #include "state.h" #include "gen_xml.h" #include "mutex.h" #include "var.h" // not to include pr_web.h extern void addLink(string_t* ip, string_t* addTo, int port, boolean_t trailSlash); #define CMXML_MAX_STRING_SIZE 32 #define XML_HEAD1 "\n" #define XML_CFORM1 "\n" #define XML_CFORM99 "\n" #define XML_CFORM1G "\n" #define XML_CFORM99G "\n" /* x-CiscoIPPhoneModelName: CP-7941G x-CiscoIPPhoneSDKVersion: 7.0.1 x-CiscoIPPhoneDisplay: 298,144,3,G Cisco Unified IP Phone 7905 192 x 53 Cisco Unified IP Phone 7920 128 x 59 Grayscale 1 Cisco Unified IP Phones 7940G 7960G 133 x 65 Grayscale 2 Cisco Unified IP Phones 7941G, 7941G-GE, 7961G, 7961G-GE 298 x 144 Grayscale 4 Cisco Unified IP Phone 7970G 7971G 298 x 168 Color 12 */ #define XML_LIST1 "\n" #define XML_LIST99 "\n" #define XML_TEXT1 "\n" #define XML_TEXT99 "\n" #define XML_EFORM1 "\n" #define XML_EFORM99 "\n" #define XML_WMAN1 "\n" #define XML_WMAN99 "\n" #define XML_MAX_LIST_SIZE 99 extern char tmp[MAXMAXLEN]; static int _xmlScreenW = 298; // Cisco-7941 as default static int _xmlScreenH = 144; // static int _xmlLayoutW = 298; // static int _xmlLayoutH = 144; // static boolean_t _xmlScreenG = BOOL_YES; static boolean_t _xmlLayoutOk = BOOL_NO; static boolean_t _xmlGraphic = BOOL_YES; int xmlScreenWidth() { return _xmlScreenW; } int xmlScreenHeight() { return _xmlScreenH; } boolean_t xmlScreenGrayscale() { return _xmlScreenG; } void xmlSetLayoutOk(boolean_t ok) { _xmlLayoutOk = ok; } void parseScreenDef(char* buffer) { // x-CiscoIPPhoneDisplay: 298,144,3,G //DEBUG2("[WS]:parseScreenDef line: %s", buffer); int gap = strlen("x-CiscoIPPhoneDisplay: "); if (!buffer || strlen(buffer) < gap) { return; } char* start = buffer+gap; char* scrDef = strdup(start); char* w = strtok(scrDef, ","); char* h = strtok(NULL, ","); /*char* d = */ strtok(NULL, ","); char* g = strtok(NULL, ","); int sW = atoi(w); int sH = atoi(h); //printf("parseScreenDef w=%d h=%d g=%s\n", sW, sH, g); boolean_t sG = (g && g[0] == 'G'); // Grayscale if (_xmlLayoutOk && (_xmlScreenW != sW || _xmlScreenH != sH || _xmlScreenG != sG)) { _xmlLayoutOk = BOOL_NO; // need to regenerate layout image } _xmlScreenW = sW; _xmlScreenH = sH; _xmlScreenG = sG; free(scrDef); } void parseCiscoModel(char* buffer) { // x-CiscoIPPhoneModelName: CP-7905 //DEBUG2("[WS]:parseCiscoModel line: %s", buffer); int gap = strlen("x-CiscoIPPhoneModelName: "); if (!buffer || strlen(buffer) < gap) { return; } // http://www.cisco.com/c/en/us/td/docs/voice_ip_comm/cuipph/all_models/xsi/8_5_1/xsi_dev_guide/xmlobjects.html char* start = buffer+gap; if (strstr(start,"7905") || strstr(start,"7906") || strstr(start,"7911") || strstr(start,"7912") || strstr(start,"7931") || strstr(start,"7940") || strstr(start,"7960")) { _xmlGraphic = BOOL_NO; } } static void renderConvertCmd(string_t* cmd) { stringAppend(cmd, " -resize "); char num[16]; sprintf(num,"%d",xmlScreenWidth() - 4); stringAppend(cmd, num); stringAppend(cmd, "x"); sprintf(num,"%d",xmlScreenHeight() - 4); stringAppend(cmd, num); stringAppend(cmd, " -colorspace "); if (xmlScreenGrayscale()) { stringAppend(cmd, " Gray "); } else { stringAppend(cmd, " RGB -depth 12 "); } } static void addXMLFormMenu(int formId, string_t* ip, string_t* page, int p) { SingleList* list = userMenu(); INFO2("[WS]: addXMLFormMenu %d #%d", formId, listSingleLength(list)); switch (formId) { case CF: case TX: case WM: { int llen = listSingleLength(list); if (llen > 0) { boolean_t longMenu = (llen > XML_SOFTKEY_NUM ? BOOL_YES : BOOL_NO); int position = 1; while(list) { if (longMenu && position == XML_SOFTKEY_NUM) { stringAppend(page, " \n >>\n "); addLink(ip, page, p, BOOL_YES); stringAppend(page, XML_LONG_MENU); char buf[8]; sprintf(buf,"%d", formId); stringAppend(page, buf); sprintf(buf,"%d", position); stringAppend(page, "\n "); stringAppend(page, buf); stringAppend(page, "\n \n"); break; } if (list->data && ((string_t*) list->data)->str) { INFO2("[WS]: addXMLFormMenu item %s",((string_t*) list->data)->str); stringAppend(page, " \n "); stringAppend(page, ((string_t*) list->data)->str); stringAppend(page, "\n "); addLink(ip, page, p, BOOL_YES); char buf[8]; sprintf(buf,"%d", position); stringAppend(page, XML_SHORT_MENU); stringAppend(page, buf); stringAppend(page, "\n "); stringAppend(page, buf); stringAppend(page, "\n \n"); } list = listSingleNext(list); position++; if (!longMenu && position > XML_SOFTKEY_NUM) { // should not happen break; } } } break; } //case LI: -- sendXMLMenu used instead /*case EF: -- use custom code if (listSingleLength(list) > 0) { int position = 1; while(list) { if (list->data && ((string_t*) list->data)->str) { stringAppend(page, " \n "); stringAppend(page, ((string_t*) list->data)->str); stringAppend(page, "\n "); addLink(ip, page, port, BOOL_YES); char buf[8]; sprintf(buf,"%d", position); stringAppend(page, XML_SHORT_MENU); stringAppend(page, buf); stringAppend(page, " "); stringAppend(page, buf); stringAppend(page, "\n \n"); } list = listSingleNext(list); position++; if (position > XML_SOFTKEY_NUM) { break; } } } break;*/ } } string_t* renderXMLFormHead(int form, const char* caption) { string_t* head = stringNew(XML_HEAD1); if (form == CF) { if (_xmlGraphic == BOOL_YES) { stringAppend(head,XML_CFORM1G); } else { stringAppend(head,XML_CFORM1); } } else if (form == LI) { stringAppend(head,XML_LIST1); } else if (form == TX) { stringAppend(head,XML_TEXT1); } else if (form == EF) { stringAppend(head,XML_EFORM1); } else if (form == WM) { if (_xmlGraphic == BOOL_YES) { stringAppend(head,XML_WMAN1); } else { stringAppend(head,XML_CFORM1); } } stringAppend(head, " "); stringAppend(head, caption); stringAppend(head, "\n"); stringAppend(head, " "); if (form == CF) { const char* title = cfTitle(); int sz = (title ? strlen(title) : -1); if (sz > 0) { if (sz > CMXML_MAX_STRING_SIZE) { stringAppendLen(head, cfTitle(), CMXML_MAX_STRING_SIZE); } else { stringAppend(head, title); } } } else { if (strlen(caption) > CMXML_MAX_STRING_SIZE) { stringAppendLen(head, caption, CMXML_MAX_STRING_SIZE); } else { stringAppend(head, caption); } } stringAppend(head, "\n"); //printf("HEAD\n%s\n",head->str); return head; } // Send menu as list (CMXML) string_t* sendXMLMenu(int form, string_t* ip, int p, int idx) { string_t* page = renderXMLFormHead(LI,"Menu"); // menu-as-list SingleList* list = userMenu(); INFO2("[WS]: sendXMLMenu %d #%d", form, listSingleLength(list)); if (listSingleLength(list) > 0) { int position = 1; while(list) { if (list->data && ((string_t*) list->data)->str) { stringAppend(page, " \n "); if (((string_t*) list->data)->len > CMXML_MAX_STRING_SIZE) { stringAppendLen(page, ((string_t*) list->data)->str, CMXML_MAX_STRING_SIZE); } else { stringAppend(page, ((string_t*) list->data)->str); } stringAppend(page, "\n "); addLink(ip, page, p, BOOL_YES); char pos[8]; sprintf(pos, "%d",position); if (idx >= 0) { stringAppend(page, XML_LIST_MENU2); char buf[8]; sprintf(buf, "%d,",idx); stringAppend(page, buf); } else { stringAppend(page, XML_SHORT_MENU); } stringAppend(page, pos); stringAppend(page, "\n \n"); } list = listSingleNext(list); position++; } } stringAppend(page, " \n Select\n SoftKey:Select\n 1\n \n"); stringAppend(page, " \n Back\n SoftKey:Back\n 2\n \n"); stringAppend(page, XML_LIST99); return page; } static void renderXMLLayout() { mutexLock(M_STATE); const char* cv = cfCover(); const char* nc = cfNamedCover(); INFO2("[WS]: renderXMLLayout (%d,%d) pix, %s, %s", _xmlScreenW, _xmlScreenH, (_xmlScreenG ? "Grayscale" : "Color"), ((cv || nc) ? "with cover" : "no cover")); // Use ImageMagic to create picture to show char* confDir = dupVarValue(VAR_CFGDIR); string_t* iconpath = stringNew(confDir ? confDir : "."); free(confDir); stringAppend(iconpath,"/Icons/32/"); string_t* cmd = NULL; if (bottomlineSkin()) { int iNum = 1; while (iNum <= 7) { const char* icon = cfIcon(iNum-1); if (!icon || strcmp(icon,"none") == 0 || iNum == 7) { break; // no more icons } iNum++; } cmd = stringNew("montage -background transparent -tile "); char num[32]; sprintf(num,"%dx1 -geometry 32x32 ", iNum); stringAppend(cmd, num); //stringAppend(cmd, "-draw \'text 0,0 \""); //stringAppend(cmd, cfTitle()); //stringAppend(cmd, "\";gravity Center\' "); int i; for (i=0; istr); stringAppend(cmd, icon); stringAppend(cmd, ".png "); } } if (nc || cv) { stringAppend(cmd, " $HOME/.anyRemote/layout_xml_raw0.png; convert -gravity Center -background transparent "); if (nc) { string_t* file = findNamedCover(nc); if (file) { stringAppend(cmd, file->str); stringFree(file, BOOL_YES); } } else { // cv stringAppend(cmd, cv); } stringAppend(cmd, " $HOME/.anyRemote/layout_xml_raw0.png -append $HOME/.anyRemote/layout_xml_raw.png; "); } else { stringAppend(cmd, " $HOME/.anyRemote/layout_xml_raw.png; "); } stringAppend(cmd, "convert $HOME/.anyRemote/layout_xml_raw.png "); } else { cmd = stringNew("montage -background transparent -tile 3x4 -geometry 32x32 "); // use 32x32 icons //stringAppend(cmd, "-draw \'text 0,0 \""); //stringAppend(cmd, cfTitle()); //stringAppend(cmd, "\";gravity Center\' "); int i; for (i=0; istr); stringAppend(cmd, icon); stringAppend(cmd, ".png "); } } stringAppend(cmd, " $HOME/.anyRemote/layout_xml_raw.png; convert $HOME/.anyRemote/layout_xml_raw.png "); } mutexUnlock(M_STATE); renderConvertCmd(cmd); stringAppend(cmd, " $HOME/.anyRemote/layout_xml.png"); INFO2("[WS]: renderXMLLayout CMD=%s", cmd->str); _xmlLayoutW = _xmlScreenW; // reset _xmlLayoutH = _xmlScreenH; size_t sz = 0; char* dummy = executeCommandPipe(cmd->str, &sz); if (dummy) { // can be NULL free(dummy); } char* buf = executeCommandPipe("identify -format \"%w,%h\" $HOME/.anyRemote/layout_xml.png", &sz); if (buf) { char* w = strtok(buf, ","); char* h = strtok(NULL,","); _xmlLayoutW = atoi(w); _xmlLayoutH = atoi(h); INFO2("[WS]: renderXMLLayout rendered image is (%d,%d)", _xmlLayoutW, _xmlLayoutH); free(buf); } else { ERROR2("[WS]: renderXMLLayout can not get size layout image"); } stringFree(cmd, BOOL_YES); stringFree(iconpath, BOOL_YES); _xmlLayoutOk = BOOL_YES; } void renderXMLImage() { INFO2("[WS]:renderXMLImage (%d,%d) pix, %s", _xmlScreenW, _xmlScreenH, (_xmlScreenG ? "Grayscale" : "Color")); // Use ImageMagic to create picture to show string_t* cmd = stringNew("convert "); mutexLock(M_STATE); stringAppend(cmd, wfImage()); mutexUnlock(M_STATE); renderConvertCmd(cmd); stringAppend(cmd, " $HOME/.anyRemote/image_xml.png"); INFO2("[WS]:renderXMLImage CMD=%s", cmd->str); size_t sz = 0; char* str = executeCommandPipe(cmd->str, &sz); // it is on to get NULL in str, because command does not produce any output free(str); stringFree(cmd, BOOL_YES); } string_t* renderCtrlXMLForm(string_t* ip, int port) { INFO2("[WS]: renderCtrlXMLForm"); if (_xmlGraphic == BOOL_YES && !_xmlLayoutOk) { renderXMLLayout(); } mutexLock(M_STATE); string_t* page = renderXMLFormHead(CF, cfCaption()); mutexUnlock(M_STATE); char num[16]; sprintf(num,"%d", (_xmlScreenW - _xmlLayoutW)/2); if (_xmlGraphic == BOOL_YES) { stringAppend(page, " "); stringAppend(page, num); stringAppend(page, "\n"); stringAppend(page, " "); sprintf(num,"%d", (bottomlineSkin() ? _xmlScreenH - _xmlLayoutH : (_xmlScreenH - _xmlLayoutH)/2)); stringAppend(page, num); stringAppend(page, "\n"); stringAppend(page, " "); addLink(ip, page, port, BOOL_YES); stringAppend(page, "xml_layout\n"); } int i = 0; mutexLock(M_STATE); while (i < ICON_NUM) { const char* icon = cfIcon(i); if (bottomlineSkin() && (!icon || strcmp(icon,"none") == 0)) { break; // skip if empty icon specified } stringAppend(page, " \n "); if (_xmlGraphic == BOOL_YES) { stringAppend(page, icon); } else { const char* hint = cfHint(i); stringAppend(page, hint); } stringAppend(page, "\n "); addLink(ip, page, port, BOOL_YES); stringAppend(page, XML_BUTTON_PRESS); sprintf(num,"%d", i+1); stringAppend(page, num); stringAppend(page, "\n \n"); i++; } mutexUnlock(M_STATE); addXMLFormMenu(CF, ip, page, port); if (_xmlGraphic == BOOL_YES) { stringAppend(page, XML_CFORM99G); } else { stringAppend(page, XML_CFORM99); } //printf("renderCtrlXMLForm FULL \n%s\n",page->str); return page; } string_t* renderTextXMLForm(string_t* ip, int port) { mutexLock(M_STATE); string_t* page = renderXMLFormHead(TX,tfCaption()); stringAppend(page, " "); stringAppend(page, tfText()); mutexUnlock(M_STATE); stringAppend(page, " "); addXMLFormMenu(TX, ip, page, port); stringAppend(page, XML_TEXT99); return page; } string_t* renderListXMLForm(string_t* ip, int port) { mutexLock(M_STATE); string_t* page = renderXMLFormHead(LI,lfCaption()); SingleList* list = lfList(); char num[16]; int lsz = listSingleLength(list); if (lsz > 0) { int idx = 0; while (list && idx <= XML_MAX_LIST_SIZE) { stringAppend(page, " \n "); char* listItem = ((ListItem*) list->data)->string->str; int i = 0; for (;i<((ListItem*) list->data)->string->len;i++) { if (*(listItem+i) == '\''|| *(listItem+i) == '&') { *(listItem+i) = '-'; } } if (((ListItem*) list->data)->string->len > CMXML_MAX_STRING_SIZE) { stringAppendLen(page, listItem, CMXML_MAX_STRING_SIZE); } else { stringAppend(page, listItem); } stringAppend(page, "\n "); sprintf(num,"%d", idx); stringAppend(page, "QueryStringParam:"); stringAppend(page, num); stringAppend(page, "\n \n"); list = listSingleNext(list); idx++; } if (list && idx == XML_MAX_LIST_SIZE) { INFO2("[WS]: renderListXMLForm: too many items in list, skip the rest"); } } else { // add dummy item stringAppend(page, " \n ---empty---\n "); stringAppend(page, "QueryStringParam:"); stringAppend(page, "-1"); stringAppend(page, "\n \n"); } mutexUnlock(M_STATE); SingleList* mlist = userMenu(); int llen = listSingleLength(mlist); if (llen > 0) { int position = 1; boolean_t longMenu = (llen > XML_SOFTKEY_NUM ? BOOL_YES : BOOL_NO); while(mlist) { if (mlist->data && ((string_t*) mlist->data)->str) { INFO2("[WS]: renderListXMLForm menu item %s",((string_t*) mlist->data)->str); stringAppend(page, " \n "); if (longMenu && position == XML_SOFTKEY_NUM) { stringAppend(page, ">>"); } else { stringAppend(page, ((string_t*) mlist->data)->str); } stringAppend(page, "\n "); addLink(ip, page, port, BOOL_YES); char buf[8]; sprintf(buf,"%d", position); if (longMenu && position == XML_SOFTKEY_NUM) { stringAppend(page, XML_LIST_MENU_EXT); } else { stringAppend(page, XML_LIST_MENU); stringAppend(page, buf); } stringAppend(page, "\n "); stringAppend(page, buf); stringAppend(page, "\n \n"); } mlist = listSingleNext(mlist); position++; if (position > XML_SOFTKEY_NUM) { // should not happen break; } } } stringAppend(page, XML_LIST99); //printf("renderListXMLForm FULL \n%s\n",page->str); return page; } string_t* renderWmanXMLForm(string_t* ip, int port) { INFO2("[WS]: renderWmanXMLForm"); mutexLock(M_STATE); string_t* page = renderXMLFormHead(WM, cfCaption()); mutexUnlock(M_STATE); if (_xmlGraphic == BOOL_YES) { stringAppend(page, " 0\n"); stringAppend(page, " 0\n"); stringAppend(page, " "); addLink(ip, page, port, BOOL_YES); stringAppend(page, "xml_image\n"); } addXMLFormMenu(WM, ip, page, port); stringAppend(page, XML_WMAN99); //printf("renderWmanXMLForm FULL \n%s\n",page->str); return page; } static string_t* renderEditXML(const char* caption, const char* label, const char* value, string_t* ip, int p) { string_t* page = renderXMLFormHead(EF, caption); stringAppend(page, " "); addLink(ip, page, p, BOOL_YES); stringAppend(page, ";"); stringAppend(page, "\n \n "); stringAppend(page, label); stringAppend(page, "\n xml_ef\n "); stringAppend(page, value); stringAppend(page, "\n A\n \n"); //addXMLFormMenu(EF, ip, page, p); -- add hardcoded Ok and Back menu items stringAppend(page, " \n Ok\n SoftKey:Submit\n 1\n \n"); stringAppend(page, " \n Back\n "); addLink(ip, page, p, BOOL_YES); stringAppend(page, XML_EFIELD_CANCEL); stringAppend(page, "\n 2\n \n"); stringAppend(page, " \n <<\n SoftKey:<<\n 3\n \n"); stringAppend(page, XML_EFORM99); return page; } string_t* renderEditXMLForm(string_t* ip, int port) { INFO2("[WS]: renderXMLEditForm"); mutexLock(M_STATE); string_t* val = renderEditXML(efCaption(), efLabel(), efText(), ip, port); mutexUnlock(M_STATE); return val; } string_t* renderPassXMLForm(string_t* ip, int port) { INFO2("[WS]: renderPassXMLForm"); return renderEditXML("Enter Password", "Enter Password", "", ip, port); } anyremote-6.7.1/src/pr_rfcomm.h0000644000232200023220000000262212664332726017037 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PR_RFCOMM_H_ #define _PR_RFCOMM_H_ #include "peer.h" typedef struct _RfcommConnection_ { int fileDescriptor; boolean_t useCallId; boolean_t hasActiveCall; } _RfcommConnection; int rfcommFD (ConnectInfo* conn); int rfcommSetup (ConnectInfo* conn); int rfcommConnect(ConnectInfo* conn); void rfcommClose (ConnectInfo* conn, int final); void rfcommReset (ConnectInfo* conn); int rfcommWrite (ConnectInfo* conn, dMessage* msg); boolean_t rfcommCheckActiveCall(ConnectInfo* conn); boolean_t rfcommHasActiveCall (ConnectInfo* conn); #endif anyremote-6.7.1/src/main.c0000644000232200023220000001216112673224605015765 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __FreeBSD__ #include #endif #include "common.h" #include "lib_wrapper.h" #include "conf.h" #include "dispatcher.h" #include "executor.h" #include "pr_frontend.h" #include "utils.h" #include "queue.h" #include "thread.h" #include "loop.h" #include "alarm.h" #include "avahi.h" extern void freeDisplay(); // from xemulate.h extern CONF conf; extern int state; extern boolean_t dispIsJoinable; char tmp [MAXMAXLEN]; boolean_t stillRun = BOOL_YES; void aboutToExit() { logger(L_DBG, "[ML]: aboutToExit"); loopStop(); //stillRun = BOOL_NO; do it after exiting from other threads (executor needs to handle exit event) logger(L_DBG, "[ML]: aboutToExit: join executor"); sendEventToExecutor(0, ID_EVT_EXIT); threadJoin(T_EXEC); if (dispIsJoinable) { // dispatcher can be blocked in accept() logger(L_DBG, "[ML]: aboutToExit: join dispatcher"); dMessage* dm = allocDMessage(); dm->type = DM_EVENT; dm->subtype = ID_EVENT_EXIT; sendToDispatcher(dm); threadJoin(T_DISP); } #ifdef USE_AVAHI stopAvahi(); #endif stillRun = BOOL_NO; logger(L_DBG, "[ML]: aboutToExit: release main loop"); loopDestroy(); queueRemove(Q_DISP, freeDMessage); queueRemove(Q_EXEC, freeEMessage); queueRemove(Q_MAIN, freeMMessage); freeDisplay(); logger(L_DBG, "[ML]: aboutToExit: EXIT"); #ifdef USE_ICONV closeConvertor(); #endif releaseLog(); exit(0); } // handle signals only once (it is enough to send disconnect message to java client) void sig_int(int i) { signal(SIGINT, SIG_DFL); printf("\nProcess %d: got SIGINT\n",getpid()); aboutToExit(); } void sig_quit(int i) { signal(SIGQUIT, SIG_DFL); printf("\nProcess %d: got SIGQUIT\n",getpid()); aboutToExit(); } void sig_kill(int i) { signal(SIGKILL, SIG_DFL); printf("\nProcess %d: got SIGKILL\n",getpid()); aboutToExit(); } static void createDataDir() { char dd[542]; char *t = getenv("HOME"); if (t) { strcpy(dd, t); } else { strcpy(dd, "."); } strcat(dd, "/.anyRemote"); DIR *d = opendir(dd); if (d) { closedir(d); } else { mkdir(dd, S_IRWXU); if(getuid()==0 && conf.uid) { // do not create as superuser #ifdef __cplusplus int dummy = #endif chown(dd,conf.uid,conf.gid); } } } int main(int argc, char *argv[]) { if (argv[1] && (strcmp(argv[1],"-h")==0 || strcmp(argv[1],"--help")==0 || strcmp(argv[1],"-help")==0)) { //Just print help and exit printHelp(); exit(0); } else if (argv[1] && (strcmp(argv[1],"-v")==0 || strcmp(argv[1],"--version")==0 || strcmp(argv[1],"-version")==0)) { printf("anyremote v%s\n", PACKAGE_VERSION); exit(0); } createDataDir(); addInternalVars(); if (parse_opts(argc, argv) != 1 ) { printf("Invalid command line option used. Exiting.\n"); freeCfg(); exit(1); } int i; for (i=1; i // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _AVAHI_H_ #define _AVAHI_H_ 1 #include "lib_wrapper.h" pointer_t startAvahi(pointer_t thread); void stopAvahi(); int parsePortsForAvahi(); #endif anyremote-6.7.1/src/pr_web.c0000644000232200023220000015751713226200116016320 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __FreeBSD__ #include #else #include #endif #define SERVER "webserver/1.1" #define PROTOCOL "HTTP/1.1" #define RFC1123FMT "%a, %d %b %Y %H:%M:%S GMT" #include "str.h" #include "utils.h" #include "conf.h" #include "cmds.h" #include "queue.h" #include "mutex.h" #include "thread.h" #include "list.h" #include "var.h" #include "sys_util.h" #include "pr_web.h" #include "security.h" #include "state.h" #include "gen_html.h" #include "gen_xml.h" extern char tmp[MAXMAXLEN]; extern int gotExitSignal; extern boolean_t stillRun; static int visits = 0; // counts client requests static boolean_t answerReady = BOOL_NO; typedef struct _WebClientConnection_ { int serverPort; int connDescriptor; int runMode; // SERVER_WEB or SERVER_CMXML _WebConnection* conn; } _WebClientConnection; // Global data #define HTTP_ACTION "action=" #define HTTP_EDITFIELD "http_editfield=" #define IVIEW_HEAD1 "\n \n anyRemote GUI\n anyRemote\n \n " #define IVIEW_HEAD2 "\n " #define IVIEW_HEAD3 "\n \n \n \n \n \n \n \n \n \n " #define IVIEW_TAIL "" /*int haveClients(_WebConnection* cn) { mutexLock(M_WEB); int num = listSingleLength(cn->clientSockets); mutexUnlock(M_WEB); DEBUG2("[WS]: clients #%d", num); return (num > 0 ? 1 : 0); }*/ static const char* i2string(int data,char* buf) { sprintf(buf,"%d",data); return buf; } void freeWMessage(void *ptr) { wMessage *wm = (wMessage *) ptr; if (wm->string) { stringFree(wm->string, BOOL_YES); wm->string = NULL; } free(wm); } static void sendToWebServer(wMessage *buf) { if (queueExists(Q_WEB) == RC_OK && buf) { mutexLock(M_WEB); DEBUG2("send to web server %d %s", buf->button, (buf->string ? buf->string->str : "no text")); queuePush(Q_WEB, buf); mutexUnlock(M_WEB); } } static struct { char* ext; char* mime; } _mimeTypes[] = { {".html", "text/html"}, {".htm", "text/html"}, {".xml", "text/xml" }, {".jpg", "image/jpeg"}, {".jpeg", "image/jpeg"}, {".gif", "image/gif"}, {".png", "image/png"}, {".css", "text/css"}, {".au", "audio/basic"}, {".wav", "audio/wav"}, {".avi", "video/x-msvideo"}, {".mpeg", "video/mpeg"}, {".mpg", "video/mpeg"}, {".mp3", "audio/mpeg"}, {NULL, NULL} }; static const char *get_mime_type(const char *name) { char *ext = strrchr(name, '.'); if (!ext) { return NULL; } int i=0; while (_mimeTypes[i].ext) { if (strcmp(ext, _mimeTypes[i].ext) == 0) { INFO2("[WS]: Mime type: %s", _mimeTypes[i].mime); return _mimeTypes[i].mime; } i++; } return NULL; } static int sendData(_WebClientConnection* cc, const char *s) { int bytes_total = strlen(s); int bytes_sent = send(cc->connDescriptor, s, strlen(s), MSG_NOSIGNAL); if (bytes_sent != bytes_total) { ERROR2("[WS]: Error on send data: sent %d from %d", bytes_sent, bytes_total); return -1; } return 0; } void sendCookie(_WebClientConnection* cc) { if (cc->conn->secure == NO_COOKIE) { return; } char b[32]; sendData(cc, "Set-Cookie: anyremote_id="); sprintf(b,"%ld",cc->conn->cookie); sendData(cc, b); sendData(cc, "\r\n"); INFO2("[WS]: sendCookie %s",b); } static void sendHeaders(_WebClientConnection* cc, int status, const char *title, const char *extra, const char *mime, int length, time_t date) { char f[4096]; //INFO2("[WS]: sendHeaders %s",title); sprintf(f, "%s %d %s\r\n", PROTOCOL, status, title); sendData(cc, f); sprintf(f, "Server: %s\r\n", SERVER); sendData(cc, f); time_t now = time(NULL); char timebuf[128]; strftime(timebuf, sizeof(timebuf), RFC1123FMT, gmtime(&now)); sprintf(f, "Date: %s\r\n", timebuf); sendData(cc, f); if (extra) { sprintf(f, "%s\r\n", extra); sendData(cc, f); } if (mime) { sprintf(f, "Content-Type: %s\r\n", mime); sendData(cc, f); } // Generated images can be saved to the file with the same name //sprintf(f, "Cache-Control: public, max-age=36000\r\n"); sprintf(f, "Cache-Control: no-cache, must-revalidate\r\n"); sendData(cc, f); if (length >= 0) { sprintf(f, "Content-Length: %d\r\n", length); sendData(cc, f); } sendCookie(cc); if (date != -1) { strftime(timebuf, sizeof(timebuf), RFC1123FMT, gmtime(&date)); sprintf(f, "Last-Modified: %s\r\n", timebuf); sendData(cc, f); } sprintf(f, "Connection: close\r\n\r\n"); sendData(cc, f); } static void sendError(_WebClientConnection* cc, int status, char *title, char *extra, char *text) { char f[4096]; INFO2("[WS]: sendError %d", status); sendHeaders(cc, status, title, extra, "text/html", -1, -1); sprintf(f, "%d %s\r\n", status, title); sendData(cc, f); if (status != 304) { // 304 - Not Modified sprintf(f, "

%d %s

\r\n", status, title); sendData(cc, f); sprintf(f, "%s\r\n", text); sendData(cc, f); sprintf(f, ""); sendData(cc, f); } else { time_t now = time(NULL); char timebuf[128]; strftime(timebuf, sizeof(timebuf), RFC1123FMT, gmtime(&now)); sprintf(f, "Date: %s\r\n", timebuf); sendData(cc, f); } sprintf(f, "\r\n"); sendData(cc, f); } static void sendFile(_WebClientConnection* cc, char *path, struct stat *statbuf) { int fd = cc->connDescriptor; ssize_t bytes_sent; INFO2("[WS]: sendFile %s",path); /*FILE *file = fopen(path, "r"); if (!file) { ERROR2("[WS]: Access denied: %s", path); sendError(cc, 403, "Forbidden", NULL, "Access denied."); */ int fdout = open(path, O_RDONLY); if (fdout < 0) { ERROR2("[WS]: Access denied: %s", path); sendError(cc, 403, "Forbidden", NULL, "Access denied."); } else { int length = S_ISREG(statbuf->st_mode) ? statbuf->st_size : -1; sendHeaders(cc, 200, "OK", NULL, get_mime_type(path), length, statbuf->st_mtime); #ifdef __FreeBSD__ int err = sendfile(fdout, fd, 0, length, NULL, &bytes_sent, 0); #else bytes_sent = sendfile(fd,fdout,NULL,length); int err = 0; #endif /*while ((n = fread(data, 1, sizeof(data), file)) > 0) { //INFO2("read %d bytes from file",n); bytes_sent = send(fd,data,n,0); if (n != bytes_sent) { ERROR2("[WS]: Error on send file %s", path); break; } }*/ if (err || length != bytes_sent) { ERROR2("[WS]: Error on send file %s", path); } close(fdout); } sendData(cc, "\r\n"); } static void sendGeneratedImage(_WebClientConnection* cc, char *path) { INFO2("[WS]: sendGeneratedImage %s", path); const char* home = getenv("HOME"); if (!home) { return; } struct stat statbuf; string_t* img = stringNew(home); stringAppend(img,"/.anyRemote/"); stringAppend(img,path); INFO2("[WS]: sendGeneratedImage full name %s", img->str); if (stat(img->str, &statbuf) >= 0) { sendFile(cc, img->str, &statbuf); } else { sendError(cc, 404, "Not Found", NULL, "File not found."); } stringFree(img, BOOL_YES); } static void sendIcon(_WebClientConnection* cc, char *path) { INFO2("[WS]: sendIcon %s", path); struct stat statbuf; string_t* icon = stringNew(cc->conn->confDir ? cc->conn->confDir : "."); if (getIViewer()) { stringAppend(icon,"/Utils/iViewer"); stringAppend(icon,path); } else { stringAppend(icon,"/Icons/"); char b[32]; stringAppend(icon,i2string(iconSize(),b)); if (path[0] != '/') { stringAppend(icon,"/"); } stringAppend(icon,path); } INFO2("[WS]: sendIcon full name %s", icon->str); if (stat(icon->str, &statbuf) >= 0) { sendFile(cc, icon->str, &statbuf); } else { sendError(cc, 404, "Not Found", NULL, "File not found."); } stringFree(icon, BOOL_YES); } static void sendCover(_WebClientConnection* cc, char *name) { //INFO2("[WS]: sendCover %s", name); name++; char* finish = strstr(name,".cover"); if (finish) { *finish = '\0'; } string_t* file = findNamedCover(name); if (file) { struct stat statbuf; if (stat(file->str, &statbuf) >= 0) { sendFile(cc, file->str, &statbuf); } else { sendError(cc, 404, "Not Found", NULL, "File not found."); } stringFree(file, BOOL_YES); } else { sendError(cc, 404, "Not Found", NULL, "File not found."); } } static void sendFavicon(_WebClientConnection* cc) { struct stat statbuf; string_t* icon = stringNew(cc->conn->confDir ? cc->conn->confDir : "."); stringAppend(icon,"/Icons/anyRemote.png"); if (stat(icon->str, &statbuf) >= 0) { sendFile(cc, icon->str, &statbuf); } else { //ERROR2("[WS]: sendFavicon can not open favicon file"); sendError(cc, 404, "Not Found", NULL, "File not found."); } stringFree(icon, BOOL_YES); } static void sendIViewerGui(_WebClientConnection* cc) { INFO2("[WS]: sendIViewerGui"); sendData(cc, IVIEW_HEAD1); if (!cc->conn->serverIP) { ERROR2("[WS]: sendIViewerGui can not determine TCP address"); return; } sendData(cc, cc->conn->serverIP->str); sendData(cc, IVIEW_HEAD2); int tcpPort = getIViewerTcpPort(); if (tcpPort < 0) { ERROR2("[WS]: sendIViewerGui can not determine TCP port"); return; } char num[16]; sprintf(num,"%d", tcpPort); sendData(cc, num); sendData(cc, IVIEW_HEAD3); string_t* guiFile = stringNew(cc->conn->confDir ? cc->conn->confDir : "."); stringAppend(guiFile,"/Utils/anyremote.gui"); struct stat statbuf; if (stat(guiFile->str, &statbuf) >= 0) { sendFile(cc, guiFile->str, &statbuf); } else { ERROR2("[WS]: sendIViewerGui can not open GUI file"); } sendData(cc, IVIEW_TAIL); } void addLink(string_t* ip, string_t* addTo, int port, boolean_t trailSlash) { stringAppend(addTo, "http://"); if (ip) { stringAppend(addTo, ip->str); } else { ERROR2("[WS]: server IP not determined"); } stringAppend(addTo, ":"); char num[16]; sprintf(num,"%d", port); stringAppend(addTo, num); if (trailSlash) { stringAppend(addTo, "/"); } } /*void sendFormOld(_WebClientConnection* cc, string_t* httpPageH, string_t* httpPageT, boolean_t cookie) { string_t* header = stringNew("HTTP/1.1 200 OK\r\n"); if (cc->runMode == SERVER_CMXML) { stringAppend(header, "Content-type: text/xml; charset=UTF-8\r\nConnection: close\r\n"); } else { stringAppend(header, "Content-type: text/html\r\nCache-Control: no-cache, must-revalidate\r\n"); } if (cc->conn->refreshPage > 0) { stringAppend(header, "Refresh: "); char num[16]; sprintf(num,"%d", cc->conn->refreshPage); stringAppend(header, num); stringAppend(header, "; url="); addLink(cc->conn->serverIP, header, cc->port, BOOL_YES); stringAppend(header, "\r\n"); } else { if (runMode == SERVER_CMXML) { stringAppend(header, "Expires: -1\r\n"); } } //printf("HEADER: %s",header->str); sendData(cc, header->str); if (cookie) { sendCookie(cc); } sendData(cc, "\r\n"); sendData(cc, httpPageH->str); //printf("%s",httpPageH->str); //if refresh < 0: // rStr = "%s" % (uploadTmout) // string_t* httpRate = stringNew('HTTP-EQUIV=REFRESH CONTENT=\"' + rStr + ';URL=/\"'); //sendData(cc, httpRate->str); //stringFree(httpRate, BOOL_YES); sendData(cc, httpPageT->str); //printf("%s",httpPageT->str); }*/ void sendForm(_WebClientConnection* cc, string_t* content, boolean_t cookie) { string_t* header = stringNew("HTTP/1.1 200 OK\r\n"); if (cc->runMode == SERVER_CMXML) { stringAppend(header, "Content-type: text/xml; charset=UTF-8\r\nConnection: close\r\n"); } else { stringAppend(header, "Content-type: text/html\r\nCache-Control: no-cache, must-revalidate\r\n"); } if (cc->conn->refreshPage > 0) { stringAppend(header, "Refresh: "); char num[16]; sprintf(num,"%d", cc->conn->refreshPage); stringAppend(header, num); stringAppend(header, "; url="); addLink(cc->conn->serverIP, header, cc->serverPort, BOOL_YES); stringAppend(header, "\r\n"); } else { if (cc->runMode == SERVER_CMXML) { stringAppend(header, "Expires: -1\r\n"); } } sendData(cc, header->str); //printf("%s",header->str); stringFree(header, BOOL_YES); if (cookie) { sendCookie(cc); } sendData(cc, "\r\n"); //printf("\r\n"); sendData(cc, content->str); //printf("%s",content->str); } long parseCookie(char* buffer) { //DEBUG2("[WS]: parseCookie line: %s", buffer); if (!buffer) { return 0; } char* start = buffer; char* startc = NULL; while ((start = strstr(start, "anyremote_id="))) { startc = start; start += 13; // size("anyremote_id=") == 12 } if (!startc) { return 0; } startc += 13; //DEBUG2("[WS]: parseCookie start: %s", startc); start = startc; while (startc && isdigit(*startc)) { startc++; } *startc = '\0'; //DEBUG2("[WS]: parseCookie number: %s", start); return atol(start); } boolean_t handleMenuOnList(int midx, int lidx, int tvisits) { mutexLock(M_STATE); int iLen = lfSize(); int mLen = menuSize(); mutexUnlock(M_STATE); if (lidx < iLen && // negative list index means empty list midx >= 0 && midx < mLen) { wMessage* wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew("Msg:"); mutexLock(M_STATE); SingleList *menuItem = menuNth(midx); stringAppend(wm->string, ((string_t*) menuItem->data)->str); stringAppend(wm->string, "("); char b[32]; stringAppend(wm->string, i2string(lidx + 1,b)); stringAppend(wm->string, ","); if (lidx >= 0) { SingleList *ptr = lfListNth(lidx); stringAppend(wm->string, ((ListItem*) ptr->data)->string->str); INFO2("[WS]: choosed list item (%s)", ((ListItem*) ptr->data)->string->str); } else { // list was empty INFO2("[WS]: choosed list item in empty list"); } mutexUnlock(M_STATE); stringAppend(wm->string, ")"); sendToWebServer(wm); return BOOL_YES; } else { INFO2("[WS]: (%d) Wrong selected index in list, ignore.", tvisits); } return BOOL_NO; } boolean_t securityCheck(_WebClientConnection* cc, int tvisits, long c, char* path) { boolean_t passed = BOOL_YES; if (getUsePassword()) { INFO2("[WS]: (%d) secure mode", tvisits); if (cc->conn->secure == COOKIE_SENT) { INFO2("[WS]: (%d) secure mode, test cookie", tvisits); if (c != cc->conn->cookie) { INFO2("[WS]: (%d) wrong cookie (wait for %ld)", tvisits, cc->conn->cookie); passed = BOOL_NO; } else { INFO2("[WS]: (%d) cookie OK (%ld)", tvisits, cc->conn->cookie); } } else if (cc->conn->secure == NO_COOKIE) { INFO2("[WS]: (%d) secure mode, ask for pass", tvisits); passed = BOOL_NO; } else { // cc->conn->secure == NEED_SEND_COOKIE INFO2("[WS]: (%d) secure mode, retrieve password", tvisits); char* p = NULL; if ((p = strstr(path, HTTP_EDITFIELD))) { // edit field char * item = strstr(path, HTTP_ACTION); if (!item) { INFO2("[WS]: (%d) No data in edit field, ignore", tvisits); passed = BOOL_NO; } else { item += strlen(HTTP_ACTION); INFO2("[WS]: (%d) edit field %s", tvisits, item); char* plus = NULL; while((plus = strstr(item,"+"))) { *plus = ' '; // replace "+" back to spaces } char * amp = strstr(p,"&"); *amp = '\0'; char* index = p + strlen(HTTP_EDITFIELD); if (strcmp("Ok", item) == 0 || strcmp("Select", item) == 0) { // WEB edit field OK string_t* cmd = stringNew("Msg:_PASSWORD_"); stringAppend(cmd, "(,"); stringAppend(cmd, index); stringAppend(cmd, ")"); if (checkPassword(cmd->str)) { // hack to send response with current form *path = '/'; *(path+1) = '\0'; srandom((unsigned int) time(NULL)); cc->conn->cookie = random(); } else { INFO2("[WS]: (%d) secure mode, wrong password", tvisits); passed = BOOL_NO; } stringFree(cmd, BOOL_YES); } else { // WEB edit field Cancel INFO2("[WS]: (%d) secure mode, cancel pressed", tvisits); passed = BOOL_NO; } } } else if ((p = strstr(path,XML_EFIELD_SUBMIT))) { // CMXML edit field OK char * item = p+strlen(XML_EFIELD_SUBMIT); INFO2("[WS]: (%d) Entered value %s", tvisits, item); string_t* cmd = stringNew("Msg:_PASSWORD_"); stringAppend(cmd, "(,"); stringAppend(cmd, item); stringAppend(cmd, ")"); if (checkPassword(cmd->str)) { // hack to send response with current form *path = '/'; *(path+1) = '\0'; srandom((unsigned int) time(NULL)); cc->conn->cookie = random(); } else { passed = BOOL_NO; } stringFree(cmd, BOOL_YES); } else if ((p = strstr(path,XML_EFIELD_CANCEL))) { // CMXML edit field Cancel INFO2("[WS]: (%d) secure mode, cancel pressed XML", tvisits); passed = BOOL_NO; } else { INFO2("[WS]: (%d) secure mode, request password", tvisits); passed = BOOL_NO; } } if (passed == BOOL_NO) { string_t* content = (cc->runMode == SERVER_CMXML ? renderPassXMLForm (cc->conn->serverIP, cc->serverPort) : renderPassHTMLForm(cc->conn->serverIP, cc->serverPort)); if (content) { cc->conn->secure = NEED_SEND_COOKIE; sendForm(cc, content, BOOL_NO); stringFree(content, BOOL_YES); } } else { cc->conn->secure = COOKIE_SENT; } } return passed; } void sendButtonPress(int button) { wMessage* wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = button; wm->string = (void*) NULL; sendToWebServer(wm); } boolean_t processHtmlButtonPress(int tvisits, char* p) { *p = '\0'; p--; while (isdigit(*p)) { p--; } int button = ((++p == '\0') ? -1 : atoi(p)+1); INFO2("[WS]: (%d) Got button %d", tvisits, button); sendButtonPress(button); return BOOL_YES; } boolean_t processXmlButtonPress(int tvisits, char* p) { p += strlen(XML_BUTTON_PRESS); int button = atoi(p); INFO2("[WS]: (%d) Got button XML %d", tvisits, button); sendButtonPress(button); return BOOL_YES; } boolean_t processHtmlMenu(int tvisits, char* p) { *p = '\0'; p--; while (*p != '/') { p--; } INFO2("[WS]: (%d) Got menu item %s", tvisits, ++p); wMessage* wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew(""); char * ptr = p; char * p2 = NULL; while ((p2 = strstr(ptr,"%20"))) { // replace %20 to space *p2 = '\0'; stringAppend(wm->string, ptr); stringAppend(wm->string, " "); ptr = (p2 + 3); } stringAppend(wm->string, ptr); sendToWebServer(wm); return BOOL_YES; } boolean_t processXmlShortMenu(int tvisits, char* p) { boolean_t wait = BOOL_NO; p += strlen(XML_SHORT_MENU); INFO2("[WS]: (%d) Got menu item %s", tvisits, p); int idx = atoi(p) - 1; mutexLock(M_STATE); int iLen = menuSize(); mutexUnlock(M_STATE); if (idx >= 0 && idx < iLen) { mutexLock(M_STATE); SingleList *menuItem = menuNth(idx); if (menuItem) { wMessage* wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew(""); stringAppend(wm->string, ((string_t*) menuItem->data)->str); sendToWebServer(wm); wait = BOOL_YES; } else { ERROR2("[WS]: Can not get list item #%d from list having %d items", idx, iLen); } mutexUnlock(M_STATE); } else { INFO2("[WS]: (%d) Wrong selected index in list, ignore..", tvisits); } return wait; } boolean_t processXmlListMenu(int tvisits, char* p) { p += strlen(XML_LIST_MENU); char * q = strstr(p,"?"); *q = '\0'; q++; INFO2("[WS]: (%d) Got list menu item (%s,%s)", tvisits, p, q); int menu_idx = atoi(p) - 1; int list_idx = atoi(q); return handleMenuOnList(menu_idx, list_idx, tvisits); } boolean_t processXmlListMenu2(int tvisits, char* p) { boolean_t wait = BOOL_NO; p += strlen(XML_LIST_MENU2); INFO2("[WS]: (%d) Got list menu item %s", tvisits, p); char * item = strstr(p,","); if (!item) { INFO2("[WS]: (%d) Improper item in list, ignore", tvisits); } else { (*item) = '\0'; item++; int lidx = atoi(p); int midx = atoi(item) - 1; if (handleMenuOnList(midx, lidx, tvisits)) { wait = BOOL_YES; } } return wait; } void processXmlLongMenu(_WebClientConnection* cc, int tvisits, char* p) { p += strlen(XML_LONG_MENU); INFO2("[WS]: (%d) Got menu wrapper %s", tvisits, p); string_t* content = sendXMLMenu(atoi(p), cc->conn->serverIP, cc->serverPort, -1); if (content) { sendForm(cc, content, BOOL_YES); stringFree(content, BOOL_YES); } } void processXmlExtMenu(_WebClientConnection* cc, int tvisits, char* p) { p += strlen(XML_LIST_MENU_EXT); p++; INFO2("[WS]: (%d) Got list item %s", tvisits, p); int listItem = atoi(p); string_t* content = sendXMLMenu(LI, cc->conn->serverIP, cc->serverPort, listItem); if (content) { sendForm(cc, content, BOOL_YES); stringFree(content, BOOL_YES); } } boolean_t processHtmlListMenu(int tvisits, char* p, char* path) { boolean_t wait = BOOL_NO; char * item = strstr(path, HTTP_ACTION); if (!item) { INFO2("[WS]: (%d) No selected item in list, ignore", tvisits); } else { if (item) { item += strlen(HTTP_ACTION); } char* plus = NULL; while((plus = strstr(item,"+"))) { *plus = ' '; // replace "+" back to spaces } char * amp = strstr(p,"&"); *amp = '\0'; char* index = p + 5; // size("list=") == 5 int idx = atoi(index); mutexLock(M_STATE); int iLen = lfSize(); if (idx >= 0 && idx < iLen) { wMessage* wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew("Msg:"); stringAppend(wm->string, item); stringAppend(wm->string, "("); char b[32]; stringAppend(wm->string, i2string(idx+1,b)); stringAppend(wm->string, ","); SingleList *ptr = lfListNth(idx); stringAppend(wm->string, ((ListItem*) ptr->data)->string->str); INFO2("[WS]: choosed list item (%s)", ((ListItem*) ptr->data)->string->str); stringAppend(wm->string, ")"); sendToWebServer(wm); wait = BOOL_YES; } else { INFO2("[WS]: (%d) Wrong selected index in list, ignore...", tvisits); } mutexUnlock(M_STATE); } return wait; } boolean_t processHtmlEfield(_WebClientConnection* cc, int tvisits, char* p, char* path) { boolean_t wait = BOOL_NO; char * item = strstr(path, HTTP_ACTION); if (!item) { INFO2("[WS]: (%d) No data in edit field, ignore", tvisits); } else { item += strlen(HTTP_ACTION); INFO2("[WS]: (%d) edit field %s", tvisits, item); char* plus = NULL; while((plus = strstr(item,"+"))) { *plus = ' '; // replace "+" back to spaces } char * amp = strstr(p,"&"); *amp = '\0'; char* index = p + strlen(HTTP_EDITFIELD); wMessage* wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; if (efPassword()) { // password was asked from cfg.file so do not handle it internally // reset coockie cc->conn->secure = NEED_SEND_COOKIE; srandom((unsigned int) time(NULL)); cc->conn->cookie = random(); if (strcmp("Ok", item) == 0) { wm->string = stringNew("Msg:_PASSWORD_(,"); stringAppend(wm->string, index); stringAppend(wm->string, ")"); setEfPassword(BOOL_NO); } } else { wm->string = stringNew("Msg:"); stringAppend(wm->string, item); stringAppend(wm->string, "(,"); stringAppend(wm->string, index); stringAppend(wm->string, ")"); } sendToWebServer(wm); wait = BOOL_YES; } return wait; } boolean_t processXmlEfieldSubmit(_WebClientConnection* cc, int tvisits, char* p) { char * item = p+strlen(XML_EFIELD_SUBMIT); INFO2("[WS]: (%d) Entered value %s", tvisits, item); wMessage* wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; if (efPassword()) { // reset coockie cc->conn->secure = NEED_SEND_COOKIE; srandom((unsigned int) time(NULL)); cc->conn->cookie = random(); wm->string = stringNew("Msg:_PASSWORD_"); setEfPassword(BOOL_NO); } else { wm->string = stringNew("Msg:Ok"); } stringAppend(wm->string, "(,"); stringAppend(wm->string, item); stringAppend(wm->string, ")"); sendToWebServer(wm); return BOOL_YES; } boolean_t processXmlEfieldCancel() { wMessage* wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew("Msg:Back(,)"); sendToWebServer(wm); return BOOL_YES; } static struct { string_t* (*hooks[6]) (string_t*, int) ; // CF,TX,LI,FM,WM,EF } _renderHooks[] = { // CF TX LI FM WM EF /* SERVER_WEB */ {{renderCtrlHTMLForm, renderTextHTMLForm, renderListHTMLForm, NULL, renderWmanHTMLForm, renderEditHTMLForm}}, /* SERVER_CMXML*/ {{renderCtrlXMLForm, renderTextXMLForm, renderListXMLForm, NULL, renderWmanXMLForm, renderEditXMLForm }} }; static void renderForm(int tvisits, _WebClientConnection* cc) { int f = curForm() - 1; int idx = (cc->runMode == SERVER_CMXML ? 1 : 0); INFO2("[WS]: (%d) renderForm %d", tvisits, f); if (_renderHooks[idx].hooks[f]) { string_t* content = _renderHooks[idx].hooks[f](cc->conn->serverIP, cc->serverPort); if (content) { sendForm(cc, content, BOOL_YES); stringFree(content, BOOL_YES); } } } // separate thread for each request pointer_t serveRequest(pointer_t data) { char buf[4096]; char *method = NULL; char *path = NULL; struct stat statbuf; signal(SIGPIPE, SIG_IGN); // why id did not inherit this ? _WebClientConnection* cc = (_WebClientConnection*) data; int tvisits; INFO2("[WS]: -------------------------------------------------------"); mutexLock(M_WEB); tvisits = ++visits; mutexUnlock(M_WEB); INFO2("[WS]: (%d) process request", tvisits); /*if (answerReady == BOOL_NO) { INFO2("[WS]: (%d) drop request", tvisits); sendError(cc, 304, "Please wait", NULL, "Please wait."); return (void*) -1; }*/ int wasRead = read(cc->connDescriptor, buf, sizeof(buf)-1); if (wasRead<0) { free(data); return (void*) -1; } buf[wasRead] = '\0'; INFO2("[WS]: (%d) URL: %s", tvisits, buf); char * cookieLine = NULL; char* firstLine = strtok(buf, "\r"); int rq = RQ_UNKNOWN; if (!firstLine) { INFO2("[WS]: non-valid request >%s<",buf); free(data); return (void*) -1; } if (strstr(firstLine,"POST ")) { rq = RQ_POST; } else if (strstr(firstLine,"GET ")) { rq = RQ_GET; } char * line = NULL; char * screenDef = NULL; char * screenDef2 = NULL; while ((line = strtok(NULL, "\r"))) { if (strstr(line,"Cookie:")) { cookieLine = line; } if (rq == RQ_POST) { path = line; // it will be last one } if (cc->runMode == SERVER_CMXML && strstr(line,"x-CiscoIPPhoneDisplay:")) { screenDef = line; } if (cc->runMode == SERVER_CMXML && strstr(line,"x-CiscoIPPhoneModelName:")) { screenDef2 = line; } } //parse path for GET request" GET /path HTTP/1.1 method = strtok(firstLine, " "); if (rq == RQ_GET) { //path = strtok(NULL, " "); path = firstLine + 4; // "GET " char *ptr = strstr(path," HTTP"); if (ptr) { *ptr = '\0'; } } long c = parseCookie(cookieLine); INFO2("[WS]: (%d) Path: >%s<", tvisits, path); INFO2("[WS]: (%d) Cookie: %ld", tvisits, c); if (screenDef) { parseScreenDef(screenDef); } if (screenDef2) { parseCiscoModel(screenDef2); } char* p = NULL; boolean_t wait = BOOL_NO; boolean_t allowed = securityCheck(cc, tvisits, c, path); // if fail, generates edit field to ask pass inside if (allowed) { if (rq == RQ_UNKNOWN) { ERROR2("[WS]: (%d) Method %s is not supported", tvisits, (method?method:"UNKNOWN")); sendError(cc, 501, "Not supported", NULL, "Method is not supported."); } else if (strcmp(path,"/") == 0 || strcmp(path,"\n") == 0) { renderForm(tvisits, cc); //wait = BOOL_YES; } else if (strncmp(path,"/?name=SEP", 10) == 0) { // URL: GET /?name=SEP0014F2C23169&locale=United_States_English HTTP/1.0 renderForm(tvisits, cc); //wait = BOOL_YES; } else if (strcmp(path,"/favicon.ico") == 0) { sendFavicon(cc); } else if (strstr((path+1),"/") == NULL && strstr(path,".png")) { // icon sendIcon(cc, path); } else if (strstr((path+1),"/") == NULL && strstr(path,".cover")) { // named cover sendCover(cc, path); } else if ((p = strstr(path,".key"))) { // button pressed, web server wait = processHtmlButtonPress(tvisits,p); } else if ((p = strstr(path,XML_BUTTON_PRESS))) { // button pressed, cm-xml wait = processXmlButtonPress(tvisits,p); } else if ((p = strstr(path,".menu"))) { // menu in text screen wait = processHtmlMenu(tvisits, p); } else if ((p = strstr(path,XML_SHORT_MENU))) { // menu (shorter than XML_SOFTKEY_NUM items) in CMXML wait = processXmlShortMenu(tvisits, p); } else if ((p = strstr(path,XML_LIST_MENU))) { // list short menu handling in CMXML wait = processXmlListMenu(tvisits, p); } else if ((p = strstr(path,XML_LIST_MENU2))) { // list menu handling (2nd step) in CMXML wait = processXmlListMenu2(tvisits, p); } else if ((p = strstr(path, XML_LONG_MENU))) { // menu (more than XML_SOFTKEY_NUM items) in CMXML processXmlLongMenu(cc, tvisits, p); } else if ((p = strstr(path, XML_LIST_MENU_EXT))) { // list menu extension in CMXML processXmlExtMenu(cc, tvisits, p); } else if ((p = strstr(path,"list="))) { // menu in list screen, list item choosed wait = processHtmlListMenu(tvisits, p, path); } else if ((p = strstr(path, HTTP_EDITFIELD))) { // edit field wait = processHtmlEfield(cc, tvisits, p, path); } else if ((p = strstr(path,XML_EFIELD_SUBMIT))) { // CMXML edit field OK wait = processXmlEfieldSubmit(cc, tvisits, p); } else if ((p = strstr(path,XML_EFIELD_CANCEL))) { // CMXML edit field Cancel wait = processXmlEfieldCancel(); } else if ((p = strstr(path, HTTP_ACTION))) { // menu in list screen, no list item choosed // or key press p += strlen(HTTP_ACTION); char* btn = p; while (isdigit(*btn)) { btn++; } int button = -1; if (btn != p) { *btn = '\0'; button = atoi(p); } wMessage* wm = NULL; if (button > 0) { INFO2("[WS]: (%d) Got button %d", tvisits, button); wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = button; wm->string = (void*) NULL; } else { char* plus = NULL; while((plus = strstr(p,"+"))) { *plus = ' '; // replace "+" back to spaces } wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew("Msg:"); stringAppend(wm->string, p); stringAppend(wm->string, "(,)"); } if (wm) { sendToWebServer(wm); wait = BOOL_YES; } } else if (strstr(path,"xml_layout")) { // ControlForm as image in CMXML sendGeneratedImage(cc, "layout_xml.png"); } else if (strstr(path,"xml_image")) { // WindowManager screen as image in CMXML renderXMLImage(); sendGeneratedImage(cc, "image_xml.png"); } else if (strstr(path,"anyremote.gui")) { // iViewer GUI file reguest sendIViewerGui(cc); } else if (strstr(path,"generated_cover")) { // cover for iViewer sendGeneratedImage(cc, "generated_cover"); } else { // treat as file/dir name string_t* fpath = stringNew(""); if (getIViewer()) { // search images in $(CfgData)/Icons/iViewer stringAppend(fpath, cc->conn->confDir); stringAppend(fpath,"/Utils/iViewer/"); } stringAppend(fpath, path); if (stat(fpath->str, &statbuf) < 0) { ERROR2("[WS]: (%d) File %s not found", tvisits, fpath->str); sendError(cc, 404, "Not Found", NULL, "File not found."); /*} else if (S_ISDIR(statbuf.st_mode)) { //INFO2("[WS]: (%d) Directory listing requested", tvisits); len = fpath->len; if (len == 0 || fpath->str[len - 1] != '/') { snprintf(pathbuf, sizeof(pathbuf), "Location: %s/", fpath->str); sendError(cc, 302, "Found", pathbuf, "Directories must end with a slash."); } else { snprintf(pathbuf, sizeof(pathbuf), "%sindex.html", path); if (stat(pathbuf, &statbuf) >= 0) { sendFile(cc, pathbuf, &statbuf); } else { DIR *dir; struct dirent *de; sendHeaders(cc, 200, "OK", NULL, "text/html", -1, statbuf.st_mtime); sprintf(f, "Index of %s\r\n", fpath->str); bytes_sent = send(fd,f,strlen(f),0); sprintf(f, "

Index of %s

\r\n
\n", path);
                            sendData(cc, f);

                            sendData(cc, "Name Last Modified Size\r\n");
                            sendData(cc, "
\r\n"); //if (len > 1) { // sprintf(f, "..\r\n"); // sendData(fd, f); //} //INFO2("[Thread] Parse %s\n", path); dir = opendir(fpath->str); while ((de = readdir(dir)) != NULL) { char timebuf[32]; struct tm *tm; strcpy(pathbuf, path); strcat(pathbuf, de->d_name); stat(pathbuf, &statbuf); tm = gmtime(&statbuf.st_mtime); strftime(timebuf, sizeof(timebuf), "%d-%b-%Y %H:%M:%S", tm); sprintf(f, "", de->d_name, S_ISDIR(statbuf.st_mode) ? "/" : ""); sendData(cc, f); sprintf(f, "%s%s", de->d_name, S_ISDIR(statbuf.st_mode) ? "/" : " "); sendData(cc, f); if (_D_EXACT_NAMLEN(de) < 32) { sprintf(f, "%*s", (int) (32 - _D_EXACT_NAMLEN(de)), ""); sendData(cc, f); } if (S_ISDIR(statbuf.st_mode)) { sprintf(f, "%s\r\n", timebuf); sendData(cc, f); } else { sprintf(f, "%s %10d\r\n", timebuf, (int) statbuf.st_size); sendData(cc, f); } } closedir(dir); sprintf(f, "
\r\n
\r\n
%s
\r\n\r\n", SERVER); } }*/ } else { INFO2("[WS] (%d) Send file", tvisits); sendFile(cc, fpath->str, &statbuf); } stringFree(fpath, BOOL_YES); } } if (wait) { mutexLock(M_WEB); answerReady = BOOL_NO; mutexUnlock(M_WEB); int waitingTime = 0; while (!answerReady && waitingTime < 1500) { // 1/50*1500 = 30 sec // Main loop timer (1/50 of second) usleep(20000); waitingTime++; } INFO2("[WS]: (%d) Wait answer for %d (1/50 sec)", tvisits, waitingTime); renderForm(tvisits, cc); } close(cc->connDescriptor); mutexLock(M_WEB); //INFO2("[WS]: (%d) clientSockets before remove #%d", tvisits, listSingleLength(cc->conn->clientSockets)); cc->conn->clientSockets = listSingleRemove(cc->conn->clientSockets, CAST_INT_TO_POINTER(cc->connDescriptor)); //INFO2("[WS]: (%d) clientSockets after remove #%d", tvisits, listSingleLength(cc->conn->clientSockets)); free(data); mutexUnlock(M_WEB); INFO2("[WS]: (%d) Request processed", tvisits); threadExit(T_MAX); return (void*)0; } int webFD(ConnectInfo* conn) { _WebConnection* cn = (_WebConnection*) conn->connectionData; if (!cn) { return -1; } return (conn->state == PEER_WAIT_ACCEPT || conn->state == PEER_WAIT_LISTEN ? cn->serverFileDescriptor : -1); } static void freeConn(ConnectInfo* conn) { INFO2("[WS]: freeConn"); _WebConnection* cn = (_WebConnection*) conn->connectionData; mutexLock(M_WEB); SingleList* list = cn->clientSockets; while (list) { int clientFD = CAST_POINTER_TO_INT(list->data); if (clientFD > 0) { close(clientFD); } list = listSingleNext(list); } listSingleFree(cn->clientSockets); cn->clientSockets = NULL; mutexUnlock(M_WEB); if (cn->serverFileDescriptor != -1) { close(cn->serverFileDescriptor); cn->serverFileDescriptor = -1; } if (cn->serverIP) { stringFree(cn->serverIP, BOOL_YES); cn->serverIP = NULL; } if (cn->confDir) { free(cn->confDir); cn->confDir = NULL; } free(conn->connectionData); conn->connectionData = NULL; } static int openWebInternal(ConnectInfo* conn) { INFO2("[WS]: openWebInternal"); mutexNew(M_WEB); queueNew(Q_WEB); if (conn->connectionData) { freeConn(conn); } conn->connectionData = (_WebConnection*) malloc(sizeof(_WebConnection)); _WebConnection* cn = (_WebConnection*) conn->connectionData; cn->serverFileDescriptor = -1; cn->cookie = 0; cn->secure = NO_COOKIE; cn->confDir = dupVarValue(VAR_CFGDIR); cn->clientSockets = NULL; cn->serverIP = NULL; if (conn->mode == SERVER_WEB) { initHtmlGenerator(); } char* v2 = dupVarValue("RefreshPage"); if (v2) { cn->refreshPage = atoi(v2); free(v2); if (cn->refreshPage <= 0) { cn->refreshPage = -1; } } else { cn->refreshPage = -1; } INFO2("[WS]: $(RefreshPage) = %d", cn->refreshPage); char* v3 = dupVarValue("IpAddr"); if (v3 != NULL) { INFO2("[WS]: $(IpAddr) = %s", v3); cn->serverIP = stringNew(v3); free(v3); } else { // try to get it ourselves string_t* ip = getLocalIP(); if (ip) { cn->serverIP = stringNew(ip->str); stringFree(ip,BOOL_YES); } } INFO2("[WS]: set Server IP as = %s", (cn->serverIP ? cn->serverIP->str : "not determined")); struct sockaddr_in sin; memset((void *) &sin, 0, sizeof(sin)); cn->serverFileDescriptor = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (cn->serverFileDescriptor < 0) { logger(L_ERR, "[WS]: Failed to create a socket for web server"); return -1; } int optval = 1; setsockopt(cn->serverFileDescriptor, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = INADDR_ANY; sin.sin_port = htons(conn->port); int ret = bind(cn->serverFileDescriptor, (struct sockaddr *) &sin, sizeof(sin)); if (ret < 0) { logger(L_ERR, "[WS]: webServerMain: Failed to bind a socket"); printf("ERROR: on binding %d->%s\n", errno, strerror(errno)); return -1; } return 0; } int openWeb(ConnectInfo* conn) { DEBUG2("[DS]: Web Server mode. Use port %d", conn->port); if (openWebInternal(conn) < 0) { conn->state = PEER_DISCONNECTED; return EXIT_NOK; } conn->state = PEER_WAIT_LISTEN; return EXIT_OK; } int listenWeb(ConnectInfo* conn) { logger(L_INF, "[DS]: Server mode: listen from web peer "); _WebConnection* cn = (_WebConnection*) conn->connectionData; if (!cn) { return -1; } int ret = listen(cn->serverFileDescriptor, 100); // allow many request at once if (ret >= 0) { conn->state = PEER_WAIT_ACCEPT; } return (ret < 0 ? -1 : 1); } // // Wait for incoming connection // int acceptWeb(ConnectInfo* conn) { logger(L_INF, "[WS]: acceptWeb"); _WebConnection* cn = (_WebConnection*) conn->connectionData; if (!cn) { return -1; } while (stillRun) { logger(L_INF, "[WS]: HTTP server ready to accept connection"); int s = accept(cn->serverFileDescriptor, NULL, NULL); if (s < 0) { errnoDebug("[WS]: accept() ",errno); // testing debug if (errno == EAGAIN) { continue; } else { return -1; } } char buf[INET6_ADDRSTRLEN]; peerName(s,buf,INET6_ADDRSTRLEN); INFO2("[WS]: acceptWeb: HTTP server accepts connection from %s", buf); if (isAllowed(buf)) { INFO2("[WS]: acceptWeb: connection accepted"); _WebClientConnection* ptr = (_WebClientConnection*) malloc(sizeof(_WebClientConnection)); ptr->serverPort = conn->port; ptr->connDescriptor = s; ptr->runMode = conn->mode; ptr->conn = cn; mutexLock(M_WEB); cn->clientSockets = listSingleAppend(cn->clientSockets, CAST_INT_TO_POINTER(s)); mutexUnlock(M_WEB); int rq = threadNew(T_MAX, serveRequest, (void *) ptr, DETACHED); if (rq != RC_OK) { logger(L_ERR, "[WS]: acceptWeb: Can not run processing thread"); } } else { INFO2("[WS]: acceptWeb: host %s is not in the list of accepted host, skip connection", buf); close(s); } break; } logger(L_INF, "[WS]: acceptWeb OK"); return 1; } int checkWebPort(char* buf, int capacity) { //logger(L_DBG,"[DS]: checkWebPort"); if (queueExists(Q_WEB) != RC_OK) { return 0; } //logger(L_DBG,"[WS]: checkWebPort queueExists"); int l = 0; // Verify commands from queue (timeout about 1/2 sec) wMessage* wm = (wMessage*) queuePop(Q_WEB); if (wm != NULL) { logger(L_DBG, "[DS]: Got event"); if (wm->button > 0) { INFO2("[DS]: Button pressed %d", wm->button); char bbuf[16]; if (wm->button == 10) { sprintf(bbuf,"Msg:%c",'*'); } else if (wm->button == 11) { sprintf(bbuf,"Msg:%c",'0'); } else if (wm->button == 12) { sprintf(bbuf,"Msg:%c",'#'); } else { sprintf(bbuf,"Msg:%d",wm->button); } strncpy(buf,bbuf,capacity); l = strlen(buf); } else if (wm->string) { INFO2("[DS]: Data %s", wm->string->str); strncpy(buf,wm->string->str,capacity); l = strlen(wm->string->str); } freeWMessage(wm); } return l; } void webClose(ConnectInfo* conn, int final) { INFO2("[WS]: webClose %d", final); //if (final) { -- if app started then it will keep HTTP/XML connection opened _WebConnection* cn = (_WebConnection*) conn->connectionData; if (cn) { INFO2("[WS]: webClose serverIP %s", cn->serverIP && cn->serverIP->str ? cn->serverIP->str : "NULL"); // close all sockets mutexLock(M_WEB); INFO2("[WS]: clientSockets before cleanup #%d", listSingleLength(cn->clientSockets)); SingleList* list = cn->clientSockets; while (list) { int clientFD = CAST_POINTER_TO_INT(list->data); if (clientFD > 0) { close(clientFD); } list = listSingleNext(list); } listSingleFree(cn->clientSockets); cn->clientSockets = NULL; mutexUnlock(M_WEB); if (cn->serverFileDescriptor >= 0) { if (final) { logger(L_INF, "closeSocket close web server socket"); } close(cn->serverFileDescriptor); cn->serverFileDescriptor = -1; } if (cn->serverIP) { INFO2("[WS]: serverIP %s", cn->serverIP->str); stringFree(cn->serverIP, BOOL_YES); } if (cn->confDir) { free(cn->confDir); cn->confDir = NULL; } mutexRemove(M_WEB); queueRemove(Q_WEB, freeWMessage); free(conn->connectionData); conn->connectionData = NULL; } //} conn->state = PEER_DISCONNECTED; return; } void webReset(ConnectInfo* conn) { webClose(conn, 0); } int writeWebConnStr(const char* value, int mode) { DEBUG2("[WS]: writeWebConnStr %d", (value ? (int) strlen(value) : -1)); wMessage* wm = NULL; wMessage* wm2 = NULL; char * cmd = strdup(value); //boolean_t skipSpaces = BOOL_NO; //INFO2("[WS]: parse lenght %d", (cmd ? (int) strlen(cmd) : 0)); stripCommandEnding(cmd); if (strlen(cmd) < MAXMAXLEN) { INFO2("[WS]: parse %d %s", curForm(), cmd); } else { INFO2("[WS]: parse %d ... command too long ...", curForm()); } char* token = strtok(cmd,","); while (isspace(*token)) { ++token; } mutexLock(M_WEB); if (strncmp(token,"Get(password",12) == 0) { // user can add Get(password) inside cfg.file, so handle it also setPassField(); } else if (strncmp(token,"Get(screen_size",16) == 0) { int w = htmlScreenWidth (); int h = htmlScreenHeight(); if (mode == SERVER_CMXML) { w = xmlScreenWidth (); h = xmlScreenHeight(); } char b[32]; wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew("Msg:SizeX("); const char *buf = i2string(w,b); stringAppend(wm->string,buf); stringAppend(wm->string,",)"); wm2 = (wMessage*) malloc(sizeof(wMessage)); wm2->button = -1; wm2->string = stringNew("Msg:SizeY("); buf = i2string(h,b); stringAppend(wm2->string,buf); stringAppend(wm2->string,",)"); } else if (strncmp(token,"Get(icon_padding",16) == 0) { char b[32]; const char *buf = i2string(iconPadding(),b); wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew("Msg:IconPadding("); stringAppend(wm->string,buf); stringAppend(wm->string,",)"); } else if (strncmp(token,"Get(model",9) == 0) { wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew("WebInterface"); } else if (strncmp(token,"Get(is_exists",13) == 0) { char* what = strtok(NULL,","); char* sz = strtok(NULL,","); if (sz && what) { int isCover = strcmp("cover",what); while (isspace(*sz)) { ++sz; } while (isspace(*what)) { ++what; } char* icon = NULL; if (isCover != 0) { icon = strtok(NULL,","); } wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; if (isCover == 0) { wm->string = stringNew("Msg:CoverExists(,"); stringAppend(wm->string,sz); } else if (icon) { while (isspace(*icon)) { ++icon; } wm->string = stringNew("Msg:IconExists("); stringAppend(wm->string,sz); stringAppend(wm->string,","); stringAppend(wm->string,icon); } stringAppend(wm->string,")"); } } else if (strncmp(token,"Get(cover_size",14) == 0) { wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew("Msg:CoverSize("); char b[32]; stringAppend(wm->string, i2string((mode == SERVER_CMXML ? xmlScreenHeight() : (htmlScreenHeight()*8)/10),b)); stringAppend(wm->string,",)"); } else if (strncmp(token,"Get(version",11) == 0) { wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew("Msg:Version(,web_interface)"); } else if (strncmp(token,"Get(cursor",10) == 0) { // ignore } else if (strncmp(token,"Get(ping",8) == 0) { wm = (wMessage*) malloc(sizeof(wMessage)); wm->button = -1; wm->string = stringNew("Msg:Ping"); } else if (strncmp(token,"End(",4) == 0) { answerReady = BOOL_YES; } else { ERROR2("[WS]: Unknown command %s", token); } mutexUnlock(M_WEB); if (wm) { sendToWebServer(wm); } if (wm2) { sendToWebServer(wm2); } free(cmd); INFO2("[WS]: parsed %d", curForm()); return EXIT_OK; } int writeWebConn(const dMessage* dm, int mode) { INFO2("[WS]: writeWebConn %d (%d)", dm->type, dm->size); if (dm->type == DM_SET || dm->type == DM_GET) { if (strncmp(dm->value,"Get(",4) == 0 || // Set(...) command updates state inside peer.c : writePeers() strncmp(dm->value,"End();",6) == 0) { return writeWebConnStr(dm->value, mode); } } else if (dm->type == DM_SETFILE) { // Set(cover|image...) command updates state inside peer.c : writePeers() } else { ERROR2("[WS]: Not supported"); } return EXIT_OK; } // // Special case for Web/CMXML servers // int writeWeb(ConnectInfo* peer, const dMessage* dm) { INFO2("[WS]: writeWeb (%d)", dm->size); // suppose peer->mode == SERVER_WEB || peer->mode == SERVER_CMXML if (dm->type == DM_SENDB || dm->type == DM_SENDS) { INFO2("[WS]: writeWeb SKIP"); return EXIT_NOK; // skip that } if (dm->type == DM_SET) { if (isDataOld(peer, dm->subtype, dm->value, dm->size)) { INFO2("[DS]: Skip to send the same data to WEB/CMXML peer"); return EXIT_OK; } } return writeWebConn(dm, peer->mode); } anyremote-6.7.1/src/queue.h0000644000232200023220000000231712664332726016200 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // Message queue related wrappers // #ifndef _QUEUE_H_ #define _QUEUE_H_ 1 #include "list.h" enum QueueID { Q_DISP = 0, Q_EXEC, Q_MAIN, Q_WEB, Q_MAX }; int queueNew (int id); void* queuePop (int id); int queueCanPop(int id); int queuePush (int id, void* data); int queueExists(int id); void queueRemove(int id, DestroyCallback func); #endif anyremote-6.7.1/src/mutex.c0000644000232200023220000000651412673224605016210 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include "utils.h" // // Mutex related wrappers // #include "common.h" #include "mutex.h" #ifdef USE_GLIB #include #if GLIB_MAJOR_VERSION >=2 && GLIB_MINOR_VERSION >= 32 static GMutex _mutexes[M_MAX]; int mutexNew(int id) { if (id >=0 && id < M_MAX) { return RC_OK; } return RC_NOK; } void mutexLock(int id) { if (id >=0 && id < M_MAX) { //printf("mutexLock %d\n", id); g_mutex_lock(&_mutexes[id]); } } void mutexUnlock(int id) { if (id >=0 && id < M_MAX) { g_mutex_unlock(&_mutexes[id]); } } void mutexRemove(int id) { } int mutexExists(int id) { return (id >=0 && id < M_MAX ? RC_OK : RC_NOK); } #else // GLIB 2.31 and older GMutex* _mutexes[M_MAX] = {NULL}; int mutexNew(int id) { if (id >=0 && id < M_MAX && _mutexes[id] == NULL) { _mutexes[id] = g_mutex_new(); return RC_OK; } return RC_NOK; } void mutexLock(int id) { if (id >=0 && id < M_MAX && _mutexes[id] != NULL) { //printf("mutexLock %d\n", id); g_mutex_lock(_mutexes[id]); } } void mutexUnlock(int id) { if (id >=0 && id < M_MAX && _mutexes[id] != NULL) { //printf("mutexUnlock %d\n", id); g_mutex_unlock(_mutexes[id]); } } void mutexRemove(int id) { if (id >=0 && id < M_MAX && _mutexes[id] != NULL) { g_mutex_free(_mutexes[id]); _mutexes[id] = NULL; } } int mutexExists(int id) { return (id >=0 && id < M_MAX && _mutexes[id] != NULL ? RC_OK : RC_NOK); } #endif #else #include #include #include #include pthread_mutex_t* _mutexes[M_MAX] = {NULL}; int mutexNew(int id) { //printf("mutexNew %d\n", id); if (id >=0 && id < M_MAX && _mutexes[id] == NULL) { pthread_mutex_t* m = malloc(sizeof( pthread_mutex_t)); pthread_mutex_init(m, NULL); _mutexes[id] = m; //printf("mutexNew %d ok\n", id); return RC_OK; } return RC_NOK; } void mutexLock(int id) { if (id >=0 && id < M_MAX && _mutexes[id] != NULL) { pthread_mutex_lock(_mutexes[id]); } } void mutexUnlock(int id) { if (id >=0 && id < M_MAX && _mutexes[id] != NULL) { pthread_mutex_unlock(_mutexes[id]); } } void mutexRemove(int id) { if (id >=0 && id < M_MAX && _mutexes[id] != NULL) { pthread_mutex_destroy(_mutexes[id]); free(_mutexes[id]); _mutexes[id] = NULL; } } int mutexExists(int id) { return (id >=0 && id < M_MAX && _mutexes[id] != NULL ? RC_OK : RC_NOK); } #endif anyremote-6.7.1/src/pr_frontend.h0000644000232200023220000000221312664332726017367 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PR_FRONTEND_H #define _PR_FRONTEND_H #include "peer.h" // Frontend support int feFD (ConnectInfo* conn); int feOpen (ConnectInfo* conn); void feClose (ConnectInfo* conn, int final); void feReset (ConnectInfo* conn); int feRead (int fd); void feWrite (ConnectInfo* conn, const char* buf); #endif anyremote-6.7.1/src/thread.c0000644000232200023220000000737212673224605016320 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // Thread related wrappers // #include #include #include "common.h" #include "thread.h" extern char tmp[MAXMAXLEN]; #ifdef USE_GLIB GThread* _threads[T_MAX] = {NULL}; #if 0 //GLIB_MAJOR_VERSION >=2 && GLIB_MINOR_VERSION >= 32 void threadInit(void) { } // how to create detached threads ? int threadNew(int id, ThreadFunction func, void* data, int param) { GThread* t = NULL; //gboolean join = (param == JOINABLE ? TRUE : FALSE); char buf[32]; sprintf(buf,"%d",id); t = g_thread_new (buf, func, data); if (id >=0 && id < T_MAX && _threads[id] == NULL) { _threads[id] = t; } return (t ? RC_OK : RC_NOK); } #else // GLIB 2.31 and older void threadInit(void) { g_thread_init(NULL); // init GLIB thread subsystem } int threadNew(int id, ThreadFunction func, void* data, int param) { GThread* t = NULL; gboolean join = (param == JOINABLE ? TRUE : FALSE); t = g_thread_create (func, data, join, NULL); if (id >=0 && id < T_MAX && _threads[id] == NULL) { _threads[id] = t; } return (t ? RC_OK : RC_NOK); } #endif void threadJoin(int id) { if (id >=0 && id < T_MAX && _threads[id] != NULL) { //printf("threadJoin %d\n", id); g_thread_join(_threads[id]); _threads[id] = NULL; //printf("threadJoin %d done\n", id); } } void threadExit(int id) { if (id >=0 && id < T_MAX && _threads[id] != NULL) { _threads[id] = NULL; } g_thread_exit(NULL); } int threadExists(int id) { if (id >=0 && id < T_MAX && _threads[id] != NULL) { return RC_OK; } return RC_NOK; } #else #include #include pthread_t* _threads[T_MAX] = {NULL}; void threadInit(void) { } int threadNew(int id, ThreadFunction func, void* data, int param) { pthread_t* tid = (pthread_t*) malloc(sizeof(pthread_t)); pthread_attr_t attr; if (param == DETACHED) { pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); } int r; if ((r = pthread_create(tid, (param == JOINABLE ? NULL : &attr), (ThreadFunction) func, (void *) data )) != 0) { printf("Can not run processing thread %d !\n", id); free(tid); return RC_NOK; } if (id >=0 && id < T_MAX && _threads[id] == NULL) { _threads[id] = tid; } return RC_OK; } void threadJoin(int id) { if (id >=0 && id < T_MAX && _threads[id] != NULL) { pthread_join(*(_threads[id]), NULL); free(_threads[id]); _threads[id] = NULL; } } void threadExit(int id) { if (id >=0 && id < T_MAX && _threads[id] != NULL) { free(_threads[id]); _threads[id] = NULL; } pthread_exit(NULL); } int threadExists(int id) { if (id >=0 && id < T_MAX && _threads[id] != NULL) { return RC_OK; } return RC_NOK; } #endif anyremote-6.7.1/src/pr_l2cap.h0000644000232200023220000000223512664332726016555 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PR_L2CAP_H #define _PR_L2CAP_H #include "peer.h" int l2capFD (ConnectInfo* c); int l2capOpen (ConnectInfo* c); int l2capSetup (ConnectInfo* c); int l2capAccept(ConnectInfo* c); int l2capWrite (ConnectInfo* c, dMessage* msg); void l2capClose (ConnectInfo* c,int final); void l2capReset (ConnectInfo* conn); #endif anyremote-6.7.1/src/pr_rfcomm.c0000644000232200023220000001332112664332726017030 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef USE_BLUEZ #include #include #endif #ifdef USE_BT_FBSD #include #include #include #endif #include "common.h" #include "utils.h" #include "conf.h" #include "lib_wrapper.h" #include "dispatcher.h" #include "atsend.h" #include "pr_rfcomm.h" extern char tmp[MAXMAXLEN]; extern boolean_t stillRun; // // RFCOMM socket handling // int rfcommFD(ConnectInfo* conn) { _RfcommConnection* cn = (_RfcommConnection*) conn->connectionData; return (cn ? cn->fileDescriptor : -1); } int rfcommSetup(ConnectInfo* conn) { int fd = rfcommFD(conn); if (fd < 0) { DEBUG2("rfcommSetup() wrong descriptor"); return -1; } return setupAtConnection(conn, fd); } int rfcommConnect(ConnectInfo* conn) { DEBUG2("[DS]: Serial Client mode. Use device %s : %d", conn->portStr->str, conn->port); const char *addr = conn->portStr->str; int channel = conn->port; if (conn->connectionData && ((_RfcommConnection*) conn->connectionData)->fileDescriptor >= 0) { rfcommClose(conn,1); } if (conn->connectionData) { free(conn->connectionData); } conn->connectionData = (_RfcommConnection*) malloc(sizeof(_RfcommConnection)); _RfcommConnection* cn = (_RfcommConnection*) conn->connectionData; cn->fileDescriptor = -1; cn->useCallId = BOOL_YES; cn->hasActiveCall = BOOL_NO; #ifdef USE_BLUEZ struct sockaddr_rc bt_addr = { 0 }; bt_addr.rc_family = AF_BLUETOOTH; bt_addr.rc_channel = (uint8_t) channel; str2ba(addr, &(bt_addr.rc_bdaddr)); if ((cn->fileDescriptor = socket(AF_BLUETOOTH, SOCK_STREAM|SOCK_CLOEXEC, BTPROTO_RFCOMM)) < 0) { logger(L_ERR, "opening BT socket"); printf("ERROR: opening BT socket\n"); cn->fileDescriptor = -1; return -1; } connect(cn->fileDescriptor, (struct sockaddr *) &bt_addr, sizeof(bt_addr)); #endif if (cn->fileDescriptor < 0) { logger(L_ERR,"[DS]: can not open RFCOMM channel"); conn->state = PEER_DISCONNECTED; return EXIT_NOK; } conn->state = PEER_CONNECTED; return EXIT_OK; } void rfcommClose(ConnectInfo* conn, int final) { if (final == 0) return; _RfcommConnection* cn = (_RfcommConnection*) conn->connectionData; if (cn) { if (cn->fileDescriptor >= 0) { shutdown(cn->fileDescriptor, SHUT_RDWR); cn->fileDescriptor = -1; } free(cn); } conn->connectionData = NULL; conn->state = PEER_DISCONNECTED; } void rfcommReset(ConnectInfo* conn) { rfcommClose(conn, 0); } int rfcommWrite(ConnectInfo* conn, dMessage* msg) { //logger(L_DBG, "rfcommWrite"); if (!msg) { return EXIT_OK; } const char* command = msg->value; int count = msg->size; if (!command || count <= 0) { return EXIT_OK; } _RfcommConnection* cn = (_RfcommConnection*) conn->connectionData; if (!cn) return EXIT_NOK; // send command if (cn->fileDescriptor >= 0) { memset(tmp, 0, MAXMAXLEN); strcat(tmp, "rfcommWrite "); int logSz = (count > 256 ? 255 : count); // it is possible to get binary data here memcpy(tmp, command, logSz); // Do not dump long commands tmp[logSz] = '\0'; logger(L_DBG, tmp); sprintf(tmp, "rfcommWrite %d bytes", count); logger(L_INF, tmp); int n = write(cn->fileDescriptor,command,count); if (n < 0) { logger(L_ERR, "error writing to rfcomm socket"); return EXIT_NOK; } return EXIT_OK; } else { logger(L_ERR, "error writing to rfcomm socket: already closed"); } return EXIT_NOK; } boolean_t rfcommCheckActiveCall(ConnectInfo* conn) { _RfcommConnection* cn = (_RfcommConnection*) conn->connectionData; if (!cn) { return BOOL_NO; } if (cn->hasActiveCall) { if (cn->useCallId) { char callerId[MAXLEN]; int fd = cn->fileDescriptor; if (fd < 0) { cn->hasActiveCall = BOOL_NO; } else { int ret = getClip(fd, callerId); if (ret != EXIT_EXACT) { // Seems the call was finished cn->hasActiveCall = BOOL_NO; } } } else { // no way to check, just drop it cn->hasActiveCall = BOOL_NO; } } return cn->hasActiveCall; } boolean_t rfcommHasActiveCall(ConnectInfo* conn) { _RfcommConnection* cn = (_RfcommConnection*) conn->connectionData; return (cn ? cn->hasActiveCall : BOOL_NO); } anyremote-6.7.1/src/btio.h0000644000232200023220000000264612664332726016016 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _BTIO_H #define _BTIO_H #include "dispatcher.h" #include "peer.h" //int bt_read(int portfd, char* buf, int len); int bt_readchar(int portfd, char* c, int timeout); int bt_put_command(int portfd, const char* command, char* answer, int max, int timeout, char* expect); int uxsFD (ConnectInfo* connInfo); int uxsOpen (ConnectInfo* connInfo); void uxsClose(ConnectInfo* connInfo, int final); void uxsReset(ConnectInfo* connInfo); //int unix_read_port(char* buf, int l); #endif anyremote-6.7.1/src/conf.c0000644000232200023220000004511712664332726016001 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include "parse.h" #include "var.h" #include "alarm.h" #include "utils.h" #include "mode.h" #define EMPTY_STR "EMPTY" extern char tmp[MAXMAXLEN]; extern CONF conf; int initDone = 0; boolean_t doLog = BOOL_NO; boolean_t doDebug = BOOL_NO; boolean_t isIViewer = BOOL_NO; boolean_t isBemused = BOOL_NO; int waitTimeout = -1; static char * _btAddress = NULL; /* ----------------- Interface functions ------------------------- */ boolean_t boolValue(const char* value) { if (!value) return BOOL_NO; return (!value || strncmp(value,"false",5) == 0 || strncmp(value,"no",5) == 0 ? BOOL_NO : BOOL_YES); } void setLog(const char* value) { doLog = boolValue(value); doDebug = 0; if (value && strncmp(value,"debug",5) == 0) { doDebug = 1; } } int getLog() { return doLog; } void setBemused(const char* value) { isBemused = boolValue(value); } int getBemused() { return isBemused; } void setIViewer(const char* value) { isIViewer = boolValue(value); } int getIViewer() { return isIViewer; } int getDebug() { return doDebug; } char* getDevice() { return dupVarValue("Device"); } int getBaudrate() { char* value = dupVarValue("Baudrate"); if (value != NULL) { int rate = atoi(value); free(value); switch (rate) { case 300: return B300; case 1200: return B1200; case 2400: return B2400; case 9600: return B9600; case 19200: return B19200; case 38400: return 38400; #ifdef B57600 case 57600: return B57600; #endif #ifdef B115200 case 115200: return B115200; #endif #ifdef B230400 case 230400: return B230400; #endif default: WARNING2("bad baudrate %d, defaulting to 9600", rate); return B9600; } } return B19200; } int getRetrySecs() { char* value = dupVarValue("RetrySeconds"); if (value != NULL) { int v = atoi(value); free(value); return v; } return 10; } int getWaitTime() { return waitTimeout; } void setWaitTime(const char* value) { waitTimeout = -1; if (value != NULL) { waitTimeout = atoi(value); if (waitTimeout < 0) { waitTimeout = -1; } } } int autoConnect() { int sz = 0; const char* v = getVarValue(VAR_AUTOCONN, &sz); if (v != NULL && sz > 3 && strncmp(v,"true",4) == 0) { return 1; } return 0; } int getAutoRepeat() { int sz = 0; const char* v = getVarValue(VAR_AUTOREPEAT, &sz); if (v != NULL && sz > 3 && strncmp(v,"true",4) == 0) { return 1; } return 0; } static type_key* repeatCMD = NULL; void setRepeatNow(type_key* repeat) { repeatCMD = repeat; } type_key* repeatNow() { return repeatCMD; } int getUseScreen() { int sz = 0; const char* v = getVarValue("TwoWayComm", &sz); if (v != NULL && sz > 3 && strncmp(v,"true",4) == 0) { return 1; } return 0; } char* getCharset() { return dupVarValue(VAR_CHARSET); } char* getToMainMenu() { return dupVarValue("ToMainMenu"); } char* getServiceName() { return dupVarValue("ServiceName"); } char* getAT_CMER(int what) { if (what == CMER_ON) { char *cmer = dupVarValue("CmerOn"); if (cmer == NULL) { if (conf.model == MODEL_MOTOROLA) { return strdup(DEF_AT_CMER_ON_MOTOROLA); } else if (conf.model == MODEL_SE) { return strdup(DEF_AT_CMER_ON_SE); } else if (conf.model == MODEL_SAGEM) { return strdup(DEF_AT_CMER_ON_SAGEM); } else if (conf.model == MODEL_SIEMENS) { return strdup(DEF_AT_CMER_ON_SIEMENS); } else { return strdup(DEF_AT_CMER_ON_DEFAULT); } } else { return cmer; } } if (what == CMER_OFF) { char *cmer = dupVarValue("CmerOff"); if (cmer == NULL) { if (conf.model == MODEL_MOTOROLA) { return strdup(DEF_AT_CMER_OFF_MOTOROLA); } else if (conf.model == MODEL_SE) { return strdup(DEF_AT_CMER_OFF_SE); } else if (conf.model == MODEL_SAGEM) { return strdup(DEF_AT_CMER_OFF_SAGEM); } else if (conf.model == MODEL_SIEMENS) { return strdup(DEF_AT_CMER_OFF_SIEMENS); } else { return strdup(DEF_AT_CMER_OFF_DEFAULT); } } else { return cmer; } } return NULL; } int getFrontEnd() { return conf.frontEnd; } void setModel (char *answer) { if (answer == NULL) { conf.model = MODEL_DEFAULT; } else if (strstr(answer,STR_MOTOROLA)) { conf.model = MODEL_MOTOROLA; } else if (strstr(answer,STR_SE)) { conf.model = MODEL_SE; } else if (strstr(answer,STR_SAGEM)) { conf.model = MODEL_SAGEM; } else if (strstr(answer,STR_SIEMENS)) { conf.model = MODEL_SIEMENS; } else { conf.model = MODEL_DEFAULT; } } int getModel (void) { return conf.model; } void setBtAddress (char* a) { _btAddress = a; } char * getBtAddress() { return _btAddress; } void freeBtAddress() { if (_btAddress) { free(_btAddress); } _btAddress = NULL; } ///////////////////////////////////////////////////////////////////////////////////////////////// type_key* findExact(mode *mode, const char *key) { //DEBUG2("findExact() %s",key); if (mode == NULL || key == NULL) { logger(L_DBG, "findExact() input is empty ?"); return NULL; } type_key* It = mode->keys; // Search exact command while (It != NULL && It->key != NULL && strcmp(It->key,key) != 0) { //sprintf(tmp,"findExact search >%s< compare to >%s<", It->key, key); //logger(L_DBG,tmp); It = (type_key*) It->next; //logger(L_DBG, "findExact() next loop"); } //logger(L_DBG, "findExact() exiting"); return It; } static type_key* findStartingWith(mode *mode, const char *key) { if (mode == NULL) { return NULL; } type_key* It = mode->keys; while (It && It->key != NULL) { char *start = strstr(It->key,key); //DEBUG2("[EX]: findStartingWith() %s %s %s",It->key,key,(start?"FOUND":"NOTFOUND")); if (start && start == It->key) { // We got a part of multi-key or parametrized command int lk = strlen(key); int l2 = strlen(It->key); int ok = 1; if (*(key+lk-1) != '$' && // not parametrized l2 > lk) { // part of multi-key should be followed by space char next = *(It->key+lk); if (next != ' ') { ok = 0; } } if (ok == 1) { logger(L_DBG,"[EX]: Found part of multi-key or parametrized command"); return It; } } It = (type_key*) It->next; } return It; } static type_key* findItemInMode(mode *mode, const char *key, int *flag, cmdParams *params) { if (mode == NULL) { logger(L_DBG,"[EX]: findItemInMode: mode is null"); return NULL; } int canLog = (strcmp(mode->name->str,"_INTERNAL_") != 0); if(canLog) { sprintf(tmp,"[EX]: findItemInMode >%s,%s<", mode->name->str, key); logger(L_DBG,tmp); } // Prepare to search as parametrized command, control presence of both ( and ) const char *start = index(key,'('); const char *finish = rindex(key,')'); if ((start != NULL && finish == NULL) || // Command was read partially? (start == NULL && finish != NULL)) { // Command was incorectrly formed ? if(canLog) { logger(L_DBG,"[EX]: findItemInMode: Incorrectly formed parametrized command. One brace is absent"); } return NULL; } // Clean-up if (params != NULL) { params->index[0] = '\0'; params->value[0] = '\0'; } type_key* It = findExact(mode,key); // Search exact command if (It) { if(canLog) { logger(L_DBG,"[EX]: findItemInMode: found exact command"); } *flag = FLAG_EXACT; return It; } It = findStartingWith(mode,key); // Search as part of multikey sequence if (It) { if(canLog) { logger(L_DBG,"[EX]: findItemInMode: found part of multi-key command"); } *flag = FLAG_MULTIKEY; return It; } if (params == NULL) { //if(canLog) { // logger(L_DBG,"[EX]: findItemInMode: No parameters suspected. Item does not found."); //} return NULL; } // Search as parametrized command if (start != NULL && finish != NULL && start != key) { // Do not match "(...)=..." It = mode->keys; char tag [MAXARGLEN]; memset(tag, 0,MAXARGLEN); char index[6]; memset(index,0,6); char value[MAXARGLEN]; memset(value,0,MAXARGLEN); strncpy(tag, key, start-key); *(tag+(start-key)) = '\0'; const char *comma = strstr(start+1,","); if (comma == NULL || comma > finish) { // Parametrized command from Java Client should be in a form like List(1,String1) if(canLog) { logger(L_DBG,"[EX]: findItemInMode: Incorrectly formed parametrized command"); } return NULL; } if (comma-start > 6) { // 65535 = max value in Comman Fusion iViewer if(canLog) { logger(L_ERR,"[EX]: findItemInMode: Received incorrect index!"); } return NULL; } strncpy(index,start+1,comma-start-1); *(index+(comma-start-1)) = '\0'; strncpy(value,comma+1,finish-comma-1); *(value+(finish-comma-1)) = '\0'; if(canLog) { sprintf(tmp,"[EX]: Parametrized command parsed as >%s< >%s< >%s< ", tag,index,value); logger(L_DBG,tmp); } char * decodedVal = value; int needFree = 0; #ifdef USE_ICONV if (needConvert() == 1) { decodedVal = convCharsetSimple(value, CNV_TO); needFree = 1; DEBUG2("[EX]: Decoded string >%s< ", (decodedVal ? decodedVal : "NULL")); } #endif // Try to search explicitly specified parametrized command (for ex List(1) or List(commandX)) // By index strcat(tag,"("); strcat(tag,index); strcat(tag,")"); It = findExact(mode,tag); if (It) { if(canLog) { logger(L_DBG,"[EX]: Found exact (explicitly specified by index) parametrized command"); } *flag = FLAG_EXACT; #ifdef USE_ICONV if (needFree) { free(decodedVal); } #endif return It; } // Then by value *(tag+(start-key+1)) = '\0'; strcat(tag,(decodedVal ? decodedVal : "")); strcat(tag,")"); It = findExact(mode,tag); if (It) { if(canLog) { logger(L_DBG,"[EX]: Found exact (specified by value) parametrized command"); } *flag = FLAG_EXACT; #ifdef USE_ICONV if (needFree) { free(decodedVal); } #endif return It; } // Finally... Search command like ListItem($$) *(tag+(start-key)) = '\0'; char* keyAndBrace = (char*) calloc(1,strlen(tag)+3); strcpy(keyAndBrace,tag); strcat(keyAndBrace,"($"); if(canLog) { DEBUG2("[EX]: Search findStartingWith() >%s< ", keyAndBrace); } It = findStartingWith(mode,keyAndBrace); free(keyAndBrace); if (It) { if(canLog) { DEBUG2("EX]: Found parametrized command >%s,%s< ", index,decodedVal); } strcpy(params->index, index); strcpy(params->value, decodedVal); *flag = FLAG_PARAMETR; #ifdef USE_ICONV if (needFree) { free(decodedVal); } #endif return It; } #ifdef USE_ICONV if (needFree) { free(decodedVal); } #endif } //if(canLog) { // logger(L_DBG,"[EX]: findItemInMode: not found"); //} return NULL; } type_key* findItemInModeAndParents(mode* curMode, const char *key, int *flag, cmdParams *params) { DEBUG2("[EX]: findItemInModeAndParents() search in mode %s (parents %s)", curMode->name->str, (curMode->parent ? curMode->parent->str : "no parents")); type_key* tk = findItemInMode(curMode, key, flag, params); if (tk == NULL) { if (curMode != getDefaultMode() && curMode->parent) { string_t* parent = stringNew(curMode->parent->str); char* ptrptr = NULL; char* pmode = strtok_r(parent->str,",", &ptrptr); while (pmode) { // firstly strip spaces from start and tail while (*pmode == ' ' || *pmode == '\t') { pmode++; if (*pmode == '\0') { break; } } if (*pmode != '\0') { char *p2 = pmode + strlen(pmode) - 1; while (*p2 == ' ' || *p2 == '\t') { *p2 = '\0'; p2--; if (pmode == p2) { break; } } if (*pmode != '\0') { mode* tryMode = findMode(pmode); if (tryMode) { tk = findItemInModeAndParents(tryMode, key, flag, params); if (tk) { break; } } else { ERROR2("[EX]: findItemInModeAndParents() parent mode %s not found",pmode); } } } pmode = strtok_r(NULL,",",&ptrptr); } stringFree(parent,BOOL_YES); } } return tk; } type_key* findItem(const char *keyIn, int *flag, cmdParams *params) { //logger(L_DBG,"[EX]: findItem()"); type_key *tk = NULL; if (keyIn == NULL) { return NULL; } char key[MAXARGLEN]; memset(key,0,MAXARGLEN); if (*keyIn == '\0') { logger(L_INF,"[EX]: Got empty key"); strcpy(key, EMPTY_STR); } else { strncpy(key, keyIn, MAXARGLEN - 1); } mode* curMode = getCurrentMode(); if (curMode) { tk = findItemInModeAndParents(curMode, key, flag, params); mode* defMode = getDefaultMode(); if (tk == NULL && curMode != defMode) { logger(L_DBG,"[EX]: findItem() search in default"); tk = findItemInMode(defMode, key, flag, params); } } // Search in "internal" commands if (tk == NULL) { logger(L_DBG,"[EX]: findItem() internal mode"); tk = findItemInMode(getInternalMode(), key, flag, params); if (tk != NULL && *flag == FLAG_MULTIKEY) { logger(L_DBG,"[EX]: findItem() multikey in internal command ?"); } } /*if (tk && tk->cmd) { printf("TRACE %s->%s:%s \n",keyIn,tk->cmd->descr,(tk->cmd->exec ? tk->cmd->exec : "NULL")); } else { printf("TRACE %s->NOT FOUND?\n",keyIn); }*/ return tk; } SingleList *getCommand(type_key* item) { if (!item) { //logger(L_DBG,"[EX]: getCommand(): Empty type_key was got"); return NULL; } if (item->key == NULL) { //logger(L_DBG,"[EX]: Empty key was got"); return NULL; } //sprintf(tmp,"[EX]: getCommand for >%s<", item->key); //logger(L_DBG,tmp); return item->commands; } // // Print cfg stuff // static void printKey(const char* key, SingleList* commands) { sprintf(tmp, "%s=\\\n\t", key); SingleList* list = commands; while (list) { cmdItem * item = (cmdItem *) list->data; if (!item) continue; strcat(tmp, id2Cmd(item->type)); if (item->descr || item->exec) { strcat(tmp, "("); } int pComma = 0; if (item->descr) { //printf("descr %s\n",item->descr); strcat(tmp, item->descr); pComma = 1; } strcat(tmp, "<|>"); if (item->exec) { if (pComma) { strcat(tmp, ","); } strcat(tmp, item->exec); } if (item->descr || item->exec) { strcat(tmp, ")"); } strcat(tmp, ";"); list = listSingleNext(list); if (item && list) { strcat(tmp, "\\"); } logger(L_CFG, tmp); sprintf(tmp, "\t"); } } void printKeys(type_key* key) { while (key && key->key != NULL) { SingleList* commands = getCommand(key); if (commands) { printKey(key->key, commands); } else { sprintf(tmp, "\t%s = no command", key->key); logger(L_CFG, tmp); } key = (type_key*) key->next; } } void setInitDone(void) { initDone = 1; } void printConf() { //printf("printConf ENTER\n");fflush(stdout); if (initDone == 0) return; // to avoid dumping several times on initialization printModes(); printVars (); return ; } // // Clean-up stuff // static void destroyCommandItem(void* ptr) { cmdItem* item = (cmdItem *) ptr; if (item->descr != NULL) { free(item->descr); item->descr = NULL; } if (item->exec != NULL) { free(item->exec); item->exec = NULL; } free(item); } void freeCmds(SingleList* commands) { if (commands) { listSingleFullFree(commands, destroyCommandItem); } } void freeCfg(void) { logger(L_DBG, "freeCfg()"); freeModes(NULL); // delete all modes stuff } anyremote-6.7.1/src/gen_ar.h0000644000232200023220000000236012664332726016305 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PR_GEN_AR_H_ #define _PR_GEN_AR_H_ #include "lib_wrapper.h" void initHtmlGenerator(); string_t* renderCtrlForm(int port); string_t* renderTextForm(int port); string_t* renderListForm(int port); string_t* renderWmanForm(int port); string_t* renderEditForm(int port); string_t* renderPassForm(int port); string_t* renderCtrlFormCover(); int htmlScreenWidth (); int htmlScreenHeight(); #endif anyremote-6.7.1/src/alarm.c0000644000232200023220000001250212664332726016140 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include "common.h" #include "executor.h" #include "dispatcher.h" #include "utils.h" #include "peer.h" #include "alarm.h" extern char tmp[MAXMAXLEN]; typedef struct { char *file; char *macro; } type_alarm; SingleList * _alarmList = NULL; ////////////////////////////////////////////////////////////////////////////////// // // Functions related to alarms // ////////////////////////////////////////////////////////////////////////////////// // mode: 0 - clear alarms // 1 - if fired - process, then clear alarms void manageAlarms(int mode) { struct stat buf; SingleList* list = _alarmList; while (list) { type_alarm * v = (type_alarm *) list->data; // If file exists int fs = stat(v->file, &buf); if (fs == 0) { if (mode == ALARM_CLEAN) { logger(L_DBG,"[ML]: Remove file"); } else { INFO2("[ML]: Alarm %s fired", v->macro); eMessage* em = (eMessage*) malloc(sizeof(eMessage)); em->peer = 0; em->type = EM_ALARM; em->value = strdup(v->macro); sendToExecutor(em); } remove(v->file); } list = listSingleNext(list); } } SingleList * getAlarms() { return _alarmList; } void forgetAlarms() // just set to NULL, no cleanup { _alarmList = NULL; } void addAlarm(char *file, char *macro) { sprintf(tmp,"addAlarm() >%s< >%s<\n", file,macro); logger(L_DBG,tmp); type_alarm * v = (type_alarm *) calloc(sizeof(type_alarm),1); v->file = strdup(file); v->macro = strdup(macro); _alarmList = listSingleAppend(_alarmList, v); } void destroyAlarm(void* ptr) { type_alarm * v = (type_alarm *) ptr; //sprintf(tmp,"destroyAlarm() >%s<", v->file); //logger(L_DBG,tmp); free(v->file); free(v->macro); free(v); } void freeAlarms(SingleList* chain) { listSingleFullFree((chain ? chain : _alarmList), destroyAlarm); if (!chain) { _alarmList = NULL; } } ////////////////////////////////////////////////////////////////////////////////// // // Functions related to keepalive messages handling // ////////////////////////////////////////////////////////////////////////////////// static int _keepaliveTimeout = 0; static int _keepaliveFlag = BOOL_YES; static time_t _keepaliveSendTime; static time_t _keepaliveDropTime; static void checkKeepalive() { DEBUG2("[ML]: checkKeepalive %d", _keepaliveFlag); if (!_keepaliveFlag) { _keepaliveTimeout = 0; DEBUG2("[ML]: no keepalive message, drop connection"); // drop connection dMessage* dm = allocDMessage(); dm->type = DM_EVENT; dm->subtype = ID_EVENT_DISCONNECT; sendToDispatcher(dm); } _keepaliveFlag = BOOL_NO; } void keepaliveTest() { //DEBUG2("[ML]: keepaliveTest %d", _keepaliveTimeout); if (_keepaliveTimeout > 0) { time_t now = time(NULL); double st = difftime(now, _keepaliveSendTime); double dt = difftime(now, _keepaliveDropTime); if (dt > _keepaliveTimeout * 2) { // about (_keepaliveTimeout * 2) seconds checkKeepalive(); time(&_keepaliveDropTime); } if (st > _keepaliveTimeout) { DEBUG2("[ML]: send keepalive message"); dMessage* dm = allocDMessage(); dm->value = strdup("Get(ping);"); dm->size = strlen(dm->value); dm->type = DM_GET; dm->subtype = ID_GET_PING; sendToDispatcher(dm); time(&_keepaliveSendTime); } } } void addKeepalive(const char* tmout) { if (!isServerMode()) { logger(L_DBG,"[ML]: can not set keepalive timeout for non-Server mode"); return; } _keepaliveFlag = BOOL_YES; _keepaliveTimeout = 0; if (tmout && atoi(tmout) > 0) { _keepaliveTimeout = atoi(tmout); DEBUG2("[ML]: keepalive timeout set to %d seconds", _keepaliveTimeout); time(&_keepaliveSendTime); time(&_keepaliveDropTime); } else { _keepaliveTimeout = -1; DEBUG2("[ML]: drop keepalive check"); } } boolean_t useKeepalive() { return (_keepaliveTimeout > 0 ? BOOL_YES : BOOL_NO); } void setKeepalive() { DEBUG2("[ML]: got keepalive message"); _keepaliveFlag = BOOL_YES; } anyremote-6.7.1/src/timer.c0000644000232200023220000001452412664332726016172 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include "common.h" #include "timer.h" #include "utils.h" #include "hash.h" #include "lib_wrapper.h" extern int macroCmdCallback(char *descr, char *exec, cmdParams* p); extern char tmp[MAXMAXLEN]; ////////////////////////////////////////////////////////////////////////////////// // // Functions related to timer commands // ////////////////////////////////////////////////////////////////////////////////// static int timerAllowed = RC_OK; static HashTable* _timerHash = NULL; static void timer_destroyed(void * data) { //printf("timer_destroyed\n"); timerCmd * tm = (timerCmd*) data; if (tm) { //DEBUG2("timer_destroyed(): %s", tm->macro); free(tm->macro); free(tm); } } static timerCmd* findTimer(const char *id) { return (id ? hashFind(_timerHash, id) : NULL); } HashTable* getTimers(void) { return _timerHash; } void forgetTimers(void) // no cleanup { _timerHash = NULL; } // // will be fired first time only after timeout // static int createTimer(const char *id, const char *op) { //printf("createTimer\n"); if (!_timerHash) { _timerHash = hashNew((DestroyCallback) timer_destroyed); } // parse n,m char *dup = strdup(op); char* comma = strstr(dup,","); if (!comma) { logger(L_DBG, "createTimer(): wrong format"); free(dup); return EXIT_NOK; } *comma = '\0'; int tmo = atoi(dup); int tms = atoi(comma+1); free(dup); if (tmo <= 0 || tms < 0) { logger(L_DBG, "createTimer(): wrong timeout values"); return EXIT_NOK; } timerCmd *tm = (timerCmd *) malloc(sizeof(timerCmd)); tm->macro = (char*) malloc(strlen(id)+1); strcpy(tm->macro,id); tm->timeout = tmo; tm->max_times = tms; tm->ticks = 0; tm->times = 1; tm->status = ID_TIMER_CONTINUE; hashReplace(_timerHash, id, tm); DEBUG2("createTimer(): timer created %s %d %d",tm->macro,tm->timeout,tm->max_times); return EXIT_OK; } static void deleteTimer(char *id) { DEBUG2("deleteTimer() >%s<", id?id:"NULL"); if (hashRemove(_timerHash, id) != RC_OK) { logger(L_DBG, "Can not find timer to delete !"); } } /*static void testTimers(gpointer key, gpointer value, gpointer user_data) { printf("testTimers\n"); if (timerAllowed != RC_OK) return; timerCmd *tm = (timerCmd *) value; if (!value) return; printf("testTimers(): %s ", tm->macro); }*/ void freeTimers(HashTable* hash) { timerAllowed = RC_NOK; HashTable* h = (hash ? hash : _timerHash); hashDestroy(h); if (!hash) { logger(L_DBG, "freeTimers()"); _timerHash = NULL; } timerAllowed = RC_OK; } int timerCommand(int subtype, const char *id, const char* op, cmdParams* p) { logger(L_INF, "Command: Timer"); if (id == NULL || id[0] == '\0') { logger(L_DBG, "timerCommand(): wrong input - timer id not specified"); return EXIT_NOK; } timerCmd *tm = findTimer(id); if (subtype == ID_TIMER_PAUSE) { if (tm) { DEBUG2("pause timer() %s", id); tm->status = ID_TIMER_PAUSE; } } else if (subtype == ID_TIMER_CANCEL) { if (tm) { DEBUG2("cancel timer() >%s<", id); // postpone removal because in general timer can be canceled // inside itself tm->status = ID_TIMER_CANCEL; } } else if (subtype == ID_TIMER_CONTINUE) { if (tm) { DEBUG2("continue timer() %s", id); tm->status = ID_TIMER_CONTINUE; } } else if (subtype == ID_TIMER_RESET) { if (tm) { DEBUG2("reset timer() %s", id); tm->ticks = 0; } } else if (subtype == ID_TIMER_RESTART) { if (tm) { DEBUG2("restart timer() %s", id); tm->ticks = 0; tm->times = 1; } } else if (!tm && op && op[0] != '\0') { return createTimer(id,op); } else { DEBUG2("timer %s: incorrect parameter %d", id, subtype); return EXIT_NOK; } return EXIT_OK; } static void verifyTimers(void* key, void* value, void* user_data) { //printf("verifyTimers %s\n",key); if (timerAllowed != RC_OK) return; int ticksInSec = CAST_POINTER_TO_INT(user_data); timerCmd *tm = (timerCmd *) value; if (!value) return; if (tm->status == ID_TIMER_CONTINUE) { // do not process paused timers //DEBUG2("verifyTimers(): timer %p\n",tm); //DEBUG2("verifyTimers(): timer descr %s ", tm->macro); //DEBUG2("verifyTimers(): timer ticks %d ", tm->ticks); //DEBUG2("verifyTimers(): timer tmout %d ", tm->timeout); if (tm->ticks >= (tm->timeout * ticksInSec)) { DEBUG2("verifyTimers(): it is time to execute %s", tm->macro); macroCmdCallback(tm->macro, NULL, NULL); tm->ticks = 0; if (tm->max_times > 0) { tm->times++; if (tm->times >= tm->max_times) { // Cancel this timer DEBUG2("verifyTimers(): timer %s self-canceled", tm->macro); // postpone removal because in general timer can be canceled // inside itself tm->status = ID_TIMER_CANCEL; } } } else { tm->ticks++; } } else if (tm->status == ID_TIMER_CANCEL) { // delete canceled timers deleteTimer(tm->macro); } } void verifyTimerCfg(int ticksInSec) { //logger(L_DBG, "verifyTimerCfg()"); if (timerAllowed != RC_OK) return; hashForeach(_timerHash, verifyTimers, CAST_INT_TO_POINTER(ticksInSec)); } anyremote-6.7.1/src/str.h0000644000232200023220000000370612664332726015667 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // //////////////////////////////////////////////////////////////////////////////// // // Strings // //////////////////////////////////////////////////////////////////////////////// #ifndef _STR_H_ #define _STR_H_ 1 #include "lib_wrapper.h" #ifdef USE_GLIB #define stringNew g_string_new #define stringAssign g_string_assign #define stringAppend g_string_append #define stringAppendLen g_string_append_len #define stringTruncate g_string_truncate #define stringFree g_string_free #define stringHasPrefix g_str_has_prefix #else #include typedef struct { char *str; size_t len; size_t allocated_len; } string_t; string_t* stringNew (const char *init); string_t* stringAssign (string_t *string, const char *rval); string_t* stringAppend (string_t *string, const char *val); string_t* stringAppendLen(string_t *string, const char *val, size_t len); string_t* stringTruncate (string_t *string, size_t len); char * stringFree (string_t *string, boolean_t free_segment); boolean_t stringHasPrefix(const char* str, const char* prefix); #endif #endif anyremote-6.7.1/src/security.h0000644000232200023220000000235112664332726016721 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _SECURITY_H_ #define _SECURITY_H_ #include void setUsePassword(boolean_t use); boolean_t getUsePassword(void); char* getStoredPass (void); boolean_t checkPassword (const char* value); int verifyPassword(int fd); // EXIT_OK/EXIT_NOK/EXIT_STOP (in case of socket error) void setAllowedOnly(const char* boolValue); boolean_t isAllowed (const char* peer); #endif anyremote-6.7.1/src/gen_ar.c0000644000232200023220000001711712664332726016306 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include "conf.h" #include "executor.h" #include "gen_html.h" #include "mutex.h" #include "state.h" #include "str.h" #include "utils.h" #include "var.h" extern char tmp[MAXMAXLEN]; static void addFormMenu(int formId, string_t* page) { //INFO2("addFormMenu"); mutexLock(M_STATE); SingleList* list = userMenu(); if (listSingleLength(list) > 0) { stringAppend(page, "Set(menu,replace"); while(list) { if (list->data && ((string_t*) list->data)->str) { stringAppend(page, ","); stringAppend(page, ((string_t*) list->data)->str); } list = listSingleNext(list); } stringAppend(page, ");"); } //INFO2("addFormMenu DONE"); mutexUnlock(M_STATE); } string_t* renderCtrlForm(int port) { INFO2("[WS]: renderCtrlForm"); string_t* page = stringNew("Set(status,"); mutexLock(M_STATE); stringAppend(page, cfStatus()); stringAppend(page, ");"); const char* font = cfFont(); if (font) { stringAppend(page, "Set(font,"); stringAppend(page, font); stringAppend(page, ");"); } const char* bg = cfBg(); if (bg) { stringAppend(page, "Set(bg,#"); stringAppend(page, bg); stringAppend(page, ");"); } const char* fg = cfFg(); if (fg) { stringAppend(page, "Set(fg,#"); stringAppend(page, fg); stringAppend(page, ");"); } stringAppend(page, "Set(title,"); stringAppend(page, cfTitle()); stringAppend(page, ");"); stringAppend(page, "Set(icons,"); stringAppend(page, cfCaption()); mutexUnlock(M_STATE); stringAppend(page, ","); int iconMax = (bottomlineSkin() ? ICON_NUM_BTM : ICON_NUM); int i = 0; mutexLock(M_STATE); while (i < iconMax) { if (i > 0) { stringAppend(page, ","); } const char* icon = cfIcon(i); INFO2("[WS]: renderControlForm %d %s", i, (icon? icon : "NULL")); if (bottomlineSkin() && (!icon || strcmp(icon,"none") == 0)) { break; // skip if empty icon specified } char maze[9]; if (i == 9) { stringAppend(page,"*,"); } else if (i == 10) { stringAppend(page,"0,"); } else if (i == 11) { stringAppend(page,"#,"); } else { sprintf(maze,"%d,",i+1); stringAppend(page,maze); } if (!icon ) { stringAppend(page,"none"); } else { stringAppend(page,icon); } i++; } mutexUnlock(M_STATE); stringAppend(page, ");"); if (bottomlineSkin()) { stringAppend(page, "Set(layout,7x1"); if (useVolume()) { stringAppend(page, ",volume"); } const char* up = cfUpButton(); if (up) { stringAppend(page, ",up,"); stringAppend(page, up); } const char* down = cfDownButton(); if (down) { stringAppend(page, ",down,"); stringAppend(page, down); } if (useKeypad() && !useJoystick()) { stringAppend(page, ",keypad_only"); } if (!useKeypad() && useJoystick()) { stringAppend(page, ",joystick_only"); } stringAppend(page, ");"); } else { stringAppend(page, "Set(layout,3x4"); if (useVolume()) { stringAppend(page, ",volume"); } stringAppend(page, ");"); } mutexLock(M_STATE); const char* v = cfVolume(); if (useVolume() && v && strlen(v) > 0) { stringAppend(page, "Set(volume,"); stringAppend(page, v); stringAppend(page, ");"); } mutexUnlock(M_STATE); addFormMenu(CF, page); //printf("%s\n",page->str); return page; } string_t* renderCtrlFormCover() { string_t* page = stringNew("Set(cover,"); mutexLock(M_STATE); const char* nc = cfNamedCover(); if (nc) { stringAppend(page, "by_name,"); stringAppend(page, nc); stringAppend(page, ");"); } else { stringAppend(page, "clear);"); } mutexUnlock(M_STATE); return page; } string_t* renderTextForm(int port) { INFO2("[WS]: renderTextForm"); string_t* page = stringNew("Set(text,"); mutexLock(M_STATE); stringAppend(page, tfCaption()); stringAppend(page, ",replace,"); stringAppend(page, tfText()); mutexUnlock(M_STATE); stringAppend(page, ");"); mutexLock(M_STATE); const char* font = tfFont(); if (font) { stringAppend(page, "Set(text,font,"); stringAppend(page, font); stringAppend(page, ");"); } const char* bg = tfBg(); if (bg) { stringAppend(page, "Set(text,bg,#"); stringAppend(page, bg); stringAppend(page, ");"); } const char* fg = tfFg(); if (fg) { stringAppend(page, "Set(text,fg,#"); stringAppend(page, fg); stringAppend(page, ");"); } mutexUnlock(M_STATE); addFormMenu(TX, page); return page; } string_t* renderListForm(int port) { INFO2("[WS]: renderListForm"); string_t* page = stringNew("Set(list,"); mutexLock(M_STATE); stringAppend(page, "replace,"); stringAppend(page, lfCaption()); SingleList* list = lfList(); while (list) { stringAppend(page, ","); stringAppend(page, ((ListItem*) list->data)->string->str); list = listSingleNext(list); } mutexUnlock(M_STATE); stringAppend(page, ");"); mutexLock(M_STATE); const char* font = lfFont(); if (font) { stringAppend(page, "Set(list,font,"); stringAppend(page, font); stringAppend(page, ");"); } const char* bg = lfBg(); if (bg) { stringAppend(page, "Set(list,bg,#"); stringAppend(page, bg); stringAppend(page, ");"); } const char* fg = lfFg(); if (fg) { stringAppend(page, "Set(list,fg,#"); stringAppend(page, fg); stringAppend(page, ");"); } mutexUnlock(M_STATE); addFormMenu(TX, page); return page; } string_t* renderWmanForm(int port) { INFO2("[WS]: renderWmanForm"); string_t* page = stringNew(""); addFormMenu(WM, page); return page; } string_t* renderEditForm(int port) { INFO2("[WS]: renderEditForm askpass=%d", efPassword()); string_t* page = stringNew("Set(editfield,"); stringAppend(page, efCaption()); stringAppend(page, ","); stringAppend(page, efLabel()); stringAppend(page, ","); stringAppend(page, efText()); stringAppend(page, ");"); addFormMenu(EF, page); return page; } anyremote-6.7.1/src/pr_socket.c0000644000232200023220000002715412664332726017046 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "pr_socket.h" #include "common.h" #include "utils.h" #include "conf.h" #include "lib_wrapper.h" #include "sys_util.h" #include "security.h" #include "dispatcher.h" extern char tmp[MAXMAXLEN]; extern boolean_t stillRun; typedef struct _SocketConnection_ { int fileDescriptor; int serverFileDescriptor; char* uSocket; } _SocketConnection; // // Support server mode sockets // int socketFD(ConnectInfo* conn) { _SocketConnection* cn = (_SocketConnection*) conn->connectionData; if (!cn) { return -1; } return (conn->state == PEER_WAIT_ACCEPT || conn->state == PEER_WAIT_LISTEN ? cn->serverFileDescriptor : cn->fileDescriptor); } static int socketOpenInternal(ConnectInfo* conn) { struct sockaddr_in tcp_addr; struct sockaddr_un un_addr; struct sockaddr* socketaddr = NULL; int addFamily = 0; int proto = 0; int sz; if (conn->connectionData && ((_SocketConnection*) conn->connectionData)->serverFileDescriptor > 0) { logger(L_ERR, "[DS]: socketOpenInternal: TCP/local socket was already opened"); return 1; } if (conn->connectionData) { free(((_SocketConnection*) conn->connectionData)->uSocket); free(conn->connectionData); } conn->connectionData = (_SocketConnection*) malloc(sizeof(_SocketConnection)); _SocketConnection* cn = (_SocketConnection*) conn->connectionData; cn->serverFileDescriptor = -1; cn->fileDescriptor = -1; cn->uSocket = NULL; const char *path = (conn->portStr ? conn->portStr->str : NULL); if (conn->mode == SERVER_TCP) { addFamily = AF_INET; proto = IPPROTO_TCP; } else if (conn->mode == SERVER_UX) { addFamily = AF_UNIX; proto = 0; } else { logger(L_ERR, "socketOpenInternal: incorrect input"); return -1; } if ((cn->serverFileDescriptor = socket(addFamily, SOCK_STREAM|SOCK_CLOEXEC, proto)) < 0) { logger(L_ERR, "[DS]: socketOpenInternal: opening TCP socket"); errnoDebug("opening TCP socket ",errno); // testing debug printf("ERROR: socketOpenInternal: opening TCP socket\n"); cn->serverFileDescriptor = -1; return -1; } int optval = 1; setsockopt(cn->serverFileDescriptor, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); if (conn->mode == SERVER_TCP) { memset((void *) &tcp_addr, 0, sizeof(tcp_addr)); tcp_addr.sin_family = AF_INET; tcp_addr.sin_addr.s_addr = INADDR_ANY; tcp_addr.sin_port = htons(conn->port); socketaddr=(struct sockaddr *)&tcp_addr; sz = sizeof(tcp_addr); } else if (conn->mode == SERVER_UX && path != NULL) { memset(&un_addr, 0, sizeof(un_addr)); un_addr.sun_family = AF_UNIX; strncpy(un_addr.sun_path, path, sizeof un_addr.sun_path - 1); printf("ERROR: SOCKET %s\n", path); socketaddr=(struct sockaddr *)&un_addr; sz = sizeof(un_addr); } else { logger(L_ERR, "socketOpenInternal: incorrect input 2"); return -1; } if (bind(cn->serverFileDescriptor, (struct sockaddr *) socketaddr, sz) < 0) { logger(L_ERR, "[DS]: socketOpenInternal: on bind()"); printf("ERROR: on bind socket to the address %s (%d)\n", strerror(errno), errno); return -1; } if (conn->mode == SERVER_UX) { cn->uSocket = strdup(path); } return 1; } int socketOpen(ConnectInfo* conn) { if (conn->mode == SERVER_TCP) { DEBUG2("[DS]: socketOpen: TCP mode. Use port %d", conn->port); } else if (conn->mode == SERVER_UX) { DEBUG2("[DS]: socketOpen: Local socket mode. Use file %s", conn->portStr->str); } else { DEBUG2("[DS]: socketOpen: improper mode. %d", conn->mode); return EXIT_NOK; } if (socketOpenInternal(conn) < 0) { return EXIT_NOK; } conn->state = PEER_WAIT_LISTEN; return EXIT_OK; } void socketClose(ConnectInfo* conn, int final) { _SocketConnection* cn = (_SocketConnection*) conn->connectionData; if (!cn) return; if (final) { logger(L_INF, "[DS]: closeSocket"); } if (cn->fileDescriptor >= 0) { if (final) { logger(L_INF, "[DS]: closeSocket close socket"); } close(cn->fileDescriptor); cn->fileDescriptor = -1; } if (cn->serverFileDescriptor >= 0) { if (final) { logger(L_INF, "[DS]: closeSocket close server socket"); } close(cn->serverFileDescriptor); cn->serverFileDescriptor = -1; } if (final) { if (conn->mode == SERVER_UX) { unlink(cn->uSocket); free(cn->uSocket); } } free(cn); conn->connectionData = NULL; conn->state = PEER_DISCONNECTED; } void socketReset(ConnectInfo* conn) { _SocketConnection* cn = (_SocketConnection*) conn->connectionData; if (cn) { if (cn->fileDescriptor >= 0) { close(cn->fileDescriptor); cn->fileDescriptor = -1; } conn->state = PEER_WAIT_ACCEPT; } else { conn->state = PEER_DISCONNECTED; // should not happens } } // // Setup listen // int socketListen(ConnectInfo* conn) { logger(L_INF, "[DS]: socketListen"); _SocketConnection* cn = (_SocketConnection*) conn->connectionData; if (!cn) { return -1; } int ret = listen(cn->serverFileDescriptor,0); if (ret >= 0) { conn->state = PEER_WAIT_ACCEPT; } return (ret < 0 ? -1 : 1); } // // Wait for incoming connection // int socketAccept(ConnectInfo* conn) { struct sockaddr* socketaddr = NULL; struct sockaddr_in ip_addr; struct sockaddr_un un_addr; int cnt, sz; int type = conn->mode; INFO2("[DS]: socketAccept %d", conn->id); cnt = 0; if (type == SERVER_TCP) { socketaddr=(struct sockaddr *)&ip_addr; sz = sizeof(ip_addr); } else if (type == SERVER_UX) { socketaddr=(struct sockaddr *)&un_addr; sz = sizeof(un_addr); } if (!socketaddr) { return -1; } _SocketConnection* cn = (_SocketConnection*) conn->connectionData; if (!cn) return -1; while (stillRun) { INFO2("[DS]: socketAccept: accept on %d", conn->id); cn->fileDescriptor = accept(cn->serverFileDescriptor, (struct sockaddr *) socketaddr, (socklen_t *)&sz); if (cn->fileDescriptor < 0 && errno == EAGAIN) { if (cnt >= 60) { // Print to log every minute logger(L_INF, "socketAccept: waiting for connection"); //printf("."); cnt = 0; } fflush(stdout); sleep(1); cnt++; continue; } if (cn->fileDescriptor < 0) { logger(L_ERR, "[DS]: on accept"); printf("ERROR: on accept %d\n", errno); return -1; /*} else { // Set non-blocking mode if (-1 == (flags = fcntl(portfd, F_GETFL, 0))) { flags = 0; } fcntl(portfd, F_SETFL, flags | O_NONBLOCK); */ } char buf[INET6_ADDRSTRLEN]; buf[0] = '\0'; if (type == SERVER_TCP) { peerName(cn->fileDescriptor,buf,INET6_ADDRSTRLEN); if (!isAllowed(buf)) { INFO2("[DS]: socketAccept: host %s is not in the list of accepted host, close connection", buf); write(cn->fileDescriptor,CMD_STR_DISCONNECT,strlen(CMD_STR_DISCONNECT)); close(cn->fileDescriptor); cn->fileDescriptor = -1; conn->state = PEER_DISCONNECTED; return -1; } } if (getUsePassword() && !getIViewer()) { logger(L_DBG,"[DS]: socketAccept: Do password verification"); int ret = EXIT_OK; int i = 0; for ( ; i<3; i++) { ret = verifyPassword(cn->fileDescriptor); if (ret == EXIT_OK) { // got it break; } } if (ret != EXIT_OK) { if (ret == EXIT_NOK) { // if it is EXIT_STOP connection is already lost write(cn->fileDescriptor,CMD_STR_DISCONNECT,strlen(CMD_STR_DISCONNECT)); } close(cn->fileDescriptor); cn->fileDescriptor = -1; conn->state = PEER_DISCONNECTED; return -1; } logger(L_DBG,"[DS]: socketAccept: Password verification OK"); } INFO2("[DS]: socketAccept: accepted from %s", buf); conn->state = PEER_CONNECTED; // force to detect H/W and cover size. need to do that before (Connect) or syncPeer() handling getClientSize(conn->id, cn->fileDescriptor); break; } logger(L_INF, "[DS]: socketAccept exit"); return 1; } int socketWrite(ConnectInfo* connInfo, const dMessage* msg) { logger(L_DBG, "[DS]: socketWrite"); if (!msg) { return EXIT_OK; } const char* command = msg->value; int count = msg->size; if (!command || count <= 0) { return EXIT_OK; } if (strcmp("End();",command) == 0) { // used only for WEB/CMXML return EXIT_OK; } _SocketConnection* cn = (_SocketConnection*) connInfo->connectionData; if (!cn) { return EXIT_NOK; } // send command if (cn->fileDescriptor >= 0) { if (msg->type == DM_SET) { if (isDataOld(connInfo, msg->subtype, command, count)) { INFO2("[DS]: Skip to send the same data to TCP peer"); return EXIT_OK; } } memset(tmp, 0, MAXMAXLEN); strcat(tmp, "[DS]: socketWrite "); int logSz = (count > 256 ? 255 : count); // it is possible to get binary data here memcpy(tmp, command, logSz); // Do not dump long commands tmp[logSz] = '\0'; logger(L_DBG, tmp); sprintf(tmp, "[DS]: socketWrite %d bytes", count); logger(L_INF, tmp); int n = write(cn->fileDescriptor,command,count); if (n < 0) { logger(L_ERR, "[DS]: error writing to socket"); return EXIT_NOK; } return EXIT_OK; } else { logger(L_ERR, "[DS]: error writing to socket: already closed"); } return EXIT_NOK; } anyremote-6.7.1/src/var.c0000644000232200023220000001632413226200116015620 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include "utils.h" #include "conf.h" #include "hash.h" #include "var.h" #include "str.h" #include "security.h" extern char tmp[MAXMAXLEN]; static HashTable* _variableHash = NULL; ////////////////////////////////////////////////////////////////////////////////// // // Functions related to internal "variables" handling // ////////////////////////////////////////////////////////////////////////////////// varData* searchVar(const char *id) { if (id == NULL) { return NULL; } //strcpy(tmp, "searchVar() >"); //strcat(tmp,id); //strcat(tmp,"<"); //logger(L_DBG, tmp); varData* recalledObject = hashFind(_variableHash, id); return recalledObject; } // caller function must free data // need to dup it because var can contain binary data (so size field matters) char* dupVarValue(const char *name) { varData* v = searchVar(name); if (v != NULL && v->value != NULL && v->value[0] != '\0') { char *d = (char*) malloc(v->size+1); strncpy(d,v->value,v->size); d[v->size] = '\0'; return d; } return NULL; } const char* getVarValue(const char *id, int *sz) { if (id == NULL) { return NULL; } varData* ptr = searchVar(id); (*sz) = (ptr ? ptr->size : 0); return (ptr ? ptr->value : NULL); } static void variable_destroyed(void* data) { varData * vd = (varData*) data; if (vd->value != NULL) { free(vd->value); vd->value = NULL; } free(vd); } static varData* initVarData(const char *name, const char *val, int sz) { //DEBUG2("initVarData() >%s< >%s< %d", name, (val ? val : "NULL"), sz); varData * v = (varData *) malloc(sizeof(varData)); if (sz > 0 && val != NULL) { v->value = (char*) malloc(sz); memcpy((void*)v->value, (const void *) val, sz); // can not use strdup() since val can contains binary data } else { v->value = NULL; } v->size = sz; return v; } static void arepeatHook() { // clean auto-repeat flag in any case setRepeatNow(NULL); } static void loggingHook() { char* vl = dupVarValue(VAR_LOGGING); setLog(vl); free(vl); } static void iviewerHook() { char* vl = dupVarValue(VAR_IVIEWER); setIViewer(vl); free(vl); } static void bemusedHook() { char* vl = dupVarValue(VAR_BEMUSED); setBemused(vl); free(vl); } static void waitTimeoutHook() { char* vl = dupVarValue(VAR_WAITEXEC); setWaitTime(vl); free(vl); } static void allowedOnlyHook() { char* vl = dupVarValue(VAR_ALLOWED_ONLY); setAllowedOnly(vl); free(vl); } static void checkVarHooks(const char* name) { //DEBUG2("checkVarHooks >%s<", name); static struct { const char* name; void (*hook)(void); } varHooks[] = { #ifdef USE_ICONV { VAR_TO_ENCODING, encodingHook}, { VAR_FROM_ENCODING, encodingHook}, #endif { VAR_LOGGING, loggingHook}, { VAR_AUTOREPEAT, arepeatHook}, { VAR_IVIEWER, iviewerHook}, { VAR_BEMUSED, bemusedHook}, { VAR_WAITEXEC, waitTimeoutHook}, { VAR_ALLOWED_ONLY, allowedOnlyHook}, { NULL, 0} }; size_t idx; for (idx = 0; varHooks[idx].name; ++idx) { if (strcmp(name, varHooks[idx].name) == 0) { if (varHooks[idx].hook != NULL) { (*(varHooks[idx].hook))(); } break; } } } // can be used only to _string_ data // (binary data can contain \0 inside) int setVarSimple(const char *name, const char* val) { return setVar(name, val, strlen(val)); } int setVar(const char *name, const char *val, int sz) { if (name == NULL) { return EXIT_NOK; } DEBUG2("setVar() >%s< -> >%s< %d", name, (val == NULL ? "NULL" : val), sz); if (!_variableHash) { _variableHash = hashNew((DestroyCallback) variable_destroyed); } varData * vd = initVarData(name, val, sz); hashReplace(_variableHash, name, vd); checkVarHooks(name); return EXIT_OK; } void addInternalVars() { char *d = getenv("HOME"); setVar("Home", d, d ? strlen(d) : 0); string_t* tmp = stringNew(d ? d : ""); stringAppend(tmp,"/.anyRemote"); setVarSimple("TmpDir", tmp->str); stringFree(tmp, BOOL_YES); setVar(VAR_CFGDIR, NULL, 0); struct { const char* name; const char* val; } internalVars[] = { #ifdef USE_XTEST { "Xtest", "yes"}, #else { "Xtest", "no"}, #endif #ifdef USE_BLUEZ { "Bluez", "yes"}, #else { "Bluez", "no"}, #endif #ifdef USE_DBUS { "Dbus", "yes"}, #else { "Dbus", "no"}, #endif { "MixerCard", "0"}, { "MixerChannel", "Master"}, { VAR_AUTOCONN, "false"}, { VAR_AUTOREPEAT, "false"}, { "Baudrate", "19200"}, { VAR_CHARSET, "8859-1"}, // AT mode only { "CmerOff", ""}, // AT mode only { "CmerOn", ""}, // AT mode only { "Device", DEFAULT_DEVICE}, #ifdef USE_ICONV { VAR_TO_ENCODING, "UTF-8"}, { VAR_FROM_ENCODING, ""}, #endif { VAR_LOGGING, "false"}, { VAR_WAITEXEC, "-1"}, { "RetrySeconds", "60"}, { "ServiceName", "anyRemote"}, { "TwoWayComm", "false"}, // Send something to device ? { "ToMainMenu", "E"}, // AnyMenu -> MainMenu - AT mode only { VAR_IVIEWER, "false"}, // Use iViewer tricks ? { VAR_BEMUSED, "false"}, // Use Bemused tricks ? { "UpdateTimeout", "5"}, // Update player state timeout { NULL, 0} }; size_t idx; for (idx = 0; internalVars[idx].name; ++idx) { setVarSimple(internalVars[idx].name, internalVars[idx].val); } } void varPrinter(void* key, void* value, void* user_data) { const char *name = (const char *) key; const varData* ptr = (const varData *) value; // value of variable can contain \0 inside memset(tmp, 0, MAXMAXLEN); sprintf(tmp, "\t%-16s -> ", name); strncat(tmp, ptr->value != NULL ? ptr->value : "(empty)",ptr->value != NULL ? ptr->size : 7); logger(L_CFG, tmp); } void printVars() { sprintf(tmp, "[Variables]"); logger(L_CFG, tmp); hashForeach(_variableHash, varPrinter, NULL); sprintf(tmp, "[End]"); logger(L_CFG, tmp); } void freeVars() { logger(L_DBG, "freeVars()"); hashDestroy(_variableHash); _variableHash = NULL; } anyremote-6.7.1/src/mode.c0000644000232200023220000001242012664332726015767 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include "parse.h" #include "mode.h" #include "utils.h" #include "conf.h" extern char tmp[MAXMAXLEN]; static mode *modes = NULL; static mode *currentMode = NULL; static mode *internalMode = NULL; static mode *defMode = NULL; mode* getInternalMode() { if (internalMode == NULL) { internalMode = (mode*) calloc(1, sizeof(mode)); internalMode->name = stringNew("_INTERNAL_"); internalMode->parent = NULL; // no parent mode by default internalMode->next = NULL; internalMode->keys = NULL; } return internalMode; } mode* getDefaultMode() { if (!defMode) { // We should have at least default mode defMode = (mode*) calloc(1, sizeof(mode)); defMode->name = stringNew("default"); defMode->parent = NULL; // no parent mode by default defMode->next = NULL; defMode->keys = NULL; modes = defMode; currentMode = defMode; } return defMode; } mode* getCurrentMode() { return currentMode; } void setCurrentMode(mode* m) { //DEBUG2("[EX]: setCurrentMode() %s",(m ? m->name : "NULL")); currentMode = m; } char *getModeName (void) { return (currentMode == NULL ? NULL : currentMode->name->str); } mode* findMode(const char *name) { mode *mp = modes; while (mp && strcmp(name, mp->name->str) != 0) { mp = (mode*) mp->next; } //if (mp) { // DEBUG2("[EX]: findMode() %s = %s",name,mp->name->str); //} return mp; } mode* addMode(const char *name, const char *parent) { mode* nm = (mode*) calloc(1, sizeof(mode)); nm->name = stringNew(name); nm->keys = NULL; if (parent) { nm->parent = stringNew(parent); } // Insert in head if (modes == NULL) { // first elem nm->next = NULL; } else { nm->next = (mode*) modes; } modes = nm; return nm; } void switchMode(const char *modeName) { if (modeName == NULL) { logger(L_DBG, "[EX]: setMode() NULL input"); return; } DEBUG2("[EX]: setMode() to %s", modeName); mode *mp = findMode(modeName); if (mp) { currentMode = mp; DEBUG2("[EX]: setMode() new mode was set to %s", mp->name->str); } else { logger(L_DBG, "[EX]: setMode() new mode did not found"); } return; } mode* getModes() { return modes; } void forgetModes() { defMode = currentMode = modes = NULL; } void freeInternalMode() { if (internalMode) { type_key *mki = internalMode->keys; while (mki) { type_key* It = mki; mki = (type_key*) mki->next; freeCmds(getCommand(It)); It->commands = NULL; free(It->key); free(It); } stringFree(internalMode->name, BOOL_YES); internalMode->name = NULL; if (internalMode->parent) { stringFree(internalMode->parent,BOOL_YES); internalMode->parent = NULL; } free(internalMode); internalMode = NULL; } } // // if parameter is NULL use modes static var // void freeModes(mode* fmodes) { //logger(L_DBG, "[EX]: freeModes()"); mode * pmodes = (fmodes ? fmodes : modes); // Keys while (pmodes) { mode *md = pmodes; //printf("mode -> %s\n",md->name); type_key *mk = md->keys; while (mk) { type_key* It = mk; mk = (type_key*) mk->next; freeCmds(getCommand(It)); It->commands = NULL; free(It->key); free(It); } pmodes = (mode*) pmodes->next; stringFree(md->name, BOOL_YES); md->name = NULL; if (md->parent) { stringFree(md->parent,BOOL_YES); md->parent = NULL; } free(md); md = NULL; } if (!fmodes) { // all modes were deleted forgetModes(); // special handling for "internal" mode freeInternalMode(); } } void printModes() { mode *mp = modes; while (mp) { if (!mp->parent) { sprintf(tmp, "%s %s", MODE_STR, mp->name->str); } else { sprintf(tmp, "%s %s : %s", MODE_STR, mp->name->str, mp->parent->str); } logger(L_CFG, tmp); printKeys(mp->keys); sprintf(tmp, "%s %s\n", MODE_END_STR, mp->name->str); logger(L_CFG, tmp); mp = (mode*)mp->next; } return; } anyremote-6.7.1/src/avahi.c0000644000232200023220000002732512664332726016145 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #ifdef USE_AVAHI #include #include #include #include #include #include #include #endif #include "conf.h" #include "thread.h" #include "utils.h" extern char tmp[MAXMAXLEN]; #ifdef USE_AVAHI static AvahiEntryGroup *group = NULL; static AvahiSimplePoll *simple_poll = NULL; static char *avahiName = NULL; static void create_services(AvahiClient *c); static int isAvahiUsed = 0; static int tcpPort = -1; static int webPort = -1; int parsePortsForAvahi() { int use = 0; char* peers = getDevice(); //DEBUG2("[AV]: parsePortsForAvahi() ports %s", peers); char *bufPtr = NULL; // split peers by ',' char *peer = strtok_r(peers, ",", &bufPtr); while (peer) { char* strPort; if ((strPort = strstr(peer, PEER_TCP)) != NULL) { strPort += strlen(PEER_TCP); char * ch = strPort; int isPort = 1; while (*ch != '\0') { if (isdigit(*ch)) { ch++; } else { isPort = 0; break; } } if (isPort) { DEBUG2("[AV]: parsePortsForAvahi() TCP %s", strPort); tcpPort = atoi(strPort); } } else if ((strPort = strstr(peer, WEB_SOCKET)) != NULL) { strPort += strlen(WEB_SOCKET); char * ch = strPort; int isPort = 1; while (*ch != '\0') { if (isdigit(*ch)) { ch++; } else { isPort = 0; break; } } if (isPort) { DEBUG2("[AV]: parsePorts() WEB %s", strPort); webPort = atoi(strPort); } } else if ((strPort = strstr(peer, AVAHI_USE)) != NULL) { use = 1; } peer = strtok_r(NULL, ",", &bufPtr); } free(peers); return (use && (tcpPort > 0 || webPort > 0)); } // // Called whenever the entry group state changes // static void entry_group_callback(AvahiEntryGroup *g, AvahiEntryGroupState state, AVAHI_GCC_UNUSED void *userdata) { group = g; logger(L_INF, "[AV]: entry_group_callback"); switch (state) { case AVAHI_ENTRY_GROUP_ESTABLISHED : // The entry group has been established successfully INFO2("[AV]: Service %s successfully established", avahiName) break; case AVAHI_ENTRY_GROUP_COLLISION: { char *n; // A service name collision with a remote service happened. Let's pick a new name n = avahi_alternative_service_name(avahiName); avahi_free(avahiName); avahiName = n; INFO2("[AV]: Service name collision, renaming service to %s", avahiName) // And recreate the services create_services(avahi_entry_group_get_client(g)); break; } case AVAHI_ENTRY_GROUP_FAILURE : ERROR2("[AV]: Entry group failure: %s", avahi_strerror(avahi_client_errno(avahi_entry_group_get_client(g)))); // Some kind of failure happened while we were registering our services avahi_simple_poll_quit(simple_poll); break; case AVAHI_ENTRY_GROUP_UNCOMMITED: //INFO2("[AV]: entry_group_callback AVAHI_ENTRY_GROUP_UNCOMMITED"); break; case AVAHI_ENTRY_GROUP_REGISTERING: //INFO2("[AV]: entry_group_callback AVAHI_ENTRY_GROUP_REGISTERING"); break; } } static void create_services(AvahiClient *c) { char *n; int ret; logger(L_INF, "[AV]: create_services"); if (tcpPort < 0 && webPort < 0) { logger(L_INF, "[AV]: create_services: no port to publish"); avahi_simple_poll_quit(simple_poll); return; } // If this is the first time we're called, let's create a new entry group if necessary if (!group) { if (!(group = avahi_entry_group_new(c, entry_group_callback, NULL))) { ERROR2("[AV]: create_services: avahi_entry_group_new() failed: %s", avahi_strerror(avahi_client_errno(c))); avahi_simple_poll_quit(simple_poll); return; } } // If the group is empty (either because it was just created, or // because it was reset previously, add our entries if (avahi_entry_group_is_empty(group)) { INFO2("[AV]: Adding service %s", avahiName) if (tcpPort >= 0) { // Add service if ((ret = avahi_entry_group_add_service(group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, avahiName, "_anyremote._tcp", NULL, NULL, tcpPort, "Remote control daemon", NULL)) < 0) { if (ret == AVAHI_ERR_COLLISION) { logger(L_WARN, "[AV]: create_services collision"); // A service name collision with a local service happened. Let's pick a new name n = avahi_alternative_service_name(avahiName); avahi_free(avahiName); avahiName = n; INFO2("[AV]: Service name collision, renaming service to %s", avahiName); avahi_entry_group_reset(group); create_services(c); return; } ERROR2("[AV]: Failed to add _remote._tcp service: %s", avahi_strerror(ret)); avahi_simple_poll_quit(simple_poll); return; } } if (webPort >= 0) { // Add service if ((ret = avahi_entry_group_add_service(group, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, 0, avahiName, "_anyremote-http._tcp", NULL, NULL, webPort, "Remote control daemon - web interface", NULL)) < 0) { if (ret == AVAHI_ERR_COLLISION) { logger(L_WARN, "[AV]: create_services collision"); // A service name collision with a local service happened. Let's pick a new name n = avahi_alternative_service_name(avahiName); avahi_free(avahiName); avahiName = n; INFO2("[AV]: Service name collision, renaming service to %s", avahiName); avahi_entry_group_reset(group); create_services(c); return; } ERROR2("[AV]: Failed to add _remote._http._tcp service: %s", avahi_strerror(ret)); avahi_simple_poll_quit(simple_poll); return; } } // Tell the server to register the service if ((ret = avahi_entry_group_commit(group)) < 0) { ERROR2("[AV]: Failed to commit entry group: %s", avahi_strerror(ret)); avahi_simple_poll_quit(simple_poll); return; } } logger(L_INF, "[AV]: create_services OK"); return; } // // Called whenever the client or server state changes // static void client_callback(AvahiClient *c, AvahiClientState state, AVAHI_GCC_UNUSED void * userdata) { logger(L_INF, "[AV]: client_callback"); switch (state) { case AVAHI_CLIENT_S_RUNNING: logger(L_INF, "[AV]: client_callback AVAHI_CLIENT_S_RUNNING"); // The server has startup successfully and registered its host // name on the network, so it's time to create our services create_services(c); break; case AVAHI_CLIENT_FAILURE: ERROR2("[AV]: client_callback AVAHI_CLIENT_FAILURE: %s", avahi_strerror(avahi_client_errno(c))); avahi_simple_poll_quit(simple_poll); break; case AVAHI_CLIENT_S_COLLISION: logger(L_INF, "[AV]: client_callback AVAHI_CLIENT_S_COLLISION"); // Let's drop our registered services. When the server is back in AVAHI_SERVER_RUNNING // state we will register them again with the new host name if (group) { avahi_entry_group_reset(group); } break; case AVAHI_CLIENT_S_REGISTERING: logger(L_INF, "[AV]: client_callback AVAHI_CLIENT_S_REGISTERING"); // The server records are now being established. This might be caused by a host name change. // We need to wait for our own records to register until the host name is properly established if (group) { avahi_entry_group_reset(group); } break; case AVAHI_CLIENT_CONNECTING: logger(L_INF, "[AV]: client_callback AVAHI_CLIENT_CONNECTING"); } } pointer_t startAvahi(pointer_t thread) { AvahiClient *client = NULL; int error; int ret = 1; logger(L_INF,"[AV]: Start avahi thread"); // Allocate main loop object if ((simple_poll = avahi_simple_poll_new())) { avahiName = avahi_strdup(getServiceName()); // Allocate a new client client = avahi_client_new(avahi_simple_poll_get(simple_poll), 0, client_callback, NULL, &error); logger(L_INF,"[AV]: avahi_client_new"); // Check wether creating the client object succeeded if (client) { logger(L_INF, "[AV]: startAvahi: start loop"); isAvahiUsed = 1; // Run the main loop avahi_simple_poll_loop(simple_poll); logger(L_INF, "[AV]: startAvahi: loop exiting"); ret = 0; } else { ERROR2("[AV]: Failed to create client: %s", avahi_strerror(error)); } } else { logger(L_ERR, "[AV]: Failed to create simple poll object"); } // Cleanup things if (ret == 0) { logger(L_INF, "[AV]: startAvahi: exit"); } else { logger(L_ERR, "[AV]: startAvahi: fail"); } if (client) { avahi_client_free(client); } if (simple_poll) { avahi_simple_poll_free(simple_poll); } avahi_free(avahiName); return NULL; } void stopAvahi() { logger(L_INF, "[AV]: stopAvahi"); if (isAvahiUsed) { avahi_simple_poll_quit(simple_poll); threadJoin(T_AVAHI); } } #else pointer_t startAvahi(pointer_t thread) {} void stopAvahi () {} int parsePortsForAvahi() {return 0;} #endif anyremote-6.7.1/src/common.h0000644000232200023220000000764412664342320016343 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _COMMON_H_ #define _COMMON_H_ #define EXIT_EXACT -3 #define EXIT_NOK 0 #define EXIT_OK 1 #define EXIT_DISCON 2 #define EXIT_ABORT 3 #define EXIT_STOP 4 #define EXIT_INITOK 5 #define MAXMAXLEN 2048 #define MAXLEN 512 #define MAXCKPDLEN 100 #define MTEXTLEN 30 #define IS_OK(answer) (strstr(answer, "OK") != NULL) //#define DEFAULT_DEVICE "/dev/rfcomm0" seems JSR-82 phones is more usable now //#define DEFAULT_DEVICE "bluetooth" #ifdef USE_AVAHI #if defined USE_BLUEZ || defined USE_BT_FBSD #define DEFAULT_DEVICE "bluetooth,tcp:5197,web:5080,avahi" #else #define DEFAULT_DEVICE "tcp:5197,web:5080,avahi" #endif #else #if defined USE_BLUEZ || defined USE_BT_FBSD #define DEFAULT_DEVICE "bluetooth:19,tcp:5197,web:5080" #else #define DEFAULT_DEVICE "tcp:5197,web:5080" #endif #endif #define RFCOMM_DEVICE "rfcomm" #define AT_DEVICE "at:" #define INET_SOCKET "socket:" #define PEER_TCP "tcp:" #define BT_SOCKET "bluetooth" #define BT_SPP "btspp" #define L2CAP_SOCKET "l2cap" // not yet used #define UNIX_SOCKET "local:" #define ILIRC_SOCKET "ilirc:" #define STDIN_STREAM "stdin" #define WEB_SOCKET "web:" #define CMXML_SOCKET "cmxml:" #define AVAHI_USE "avahi" #define PROTO_AT 1 #define PROTO_ANYREMOTE 2 #define PROTO_BEMUSED 3 #define PROTO_IVIEWER 4 #define PEER_ANY 0 enum ProtocolMode { CLIENT_RFCOMM = 0, // AT protocol over bluetooth CLIENT_AT, // AT protocol over IR or cable SERVER_TCP, // anyRemote protocol over TCP/IP SERVER_BT, // anyRemote protocol over btspp CLIENT_ILIRC, // inputLirc protocol CLIENT_NOAT, // anyRemote protocol over IR (or any AF_UNIX socket) - as client SERVER_STDIN, // anyRemote protocol, read command from stdin SERVER_WEB, // anyRemote protocol, built-in web server SERVER_CMXML, // anyRemote protocol, built-in XML server #ifdef USE_L2CAP SERVER_L2CAP, // TODO: anyRemote protocol over l2cap #endif SERVER_UX , // NOT USED: anyRemote protocol over IR (or any AF_UNIX socket) - as server FRONT_END , // Used to communicate with frontend SERVER_MAX }; #define DEFAULT_BT_CHANNEL 1 #define BT_ADDR_LEN 17 // 00:12:EF:32:21:1A #define DEFAULT_L2CAP_PORT 5019 #ifndef SOCK_CLOEXEC #define SOCK_CLOEXEC 0 #endif #define VAR_AUTOCONN "AutoConnect" #define VAR_AUTOREPEAT "AutoRepeat" #define VAR_CFGDIR "CfgDir" #define VAR_CHARSET "CharSet" #define VAR_TO_ENCODING "ToEncoding" #define VAR_FROM_ENCODING "FromEncoding" #define VAR_LOGGING "Logging" #define VAR_IVIEWER "IViewer" #define VAR_BEMUSED "Bemused" #define VAR_WAITEXEC "WaitSeconds" #define VAR_ALLOWED_ONLY "AllowedOnly" #define CMD_STR_DISCONNECT "Set(disconnect);" #define CMD_STR_GETCOVERSZ "Get(cover_size);" #define CMD_STR_GETSCREENSZ "Get(screen_size);" // TODO: Support L2CAP under FreeBSD //#ifdef USE_BLUEZ //#define USE_L2CAP 1 //#endif enum RC_Code { RC_NOK = 0, RC_OK, }; #endif anyremote-6.7.1/src/gen_html.h0000644000232200023220000000261712664332726016654 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PR_GEN_HTML_H_ #define _PR_GEN_HTML_H_ #include "lib_wrapper.h" enum arCookieStatus { NO_COOKIE=1, NEED_SEND_COOKIE, COOKIE_SENT }; void initHtmlGenerator(); string_t* renderCtrlHTMLForm(string_t* ip, int port); string_t* renderTextHTMLForm(string_t* ip, int port); string_t* renderListHTMLForm(string_t* ip, int port); string_t* renderWmanHTMLForm(string_t* ip, int port); string_t* renderEditHTMLForm(string_t* ip, int port); string_t* renderPassHTMLForm(string_t* ip, int port); int htmlScreenWidth (); int htmlScreenHeight(); #endif anyremote-6.7.1/src/pr_serial.c0000644000232200023220000001507012664332726017027 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "lib_wrapper.h" #include "common.h" #include "utils.h" #include "conf.h" #include "atsend.h" #include "pr_serial.h" extern char tmp[MAXMAXLEN]; int serialFD(ConnectInfo* conn) { _SerialConnection* cn = (_SerialConnection*) conn->connectionData; return (cn ? cn->fileDescriptor : -1); } int serialSetup(ConnectInfo* conn) { int fd = serialFD(conn); if (fd < 0) { DEBUG2("serialSetup() wrong descriptor"); return -1; } return setupAtConnection(conn, fd); } int serialOpenInternal(_SerialConnection* cn, char* port) { // get a file descriptor if ((cn->fileDescriptor = open(port, O_RDWR|O_NOCTTY|O_NDELAY/*|O_CLOEXEC fails to compile ? */)) < 0) { sprintf(tmp, "can not open %s", port); logger(L_ERR, tmp); printf("ERROR: can not open %s\n", port); cn->fileDescriptor = -1; return -1; } fcntl(cn->fileDescriptor,F_SETFD,FD_CLOEXEC); // check to see that the file is a terminal if (!isatty(cn->fileDescriptor)) { printf("ERROR: %s does not refer to a terminal\n", port); close(cn->fileDescriptor); cn->fileDescriptor = -1; return -1; } // get port attributes, store in oldterm if (tcgetattr(cn->fileDescriptor, &(cn->oldterm)) < 0) { printf("ERROR: Can not get port attributes (%s)\n", port); close(cn->fileDescriptor); cn->fileDescriptor = -1; return -1; } // get port flags, save in oldflags if ((cn->oldflags = fcntl(cn->fileDescriptor, F_GETFL)) < 0) { printf("ERROR: Can't get port flags (%s)\n", port); close(cn->fileDescriptor); cn->fileDescriptor = -1; return -1; } cn->portterm = cn->oldterm; cn->portflags = cn->oldflags; cn->portterm.c_cflag = getBaudrate() | CRTSCTS | CS8 | CLOCAL | CREAD | O_NDELAY; if (!cn->rtscts) { cn->portterm.c_cflag &= ~CRTSCTS; } cn->portterm.c_iflag = IGNPAR; cn->portterm.c_oflag = 0; cn->portterm.c_lflag = 0; cn->portterm.c_cc[VTIME] = 0; cn->portterm.c_cc[VMIN] = 0; tcflush(cn->fileDescriptor, TCIOFLUSH); if (tcsetattr(cn->fileDescriptor,TCSANOW,&(cn->portterm)) < 0) { printf("ERROR: Can't set port attributes (%s)\n", port); close(cn->fileDescriptor); cn->fileDescriptor = -1; return -1; } // set non-blocking/ if (fcntl(cn->fileDescriptor, F_SETFL, (cn->portflags |= O_NONBLOCK)) < 0) { printf("ERROR: Can't set port flags (%s)\n", port); close(cn->fileDescriptor); cn->fileDescriptor = -1; return -1; } return 0; } int serialOpen(ConnectInfo* conn) { if (conn->connectionData && ((_SerialConnection*) conn->connectionData)->fileDescriptor >= 0) { close(((_SerialConnection*) conn->connectionData)->fileDescriptor); } if (conn->connectionData) { free(conn->connectionData); } conn->connectionData = (_SerialConnection*) malloc(sizeof(_SerialConnection)); _SerialConnection* cn = (_SerialConnection*) conn->connectionData; cn->fileDescriptor = -1; cn->useCallId = BOOL_YES; cn->hasActiveCall = BOOL_NO; cn->portflags = 0; cn->oldflags = 0; cn->rtscts = 0; DEBUG2("[DS]: Serial Client mode. Use device %s", conn->portStr->str); if (serialOpenInternal(cn, conn->portStr->str) < 0) { logger(L_ERR,"[DS]: can not open serial port"); conn->state = PEER_DISCONNECTED; return EXIT_NOK; } conn->state = PEER_CONNECTED; return EXIT_OK; } // // Then port will be closed from a forked child use 0 // void serialClose(ConnectInfo* conn, int final) { _SerialConnection* cn = (_SerialConnection*) conn->connectionData; if (!cn) { conn->state = PEER_DISCONNECTED; return; } int retval = 0; if (final) { logger(L_INF, "closeSerialPort"); } if (cn->fileDescriptor < 0) { // already closed if (final) { logger(L_INF, "Already closed ?"); } } else { if (final) { // restore old settings if (tcsetattr(cn->fileDescriptor, TCSADRAIN, &(cn->oldterm)) < 0) { retval = -1; } if (fcntl(cn->fileDescriptor, F_SETFL, cn->oldflags) < 0) { retval = -1; } } retval = close(cn->fileDescriptor); } cn->fileDescriptor = -1; conn->state = PEER_DISCONNECTED; if (retval < 0 && final) { logger(L_ERR,"[DS]: Error on closing port\n"); } } void serialReset(ConnectInfo* conn) { serialClose(conn, 0); } boolean_t serialCheckActiveCall(ConnectInfo* conn) { _SerialConnection* cn = (_SerialConnection*) conn->connectionData; if (!cn) { return BOOL_NO; } if (cn->hasActiveCall) { if (cn->useCallId) { int fd = cn->fileDescriptor; if (fd < 0) { cn->hasActiveCall = BOOL_NO; } else { char callerId[MAXLEN]; int ret = getClip(fd, callerId); if (ret != EXIT_EXACT) { // Seems the call was finished cn->hasActiveCall = BOOL_NO; } } } else { // no way to check, just drop it cn->hasActiveCall = BOOL_NO; } } return cn->hasActiveCall; } boolean_t serialHasActiveCall(ConnectInfo* conn) { _SerialConnection* cn = (_SerialConnection*) conn->connectionData; return (cn ? cn->hasActiveCall : BOOL_NO); } anyremote-6.7.1/src/queue.c0000644000232200023220000001044612664332726016175 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include "common.h" #include "queue.h" // // Message queue related wrappers // #ifdef USE_GLIB #include GAsyncQueue* _queues[Q_MAX] = {NULL}; int queueNew(int id) { if (id >=0 && id < Q_MAX && _queues[id] == NULL) { _queues[id] = g_async_queue_new(); return RC_OK; } return RC_NOK; } void* queuePop(int id) { if (id >=0 && id < Q_MAX && _queues[id] != NULL) { return g_async_queue_try_pop(_queues[id]); } return NULL; } int queuePush(int id, void* data) { if (id >=0 && id < Q_MAX && _queues[id] != NULL) { g_async_queue_push(_queues[id], data); return RC_OK; } return RC_NOK; } void queueRemove(int id, DestroyCallback func) { if (id >=0 && id < Q_MAX && _queues[id] != NULL) { while (1) { // force to empty queue void* data = queuePop(id); if (data) { func(data); } else { break; } } g_async_queue_unref(_queues[id]); _queues[id] = NULL; } } int queueCanPop(int id) { if (id >=0 && id < Q_MAX && _queues[id] != NULL) { return (g_async_queue_length(_queues[id]) > 0 ? RC_OK : RC_NOK); } return RC_NOK; } #else #include #include #include #include #include typedef struct { DoubleList *head; DoubleList *tail; uint length; } Queue; Queue* _queues[Q_MAX] = {NULL}; int queueNew(int id) { if (mutexExists(M_QUEUE) != RC_OK) { mutexNew(M_QUEUE); } if (id >=0 && id < Q_MAX && _queues[id] == NULL) { mutexLock(M_QUEUE); _queues[id] = malloc(sizeof(Queue)); _queues[id]->head = _queues[id]->tail = NULL; _queues[id]->length = 0; mutexUnlock(M_QUEUE); return RC_OK; } return RC_NOK; } void* queuePop(int id) { void* data = NULL; if (id >=0 && id < Q_MAX && _queues[id] != NULL) { mutexLock(M_QUEUE); if (_queues[id]->tail) { DoubleList *node = _queues[id]->tail; data = node->data; _queues[id]->tail = node->prev; if (_queues[id]->tail) { _queues[id]->tail->next = NULL; } else { _queues[id]->head = NULL; } _queues[id]->length--; listDoubleFreeNode(node); } mutexUnlock(M_QUEUE); } return data; } int queuePush(int id, void* data) { if (id >=0 && id < Q_MAX && _queues[id] != NULL) { mutexLock(M_QUEUE); _queues[id]->head = listDoublePrepend(_queues[id]->head, data); if (!_queues[id]->tail) { _queues[id]->tail = _queues[id]->head; } _queues[id]->length++; mutexUnlock(M_QUEUE); return RC_OK; } return RC_NOK; } void queueRemove(int id, DestroyCallback func) { if (id >=0 && id < Q_MAX && _queues[id] != NULL) { mutexLock(M_QUEUE); listDoubleFullFree(_queues[id]->head, func); free(_queues[id]); _queues[id] = NULL; mutexUnlock(M_QUEUE); } } int queueCanPop(int id) { if (id >=0 && id < Q_MAX && _queues[id] != NULL) { mutexLock(M_QUEUE); int size = _queues[id]->length; mutexUnlock(M_QUEUE); return (size > 0 ? RC_OK : RC_NOK); } return RC_NOK; } #endif int queueExists(int id) { return (id >=0 && id < Q_MAX && _queues[id] != NULL ? RC_OK : RC_NOK); } anyremote-6.7.1/src/pr_btspp.c0000644000232200023220000004675012673224605016705 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef USE_BLUEZ #include #include #include #include #endif #ifdef USE_BT_FBSD #include #include #include #endif #include "pr_btspp.h" #include "common.h" #include "utils.h" #include "sys_util.h" #include "conf.h" #include "lib_wrapper.h" #include "dispatcher.h" #include "security.h" extern char tmp[MAXMAXLEN]; extern boolean_t stillRun; typedef struct _BtsppConnection_ { int fileDescriptor; int serverFileDescriptor; #ifdef USE_BLUEZ sdp_session_t *session; sdp_record_t *record; #endif #ifdef USE_BT_FBSD void *session; uint32_t record; #endif } _BtsppConnection; // // Support SDP // #ifdef USE_BLUEZ static boolean_t sdpRegister(ConnectInfo* connInfo) { _BtsppConnection* cn = (_BtsppConnection*) connInfo->connectionData; if (!cn) { return BOOL_NO; } boolean_t ret = BOOL_YES; uint8_t svc_uuid_int[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xab, 0xcd }; uint8_t rfcomm_channel = connInfo->port; const char *svc_dsc = "Bluetooth remote control"; const char *service_prov = "anyRemote"; uuid_t root_uuid, l2cap_uuid, rfcomm_uuid, svc_uuid, svc_class_uuid; sdp_list_t *l2cap_list = 0, *rfcomm_list = 0, *root_list = 0, *proto_list = 0, *access_proto_list = 0, *svc_class_list = 0, *profile_list = 0; sdp_data_t *channel = 0; sdp_profile_desc_t profile; cn->record = sdp_record_alloc(); // set the general service ID sdp_uuid128_create( &svc_uuid, &svc_uuid_int ); sdp_set_service_id( cn->record, svc_uuid ); // set the service class sdp_uuid16_create(&svc_class_uuid, SERIAL_PORT_SVCLASS_ID); svc_class_list = sdp_list_append(0, &svc_class_uuid); sdp_set_service_classes(cn->record, svc_class_list); // set the Bluetooth profile information sdp_uuid16_create(&profile.uuid, SERIAL_PORT_PROFILE_ID); profile.version = 0x0100; profile_list = sdp_list_append(0, &profile); sdp_set_profile_descs(cn->record, profile_list); // make the service record publicly browsable sdp_uuid16_create(&root_uuid, PUBLIC_BROWSE_GROUP); root_list = sdp_list_append(0, &root_uuid); sdp_set_browse_groups(cn->record, root_list ); // set l2cap information sdp_uuid16_create(&l2cap_uuid, L2CAP_UUID); l2cap_list = sdp_list_append( 0, &l2cap_uuid ); proto_list = sdp_list_append( 0, l2cap_list ); // register the RFCOMM channel for RFCOMM sockets sdp_uuid16_create(&rfcomm_uuid, RFCOMM_UUID); channel = sdp_data_alloc(SDP_UINT8, &rfcomm_channel); rfcomm_list = sdp_list_append( 0, &rfcomm_uuid ); sdp_list_append( rfcomm_list, channel ); sdp_list_append( proto_list, rfcomm_list ); access_proto_list = sdp_list_append( 0, proto_list ); sdp_set_access_protos( cn->record, access_proto_list ); // set the name, provider, and description char *sn = getServiceName(); sdp_set_info_attr(cn->record, sn, service_prov, svc_dsc); free(sn); // connect to the local SDP server, register the service record, // and disconnect cn->session = sdp_connect(BDADDR_ANY, BDADDR_LOCAL, SDP_RETRY_IF_BUSY); if (!cn->session || !cn->record) { ERROR2("can not connect to SDP server %s (%d)", strerror(sdp_get_error(cn->session)), sdp_get_error(cn->session)); ret = BOOL_NO; } if (cn->session && cn->record && sdp_record_register(cn->session, cn->record, 0) == -1) { ERROR2("can not register SDP service %s (%d)", strerror(sdp_get_error(cn->session)), sdp_get_error(cn->session)); ret = BOOL_NO; } // cleanup sdp_data_free( channel ); sdp_list_free( l2cap_list, 0 ); sdp_list_free( proto_list, 0 ); sdp_list_free( rfcomm_list, 0 ); sdp_list_free( root_list, 0 ); sdp_list_free( access_proto_list, 0 ); sdp_list_free( svc_class_list, 0 ); sdp_list_free( profile_list, 0 ); return ret; } #endif #ifdef USE_BT_FBSD static boolean_t sdpRegister(ConnectInfo* connInfo) { _BtsppConnection* cn = (_BtsppConnection*) connInfo->connectionData; if (!cn) { return BOOL_NO; } boolean_t ret = BOOL_YES; int channel,service; bdaddr_t bt_addr_any; sdp_lan_profile_t lan; channel = connInfo->port; service = SDP_SERVICE_CLASS_SERIAL_PORT; cn->session = sdp_open_local(NULL); if (cn->session == NULL) { errx(1, "Unable to create local SDP session"); ret = BOOL_NO; } if (sdp_error(cn->session) != 0) { errx(1, "Unable to open local SDP session. %s (%d)", strerror(sdp_error(cn->session)), sdp_error(cn->session)); ret = BOOL_NO; } memset(&lan, 0, sizeof(lan)); lan.server_channel = channel; memcpy(&bt_addr_any, NG_HCI_BDADDR_ANY, sizeof(bt_addr_any)); if (sdp_register_service(cn->session, service, &bt_addr_any, (void *)&lan, sizeof(lan), &(cn->record)) != 0) { errx(1, "Unable to register LAN service with " "local SDP daemon. %s (%d)", strerror(sdp_error(cn->session)), sdp_error(cn->session)); ret = BOOL_NO; } return ret; } #endif static void sdpDeregister(_BtsppConnection* cn) { if (!cn) return; logger(L_DBG, "Deregister SDP service"); #ifdef USE_BLUEZ if (cn->session != NULL) { sdp_record_unregister(cn->session, cn->record); sdp_close(cn->session); cn->session = NULL; //sdp_record_free(cn->record); } #endif #ifdef USE_BT_FBSD if (cn->session != NULL) { sdp_unregister_service(cn->session, cn->record); sdp_close(cn->session); sdp_close(cn->session); cn->session = NULL; } #endif } int btsppFD(ConnectInfo* conn) { _BtsppConnection* cn = (_BtsppConnection*) conn->connectionData; if (!cn) { return -1; } return (conn->state == PEER_WAIT_ACCEPT || conn->state == PEER_WAIT_LISTEN ? cn->serverFileDescriptor : cn->fileDescriptor); } static int btsppOpenInternal(ConnectInfo* connInfo) { #ifdef USE_BLUEZ struct sockaddr_rc bt_addr = { 0 }; #endif #ifdef USE_BT_FBSD struct sockaddr_rfcomm bt_addr; #endif struct sockaddr* socketaddr = NULL; int addFamily = AF_UNSPEC; int proto = 0; size_t sz; if (connInfo->connectionData && ((_BtsppConnection*) connInfo->connectionData)->serverFileDescriptor > 0) { logger(L_ERR, "BTSPP socket was already opened"); return 1; } if (connInfo->connectionData) { free(connInfo->connectionData); } connInfo->connectionData = (_BtsppConnection*) malloc(sizeof(_BtsppConnection)); _BtsppConnection* cn = (_BtsppConnection*) connInfo->connectionData; cn->serverFileDescriptor = -1; cn->fileDescriptor = -1; #ifdef USE_BLUEZ cn->session = NULL; cn->record = NULL; addFamily = AF_BLUETOOTH; proto = BTPROTO_RFCOMM; #endif #ifdef USE_BT_FBSD cn->session = NULL; cn->record = 0; addFamily = PF_BLUETOOTH; proto = BLUETOOTH_PROTO_RFCOMM; #endif if (addFamily == AF_UNSPEC) { // no BT support return -1; } if ((cn->serverFileDescriptor = socket(addFamily, SOCK_STREAM|SOCK_CLOEXEC, proto)) < 0) { logger(L_ERR, "opening BT/RFCOMM socket"); errnoDebug("opening BT/RFCOMM socket",errno); // testing debug printf("ERROR: opening BT/RFCOMM socket\n"); cn->serverFileDescriptor = -1; return -1; } DEBUG2("[DS]: btsppOpenInternal srv descriptor %d", cn->serverFileDescriptor); int optval = 1; setsockopt(cn->serverFileDescriptor, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); /* // Set non-blocking mode if (-1 == (oldflags = fcntl(sportfd, F_GETFL, 0))) { oldflags = 0; } fcntl(sportfd, F_SETFL, oldflags | O_NONBLOCK); */ #ifdef USE_BLUEZ //memset((void *) &bt_addr, 0, sizeof(bt_addr)); sz = sizeof(bt_addr); // bind socket to the specified port of the first available local bluetooth adapter bt_addr.rc_family = AF_BLUETOOTH; bt_addr.rc_bdaddr = *BDADDR_ANY; bt_addr.rc_channel = (uint8_t) connInfo->port; // try to do the same manually //char tmpstring[512]; //sprintf(tmpstring, "sdptool add --channel=%i SP", connInfo->port); //sprintf(tmpstring, "sdptool add --channel=%i SP;sdptool setattr `sdptool search --bdaddr local SP|grep \"Service RecHandle\"|tail -1|cut -f 3 -d \" \"` 0x100 anyRemote", connInfo->port); //sprintf(tmpstring, "bash -c \'A=`sdptool search --bdaddr local SP|grep \"Service Name\"|grep anyRemote|wc -l`; if [ \"x$A\" == \"x0\" ]; then sdptool add --channel=%i SP;sdptool setattr `sdptool search --bdaddr local SP|grep \"Service RecHandle\"|tail -1|cut -f 3 -d \" \"` 0x100 anyRemote; fi\'", connInfo->port); //system(tmpstring); if (sdpRegister(connInfo) == BOOL_YES) { sprintf(tmp, "[DS]: registered SP for channel %i", connInfo->port); logger(L_INF, tmp); } else { size_t sz; char* btDaemon = executeCommandPipe("ps -eo args|grep bluetoothd|grep -v grep", &sz); if (btDaemon) { if (!strstr(btDaemon,"bluetoothd")) { ERROR2("[DS]: ERROR: bluetoothd daemon is not started"); writeToFrontEnd("Bluetooth connection will not work. bluetoothd daemon is not started"); printf("ERROR: bluetoothd daemon is not started\n"); } else if (!strstr(btDaemon,"-C")) { ERROR2("[DS]: It needs to run bluetoothd daemon with -C option"); writeToFrontEnd("Bluetooth connection will not work. It needs to run bluetoothd daemon with -C option"); printf("ERROR: Bluetooth connection will not work. It needs to run bluetoothd daemon with -C option\n"); } else { ERROR2("[DS]: Not enough permissions to register SDP service"); writeToFrontEnd("Not enough permissions to register SDP service"); printf("ERROR: Not enough permissions to register SDP service\n"); } } else { ERROR2("[DS]: ERROR: bluetoothd daemon is not started"); writeToFrontEnd("Bluetooth connection will not work. bluetoothd daemon is not started"); printf("ERROR: bluetoothd daemon is not started\n"); } /* } else { char* sdp = executeCommandPipe("sdptool search --bdaddr local SP", &sz); if (sdp) { if (strstr(sdp,"Permission denied")) { ERROR2("[DS]: Not enough permissions to run sdptool search command"); writeToFrontEnd("Not enough permissions to run sdptool search command"); } else { printf("TEST %s", sdp); char* ptrptr = NULL; char* tok = strtok_r(sdp,"\\n", &ptrptr); while (tok) { printf("TEST %s", tok); tok = strtok_r(NULL,"\\n", &ptrptr); } } } } }*/ } socketaddr=(struct sockaddr *)&bt_addr; #endif #ifdef USE_BT_FBSD memset(&bt_addr, 0, sizeof(bt_addr)); sz = sizeof(bt_addr); bt_addr.rfcomm_len = sizeof(bt_addr); bt_addr.rfcomm_family = AF_BLUETOOTH; bt_addr.rfcomm_channel = (uint8_t) connInfo->port; if (sdpRegister(connInfo) == BOOL_YES) { sprintf(tmp, "registered SP for channel %i", connInfo->port); logger(L_INF, tmp); } socketaddr=(struct sockaddr *)&bt_addr; #endif if (bind(cn->serverFileDescriptor, (struct sockaddr *) socketaddr, sz) < 0) { logger(L_ERR, "on binding"); printf("ERROR: on binding %d->%s\n", errno, strerror(errno)); return -1; } return 1; } int btsppOpen(ConnectInfo* connInfo) { DEBUG2("[DS]: btsppOpen %d", connInfo->mode); if (connInfo->mode != SERVER_BT) { DEBUG2("[DS]: btsppOpen wrong mode"); } if (btsppOpenInternal(connInfo) < 0) { return EXIT_NOK; } connInfo->state = PEER_WAIT_LISTEN; // make work with bluez 5.x btsppListen(connInfo); return EXIT_OK; } void btsppClose(ConnectInfo* connInfo, int final) { if (final) { logger(L_INF, "btsppClose"); } _BtsppConnection* cn = (_BtsppConnection*) connInfo->connectionData; if (!cn) return; if (cn->fileDescriptor >= 0) { if (final) { logger(L_INF, "btsppClose close socket"); } close(cn->fileDescriptor); cn->fileDescriptor = -1; } if (cn->serverFileDescriptor >= 0) { if (final) { logger(L_INF, "closeSocketPort close server socket"); } close(cn->serverFileDescriptor); cn->serverFileDescriptor = -1; } if (final) { sdpDeregister(cn); } free(cn); connInfo->connectionData = NULL; connInfo->state = PEER_DISCONNECTED; } void btsppReset(ConnectInfo* conn) { _BtsppConnection* cn = (_BtsppConnection*) conn->connectionData; if (cn) { if (cn->fileDescriptor >= 0) { close(cn->fileDescriptor); cn->fileDescriptor = -1; } conn->state = PEER_WAIT_ACCEPT; } else { conn->state = PEER_DISCONNECTED; // should not happens } } // // Setup peer // int btsppListen(ConnectInfo* conn) { logger(L_INF, "[DS]: btsppListen"); _BtsppConnection* cn = (_BtsppConnection*) conn->connectionData; if (!cn) { return -1; } INFO2("[DS]: btsppListen: fd %d", cn->serverFileDescriptor); int ret = listen(cn->serverFileDescriptor,0); if (ret >= 0) { conn->state = PEER_WAIT_ACCEPT; } INFO2("[DS]: btsppListen ret=%d",ret); return (ret < 0 ? -1 : 1); } // // Wait for incoming connection // int btsppAccept(ConnectInfo* connInfo) { logger(L_INF, "[DS]: btsppAccept"); _BtsppConnection* cn = (_BtsppConnection*) connInfo->connectionData; if (!cn) return -1; logger(L_INF, "[DS]: BTSPP server mode: Waiting connection"); int cnt; socklen_t sz; struct sockaddr* socketaddr = NULL; #ifdef USE_BLUEZ struct sockaddr_rc bt_addr; bdaddr_t ba; #endif #ifdef USE_BT_FBSD struct sockaddr_rfcomm bt_addr; #endif logger(L_INF, "btsppAccept"); cnt = 0; #if defined(USE_BLUEZ) || defined(USE_BT_FBSD) socketaddr=(struct sockaddr *)&bt_addr; sz = sizeof(bt_addr); #endif while (stillRun) { INFO2("btsppAccept: fd %d", cn->serverFileDescriptor); cn->fileDescriptor = accept(cn->serverFileDescriptor, (struct sockaddr *) socketaddr, &sz); if (cn->fileDescriptor < 0 && errno == EAGAIN) { if (cnt >= 60) { // Print to log every minute logger(L_INF, "btsppAccept: waiting for connection"); //printf("."); cnt = 0; } fflush(stdout); sleep(1); cnt++; continue; } if (cn->fileDescriptor < 0) { logger(L_ERR, "btsppAccept: on accept"); return -1; } INFO2("[DS]: btsppAccept fd=%d",cn->fileDescriptor); char* btAddress = NULL; #ifdef USE_BLUEZ baswap(&ba, &bt_addr.rc_bdaddr); btAddress = batostr(&ba); #endif #ifdef USE_BT_FBSD btAddress = strdup(bt_ntoa(&bt_addr.rfcomm_bdaddr, NULL)); #endif if (!isAllowed(btAddress)) { INFO2("btsppAccept: host %s is not in the list of accepted host, close connection", (btAddress ? btAddress : "NULL")); write(cn->fileDescriptor,CMD_STR_DISCONNECT,strlen(CMD_STR_DISCONNECT)); close(cn->fileDescriptor); cn->fileDescriptor = -1; connInfo->state = PEER_DISCONNECTED; free(btAddress); return -1; } if (getUsePassword() && !getBemused()) { logger(L_DBG,"[DS]: btsppAccept: Do password verification"); int ret = EXIT_OK; int i=0; for ( ; i<3; i++) { ret = verifyPassword(cn->fileDescriptor); if (ret == EXIT_OK) { // got it break; } } if (ret != EXIT_OK) { if (ret == EXIT_NOK) { write(cn->fileDescriptor,CMD_STR_DISCONNECT,strlen(CMD_STR_DISCONNECT)); } close(cn->fileDescriptor); cn->fileDescriptor = -1; connInfo->state = PEER_DISCONNECTED; free(btAddress); return -1; } logger(L_DBG,"[DS]: socketAccept: Password verification OK"); } logger(L_INF, "btsppAccept: accepted"); connInfo->state = PEER_CONNECTED; freeBtAddress(); sprintf(tmp, "btsppAccept: remote BT address is %s", (btAddress ? btAddress : "NULL")); setBtAddress(btAddress); logger(L_INF, tmp); // force to detect cover size. need to do that before (Connect) or syncPeer() handling getClientSize(connInfo->id, cn->fileDescriptor); break; } return 1; } int btsppWrite(ConnectInfo* connInfo, dMessage* msg) { _BtsppConnection* cn = (_BtsppConnection*) connInfo->connectionData; if (!cn) { logger(L_DBG,"[DS]: btsppWrite() no connection data"); return EXIT_NOK; } const char* command = msg->value; int count = msg->size; //logger(L_DBG, "btsppWrite"); if (!command || count <= 0) { return EXIT_OK; } if (strcmp("End();",command) == 0) { // used only for WEB/CMXML return EXIT_OK; } // send command if (cn->fileDescriptor >= 0 && count > 0) { memset(tmp, 0, MAXMAXLEN); strcat(tmp, "btsppWrite "); int logSz = (count > 256 ? 255 : count); // it is possible to get binary data here memcpy(tmp, command, logSz); // Do not dump long commands tmp[logSz] = '\0'; logger(L_DBG, tmp); sprintf(tmp, "btsppWrite %d bytes", count); logger(L_INF, tmp); int n = write(cn->fileDescriptor,command,count); if (n < 0) { logger(L_ERR, "error writing to BTSPP socket"); return EXIT_NOK; } return EXIT_OK; } else { logger(L_ERR, "error writing to socket: already closed"); } return EXIT_NOK; } anyremote-6.7.1/src/pr_web.h0000644000232200023220000000341412664332726016331 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PR_WEB_H #define _PR_WEB_H #include "dispatcher.h" #include "peer.h" enum arRequestType { RQ_UNKNOWN=0, RQ_GET, RQ_POST }; typedef struct { int button; string_t* string; } wMessage; typedef struct _WebConnection_ { int serverFileDescriptor; int refreshPage; // refrech time in seconds, -1 meand no refresh int secure; long cookie; char* confDir; string_t* serverIP; SingleList *clientSockets; } _WebConnection; int webFD (ConnectInfo* connInfo); int openWeb (ConnectInfo* connInfo); void webClose (ConnectInfo* connInfo, int final); void webReset (ConnectInfo* conn); int listenWeb (ConnectInfo* connInfo); int acceptWeb (ConnectInfo* connInfo); int checkWebPort(); int writeWebConn(const dMessage* dm, int mode); int writeWeb (ConnectInfo* connInfo, const dMessage* dm); //int haveClients (_WebConnection* cn); void freeWMessage(void *buf); #endif anyremote-6.7.1/src/list.c0000644000232200023220000001004012664332726016012 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include "list.h" // // Single/double linked lists // #ifndef USE_GLIB SingleList* listSingleNew() { SingleList* l = (SingleList*) malloc(sizeof(SingleList)); l->next = NULL; l->data = NULL; return l; } unsigned int listSingleLength(SingleList* list) { unsigned int cnt = 0; SingleList* ptr = list; while (ptr) { ptr = ptr->next; cnt++; } return cnt; } SingleList* listSingleNext(SingleList* list) { return (list ? list->next : NULL); } SingleList* listSingleNth(SingleList* list, unsigned int n) { unsigned int cnt = 0; SingleList* ptr = list; while (ptr && cnt < n) { ptr = ptr->next; cnt++; } return ptr; } SingleList* listSingleRemove(SingleList* list, void* data) { SingleList *tmp, *prev = NULL; tmp = list; while (tmp) { if (tmp->data == data) { if (prev) { prev->next = tmp->next; } else { list = tmp->next; } listSingleFreeNode(tmp); break; } prev = tmp; tmp = prev->next; } return list; } void listSingleFreeNode(SingleList* list) { if (list) { // list->data is not property of the list free(list); } } void listSingleFree(SingleList* list) { while (list) { SingleList* ptr = list->next; listSingleFreeNode(list); list = ptr; } } SingleList* listSingleAppend(SingleList* list, void* data) { SingleList* l = listSingleNew(); l->next = NULL; l->data = data; if (!list) { return l; } SingleList* ptr = list; while (ptr) { if (!ptr->next) { ptr->next = l; break; } ptr = ptr->next; } return list; } #endif void listSingleFullFree(SingleList *list, DestroyCallback free_func) { SingleList *item = list; while (item) { if (item->data) { free_func(item->data); } item = listSingleNext(item); } listSingleFree(list); } DoubleList* listDoubleNew() { DoubleList* l = (DoubleList*) malloc(sizeof(DoubleList)); l->next = NULL; l->prev = NULL; l->data = NULL; return l; } void listDoubleFreeNode(DoubleList* list) { if (list) { // list->data is not property of the list free(list); } } void listDoubleFree(DoubleList* list) { while (list) { DoubleList* ptr = list->next; listDoubleFreeNode(list); list = ptr; } } DoubleList* listDoublePrepend(DoubleList* list, void* data) { DoubleList* l = listDoubleNew(); l->next = list; l->data = data; if (list) { l->prev = list->prev; if (list->prev) { list->prev->next = l; } list->prev = l; } else { l->prev = NULL; } return l; } DoubleList* listDoubleNext(DoubleList* list) { return (list ? list->next : NULL); } void listDoubleFullFree(DoubleList *list, DestroyCallback free_func) { DoubleList *item = list; while (item) { if (item->data) { free_func(item->data); } item = listDoubleNext(item); } listDoubleFree(list); } anyremote-6.7.1/src/hash.h0000644000232200023220000000327212664332726016000 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // Hash related wrappers // #ifndef _HASH_H_ #define _HASH_H_ 1 #include #ifdef USE_GLIB #include typedef GHFunc HashForeachFunc; typedef GHashTable HashTable; # else #define NR_BUCKETS 256 struct StrHashNode { char *key; void *value; struct StrHashNode *next; }; struct StrHashTable { struct StrHashNode* buckets[NR_BUCKETS]; DestroyCallback free_value; }; typedef void (*HashForeachFunc) (void* key, void* value, void* data); typedef struct StrHashTable HashTable; #endif HashTable* hashNew(DestroyCallback func); void hashReplace(HashTable* hash, const char* key, void *value); void* hashFind (HashTable* hash, const char* key); int hashRemove (HashTable* hash, const char* key); void hashDestroy(HashTable* hash); void hashForeach(HashTable* hash, HashForeachFunc func, void *data); #endif anyremote-6.7.1/src/list.h0000644000232200023220000000456712664332726016040 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // Single/Double linked lists // #ifndef _LIST_H_ #define _LIST_H_ 1 #include #ifdef USE_GLIB typedef GSList SingleList; #define listSingleAppend g_slist_append #define listSingleLength g_slist_length #define listSingleNext g_slist_next #define listSingleNth g_slist_nth #define listSingleRemove g_slist_remove #define listSingleFree g_slist_free # else typedef struct _SingleList SingleList; struct _SingleList { void *data; SingleList *next; }; //SingleList* listSingleNew (); void listSingleFree (SingleList* list); void listSingleFreeNode(SingleList* list); // do not free data pointer SingleList* listSingleAppend (SingleList* list, void* data); unsigned int listSingleLength (SingleList* list); SingleList* listSingleNext (SingleList* list); SingleList* listSingleNth (SingleList* list, unsigned int n); SingleList* listSingleRemove (SingleList* list, void* data); // do not free data pointer #endif void listSingleFullFree(SingleList *list, DestroyCallback free_func); typedef struct _DoubleList DoubleList; struct _DoubleList { void *data; DoubleList *next; DoubleList *prev; }; //DoubleList* listDoubleNew (); void listDoubleFree (DoubleList* list); void listDoubleFreeNode(DoubleList* list); // do not free data pointer DoubleList* listDoublePrepend (DoubleList* list, void* data); DoubleList* listDoubleNext (DoubleList* list); void listDoubleFullFree(DoubleList *list, DestroyCallback free_func); #endif anyremote-6.7.1/src/alarm.h0000644000232200023220000000250612664332726016150 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // Alarms handling // #ifndef _ALARM_H_ #define _ALARM_H_ 1 #include "list.h" enum AlarmOperation { ALARM_CLEAN = 0, ALARM_CHECK }; void manageAlarms (int mode); SingleList* getAlarms (void); void forgetAlarms (void); // just set to NULL, no cleanup void addAlarm (char *file, char *macro); void freeAlarms (SingleList* chain); void keepaliveTest(void); void addKeepalive(const char* tmout); void setKeepalive(); boolean_t useKeepalive(); #endif anyremote-6.7.1/src/Makefile.in0000644000232200023220000005450413231303627016742 0ustar debalancedebalance# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # anyRemote - a bluetooth remote for your PC. # # Copyright (C) 2007-2018 Mikhail Fedotov # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = anyremote$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_anyremote_OBJECTS = main.$(OBJEXT) dispatcher.$(OBJEXT) \ executor.$(OBJEXT) cmds.$(OBJEXT) parse.$(OBJEXT) \ utils.$(OBJEXT) conf.$(OBJEXT) xemulate.$(OBJEXT) \ atsend.$(OBJEXT) btio.$(OBJEXT) pr_l2cap.$(OBJEXT) \ pr_web.$(OBJEXT) pr_frontend.$(OBJEXT) ar_dbus.$(OBJEXT) \ queue.$(OBJEXT) mutex.$(OBJEXT) thread.$(OBJEXT) \ list.$(OBJEXT) var.$(OBJEXT) alarm.$(OBJEXT) timer.$(OBJEXT) \ hash.$(OBJEXT) loop.$(OBJEXT) str.$(OBJEXT) pr_stdin.$(OBJEXT) \ peer.$(OBJEXT) pr_btspp.$(OBJEXT) pr_socket.$(OBJEXT) \ pr_rfcomm.$(OBJEXT) pr_serial.$(OBJEXT) sys_util.$(OBJEXT) \ security.$(OBJEXT) mode.$(OBJEXT) state.$(OBJEXT) \ gen_html.$(OBJEXT) gen_xml.$(OBJEXT) gen_ar.$(OBJEXT) \ avahi.$(OBJEXT) anyremote_OBJECTS = $(am_anyremote_OBJECTS) anyremote_DEPENDENCIES = anyremote_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(anyremote_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(anyremote_SOURCES) DIST_SOURCES = $(anyremote_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR_EXTRAFLAGS = @AR_EXTRAFLAGS@ AR_EXTRALIBS = @AR_EXTRALIBS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AVAHI_CFLAGS = @AVAHI_CFLAGS@ AVAHI_LIBS = @AVAHI_LIBS@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_GLIB_CFLAGS = @DBUS_GLIB_CFLAGS@ DBUS_GLIB_LIBS = @DBUS_GLIB_LIBS@ DBUS_LIBS = @DBUS_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ anyremote_SOURCES = main.c dispatcher.c executor.c cmds.c parse.c utils.c conf.c \ xemulate.c atsend.c btio.c pr_l2cap.c pr_web.c pr_frontend.c ar_dbus.c \ queue.c mutex.c thread.c list.c var.c alarm.c timer.c hash.c loop.c str.c \ pr_stdin.c peer.c pr_btspp.c pr_socket.c pr_rfcomm.c pr_serial.c \ sys_util.c security.c mode.c state.c gen_html.c gen_xml.c gen_ar.c avahi.c \ parse.h executor.h cmds.h utils.h xemulate.h conf.h common.h common.h ar_dbus.h \ pr_l2cap.h pr_web.h pr_frontend.h btio.h atsend.h dispatcher.h lib_wrapper.h \ queue.h mutex.h thread.h list.h var.h alarm.h timer.h hash.h loop.h str.h \ pr_stdin.h peer.h pr_btspp.h pr_socket.h pr_rfcomm.h pr_serial.h \ sys_util.h security.h mode.h state.h gen_html.h gen_xml.h gen_ar.h avahi.h anyremote_LDFLAGS = @LDFLAGS@ anyremote_LDADD = @AR_EXTRALIBS@ AM_CFLAGS = @AR_EXTRAFLAGS@ all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) anyremote$(EXEEXT): $(anyremote_OBJECTS) $(anyremote_DEPENDENCIES) $(EXTRA_anyremote_DEPENDENCIES) @rm -f anyremote$(EXEEXT) $(AM_V_CCLD)$(anyremote_LINK) $(anyremote_OBJECTS) $(anyremote_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alarm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ar_dbus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atsend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avahi.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmds.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dispatcher.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/executor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen_ar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen_html.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen_xml.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr_btspp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr_frontend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr_l2cap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr_rfcomm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr_serial.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr_socket.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr_stdin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr_web.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/queue.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/security.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/state.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/str.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sys_util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/var.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xemulate.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-binPROGRAMS install-data install-data-am \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: anyremote-6.7.1/src/sys_util.h0000644000232200023220000000227612664332726016733 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _SYS_UTIL_H_ #define _SYS_UTIL_H_ #include "parse.h" int execCmdNoPipe (int subtype, const char *descr, const char *cmd, cmdParams *params); char* executeCommandPipe(const char* exec, size_t* sz); void peerName (int peer, char* buf, int len); string_t* executeDirListCommand(int type, const char* directory); string_t* getLocalIP(); #endif anyremote-6.7.1/src/sys_util.c0000644000232200023220000004463113126472435016723 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "common.h" #include "utils.h" #include "conf.h" #include "dispatcher.h" #include "sys_util.h" extern char tmp[MAXMAXLEN]; extern int remoteOn; /* Have issues with sockets if use execNoFork() If some app started from anyRemote, then it keeps socket open even if anyRemote is killed somehow. Have "ERROR: on binding 98->Address already in use" errors because of socket CLOSE_WAIT state reported by /usr/sbin/lsof -i : !!! Therefore need to use fork !!! int execNoFork(const char *cmd) { DEBUG2("execNoFork >%s<", cmd); //printf("execute >%s< command\n",cmd); #ifdef __cplusplus int rc = #endif system(cmd); //printf("command executed %d\n", rc); //if (WIFSIGNALED(rc) && (WTERMSIG(rc) == SIGINT || WTERMSIG(rc) == SIGQUIT)) { // printf("GOR ABORT in system?"); //} //if(rc!=-1 && WIFEXITED(rc)) { // rc = WEXITSTATUS(rc); //} //printf("exit from child %d\n", rc); return 0; }*/ static int execInFork(const char *cmd) { if (cmd == NULL) { logger(L_ERR,"[EX]: Nothing to fork!"); return -1; } //DEBUG2("[EX]: execInFork >%s<", cmd); int cpid = fork(); if (cpid < 0) { logger(L_ERR,"[EX]: Can not fork!"); return -1; } if (cpid) { // father int rf = 0; waitpid(cpid,&rf,0); if(rf!=-1 && WIFEXITED(rf)) { rf = WEXITSTATUS(rf); } return rf; } // else - child int rc = 0; //logger("INF", "[EX]: Close port in child"); closePort(0); rc = system(cmd); if (rc != -1 && WIFEXITED(rc)) { rc = WEXITSTATUS(rc); } exit(rc); } int execCmdNoPipe(int subtype, const char *descr, const char *cmd, cmdParams *params) { //logger(L_INF, "[EX]: Command: Exec"); if (cmd == NULL || strlen(cmd) == 0 || remoteOn != 1) { logger(L_DBG, "[EX]: execCmdNoPipe null input or remote if OFF"); return EXIT_OK; } DEBUG2("[EX]: execCmdNoPipe >%s<", cmd); char* p = (char*) calloc(strlen(cmd) + 2,1); if (p == NULL) { return EXIT_NOK; } strcpy(p,cmd); // How to handle & inside file names ? //if (!index(p, '&') ) { int idx = strlen(cmd)-1; while (idx > 0 && isspace(cmd[idx])) { idx--; } if (cmd[idx] != '&') { strcat(p, "&"); } //int ret = execNoFork(p); int ret = execInFork(p); free(p); return (ret == -1 ? EXIT_NOK : EXIT_OK); } #define RSIZE 512 /* #define READ 0 #define WRITE 1 pid_t popen2(const char *command, int *infp, int *outfp) { int p_stdin[2], p_stdout[2]; pid_t pid; if (pipe(p_stdin) != 0 || pipe(p_stdout) != 0) { return -1; } pid = fork(); if (pid < 0) { return pid; } else if (pid == 0) { // child close(p_stdin[WRITE]); dup2(p_stdin[READ], STDIN_FILENO); close(p_stdout[READ]); dup2(p_stdout[WRITE], STDOUT_FILENO); execl("/bin/sh", "sh", "-c", command, NULL); ERROR2("[EX]: failed in popen2"); return -1; } if (infp == NULL) { close(p_stdin[WRITE]); } else { *infp = p_stdin[WRITE]; } if (outfp == NULL) { close(p_stdout[READ]); } else { *outfp = p_stdout[READ]; } DEBUG2("[EX]: popen2 >%d<", pid); return pid; } this version does not send data until script is killed manually char* executeCommandPipe(const char* exec, size_t* sz) { DEBUG2("[ ]: executeCommandPipe >%s<", exec); int outfp; pid_t pid = popen2(exec, NULL, &outfp); fcntl(outfp, F_SETFL, O_NONBLOCK); FILE* fp = fdopen(outfp,"r"); if (fp) { setvbuf(fp, NULL, _IONBF, 0); } char* data = NULL; void* temp[RSIZE]; size_t haveRead = 0; int maxWait = getWaitTime(); time_t start = time(NULL); DEBUG2("[ ]: executeCommandPipe WaitTime %d", maxWait); while (1) { DEBUG2("[ ]: executeCommandPipe -> read"); ssize_t num = read(outfp, temp, RSIZE); DEBUG2("[ ]: executeCommandPipe <- read %d", num); if (num == -1 && errno == EAGAIN) { DEBUG2("[ ]: executeCommandPipe EAGAIN"); usleep(100000); } else if (num > 0) { data = realloc(data, haveRead+num+1); if (!data) { DEBUG2("[ ]: executeCommandPipe error on realloc %zd", haveRead+num); return NULL; } memcpy(data+haveRead, temp, num); haveRead += num; *(data + haveRead) = '\0'; } else { DEBUG2("[ ]: executeCommandPipe EOF"); break; } if (maxWait > 0) { time_t now = time(NULL); double elapsed = difftime(now, start); if (elapsed > maxWait) { WARNING2("[ ]: executeCommandPipe wait time exceeded"); kill(pid, SIGKILL); break; } } } close(outfp); DEBUG2("[ ]: executeCommandPipe got %zd bytes", haveRead); (*sz) = haveRead; return data; }*/ /* this version also gets blocked if command runs forever char* executeCommandPipe(const char* exec, size_t* sz) { DEBUG2("[ ]: executeCommandPipe >%s<", exec); int outfp; pid_t pid = popen2(exec, NULL, &outfp); char* data = NULL; void* temp[RSIZE]; size_t haveRead = 0; while (1) { DEBUG2("[ ]: executeCommandPipe -> read"); ssize_t num = read(outfp, temp, RSIZE); DEBUG2("[ ]: executeCommandPipe <- read %d", num); if (num <= 0) { // EOF or error break; } else if (num > 0) { data = realloc(data, haveRead+num+1); if (!data) { DEBUG2("[ ]: executeCommandPipe error on realloc %zd", haveRead+num); return NULL; } memcpy(data+haveRead, temp, num); haveRead += num; *(data + haveRead) = '\0'; } //DEBUG2("[ ]: executeCommandPipe realloc %zd", haveRead); if (num < RSIZE) { break; } } close(outfp); DEBUG2("[ ]: executeCommandPipe got %zd bytes", haveRead); (*sz) = haveRead; return data; } */ #define RDR 0 #define WTR 1 static char bin_shell[] = "/bin/sh" ; static char shell[] = "sh"; static char shflg[] = "-c"; // // function non-reenterable // (forked child will not close fd's opened by other popen_r's // static int popen_r(const char* cmd, pid_t* pid) { int p[2]; register int myside, yourside; if (pipe(p) < 0) { return -1; } myside = p[RDR]; yourside = p[WTR]; if( ((*pid) = fork()) == 0) { // myside and yourside reverse roles in child (void) close(myside); (void) close(STDOUT_FILENO); (void) fcntl(yourside, F_DUPFD, STDOUT_FILENO); (void) close(yourside); (void) execl(bin_shell, shell, shflg, cmd, (char *)0); _exit(1); } if ((*pid) == -1) { return -1; } (void) close(yourside); return myside; } static int pclose_r(int fd, pid_t pid) { register int r; int status; void (*hstat)(), (*istat)(), (*qstat)(); (void) close(fd); istat = signal(SIGINT, SIG_IGN); qstat = signal(SIGQUIT, SIG_IGN); hstat = signal(SIGHUP, SIG_IGN); // while the child is not done and no error has occured wait in the loop while ((r = wait(&status)) != pid && (r != -1 || errno == EINTR)) { usleep(1000); } if (r == -1) { status = -1; } (void) signal(SIGINT, istat); (void) signal(SIGQUIT, qstat); (void) signal(SIGHUP, hstat); return status; } // seems this version works char* executeCommandPipe(const char* exec, size_t* sz) { DEBUG2("[ ]: executeCommandPipe >%s<", exec); pid_t pid; int fd = popen_r(exec, &pid); if (fd < 0) { logger(L_ERR, "[ ]: Error on popen()"); return NULL; } fcntl(fd, F_SETFL, O_NONBLOCK); char* data = NULL; void* temp[RSIZE]; size_t haveRead = 0; int maxWait = getWaitTime(); time_t start = time(NULL); if (maxWait >= 0) { DEBUG2("[ ]: executeCommandPipe WaitTime %d", maxWait); } while (1) { size_t num = read(fd, temp, RSIZE); if (num == -1 && errno == EAGAIN) { //DEBUG2("[ ]: executeCommandPipe EAGAIN"); usleep(1000); } else if (num > 0) { //DEBUG2("[ ]: executeCommandPipe read %d", num); data = realloc(data, haveRead+num+1); if (!data) { DEBUG2("[ ]: executeCommandPipe error on realloc %zd", haveRead+num); return NULL; } memcpy(data+haveRead, temp, num); haveRead += num; *(data + haveRead) = '\0'; } else { break; } //DEBUG2("[ ]: executeCommandPipe realloc %zd", haveRead); if (maxWait > 0) { time_t now = time(NULL); double elapsed = difftime(now, start); if (elapsed > maxWait) { WARNING2("[ ]: executeCommandPipe wait time exceeded"); kill(pid, SIGTERM); break; } } } pclose_r(fd, pid); DEBUG2("[ ]: executeCommandPipe got %zd bytes", haveRead); (*sz) = haveRead; return data; } /* this version is simple, but gets blocked if command runs forever char* executeCommandPipe(const char* exec, size_t* sz) { DEBUG2("[ ]: executeCommandPipe >%s<", exec); FILE *fp = popen(exec, "r"); if (fp == NULL) { logger(L_ERR, "[EX]: Error on popen()"); return NULL; } char* data = NULL; void* temp[RSIZE]; size_t haveRead = 0; while (1) { size_t num = fread(temp, 1, RSIZE, fp); if (num > 0) { data = realloc(data, haveRead+num+1); if (!data) { DEBUG2("[ ]: executeCommandPipe error on realloc %zd", haveRead+num); return NULL; } memcpy(data+haveRead, temp, num); haveRead += num; *(data + haveRead) = '\0'; } //DEBUG2("[ ]: executeCommandPipe realloc %zd", haveRead); if (num < RSIZE) { break; } } //int status = pclose(fp); //if (status == -1) { // Error reported by pclose() //... //} else { // Use macros described under wait() to inspect `status' in order // to determine success/failure of command executed by popen() //... //} DEBUG2("[ ]: executeCommandPipe got %zd bytes", haveRead); (*sz) = haveRead; return data; }*/ void peerName(int peer, char* buf, int sz) { struct sockaddr_storage addr; socklen_t len = sizeof(addr); if (getpeername(peer, (struct sockaddr*)&addr, &len) == 0) { // deal with both IPv4 and IPv6: if (addr.ss_family == AF_INET) { struct sockaddr_in *s = (struct sockaddr_in *)&addr; inet_ntop(AF_INET, &s->sin_addr, buf, sz); } else { // AF_INET6 struct sockaddr_in6 *s = (struct sockaddr_in6 *)&addr; inet_ntop(AF_INET6, &s->sin6_addr, buf, sz); } } } static const char* dirTmp; static int filterFiles(const struct dirent *dp) { string_t *path = stringNew(dirTmp); stringAppend(path,"/"); stringAppend(path,dp->d_name); struct stat buf; int stat = lstat(path->str, &buf); //printf("%d %s %s\n", stat,dp->d_name,strerror(errno)); return (stat == 0 && !S_ISDIR(buf.st_mode)); } static int filterDirs(const struct dirent *dp) { string_t *path = stringNew(dirTmp); stringAppend(path,"/"); stringAppend(path,dp->d_name); struct stat buf; int stat = lstat(path->str, &buf); //printf("%d %s %s\n", stat,dp->d_name,strerror(errno)); return (stat == 0 && S_ISDIR(buf.st_mode)); } // mimic "ls -F --quoting-style=shell" to little extent string_t* executeDirListCommand(int type, const char* directory) { DEBUG2("[EX]: executeDirListCommand get listing of %s", directory); struct stat buf; int stat = lstat(directory, &buf); if (stat < 0) { DEBUG2("[EX]: executeDirListCommand can not get %s", directory); return NULL; } if (S_ISREG(buf.st_mode) || S_ISLNK(buf.st_mode)) { string_t *file = stringNew(""); if (type == ID_SET_ILIST) { stringAppend(file,"file:"); } stringAppend(file,directory); return file; } else if (S_ISDIR(buf.st_mode)) { DEBUG2("[EX]: executeDirListCommand: directory"); dirTmp = directory; // small trick struct dirent **namelist = NULL; string_t *folders = stringNew(""); int comma = 0; int n = scandir(directory, &namelist, filterDirs, alphasort); if (n >= 0) { int i = 0; for( ; id_name); if (strcmp(namelist[i]->d_name,".") != 0) { if (comma == 1) { stringAppend(folders,","); } else { comma = 1; } if (type == ID_SET_ILIST) { stringAppend(folders,"folder:"); } stringAppend(folders,namelist[i]->d_name); stringAppend(folders,"/"); } free(namelist[i]); } free(namelist); } //DEBUG2("[EX]: executeDirListCommand: %s", folders->str); n = scandir(directory, &namelist, filterFiles, alphasort); if (n >= 0) { int i = 0; for( ; id_name); if (strcmp(namelist[i]->d_name,".") != 0) { if (comma == 1) { stringAppend(folders,","); } else { comma = 1; } if (type == ID_SET_ILIST) { stringAppend(folders,"file:"); } stringAppend(folders,namelist[i]->d_name); } free(namelist[i]); } free(namelist); } //DEBUG2("[EX]: executeDirListCommand: %s", folders->str); return folders; /* gets items unsorted DIR *dirp = opendir(directory); if (dirp) { struct dirent *dp; int fComma = 0; int dComma = 0; string_t *files = stringNew(""); string_t *folders = stringNew(""); string_t *file = stringNew(""); while ((dp=readdir(dirp))) { if (strcmp(dp->d_name,".") == 0) continue; //DEBUG2("[EX]: executeDirListCommand process %s", dp->d_name); stringTruncate(file,0); stringAppend(file,directory); stringAppend(file,"/"); stringAppend(file,dp->d_name); int stat = lstat(file->str, &buf); if (stat < 0) continue; if (S_ISDIR(buf.st_mode)) { if (dComma == 1) { stringAppend(folders,","); } else { dComma = 1; } if (type == ID_SET_ILIST) { stringAppend(folders,"folder:"); } stringAppend(folders,dp->d_name); stringAppend(folders,"/"); } else //if (S_ISREG(buf.st_mode) || S_ISLNK(buf.st_mode)) { if (fComma == 1) { stringAppend(files,","); } else { fComma = 1; } if (type == ID_SET_ILIST) { stringAppend(files,"file:"); } stringAppend(files,dp->d_name); } } stringFree(file, BOOL_YES); closedir(dirp); if (folders->len > 0) { stringAppend(folders,","); } stringAppend(folders,files->str); // dirs, then files stringFree(files, BOOL_YES); //DEBUG2("[EX]: executeDirListCommand DONE"); return folders; }*/ } return NULL; } ////////////////////////////////////////////////////////////////////////////////// // // IP address detection // ////////////////////////////////////////////////////////////////////////////////// static int get_iface_list(struct ifconf *ifconf) { int sock, rval; sock = socket(AF_INET,SOCK_STREAM,0); if(sock < 0) { perror("socket"); return (-1); } if((rval = ioctl(sock, SIOCGIFCONF , (char*) ifconf )) < 0 ) { perror("ioctl(SIOGIFCONF)"); } close(sock); return rval; } string_t* getLocalIP() { struct ifreq ifreqs[20]; struct ifconf ifconf; memset(&ifconf,0,sizeof(ifconf)); ifconf.ifc_buf = (char*) (ifreqs); ifconf.ifc_len = sizeof(ifreqs); if(get_iface_list(&ifconf) < 0) { return NULL; } int nifaces = ifconf.ifc_len/sizeof(struct ifreq); DEBUG2("[WS]: getLocalIP found %d interfaces", nifaces); int i; for(i = 0; i < nifaces; i++) { DEBUG2("[WS]: interface #%d is %s", i, ifreqs[i].ifr_name); static char* lo = "lo"; if (strcmp(lo,ifreqs[i].ifr_name) == 0) { continue; // skip loopback } static char* loopback = "127.0.0.1"; if (strcmp(loopback, inet_ntoa(((struct sockaddr_in *)&ifreqs[i].ifr_addr)->sin_addr)) == 0) { continue; // skip loopback } DEBUG2("[WS]: use local IP %s", inet_ntoa(((struct sockaddr_in *)&ifreqs[i].ifr_addr)->sin_addr)); return stringNew(inet_ntoa(((struct sockaddr_in *)&ifreqs[i].ifr_addr)->sin_addr)); } return NULL; } anyremote-6.7.1/src/btio.c0000644000232200023220000001701112664332726016001 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "lib_wrapper.h" #include "btio.h" #include "common.h" #include "parse.h" #include "utils.h" #include "conf.h" extern char tmp[MAXMAXLEN]; extern boolean_t stillRun; static int port_fd = -1; /*int bt_read(int portfd, char* buf, int len) { return read(portfd, buf, len); }*/ static int bt_read_tmo(int fd, char* buf, int len, int timeout) { int ok; fd_set rdfds; struct timeval tv; if (fd < 0) { // connection was somehow closed or lost return EOF; } FD_ZERO(&rdfds); FD_SET(fd, &rdfds); /* block until something to read or timeout occurs. select() is damn cool */ if (timeout < 0) { ok = select(fd + 1, &rdfds, NULL, NULL, NULL); } else { tv.tv_sec = timeout / 1000000; tv.tv_usec = (timeout % 1000000); ok = select(fd + 1, &rdfds, NULL, NULL, &tv); } if (ok > 0) { ok = read(fd, buf, len); if (ok == 0) { logger(L_DBG, "EOF during read()"); return EOF; } ///////////////////////////////////// //if(ok > 0){ // char buf2[1024]; // strncpy(buf2,buf,ok); // sprintf(tmp, "READ: %s", buf2); // logger(L_DBG, tmp); //} ////////////////////////////////////// return ok; } else { return 0; //if (ok < 0) { // return -1; //} else { // errno = ETIMEDOUT; // return 0; //} } } int bt_readchar(int fd, char* c, int timeout) { char buf[1]; *c = 0; int rv = bt_read_tmo(fd, buf, 1, timeout); /*if (rv != 0) { sprintf(tmp, "bt_read_tmo returns: %d", rv); logger(L_DBG, tmp); }*/ if (rv == 1) { *c = buf[0]; return 1; } if (rv == 0) { return EOF - 1; } // else - EOF close(fd); return EOF; } // max should be >= 100 int bt_put_command(int fd, const char* command, char* answer, int max, int timeout, char* expect) { int count=0; int readcount; char tmp2[100]; int timeoutcounter=0; int found=0; if (fd < 0) { return 0; } logger(L_DBG,command); if (expect != NULL) { logger(L_DBG,expect); } // send command if (command && command[0]) { #ifdef __cplusplus ssize_t dummy = #endif write(fd,command,strlen(command)); tcdrain(fd); } if (max == 0) { return 0; } answer[0]=0; do { // try to read some bytes. usleep(100000); //write(1,".",1); timeoutcounter++; // read data readcount=read(fd,tmp2,sizeof(tmp2)-1); if (readcount<0) { readcount=0; } tmp2[readcount]=0; // add read bytes to the output buffer if (readcount) { strcat(answer,tmp2); count+=readcount; // if we have more time to read, check if we got already the expected string if ((timeoutcounter%s<", port); logger(L_INF, tmp); struct sockaddr_un serveraddr; port_fd = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0); if (port_fd < 0) { sprintf(tmp, "can not open UNIX %s", port); logger(L_ERR, tmp); printf("ERROR: can not open UNIX %s\n", port); port_fd = -1; return -1; } memset(&serveraddr, 0, sizeof(serveraddr)); serveraddr.sun_family = AF_UNIX; strncpy(serveraddr.sun_path, port, sizeof serveraddr.sun_path - 1); int ret = connect(port_fd, (struct sockaddr *)&serveraddr, SUN_LEN(&serveraddr)); if (ret < 0) { sprintf(tmp, "can not open UNIX socket %s", port); logger(L_ERR, tmp); printf("ERROR: can not open UNIX socket %s\n", port); port_fd = -1; return -1; } return 0; } int uxsFD(ConnectInfo* connInfo) { return port_fd; } int uxsOpen(ConnectInfo* connInfo) { DEBUG2("[DS]: Unix socket client mode. Use port %s", connInfo->portStr->str); if (unix_open_port(connInfo->portStr->str) < 0) { printf("ERROR: open inputlircd socket\n"); return EXIT_NOK; } connInfo->state = PEER_CONNECTED; return EXIT_OK; } void uxsClose(ConnectInfo* connInfo, int final) { int retval = 0; //printf("INFO: Close port\n"); if (port_fd < 0) { /* already closed */ //printf("INFO: Already closed ?\n"); return; } retval = close(port_fd); port_fd = -1; connInfo->state = PEER_DISCONNECTED; if (retval < 0) { logger(L_ERR,"[DS]: Error on closing AF_UNIX socket\n"); } } void uxsReset(ConnectInfo* connInfo) { uxsClose(connInfo, 0); } /* int unix_read_port(char* buf, int l) { int ret = 0; int bytesReceived = 0; printf("SOCKET: read fd %d\n", portfd); while (bytesReceived < l-1) { int rc = recv(port_fd, & buf[bytesReceived], l - bytesReceived, 0); printf("unix_read_port %d\n",rc); if (rc < 0) { //logger(L_ERR,"recv() failed"); ret = EOF-1; break; } else if (rc == 0) { //logger(L_INF,"Read 0 bytes"); ret = EOF; break; } bytesReceived += rc; ret = bytesReceived; } buf[bytesReceived] = '\0'; return ret; } */ anyremote-6.7.1/src/utils.h0000644000232200023220000000446512664332726016222 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _UTILS_H #define _UTILS_H #include "parse.h" #define LOGFILE "/anyremote.log" enum LogType { L_CFG = 0, L_INF, L_DBG, L_WARN, L_ERR }; #define CFG2(...) sprintf(tmp,__VA_ARGS__);logger(L_CFG, tmp); #define DEBUG2(...) sprintf(tmp,__VA_ARGS__);logger(L_DBG, tmp); #define ERROR2(...) sprintf(tmp,__VA_ARGS__);logger(L_ERR, tmp); #define INFO2(...) sprintf(tmp,__VA_ARGS__);logger(L_INF, tmp); #define WARNING2(...) sprintf(tmp,__VA_ARGS__);logger(L_WARN, tmp); #define M_ABORT 0 #define M_DISCONNECT 1 #define M_DEV_DISCONN 2 #define CNV_TO 1 #define CNV_FROM 0 void printHelp (void); void printTime (void); void printVars (void); void initLog (void); void releaseLog (void); void logger (int head, const char *str); void freeMMessage (void *mm); int flushData (void); void flushOldConf (void); int getUidGid (char *username, uid_t *uid, gid_t *gid); void addInternalVars (void); void sendAbort (void); void sendDisconnect (void); int needConvert (void); void errnoDebug(const char* tag, int err); void stripCommandEnding(char *s); #ifdef USE_ICONV void encodingHook (void); void closeConvertor (void); char * convCharset (char *str, size_t size, int direction); char * convCharsetSimple(char *str, int direction); #endif #endif anyremote-6.7.1/src/pr_l2cap.c0000644000232200023220000002740612664332726016557 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #ifdef USE_L2CAP #ifdef USE_BLUEZ #include #include #include #include #endif #ifdef USE_BT_FBSD #include #include #include #endif #include "common.h" #include "utils.h" #include "peer.h" extern char tmp[MAXMAXLEN]; extern boolean_t stillRun; typedef struct _L2CapConnection_ { int fileDescriptor; int serverFileDescriptor; #ifdef USE_BLUEZ sdp_session_t *session; sdp_record_t *record; #endif #ifdef USE_BT_FBSD void *session = NULL; uint32_t record; #endif } _L2CapConnection; // // Support SDP // #ifdef USE_BLUEZ void sdpRegisterL2cap(ConnectInfo* connInfo) { _L2CapConnection* cn = (_L2CapConnection*) connInfo->connectionData; if (!cn) return; uint8_t svc_uuid_int[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xab, 0xcd }; const char *service_name = "anyRemote/l2cap"; const char *svc_dsc = "Bluetooth remote control"; const char *service_prov = "anyRemote"; uint8_t l2cap_port = connInfo->port; uuid_t root_uuid, l2cap_uuid, svc_uuid, svc_class_uuid; sdp_list_t *l2cap_list = 0, *root_list = 0, *proto_list = 0, *access_proto_list = 0, *svc_class_list = 0, *profile_list = 0; sdp_data_t *channel = 0; sdp_profile_desc_t profile; cn->record = sdp_record_alloc(); // set the general service ID sdp_uuid128_create( &svc_uuid, &svc_uuid_int ); sdp_set_service_id( cn->record, svc_uuid ); // set the service class sdp_uuid16_create(&svc_class_uuid, SERIAL_PORT_SVCLASS_ID); svc_class_list = sdp_list_append(0, &svc_class_uuid); sdp_set_service_classes(cn->record, svc_class_list); // set the Bluetooth profile information sdp_uuid16_create(&profile.uuid, SERIAL_PORT_PROFILE_ID); profile.version = 0x0100; profile_list = sdp_list_append(0, &profile); sdp_set_profile_descs(cn->record, profile_list); // make the service record publicly browsable sdp_uuid16_create(&root_uuid, PUBLIC_BROWSE_GROUP); root_list = sdp_list_append(0, &root_uuid); sdp_set_browse_groups(cn->record, root_list ); // set l2cap information sdp_uuid16_create(&l2cap_uuid, L2CAP_UUID); l2cap_list = sdp_list_append( 0, &l2cap_uuid ); channel = sdp_data_alloc(SDP_UINT8, &l2cap_port); sdp_list_append(l2cap_list, channel ); proto_list = sdp_list_append( 0, l2cap_list ); access_proto_list = sdp_list_append( 0, proto_list ); sdp_set_access_protos(cn->record, access_proto_list ); // set the name, provider, and description sdp_set_info_attr(cn->record, service_name, service_prov, svc_dsc); // connect to the local SDP server, register the service record, // and disconnect cn->session = sdp_connect(BDADDR_ANY, BDADDR_LOCAL, SDP_RETRY_IF_BUSY); if ( (!(cn->session && cn->record)) || sdp_record_register(cn->session, cn->record, 0) == -1) { logger(L_ERR, "can not register SDP service"); } // cleanup sdp_data_free( channel ); sdp_list_free( l2cap_list, 0 ); sdp_list_free( proto_list, 0 ); sdp_list_free( root_list, 0 ); sdp_list_free( access_proto_list, 0 ); sdp_list_free( svc_class_list, 0 ); sdp_list_free( profile_list, 0 ); } #endif #ifdef USE_BT_FBSD void sdpRegisterL2cap(ConnectInfo* connInfo) { errx(1, "Not yet supported"); } #endif void sdpDeregisterL2cap(_L2CapConnection* cn) { #ifdef USE_BLUEZ if (cn->session != NULL) { sdp_record_unregister(cn->session, cn->record); cn->session = NULL; } #endif #ifdef USE_BT_FBSD if (cn->session != NULL) { sdp_unregister_service(cn->session, cn->record); sdp_close(cn->session); cn->session = NULL; } #endif } // // Support L2CAP sockets // int openL2capPort(ConnectInfo* connInfo) { #ifdef USE_BLUEZ struct sockaddr_l2 l2_addr; #endif #ifdef USE_BT_FBSD #endif struct sockaddr* socketaddr = NULL; int sz; if (connInfo->connectionData && ((_L2CapConnection*) connInfo->connectionData)->serverFileDescriptor > 0) { logger(L_ERR, "L2CAP socket was already opened"); return 1; } if (connInfo->connectionData) { free(connInfo->connectionData); } connInfo->connectionData = (_L2CapConnection*) malloc(sizeof(_L2CapConnection)); _L2CapConnection* cn = (_L2CapConnection*) connInfo->connectionData; cn->serverFileDescriptor = -1; cn->fileDescriptor = -1; cn->session = NULL; cn->record = NULL; if ((cn->serverFileDescriptor = socket(PF_BLUETOOTH, SOCK_SEQPACKET|SOCK_CLOEXEC, BTPROTO_L2CAP)) < 0) { logger(L_ERR, "opening BT/L2CAP socket"); printf("ERROR: opening BT/L2CAP socket\n"); return -1; } #ifdef USE_BLUEZ memset((void *) &l2_addr, 0, sizeof(l2_addr)); sz = sizeof(l2_addr); // bind socket to the specified port of the first available local bluetooth adapter l2_addr.l2_family = AF_BLUETOOTH; l2_addr.l2_bdaddr = *BDADDR_ANY; l2_addr.l2_psm = htobs(0x1001); //port); sdpRegisterL2cap(connInfo); sprintf(tmp, "registered L2CAP on port %i", connInfo->port); logger(L_INF, tmp); socketaddr=(struct sockaddr *)&l2_addr; #endif #ifdef USE_BT_FBSD #endif if (bind(cn->serverFileDescriptor, (struct sockaddr *) socketaddr, sz) < 0) { logger(L_ERR, "on binding"); printf("ERROR: on binding %d->%s\n", errno, strerror(errno)); return -1; } return 1; } int l2capOpen(ConnectInfo* connInfo) { DEBUG2("[DS]: L2CAP Server mode. Use port %d", connInfo->port); if (openL2capPort(connInfo) < 0) { return EXIT_NOK; } return EXIT_OK; } int l2capFD(ConnectInfo* connInfo) { _L2CapConnection* cn = (_L2CapConnection*) connInfo->connectionData; return (cn ? cn->fileDescriptor : -1); } void l2capClose(ConnectInfo* connInfo, int final) { logger(L_INF, "l2capClose"); _L2CapConnection* cn = (_L2CapConnection*) connInfo->connectionData; if (!cn) return; if (cn->fileDescriptor >= 0) { close(cn->fileDescriptor); cn->fileDescriptor = -1; } if (cn->serverFileDescriptor > 0) { close(cn->serverFileDescriptor); cn->serverFileDescriptor = -1; } if (final) { sdpDeregisterL2cap(cn); } free(cn); connInfo->connectionData = NULL; connInfo->state = PEER_DISCONNECTED; } void l2capReset(ConnectInfo* conn) { logger(L_INF, "l2capReset"); _L2CapConnection* cn = (_L2CapConnection*) connInfo->connectionData; if (cn) { if (cn->fileDescriptor >= 0) { close(cn->fileDescriptor); cn->fileDescriptor = -1; } connInfo->state = PEER_WAIT_ACCEPT; } else { conn->state = PEER_DISCONNECTED; // should not happens } } int l2capSetup(ConnectInfo* connInfo) { _L2CapConnection* cn = (_L2CapConnection*) connInfo->connectionData; if (!cn) { return -1; } int ret = listen(cn->serverFileDescriptor,0); if (ret >= 0) { conn->state = PEER_WAIT_ACCEPT; } return (ret < 0 ? -1 : 1); } int l2capAccept(ConnectInfo* connInfo) { logger(L_INF, "[DS]: Server mode/L2CAP: Waiting connection"); int cnt; char buf[1024] = { 0 }; #ifdef USE_BLUEZ struct sockaddr_l2 l2rem_addr; socklen_t opt = sizeof(l2rem_addr); #endif #ifdef USE_BT_FBSD #endif cnt = 0; _L2CapConnection* cn = (_L2CapConnection*) connInfo->connectionData; if (!cn) return -1; while (stillRun) { cn->fileDescriptor = accept(cn->serverFileDescriptor, (struct sockaddr *)&l2rem_addr, &opt); if (cn->fileDescriptor == -1 && errno == EAGAIN) { if (cnt >= 60) { // Print to log every minute logger(L_INF, "l2capAccept: waiting for connection"); cnt = 0; } fflush(stdout); sleep(1); cnt++; continue; } if (cn->fileDescriptor < 0) { logger(L_ERR, "on accept"); printf("ERROR: on accept %d\n", errno); return -1; } ba2str(&l2rem_addr.l2_bdaddr, buf); if (!isAllowed(buf)) { INFO2("l2capAccept: host %s is not in the list of accepted host, close connection", buf); write(cn->fileDescriptor,CMD_STR_DISCONNECT,strlen(CMD_STR_DISCONNECT)); close(cn->fileDescriptor); cn->fileDescriptor = -1; connInfo->state = PEER_DISCONNECTED; return -1; } if (getUsePassword()) { logger(L_DBG,"[DS]: l2capAccept: Do password verification"); int ret = EXIT_OK; int i=0; for ( ; i<3; i++) { ret = verifyPassword(cn->fileDescriptor); if (ret == EXIT_OK) { // got it break; } } if (ret != EXIT_OK) { if (ret == EXIT_NOK) { write(cn->fileDescriptor,CMD_STR_DISCONNECT,strlen(CMD_STR_DISCONNECT)); } close(cn->fileDescriptor); cn->fileDescriptor = -1; connInfo->state = PEER_DISCONNECTED; return -1; } logger(L_DBG,"[DS]: l2capAccept: Password verification OK"); } sprintf(tmp, "l2capAccept: accepted from %s", buf); logger(L_INF, tmp); connInfo->state = PEER_CONNECTED; // force to detect cover size. need to do that before (Connect) or syncPeer() handling getCoverSize(connInfo->id, cn->fileDescriptor); break; } return 1; } int l2capWrite(ConnectInfo* connInfo, dMessage* msg) { _L2CapConnection* cn = (_L2CapConnection*) connInfo->connectionData; if (!cn) { logger(L_DBG,"[DS]: l2capWrite() no connection data"); return EXIT_NOK; } const char* command = msg->value; int count = msg->size; logger(L_DBG, "l2capWrite"); if (!command || count <= 0) { return EXIT_OK; } if (strcmp("End();",command) == 0) { // used only for WEB/CMXML return EXIT_OK; } // send command memset(tmp, 0, MAXMAXLEN); strcat(tmp, "l2capWrite "); int logSz = (count > 256 ? 255 : count); // it is possible to get binary data here memcpy(tmp, command, logSz); // Do not dump long commands tmp[logSz] = '\0'; logger(L_DBG, tmp); sprintf(tmp, "l2capWrite %d bytes", count); logger(L_INF, tmp); int n = write(cn->fileDescriptor,command,count); if (n < 0) { logger(L_ERR, "error writing to L2CAP socket"); return EXIT_NOK; } return EXIT_OK; } #endif anyremote-6.7.1/src/lib_wrapper.h0000644000232200023220000000337712664332726017371 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // // // On OpenWRT size of GLIB package is more than 700kb, what is nearly unacceptable // for embedded systems. For such systems use custom made wrappers. // #ifndef _LIBWRAPPER_H_ #define _LIBWRAPPER_H_ 1 #ifdef USE_GLIB #include typedef gpointer pointer_t; typedef gboolean boolean_t; typedef GString string_t; typedef GDestroyNotify DestroyCallback; #define CAST_INT_TO_POINTER GINT_TO_POINTER #define CAST_POINTER_TO_INT GPOINTER_TO_INT #define BOOL_NO FALSE #define BOOL_YES TRUE #else typedef void* pointer_t; typedef int boolean_t; typedef void (*DestroyCallback) (void* data); #define CAST_INT_TO_POINTER(i) ((void*) (long) (i)) #define CAST_POINTER_TO_INT(p) ((int) (long) (p)) #define MAX_VALUE(a, b) (((a) > (b)) ? (a) : (b)) #define MIN_VALUE(a, b) (((a) < (b)) ? (a) : (b)) #define BOOL_NO (0) #define BOOL_YES (!BOOL_NO) #endif #endif anyremote-6.7.1/src/pr_serial.h0000644000232200023220000000274012664332726017034 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PR_SERIAL_H_ #define _PR_SERIAL_H_ #include #include "peer.h" typedef struct _SerialConnection_ { int fileDescriptor; boolean_t useCallId; boolean_t hasActiveCall; int portflags; int oldflags; int rtscts; struct termios oldterm; struct termios portterm; } _SerialConnection; int serialFD (ConnectInfo* conn); int serialSetup (ConnectInfo* conn); int serialOpen (ConnectInfo* conn); void serialClose (ConnectInfo* conn, int final); void serialReset (ConnectInfo* conn); boolean_t serialCheckActiveCall(ConnectInfo* conn); boolean_t serialHasActiveCall (ConnectInfo* conn); #endif anyremote-6.7.1/src/parse.h0000644000232200023220000002030312664332726016161 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PARSE_H_ #define _PARSE_H_ 1 #include "common.h" #include "list.h" #include #include #define CFGFILE "/.anyremote.cfg" /* Constants */ #define MAXARGLEN 256 #define MAXNAMELEN 512 #define MAXCMDLEN 1024 #define KEYS_SECTION_STR "[Keys]" #define PROTOCOL_SECTION_STR "[Protocol]" #define MODE_END_STR "[ModeEnd]" #define MODE_STR "[Mode]" #define SECTION_END_STR "[End]" // Some AT stuff // \r will be added before send #define DEF_AT_CMER_ON_DEFAULT "AT+CMER=3,2,0,0,0" // Default, valid for SE and Siemens S55 phones #define DEF_AT_CMER_OFF_DEFAULT "AT+CMER=0,0,0,0,0" #define DEF_AT_CMER_ON_SE "AT+CMER=3,2,0,0,0" // SE, same as default #define DEF_AT_CMER_OFF_SE "AT+CMER=0,0,0,0,0" #define DEF_AT_CMER_ON_MOTOROLA "AT+CMER=3,1,0,0,0" // Motorola phones #define DEF_AT_CMER_OFF_MOTOROLA "AT+CMER=0,0,0,0,0" #define DEF_AT_CMER_ON_SAGEM "AT+CMER=2,1,0,0,0" // Sagem phones #define DEF_AT_CMER_OFF_SAGEM "AT+CMER=0,0,0,0,0" #define DEF_AT_CMER_ON_SIEMENS "AT+CMER=3,2,0,0,0" // Siemens phones, same as default #define DEF_AT_CMER_OFF_SIEMENS "AT+CMER=0,0,0,0,0" #define DEF_AT_CGMI "AT+CGMI" #define DEF_AT_CLCC "AT+CLCC" // ? will be added later (will try both variants) #define DEF_AT_CSCS "AT+CSCS=" #define DEF_AT_CKPD "AT+CKPD=" #define DEF_AT_CLIP "AT+CLIP=1" #define DEF_AT_CMEC "AT+CMEC=2" // used by Siemens to made AT+CKPD works #define DEF_CKEV "+CKEV:" #define DEF_CLCC "+CLCC:" #define DEF_RING "RING" // It could be RING or +CRING (depends on AT+CRC) #define DEF_MSG "Msg:" // Used by Java Client #define DEF_CLDEBUG "Msg:_DEBUG_(" // Used by Java Client #define DEF_CLPING "Msg:Ping" // Used by Java Client #define CMER_ON 1 #define CMER_OFF 2 #define SAME 99 #define PAUSE_STR "PAUSE" enum EventID { ID_EVT_INIT = 0, ID_EVT_EXIT, ID_EVT_CONNECT, ID_EVT_DISCONNECT, ID_EVT_MAX }; #define EVT_INIT "(Init)" #define EVT_EXIT "(Exit)" #define EVT_CONNECT "(Connect)" #define EVT_DISCONNECT "(Disconnect)" #define EVT_ENTRMODE "(EnterMode)" #define EVT_EXITMODE "(ExitMode)" #define ID_UNKNOWN -1 enum CommandID { ID_EXIT = 0, ID_EXEC, ID_SENDCKPD, ID_SET, ID_EXECSET, ID_TIMER, ID_SEND, ID_EXECSEND, ID_MACRO, ID_LOAD, ID_INCLUDE, ID_GET, ID_MAKE, ID_EMU, ID_DBUS, ID_CMD_MAX }; #define CMD_EXIT "Exit" #define CMD_EXEC "Exec" #define CMD_SENDCKPD "SendCKPD" // AT mode only #define CMD_SET "Set" // Server mode only #define CMD_EXECSET "ExecAndSet" // Server mode only #define CMD_TIMER "Timer" #define CMD_SEND "Send" // Server mode only, used for Bemused-server emulation #define CMD_EXECSEND "ExecAndSend" // Server mode only, used for Bemused-server emulation #define CMD_MACRO "Macro" #define CMD_LOAD "Load" #define CMD_INCLUDE "Include" #define CMD_GET "Get" // Server mode only #define CMD_MAKE "Make" #define CMD_EMU "Emulate" #define CMD_DBUS "Dbus" #define SET_BG "bg" #define SET_CAPTION "caption" #define SET_PARAM "parameter" #define SET_EFIELD "editfield" #define SET_FG "fg" #define SET_FMGR "filemanager" #define SET_FONT "font" #define SET_FSCREEN "fullscreen" #define SET_ICONS "icons" #define SET_HINTS "hints" #define SET_LIST "list" #define SET_ILIST "iconlist" #define SET_MENU "menu" #define SET_REPAINT "repaint" #define SET_SKIN "skin" // obsolete #define SET_LAYOUT "layout" #define SET_STATUS "status" #define SET_TEXT "text" #define SET_TITLE "title" #define SET_VIBRATE "vibrate" #define SET_VOLUME "volume" #define SET_IMAGE "image" #define SET_COVER "cover" #define SET_POPUP "popup" #define SET_DISCONN "disconnect" enum CommandSetID { ID_SET_BG = 0, ID_SET_CAPTION, ID_SET_PARAM, ID_SET_EFIELD, ID_SET_FG, ID_SET_FMGR, ID_SET_FONT, ID_SET_FSCREEN, ID_SET_ICONS, ID_SET_HINTS, ID_SET_LIST, ID_SET_ILIST, ID_SET_MENU, ID_SET_REPAINT, ID_SET_LAYOUT, ID_SET_STATUS, ID_SET_TEXT, ID_SET_TITLE, ID_SET_VIBRATE, ID_SET_VOLUME, ID_SET_IMAGE, ID_SET_COVER, ID_SET_POPUP, ID_SET_DISCONN, ID_SET_MAX }; #define MAKE_DISCONN "disconnect" #define MAKE_MODE "mode" #define MAKE_ALARM "alarm" #define MAKE_FLUSH "flush" #define MAKE_STOP "stop" #define MAKE_REMOTE "remote" #define MAKE_VAR "var" #define MAKE_EXIT "exit" #define MAKE_NONE "none" enum CommandMakeID { ID_MAKE_DISCONN = 0, ID_MAKE_MODE, ID_MAKE_ALARM, ID_MAKE_FLUSH, ID_MAKE_STOP, ID_MAKE_REMOTE, ID_MAKE_VAR, ID_MAKE_EXIT, ID_MAKE_NONE, ID_MAKE_MAX }; #define GET_SCREENSIZE "screen_size" #define GET_COVERSIZE "cover_size" #define GET_ICONSIZE "icon_size" #define GET_ICONPADDING "icon_padding" #define GET_MODEL "model" #define GET_VERSION "version" #define GET_CURSOR "cursor" #define GET_PING "ping" #define GET_PASSWORD "password" #define GET_ISEXISTS "is_exists" enum CommandGetID { ID_GET_SCREENSIZE = 0, ID_GET_COVERSIZE, ID_GET_ICONSIZE, ID_GET_ICONPADDING, ID_GET_MODEL, ID_GET_VERSION, ID_GET_CURSOR, ID_GET_PING, ID_GET_PASSWORD, ID_GET_ISEXISTS, ID_GET_MAX }; enum CommandEventID { ID_EVENT_FRONTEND, ID_EVENT_INIT, ID_EVENT_DISCONNECT, ID_EVENT_EXIT, }; #define TIMER_CANCEL "cancel" #define TIMER_PAUSE "pause" #define TIMER_RESET "reset" #define TIMER_RESTART "restart" #define TIMER_CONTINUE "continue" enum CommandTimerID { ID_TIMER_CREATE = 0, ID_TIMER_CANCEL, ID_TIMER_PAUSE, ID_TIMER_RESET, ID_TIMER_RESTART, ID_TIMER_CONTINUE, ID_TIMER_MAX }; #define UPLOAD_ICON "image,icon" #define UPLOAD_PIX "image,window" #define UPLOAD_COVER "image,cover" #define UPLOAD_COVER_DATA "cover,noname" #define STR_MOTOROLA "Motorola" #define STR_SE "Sony Ericsson" #define STR_SAGEM "SAGEM" #define STR_SIEMENS "SIEMENS" #define MODEL_DEFAULT 0 #define MODEL_SE 1 #define MODEL_MOTOROLA 2 #define MODEL_SAGEM 3 #define MODEL_SIEMENS 4 #define FLAG_EXACT -1 // All non-negative values could be indexes in the list #define FLAG_MULTIKEY -2 #define FLAG_PARAMETR 1 #define FLAG_UNDEF -3 typedef struct Ci { int type; int subtype; char *descr; char *exec; } cmdItem; typedef struct Tk { char *key; SingleList *commands; // list of cmdItem* struct Tk *next; } type_key; typedef struct Cp { char index[6]; char value[MAXARGLEN]; } cmdParams; typedef struct { int model; int frontEnd; uid_t uid; gid_t gid; } CONF; // Exported functions definitions const char* id2Cmd (int cmdId); void init_cfg_dir (char *path); int init_cfg (char *path); void freeRegexps (void); int parse_opts (int argc, char *argv[]); int storeCmds (SingleList** commands, const char *value); int load_cfg (const char *mfile, int isInit); int cmdSet2id (const char *what_to_set); #endif anyremote-6.7.1/src/parse.c0000644000232200023220000016035712664332726016172 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include "parse.h" #include "var.h" #include "utils.h" #include "mode.h" #include "conf.h" #include "security.h" #define REGEX_KEYVAL "^[[:space:]]*(\\[[[:alpha:]]+\\])([^=]*)$|^[[:space:]]*([^=%]*[^[:space:]]{1})[[:space:]]*=[[:space:]]*(.*[^[:space:]]{1})[[:space:]]*$" #define REGEX_CMDBYCMD "[[:space:]]*(Exec|ExecAndSet|Make|Get|Set|Send|ExecAndSend|Timer|Macro|Load|Include|SendCKPD|Emulate|Dbus)[[:space:]]*(\\()|[[:space:]]*(Exit)[[:space:]]*;{0,1}" #define REGEX_SET "[[:space:]]*(bg|caption|editfield|filemanager|fg|font|fullscreen|icons|hints|list|iconlist|menu|parameter|skin|layout|status|text|title|volume|vibrate|image|popup)[[:space:]]*,[[:space:]]*(.*)|[[:space:]]*(repaint|disconnect)[[:space:]]*|[[:space:]]*(cover)[[:space:]]*,[[:space:]]*(by_name|noname)[[:space:]]*,[[:space:]]*(.*)|[[:space:]]*(cover)[[:space:]]*,[[:space:]]*(clear).*" #define REGEX_GET "[[:space:]]*(screen_size|cover_size|icon_size|icon_padding|model|version|cursor|ping|password)[[:space:]]*|[[:space:]]*(is_exists)[[:space:]]*,[[:space:]]*(.*)[[:space:]]*,[[:space:]]*(.*)[[:space:]]*|[[:space:]]*(ping)[[:space:]]*,[[:space:]]*(.*)[[:space:]]*" #define REGEX_TIMER "[[:space:]]*([^[:space:]]+)[[:space:]]*,[[:space:]]*([[:digit:]]*|\\$\\(.*\\))[[:space:]]*,[[:space:]]*([[:digit:]]*)[[:space:]]*$|[[:space:]]*([^[:space:]]+)[[:space:]]*,[[:space:]]*(cancel|pause|reset|restart|continue)" #define REGEX_MAKE "[[:space:]]*(remote|mode|var|alarm)[[:space:]]*,[[:space:]]*(.*)[[:space:]]*|[[:space:]]*(exit|flush|stop|disconnect|none|\\$\\(.*\\))[[:space:]]*" #define REGEX_SET_TL "[[:space:]]*(bg|caption|fg|font|select|icon)[[:space:]]*,(.*)|[[:space:]]*(add|replace|file|dir)[[:space:]]*,[[:space:]]*([^[:space:]]{1}[^,]*[^[:space:]]{1})[[:space:]]*,[[:space:]]*(.*)|[[:space:]]*(close)[[:space:]]*,[[:space:]]*(clear)[[:space:]]*|[[:space:]]*(clear|close|show|\\$\\(.*\\))[[:space:]]*" #define REGEX_SET_MN "[[:space:]]*(add|replace)[[:space:]]*,(.*)|[[:space:]]*(clear)[[:space:]]*" #define REGEX_SET_WM "[[:space:]]*(icon|window|cover)[[:space:]]*,(.*)|[[:space:]]*(remove_all|clear_cache|show|close|cursor|nocursor|dynamic_cursor|\\$\\(.*\\))[[:space:]]*|[[:space:]]*(remove|set_cursor),[[:space:]]*(.*)[[:space:]]*" #define REGEX_SET_FM "[[:space:]]*(add|replace|select)[[:space:]]*,[[:space:]]*(left|right)[[:space:]]*,[[:space:]]*(.*)|[[:space:]]*(close|show)[[:space:]]*" #define REGEX_SET_VR "^[[:space:]]*([^,]*)[[:space:]]*,[[:space:]]*(.*)[[:space:]]*" #define SEPARATOR '/' extern char tmp[MAXMAXLEN]; regex_t *keyVal = NULL; regex_t *cmdByCmd = NULL; CONF conf = { MODEL_DEFAULT, // Model -1, // Front-end port 0, // set uid 0 // set gid }; static void setCfgDir(char *d) { //printf("CFG DIR set TO >%s<\n",(d?d:"NULL")); if (d != NULL) { // search ../Utils directory char* try2 = (char*) malloc(strlen(d) + 10); // + "/../Utils" strcpy(try2,d); strcat(try2,"/../Utils"); struct stat buf; if(stat(try2, &buf) == 0) { try2[strlen(try2)-6] = '\0'; setVarSimple(VAR_CFGDIR, try2); printf("CFG DIR >%s<\n",(try2?try2:"NULL")); free(try2); return; } free(try2); } // last resort: use {prefix}/anyremote/cfg-data directory #ifdef DATADIR char* cfgDir = (char*) malloc(strlen(DATADIR)+20); // + "/anyremote/cfg-data" strcpy(cfgDir,DATADIR); strcat(cfgDir,"/anyremote/cfg-data"); #else cfgDir = (char*) malloc(2); strcpy(cfgDir,"."); #endif setVarSimple(VAR_CFGDIR, cfgDir); //printf("CFG DIR >%s<\n",(cfgDir?cfgDir:"NULL")); free(cfgDir); } /* Parses command line options and set flags. */ int parse_opts(int argc, char *argv[]) { int i; for(i=1; i%s<\n", *str); while (*r != '\0') { if (isspace(*r) && c >= afterCommas) { r++; } else { if (*r == ',') { c++; } *n = *r; r++; n++; } } *n = '\0'; //printf("INFO : deleteSpaces out: >%s<\n", *str); } static void normalizeSequence(char **str) { int isSpace = 0; char *n = (*str); char *r = (*str); //printf("INFO : normalizeSequence in: >%s<\n", *str); while (*r != '\0') { if (isspace(*r)) { // Skip spaces if(!isSpace) { isSpace = 1; } r++; } else if (*r == '(' && r > *str && strstr(*str,"$$")) { // This is parametrized command Command($$), we have to delete all spaces from brace r--; deleteSpaces(&r, 0); return; } else { if(isSpace) { *n = ' '; n++; } // Copy all symbols *n = *r; r++; n++; isSpace = 0; } } *n = '\0'; //printf("INFO : normalizeSequence out: >%s<\n", *str); } static regmatch_t* allocRegmatch(int no_sub) { regmatch_t* result; if ((result = (regmatch_t *) malloc(sizeof(regmatch_t) * no_sub))==0) { printf("allocRegmatch(): No more memory"); exit(1); } return result; } static int parseKeyValue(char *in, char ** tag, char ** value) { //printf("INFO: parseKeyValue() %s (%d)\n", in, (int)keyVal->re_nsub+1); size_t no_sub = keyVal->re_nsub+1; regmatch_t* result = allocRegmatch(no_sub); if (strlen(in) > 0 && in[strlen(in) - 1] == '\n') { in[strlen(in) - 1] = '\0'; } *value = NULL; *tag = NULL; if (regexec(keyVal, in, no_sub, result, 0)==0) { int use1 = 1; int use2 = 2; if (result[1].rm_so == -1) { if (result[3].rm_so == -1) { printf("parseKeyValue(): Incorrectly formed command (1) %s\n", in); use1 = -1; } use1 = 3; } if (result[2].rm_so == -1) { if (result[4].rm_so == -1) { printf("parseKeyValue(): Incorrectly formed command (2) %s\n", in); use2 = -1; } use2 = 4; } if (use1 > 0) { *tag = in + result[use1].rm_so; *(in + result[use1].rm_eo) = '\0'; } if (use2 > 0) { if (result[use2].rm_so == -1 || result[use2].rm_eo == -1) { *value = NULL; } else { *value = in + result[use2].rm_so; *(in + result[use2].rm_eo) = '\0'; } } /*if(*tag != NULL) { printf("INFO : Got tag : >%s<\n", *tag); } else { printf("INFO : Got tag : >NULL<\n"); } if(*value != NULL) { printf("INFO : Got value : >%s<\n", *value); }else { printf("INFO : Got value : >NULL<\n"); //} else { // printf("INFO : Not matched\n"); }*/ } free(result); return EXIT_OK; } static struct { const char* name; int id; } ids[] = { { CMD_MACRO, ID_MACRO }, { CMD_MAKE, ID_MAKE }, { CMD_EXEC, ID_EXEC }, { CMD_SET, ID_SET }, { CMD_TIMER, ID_TIMER }, { CMD_EXECSET, ID_EXECSET }, { CMD_GET, ID_GET }, { CMD_EXIT, ID_EXIT }, { CMD_EMU, ID_EMU }, { CMD_DBUS, ID_DBUS }, { CMD_INCLUDE, ID_INCLUDE }, { CMD_LOAD, ID_LOAD }, { CMD_SENDCKPD, ID_SENDCKPD }, { CMD_EXECSEND, ID_EXECSEND }, { CMD_SEND, ID_SEND }, { NULL, ID_UNKNOWN } }; const char* id2Cmd (int cmdId) { size_t idx; for (idx = 0; ids[idx].name; ++idx) { if (ids[idx].id == cmdId) { break; } } return (ids[idx].name ? ids[idx].name : "Unknown"); } static int cmd2id(char *name) { if (name) { size_t idx; for (idx = 0; ids[idx].name; ++idx) { if (strlen(name) == strlen(ids[idx].name) && strcmp(name, ids[idx].name) == 0) { return ids[idx].id; } } } return ID_UNKNOWN; } int cmdSet2id(const char *name) { if (name == NULL) { return ID_SET_MAX; } static struct { const char* name; int id; } sids[] = { { SET_BG, ID_SET_BG }, { SET_CAPTION, ID_SET_CAPTION}, { SET_EFIELD, ID_SET_EFIELD }, { SET_FG, ID_SET_FG }, { SET_FMGR, ID_SET_FMGR }, { SET_FONT, ID_SET_FONT }, { SET_FSCREEN, ID_SET_FSCREEN}, { SET_ICONS, ID_SET_ICONS }, { SET_HINTS, ID_SET_HINTS }, { SET_LIST, ID_SET_LIST }, { SET_ILIST, ID_SET_ILIST }, { SET_MENU, ID_SET_MENU }, { SET_PARAM, ID_SET_PARAM }, { SET_REPAINT, ID_SET_REPAINT}, { SET_LAYOUT, ID_SET_LAYOUT }, { SET_SKIN, ID_SET_LAYOUT }, // obsolete { SET_STATUS, ID_SET_STATUS }, { SET_TEXT, ID_SET_TEXT }, { SET_TITLE, ID_SET_TITLE }, { SET_VIBRATE, ID_SET_VIBRATE}, { SET_VOLUME, ID_SET_VOLUME }, { SET_IMAGE, ID_SET_IMAGE }, { SET_COVER, ID_SET_COVER }, { SET_POPUP, ID_SET_POPUP }, { SET_DISCONN, ID_SET_DISCONN}, { NULL, ID_SET_MAX } }; size_t idx; for (idx = 0; sids[idx].name; ++idx) { if (strncmp(name, sids[idx].name, strlen(sids[idx].name)) == 0) { return sids[idx].id; } } return ID_SET_MAX; } int cmdGet2id(const char *name) { if (name == NULL) { return ID_GET_MAX; } static struct { const char* name; int id; } gids[] = { { GET_SCREENSIZE, ID_GET_SCREENSIZE }, { GET_COVERSIZE, ID_GET_COVERSIZE }, { GET_ICONSIZE, ID_GET_ICONSIZE }, { GET_ICONPADDING,ID_GET_ICONPADDING}, { GET_MODEL, ID_GET_MODEL }, { GET_VERSION, ID_GET_VERSION }, { GET_CURSOR, ID_GET_CURSOR }, { GET_PING, ID_GET_PING }, { GET_PASSWORD, ID_GET_PASSWORD }, { GET_ISEXISTS, ID_GET_ISEXISTS }, { NULL, ID_GET_MAX } }; size_t idx; for (idx = 0; gids[idx].name; ++idx) { if (strncmp(name, gids[idx].name, strlen(gids[idx].name)) == 0) { return gids[idx].id; } } return ID_GET_MAX; } static int cmdTimer2id(const char *name) { if (name == NULL) { return ID_TIMER_MAX; } static struct { const char* name; int id; } tids[] = { { TIMER_CANCEL, ID_TIMER_CANCEL }, { TIMER_PAUSE, ID_TIMER_PAUSE }, { TIMER_RESET, ID_TIMER_RESET }, { TIMER_RESTART, ID_TIMER_RESTART }, { TIMER_CONTINUE, ID_TIMER_CONTINUE}, { NULL, ID_TIMER_MAX } }; size_t idx; for (idx = 0; tids[idx].name; ++idx) { if (strncmp(name, tids[idx].name, strlen(tids[idx].name)) == 0) { return tids[idx].id; } } // else return ID_TIMER_CREATE; } static int cmdMake2id(const char *name, int sz) { if (name == NULL) { return ID_MAKE_MAX; } static struct { const char* name; int id; } mids[] = { { MAKE_DISCONN, ID_MAKE_DISCONN}, { MAKE_MODE, ID_MAKE_MODE }, { MAKE_ALARM, ID_MAKE_ALARM }, { MAKE_FLUSH, ID_MAKE_FLUSH }, { MAKE_STOP, ID_MAKE_STOP }, { MAKE_REMOTE, ID_MAKE_REMOTE }, { MAKE_VAR, ID_MAKE_VAR }, { MAKE_EXIT, ID_MAKE_EXIT }, { MAKE_NONE, ID_MAKE_NONE }, { NULL, ID_MAKE_MAX } }; size_t idx; for (idx = 0; mids[idx].name; ++idx) { if (strlen(mids[idx].name) == sz && strncmp(name, mids[idx].name, sz) == 0) { return mids[idx].id; } } return ID_MAKE_MAX; } static int storeGetCmd(cmdItem* ci, char *cmd) { int parseFail = 0; regex_t* regex = (regex_t *) malloc(sizeof(regex_t)); memset(regex, 0, sizeof(regex_t)); regexpPrepare(regex, REGEX_GET); size_t no_sub = regex->re_nsub+1; regmatch_t* result = allocRegmatch(no_sub); if (regexec(regex, cmd, no_sub, result, 0) == 0) { // screen_size, cover_size, icon_size, icon_padding, model, keepalive //printf("storeGetCmd(): %s %d %d %d\n", cmd, result[1].rm_so, result[2].rm_so, result[5].rm_so); if (result[1].rm_so >= 0) { int l = result[1].rm_eo - result[1].rm_so; char* subCmd = (char*) malloc(l+1); strncpy(subCmd,cmd+result[1].rm_so,l); subCmd[l] = '\0'; ci->subtype = cmdGet2id(subCmd); free(subCmd); ci->descr = (char*) calloc(1, l + 1); strncpy(ci->descr, cmd + result[1].rm_so, l); } else if (result[2].rm_so >= 0) { // is_exists int l2 = result[2].rm_eo - result[2].rm_so; int l3 = result[3].rm_eo - result[3].rm_so; int l4 = result[4].rm_eo - result[4].rm_so; char* subCmd = (char*) malloc(l2+1); strncpy(subCmd,cmd+result[2].rm_so,l2); subCmd[l2] = '\0'; ci->subtype = cmdGet2id(subCmd); free(subCmd); ci->descr = (char*) calloc(1, l2 + l3 + l4 + 3); strncpy(ci->descr,cmd + result[2].rm_so, l2); strcat (ci->descr,","); strncat(ci->descr,cmd + result[3].rm_so, l3); strcat (ci->descr,","); strncat(ci->descr,cmd + result[4].rm_so, l4); } else if (result[5].rm_so >= 0) { // ping,timeout int l2 = result[5].rm_eo - result[5].rm_so; int l3 = result[6].rm_eo - result[6].rm_so; char* subCmd = (char*) malloc(l2+1); strncpy(subCmd,cmd+result[5].rm_so,l2); subCmd[l2] = '\0'; ci->subtype = cmdGet2id(subCmd); free(subCmd); ci->descr = (char*) calloc(1, l2 + l3 + 2); strncpy(ci->descr,cmd + result[5].rm_so, l2); strcat (ci->descr,","); strncat(ci->descr,cmd + result[6].rm_so, l3); } } else { printf("storeGetCmd(): parse error\n"); parseFail = 1; } if (parseFail) { printf("storeGetCmd(): command Get( %s ) is formed incorrectly\n", cmd); } free(result); result = NULL; regfree(regex); free(regex); regex = NULL; return (parseFail == 0 ? EXIT_OK : EXIT_NOK); } static int storeMakeCmd(cmdItem* ci, char *cmd) { int parseFail = 0; //printf ("storeMakeCmd: got >%s<\n",cmd); regex_t* regex = (regex_t *) malloc(sizeof(regex_t)); memset(regex, 0, sizeof(regex_t)); regexpPrepare(regex, REGEX_MAKE); size_t no_sub = regex->re_nsub+1; regmatch_t* result = allocRegmatch(no_sub); if (regexec(regex, cmd, no_sub, result, 0) == 0) { if (result[1].rm_so >= 0 && result[2].rm_so > 0) { int l = result[1].rm_eo - result[1].rm_so; int stype = cmdMake2id(cmd+result[1].rm_so,l); ci->subtype = stype; if (stype == ID_MAKE_VAR) { // var regex_t* regex2 = (regex_t *) malloc(sizeof(regex_t)); memset(regex2, 0, sizeof(regex_t)); regexpPrepare(regex2, REGEX_SET_VR); size_t no_sub2 = regex2->re_nsub+1; regmatch_t* result2 = allocRegmatch(no_sub2); char* start2 = cmd + result[2].rm_so; int l2 = 0; if (regexec(regex2, cmd + result[2].rm_so, no_sub2, result2, 0) == 0) { if (result2[1].rm_so >= 0 && result2[2].rm_so >= 0) { l2 = result2[1].rm_eo - result2[1].rm_so; int le = result2[2].rm_eo - result2[2].rm_so; ci->descr = (char*) calloc(1, l + l2 + 2); strncpy(ci->descr,cmd + result[1].rm_so, l); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[1].rm_so, l2); ci->exec = (char*) calloc(1, le + 1); strncpy(ci->exec,start2 + result2[2].rm_so, le); } else { printf("storeMakeCmd(): parse error (M V1)\n"); parseFail = 1; } } else { printf("storeMakeCmd(): parse error (M V2)\n"); parseFail = 1; } regfree(regex2); free(regex2); regex2 = NULL; free(result2); result2 = NULL; } else if (stype == ID_MAKE_MODE || // mode stype == ID_MAKE_ALARM) { // alarm ci->descr = (char*) calloc(1, result[1].rm_eo - result[1].rm_so + 1); ci->exec = (char*) calloc(1, result[2].rm_eo - result[2].rm_so + 1); strncpy(ci->descr,cmd + result[1].rm_so, result[1].rm_eo - result[1].rm_so); strncpy(ci->exec, cmd + result[2].rm_so, result[2].rm_eo - result[2].rm_so); //printf ("storeMakeCmd: (2) %s %s \n",ci->descr,ci->exec); } else if (stype == ID_MAKE_REMOTE) { // remote if (strncmp(cmd + result[2].rm_so, "on", 2) == 0 || strncmp(cmd + result[2].rm_so, "off", 3) == 0 || *(cmd + result[2].rm_so) == '$') { // Make(remote,$(variable)) ci->descr = (char*) calloc(1, result[1].rm_eo - result[1].rm_so + 1); ci->exec = (char*) calloc(1, result[2].rm_eo - result[2].rm_so + 1); strncpy(ci->descr,cmd + result[1].rm_so, result[1].rm_eo - result[1].rm_so); strncpy(ci->exec, cmd + result[2].rm_so, result[2].rm_eo - result[2].rm_so); //printf ("storeMakeCmd: (3) %s %s \n",ci->descr,ci->exec); } else { printf("storeMakeCmd(): parse error: invalid parameter in Make(remote,...)\n"); parseFail = 1; } } else { parseFail = 1; printf("storeMakeCmd(): parse error: unknown subcommand (1)\n"); } } else if (result[3].rm_so >= 0) { // disconnect, flush int l = result[3].rm_eo - result[3].rm_so; int stype = cmdMake2id(cmd+result[3].rm_so,l); ci->subtype = stype; ci->descr = (char*) calloc(1, l + 1); strncpy(ci->descr,cmd + result[3].rm_so, l); } else { parseFail = 1; printf("storeMakeCmd(): parse error: unknown subcommand (2)\n"); } } else { printf("storeMakeCmd(): parse error\n"); parseFail = 1; } if (parseFail) { printf("storeMakeCmd(): command Make( %s ) is formed incorrectly\n", cmd); } free(result); result = NULL; regfree(regex); free(regex); regex = NULL; return (parseFail == 0 ? EXIT_OK : EXIT_NOK); } static int storeMacroCmd(cmdItem* ci, char *cmd) { //printf ("storeMacroCmd: got >%s<\n",cmd); char *comma = index(cmd,','); if (comma) { *comma = '\0'; comma++; while (comma && (*comma == ' ' || *comma == '\t')) { comma++; } } // Why ? //deleteSpaces(&cmd,0); char *dsc = (char*) calloc(1, strlen(cmd) + 1); strcpy(dsc, cmd); ci->descr = dsc; if (comma && *comma != '\0') { char *ex = (char*) calloc(1, strlen(comma) + 1); strcpy(ex, comma); ci->exec = ex; } return EXIT_OK; } static int storeExecCmd(cmdItem* ci, char *cmd) { ci->exec = (char*) calloc(1, strlen(cmd) + 1); strcpy(ci->exec, cmd); return EXIT_OK; } static int storeExecAndSendCmd(cmdItem* ci, char *cmd) { char* comma = index(cmd,','); if (comma == NULL) { return EXIT_NOK; } char *dsc = (char*) calloc(1, comma - cmd + 1); char *exc = (char*) calloc(1, strlen(comma)); strncpy(dsc, cmd, comma - cmd); strcpy(exc, comma + 1); ci->descr = dsc; ci->exec = exc; return EXIT_OK; } static int storeExecAndSetCmdEx(cmdItem* ci, char *cmd, int execFlag) { int parseFail = 0; regex_t* regex = (regex_t *) malloc(sizeof(regex_t)); memset(regex, 0, sizeof(regex_t)); regexpPrepare(regex, REGEX_SET); size_t no_sub = regex->re_nsub+1; //printf("storeExecAndSetCmdEx() %d %s (%d)\n", ci->type, cmd, (int)no_sub); regmatch_t* result = allocRegmatch(no_sub); if (regexec(regex, cmd, no_sub, result, 0) == 0) { // Match it //printf("storeExecAndSetCmdEx() matched %d %d\n", result[1].rm_so, result[1].rm_eo); if (result[1].rm_so >= 0 && result[2].rm_so > 0) { // subcommand , params matched int l = result[1].rm_eo - result[1].rm_so; char* subCmd = (char*) malloc(l+1); strncpy(subCmd,cmd+result[1].rm_so,l); subCmd[l] = '\0'; int stype = cmdSet2id(subCmd); //printf("storeExecAndSetCmdEx() subtype %s -> %d \n", subCmd, stype); ci->subtype = stype; free(subCmd); if (stype == ID_SET_BG || stype == ID_SET_CAPTION || stype == ID_SET_PARAM || stype == ID_SET_EFIELD || stype == ID_SET_FG || stype == ID_SET_FONT || stype == ID_SET_FSCREEN || stype == ID_SET_ICONS || stype == ID_SET_HINTS || stype == ID_SET_LAYOUT || stype == ID_SET_STATUS || stype == ID_SET_TITLE || stype == ID_SET_VOLUME || stype == ID_SET_VIBRATE || //stype == ID_SET_COVER || stype == ID_SET_POPUP) { int le = result[2].rm_eo - result[2].rm_so; int le2 = 0; if (!execFlag) { le2 = le + 1; } ci->descr = (char*) calloc(1, l + le2 + 1); strncpy(ci->descr,cmd + result[1].rm_so, l); if (execFlag) { ci->exec = (char*) calloc(1, le + 1); strncpy(ci->exec,cmd + result[2].rm_so, le); } else { strcat (ci->descr,","); strncat(ci->descr,cmd + result[2].rm_so, le); } } else if (stype == ID_SET_FMGR) { regex_t* regex2 = (regex_t *) malloc(sizeof(regex_t)); memset(regex2, 0, sizeof(regex_t)); regexpPrepare(regex2, REGEX_SET_FM); size_t no_sub2 = regex2->re_nsub+1; regmatch_t* result2 = allocRegmatch(no_sub2); char* start2 = cmd + result[2].rm_so; //printf("parse %s\n", cmd + result[2].rm_so); if (regexec(regex2, cmd + result[2].rm_so, no_sub2, result2, 0) == 0) { int l2 = 0; if (result2[1].rm_so >= 0 && result2[2].rm_so >= 0) { // add|replace|select,left|right,_data_ l2 = result2[1].rm_eo - result2[1].rm_so; int l3 = result2[2].rm_eo - result2[2].rm_so; int le = result2[3].rm_eo - result2[3].rm_so; int le2 = 0; if (!execFlag) { le2 = le + 1; } ci->descr = (char*) calloc(1, l + l2 + l3 + le2 + 3); strncpy(ci->descr,cmd + result[1].rm_so, l); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[1].rm_so, l2); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[2].rm_so, l3); if (execFlag) { ci->exec = (char*) calloc(1, le + 1); strncpy(ci->exec,start2 + result2[3].rm_so, le); } else { strcat (ci->descr,","); strncat(ci->descr,start2 + result2[3].rm_so, le); } } else if (result2[4].rm_so >= 0) { // close|show l2 = result2[4].rm_eo - result2[4].rm_so; ci->descr = (char*) calloc(1, l + l2 + 2); strncpy(ci->descr,cmd + result[1].rm_so, l); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[4].rm_so, l2); } else { printf("storeExecAndSetCmdEx(): parse error (F1)\n"); parseFail = 1; } } else { printf("storeExecAndSetCmdEx(): parse error (F2)\n"); parseFail = 1; } regfree(regex2); free(regex2); regex2 = NULL; free(result2); result2 = NULL; } else if (stype == ID_SET_LIST || stype == ID_SET_ILIST || stype == ID_SET_TEXT) { //printf("storeExecAndSetCmdEx() matched2 %d %d\n", result[2].rm_so, result[2].rm_eo); regex_t* regex2 = (regex_t *) malloc(sizeof(regex_t)); memset(regex2, 0, sizeof(regex_t)); regexpPrepare(regex2, REGEX_SET_TL); size_t no_sub2 = regex2->re_nsub+1; regmatch_t* result2 = allocRegmatch(no_sub2); char* start2 = cmd + result[2].rm_so; //printf("parse %s\n", cmd + result[2].rm_so); if (regexec(regex2, cmd + result[2].rm_so, no_sub2, result2, 0) == 0) { int l2 = 0; if (result2[1].rm_so >= 0) { // bg|caption|fg|font|select l2 = result2[1].rm_eo - result2[1].rm_so; int le = result2[2].rm_eo - result2[2].rm_so; int le2 = 0; if (!execFlag) { le2 = le + 1; } ci->descr = (char*) calloc(1, l + l2 + le2 + 2); strncpy(ci->descr,cmd + result[1].rm_so, l); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[1].rm_so, l2); if (execFlag) { ci->exec = (char*) calloc(1, le + 1); strncpy(ci->exec,start2 + result2[2].rm_so, le); } else { strcat (ci->descr,","); strncat(ci->descr,start2 + result2[2].rm_so, le); } } else if (result2[3].rm_so >= 0) { // add|replace|file|dir,_title_ l2 = result2[3].rm_eo - result2[3].rm_so; int l3 = result2[4].rm_eo - result2[4].rm_so; int le = result2[5].rm_eo - result2[5].rm_so; int le2 = 0; if (!execFlag) { le2 = le + 1; } ci->descr = (char*) calloc(1, l + l2 + l3 + le2 + 3); strncpy(ci->descr,cmd + result[1].rm_so, l); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[3].rm_so, l2); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[4].rm_so, l3); if (execFlag) { ci->exec = (char*) calloc(1, le + 1); strncpy(ci->exec,start2 + result2[5].rm_so, le); } else { strcat (ci->descr,","); strncat(ci->descr,start2 + result2[5].rm_so, le); } } else if (result2[6].rm_so >= 0 && result2[7].rm_so >= 0) { // close,clear l2 = result2[6].rm_eo - result2[6].rm_so; int l3 = result2[7].rm_eo - result2[7].rm_so; ci->descr = (char*) calloc(1, l + l2 + l3 + 3); strncpy(ci->descr,cmd + result[1].rm_so, l); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[6].rm_so, l2); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[7].rm_so, l3); } else if (result2[8].rm_so >= 0) { // close|clear|show l2 = result2[8].rm_eo - result2[8].rm_so; ci->descr = (char*) calloc(1, l + l2 + 2); strncpy(ci->descr,cmd + result[1].rm_so, l); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[8].rm_so, l2); } else { printf("storeExecAndSetCmdEx(): parse error (T1)\n"); parseFail = 1; } } else { printf("storeExecAndSetCmdEx(): parse error (T2)\n"); parseFail = 1; } regfree(regex2); free(regex2); regex2 = NULL; free(result2); result2 = NULL; } else if (stype == ID_SET_MENU || stype == ID_SET_IMAGE) { //printf("storeExecAndSetCmdEx() matched menu/image\n"); regex_t* regex2 = (regex_t *) malloc(sizeof(regex_t)); memset(regex2, 0, sizeof(regex_t)); if (stype == ID_SET_MENU) { regexpPrepare(regex2, REGEX_SET_MN); } else { regexpPrepare(regex2, REGEX_SET_WM); } size_t no_sub2 = regex2->re_nsub+1; regmatch_t* result2 = allocRegmatch(no_sub2); char* start2 = cmd + result[2].rm_so; int l2 = 0; if (regexec(regex2, cmd + result[2].rm_so, no_sub2, result2, 0) == 0) { if (result2[1].rm_so >= 0) { // add|replace or icon|window l2 = result2[1].rm_eo - result2[1].rm_so; int le = result2[2].rm_eo - result2[2].rm_so; int le2 = 0; if (!execFlag) { le2 = le + 1; } ci->descr = (char*) calloc(1, l + l2 + le2 + 2); strncpy(ci->descr,cmd + result[1].rm_so, l); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[1].rm_so, l2); if (execFlag) { ci->exec = (char*) calloc(1, le + 1); strncpy(ci->exec,start2 + result2[2].rm_so, le); } else { strcat (ci->descr,","); strncat(ci->descr,start2 + result2[2].rm_so, le); } } else if (result2[3].rm_so >= 0) { // clear or show|remove_all|clear_cache|close|cursor|nocursor|dynamic_cursor l2 = result2[3].rm_eo - result2[3].rm_so; ci->descr = (char*) calloc(1, l + l2 + 2); strncpy(ci->descr,cmd + result[1].rm_so, l); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[3].rm_so, l2); } else if (result2[4].rm_so >= 0) { // set_cursor int le = result2[5].rm_eo - result2[5].rm_so; l2 = result2[4].rm_eo - result2[4].rm_so; int le2 = 0; if (!execFlag) { le2 = le + 1; } ci->descr = (char*) calloc(1, l + l2 + le2 + 2); strncpy(ci->descr,cmd + result[1].rm_so, l); strcat (ci->descr,","); strncat(ci->descr,start2 + result2[4].rm_so, l2); if (execFlag) { ci->exec = (char*) calloc(1, le + 1); strncpy(ci->exec,start2 + result2[5].rm_so, le); } else { strcat (ci->descr,","); strncat(ci->descr,start2 + result2[5].rm_so, le); } } else { printf("storeExecAndSetCmdEx(): parse error (M1)\n"); parseFail = 1; } } //printf("storeExecAndSetCmdEx(): parsed\n"); regfree(regex2); free(regex2); regex2 = NULL; free(result2); result2 = NULL; } else { printf("storeExecAndSetCmdEx(): parse error (M3)\n"); parseFail = 1; } } else if (result[3].rm_so >= 0) { // disconnect,repaint matched int l = result[3].rm_eo - result[3].rm_so; char* subCmd = (char*) malloc(l+1); strncpy(subCmd,cmd+result[3].rm_so,l); subCmd[l] = '\0'; int stype = cmdSet2id(subCmd); ci->subtype = stype; free(subCmd); ci->descr = (char*) calloc(1, l + 1); strncpy(ci->descr, cmd + result[3].rm_so, l); } else if (result[4].rm_so >= 0) { // cover,by_name|noname, int l4 = result[4].rm_eo - result[4].rm_so; int l5 = result[5].rm_eo - result[5].rm_so; int l6 = result[6].rm_eo - result[6].rm_so; //printf("storeExecAndSetCmdEx(): cover %d %d %d\n",l4,l5,l6); ci->subtype = ID_SET_COVER; if (execFlag) { ci->descr = (char*) calloc(1,l4+l5+2); strncpy(ci->descr,cmd+result[4].rm_so,l4); strcat(ci->descr,","); strncat(ci->descr,cmd+result[5].rm_so,l5); ci->exec = (char*) calloc(1,l6+1); strncpy(ci->exec,cmd+result[6].rm_so,l6); } else { ci->descr = (char*) calloc(1,l4+l5+l6+3); strncpy(ci->descr,cmd+result[4].rm_so,l4); strcat(ci->descr,","); strncat(ci->descr,cmd+result[5].rm_so,l5); strcat(ci->descr,","); strncat(ci->descr,cmd+result[6].rm_so,l6); } } else if (result[7].rm_so >= 0) { // cover,clear int l7 = result[7].rm_eo - result[7].rm_so; int l8 = result[8].rm_eo - result[8].rm_so; ci->subtype = ID_SET_COVER; //printf("storeExecAndSetCmdEx(): coverCLEAR %d %d \n",l7,l8); ci->descr = (char*) calloc(1,l7+l8+2); strncpy(ci->descr,cmd+result[7].rm_so,l7); strcat(ci->descr,","); strncat(ci->descr,cmd+result[8].rm_so,l8); } else { printf("storeExecAndSetCmdEx(): parse error (1)\n"); parseFail = 1; } //printf("storeExecAndSetCmdEx(): parsed.\n"); } else { // ExecAndSet(_shell_commands_) goes here ???? printf("storeExecAndSetCmdEx(): parse error (2)\n"); parseFail = 1; } if (parseFail) { printf("storeExecAndSetCmdEx(): command %s( %s ) is formed incorrectly\n", (execFlag ? "ExecAndSet" : "Set"), cmd); } //printf("storeExecAndSetCmdEx(): %s -> %s\n", ci->descr, ci->exec); free(result); result = NULL; regfree(regex); free(regex); regex = NULL; //printf("storeExecAndSetCmdEx(): DONE\n"); return (parseFail == 1 ? EXIT_NOK : EXIT_OK); } static int storeSetCmd(cmdItem* ci, char *cmd) { return storeExecAndSetCmdEx(ci, cmd, 0); } static int storeExecAndSetCmd(cmdItem* ci, char *cmd) { return storeExecAndSetCmdEx(ci, cmd, 1); } static int storeTimerCmd(cmdItem* ci, char *cmd) { //printf("storeTimerCmd(): %s\n",cmd); regex_t* regex = (regex_t *) malloc(sizeof(regex_t)); memset(regex, 0, sizeof(regex_t)); regexpPrepare(regex, REGEX_TIMER); size_t no_sub = regex->re_nsub+1; regmatch_t* result = allocRegmatch(no_sub); int cmdIsOk = EXIT_OK; if (regexec(regex, cmd, no_sub, result, 0) == 0) { // Match it if (result[1].rm_so >= 0 && // Timer(key,1,5) result[2].rm_so > 0 && result[3].rm_so > 0) { int l1 = result[1].rm_eo - result[1].rm_so; int l2 = result[3].rm_eo - result[2].rm_so; // rest of string ci->subtype = ID_TIMER_CREATE; ci->descr = (char*) calloc(1, l1+1); strncpy(ci->descr, cmd + result[1].rm_so, l1); ci->exec = (char*) calloc(1, l2+1); strncpy(ci->exec, cmd + result[2].rm_so, l2); } else if (result[4].rm_so >= 0 && // Timer(key,cancel|pause|continue) result[5].rm_so >= 0) { int l1 = result[4].rm_eo - result[4].rm_so; int l2 = result[5].rm_eo - result[5].rm_so; char* subCmd = (char*) malloc(l2+1); strncpy(subCmd,cmd+result[5].rm_so,l2); subCmd[l2] = '\0'; ci->subtype = cmdTimer2id(subCmd); //printf("storeTimerCmd(): command %s -> %d\n", subCmd,ci->subtype); free(subCmd); ci->descr = (char*) calloc(1, l1+1); strncpy(ci->descr, cmd + result[4].rm_so, l1); ci->exec = (char*) calloc(1, l2+1); strncpy(ci->exec, cmd + result[5].rm_so, l2); } } else { printf("storeTimerCmd(): command %s is formed incorrectly (2)\n", cmd); cmdIsOk = EXIT_NOK; } free(result); result = NULL; regfree(regex); free(regex); regex = NULL; return cmdIsOk; } static int storeDescription(cmdItem* ci, char *cmd) { char *newDescr = (char*) calloc(1, strlen(cmd) + 1); strcpy(newDescr, cmd); ci->descr = newDescr; return EXIT_OK; } static int storeSendCkpdCmd(cmdItem* ci, char *cmd) { normalizeSequence(&cmd); return storeDescription(ci, cmd); } static int storeOtherCmd(cmdItem* ci, char *cmd) { deleteSpaces(&cmd,0); return storeDescription(ci, cmd); } int storeCmds(SingleList** pcommands, const char *inval) { int cmdId; size_t no_sub = cmdByCmd->re_nsub+1; char *value = strdup(inval); //printf("storeCmds() %s (%d)\n", value, (int)no_sub); regmatch_t* result = allocRegmatch(no_sub); int start = 0; while(regexec(cmdByCmd, value+start, no_sub, result, 0)==0) { //printf("storeCmds() next %s\n", value+start); int step = 0; char *name = NULL; char *cmds = NULL; int u1 = 1; if (result[1].rm_so >= 0 && result[2].rm_so) { // () matched cmds = value + start + result[2].rm_so + 1; // Search ) which is appropriate to matched ( int braces = 1; // cmd_name( char *ptr = cmds; while (*ptr != '\0' && braces > 0) { if (*ptr == '(') { braces++; } if (*ptr == ')') { braces--; } ptr++; } step = ptr - value - start + 1; if (*(ptr-1) == ')') { *(ptr-1) = '\0'; } } else if (result[3].rm_so >= 0) { // Exit matched u1 = 3; step = result->rm_eo; } else { printf("storeCmds(): Strange match\n"); start += result->rm_eo; continue; } // strip spaces from tail if (cmds) { char *p = cmds + strlen(cmds) - 1; while (isspace(*p)) { *p = '\0'; p--; } } name = value + start + result[u1].rm_so; *(value + start + result[u1].rm_eo) = '\0'; if (name == NULL) { //printf("Got name >NULL<\n"); start +=result->rm_eo; continue; //} else { // printf("Got name >%s<\n",name); } cmdId = cmd2id(name); if (cmdId == ID_UNKNOWN) { printf("storeCmds(): Unknown command name %s\n", name); //here could be params like log=... also start +=result->rm_eo; continue; } /*if (cmds != NULL) { printf("Got command body >%s<\n",cmds); } else { printf("Got command body >NULL<\n"); }*/ //printf("the rest of cmd >%s<\n",value+start+step); int cmdIsOk = EXIT_OK; // Insert into command list cmdItem* newCmd = (cmdItem*) calloc(1, sizeof(cmdItem)); newCmd->type = cmdId; if (cmds == NULL) { newCmd->descr = NULL; } else { static struct { int id; int (*hook)(cmdItem* ci, char *cmd); } cmdHooks[] = { { ID_EXIT, storeDescription }, { ID_EXEC, storeExecCmd }, { ID_SENDCKPD, storeSendCkpdCmd }, { ID_SET, storeSetCmd }, { ID_EXECSET, storeExecAndSetCmd }, { ID_TIMER, storeTimerCmd }, { ID_SEND, storeDescription }, { ID_EXECSEND, storeExecAndSendCmd}, { ID_MACRO, storeMacroCmd }, { ID_LOAD, storeDescription }, // file name can contain spaces inside { ID_INCLUDE, storeDescription }, // file name can contain spaces inside { ID_GET, storeGetCmd }, { ID_MAKE, storeMakeCmd }, { ID_EMU, storeOtherCmd }, { ID_DBUS, storeOtherCmd }, { ID_CMD_MAX, 0 } }; // Suppose the right order //size_t idx; //for (idx = 0; cmdHooks[idx].id < ID_CMD_MAX; ++idx) { if (cmdId < ID_CMD_MAX /*== cmdHooks[idx].id*/) { if (cmdHooks[cmdId /*(idx*/].hook != NULL) { cmdIsOk = (*(cmdHooks[cmdId /*(idx*/].hook))(newCmd, cmds); } //break; } //} } if (cmdIsOk == EXIT_OK) { (*pcommands) = listSingleAppend((*pcommands), newCmd); } else { free(newCmd); if (cmds == NULL) { printf("storeCmds(): command %s was not stored\n", name); } else { printf("storeCmds(): command %s ( %s ) was not stored\n", name,cmds); } } start +=step; //printf("REST OF CMDS %s\n", value+start); } // while free(result); free(value); result = NULL; return EXIT_OK; } static int storeKey(mode* cMode, const char *inTag, const char *value) { type_key* It = NULL; int ret = EXIT_OK; //printf("storeKey %s %s\n", cMode->name->str,tag); type_key **head = &(cMode->keys); char* tag = strdup(inTag); normalizeSequence(&tag); if(cMode && findExact(cMode, tag)) { free(tag); return EXIT_OK; // do not overwrite existing items } It = (type_key*) calloc(1, sizeof(type_key)); // Insert in head if ((*head) == NULL) { // first elem It->next = NULL; // insert to the end *head = It; } else { // insert to the end type_key* last = (*head); while (last->next) { last = last->next; } last->next = It; It->next = NULL; // insert to the top version //It->next = (type_key*) (*head); } // insert to the top version // *head = It; It->key = (char*) calloc(1, strlen(tag)+1); strcpy(It->key,tag); if (value!= NULL) { ret = storeCmds(&(It->commands), value); } else { It->commands = NULL; } free(tag); return ret; } static string_t* loadLine(FILE *fp) { char aLine[MAXCMDLEN]; string_t* load_buf = NULL; while (1) { if (fgets(aLine, MAXCMDLEN, fp)) { //printf("LLLLL >%s/ 1 && aLine[n-1] == '\n') { // got till \n aLine[n-1] = '\0'; if (aLine[n-2] == '\\') { aLine[n-2] = '\0'; } else { stop = BOOL_YES; } } if (n > 0) { if (!load_buf) { load_buf = stringNew(""); } if (aLine[0] != '\0') { load_buf = stringAppend(load_buf,aLine); } } else { stop = BOOL_YES; } if (stop) { break; } } else { break; } } //printf("+++++ %s +++++\n",(load_buf ? load_buf->str:"NULL")); return load_buf; } static int loadKeys(FILE *fp) { string_t *tmptext; char *tag = NULL; char *value = NULL; mode* def = getDefaultMode(); // will create it if absent mode* store = getCurrentMode(); setCurrentMode(def); do { //printf("loadKeys -------------------------------------------------------------------------\n"); tmptext=loadLine(fp); if (tmptext == NULL) { return EXIT_NOK; } tag = NULL; value = NULL; parseKeyValue(tmptext->str, &tag, &value); if (tag == NULL) { // comments and empty lines goes here if (*(tmptext->str) != '%') { boolean_t ok = BOOL_YES; int i = 0; for (;ilen;i++) { if (!isspace(*(tmptext->str + i))) { ok = BOOL_NO; break; } } if (!ok) { printf("ERROR : incorrectly formed command >%s<\n", tmptext->str); ERROR2("[PARSER]: incorrectly formed command >%s<", tmptext->str); } } stringFree(tmptext, BOOL_YES); continue; } else if(strcmp(tag,SECTION_END_STR) == 0) { stringFree(tmptext, BOOL_YES); break; } else if(strcmp(tag,MODE_STR) == 0) { // mode definition //printf("MODE_STR >%s<\n",value); // split -- mode name : parent mode name char *split = index(value,':'); if (split) { *split = '\0'; split++; while (split && (*split == ' ' || *split == '\t')) { split++; } } deleteSpaces(&value,0); if (split) { deleteSpaces(&split,0); } //printf("MODE_STR >%s< >%s<\n",value,(split?split:"NULL")); mode *nm = findMode(value); if (!nm) { nm = addMode(value, split); } setCurrentMode(nm); } else if(strcmp(tag,MODE_END_STR) == 0) { // mode definition end setCurrentMode(getDefaultMode()); } else { // Line with key->command definition storeKey(getCurrentMode(), tag, value); } stringFree(tmptext, BOOL_YES); } while (1); // restore after load process setCurrentMode(store); return EXIT_OK; } static struct { const char* key; const char* value; } keyTable[] = { {"_GET_ICON_($$)", "ExecAndSet(image,icon,I=`find $(Home)/.anyRemote/Icons/$(Index) $(CfgDir)/Icons/$(Index) -name $(Param).png 2> /dev/null|grep -v svn`;echo \"$(Param),$I\");"}, {"_GET_COVER_($$)", "ExecAndSet(image,cover,I=`find $(Home)/.anyRemote/Covers $(CfgDir)/Icons/common -name \"$(Param).*\" 2> /dev/null|grep -v svn`;convert -resize $(Index)x$(Index) -depth 8 -background transparent $I \"$(TmpDir)\"/$(Param)_$(Index).png 2> /dev/null;echo \"$(Param),$(TmpDir)/$(Param)_$(Index).png\");"}, {"_MM_($$)", "Emulate(mousermove,$(Index),$(Param));"}, {"_MB_($$)", "Emulate(mouse,$(Index));"}, {"_KB_($$)", "Emulate(key,$(Param));"}, {"_KP_($$)", "Emulate(keydown,$(Param));"}, {"_KR_($$)", "Emulate(keyup,$(Param));"}, {"_KM_($$)", "Emulate(modifier,$(Index),$(Param));"}, {NULL, NULL} }; static void loadInternal() { mode* im = getInternalMode(); int i=0; while (keyTable[i].key) { storeKey(im, keyTable[i].key, keyTable[i].value); i++; } } int load_cfg(const char *mfile, int isInit) { FILE *fp; char *tag, *value; string_t *tmptext; //printf("LOAD:%s\n",mfile); fp=fopen(mfile,"r"); if (fp == NULL) { return EXIT_NOK; } if (keyVal == NULL) { // init it once keyVal = (regex_t *) malloc(sizeof(regex_t)); memset(keyVal, 0, sizeof(regex_t)); regexpPrepare(keyVal, REGEX_KEYVAL); } if (cmdByCmd == NULL) { // init it once cmdByCmd = (regex_t *) malloc(sizeof(regex_t)); memset(cmdByCmd, 0, sizeof(regex_t)); regexpPrepare(cmdByCmd, REGEX_CMDBYCMD); } //printf("LOAD LINES\n"); // Go through the conf file while(1) { tmptext=loadLine(fp); if (tmptext == NULL) { break; } //printf("LOAD LINE:%s\n",tmptext->str); parseKeyValue(tmptext->str, &tag, &value); if (tag == NULL) { stringFree(tmptext, BOOL_YES); continue; } else if (strcmp(tag,KEYS_SECTION_STR) == 0) { printf("WARNING: [Keys] tag is deprecated. Please update configuration files !\n"); if (loadKeys(fp) != EXIT_OK) { stringFree(tmptext, BOOL_YES); fclose(fp); return EXIT_NOK; } if (!isInit) { // If we goes here from Include() command, we did all we need stringFree(tmptext, BOOL_YES); fclose(fp); return EXIT_OK; } } else if (strcmp(tag,PROTOCOL_SECTION_STR) == 0) { //printf("DO LOAD:%s\n",mfile); if (loadKeys(fp) != EXIT_OK) { stringFree(tmptext, BOOL_YES); fclose(fp); return EXIT_NOK; } if (!isInit) { // If we goes here from Include() command, we did all we need stringFree(tmptext, BOOL_YES); fclose(fp); return EXIT_OK; } } else if (isInit) { if (strncmp("GuiApp",tag,6) != 0) { printf("WARNING: Unknown tag in cfg file >%s<\n",tag); } } stringFree(tmptext, BOOL_YES); } fclose(fp); loadInternal(); //printf("LOAD:%s OK\n",mfile); return EXIT_OK; } void freeRegexps() { if (cmdByCmd) { regfree(cmdByCmd); free(cmdByCmd); cmdByCmd = NULL; } if (keyVal) { regfree(keyVal); free(keyVal); keyVal = NULL; } } void init_cfg_dir(char *path) { int sz = 0; const char* v = getVarValue("CfgDir", &sz); if (!v) { if (path != NULL) { char *d = strdup(path); char *p = rindex(d,SEPARATOR); if (p != NULL) { *p = '\0'; } else { *d = '\0'; } setCfgDir(d); free(d); } else { setCfgDir(NULL); } } } int init_cfg(char *path) { //printf("init_cfg %s\n",path); int ret = EXIT_OK; if (path != NULL) { printf("Use configuration file %s\n",path); ret = load_cfg(path,1); } else { char cfgfile[MAXLEN]; char *t = getenv("HOME"); if (t) { strcpy(cfgfile, t); } else { strcpy(cfgfile, "."); } strcat(cfgfile, CFGFILE); printf("Search configuration file %s\n", cfgfile); if(load_cfg(cfgfile,1) != EXIT_OK) { // Try again in current dir strcpy(cfgfile, "."); strcat(cfgfile, CFGFILE); printf("Search configuration file %s\n", cfgfile); ret = load_cfg(cfgfile,1); } } if (ret != EXIT_OK) { printf("Can not find configuration file to use or incorrect content of configuration file detected.\n"); } return ret; } anyremote-6.7.1/src/security.c0000644000232200023220000001364012664332726016717 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #include #include #include #include #include #include #include #include #include #include #include #include "common.h" #include "list.h" #include "utils.h" #include "conf.h" #include "str.h" #include "dispatcher.h" #include "peer.h" #define ALLOWED_FILE "/.anyRemote/allowed_hosts" extern char tmp[MAXMAXLEN]; extern int remoteOn; boolean_t usePassword = BOOL_NO; boolean_t allowedOnly = BOOL_NO; SingleList * _allowedPeers = NULL; static void destroyPeer(void* ptr) { string_t * v = (string_t *) ptr; stringFree(v, BOOL_YES); } static void dropTable() { DEBUG2("Security : dropTable"); listSingleFullFree(_allowedPeers, destroyPeer); _allowedPeers = NULL; } static void readTable() { dropTable(); DEBUG2("Security : readTable"); FILE *fp; struct stat buf; char *h = getenv("HOME"); if (!h) { WARNING2("Security issue: $HOME variable not accessible, no connection will be accepted") return; } char* resfile = (char*) calloc(strlen(h)+strlen(ALLOWED_FILE)+1,1); strcpy(resfile, h); strcat(resfile, ALLOWED_FILE); if(stat(resfile, &buf) == -1) { WARNING2("Security issue: File %s is absent, no connection will be accepted", resfile) free(resfile); return; } long fLen = buf.st_size; DEBUG2("readTable file size >%ld<", fLen); fp=fopen(resfile,"r"); if (fp == NULL) { WARNING2("Security issue: Can not open file %s, no connection will be accepted", resfile) free(resfile); return; } free(resfile); char * fBuffer = (char*) calloc(fLen+1,1); fread(fBuffer, sizeof(char), fLen, fp); fclose(fp); // separate by \n char* bStr = strtok(fBuffer,"\n"); while (bStr != NULL) { DEBUG2("readTable add peer %s", bStr); string_t * v = stringNew(bStr); _allowedPeers = listSingleAppend(_allowedPeers, v); bStr = strtok(NULL,"\n"); } free(fBuffer); } static boolean_t checkTable(const char* peer) { if (peer) { SingleList* list = _allowedPeers; while (list) { string_t * v = (string_t *) list->data; if (strcmp(v->str,peer) == 0) { return BOOL_YES; } list = listSingleNext(list); } } return BOOL_NO; } void setAllowedOnly(const char* value) { DEBUG2("setAllowedOnly %s", value); allowedOnly = boolValue(value); if (allowedOnly) { // re-read firewall table readTable(); } else { // drop firewall table dropTable(); } } boolean_t isAllowed(const char* peer) { return (allowedOnly ? checkTable(peer) : BOOL_YES); } void setUsePassword(boolean_t use) { DEBUG2("setUsePassword %d", use); usePassword = use; } boolean_t getUsePassword(void) { return usePassword; } char* getStoredPass() { FILE *fp; struct stat buf; char *h = getenv("HOME"); if (!h) { return NULL; } char* resfile = (char*) calloc(strlen(h)+21,1); strcpy(resfile, h); strcat(resfile, "/.anyRemote/password"); if(stat(resfile, &buf) == -1) { free(resfile); return NULL; } long fLen = buf.st_size; DEBUG2("getStoredPass >%ld<", fLen); fp=fopen(resfile,"r"); free(resfile); if (fp == NULL) { return NULL; } char * fBuffer = (char*) calloc(fLen+1,1); #ifdef __cplusplus size_t dummy = #endif fread(fBuffer, sizeof(char), fLen, fp); fclose(fp); // strip \n from the end int plen = strlen(fBuffer) - 1; while (plen > 0 && *(fBuffer+plen) == '\n') { *(fBuffer+plen) = '\0'; plen--; } return fBuffer; } boolean_t checkPassword (const char* value) { DEBUG2("checkPassword %s", (value ? value : "NULL")); char* pass = getStoredPass(); if (!pass) { return BOOL_YES; } if (memcmp(value, DEF_MSG, 4) == 0 && memcmp(value+4, "_PASSWORD_(,", 12) == 0) { // Got verification response from Java client int plen = strlen(pass); if (memcmp(value+16, pass, plen) == 0) { // _PASSWORD_(,) logger(L_INF,"[DS]: Password OK"); free(pass); return BOOL_YES; } } return BOOL_NO; } int verifyPassword(int fd) { DEBUG2("[DS]: Do password verification on descriptor %d", fd); const char* passCmd = "Get(password);"; int n = write(fd,passCmd,strlen(passCmd)); if (n < 0) { logger(L_ERR, "[DS]: Error on password verification (writing to socket)"); return EXIT_STOP; } char buf[MAXCMDLEN]; n = readPeer(fd, buf, MAXCMDLEN); if (n <= 0) { // EOF or error logger(L_ERR, "[DS]: Error on password verification (reading from socket)"); return EXIT_STOP; } buf[n] = '\0'; if (!checkPassword(buf)) { logger(L_INF,"[DS]: Verification failed. Incorrect password."); return EXIT_NOK; } logger(L_DBG,"[DS]: Password verification OK"); return EXIT_OK; } anyremote-6.7.1/src/state.h0000644000232200023220000001171112664332726016172 0ustar debalancedebalance// // anyRemote // a wi-fi or bluetooth remote for your PC. // // Copyright (C) 2006-2016 Mikhail Fedotov // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // #ifndef _PR_STATE_H_ #define _PR_STATE_H_ #include "lib_wrapper.h" #include "dispatcher.h" #define ICON_NUM 12 #define ICON_NUM_BTM 7 enum arForm { CF=1, TX, LI, FM, WM, EF }; typedef struct { string_t* font; string_t* fg; string_t* bg; } Visuals; typedef struct { string_t* caption; string_t* title; string_t* status; string_t* icons[ICON_NUM]; string_t* hints[ICON_NUM]; string_t* cover; string_t* namedCover; string_t* volume; string_t* upBtn; string_t* dnBtn; boolean_t keypad; boolean_t joystick; boolean_t useVolume; boolean_t layout7x1; Visuals visual; } ControlForm; typedef struct { string_t* icon; string_t* string; } ListItem; typedef struct { string_t* caption; SingleList* items; int selIdx; Visuals visual; } ListForm; typedef struct { string_t* caption; string_t* text; Visuals visual; } TextForm; typedef struct { string_t* window; } WindowForm; typedef struct { string_t* caption; string_t* text; string_t* label; boolean_t pass; } EditForm; typedef struct { ControlForm cf; ListForm lf; TextForm tf; WindowForm wf; EditForm ef; } ClientState; //////////////////////////////////////////////////////////////////////////////// void initState(); void freeState(); void updateState(dMessage* dm); //////////////////////////////////////////////////////////////////////////////// void setCurForm(int f); int curForm (); void setFgBg (int form, boolean_t set_fg); // rely on previous strtok() void setFont (int form); // rely on previous strtok() //////////////////////////////////////////////////////////////////////////////// void setupDefMenu(); SingleList* userMenu(); int menuSize(); SingleList* menuNth (int n); void setMenu(); // rely on previous strtok() void freeMenu(); //////////////////////////////////////////////////////////////////////////////// void setCfCaption(const char * s); void setCfTitle (const char * s); void setCfStatus (const char * s); void setIcons (); // rely on previous strtok() void setHints (); // rely on previous strtok() void setSkin (); // rely on previous strtok() void setCfCover (const char * s); void setCfVolume (const char * s); const char* cfCaption (); const char* cfTitle (); const char* cfStatus (); const char* cfIcon (int i); const char* cfHint (int i); const char* cfCover (); const char* cfNamedCover(); const char* cfBg (); const char* cfFg (); const char* cfFont (); void freeCfCover(); const char* cfVolume (); boolean_t useVolume (); boolean_t bottomlineSkin(); boolean_t useKeypad(); boolean_t useJoystick(); const char* cfUpButton(); const char* cfDownButton(); string_t* findNamedCover(const char *name); //////////////////////////////////////////////////////////////////////////////// void setList(boolean_t useIcons); // rely on previous strtok() const char* lfCaption (); SingleList* lfList (); SingleList* lfListNth (int n); const char* lfBg (); const char* lfFg (); const char* lfFont (); void freeLfList(); int lfSize (); int lfIndex (); //////////////////////////////////////////////////////////////////////////////// void setText(boolean_t split); // rely on previous strtok() const char* tfCaption (); const char* tfText (); const char* tfBg (); const char* tfFg (); const char* tfFont (); //////////////////////////////////////////////////////////////////////////////// void setEditfield(); // rely on previous strtok() void setPassField(); void setEfPassword(boolean_t use); const char* efCaption (); const char* efLabel (); const char* efText (); boolean_t efPassword(); //////////////////////////////////////////////////////////////////////////////// void setImage(const char* cmd, const char* file); const char* wfImage (); //////////////////////////////////////////////////////////////////////////////// void setParams(); // rely on previous strtok() int iconPadding(); int iconSize(); #endif anyremote-6.7.1/NEWS0000644000232200023220000000002412061426052014567 0ustar debalancedebalanceSee ChangeLog file anyremote-6.7.1/AUTHORS0000644000232200023220000000004412061426052015142 0ustar debalancedebalanceMikhail Fedotov anyremote-6.7.1/missing0000755000232200023220000002370312100021545015470 0ustar debalancedebalance#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2012-01-06.18; # UTC # Copyright (C) 1996-2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, 'missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file 'aclocal.m4' autoconf touch file 'configure' autoheader touch file 'config.h.in' autom4te touch the output file, or create a stub one automake touch all 'Makefile.in' files bison create 'y.tab.[ch]', if possible, from existing .[ch] flex create 'lex.yy.c', if possible, from existing .c help2man touch the output file lex create 'lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create 'y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running '$TOOL --version' or '$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified 'acinclude.m4' or '${configure_ac}'. You might want to install the Automake and Perl packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified '${configure_ac}'. You might want to install the Autoconf and GNU m4 packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified 'acconfig.h' or '${configure_ac}'. You might want to install the Autoconf and GNU m4 packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'. You might want to install the Automake and Perl packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: '$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get '$1' as part of Autoconf from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: '$1' $msg. You should only need it if you modified a '.y' file. You may need the Bison package in order for those modifications to take effect. You can get Bison from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified a '.l' file. You may need the Flex package in order for those modifications to take effect. You can get Flex from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the Help2man package in order for those modifications to take effect. You can get Help2man from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified a '.texi' or '.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy 'make' (AIX, DU, IRIX). You might want to install the Texinfo package or the GNU make package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; *) echo 1>&2 "\ WARNING: '$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the 'README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing '$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: anyremote-6.7.1/README0000644000232200023220000000175413226200116014756 0ustar debalancedebalance================================================================================= README anyremote ================================================================================= Remote control software for applications using Wi-Fi or Bluetooth. anyRemote was developed as thin "communication" layer between Wi-Fi (Bluetooth)-capabled phone and Linux, and in principle could be configured to manage almost any kind of software. anyRemote could be used with: * Wi-Fi connection with java client if phone supports Wi-Fi * bluetooth connection with java client if cell phone is JSR82 compatible * TCP/IP connection with java client, if PC is connectable from internet * bluetooth, infrared or cable connection using AT "modem" commands * web interface * it has limited support for Bemused clients The code is licensed under the GNU Public licence (GPLv3+). (C) by Mikhail Fedotov 2006-2018. For detailed info see HTML docs in doc-html/index.html anyremote-6.7.1/aclocal.m40000644000232200023220000017313413231303626015746 0ustar debalancedebalance# generated automatically by aclocal 1.15.1 -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Configure paths for GLIB # Owen Taylor 1997-2001 dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject, dnl gthread, or gio is specified in MODULES, pass to pkg-config dnl AC_DEFUN([AM_PATH_GLIB_2_0], [dnl dnl Get the cflags and libraries from pkg-config dnl AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program], , enable_glibtest=yes) pkg_config_args=glib-2.0 for module in . $4 do case "$module" in gmodule) pkg_config_args="$pkg_config_args gmodule-2.0" ;; gmodule-no-export) pkg_config_args="$pkg_config_args gmodule-no-export-2.0" ;; gobject) pkg_config_args="$pkg_config_args gobject-2.0" ;; gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; gio*) pkg_config_args="$pkg_config_args $module-2.0" ;; esac done PKG_PROG_PKG_CONFIG([0.16]) no_glib="" if test "x$PKG_CONFIG" = x ; then no_glib=yes PKG_CONFIG=no fi min_glib_version=ifelse([$1], ,2.0.0,$1) AC_MSG_CHECKING(for GLIB - version >= $min_glib_version) if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" enable_glibtest=no fi if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then : else no_glib=yes fi fi if test x"$no_glib" = x ; then GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0` GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0` GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args` GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args` glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_glibtest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$GLIB_LIBS $LIBS" dnl dnl Now check if the installed GLIB is sufficiently new. (Also sanity dnl checks the results of pkg-config to some extent) dnl rm -f conf.glibtest AC_TRY_RUN([ #include #include #include int main () { unsigned int major, minor, micro; fclose (fopen ("conf.glibtest", "w")); if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_glib_version"); exit(1); } if ((glib_major_version != $glib_config_major_version) || (glib_minor_version != $glib_config_minor_version) || (glib_micro_version != $glib_config_micro_version)) { printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, glib_major_version, glib_minor_version, glib_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((glib_major_version != GLIB_MAJOR_VERSION) || (glib_minor_version != GLIB_MINOR_VERSION) || (glib_micro_version != GLIB_MICRO_VERSION)) { printf("*** GLIB header files (version %d.%d.%d) do not match\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", glib_major_version, glib_minor_version, glib_micro_version); } else { if ((glib_major_version > major) || ((glib_major_version == major) && (glib_minor_version > minor)) || ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n", glib_major_version, glib_minor_version, glib_micro_version); printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n", major, minor, micro); printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } ],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_glib" = x ; then AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://www.freedesktop.org/software/pkgconfig/" else if test -f conf.glibtest ; then : else echo "*** Could not run GLIB test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" AC_TRY_LINK([ #include #include ], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLIB or finding the wrong" echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GLIB is incorrectly installed."]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GLIB_CFLAGS="" GLIB_LIBS="" GLIB_GENMARSHAL="" GOBJECT_QUERY="" GLIB_MKENUMS="" GLIB_COMPILE_RESOURCES="" ifelse([$3], , :, [$3]) fi AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) AC_SUBST(GLIB_GENMARSHAL) AC_SUBST(GOBJECT_QUERY) AC_SUBST(GLIB_MKENUMS) AC_SUBST(GLIB_COMPILE_RESOURCES) rm -f conf.glibtest ]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 11 (pkg-config-0.29.1) dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29.1]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------ dnl dnl Prepare a "--with-" configure option using the lowercase dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and dnl PKG_CHECK_MODULES in a single macro. AC_DEFUN([PKG_WITH_MODULES], [ m4_pushdef([with_arg], m4_tolower([$1])) m4_pushdef([description], [m4_default([$5], [build with ]with_arg[ support])]) m4_pushdef([def_arg], [m4_default([$6], [auto])]) m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) m4_case(def_arg, [yes],[m4_pushdef([with_without], [--without-]with_arg)], [m4_pushdef([with_without],[--with-]with_arg)]) AC_ARG_WITH(with_arg, AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, [AS_TR_SH([with_]with_arg)=def_arg]) AS_CASE([$AS_TR_SH([with_]with_arg)], [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], [auto],[PKG_CHECK_MODULES([$1],[$2], [m4_n([def_action_if_found]) $3], [m4_n([def_action_if_not_found]) $4])]) m4_popdef([with_arg]) m4_popdef([description]) m4_popdef([def_arg]) ])dnl PKG_WITH_MODULES dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ----------------------------------------------- dnl dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES dnl check._[VARIABLE-PREFIX] is exported as make variable. AC_DEFUN([PKG_HAVE_WITH_MODULES], [ PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) AM_CONDITIONAL([HAVE_][$1], [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) ])dnl PKG_HAVE_WITH_MODULES dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------------------ dnl dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make dnl and preprocessor variable. AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], [ PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) ])dnl PKG_HAVE_DEFINE_WITH_MODULES # Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR anyremote-6.7.1/cfg-data/0000755000232200023220000000000012100017561015535 5ustar debalancedebalanceanyremote-6.7.1/cfg-data/obsoleted/0000755000232200023220000000000012100017561017515 5ustar debalancedebalanceanyremote-6.7.1/cfg-data/obsoleted/iViewer/0000755000232200023220000000000012100017561021127 5ustar debalancedebalanceanyremote-6.7.1/cfg-data/obsoleted/iViewer/xmms.cfg0000644000232200023220000000614712061426047022615 0ustar debalancedebalance% % anyremote configuration file for XMMS management. (Server-mode CommandFusion iViewer emulation) % prerequisites: Iviewer client installed on Ipod touch/Iphone 2.x and Iviewer free winamp GUI % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Xmms GuiAppBinary=xmms GuiAppRun=echo 'P=`ps -ef|grep xmms|grep -v xmms2|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=xmms.png GuiAppType=Application GuiAppProtocols=iViewer GuiAppDesc=XMMS is a multimedia player for unix systems. XMMS stands for X MultiMedia System and can play media files such as MP3, MOD's, WAV and others with the use of Input plugins. [Protocol]=iViewer % Init update %T current title %M song len mm:ss %m playback time mm:ss %p playback time in persents %S song len sec %s1 = artist %s2 = track %s6 = song length min:sec. %s5 = current playback in min:sec %a2 = needs a constent update to. its the seek bar %a1 = volume % play d1(1)=Exec(xmmsctrl play); % stop d30(1)=Exec(xmmsctrl stop); % pause d31(1)=Exec(xmmsctrl pause); % next d5(1)=Exec(xmmsctrl next); % prev d6(1)=Exec(xmmsctrl prev); % toggle repeat d12(1)=Exec(xmmsctrl repeat) % toggle shuffle d9(1)=Exec(xmmsctrl shuffle) % volume contol a1($$)=Make(var,change_vol,echo "$(Index)*1000/65535" |bc -l);\ Exec(xmmsctrl vol $(change_vol));\ Macro(VOLUME); % seek >> and << a2($$)=Make(var,seek,echo "$(Index)*`xmmsctrl print "%S"`/65535*10"|bc -l);\ Exec(xmmsctrl time $(seek));\ Macro(PLAYBACK); % Feedback PLAYBACK=Send(string,s5=);ExecAndSend(string,xmmsctrl print "%m");Send(bytes,3);\ Make(var,playback_persent,echo "65535/100*"`xmmsctrl print "%p"|cut -d "%" -f1`|bc);\ Send(string,a2=$(playback_persent));Send(bytes,3); % volume 0 - 65535 VOLUME= Make(var,vol_persent,echo "65535/100*"`xmmsctrl print "%v"|cut -d "%" -f1`|bc);\ Send(string,a1=$(vol_persent));Send(bytes,3); % Artist name ARTIST=ExecAndSend(string,xmmsctrl print "%T" | cut -d "-" -f1); % Track TRACK =ExecAndSend(string,xmmsctrl print "%T" | cut -d "-" -f2); % Song length mm:ss SONG_LEN=ExecAndSend(string,xmmsctrl print "%M"); % % The following is a common part. In general, it should not be changed. % TITLE= Send(string,s1=);Macro(ARTIST);Send(bytes,3);\ Send(string,s2=);Macro(TRACK);Send(bytes,3);\ Send(string,s6=);Macro(SONG_LEN);Send(bytes,3); d5(0)=Macro(TITLE); d6(0)=Macro(TITLE); % Init i(1)=Macro(TITLE);\ Macro(VOLUME); % Password p(PASSWORD)" p($$)=Send(string,p=ok);Send(bytes,3); % Heartbeat DISC=Macro(STOP_TIMERS);Make(disconnect); h(0)=Timer(DISC,reset); % no needs to send "h=1\03" replay directly because this will be done % automatically - that controlled by $(IViewer) variable % If $(IViewer) variable is not set it needs to use the following command: % h(0)=Send(bytes,104,61,49,3);Timer(DISC,reset); STOP_TIMERS=\ Timer(PLAYBACK,cancel);\ Timer(VOLUME,cancel);\ Timer(TITLE,cancel); % Event timers (Init)=Make(var,IViewer,by_value,true); (Connect)=Timer(DISC,10,1);\ Timer(PLAYBACK,3,0);\ Timer(VOLUME,10,0);\ Timer(TITLE,5,0); (Disconnect)=Macro(STOP_TIMERS); [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/0000755000232200023220000000000012120355622020750 5ustar debalancedebalanceanyremote-6.7.1/cfg-data/obsoleted/AT-mode/elisa.cfg0000644000232200023220000000464712120355622022541 0ustar debalancedebalance% % anyremote configuration file for Moovida (former Elisa) media center (http://elisa.fluendo.com/). (AT-mode) % % STATUS stable % XTEST yes % SOUND app % ENV no GuiAppName=Moovida/Elisa GuiAppBinary=echo 'B=`which moovida 2> /dev/null`;if [ "x$B" == "x" ]; then echo elisa; else echo moovida; fi'|bash -f -s GuiAppRun=echo 'A=`ps -ef|grep -e "moovida\|elisa"|grep -v grep`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=elisa.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=The Moovida (former Elisa) Media Center has many advanced features that will make your media center experience unique. It features an intuitive interface with a professional look and feel which can be easily used with a standard TV remote control. [Protocol]=AT (Init)=Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE);\ Make(var,exec_name,echo 'B=`which moovida 2> /dev/null`;if [ "x$B" == "x" ]; then echo elisa; else echo moovida; fi'|bash -f -s) (Connect)=Make(mode,elisa); [Mode]=elisa (EnterMode)=Macro(ELISA_RUN) (ExitMode)=Make(none) ELISA_RUN=Exec(echo 'P=`ps -ef|grep $(exec_name)|grep -v grep|grep -v edit|grep -v anyremote`; if [ "x$P" == "x" ]; then xterm -e $(exec_name)& fi' |bash -f -s); ELISA_RUN_STOP=Exec(echo 'P=`ps -ef|grep $(exec_name)|grep -v grep|grep -v edit|grep -v anyremote`; if [ "x$P" == "x" ]; then xterm -e $(exec_name)& else killall $(exec_name); fi' |bash -f -s); 1=Emulate(key,f); 2=Emulate(key,Up); 3=Make(none) 4=Emulate(key,Left); 5=Emulate(key,Return); 6=Emulate(key,Right); 7=Emulate(key,x); 8=Emulate(key,Down); 9=Emulate(key,c); * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "Move cursor by 2,4,6,8">$F;echo "Volume up/down by 2,8">>$F;echo "1 - toggle fullscreen">>$F;echo "5 - action (play/pause etc.)">>$F;echo "7 - Previous">>$F;echo "9 - Next">>$F;echo "0 - Show/hide menu">>$F;echo "* # - Run/Quit">>$F;echo "* * - Help">>$F);\ Macro(SHOW_HELP); * #=Macro(ELISA_RUN_STOP) 0=Emulate(key,BackSpace); #=Emulate(key,q); [ModeEnd] %%%%%%%%%%%%%% % % Key aliases % %%%%%%%%%%%%%% % Motorola - Red and Green buttons S=Macro(Answer); E=Macro(Cancel); % SE's - SwitchOff and C buttons c=Macro(Answer); L=Macro(Cancel); p=Macro(Cancel); % Sagem - Red and Green buttons 83=Macro(Answer); 69=Macro(Cancel); % Sockets & Sagem 42=Macro(*) 35=Macro(#) 48=Macro(0) 49=Macro(1) 50=Macro(2) 51=Macro(3) 52=Macro(4) 53=Macro(5) 54=Macro(6) 55=Macro(7) 56=Macro(8) 57=Macro(9) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/bmp.cfg0000644000232200023220000000331512073567673022233 0ustar debalancedebalance% % anyremote configuration file for BMP management (AT-mode) % prerequisites: xmmsctrl package % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=BMP GuiAppBinary=beep-media-player GuiAppRun=echo 'P=`ps -ef|grep beep-media-player|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=beep-media-player.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=The Beep Media Player is a free audio player, based on the XMMS multimedia player. [Protocol]=AT (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=Make(var,bmp_volume,by_value,-1);Exec(sh -c "if xmmsctrl running;then xmmsctrl play;else beep-media-player& fi") (Disconnect)=Exec(xmmsctrl pause);Exec(kdialog --msgbox Disconnected) Answer=Make(disconnect); Cancel=Exec(xmmsctrl quit); 1=Exec(xmmsctrl vol -5) 2=Make(var,bmp_volume,echo 'if [ "x$(bmp_volume)" == "x-1" ]; then xmmsctrl print %v; xmmsctrl vol 0; else xmmsctrl vol $(bmp_volume); echo "-1"; fi;'|bash -f -s) 3=Exec(xmmsctrl vol +5) 4=Exec(xmmsctrl time -10) 5=Exec(sh -c "if xmmsctrl playing;then xmmsctrl stop;else xmmsctrl play; fi") 6=Exec(xmmsctrl time +10) 7=Exec(xmmsctrl prev) 8=Exec(xmmsctrl stop) 9=Exec(xmmsctrl next) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Rew 5 - Play/Stop 6 - FF" >> $F;echo "7 - Prev 8 - Stop 9 - Next" >> $F;echo "* * - Help 0 - Pause # - Quit" >> $F;kdialog -passivepopup "`cat $F`" 7' |bash -f -s) * #=Exec(sh -c "if xmmsctrl running;then xmmsctrl quit;else beep-media-player& fi") 0=Exec(xmmsctrl pause) #=Exec(xmmsctrl quit) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/xmms.cfg0000644000232200023220000000417612061426046022430 0ustar debalancedebalance% % anyremote configuration file for XMMS management. % prerequisites: xmmsctrl package % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=XMMS GuiAppBinary=xmms GuiAppRun=echo 'P=`ps -ef|grep xmms|grep -v xmms2|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=xmms.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=XMMS is a multimedia player for unix systems. XMMS stands for X MultiMedia System and can play media files such as MP3, MOD's, WAV and others with the use of Input plugins. [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE);\ Exec(echo 'P=`which xmmsctrl|grep xmmsctrl|grep -v no|wc -l|tr -d " "`;if [ "x$P" == "x1" ]; then true; else $(CfgDir)/Utils/message.sh "ERROR: xmmsctrl package is not installed"; fi'|bash -f -s); (Connect)=\ Make(var,xmms_volume,by_value,-1);\ Exec(sh -c "if xmmsctrl running;then xmmsctrl play;else xmmsctrl launch; fi"); (Disconnect)=\ Exec(xmmsctrl pause); Answer=\ Make(disconnect); Cancel=\ Exec(xmmsctrl quit);\ Make(exit); %InCall($$)=\ % Exec(xmmsctrl pause;kdialog --msgbox "$(Param)");\ % Make(remote,off); %EndCall($$)=\ % Make(remote,on);\ % Exec(xmmsctrl play) 1=Exec(xmmsctrl vol -5) 2=Make(var,xmms_volume,echo 'if [ "x$(xmms_volume)" == "x-1" ]; then xmmsctrl print %v; xmmsctrl vol 0; else xmmsctrl vol $(xmms_volume); echo "-1"; fi;'|bash -f -s) 3=Exec(xmmsctrl vol +5) 4=Exec(xmmsctrl time -10) 5=Exec(sh -c "if xmmsctrl playing;then xmmsctrl stop;else xmmsctrl play; fi") 6=Exec(xmmsctrl time +10) 7=Exec(xmmsctrl prev) 8=Exec(xmmsctrl stop) 9=Exec(xmmsctrl next) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Rew 5 - Play/Stop 6 - FF" >> $F;echo "7 - Prev 8 - Stop 9 - Next" >> $F;echo "* * - Help 0 - Pause # - Quit" >> $F;echo "* # - Run/Quit" >> $F;kdialog -passivepopup "`cat $F`" 7' |bash -f -s) * #=Exec(sh -c "if xmmsctrl running;then xmmsctrl quit;else xmmsctrl launch; fi") 0=Exec(xmmsctrl pause) #=Exec(xmmsctrl quit) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/xfmedia.cfg0000644000232200023220000000326112073567673023072 0ustar debalancedebalance% % anyremote configuration file for Xfmedia (http://spuriousinterrupt.org/projects/xfmedia) % management (AT-mode) % % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=xfmedia GuiAppBinary=xfmedia GuiAppRun=echo 'P=`ps -ef|grep xfmedia| grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=xfmedia.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Xfmedia is a simple, easy-to-use media player based on the xine engine. [Protocol]=AT Answer=Make(disconnect); Cancel=Exec(pkill xfmedia); (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=Exec(echo 'P=`ps -ef|grep xfmedia| grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" == "x" ]; then xfmedia & fi'|bash -f -s); 1=Macro(DEFAULT_VOLUME_DOWN) 2=Macro(DEFAULT_TOGGLE_MUTE) 3=Macro(DEFAULT_VOLUME_UP) 4=Exec(xfmedia-remote --previous); 5=Exec(xfmedia-remote -p); 6=Exec(xfmedia-remote --next); 7=Macro(4) 8=Exec(xfmedia-remote --stop); 9=Macro(6) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 Vol-">$F;echo "2 Mute">>$F;echo "3 Vol+">>$F;echo "4 Previous">>$F;echo "5 Play">>$F;echo "6 Next">>$F;echo "7 Previous">>$F;echo "8 Stop">>$F;echo "9 Next">>$F;echo "* * Help">>$F;echo "0 Pause">>$F;echo "# Quit">>$F;echo "* # Run/Quit">>$F;kdialog -passivepopup "`cat $F`" 7'|bash -f -s) * #=Exec(echo 'P=`ps -ef|grep xfmedia| grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" == "x" ]; then xfmedia & else pkill xfmedia; fi'|bash -f -s) 0=Exec(xfmedia-remote --pause); #=Exec(pkill xfmedia) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/noatun.cfg0000644000232200023220000000435212073567673022763 0ustar debalancedebalance% % anyremote configuration file for Noatun management. % prerequisites: KDE, Noatun % playlist should be already created ! % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Noatun GuiAppBinary=noatun GuiAppRun=echo 'A=`dcop 2> /dev/null|grep noatun`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=noatun.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=The super-modular media player for KDE. GuiAppVersion=echo 'V=`noatun -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s % 1 - vol- % 2 - mute % 3 - vol+ % 4 - rewind % 5 - play % 6 - fast forward % 7 - previous % 8 - stop % 9 - next % 0 - pause % # - quit from noatun [Protocol]=AT Answer=Make(disconnect); Cancel=Exec(dcop noatun MainApplication-Interface quit); (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Make(var,Device,by_value,/dev/rfcomm0);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect) =Exec(noatun) (Disconnect)=Exec(dcop noatun Noatun playpause;kdialog --msgbox "Disconnected ... Set to pause") 1=Exec(dcop noatun Noatun volumeDown) 2=Exec(dcop noatun Noatun toggleMute) 3=Exec(dcop noatun Noatun volumeUp) 4=Exec(echo 'P=`dcop noatun Noatun position`;N=`expr $P - 5000`;dcop noatun Noatun skipTo $N'|bash -f -s) 5=Exec(dcop noatun Noatun play) 6=Exec(echo 'P=`dcop noatun Noatun position`;N=`expr $P + 5000`;dcop noatun Noatun skipTo $N'|bash -f -s) 7=Exec(dcop noatun Noatun back) 8=Exec(dcop noatun Noatun stop) 9=Exec(dcop noatun Noatun forward) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Rew 5 - Play 6 - FF" >> $F;echo "7 - Prew 8 - Stop 9 - Next" >> $F;echo "** - Help 0 - Pause # - Quit" >> $F;echo "*# - Run/Quit" >> $F;kdialog -passivepopup "`cat $F`" 7' |bash -f -s) * #=Exec(echo 'P=`dcop|grep noatun`; if [ "x$P" == "x" ]; then noatun& else dcop noatun MainApplication-Interface quit; fi' |bash -f -s) 0=Exec(dcop noatun Noatun playpause) #=Exec(dcop noatun MainApplication-Interface quit) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/kview.cfg0000644000232200023220000000437512073567673022611 0ustar debalancedebalance% % anyremote configuration file for kview management. % % Needs $PHOTO_DIR environment variable % % STATUS good % XTEST yes % SOUND no % ENV yes GuiAppName=Kview GuiAppBinary=kview GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kview`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kview.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=KView is an image viewer program for the KDE (a part of the KDE Graphics package) GuiAppVersion=echo 'V=`kview -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=AT (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Make(var,Device,by_value,/dev/rfcomm0);\ Exec(echo 'if [ "x$PHOTO_DIR" == "x" ]; then $(CfgDir)/Utils/message.sh "ERROR: PHOTO_DIR environment variable is not set !"; fi'|bash -f -s);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); % aliased keys Answer=Make(disconnect); Cancel=Exec(echo 'KVIEW=`dcop|grep kview`;dcop $KVIEW MainApplication-Interface quit'|bash -f -s); (Connect)=Exec(echo 'PIX=`ls -1 $PHOTO_DIR|head -1`;kview $PHOTO_DIR/$PIX --nocrashhandler &'|bash -f -s) 1=Exec(echo 'PIX=`ls -1 $PHOTO_DIR|head -1`;kview $PHOTO_DIR/$PIX --nocrashhandler &'|bash -f -s) 4=Emulate(keydown,Shift_L,key,Left,keyup,Shift_L) %5=Exec(echo 'K=`dcop|grep kview`;dcop $K KView maximize'|bash -f -s) 5=Exec(echo 'K=`dcop|grep kview`;dcop $K KView activateAction fullscreen'|bash -f -s) 6=Emulate(keydown,Shift_L,key,Right,keyup,Shift_L) 7=Emulate(keydown,Control_L,key,minus,keyup,Control_L) %8=Exec(echo 'K=`dcop|grep kview`;dcop $K KView setGeometry 300 150 800 600'|bash -f -s) 9=Emulate(keydown,Control_L,key,KP_Add,keyup,Control_L) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Run kview " > $F;echo "4 - Previous 5 - Toggle Full Screen 6 - Next " >> $F;echo "7 - Size - 9 - Size +" >> $F;echo "* * - Help # - Quit" >> $F; kdialog -passivepopup "`cat $F`" 7' |bash -f -s) #=Exec(echo 'K=`dcop|grep kview`;dcop $K MainApplication-Interface quit'|bash -f -s) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/xineForDvd.cfg0000644000232200023220000000334612073567673023531 0ustar debalancedebalance% % anyremote configuration file for xine management. % prerequisites: amixer/pactl utility % % based on cfg-file from Domjan Svilkovic % % STATUS unknown % XTEST yes % SOUND mixer % ENV no GuiAppName=XineDVD GuiAppBinary=xine GuiAppRun=echo 'A=`ps -ef|grep xine|grep -v xinetd|grep -v grep|grep -v edit`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=xine.png GuiAppType=Example GuiAppProtocols=AT GuiAppDesc=Xine is a free multimedia player. It plays back CDs, DVDs, and VCDs. This configuration file tuned to play DVD with xine. [Protocol]=AT (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); Answer=SendCKPD(E);Make(disconnect); Cancel=Exec(killall xine);SendCKPD(E); (Connect)=Exec(xine dvd://1 --fullscreen) 1=Macro(DEFAULT_VOLUME_DOWN) 2=Macro(DEFAULT_TOGGLE_MUTE) 3=Macro(DEFAULT_VOLUME_UP) 4=Emulate(key,Down) 5=Emulate(key,Return) 6=Emulate(key,Up) 7=Emulate(key,Left) 8=Emulate(keydown,Shift_L,key,S,keyup,Shift_L) 9=Emulate(key,Right'=) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Slower 5 - Play 6 - FF" >> $F;echo "7 - Prew 8 - Stop 9 - Next" >> $F;echo "* - Help 0 - Pause # - Quit" >> $F;echo "* N - start from chapter N (1-9)" >> $F);\ Macro(SHOW_HELP); * 1=Exec(xine dvd://1 --fullscreen) * 2=Exec(xine dvd://2 --fullscreen) * 3=Exec(xine dvd://3 --fullscreen) * 4=Exec(xine dvd://4 --fullscreen) * 5=Exec(xine dvd://5 --fullscreen) * 6=Exec(xine dvd://6 --fullscreen) * 7=Exec(xine dvd://7 --fullscreen) * 8=Exec(xine dvd://8 --fullscreen) * 9=Exec(xine dvd://9 --fullscreen) 0=Emulate(key,space) #=Exec(killall xine) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/kplayer-kde3.cfg0000644000232200023220000000460712073567673023755 0ustar debalancedebalance% % anyremote configuration file for kplayer management. % % STATUS stable % TODO how to start playing and choose the playlist ? % XTEST no % SOUND app % ENV no GuiAppName=Kplayer GuiAppBinary=kplayer GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kplayer`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kplayer.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=KPlayer is a KDE multimedia player. GuiAppVersion=echo 'V=`kplayer -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=AT % aliased keys Answer=Make(disconnect); Cancel=Exec(dcop kplayer MainApplication-Interface quit); (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Make(var,Device,by_value,/dev/rfcomm0);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Exec(echo 'P=`dcop|grep kplayer`; if [ "x$P" == "x" ]; then kplayer& fi' |bash -f -s) 1=Exec(dcop kplayer kplayer-mainwindow#1 activateAction audio_volume_down) 2=Exec(dcop kplayer kplayer-mainwindow#1 activateAction audio_mute) 3=Exec(dcop kplayer kplayer-mainwindow#1 activateAction audio_volume_up) 4=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_backward) 5=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_next;dcop kplayer kplayer-mainwindow#1 activateAction player_play) 6=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_forward) 7=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_previous) 8=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_stop) 9=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_next) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Rew 5 - Play 6 - FF" >> $F;echo "7 - Prew 8 - Stop 9 - Next" >> $F;echo "* * - Help 0 - Pause # - Kill" >> $F;kdialog -passivepopup "`cat $F`" 7' |bash -f -s) * #=Exec(echo 'P=`dcop|grep kplayer`; if [ "x$P" == "x" ]; then kplayer; dcop kplayer kplayer-mainwindow#1 activateAction view_full_screen; else dcop kplayer MainApplication-Interface quit; fi' |bash -f -s) 0=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_pause) #=Exec(dcop kplayer MainApplication-Interface quit ) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/juk-kde3.cfg0000644000232200023220000000451212073567673023072 0ustar debalancedebalance% % anyremote configuration file for Juk management (AT-mode) % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Juk GuiAppBinary=juk GuiAppRun=echo 'A=`dcop 2> /dev/null|grep juk`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=juk.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=JuK is a free software audio player for KDE, part of the kdemultimedia package. JuK supports collections of MP3, Ogg Vorbis, and FLAC audio files. This configuration file is for Juk/KDE3. GuiAppVersion=echo 'V=`juk -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=AT (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Make(var,Device,by_value,/dev/rfcomm0);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Make(var,juk_volume,by_value,-1);\ Exec(echo 'A=`dcop|grep juk`; if [ "x$A" == "x" ]; then juk; fi'|bash -f -s); Cancel=Exec(dcop juk MainApplication-Interface quit); 1=Exec(dcop juk Player volumeDown) %2=Exec(dcop juk Player mute) -- does not unmute 2=Make(var,juk_volume,echo 'if [ "x$(juk_volume)" == "x-1" ]; then dcop juk Player volume;dcop juk Player setVolume 0; else dcop juk Player setVolume $(juk_volume); echo "-1"; fi;'|bash -f -s) 3=Exec(dcop juk Player volumeUp) %4=Exec(dcop juk Player seekBack) %6=Exec(dcop juk Player seekForward) 4=Exec(echo 'T=`dcop juk Player currentTime`;T2=`expr $T - 5`;dcop juk Player seek $T2'| bash -f -s); 5=Exec(dcop juk Player play); 6=Exec(echo 'T=`dcop juk Player currentTime`;T2=`expr $T + 5`;dcop juk Player seek $T2'| bash -f -s); 7=Exec(dcop juk Player back); 8=Exec(dcop juk Player stop); 9=Exec(dcop juk Player forward); * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Rew 5 - Play 6 - FF" >> $F;echo "7 - Prew 8 - Stop 9 - Next" >> $F;echo "* 0 - Pause # - Quit" >> $F;kdialog -passivepopup "`cat $F`" 7' |bash -f -s) * #=Exec(echo 'P=`dcop|grep juk`; if [ "x$P" == "x" ]; then juk; else dcop juk MainApplication-Interface quit; fi'|bash -f -s); 0=Exec(dcop juk Player playPause); #=Exec(dcop juk MainApplication-Interface quit); [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/kuickshow.cfg0000644000232200023220000000547012073567673023470 0ustar debalancedebalance% % anyremote configuration file for kuickshow management. % % Needs $PHOTO_DIR environment variable % % There were found no DCOP-oriented way to traverse the albums and photos, % so XTest is used % % STATUS stable % XTEST yes % SOUND no % ENV yes GuiAppName=Kuickshow GuiAppBinary=kuickshow GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kuickshow`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kuickshow.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=KuickShow is an image browser/viewer GuiAppVersion=echo 'V=`kuickshow -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=AT ZOOM=Macro(5) (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Make(var,Device,by_value,/dev/rfcomm0);\ Exec(echo 'if [ "x$PHOTO_DIR" == "x" ]; then $(CfgDir)/Utils/message.sh "ERROR: PHOTO_DIR environment variable is not set !"; fi'|bash -f -s);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); % aliased keys Answer=Make(disconnect); Cancel=Exec(echo 'KS=`dcop|grep kuickshow`;dcop $KS MainApplication-Interface quit'|bash -f -s); (Connect)=Macro(KUICKSHOW_RUN); KUICKSHOW_RUN=Exec(kuickshow $PHOTO_DIR&);Emulate(sleep,5000,key,Tab,sleep,500,key,Tab) 1=Macro(KUICKSHOW_RUN); 2=Emulate(key,Up) 3=Exec(echo 'KS=`dcop|grep kuickshow`;dcop $KS kuickshow activateAction up'|bash -f -s) 4=Emulate(key,Left) 5=Make(mode,Fullscreen);Exec(echo 'KS=`dcop|grep kuickshow`;dcop $KS kuickshow activateAction kuick_showFullscreen'|bash -f -s) 6=Emulate(key,Right) 8=Emulate(key,Down) 9=Emulate(key,Return) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Run kuickshow 2 - Up 3 - Up Dir" > $F;echo "4 - Left 5 - Full Screen 6 - Right" >> $F;echo "7 8 - Down 9 - Into Dir" >> $F;echo "* * - Help 0 # - Quit" >> $F; kdialog -passivepopup "`cat $F`" 7' |bash -f -s) #=Exec(echo 'KS=`dcop|grep kuickshow`;dcop $KS MainApplication-Interface quit'|bash -f -s) [Mode]=Fullscreen % empty values to override default mode 1=Make(none) 2=Make(none) 3=Make(none) % Prev/Fullscreen off/Next 4=Emulate(key,Page_Up) 5=Make(mode,default);Emulate(key,Escape) 6=Emulate(key,Page_Down) % Size +/ /- 7=Emulate(key,minus) 8=Make(none) 9=Emulate(keydown,Shift_L,key,plus,keyup,Shift_L) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 2 3" > $F;echo "4 - Previous 5 - Full Screen Off 6 - Next" >> $F;echo "7 - Size - 8 9 - Size +" >> $F;echo "* * - Help 0 # - Quit" >> $F; kdialog -passivepopup "`cat $F`" 7' |bash -f -s) [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/xdtv.cfg0000644000232200023220000000502012073567673022435 0ustar debalancedebalance% % anyremote configuration file for xdtv management. (AT-mode) % prerequisites: xdtv, xdtv_cmd, amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=XdTV GuiAppBinary=xdtv GuiAppRun=echo 'P=`ps -ef|grep xdtv|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=xdtv.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=XdTV is a software to watch, record and stream TV [Protocol]=AT Answer=SendCKPD(E);Make(disconnect); Cancel=Exec(xdtv_cmd quit);SendCKPD(E); (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=Exec(echo 'P=`ps -ef|grep xdtv|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then xdtv -capt_width 720 -capt_height 576& fi' |bash -f -s) %XDTV_VOLDN=Exec(xdtv_cmd "volume dec") %XDTV_MUTE=Exec(xdtv_cmd "volume tvmute") %XDTV_VOLUP=Exec(xdtv_cmd "volume inc") XDTV_VOLDN=Macro(DEFAULT_VOLUME_DOWN) XDTV_MUTE=Macro(DEFAULT_TOGGLE_MUTE) XDTV_VOLUP=Macro(DEFAULT_VOLUME_UP) XDTV_CHDN=Exec(xdtv_cmd "setchannel prev"); XDTV_ZOOM=Exec(xdtv_cmd fullscreen) XDTV_CHUP=Exec(xdtv_cmd "setchannel next"); 0=Exec(xdtv_cmd "keypad 0"); 1=Exec(xdtv_cmd "keypad 1"); 2=Exec(xdtv_cmd "keypad 2"); 3=Exec(xdtv_cmd "keypad 3"); 4=Exec(xdtv_cmd "keypad 4"); 5=Exec(xdtv_cmd "keypad 5"); 6=Exec(xdtv_cmd "keypad 6"); 7=Exec(xdtv_cmd "keypad 7"); 8=Exec(xdtv_cmd "keypad 8"); 9=Exec(xdtv_cmd "keypad 9"); * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "Press numeric buttons to choose channel">$F;echo "* # - Run/Quit">>$F;echo "# - to switch mode">>$F;kdialog -passivepopup "`cat $F`" 7'|bash -f -s) * #=Exec(echo 'D=`ps -ef|grep xdtv|grep -v anyremote`; if [ "x$D" == "x" ]; then xdtv -capt_width 720 -capt_height 576 & else xdtv_cmd quit; fi;'|bash -f -s) #=Make(mode,xdtv2); [Mode]=xdtv2 1=Macro(XDTV_VOLDN) 2=Macro(XDTV_MUTE) 3=Macro(XDTV_VOLUP) 4=Macro(XDTV_CHDN) 5=Macro(XDTV_ZOOM) 6=Macro(XDTV_CHUP) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Vol-">$F;echo "2 - Mute">>$F;echo "3 - Vol+">>$F;echo "4 - Ch-">>$F;echo "5 - Fullscreen">>$F;echo "6 - Ch +">>$F;echo "** - Help">>$F;echo "# - switch mode">>$F;kdialog -passivepopup "`cat $F`" 7'|bash -f -s) #=Make(mode,default) [ModeEnd] %%%%%%%%%%%%%% % % Key aliases % %%%%%%%%%%%%%% VOLUMEDOWN=Macro(XDTV_VOLDN) MIN_INTERESTING=Macro(XDTV_MUTE) VOLUMEUP=Macro(XDTV_VOLUP) CHANNELUP=Macro(XDTV_CHUP) CHANNELDOWN=Macro(XDTV_CHDN) ZOOM=Macro(XDTV_ZOOM) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/amarok-kde3.cfg0000644000232200023220000000460112073567673023552 0ustar debalancedebalance% % anyremote configuration file for amarok management. % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Amarok GuiAppBinary=amarok GuiAppRun=echo 'A=`dcop 2> /dev/null|grep amarok`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=amarok.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration file is for Amarok/KDE3. GuiAppVersion=echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=AT Answer=SendCKPD(E);Make(disconnect); Cancel=Exec(dcop amarok MainApplication-Interface quit);SendCKPD(E); (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Make(var,Device,by_value,/dev/rfcomm0);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Exec(echo 'A=`dcop|grep amarok`; if [ "x$A" == "x" ]; then amarok 2> /dev/null; fi' | bash -f -s);\ Make(var,am_volume,dcop amarok player getVolume);\ 1=Exec(dcop amarok player volumeDown) %2=Exec(dcop amarok player mute) -- only mutes with amarok 1.4.8 2=Make(var,am_volume,echo 'if [ "x$(am_volume)" == "x-1" ]; then dcop amarok player getVolume;dcop amarok player setVolume 0; else dcop amarok player setVolume $(am_volume); echo "-1"; fi;'|bash -f -s) 3=Exec(dcop amarok player volumeUp) 4=Exec(dcop amarok player seekRelative -10) 5=Exec(dcop amarok player play) 6=Exec(dcop amarok player seekRelative 10) 7=Exec(dcop amarok player prev) 8=Exec(dcop amarok player stop) 9=Exec(dcop amarok player next) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Rew 5 - Play 6 - FF" >> $F;echo "7 - Prew 8 - Stop 9 - Next" >> $F;echo "* * Help 0 - Pause # - Quit" >> $F;kdialog -passivepopup "`cat $F`" 7' |bash -f -s) * #=Exec(echo 'P=`dcop|grep amarok`; if [ "x$P" == "x" ]; then amarok 2> /dev/null; else dcop amarok MainApplication-Interface quit; fi'|bash -f -s); 0=Exec(dcop amarok player pause) #=Exec(dcop amarok MainApplication-Interface quit) CHANNELUP=Macro(9) CHANNELDOWN=Macro(7) ZOOM=Macro(5) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/kmplayer-kde3.cfg0000644000232200023220000000637212073567673024133 0ustar debalancedebalance% % anyremote configuration file for kmplayer management. % prerequisites: KDE, kmplayer, amixer utility (example is for soundcard) % $MOVIE_DIR environment variable % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Kmplayer GuiAppBinary=kmplayer GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kmplayer`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kmplayer.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Media Player for KDE GuiAppVersion=echo 'V=`kmplayer -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=AT (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Make(var,Device,by_value,/dev/rfcomm0);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s);\ Exec(echo 'if [ "x$MOVIE_DIR" == "x" ]; then $(CfgDir)/Utils/message.sh "ERROR: MOVIE_DIR environment variable is not set !"; fi'|bash -f -s); Cancel=\ Exec(echo 'K=`dcop|grep kmplayer`;dcop $K MainApplication-Interface quit'|bash -f -s);\ SendCKPD(E); KLAYER_RESET=Make(var,kmplayer_list,by_value);\ Exec(echo 'K=`dcop|grep kmplayer`;if [ "x$K" == "x" ]; then kmplayer& fi;'|bash -f -s) (Connect)=Macro(KLAYER_RESET) 1=Exec(amixer sset Master,0 5%- -q) 2=Exec(amixer sset Master,0 toggle -q) 3=Exec(amixer sset Master,0 5%+ -q) 4=Exec(echo 'K=`dcop|grep kmplayer`;POS=`dcop $K KMediaPlayer position`;NEWPOS=`expr $POS - 10000`;dcop $K KMediaPlayer seek $NEWPOS'|bash -f -s) 5=Make(var,kmplayer_list,echo 'K=`dcop|grep kmplayer`;P=`dcop $K KMediaPlayer isPlaying`; if [ "x$P" == "xtrue" ]; then true; else NUM=$(kmplayer_list);if [ "x$(kmplayer_list)" == "x" ]; then NUM=1; fi; dcop $K KMediaPlayer openURL `find $MOVIE_DIR -type f|head -$NUM|tail -1`;echo $NUM; fi'|bash -f -s|tail -1) 6=Exec(echo 'K=`dcop|grep kmplayer`;POS=`dcop $K KMediaPlayer position`;NEWPOS=`expr $POS + 10000`;dcop $K KMediaPlayer seek $NEWPOS'|bash -f -s) 7=Make(var,kmplayer_list,echo 'K=`dcop|grep kmplayer`;if [ "x$(kmplayer_list)" == "x" ] || [ "x$(kmplayer_list)" == "x0" ] || [ "x$(kmplayer_list)" == "x1" ]; then NUM=1; else NUM=`expr $(kmplayer_list) - 1`; fi; dcop $K KMediaPlayer openURL `find $MOVIE_DIR -type f|head -$NUM|tail -1`;echo $NUM'|bash -f -s|tail -1) 8=Exec(dcop `dcop|grep kmplayer` KMediaPlayer stop) 9=Make(var,kmplayer_list,echo 'K=`dcop|grep kmplayer`;if [ "x$(kmplayer_list)" == "x" ]; then NUM=1; else NUM=`expr $(kmplayer_list) + 1`;fi; dcop $K KMediaPlayer openURL `find $MOVIE_DIR -type f|head -$NUM|tail -1`;echo $NUM'|bash -f -s|tail -1) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+ " > $F;echo "4 - Rew 5 - Play 6 - FF" >> $F;echo "7 - Prew 8 - Stop 9 - Next" >> $F;echo "* * - Help 0 - Pause # - Quit" >> $F;kdialog -passivepopup "`cat $F`" 7' |bash -f -s) * 1=Macro(KLAYER_RESET) * #=Exec(echo 'K=`dcop|grep kmplayer`;if [ "x$K" == "x" ]; then kmplayer& else dcop $K MainApplication-Interface quit; fi;'|bash -f -s) 0=Exec(dcop `dcop|grep kmplayer` KMediaPlayer pause) #=Exec(echo 'K=`dcop|grep kmplayer`;dcop $K MainApplication-Interface quit'|bash -f -s) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/multimode.cfg0000644000232200023220000000702712073567673023460 0ustar debalancedebalance% % anyremote configuration file. Multi-mode example (AT-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Multimode test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=AT GuiAppDesc=Simple example of how to use multiple modes. [End] [Protocol]=AT (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); % aliased keys Answer=Make(disconnect); * * =Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "Just press buttons and inspect results" > $F;echo "Switch between modes * + " >> $F);\ Macro(SHOW_HELP); % Default mode 1=Exec($(CfgDir)/Utils/message.sh Default_1) 2=Exec($(CfgDir)/Utils/message.sh Default_2) 3=Exec($(CfgDir)/Utils/message.sh Default_3) 4=Exec($(CfgDir)/Utils/message.sh Default_4) 5=Exec($(CfgDir)/Utils/message.sh Default_5) 6=Exec($(CfgDir)/Utils/message.sh Default_6) 7=Exec($(CfgDir)/Utils/message.sh Default_7) 8=Exec($(CfgDir)/Utils/message.sh Default_8) 9=Exec($(CfgDir)/Utils/message.sh Default_9) 0=Exec($(CfgDir)/Utils/message.sh Default_0) * 1=Make(mode,1);Exec($(CfgDir)/Utils/message.sh "New mode is $(Mode)") * 2=Make(mode,2);Exec($(CfgDir)/Utils/message.sh "New mode is $(Mode)") * 3=Make(mode,3);Exec($(CfgDir)/Utils/message.sh "New mode is $(Mode)") * 4=Make(mode,4);Exec($(CfgDir)/Utils/message.sh "New mode is $(Mode)") * 5=Exec($(CfgDir)/Utils/message.sh "Use 1-4,# to set mode") * 6=Exec($(CfgDir)/Utils/message.sh "Use 1-4,# to set mode") * 7=Exec($(CfgDir)/Utils/message.sh "Use 1-4,# to set mode") * 8=Exec($(CfgDir)/Utils/message.sh "Use 1-4,# to set mode") * 9=Exec($(CfgDir)/Utils/message.sh "Use 1-4,# to set mode") * 0=Exec($(CfgDir)/Utils/message.sh "Use 1-4,# to set mode") * #=Make(mode,default);Exec($(CfgDir)/Utils/message.sh "New mode is $(Mode)") [Mode]=1 1=Exec($(CfgDir)/Utils/message.sh Mode1_1) 2=Exec($(CfgDir)/Utils/message.sh Mode1_2) 3=Exec($(CfgDir)/Utils/message.sh Mode1_3) 4=Exec($(CfgDir)/Utils/message.sh Mode1_4) 5=Exec($(CfgDir)/Utils/message.sh Mode1_5) 6=Exec($(CfgDir)/Utils/message.sh Mode1_6) 7=Exec($(CfgDir)/Utils/message.sh Mode1_7) 8=Exec($(CfgDir)/Utils/message.sh Mode1_8) 9=Exec($(CfgDir)/Utils/message.sh Mode1_9) 0=Exec($(CfgDir)/Utils/message.sh Mode1_0) [ModeEnd] [Mode]=2 1=Exec($(CfgDir)/Utils/message.sh Mode2_1) 2=Exec($(CfgDir)/Utils/message.sh Mode2_2) 3=Exec($(CfgDir)/Utils/message.sh Mode2_3) 4=Exec($(CfgDir)/Utils/message.sh Mode2_4) 5=Exec($(CfgDir)/Utils/message.sh Mode2_5) 6=Exec($(CfgDir)/Utils/message.sh Mode2_6) 7=Exec($(CfgDir)/Utils/message.sh Mode2_7) 8=Exec($(CfgDir)/Utils/message.sh Mode2_8) 9=Exec($(CfgDir)/Utils/message.sh Mode2_9) 0=Exec($(CfgDir)/Utils/message.sh Mode2_0) [ModeEnd] [Mode]=3 1=Exec($(CfgDir)/Utils/message.sh Mode3_1) 2=Exec($(CfgDir)/Utils/message.sh Mode3_2) 3=Exec($(CfgDir)/Utils/message.sh Mode3_3) 4=Exec($(CfgDir)/Utils/message.sh Mode3_4) 5=Exec($(CfgDir)/Utils/message.sh Mode3_5) 6=Exec($(CfgDir)/Utils/message.sh Mode3_6) 7=Exec($(CfgDir)/Utils/message.sh Mode3_7) 8=Exec($(CfgDir)/Utils/message.sh Mode3_8) 9=Exec($(CfgDir)/Utils/message.sh Mode3_9) 0=Exec($(CfgDir)/Utils/message.sh Mode3_0) [ModeEnd] [Mode]=4 1=Exec($(CfgDir)/Utils/message.sh Mode4_1) 2=Exec($(CfgDir)/Utils/message.sh Mode4_2) 3=Exec($(CfgDir)/Utils/message.sh Mode4_3) 4=Exec($(CfgDir)/Utils/message.sh Mode4_4) 5=Exec($(CfgDir)/Utils/message.sh Mode4_5) 6=Exec($(CfgDir)/Utils/message.sh Mode4_6) 7=Exec($(CfgDir)/Utils/message.sh Mode4_7) 8=Exec($(CfgDir)/Utils/message.sh Mode4_8) 9=Exec($(CfgDir)/Utils/message.sh Mode4_9) 0=Exec($(CfgDir)/Utils/message.sh Mode4_0) [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/kscd-kde3.cfg0000644000232200023220000000430112073567673023221 0ustar debalancedebalance% % anyremote configuration file for kscd management. % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Kscd GuiAppBinary=kscd GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kscd`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=kscd.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=KsCD is a small, fast, CDDB enabled audio CD player for UNIX platforms. This configuration file is for KsCD/KDE3. GuiAppVersion=echo 'V=`kscd -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=AT Answer=Make(disconnect); Cancel=Exec(dcop kscd MainApplication-Interface quit); (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Make(var,Device,by_value,/dev/rfcomm0);\ Exec(echo 'V=`kscd -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s);\ (Connect)=Make(var,kscd_volume,by_value,-1);Exec(kscd) 1=Exec(dcop kscd CDPlayer volumeDown) 2=Make(var,kscd_volume,echo 'if [ "x$(kscd_volume)" == "x-1" ]; then dcop kscd CDPlayer getVolume; dcop kscd CDPlayer setVolume 0; else dcop kscd CDPlayer setVolume $(kscd_volume);echo "-1"; fi;'|bash -f -s) 3=Exec(dcop kscd CDPlayer volumeUp) 4=Exec(echo 'POS=`dcop kscd CDPlayer currentPosition`;NEWPOS=`expr $POS - 5000`;dcop kscd CDPlayer jumpTo $NEWPOS' | bash -f -s) 5=Exec(dcop kscd CDPlayer play) 6=Exec(echo 'POS=`dcop kscd CDPlayer currentPosition`;NEWPOS=`expr $POS + 5000`;dcop kscd CDPlayer jumpTo $NEWPOS' | bash -f -s) 7=Exec(dcop kscd CDPlayer previous) 8=Exec(dcop kscd CDPlayer stop) 9=Exec(dcop kscd CDPlayer next) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+"> $F;echo "2 - Rew 5 - Play 6 - FF">> $F;echo "7 - Prew 8 - Stop 9 - Next">> $F;echo "** Help 0 # - Quit">> $F;echo "*# Run/Quit">> $F;kdialog -passivepopup "`cat $F`" 7' |bash -f -s) * #=Exec(echo 'P=`dcop | grep kscd`; if [ "x$P" == "x" ]; then kscd& dcop kscd CDPlayer play; else dcop kscd MainApplication-Interface quit; fi' |bash -f -s) #=Exec(dcop kscd MainApplication-Interface quit) [End] anyremote-6.7.1/cfg-data/obsoleted/AT-mode/freevo.cfg0000644000232200023220000000276112120355622022725 0ustar debalancedebalance% % anyremote configuration file for Freevo. (AT-mode) % prerequisites xterm % % STATUS stable % XTEST yes % SOUND app % ENV no GuiAppName=Freevo GuiAppBinary=freevo GuiAppRun=echo 'A=`ps -ef|grep freevo|grep main.py|grep -v grep`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=freevo.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Freevo is a Home theatre platform. It allows you to manage your entire digital media collection - music, videos, photos etc. [Protocol]=AT (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=Make(mode,freevo); FREEVO_MUTE =Emulate(key,F3) FREEVO_VOLUMEDOWN=Emulate(key,n) FREEVO_VOLUMEUP =Emulate(key,m) FREEVO_FULLSCREEN=Emulate(key,z) FREEVO_RUN =Exec(echo 'P=`ps -ef|grep freevo| grep main.py|grep -v grep`; if [ "x$P" == "x" ]; then xterm -geometry "1x1+0+0" -e freevo& fi' |bash -f -s) [Mode]=freevo (EnterMode)=Macro(FREEVO_RUN); 1=Macro(FREEVO_RUN); 2=Emulate(key,Up) 3=Macro(FREEVO_FULLSCREEN) 4=Emulate(key,Left) 5=Emulate(key,Return) 6=Emulate(key,Right) 8=Emulate(key,Down) * *=Exec(echo 'F="$HOME/.anyRemote/anyrem.hlp";echo "1 run freevo" > $F;echo "3 fullscreen" >> $F;echo "Move cursor by 2,4,6,8" >> $F;echo "5 select/enter" >> $F;echo "# - return back" >> $F;kdialog -passivepopup "`cat $F`" 7' |bash -f -s) * 1=Macro(FREEVO_VOLUMEDOWN) * 2=Macro(FREEVO_MUTE) * 3=Macro(FREEVO_VOLUMEUP) #=Emulate(key,Escape); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Bemused-emulation/0000755000232200023220000000000012100017561023074 5ustar debalancedebalanceanyremote-6.7.1/cfg-data/obsoleted/Bemused-emulation/xmms.cfg0000644000232200023220000000537312061426046024561 0ustar debalancedebalance% % anyremote configuration file for xmms management. (Server-mode Bemused emulation) % prerequisites: xmms, Bemused client installed on cell phone % tested with Jam SE 1.3 RC1 % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Xmms GuiAppBinary=xmms GuiAppRun=echo 'P=`ps -ef|grep xmms|grep -v xmms2|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=xmms.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=XMMS is a multimedia player for unix systems. XMMS stands for X MultiMedia System and can play media files such as MP3, MOD's, WAV and others with the use of Input plugins. [Protocol]=Bemused (Init)=Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Exec(echo 'P=`which xmmsctrl|grep xmmsctrl|grep -v no|wc -l|tr -d " "`; if [ "x$P" == "x1" ]; then true; else kdialog --msgbox "ERROR: xmmsctrl package is not installed"; fi'|bash -f -s); (Connect)=Exec(sh -c "if xmmsctrl running;then true;else xmmsctrl launch; fi") EXIT=Exec(xmmsctrl quit) FADE=Exec(xmmsctrl vol 0) FFWD=Exec(xmmsctrl time +10) INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,basename "`xmmsctrl cur`");Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,basename "`xmmsctrl cur`") NEXT=Exec(xmmsctrl next) PAUS=Exec(xmmsctrl pause) PLAY=Exec(sh -c "if xmmsctrl playing;then xmmsctrl stop;else xmmsctrl play; fi") PREV=Exec(xmmsctrl prev) REPT=Exec(xmmsctrl repeat) RWND=Exec(xmmsctrl time -10) SHFL=Exec(xmmsctrl shuffle) STOP=Exec(xmmsctrl stop) VOLM($$)=Exec(xmmsctrl vol $(Param)); GVOL=Send(string,GVOLACK);Make(var,xm_volume,echo 'V=`xmmsctrl print "%v"`;echo "$V*255/100"|bc'|bash -f -s);Send(bytes,$(xm_volume)) %GVOL=Send(string,GVOLNAK) PLEN=ExecAndSend(bytes,xmmsctrl print "%l"|awk '{if($0>255) {b=int($0/256);a=$0-b;} else {b=$0;a=0};s=sprintf("%s,%s",a,b);print s;}'); PLST=Send(string,PLSTACK);\ ExecAndSend(bytes,xmmsctrl print "%P"|awk '{if($0>255) {b=int($0/256);a=$0-b;} else {b=$0;a=0};s=sprintf("%s,%s",a,b);print s;}');\ ExecAndSend(string,xmmsctrl playlist|tr -d ','|tr -s ' '|tr -s '\t'|cut -f2,3,4,5,6,7 -d ' '|sed 's/%20/ /g;s/(/-/g;s/)/-/g');\ Send(bytes,0); %ExecAndSend(string,xmmsctrl playfiles|tr -d '\t'|xargs -i basename {}|sed 's/^/-\n/'); SLCT($$)=Exec(xmmsctrl track `echo "$(Param)+1"|bc`); % The following is a trick. Replays are not real, just to satisfy client. CHCK=Send(string,Y); DINF=Send(string,DINFACK);Send(bytes,0,0,0,244,0,0,32,0,0,0,0,2); DLST=Send(bytes,255,0) DOWN=Send(bytes,0,100);Send(string,NoName) FINF=Send(string,FINFACK);Send(bytes,0,0,0,100); %LIST=Send(bytes,1);Send(string,Root);Send(bytes,0,1,242,0) LIST=Send(bytes,255,0) %SEEK= VERS=Send(string,VERSACK);Send(bytes,1,73); [End] anyremote-6.7.1/cfg-data/obsoleted/Bemused-emulation/noatun.cfg0000644000232200023220000000453412061426046025077 0ustar debalancedebalance% % anyremote configuration file for Noatun management. (Server-mode Bemused emulation) % Prerequisites: Bemused client installed on cell phone % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Noatun GuiAppBinary=noatun GuiAppRun=echo 'A=`dcop 2> /dev/null|grep noatun`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=noatun.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=The super-modular media player for KDE. GuiAppVersion=echo 'V=`noatun -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Bemused (Init)=Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Exec(noatun) EXIT=Exec(dcop noatun MainApplication-Interface quit) FADE=Exec(dcop noatun Noatun setVolume 0) FFWD=Exec(echo 'P=`dcop noatun Noatun position`;N=`expr $P + 5000`;dcop noatun Noatun skipTo $N' | bash -f -s) INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,dcop noatun Noatun title);Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,dcop noatun Noatun title) NEXT=Exec(dcop noatun Noatun forward) PAUS=Exec(dcop noatun Noatun playpause) PLAY=Exec(dcop noatun Noatun play) PREV=Exec(dcop noatun Noatun back) RWND=Exec(echo 'P=`dcop noatun Noatun position`;N=`expr $P - 5000`;dcop noatun Noatun skipTo $N' | bash -f -s) STOP=Exec(dcop noatun Noatun stop) VOLM($$)=Exec(dcop noatun Noatun setVolume $(Param)) %GVOL=Send(string,GVOLNAK) GVOL=Send(string,GVOLACK);Make(var,nt_volume,echo 'V=`dcop noatun Noatun volume`;echo "$V*255/100"|bc'|bash -f -s);Send(bytes,$(nt_volume)) %REPT %SHFL % The following is a trick. Replays are not real, just to satisfy client. CHCK=Send(string,Y); DINF=Send(string,DINFACK);Send(bytes,0,0,0,244,0,0,32,0,0,0,0,2); DLST=Send(bytes,255,0) DOWN=Send(bytes,0,100);Send(string,NoName) FINF=Send(string,FINFACK);Send(bytes,0,0,0,100); GVOL=Send(string,GVOLNAK) LIST=Send(bytes,255,0) PLEN=Send(bytes,0,100) PLST=Send(string,PLSTACK);Send(bytes,0,1,35,10);Send(string,NoName);Send(bytes,10,0) %SEEK= %SLCT= VERS=Send(string,VERSACK);Send(bytes,1,73); [End] anyremote-6.7.1/cfg-data/obsoleted/Bemused-emulation/kplayer-kde3.cfg0000644000232200023220000000520612061426046026063 0ustar debalancedebalance% % anyremote configuration file for kaffeine management. (Server-mode Bemused emulation) % Prerequisites amixer utility, Bemused client installed on cell phone % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Kplayer GuiAppBinary=kplayer GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kplayer`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=kplayer.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=KPlayer is a KDE multimedia player. GuiAppVersion=echo 'V=`kplayer -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Bemused (Init)=Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Exec(kplayer) EXIT=Exec(dcop kplayer MainApplication-Interface quit) FADE=Exec(dcop kplayer kplayer-mainwindow#1 activateAction audio_mute) FFWD=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_forward) INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,dcop kplayer kplayer-mainwindow#1 caption);Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,dcop kplayer kplayer-mainwindow#1 caption); NEXT=Exec(dcop kplayer kplayer-mainwindow#1 activateAction playlist_next) PAUS=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_pause) PLAY=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_play) PREV=Exec(dcop kplayer kplayer-mainwindow#1 activateAction playlist_previous) RWND=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_backward) SHFL=Exec(dcop kplayer kplayer-mainwindow#1 activateAction playlist_shuffle) STOP=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_stop) VOLM($$)=Exec(amixer sset Master,0 $(Param)% -q) %GVOL=Send(string,GVOLNAK) GVOL=Send(string,GVOLACK);Make(var,s_volume,echo 'V=`amixer sget Master,0|grep "Left: Playback"|tail -1|cut -f 1 -d "%"|cut -f 2 -d "["`;echo "$V*255/100"|bc'|bash -f -s);Send(bytes,$(s_volume)) %REPT % The following is a trick. Replays are not real, just to satisfy client. CHCK=Send(string,Y); DINF=Send(string,DINFACK);Send(bytes,0,0,0,244,0,0,32,0,0,0,0,2); DLST=Send(bytes,255,0) DOWN=Send(bytes,0,100);Send(string,NoName) FINF=Send(string,FINFACK);Send(bytes,0,0,0,100); LIST=Send(bytes,255,0) PLEN=Send(bytes,0,100) PLST=Send(string,PLSTACK);Send(bytes,0,1,35,10);Send(string,NoName);Send(bytes,10,0) %SEEK= %SLCT= VERS=Send(string,VERSACK);Send(bytes,1,73); [End] anyremote-6.7.1/cfg-data/obsoleted/Bemused-emulation/juk-kde3.cfg0000644000232200023220000000547312073567673025232 0ustar debalancedebalance% % anyremote configuration file for juk management (Server-mode Bemused emulation) % Prerequisites: Bemused client installed on cell phone % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Juk GuiAppBinary=juk GuiAppRun=echo 'A=`dcop 2> /dev/null|grep juk`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=juk.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=JuK is a free software audio player for KDE, part of the kdemultimedia package. JuK supports collections of MP3, Ogg Vorbis, and FLAC audio files. This configuration file is for Juk/KDE3. [Protocol]=Bemused (Init)=Include($(CfgDir)/Utils/aliases-bemused.cfg); (Connect)=Make(mode,juk); [Mode]=juk (EnterMode)=Exec(echo 'A=`dcop|grep juk`; if [ "x$A" == "x" ]; then juk; fi'|bash -f -s); EXIT=Exec(dcop juk MainApplication-Interface quit) FADE=Exec(dcop juk Player mute) FFWD=Exec(echo 'T=`dcop juk Player currentTime`;T2=`expr $T + 5`;dcop juk Player seek $T2'| bash -f -s) INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,dcop juk Player playingString);Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,dcop juk Player playingString) NEXT=Exec(dcop juk Player forward) PAUS=Exec(dcop juk Player playPause) PLAY=Exec(dcop juk Player play) PREV=Exec(dcop juk Player back) RWND=Exec(echo 'T=`dcop juk Player currentTime`;T2=`expr $T + 5`;dcop juk Player seek $T2'| bash -f -s) STOP=Exec(dcop juk Player stop) VOLM($$)=Exec(dcop juk Player setVolume `echo "$(Param)"|awk '{print $0/100;}'`); %GVOL=Send(string,GVOLNAK) GVOL=Send(string,GVOLACK);Make(var,j_volume,echo 'V=`dcop juk Player volume`;echo "$V*255"|bc|cut -f 1 -d "."'|bash -f -s);Send(bytes,$(j_volume)) PLEN=ExecAndSend(bytes,dcop juk Collection playlistTracks `dcop juk Collection playlist`|wc -l|awk '{if($0>255) {b=int($0/256);a=$0-b;} else {b=$0;a=0};s=sprintf("%s,%s",a,b);print s;}'); PLST=Send(string,PLSTACK);\ Send(bytes,0,1);\ ExecAndSend(string,echo 'L=`dcop juk Collection playlist`;dcop juk Collection playlistTracks "$L" > $HOME/.anyRemote/juk.playlist'|bash -f -s;cat $HOME/.anyRemote/juk.playlist|xargs -i -d '\n' basename {});\ Send(bytes,0); SLCT($$)=Exec(echo 'X=`echo "$(Param)+1"|bc`;F=`head -$X $HOME/.anyRemote/juk.playlist|tail -1`;dcop juk Player play "$F"'| bash -f -s); %REPT=Exec() %SHFL=Exec() % The following is a trick. Replays are not real, just to satisfy client. CHCK=Send(string,Y); DINF=Send(string,DINFACK);Send(bytes,0,0,0,244,0,0,32,0,0,0,0,2); DLST=Send(bytes,255,0) DOWN=Send(bytes,0,100);Send(string,NoName) FINF=Send(string,FINFACK);Send(bytes,0,0,0,100); LIST=Send(bytes,255,0) PLEN=Send(bytes,0,100) PLST=Send(string,PLSTACK);Send(bytes,0,1,35,10);Send(string,NoName);Send(bytes,10,0) %SEEK= %SLCT= VERS=Send(string,VERSACK);Send(bytes,1,73); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Bemused-emulation/amarok-kde3.cfg0000644000232200023220000001245712061426046025674 0ustar debalancedebalance% % anyremote configuration file for amarok management. (Server-mode Bemused emulation) % Prerequisites: Bemused client installed on cell phone % tested with Jam SE 1.3 RC1 % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Amarok GuiAppBinary=amarok GuiAppRun=echo 'A=`dcop 2> /dev/null|grep amarok`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=amarok.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration file is for Amarok/KDE3. GuiAppVersion=echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Bemused (Init)=Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Exec(amarok);Make(var,am_volume,dcop amarok player getVolume); EXIT=Exec(dcop amarok MainApplication-Interface quit) FADE=Exec(dcop amarok player mute) FFWD=Exec(dcop amarok player seekRelative 10) INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,dcop amarok player nowPlaying);Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,dcop amarok player nowPlaying) NEXT=Exec(dcop amarok player next) PAUS=Exec(dcop amarok player pause) PLAY($$)=Macro(STRT) STRT=Exec(dcop amarok player play) PREV=Exec(dcop amarok player prev) % amarok crashes? %REPT=Exec(echo 'S=`dcop amarok player repeatPlaylistStatus`; if [ "x$S" == "xfalse" ]; then dcop amarok player enableRepeatPlaylist true; else dcop amarok player enableRepeatPlaylist false; fi' | bash -f -s) RWND=Exec(dcop amarok player seekRelative -10) SHFL=Exec(echo 'S=`dcop amarok player randomModeStatus`; if [ "x$S" == "xfalse" ]; then dcop amarok player enableRandomMode true; else dcop amarok player enableRandomMode false; fi' | bash -f -s) STOP=Exec(dcop amarok player stop) VOLM($$)=Exec(dcop amarok player setVolume $(Param)) GVOL=Send(string,GVOLACK);Make(var,am_volume,echo 'V=`dcop amarok player getVolume`;echo "$V*255/100"|bc'|bash -f -s);Send(bytes,$(am_volume)) %GVOL=Send(string,GVOLNAK); PLEN=ExecAndSend(bytes,dcop amarok playlist getTotalTrackCount|awk '{if($0>255) {b=int($0/256);a=$0-b;} else {b=$0;a=0};s=sprintf("%s,%s",a,b);print s;}'); PLST=Send(string,PLSTACK);\ ExecAndSend(bytes,dcop amarok playlist getActiveIndex|awk '{if($0>255) {b=int($0/256);a=$0-b;} else {b=$0;a=0};s=sprintf("%s,%s",a,b);print s;}');\ ExecAndSend(string,dcop amarok playlist saveCurrentPlaylist;grep ' /dev/null|grep kaffeine`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kplayer.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=KDE media player [Protocol]=Bemused (Init)=Include($(CfgDir)/Utils/aliases-bemused.cfg); (Connect)=Exec(kaffeine) EXIT=Exec(dcop kaffeine KaffeineIface quit) FADE=Exec(amixer sset Master,0 0 -q) FFWD=Exec(dcop kaffeine KaffeineIface posPlus) INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,basename "`dcop kaffeine KaffeineIface getFileName`");Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,basename "`dcop kaffeine KaffeineIface getFileName`") NEXT=Exec(dcop kaffeine KaffeineIface previous) PAUS=Exec(dcop kaffeine KaffeineIface pause) PLAY=Exec(dcop kaffeine KaffeineIface play) PREV=Exec(dcop kaffeine KaffeineIface next) RWND=Exec(dcop kaffeine KaffeineIface posMinus) STOP=Exec(dcop kaffeine KaffeineIface stop) VOLM($$)=Exec(amixer sset Master,0 $(Param)% -q) %GVOL=Send(string,GVOLNAK) GVOL=Send(string,GVOLACK);Make(var,s_volume,echo 'V=`amixer sget Master,0|grep "Left: Playback"|tail -1|cut -f 1 -d "%"|cut -f 2 -d "["`;echo "$V*255/100"|bc'|bash -f -s);Send(bytes,$(s_volume)) %REPT %SHFL % The following is a trick. Replays are not real, just to satisfy client. CHCK=Send(string,Y); DINF=Send(string,DINFACK);Send(bytes,0,0,0,244,0,0,32,0,0,0,0,2); DLST=Send(bytes,255,0) DOWN=Send(bytes,0,100);Send(string,NoName) FINF=Send(string,FINFACK);Send(bytes,0,0,0,100); GVOL=Send(string,GVOLNAK) LIST=Send(bytes,255,0) PLEN=Send(bytes,0,100) PLST=Send(string,PLSTACK);Send(bytes,0,1,35,10);Send(string,NoName);Send(bytes,10,0) %SEEK= %SLCT= VERS=Send(string,VERSACK);Send(bytes,1,73); [End] anyremote-6.7.1/cfg-data/obsoleted/Bemused-emulation/kscd-kde3.cfg0000644000232200023220000000553212061426046025342 0ustar debalancedebalance% % anyremote configuration file for kscd management. (Server-mode Bemused emulation) % Prerequisites: Bemused client installed on cell phone % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Kscd GuiAppBinary=kscd GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kscd`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=kscd.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=KsCD is a small, fast, CDDB enabled audio CD player for UNIX platforms. This configuration file is for KsCD/KDE3. GuiAppVersion=echo 'V=`kscd -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Bemused (Init)=Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Exec(echo 'V=`kscd -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s);\ (Connect)=Exec(kscd) EXIT=Exec(dcop kscd MainApplication-Interface quit() FADE=Exec(dcop kscd CDPlayer setVolume 0 > /dev/null) FFWD=Exec(echo 'POS=`dcop kscd CDPlayer currentPosition`;NEWPOS=`expr $POS + 5000`;dcop kscd CDPlayer jumpTo $NEWPOS' | bash -f -s) INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,dcop kscd CDPlayer currentTrackTitle);Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,dcop kscd CDPlayer currentTrackTitle) NEXT=Exec(dcop kscd CDPlayer next) PLAY=Exec(dcop kscd CDPlayer play) PREV=Exec(dcop kscd CDPlayer previous) RWND=Exec(echo 'POS=`dcop kscd CDPlayer currentPosition`;NEWPOS=`expr $POS - 5000`;dcop kscd CDPlayer jumpTo $NEWPOS' | bash -f -s) STOP=Exec(dcop kscd CDPlayer stop) VOLM($$)=Exec(dcop kscd CDPlayer setVolume $(Param) > /dev/null) REPT=Exec(dcop kscd CDPlayer toggleLoop) SHFL=Exec(dcop kscd CDPlayer toggleShuffle) %GVOL=Send(string,GVOLNAK) GVOL=Send(string,GVOLACK);Make(var,ks_volume,echo 'V=`dcop kscd CDPlayer getVolume`;echo "$V*255/100"|bc'|bash -f -s);Send(bytes,$(ks_volume)) PLEN=ExecAndSend(bytes,dcop kscd CDPlayer trackList|wc -l|awk '{if($0>255) {b=int($0/256);a=$0-b;} else {b=$0;a=0};s=sprintf("%s,%s",a,b);print s;}'); PLST=Send(string,PLSTACK);\ ExecAndSend(bytes,dcop kscd CDPlayer currentTrack|awk '{if($0>255) {b=int($0/256);a=$0-b;} else {b=$0;a=0};s=sprintf("%s,%s",a,b);print s;}');\ ExecAndSend(string,dcop kscd CDPlayer trackList);\ Send(bytes,0); SLCT($$)=Exec(dcop kscd CDPlayer setTrack `echo "$(Param)+1"|bc`); %PAUS= % The following is a trick. Replays are not real, just to satisfy client. CHCK=Send(string,Y); DINF=Send(string,DINFACK);Send(bytes,0,0,0,244,0,0,32,0,0,0,0,2); DLST=Send(bytes,255,0) DOWN=Send(bytes,0,100);Send(string,NoName) FINF=Send(string,FINFACK);Send(bytes,0,0,0,100); LIST=Send(bytes,255,0) %SEEK= VERS=Send(string,VERSACK);Send(bytes,1,73); [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/0000755000232200023220000000000012123520167021713 5ustar debalancedebalanceanyremote-6.7.1/cfg-data/obsoleted/Server-mode/customizeClient3.cfg0000644000232200023220000000271012073567675025663 0ustar debalancedebalance% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Customize client 3 GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of possible customization of Java Client. Shows how to set different layouts. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Set(parameter,debug,on);\ Set(icons,Customize-3,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Set(layout,default);\ Set(status,test);\ Set(title,123456789012345678901234567890123456789012345678901234567890);\ Make(var,space,by_value,0);\ Make(var,isize,by_value,0);\ Set(fullscreen,on);\ Get(icon_size); IconSize($$)=Make(var,isize,by_value,$(Index)); Back=Set(text,close); 1=Make(var,isize,expr $(isize) + 1);Set(parameter,icon_size,$(isize));Get(icon_size); 2=Set(volume,20);Set(status,20) 3=Make(var,isize,expr $(isize) - 1);Set(parameter,icon_size,$(isize));Get(icon_size); 4=Make(var,space,expr $(space) + 1);Set(parameter,icon_padding,$(space)); 5=Set(volume,50);Set(status,50) 6=Make(var,space,expr $(space) - 1);Set(parameter,icon_padding,$(space)); 7=Set(layout,7x1,noticker); 8=Set(volume,80);Set(status,80) 9=Set(layout,default,noticker); * *=Set(text,replace,Help,Just press buttons\nand inspect results.\nUse 2,5,8 to\nset volume value) 0=Set(fullscreen,on); #=Set(fullscreen,off); [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/keyjnote.cfg0000644000232200023220000000540612120355622024230 0ustar debalancedebalance% % anyremote configuration file for keyjnote management (Server-mode) % keynote is renamed to impressive, so this file is obsoleted % % Thanks Gabriel for this configuration file. % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.3i GuiAppName=Keyjnote GuiAppBinary=keyjnote.py GuiAppRun=echo 'P=`ps -ef|grep keyjnote|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KeyJnote is a program that displays PDF presentation slides with style. Now KeyJnote is renamed to Impressive, and this configuration file is obsoleted. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var, keyjnote_exec, which keyjnote 2> /dev/null);\ Make(var, keyjnote_exec, echo 'if [ "x$(keyjnote_exec)" == "x" ]; then which keyjnote.py; else echo $(keyjnote_exec); fi'|bash -f -s); (Connect)=Set(icons,Keyjnote,1,folder,2,up,3,default,4,left,5,fit,6,right,7,default,8,down,9,default,*,question,0,refresh,#,no);\ Set(font,small);\ Set(status,keyjnote);\ Set(title,); Cancel=Exec(pkill -f 'python (.)*keyjnote'); Back=Set(text,close); Back($$)=Set(list,close); UpdateMenu=Set(menu,replace,GoTo,Open,Go Home); % FBROWSER v.3i FillList=Set(iconlist,replace,Files,folder:..);\ Macro(FillDir);\ Macro(FillFile); FillDir =ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/'| xargs -d '\n' -i echo "folder:" {}); FillFile=ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/'| xargs -d '\n' -i echo "file:"{}); GoTo($$)=Make(var,goto,by_value,$(Param));\ ExecAndSet(iconlist,replace,Files,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";echo "if [ -d $(goto) ]; then cd $(goto);fi;pwd>$HOME/.anyRemote/ar_storedir.tmp;"|bash -f -s;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); Go Home($$)=ExecAndSet(iconlist,replace,Files,cd;pwd>$HOME/.anyRemote/ar_storedir.tmp;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); % FBROWSER v.3i Open($$)=\ Set(list,close);\ Set(menu,clear);\ Exec(cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";xterm -e $(keyjnote_exec) "$(Param)");\ Set(title,$(Param)); 0=Emulate(key,L) 1=Macro(FillList);Macro(UpdateMenu); 2=Emulate(key,Up) 3=Emulate(mouse,1) 4=Emulate(key,Left) 5=Emulate(key,Tab) 6=Emulate(key,Right) 7=Emulate(key,B) 8=Emulate(key,Down) 9=Emulate(key,W) * *=Set(text,replace,Help,1 Choose file\n2 Up\n4 Previous page\n5 Overview\n6 Next page\n7 Fade to back\n8 Down\n9 Fade to white\n0 Toggle\n** Help\n# Quit\n); %#=Emulate(key, Escape);Set(title, ); #=Exec(pkill -f 'python (.)*keyjnote');Set(title, ); [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/customizeClient2.cfg0000644000232200023220000000400712073567675025663 0ustar debalancedebalance% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Customize client 2 GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of possible customization of Java Client. Shows how to set different layouts and fonts. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Make(var,TwoWayComm,by_value,false);\ Set(parameter,debug,on);\ Set(popup,show,Please wait);\ Set(bg,0,0,0);\ Set(fg,255,255,255);\ Set(icons,Customize-2,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Set(font,small);\ Set(status,status field);\ Set(title,title field);\ Set(popup,hide); Back=Set(text,close); 1=Set(font,small); 2=Set(font,medium); 3=Set(font,large); * 1=Set(font,small, bold,system); * 2=Set(font,medium,bold,proportional); * 3=Set(font,large, bold,monospace); * 4=Set(font,small, italic,system); * 5=Set(font,medium,italic,proportional); * 6=Set(font,large, italic,monospace); * 7=Set(font,small, underlined,system); * 8=Set(font,medium,underlined,proportional); * 9=Set(font,large, underlined,monospace); 4=Set(layout,7x1,noticker,joystick_only); 5=Set(layout,default,ticker); 6=Set(layout,7x1,noticker,volume);Set(volume,60); 7=Set(fullscreen,on);Set(parameter,debug,off);Set(parameter,debug,on); 8=Set(fullscreen,off);Set(parameter,debug,off);Set(parameter,debug,on); 9=Set(title,123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890);Set(icons,show very long string); * *=Set(text,replace,Help,Just press 0-9,#\nor * + 1-9\nand inspect results);Set(text,add,Help,...) 0=Set(bg,255,255,255);Set(fg,0,0,0); #=Set(popup,show,Please wait);\ Set(layout,default,noticker);\ Set(bg,0,0,0);\ Set(fg,255,255,255);\ Set(font,large);\ Set(status,status field);\ Set(title,title field);\ Set(icons,caption);\ Set(popup,hide); [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/bmp.cfg0000644000232200023220000000570012130537036023155 0ustar debalancedebalance% % anyremote configuration file for Bmp management (Server-mode) % prerequisites: xmmsctrl package % % STATUS stable % XTEST no % SOUND app % ENV no % DEF_PLAYER GuiAppName=BMP GuiAppBinary=beep-media-player GuiAppRun=echo 'P=`ps -ef|grep beep-media-player|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=beep-media-player.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=The Beep Media Player is a free audio player, based on the XMMS multimedia player. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var,player_name,by_value,BMP);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Exec(echo 'P=`which xmmsctrl 2> /dev/null|grep xmmsctrl|grep -v no|wc -l|tr -d " "`;if [ "x$P" == "x1" ]; then true; else $(CfgDir)/Utils/message.sh "ERROR: xmmsctrl package is not installed"; fi'|bash -f -s); (Connect)=Make(mode,bmp); [Mode]=bmp : default_player (EnterMode)=\ Make(var,bmp_volume,by_value,-1);\ Macro(RUN_IF_NEED);\ Macro(SETUP_DEFAULT_PLAYER);\ Macro(APP_MENU); bmp_t1=ExecAndSet(title,basename "`xmmsctrl cur`"|sed 's/%20/ /g') (ExitMode)=Timer(bmp_t1,cancel); APP_MENU=Set(menu,replace,Playlist,Toggle Shuffle,Toggle Repeat);Macro(ALLIN1MENU); Toggle Shuffle=Exec(xmmsctrl shuffle); Toggle Repeat=Exec(xmmsctrl repeat); Playlist=Make(mode,bmp_playlist) % Android support VOL-=Macro(1) VOL+=Macro(3) % use custom volume controls 1=Exec(xmmsctrl vol -5) 2=Make(var,bmp_volume,echo 'if [ "x$(bmp_volume)" == "x-1" ]; then xmmsctrl print %v; xmmsctrl vol 0; else xmmsctrl vol $(bmp_volume); echo "-1"; fi;'|bash -f -s) 3=Exec(xmmsctrl vol +5) % Android support VOL-=Exec(xmmsctrl vol -5) VOL+=Exec(xmmsctrl vol +5) PLAY =ExecAndSet(status,sh -c "if xmmsctrl playing;then xmmsctrl stop;echo Stopped; else xmmsctrl play;echo Playing; fi");\ Macro(bmp_t1);\ Timer(bmp_t1,5,0); RWD =Exec(xmmsctrl time -10) FF =Exec(xmmsctrl time +10) PREV =ExecAndSet(title,xmmsctrl prev;basename "`xmmsctrl cur`"|sed 's/%20/ /g') STOP =Exec(xmmsctrl stop);\ Set(status,Stopped);\ Timer(bmp_t1,cancel); NEXT =ExecAndSet(title,xmmsctrl next;basename "`xmmsctrl cur`"|sed 's/%20/ /g') PAUSE=Exec(xmmsctrl pause);\ ExecAndSet(status,sh -c "sleep 1;if xmmsctrl paused; then echo Paused; else echo Playing; fi"); RUN_IF_NEED=Exec(sh -c "if xmmsctrl running;then true;else beep-media-player& fi") RUN_OR_QUIT=Exec(sh -c "if xmmsctrl running;then xmmsctrl quit;else beep-media-player& fi") APP_QUIT=Exec(xmmsctrl quit);Timer(bmp_t1,cancel); [ModeEnd] [Mode]=bmp_playlist (EnterMode)=\ Timer(bmp_t1,cancel);\ Set(list,font,medium);\ ExecAndSet(list,replace,Playlist,xmmsctrl playlist|tr -d ','|tr -s ' '|cut -f2,3,4,5,6,7|sed 's/$/,/;s/(/-/g;s/)/-/g;s/%20/ /g');\ Set(menu,replace,Choose); (ExitMode)=\ Set(list,close);\ Macro(bmp_t1);\ Timer(bmp_t1,5,0) Back($$)=Make(mode,bmp); Choose($$)=Exec(xmmsctrl track $(Index)); Push($$)=Macro(Choose($$)); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/xmms.cfg0000644000232200023220000000570112130537027023364 0ustar debalancedebalance% % anyremote configuration file for XMMS management (Server-mode) % prerequisites: xmmsctrl package % % STATUS stable % XTEST no % SOUND app % ENV no % DEF_PLAYER GuiAppName=XMMS GuiAppBinary=xmms GuiAppRun=echo 'P=`ps -ef|grep xmms|grep -v xmms2|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=xmms.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=XMMS is a multimedia player for unix systems. XMMS stands for X MultiMedia System and can play media files such as MP3, MOD's, WAV and others with the use of Input plugins. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'P=`which xmmsctrl|grep xmmsctrl|grep -v no|wc -l|tr -d " "`;if [ "x$P" == "x1" ]; then true; else $(CfgDir)/Utils/message.sh "ERROR: xmmsctrl package is not installed"; fi'|bash -f -s);\ Make(var,player_name,by_value,XMMS);\ Include($(CfgDir)/Utils/aliases-server-player.cfg); (Connect)=Make(mode,xmms); xmms_t1=ExecAndSet(title,basename "`xmmsctrl cur`"|sed 's/%20/ /g') [Mode]=xmms : default_player (EnterMode)=\ Make(var,xmms_volume,by_value,-1);\ Macro(RUN_IF_NEED);\ Macro(SETUP_DEFAULT_PLAYER);\ Macro(APP_MENU); (ExitMode)=Timer(xmms_t1,cancel) APP_MENU=\ Set(menu,replace,Playlist,Toggle Shuffle,Toggle Repeat);\ Macro(ALLIN1MENU); Toggle Shuffle=Exec(xmmsctrl shuffle); Toggle Repeat=Exec(xmmsctrl repeat); Playlist=Make(mode,xmms_playlist) % use custom volume controls 1=Exec(xmmsctrl vol -5) 2=Make(var,xmms_volume,echo 'if [ "x$(xmms_volume)" == "x-1" ]; then xmmsctrl print %v; xmmsctrl vol 0; else xmmsctrl vol $(xmms_volume); echo "-1"; fi;'|bash -f -s) 3=Exec(xmmsctrl vol +5) % Android support VOL-=Exec(xmmsctrl vol -5) VOL+=Exec(xmmsctrl vol +5) PLAY =ExecAndSet(status,sh -c "if xmmsctrl playing;then xmmsctrl stop;echo Stopped; else xmmsctrl play;echo Playing; fi");\ Macro(xmms_t1);\ Timer(xmms_t1,5,0); RWD =Exec(xmmsctrl time -10); FF =Exec(xmmsctrl time +10); PREV =ExecAndSet(title,xmmsctrl prev;basename "`xmmsctrl cur`"|sed 's/%20/ /g'); STOP =Exec(xmmsctrl stop);Set(status,Stopped);Timer(xmms_t1,cancel); NEXT =ExecAndSet(title,xmmsctrl next;basename "`xmmsctrl cur`"|sed 's/%20/ /g'); PAUSE=Exec(xmmsctrl pause);ExecAndSet(status,sh -c "sleep 1;if xmmsctrl paused; then echo Paused; else echo Playing; fi"); RUN_IF_NEED=Exec(sh -c "if xmmsctrl running;then true;else xmmsctrl launch; fi"); RUN_OR_QUIT=Exec(sh -c "if xmmsctrl running;then xmmsctrl quit;else xmmsctrl launch; fi"); APP_QUIT=Exec(xmmsctrl quit) [ModeEnd] [Mode]=xmms_playlist (EnterMode)=\ Timer(xmms_t1,cancel);\ Set(list,font,medium);\ ExecAndSet(list,replace,Playlist,xmmsctrl playlist|tr -d ','|tr -s ' '|cut -f2,3,4,5,6,7|sed 's/%20/ /g;s/$/,/;s/(/-/g;s/)/-/g');\ Set(menu,replace,Choose); (ExitMode)=\ Set(list,close);\ Macro(xmms_t1);\ Timer(xmms_t1,5,0) Back($$)=Make(mode,xmms); Choose($$)=Exec(xmmsctrl track $(Index)); Push($$)=Macro(Choose($$)); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/xfmedia.cfg0000644000232200023220000000355612130537051024020 0ustar debalancedebalance% % anyremote configuration file for Xfmedia (http://spuriousinterrupt.org/projects/xfmedia) % management (Server-mode) % % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER GuiAppName=xfmedia GuiAppBinary=xfmedia GuiAppRun=echo 'P=`ps -ef|grep xfmedia| grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=xfmedia.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Xfmedia is a simple, easy-to-use media player based on the xine engine. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,player_name,by_value,XfMedia);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Exec(echo 'P=`which xfmedia 2> /dev/null|grep xfmedia|grep -v no|grep -v edit|grep -v anyremote|wc -l|tr -d " "`;if [ "x$P" == "x1" ]; then true; else $(CfgDir)/Utils/message.sh "ERROR: xfmeida is not installed"; fi'|bash -f -s); (Connect)=Make(mode,xfmedia); [Mode]=xfmedia : default_player % xfmedia does not supports FF/RWD, so use customized setup (EnterMode)=\ Macro(RUN_IF_NEED);\ Macro(SETUP_DEFAULT_PLAYER_NO_FF_FWD); * *=Macro(DEFAULT_HELP_NO_FF_FWD); % Volume control and 0,4,5,6,8,*,# assignments by Utils/aliases-server-player.cfg PLAY =Exec(xfmedia-remote -p); RWD =Make(none); FF =Make(none); PREV =Exec(xfmedia-remote --previous); STOP =Exec(xfmedia-remote --stop); NEXT =Exec(xfmedia-remote --next); PAUSE=Exec(xfmedia-remote --pause); RUN_IF_NEED=Exec(echo 'P=`ps -ef|grep xfmedia| grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then xfmedia & fi'|bash -f -s); RUN_OR_QUIT=Exec(echo 'P=`ps -ef|grep xfmedia| grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then xfmedia & else pkill xfmedia; fi'|bash -f -s); APP_QUIT=Exec(pkill xfmedia); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/noatun.cfg0000644000232200023220000000433312073567675023726 0ustar debalancedebalance% % anyremote configuration file for Noatun management. (Server-mode) % % playlist should be already created ! % % STATUS nonstable % TODO discover reason of Noatun hangup % XTEST no % SOUND app % ENV no GuiAppName=Noatun GuiAppBinary=noatun GuiAppRun=echo 'A=`dcop 2> /dev/null|grep noatun`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=noatun.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=The super-modular media player for KDE. GuiAppVersion=echo 'V=`noatun -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Make(mode,noatun); [Mode]=noatun (EnterMode)=Exec(echo 'A=`dcop|grep noatun`; if [ "x$A" == "x" ]; then noatun; fi'|bash -f -s);\ Set(layout,default);\ Set(icons,Noatun,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Macro(ALLIN1MENU); Cancel=Exec(dcop noatun MainApplication-Interface quit); Back=Set(text,close);Macro(ALLIN1MENU) 1=Exec(dcop noatun Noatun volumeDown) 2=Exec(dcop noatun Noatun toggleMute) 3=Exec(dcop noatun Noatun volumeUp) 4=Exec(echo 'P=`dcop noatun Noatun position`;N=`expr $P - 5000`;dcop noatun Noatun skipTo $N'|bash -f -s) 5=Exec(dcop noatun Noatun play);ExecAndSet(title,dcop noatun Noatun title) 6=Exec(echo 'P=`dcop noatun Noatun position`;N=`expr $P + 5000`;dcop noatun Noatun skipTo $N'|bash -f -s) 7=Exec(dcop noatun Noatun back);ExecAndSet(title,dcop noatun Noatun title) 8=Exec(dcop noatun Noatun stop) 9=Exec(dcop noatun Noatun forward);ExecAndSet(title,dcop noatun Noatun title) * *=Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n4 Rew\n5 Play\n6 FF\n7 Prew\n8 Stop\n9 Next\n** Help\n0 Pause\n# Exit\n*# Run/Quit) * #=Exec(echo 'P=`dcop|grep noatun`; if [ "x$P" == "x" ]; then noatun& else dcop noatun MainApplication-Interface quit; fi;' |bash -f -s) 0=Exec(dcop noatun Noatun playpause) #=Exec(dcop noatun MainApplication-Interface quit) [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kview.cfg0000644000232200023220000000513412073567675023547 0ustar debalancedebalance% % anyremote configuration file for kview management. (Server-mode) % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.3 GuiAppName=Kview GuiAppBinary=kview GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kview`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kview.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KView is an image viewer program for the KDE (a part of the KDE Graphics package) GuiAppVersion=echo 'V=`kview -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Set(icons,KView,1,folder,2,default,3,default,4,left,5,fullscreen,6,right,7,minus,8,default,9,plus,*,question,0,default,#,no);\ Set(title,);\ Set(status,); Cancel=Exec(echo 'K=`dcop|grep kview`;dcop $K MainApplication-Interface quit'|bash -f -s); Back =Set(text,close); Back($$) =Set(list,close); UpdateMenu=Set(menu,replace,GoTo,Open); % FBROWSER v.3 FillList=Set(list,replace,Files,..);\ ExecAndSet(list,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/,/\r/g;s/$/,/'); GoTo($$)=Set(list,replace,SAME,..);\ Make(var,goto,by_value,$(Param));\ ExecAndSet(list,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";echo "if [ -d $(goto) ]; then cd $(goto);fi;pwd>$HOME/.anyRemote/ar_storedir.tmp;ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/,/\r/g;s/$/,/'"|bash -f -s); % FBROWSER v.3 Open($$)=Set(list,close);\ Set(menu,clear);\ Exec(echo 'K=`dcop|grep kview`;if [ "x$K" == "x" ]; then true; else dcop $K MainApplication-Interface quit; fi;'|bash -f -s;cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";kview "$(Param)" --nocrashhandler &); 1=Macro(FillList);Macro(UpdateMenu); 4=Emulate(keydown,Shift_L,key,Left,keyup,Shift_L) 5=Exec(echo 'K=`dcop|grep kview`;dcop $K KView activateAction fullscreen'|bash -f -s) 6=Emulate(keydown,Shift_L,key,Right,keyup,Shift_L) 7=Emulate(keydown,Control_L,key,minus,keyup,Control_L) %8=Exec(echo 'K=`dcop|grep kview`;dcop $K KView setGeometry 300 150 800 600'|bash -f -s) 9=Emulate(keydown,Control_L,key,KP_Add,keyup,Control_L) * *=Set(text,replace,Help,1 - File browser\n4 - Previous\n5 - Toggle Full Screen\n6 - Next\n7 - Size -\n9 - Size +\n* * - Help\n# - Quit\n) #=Exec(echo 'K=`dcop|grep kview|head -1`;dcop $K MainApplication-Interface quit'|bash -f -s) [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/amarok-kde3-v3.cfg0000644000232200023220000002614612123520167025031 0ustar debalancedebalance% % anyremote configuration file for amarok management. (Server-mode) % v.3 - Improved cover art + library access % Made by Carlos Sanchez (chukysoria@gmail.com) % % STATUS stable % XTE no % SOUND app % ENV no GuiAppName=Amarok v.3/KDE3 GuiAppBinary=amarok GuiAppVersion=echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s GuiAppRun=echo 'A=`dcop 2> /dev/null|grep amarok`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=amarok.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration supports cover art. This configuration file is for Amarok/KDE3 [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s);\ Exec(echo 'P=`which convert 2> /dev/null|grep convert|grep -v no|wc -l|tr -d " "`;if [ "x$P" == "x1" ]; then true; else $(CfgDir)/Utils/message.sh "ERROR: ImageMagic is not installed"; fi'|bash -f -s);\ Make(var,arDir,echo $HOME/.anyRemote/);\ Make(var,cvDir,by_value,$(arDir)amarok_covers/); (Connect)=Set(parameter,debug,on);\ Make(mode,amarok-v3); AM_HELP=Set(text,replace,Help,Manage player by joystick or from menu); AMAROK_V2_SETINFO=ExecAndSet(title,echo 'T=`dcop amarok player title`;A=`dcop amarok player artist`;echo $T by $A'|bash -f -s);\ ExecAndSet(status,dcop amarok player totalTime);\ ExecAndSet(cover, noname,echo 'I=`dcop amarok player coverImage`;F=`basename $I`;convert \( $I -resize $(cover_size)x$(cover_size) \) \( +clone -flip -crop x39.86% -composite \) -append $(cvDir)$F;echo $(cvDir)$F;'|bash -f -s); AMAROK_V2_START_TIMER=Macro(AMAROK_V2_SETINFO);\ Timer(AMAROK_V2_SETINFO,5,0); AMAROK_V2_STOP_TIMER =Timer(AMAROK_V2_SETINFO,cancel); [Mode]=amarok-v3 AM_V2_LAYOUT=Set(icons,Amarok,1,prev,2,rewind,3,play,4,pause,5,stop,6,forward,7,next,8,none,9,none,*,none,0,none,#,none);Set(font,small);Set(layout,bottomline,joystick_only,choose,3,volume,ticker,up,Vol+,down,Vol-); AM_V2_RUN_IF=Exec(echo 'A=`dcop 2> /dev/null|grep amarok`; if [ "x$A" == "x" ]; then amarok& fi' | bash -f -s); AM_V2_MENU=Set(menu,replace,Playlist,Mute,Collection Browser,Run Player,Quit Player,Toggle Fullscreen,Help);Macro(ALLIN1MENU);Macro(VOL_SET); (EnterMode)=Macro(AM_V2_LAYOUT);\ Macro(AM_V2_RUN_IF);\ Exec(rm -rf $(cvDir);mkdir $(cvDir));\ Make(var,cover_size,echo 64);\ Get(cover_size);\ Macro(AMAROK_V2_SETINFO);\ Macro(AM_V2_MENU);\ Macro(AMAROK_V2_START_TIMER); Cancel=Exec(rm -rf $(cvDir)); (Disconnect)=Macro(AMAROK_V2_STOP_TIMER); Back=Set(text,close);Macro(AM_V2_MENU); Playlist=Macro(AMAROK_V2_STOP_TIMER);Make(mode,amarok_playlist_v2) Collection Browser=Macro(AMAROK_V2_STOP_TIMER);Make(mode,amarok_collection_browser_v2) Vol+=Exec(dcop amarok player volumeUp);Macro(VOL_SET); Vol-=Exec(dcop amarok player volumeDown);Macro(VOL_SET); Mute=Exec(dcop amarok player mute);Set(volume,0);Set(menu,replace,Playlist,Vol+,Vol-,Unmute,File Browser,Collection Browser,Run Player,Quit Player,Toggle Fullscreen,Help);Macro(ALLIN1MENU); Unmute=Exec(dcop amarok player mute);Macro(AM_V2_MENU); Toggle Fullscreen=Set(fullscreen,toggle);Set(cover,clear);Get(cover_size); CoverSize($$)=\ Make(var,cover_size,by_value,$(Index));\ Exec(echo $(arDir) > $HOME/.anyRemote/cover_size); Run Player=Macro(AM_V2_RUN_IF); Quit Player=Exec(dcop amarok MainApplication-Interface quit);Macro(AMAROK_V2_STOP_TIMER);Set(title,);Set(status,); Help=Macro(AM_HELP); VOL_SET=ExecAndSet(volume,dcop amarok player getVolume); % No more 7 buttons - Nokias Series40 has 160x120 screens 1=Exec(dcop amarok player prev);Macro(AMAROK_V2_SETINFO); 2=Exec(dcop amarok player seekRelative -10) 3=Exec(dcop amarok player play);Macro(AMAROK_V2_START_TIMER);Macro(VOL_SET); 4=Exec(dcop amarok player pause);Macro(AMAROK_V2_STOP_TIMER);Set(title,Paused); 5=Exec(dcop amarok player stop);Set(title,Stopped);Macro(AMAROK_V2_STOP_TIMER); 6=Exec(dcop amarok player seekRelative 10) 7=Exec(dcop amarok player next);Macro(AMAROK_V2_SETINFO); [ModeEnd] [Mode]=amarok_playlist_v2 (EnterMode)=Set(list,font,small);Set(list,bg,54,73,135);Set(list,fg,141,159,218);ExecAndSet(list,replace,Playlist,dcop amarok playlist saveCurrentPlaylist;grep ' $(arDir)file_route;sh $(arDir)file_route; dcop amarok playlist playByIndex 0); Add Artist($$)=Exec(dcop amarok collection query "SELECT DISTINCT t.url FROM tags t where t.artist in (select id from artist where name = '$(Param)')"|sed "s/.\//dcop amarok playlist addMedia \"file:\/\/\//"|sed "s/$/\"/"> $(arDir)file_route;sh $(arDir)file_route); Find($$)=Make(mode,amarok_find_song); UPDATEMENU_ALBUM=Set(menu,replace,View Songs,Play Album,Add Album); FILLLIST_ALBUM=ExecAndSet(list,add,SAME,dcop amarok collection query "select distinct a.name from album a, tags b where a.id = b.album and b.artist in (select id from artist where name = '$(current_artist)')"|sed "s/\*//"|sed "s/$/,/") View Songs(..)=Macro(FILLLIST_ARTIST);Macro(UPDATEMENU_ARTIST);Set(list,select,$(current_artist_index)); View Songs($$)=Make(var,current_album,by_value,$(Param));Make(var,current_album_index,by_value,$(Index));Set(list,replace,Songs of $(Param),..);Macro(UPDATEMENU_SONGS);Macro(FILLLIST_SONGS) Play Album($$)=Exec(dcop amarok playlist clearPlaylist; dcop amarok collection query "SELECT DISTINCT t.url FROM tags t where t.album in (select id from album where name = '$(Param)')"|sed "s/.\//dcop amarok playlist addMedia \"file:\/\/\//"|sed "s/$/\"/"|sed "s/#/&23/"> $(arDir)file_route;sh $(arDir)file_route; dcop amarok playlist playByIndex 0); Add Album($$)=Exec(dcop amarok collection query "SELECT DISTINCT t.url FROM tags t where t.album in (select id from album where name = '$(Param)')"|sed "s/.\//dcop amarok playlist addMedia \"file:\/\/\//"|sed "s/$/\"/"|sed "s/#/&23/"> $(arDir)file_route;sh $(arDir)file_route); UPDATEMENU_SONGS=Set(menu,replace,Add to playlist,Add all,Queue,Play,Only by Artist); FILLLIST_SONGS=ExecAndSet(list,add,SAME,dcop amarok collection query "SELECT DISTINCT t.title FROM tags t where t.album in (select id from album where name = '$(current_album)')"|sed "s/\*//"|sed "s/$/,/") Add to playlist(..)=Set(list,replace,Albums by $(current_artist),..);Macro(FILLLIST_ALBUM);Macro(UPDATEMENU_ALBUM);Set(list,select,$(current_album_index)); Add to playlist($$)=Exec(dcop amarok collection query "SELECT DISTINCT t.url FROM tags t where t.album in (select id from album where name = '$(current_album)') and t.title = '$(Param)'"|sed "s/.\//dcop amarok playlist addMedia \"file:\/\/\//"|sed "s/$/\"/"|sed "s/#/&23/"> $(arDir)file_route;sh $(arDir)file_route); Add all($$)=Exec(dcop amarok collection query "SELECT DISTINCT t.url FROM tags t where t.album in (select id from album where name = '$(current_album)')"|sed "s/.\//dcop amarok playlist addMedia \"file:\/\/\//"|sed "s/$/\"/"|sed "s/#/&23/"> $(arDir)file_route;sh $(arDir)file_route); Queue($$)=Exec(dcop amarok collection query "SELECT DISTINCT t.url FROM tags t where t.album in (select id from album where name = '$(current_album)') and t.title = '$(Param)'"|sed "s/.\//dcop amarok playlist queueMedia \"file:\/\/\//"|sed "s/$/\"/"|sed "s/#/&23/"> $(arDir)file_route;sh $(arDir)file_route); Play($$)=Exec(dcop amarok collection query "SELECT DISTINCT t.url FROM tags t where t.album in (select id from album where name = '$(current_album)') and t.title = '$(Param)'"|sed "s/.\//dcop amarok playlist playMedia \"file:\/\/\//"|sed "s/$/\"/"|sed "s/#/&23/"> $(arDir)file_route;sh $(arDir)file_route); Only by Artist($$)=Set(list,replace,SAME,..);Macro(UPDATEMENU_SONGS_ARTIST);Macro(FILLLIST_SONGS_ARTIST) UPDATEMENU_SONGS_ARTIST=Set(menu,replace,Add to playlist,Add all,Queue,Play,All Album Songs); FILLLIST_SONGS_ARTIST=ExecAndSet(list,add,SAME,dcop amarok collection query "SELECT DISTINCT t.title FROM tags t where t.album in (select id from album where name = '$(current_album)') and t.artist in (select id from artist where name = '$(current_artist)')"|sed "s/\*//"|sed "s/$/,/") All Album Songs($$)=Set(list,replace,SAME,..);Macro(UPDATEMENU_SONGS);Macro(FILLLIST_SONGS) Back($$)=Make(mode,amarok-v3); [ModeEnd] [Mode]=amarok_find_song (EnterMode)=Set(editfield,Find,Enter song name,); (ExitMode)=Set(list,close); Ok($$)=Make(var,search,by_value,$(Param));Set(list,add,Songs found,..);Macro(UPDATEMENU_SONGS2);Macro(FILLLIST_SONGS2) Back($$)=Make(mode,amarok_collection_browser_v2); UPDATEMENU_SONGS2=Set(menu,replace,Add to playlist,Add all,Queue,Play,Find); FILLLIST_SONGS2=ExecAndSet(list,replace,SAME,dcop amarok collection query "SELECT DISTINCT t.title FROM tags t where t.title like '%$(search)%' order by t.title"|sed "s/\*//"|sed "s/$/,/") Add to playlist($$)=Exec(dcop amarok collection query "SELECT DISTINCT t.url FROM tags t where t.title = '$(Param)'"|sed "s/.\//dcop amarok playlist addMedia \"file:\/\/\//"|sed "s/$/\"/"|sed "s/#/&23/"> $HOME/.anyRemote/file_route;sh $HOME/.anyRemote/file_route); Add all($$)=Exec(dcop amarok collection query "SELECT DISTINCT t.url FROM tags t where t.title like '%$(search)%'"|sed "s/.\//dcop amarok playlist addMedia \"file:\/\/\//"|sed "s/$/\"/"|sed "s/#/&23/"> $HOME/.anyRemote/file_route;sh $HOME/.anyRemote/file_route); Queue($$)=Exec(dcop amarok collection query "SELECT DISTINCT t.url FROM tags t where t.title = '$(Param)'"|sed "s/.\//dcop amarok playlist queueMedia \"file:\/\/\//"|sed "s/$/\"/"|sed "s/#/&23/"> $HOME/.anyRemote/file_route;sh $HOME/.anyRemote/file_route); Play($$)=Exec(dcop amarok collection query "SELECT DISTINCT t.url FROM tags t where t.title = '$(Param)'"|sed "s/.\//dcop amarok playlist playMedia \"file:\/\/\//"|sed "s/$/\"/"|sed "s/#/&23/"> $HOME/.anyRemote/file_route;sh $HOME/.anyRemote/file_route); Find($$)=Set(editfield,Enter song name,Find Song,); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kplayer-kde3.cfg0000644000232200023220000001030712073567675024713 0ustar debalancedebalance% % anyremote configuration file for kplayer management. (Server-mode) % % STATUS stable % XTEST no % SOUND app % ENV no % FBROWSER v.3i GuiAppName=Kplayer GuiAppBinary=kplayer GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kplayer`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kplayer.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KPlayer is a KDE multimedia player. GuiAppVersion=echo 'V=`kplayer -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Make(mode,kplayer); [Mode]=kplayer (EnterMode)=Set(layout,default);\ Set(icons,KPlayer,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,folder,8,stop,9,default,*,question,0,pause,#,no);\ Set(title,);\ Set(status,);\ Macro(KPLAYER_MENU);\ Macro(ALLIN1MENU); Cancel=Macro(QUIT); Browse files=Macro(QUIT);Macro(FillList);Macro(UpdateMenu); Toggle fullscreen=Exec(dcop kplayer kplayer-mainwindow#1 activateAction view_full_screen); Quit and exit=Macro(Cancel); KPLAYER_MENU=Set(menu,add,Browse files,Toggle fullscreen,Quit and exit); QUIT=Exec(dcop kplayer MainApplication-Interface quit;killall mplayer) Back =Set(text,close);Macro(KPLAYER_MENU);Macro(ALLIN1MENU) Back($$) =Set(list,close);Macro(KPLAYER_MENU);Macro(ALLIN1MENU); UpdateMenu=Set(menu,replace,GoTo,Open,Go Home); % FBROWSER v.3i FillList=Set(iconlist,replace,Files,folder:..);\ Macro(FillDir);\ Macro(FillFile); FillDir =ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/'| xargs -d '\n' -i echo "folder:" {}); FillFile=ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/'| xargs -d '\n' -i echo "file:"{}); GoTo($$)=Make(var,goto,by_value,$(Param));\ ExecAndSet(iconlist,replace,Files,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";echo "if [ -d $(goto) ]; then cd $(goto);fi;pwd>$HOME/.anyRemote/ar_storedir.tmp;"|bash -f -s;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); Go Home($$)=ExecAndSet(iconlist,replace,Files,cd;pwd>$HOME/.anyRemote/ar_storedir.tmp;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); % FBROWSER v.3i Open($$)=\ Set(list,close);\ Set(title,$(Param));\ Set(menu,clear);\ Exec(echo 'P=`dcop|grep kplayer`; if [ "x$P" == "x" ]; then cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";kplayer "$(Param)"& fi' |bash -f -s);\ Macro(KPLAYER_MENU);\ Macro(ALLIN1MENU); 1=Exec(dcop kplayer kplayer-mainwindow#1 activateAction audio_volume_down) 2=Exec(dcop kplayer kplayer-mainwindow#1 activateAction audio_mute) 3=Exec(dcop kplayer kplayer-mainwindow#1 activateAction audio_volume_up) 4=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_backward) 5=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_next;dcop kplayer kplayer-mainwindow#1 activateAction player_play);\ ExecAndSet(title,dcop kplayer kplayer-mainwindow#1 caption); 6=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_forward) % Upon start-up KPlayer forgot to set up playlist %7=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_previous);\ % ExecAndSet(title,dcop kplayer kplayer-mainwindow#1 caption); 7=Macro(QUIT);\ Macro(FillList);\ Macro(UpdateMenu); 8=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_stop) %9=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_next);\ % ExecAndSet(title,dcop kplayer kplayer-mainwindow#1 caption); * *=Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n4 Rew\n5 Play\n6 FF\n7 Browse files\n8 Stop\n** Help\n0 Pause\n# Exit\n* # - Run/Quit) * #=Exec(echo 'P=`dcop|grep kplayer`; if [ "x$P" == "x" ]; then kplayer; dcop kplayer kplayer-mainwindow#1 activateAction view_full_screen; else dcop kplayer MainApplication-Interface quit; fi' |bash -f -s) 0=Exec(dcop kplayer kplayer-mainwindow#1 activateAction player_pause) #=Macro(QUIT) [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kmid-kde3.cfg0000644000232200023220000000577712073567675024207 0ustar debalancedebalance% % anyremote configuration file for kmid management. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no % FBROWSER v.3i GuiAppName=Kmid GuiAppBinary=kmid GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kmid`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kmid.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KMid is a X11/KDE based midi player for Linux and FreeBSD. GuiAppVersion=echo 'V=`kmid -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Make(mode,kmid); [Mode]=kmid (EnterMode)=Set(layout,default);\ Set(icons,KMid,1,folder,2,default,3,default,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Set(title,);\ Set(status,);\ Macro(ALLIN1MENU); Cancel=Macro(QUIT); QUIT=Exec(echo 'K=`dcop|grep kmid`;dcop $K MainApplication-Interface quit'|bash -f -s); Back=Set(text,close);Macro(ALLIN1MENU) Back($$)=Set(list,close); UpdateMenu=Set(menu,replace,GoTo,Open,Go Home); % FBROWSER v.3i FillList=Set(iconlist,replace,Files,folder:..);\ Macro(FillDir);\ Macro(FillFile); FillDir =ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/'| xargs -d '\n' -i echo "folder:" {}); FillFile=ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/'| xargs -d '\n' -i echo "file:"{}); GoTo($$)=Make(var,goto,by_value,$(Param));\ ExecAndSet(iconlist,replace,Files,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";echo "if [ -d $(goto) ]; then cd $(goto);fi;pwd>$HOME/.anyRemote/ar_storedir.tmp;"|bash -f -s;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); Go Home($$)=ExecAndSet(iconlist,replace,Files,cd;pwd>$HOME/.anyRemote/ar_storedir.tmp;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); % FBROWSER v.3i Open($$)=Set(list,close);\ Set(menu,clear);\ Exec(cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";kmid "$(Param)"); 1=Macro(QUIT);Macro(FillList);Macro(UpdateMenu); 4=Exec(echo 'K=`dcop|grep kmid`;dcop $K KMidIface rewind'|bash -f -s) 5=Exec(echo 'K=`dcop|grep kmid`;dcop $K KMidIface play'|bash -f -s); 6=Exec(echo 'K=`dcop|grep kmid`;dcop $K KMidIface forward'|bash -f -s) 7=Exec(echo 'K=`dcop|grep kmid`;dcop $K KMidIface prevSong'|bash -f -s) 8=Exec(echo 'K=`dcop|grep kmid`;dcop $K KMidIface stop'|bash -f -s); 9=Exec(echo 'K=`dcop|grep kmid`;dcop $K KMidIface nextSong'|bash -f -s) 0=Exec(echo 'K=`dcop|grep kmid`;dcop $K KMidIface pause'|bash -f -s) * *=Set(text,replace,Help,1- Files\n4 - Rew\n5 - Play\n6 - FF\n7 - Prew\n8 - Stop\n9 - Next\n* * - Help\n0 - Pause\n# - Quit) #=Macro(QUIT); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/customizeClient4.cfg0000644000232200023220000000325512073567675025671 0ustar debalancedebalance% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Customize client 4 GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of possible customization of Java Client. Shows how to set colors and fonts. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Set(parameter,debug,on);\ Set(icons,Customize-4,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Set(status,test);\ Set(font,large,bold,italic,system);\ Set(title,discover how to set colors&fonts in lists and text viewer); * *=Set(text,replace,Help,Just press buttons\nand inspect results.) Back=Set(text,close); Back($$)=Set(list,close); 1=Set(text,bg,0,0,255);Set(text,fg,255,255,0);Set(text,replace,Text colors,set foreground and background colors); 2=Set(list,bg,0,0,255);Set(list,fg,255,255,0);Set(list,replace,List colors,set,foreground,and,background,colors); 4=Set(text,font,small);Set(text,replace,Small font,set font size in text viewer); 5=Set(text,font,medium);Set(text,replace,Medium font,set font size in text viewer); 6=Set(text,font,large);Set(text,replace,Large font,set font size in text viewer); 7=Set(list,font,small);Set(list,replace,Small font,set,font,size,in,text,viewer); 8=Set(list,font,medium);Set(list,replace,Medium font,set,font,size,in,text,viewer); 9=Set(list,font,large);Set(list,replace,Large font,set,font,size,in,text,viewer); #=Set(text,bg,255,255,255);Set(text,fg,0,0,0);Set(text,font,small);Set(list,bg,255,255,255);Set(list,fg,0,0,0);Set(list,font,small);Set(status,test) [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/gnomeradio.cfg0000644000232200023220000000247212120355622024524 0ustar debalancedebalance% % anyremote configuration file for Gnomeradion (http://www.wh-hms.uni-ulm.de/~mfcn/gnomeradio/) % management. (Server-mode) % % STATUS stable % XTEST yes % SOUND app % ENV no GuiAppName=Gnomeradio GuiAppBinary=gnomeradio GuiAppRun=echo 'A=`ps -ef|grep gnomeradio|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=gnomeradio.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Gnomeradio is a FM-radio tuner for the GNOME desktop [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Set(icons,GnomeRadio,1,vol_down,2,mute,3,vol_up,4,prev,5,default,6,next,7,default,8,default,9,default,*,question,0,default,#,no);\ Exec(echo 'A=`ps -ef|grep gnomeradio|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" == "x" ]; then gnomeradio& fi' | bash -f -s); Back=Set(text,close); Cancel=Exec(killall gnomeradio); 1=Emulate(key,KP_Subtract) 2=Emulate(key,m) 3=Emulate(key,KP_Add) 4=Emulate(key,p) 6=Emulate(key,n) * *=Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n4 Previous\n6 Next\n* * Help\n* # Run/Quit\n# Quit); * #=Exec(echo 'A=`ps -ef|grep gnomeradio|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" == "x" ]; then gnomeradio& else killall gnomeradio; fi' | bash -f -s); #=Exec(killall gnomeradio) [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/juk-kde3.cfg0000644000232200023220000000650512073567675024042 0ustar debalancedebalance% % anyremote configuration file for Juk/KDE3 management (Server-mode) % % STATUS stable % XTEST no % SOUND app % ENV no % IPC DCOP GuiAppName=Juk/KDE3 GuiAppBinary=juk GuiAppVersion=echo 'V=`juk -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s GuiAppRun=echo 'A=`dcop 2> /dev/null|grep juk`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=juk.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=JuK is a free software audio player for KDE, part of the kdemultimedia package. JuK supports collections of MP3, Ogg Vorbis, and FLAC audio files. This configuration file is for Juk/KDE3. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`juk -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Make(mode,juk); JUK_SETTITLE=ExecAndSet(title,dcop juk Player playingString) [Mode]=juk (EnterMode)=Make(var,juk_volume,by_value,-1);Exec(echo 'A=`dcop|grep juk`; if [ "x$A" == "x" ]; then juk; fi'|bash -f -s);\ Set(layout,default);Set(icons,Juk,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Set(font,small);\ Set(menu,replace,Playlist);\ Macro(ALLIN1MENU) (ExitMode)=Timer(JUK_SETTITLE,cancel) Cancel =Exec(dcop juk MainApplication-Interface quit); Back =Set(text,close);Set(menu,replace,Playlist);Macro(ALLIN1MENU) Playlist=Timer(JUK_SETTITLE,cancel);Make(mode,juk_playlist) 1=Exec(dcop juk Player volumeDown) %2=Exec(dcop juk Player mute) -- does not unmute 2=Make(var,juk_volume,echo 'if [ "x$(juk_volume)" == "x-1" ]; then dcop juk Player volume;dcop juk Player setVolume 0; else dcop juk Player setVolume $(juk_volume); echo "-1"; fi;'|bash -f -s) 3=Exec(dcop juk Player volumeUp) %4=Exec(dcop juk Player seekBack) %6=Exec(dcop juk Player seekForward) 4=Exec(echo 'T=`dcop juk Player currentTime`;T2=`expr $T - 5`;dcop juk Player seek $T2'| bash -f -s); 5=Exec(dcop juk Player play);Macro(JUK_SETTITLE);Timer(JUK_SETTITLE,5,0) 6=Exec(echo 'T=`dcop juk Player currentTime`;T2=`expr $T + 5`;dcop juk Player seek $T2'| bash -f -s); 7=Exec(dcop juk Player back);Macro(JUK_SETTITLE); 8=Exec(dcop juk Player stop);Timer(JUK_SETTITLE,cancel) 9=Exec(dcop juk Player forward);Macro(JUK_SETTITLE); * *=Set(text,replace,Help,1 Vol- 2 Mute 3 Vol+\n4 Rew 5 Play 6 FF\n7 Prew 8 Stop 9 Next\n** Help 0 Pause # Kill) * #=Exec(echo 'P=`dcop|grep juk`; if [ "x$P" == "x" ]; then juk; else dcop juk MainApplication-Interface quit; fi'|bash -f -s); 0=Exec(dcop juk Player playPause); #=Exec(dcop juk MainApplication-Interface quit);Timer(JUK_SETTITLE,cancel) [ModeEnd] [Mode]=juk_playlist (EnterMode)=Timer(JUK_SETTITLE,cancel);\ Set(list,font,medium);\ ExecAndSet(list,replace,Playlist,echo 'L=`dcop juk Collection playlist`;dcop juk Collection playlistTracks "$L" > $HOME/.anyRemote/juk.playlist'| bash -f -s;cat $HOME/.anyRemote/juk.playlist |sed "s/'/_/g"|xargs -i basename {}|sed 's/,/\r/g;s/$/,/');\ Set(menu,add,Choose); (ExitMode)=Macro(JUK_SETTITLE);\ Timer(JUK_SETTITLE,5,0); Back($$) =Make(mode,juk); Choose($$)=Exec(echo 'F=`head -$(Index) $HOME/.anyRemote/juk.playlist|tail -1`;dcop juk Player play "$F"'| bash -f -s); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/customizeClient.cfg0000644000232200023220000000343112073567675025601 0ustar debalancedebalance% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Customize client GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of possible customization of Java Client. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Set(parameter,debug,on);\ Get(screen_size);\ Get(model);\ Get(version);\ Get(ping);\ Get(cover_size);\ Set(fg,0,0,0);\ Set(bg,255,255,255);\ Set(status,status field);\ Set(title,title\nfield);\ Set(icons,Customize-1,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no); Back=Set(text,close,clear); 1=Set(status,test string test string) 2=Set(fg,255,255,0);Set(icons,Set foregroung) 3=Set(bg,0,0,0);Set(fg,255,255,255);Set(icons,caption); 4=Set(font,small);Set(icons,set small font,4,minus,5,down,6,plus); 5=Set(font,medium);Set(icons,set medium font); 6=Set(font,large);Set(icons,set large font); 7=Set(list,replace,Example list,Item1, Item2, Item3,Item4, Item5,Item6,Item7,Item8,Item9, Item10); 8=Set(title,12345678901234567890123456789012345678901234567890) 9=Set(title,123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890);Set(icons,show very long string); * *=Set(text,replace,Help,Just press buttons\nand inspect results) * 1=Set(text,show); * 2=Set(list,show); 0 0=Set(vibrate); 0 1=Set(fullscreen,on); 0 2=Set(fullscreen,off); 0 7=Make(disconnect); 0 8=Set(disconnect); #=Set(fg,0,0,0);Set(bg,255,255,255);Set(status,status field);Set(title,title field);Set(icons,caption); Back($$)=Set(list,close,clear); Select($$)=Set(title,$(Param) was selected);Set(list,close); [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kpdf.cfg0000644000232200023220000000627412073567675023354 0ustar debalancedebalance% % anyremote configuration file for kpdf management (Server-mode) % % OBSOLETED % STATUS stable % XTEST no % SOUND no % ENV no % FBROWSER v.3i GuiAppName=Kpdf GuiAppBinary=kpdf GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kpdf`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kpdf.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KPDF is a pdf viewer based on xpdf for KDE. GuiAppVersion=echo 'V=`kpdf -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Make(mode,kpdf); [Mode]=kpdf (EnterMode)=Set(layout,default);\ Set(icons,KPDF,1,folder,2,up,3,default,4,left,5,fullscreen,6,right,7,default,8,down,9,default,*,question,0,default,#,no);\ Set(font,small);\ Set(title, );\ Set(status, KPDF);\ Macro(ALLIN1MENU); Back =Set(text,close);Macro(ALLIN1MENU); Back($$) =Set(list,close);Macro(ALLIN1MENU); UpdateMenu=Set(menu,replace,GoTo,Open,Go Home); % FBROWSER v.3i FillList=Set(iconlist,replace,Files,folder:..);\ Macro(FillDir);\ Macro(FillFile); FillDir =ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/'| xargs -d '\n' -i echo "folder:" {}); FillFile=ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/'| xargs -d '\n' -i echo "file:"{}); GoTo($$)=Make(var,goto,by_value,$(Param));\ ExecAndSet(iconlist,replace,Files,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";echo "if [ -d $(goto) ]; then cd $(goto);fi;pwd>$HOME/.anyRemote/ar_storedir.tmp;"|bash -f -s;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); Go Home($$)=ExecAndSet(iconlist,replace,Files,cd;pwd>$HOME/.anyRemote/ar_storedir.tmp;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); % FBROWSER v.3i Open($$)=\ Set(list,close);\ Set(title,$(Param));\ Set(menu,clear);\ Exec(echo 'D=`dcop|grep kpdf`; if [ "x$D" == "x" ]; then cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";kpdf "$(Param)"& fi'|bash -f -s);\ Macro(ALLIN1MENU); Cancel=\ Exec(echo 'D=`dcop|grep kpdf`; if [ "x$D" != "x" ]; then dcop $D MainApplication-Interface quit; fi'|bash -f -s); 1=Macro(FillList);Macro(UpdateMenu); 2=Exec(echo 'D=`dcop|grep kpdf`; if [ "x$D" != "x" ]; then dcop $D kpdf slotGotoFirst; fi'|bash -f -s) 3=Make(none) 4=Exec(echo 'D=`dcop|grep kpdf`; if [ "x$D" != "x" ]; then dcop $D kpdf slotPreviousPage; fi'|bash -f -s) 5=Exec(echo 'D=`dcop|grep kpdf`; if [ "x$D" != "x" ]; then dcop $D KPDF::Shell activateAction fullscreen; fi'|bash -f -s) 6=Exec(echo 'D=`dcop|grep kpdf`; if [ "x$D" != "x" ]; then dcop $D kpdf slotNextPage; fi'|bash -f -s) 7=Make(none) 8=Exec(echo 'D=`dcop|grep kpdf`; if [ "x$D" != "x" ]; then dcop $D kpdf slotGotoLast; fi'|bash -f -s) 9=Make(none) * *=Set(text,replace,Help,1 Choose file\n2 First page\n4 Previous page\n5 Fullscreen\n6 Next page\n8 Last page\n** Help\n# Quit\n); 0=Make(none) #=Exec(echo 'D=`dcop|grep kpdf`; if [ "x$D" != "x" ]; then dcop $D MainApplication-Interface quit; fi'|bash -f -s);Set(title, ); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kaffeine-v2-kde3.cfg0000644000232200023220000004447712073567675025360 0ustar debalancedebalance% % anyremote configuration file for Kaffeine management. (Server-mode) % thanks to Massimo Robbiati for this configuration file % % IMPORTANT! % This script was developed and tested with Kaffeine 0.8.6 % There are some problems: % - Kaffeine playlist should be already created; % - player status could be not correct, "paused" and "playing" status are guessed at start, so the wrong status can be displayed; % - title of played tracks are not always correct in cd, vcd, dvd and dvb (dcop kaffeine KaffeineIface title does not work always correctly); % - DVB channel list should be already created ($HOME/.kde/share/apps/kaffeine/channels.dvb). % % Thanks to Kaffeine's developers for the great work % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Kaffeine v.2 GuiAppBinary=kaffeine GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kaffeine`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kaffeine.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KDE media player. Extended version. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var,_current_path_,echo $HOME);\ Make(var,_player_status_,by_value,stopped);\ Make(var,_dvb_channels_file_, echo "$HOME/.kde/share/apps/kaffeine/channels.dvb"); (Connect)=Make(mode,kaffeineMain); START_KAFFEINE=Exec(echo 'A=`dcop|grep kaffeine`; if [ "x$A" == "x" ]; then kaffeine;fi'|bash -f -s) PLAYER_SET_PLAY=Make(var,_player_status_,by_value,playing) PLAYER_SET_PAUSE=Make(var,_player_status_,PLAYER_STATUS=$(_player_status_);if [ $PLAYER_STATUS = paused ]; then echo playing; else echo paused;fi) PLAYER_STATUS=Make(var,_player_status_,sleep 1;PLAYER_STATUS=$(_player_status_);if [ "$(dcop|grep kaffeine)" = "" ]; then echo ""; else if [ $(dcop kaffeine KaffeineIface isPlaying) = false ]; then echo stopped; else if [ $PLAYER_STATUS = paused ]; then echo paused; else echo playing; fi; fi; fi);ExecAndSet(status,echo $(_player_status_));ExecAndSet(volume, echo $((`dcop kaffeine KaffeineIface getTimePos`*100/`dcop kaffeine KaffeineIface getLength`))) TOGGLE_FULLSCREEN=Exec(dcop kaffeine KaffeineIface fullscreen) % Main Interface MAIN_STATUS=Set(title,Main Menu);Macro(PLAYER_STATUS) [Mode]=kaffeineMain (EnterMode)=Macro(START_KAFFEINE);\ Set(layout,default,ticker);\ Make(var,_dvb_,sleep 1;if [ "$(dcop kaffeine KaffeineIface | grep playDvb)" = "" ]; then echo ","; else echo ",DVB";fi);\ Set(icons,Kaffeine,1,folder,2,default,3,default,4,default,5,play,6,default,7,default,8,default,9,default,*,question,0,default,#,no);\ Set(menu,replace,CD,DVD,VCD$(_dvb_),Close and exit);\ Timer(MAIN_STATUS,5,0); (ExitMode)=Timer(MAIN_STATUS,cancel); Cancel=Exec(dcop kaffeine KaffeineIface quit);Macro(MAIN_STATUS); Back=Macro(Cancel); 1=Make(mode,openFileMain); 5=Make(mode,kaffeine); 7= ; 8= ; 9= ; CD=Make(mode,cd); VCD=Make(mode,vcd); DVD=Make(mode,dvd); DVB=Make(mode,dvb); * 1= ; * 3= ; * *=Make(mode,helpMain); * #= ; 0= ; #=Macro(Cancel); Close and exit=Macro(Cancel); [ModeEnd] [Mode]=helpMain ((EnterMode)=Set(text,replace,Help,Help:\n 1 - play PLAYLIST\n 2 - play CD\n 3 - play VCD\n 4 - play DVD\n 5 - play DVB\n * - Help\n # - Exit); (ExitMode)=Set(text,close); Back=Make(mode,kaffeineMain); [ModeEnd] [Mode]=openFileMain BACK=Make(mode,kaffeineMain) OPEN_FILE=Make(var,_current_path_,echo '$(_tmp_path_)');Macro(BACK) LIST=Set(list,replace,Files,..);ExecAndSet(list,add,SAME,cd '$(_tmp_path_)';ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/$/,/') (EnterMode)=Make(var,_tmp_path_,echo $(_current_path_));Make(var,_is_directory_,echo 1);Macro(LIST);Set(menu,replace,Open,Append file,Open directory); (ExitMode)=Set(list,close); Back($$)=Macro(BACK); %GoTo($$)=Make(var,_tmp_path_,cd '$(_tmp_path_)';if [ -d $(Param) ]; then cd $(Param);fi;pwd);Macro(LIST); Open($$)=Make(var,_is_directory_,cd '$(_tmp_path_)';if [ -d $(Param) ];then echo 0;else echo 1;fi);\ Make(var,_tmp_path_,cd '$(_tmp_path_)';if [ -d $(Param) ]; then cd $(Param);fi;pwd);\ Macro(OPEN_FILE,if [ "$(_is_directory_)" = "0" ];then echo 1;else dcop kaffeine KaffeineIface openURL '$(_tmp_path_)/'$(Param);echo 0;fi);\ Macro(LIST,echo $(_is_directory_)); Append file($$)=Exec(dcop kaffeine KaffeineIface appendURL '$(_tmp_path_)/'$(Param));Make(var,_current_path_,echo '$(_tmp_path_)');Macro(BACK); Open directory($$)=Make(var,_is_directory_,cd '$(_tmp_path_)';if [ -d $(Param) ];then echo 0;else echo 1;fi);\ Macro(OPEN_FILE,if [ "$(_is_directory_)" = "0" ];then dcop kaffeine KaffeineIface openURL '$(_tmp_path_)/'$(Param);echo 0;else echo 1;fi);\ Macro(LIST,if [ "$(_is_directory_)" = "0" ];then echo 1;else echo 0;fi); [ModeEnd] %Standard Interface KAFFEINE_SETTITLE=ExecAndSet(title,if [ "$(dcop kaffeine KaffeineIface title)" = "" ]; then basename $(dcop kaffeine KaffeineIface getFileName); else echo "$(dcop kaffeine KaffeineIface title) $(dcop kaffeine KaffeineIface album) $(dcop kaffeine KaffeineIface artist)"; fi) KAFFEINE_STATUS=Macro(PLAYER_STATUS);Macro(KAFFEINE_SETTITLE) [Mode]=kaffeine OPEN_FILE=Make(mode,openFile) ((EnterMode)=Macro(START_KAFFEINE);\ Set(layout,default,ticker,volume);\ Set(icons,Kaffeine,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,folder);\ Set(menu,replace,Open file,Toggle fullscreen,Next audio channel, Next subtitle channel,Back);\ Macro(KAFFEINE_STATUS);\ Timer(KAFFEINE_STATUS,10,0); (ExitMode)=Timer(KAFFEINE_STATUS,cancel); Back=Set(text,close);Make(mode,kaffeineMain); 1=Exec(dcop kaffeine KaffeineIface volDown); 2=Exec(dcop kaffeine KaffeineIface mute); 3=Exec(dcop kaffeine KaffeineIface volUp); 4=Exec(dcop kaffeine KaffeineIface posMinus); 5=Exec(dcop kaffeine KaffeineIface play);Macro(PLAYER_SET_PLAY);Macro(KAFFEINE_STATUS); 6=Exec(dcop kaffeine KaffeineIface posPlus); 7=Exec(dcop kaffeine KaffeineIface previous);Macro(PLAYER_SET_PLAY);Macro(KAFFEINE_STATUS); 8=Exec(dcop kaffeine KaffeineIface stop);Macro(KAFFEINE_STATUS); 9=Exec(dcop kaffeine KaffeineIface next);Macro(PLAYER_SET_PLAY);Macro(KAFFEINE_STATUS); * 1=;%Exec(dcop kaffeine XinePartIface zoomOut); * 3=;%Exec(dcop kaffeine XinePartIface zoomIn); * *=Make(mode,helpStandard); * #=Exec(echo 'P=`dcop|grep kaffeine`; if [ "x$P" == "x" ]; then kaffeine;sleep 2;dcop kaffeine KaffeineIface setNumber 1; else dcop kaffeine KaffeineIface quit; fi;' |bash -f -s) 0=Exec(dcop kaffeine KaffeineIface pause);Macro(PLAYER_SET_PAUSE);Macro(KAFFEINE_STATUS); #=Macro(Playlist); %Macro(OPEN_FILE); % Menu macro Playlist=Make(mode,kaffeine_playlist); Open file=Macro(OPEN_FILE); Toggle fullscreen=Macro(TOGGLE_FULLSCREEN); Next audio channel=Exec(dcop kaffeine XinePartIface nextAudioChannel); Next subtitle channel=Exec(dcop kaffeine XinePartIface nextSubtitleChannel); [ModeEnd] [Mode]=helpStandard (EnterMode)=Set(text,replace,Help,Help:\n 1 - volume Down\n 2 - Mute \n 3 - volume Up\n 4 - Rewind\n 5 - Play\n 6 - Fast Forward\n 7 - Previous\n 8 - Stop\n 9 - Next\n * - Help\n 0 - Pause \n # - Playlist); (ExitMode)=Set(text,close); Back=Make(mode,kaffeine); [ModeEnd] [Mode]=kaffeine_playlist BACK=Make(mode,kaffeine) (EnterMode)=Set(list,font,medium);\ ExecAndSet(list,replace,Playlist,grep url $HOME/.kde/share/apps/kaffeine/playlists/`grep Playlists $HOME/.kde/share/config/kaffeinerc|head -1|sed 's/Playlists=//'`.kaffeine|sed 's/ /dev/null|grep digikam`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=digikam.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=digiKam is an advanced digital photo management application for KDE [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`digikam -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); DIGIKAM_SETUP=Set(status,Album Mode);\ Set(icons,Digikam,1,default,2,up,3,default,4,left,5,default,6,right,7,default,8,down,9,default,0,fullscreen,*,question,#,folder);\ Set(status, );Set(title, ); (Connect)=Macro(DIGIKAM_SETUP);\ Exec(echo 'D=`dcop|grep digikam`; if [ "x$D" == "x" ]; then digikam 2> /dev/null & fi'|bash -f -s); (EnterMode)=Macro(DIGIKAM_SETUP); Cancel=Exec(echo 'D=`dcop|grep digikam`; if [ "x$D" != "x" ]; then dcop $D MainApplication-Interface quit;sleep 3;pkill digikam; fi'|bash -f -s); Back=Set(text,close); % Back=Exec(konsole); % Konsole=Exec(konsole); % 1=Set(icons, icons, 1,up); % 3=Set(title, title\n2\n3\n4\n5\n6\n7\n8\n9\n0\n1\n2\n3); % 5=Set(status,statuus); % 7=Set(fullscreen,toggle); % 9=Set(vibrate); 2=Emulate(key,Up) 4=Emulate(key,Left) 6=Emulate(key,Right) 8=Emulate(key,Down) * *=Set(text,replace,Help,Album Mode\n 2 Up\n 4 Left\n 6 Right\n 8 Down\n 0 Fullscreen view\n * # Run/Quit\n * * - Help\n # Mouse mode) * #=Exec(echo 'D=`dcop|grep digikam`; if [ "x$D" == "x" ]; then digikam 2> /dev/null & else dcop $D MainApplication-Interface quit;sleep 3;pkill digikam; fi'|bash -f -s) 0=Make(mode,Viewer); #=Make(mode,Mouse); [Mode]=Viewer (EnterMode)=Set(status,Slideshow Mode);\ Set(icons,SAME,1,prev,2,up,3,next,4,left,5,down,6,right,7,minus,8,fit,9,plus,0,fullscreen,*,question,#,folder);\ Exec(echo 'D=`dcop|grep digikam`;dcop $D Digikam hide;dcop $D Digikam show;dcop $D Digikam activateAction image_view;dcop $D Digikam activateAction full_screen'|bash -f -s);\ Emulate(mousermove,10000,10000,mousermove,-20,-20); % Make sure that we quit from full_screen image_view, when we leave the mode (ExitMode)=Set(status,Normal);\ Exec(echo 'D=`dcop|grep digikam`;dcop $D Digikam activateAction image_view;dcop $D Digikam activateAction full_screen' |bash -f -s) 1=Emulate(key,Page_Up) * 2=Make(none) 3=Emulate(key,Page_Down) % Scroll the image when we have zoomed in 2=Emulate(mousermove,0,-200,mousedown,2,mousermove,0,200,mouseup,2) 4=Emulate(mousermove,-200,0,mousedown,2,mousermove,200,0,mouseup,2) 5=Emulate(mousedown,2,mousermove,0,-200,mouseup,2,mousermove,0,200) 6=Emulate(mousedown,2,mousermove,-200,0,mouseup,2,mousermove,200,0) 4=Make(none) 5=Make(none) 6=Make(none) % Size - / fit to window size vs. zoom 100% / Size + * 7=Emulate(keydown,Control_R,key,minus,keyup,Control_R) * 8=Emulate(key,O) * 9=Emulate(keydown,Control_R,keydown,Shift_L,key,plus,keyup,Control_R,keyup,Shift_L) 7=Exec(dcop `dcop|grep digikam` Digikam activateAction album_zoomout) 8=Emulate(keydown,Control_R,keydown,Alt_L,key,0,keyup,Control_R,keyup,Alt_L) * 8=Exec(dcop `dcop|grep digikam` Digikam activateAction album_zoomfit2window) 9=Exec(dcop `dcop|grep digikam` Digikam activateAction album_zoomin) * *=Set(text,replace,Help,Image View\n 1 Previous\n 2 Scroll up\n 3 Next\n 4 Scroll left\n 5 Scroll down\n 6 Scroll right\n 7 Size -\n 8 Fit To Window / Zoom 1:1\n 9 Size +\n 0 Album mode\n * * Help\n # Mouse mode) 0=Make(mode,default); #=Make(mode,Mouse); [ModeEnd] [Mode]=Mouse (EnterMode)=Set(status,Select an album using the mouse);\ Set(icons,SAME,1,stop,2,up,3,stop,4,left,5,default,6,right,7,default,8,down,9,default,0,fullscreen,*,question,#,folder);Exec(xte 'mousermove -10000 0' 'mousermove 150') 1=Emulate(mousedown,1,sleep,100,mouseup,1) 2=Emulate(mousermove,0,-18) 3=Emulate(mousedown,3,sleep,100,mouseup,3) 4=Emulate(mousermove,-18,0) 5=Make(none) 6=Emulate(mousermove,18,0) 7=Make(none) 8=Emulate(mousermove,0,18) 9=Make(none) * *=Set(text,replace,Help,This mode is for choosing an album\n 1 LMB\n 2 Move up\n 3 RMB\n 4 Move left\n 6 Move right\n 8 Move down\n 0 Fullscreen view\n * * Help\n # Album view); 0=Make(mode,Viewer); #=Make(mode,default); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/gwenview-kde3.cfg0000644000232200023220000000664012120355622025060 0ustar debalancedebalance% % anyremote configuration file for Gwenview/KDE3 management. (Server-mode) % % STATUS non-stable % TODO % XTEST no % SOUND no % ENV no % FBROWSER v.3i GuiAppName=Gwenview/KDE3 GuiAppBinary=gwenview GuiAppVersion=echo 'V=`gwenview -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s GuiAppRun=echo 'A=`dcop 2> /dev/null|grep gwenview`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=gwenview.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Gwenview is a fast and easy to use image viewer for KDE. This configuration file is for Gwenview/KDE3. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Make(mode,gwenview); [Mode]=gwenview (EnterMode)=Set(layout,default);\ Set(icons,Gwenview,1,folder,2,default,3,default,4,left,5,fullscreen,6,right,7,minus,8,fit,9,plus,0,default,*,question,#,no);\ Set(title,);\ Set(status,);\ Macro(ALLIN1MENU); Cancel=Macro(QUIT); Back=Set(text,close);Macro(ALLIN1MENU) Back($$)=Set(list,close); UpdateMenu=Set(menu,replace,GoTo,Open,Go Home); % FBROWSER v.3i FillList=Set(iconlist,replace,Files,folder:..);\ Macro(FillDir);\ Macro(FillFile); FillDir =ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/'| xargs -d '\n' -i echo "folder:" {}); FillFile=ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/'| xargs -d '\n' -i echo "file:"{}); GoTo($$)=Make(var,goto,by_value,$(Param));\ ExecAndSet(iconlist,replace,Files,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";echo "if [ -d $(goto) ]; then cd $(goto);fi;pwd>$HOME/.anyRemote/ar_storedir.tmp;"|bash -f -s;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); Go Home($$)=ExecAndSet(iconlist,replace,Files,cd;pwd>$HOME/.anyRemote/ar_storedir.tmp;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); % FBROWSER v.3i Open($$)=Set(list,close);\ Set(menu,clear);\ Macro(QUIT);\ Exec(gwenview "`cat $HOME/.anyRemote/ar_storedir.tmp`"); QUIT=Exec(echo 'G=`dcop|grep gwenview`; if [ "x$G" == "x" ]; then true; else dcop $G MainApplication-Interface quit; fi'|bash -f -s) 1=Macro(QUIT);Macro(FillList);Macro(UpdateMenu); 2=Macro(NONE) 3=Macro(NONE) 4=Exec(echo 'GW=`dcop|grep gwenview`;dcop $GW gwenview-mainwindow#1 activateAction previous'|bash -f -s) 5=Exec(echo 'GW=`dcop|grep gwenview`;dcop $GW gwenview-mainwindow#1 activateAction fullscreen'|bash -f -s) 6=Exec(echo 'GW=`dcop|grep gwenview`;dcop $GW gwenview-mainwindow#1 activateAction next'|bash -f -s) % Size - / fit to window size / Size + 7=Exec(echo 'GW=`dcop|grep gwenview`;dcop $GW gwenview-mainwindow#1 activateAction view_zoom_out'|bash -f -s) 8=Exec(echo 'GW=`dcop|grep gwenview`;dcop $GW gwenview-mainwindow#1 activateAction view_zoom_to_fit'|bash -f -s) 9=Exec(echo 'GW=`dcop|grep gwenview`;dcop $GW gwenview-mainwindow#1 activateAction view_zoom_in'|bash -f -s) * *=Set(text,replace,Help,1 - File browser\n\n 4 - Previous\n 5 - Full Screen\n 6 - Next\n 7 - Size -\n 8 - Fit To Window\n 9 - Size +\n * * - Help\n # - Quit) 0=Macro(NONE) #=Macro(QUIT) [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kaboodle-kde3.cfg0000644000232200023220000000476312073567675025035 0ustar debalancedebalance% OBSOLETED % anyremote configuration file for Kaboodle management. (Server-mode) % % prerequisites: amixer utility % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Kaboodle GuiAppBinary=kaboodle GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kaboodle`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kaboodle.png GuiAppType=Example GuiAppProtocols=Server GuiAppDesc=Simple media player for KDE. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Set(icons,Kaboodle,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,folder,8,stop,9,folder,*,question,0,pause,#,no);\ Exec(echo 'P=`dcop|grep kaboodle`; if [ "x$P" == "x" ]; then kaboodle; fi'|bash -f -s); SHOWLIST =Macro(FILLLIST);Macro(UPDATEMENU) UPDATEMENU=Set(menu,replace,GoTo,Select); FILLLIST =Set(list,replace,Files,..);ExecAndSet(list,add,SAME,cd "`cat $HOME/.anyRemote/ar_kaboodledir.tmp`";pwd>$HOME/.anyRemote/ar_kaboodledir.tmp;ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/$/,/'); GoTo($$) =Set(list,replace,SAME,..);ExecAndSet(list,add,SAME,echo 'cd "`cat $HOME/.anyRemote/ar_kaboodledir.tmp`";if [ -d "$(Param)" ]; then cd "$(Param)";fi;pwd>$HOME/.anyRemote/ar_kaboodledir.tmp;ls -F --quoting-style=shell|sed "s/\*//;s/,/\r/g;s/$/,/";'|bash -f -s); Select($$)=Exec(echo 'K=`dcop|grep kaboodle`;F="`cat $HOME/.anyRemote/ar_kaboodledir.tmp`/$(Param)";dcop $K KMediaPlayer openURL "$F"'|bash -f -s); Back($$) =Set(list,close); Back =Set(text,close); 1=Exec(amixer sset Master,0 5%- -q) 2=Exec(amixer sset Master,0 toggle -q) 3=Exec(amixer sset Master,0 5%+ -q) 4=Exec(echo 'K=`dcop|grep kaboodle`;P=`dcop $K KMediaPlayer position`;P2=`expr $P - 5000`;dcop $K KMediaPlayer seek $P2'|bash -f -s) 5=Exec(echo 'K=`dcop|grep kaboodle`;dcop $K KMediaPlayer play'|bash -f -s); 6=Exec(echo 'K=`dcop|grep kaboodle`;P=`dcop $K KMediaPlayer position`;P2=`expr $P + 5000`;dcop $K KMediaPlayer seek $P2'|bash -f -s) 7=Macro(SHOWLIST); 8=Exec(echo 'K=`dcop|grep kaboodle`;dcop $K KMediaPlayer stop'|bash -f -s); 9=Macro(SHOWLIST); * #=Exec(echo 'P=`dcop|grep kaboodle`; if [ "x$P" == "x" ]; then kaboodle; else K=`dcop|grep kaboodle`;dcop $K KMediaPlayer pause; fi'|bash -f -s); * *=Set(text,replace,Help,1 Vol- 2 Mute 3 Vol+\n4 Rew 5 Play 6 FF\n7 Files 8 Stop 9 Files\n* Help 0 Pause # Quit\n* # Run/Quit Kaboodle); 0=Exec(echo 'K=`dcop|grep kaboodle`;dcop $K KMediaPlayer pause'|bash -f -s); #=Exec(echo 'K=`dcop|grep kaboodle`;dcop $K MainApplication-Interface quit'|bash -f -s); [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kuickshow.cfg0000644000232200023220000000634612073567675024437 0ustar debalancedebalance% % anyremote configuration file for kuickshow management. (Server-mode) % % There were found no DCOP-oriented way to traverse the albums and photos, so XTest is used % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.3 GuiAppName=Kuickshow GuiAppBinary=kuickshow GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kuickshow`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kuickshow.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KuickShow is an image browser/viewer GuiAppVersion=echo 'V=`kuickshow -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Macro(KUICKSHOW_LAYOUT);\ Set(title,);\ Set(status,); KUICKSHOW_LAYOUT=Set(icons,Kuickshow,1,folder,2,up,3,up,4,left,5,fullscreen,6,right,7,default,8,down,9,file,*,question,0,default,#,no); Cancel=Exec(echo 'K=`dcop|grep kuickshow`;dcop $K MainApplication-Interface quit'|bash -f -s); Back=Set(text,close); Back($$)=Set(list,close); UpdateMenu=Set(menu,replace,GoTo,Open Dir); % FBROWSER v.3 FillList=Set(list,replace,Files,..);\ ExecAndSet(list,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/,/\r/g;s/$/,/'); GoTo($$)=Set(list,replace,SAME,..);\ Make(var,goto,by_value,$(Param));\ ExecAndSet(list,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";echo "if [ -d $(goto) ]; then cd $(goto);fi;pwd>$HOME/.anyRemote/ar_storedir.tmp;ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/,/\r/g;s/$/,/'"|bash -f -s); % FBROWSER v.3 Open Dir($$)=Set(list,close);\ Set(menu,clear);\ Exec(echo 'K=`dcop|grep kuickshow`;if [ "x$K" == "x" ]; then true; else dcop $K MainApplication-Interface quit; fi;'| bash -f -s;kuickshow "`cat $HOME/.anyRemote/ar_storedir.tmp`/$(Param)");\ Emulate(sleep,5000,key,Tab,sleep,500,key,Tab); 1=Macro(FillList);Macro(UpdateMenu); 2=Emulate(key,Page_Up) 3=Exec(echo 'K=`dcop|grep kuickshow`;dcop $K kuickshow activateAction up'|bash -f -s) 4=Emulate(key,Left) 5=Make(mode,Fullscreen); 6=Emulate(key,Right) 8=Emulate(key,Page_Down) 9=Emulate(key,Return) * *=Set(text,replace,Help,1 - File browser\n2 - Up\n3 - Up Dir\n4 - Left\n5 - Full Screen\n6 - Right\n8 - Down\n9 - Into Dir\n* * - Help\n# - Quit\n) #=Exec(echo 'K=`dcop|grep kuickshow`;dcop $K MainApplication-Interface quit'|bash -f -s) [Mode]=Fullscreen (EnterMode)=Set(icons,SAME,1,default,2,default,3,default,5,no,7,minus,8,default,9,plus);Exec(echo 'KS=`dcop|grep kuickshow`;dcop $KS kuickshow activateAction kuick_showFullscreen'|bash -f -s) % empty values to override default ones 1=Make(none) 2=Make(none) 3=Make(none) % Prev/Fullscreen off/Next 4=Emulate(key,Page_Up) 5=Make(mode,default);Macro(KUICKSHOW_LAYOUT);Emulate(key,Escape) 6=Emulate(key,Page_Down) % Size -/ /Size + 7=Emulate(key,minus) 8=Make(none) 9=Emulate(keydown,Shift_L,key,plus,keyup,Shift_L) * *=Set(text,replace,Help,4 - Previous\n5 - Full Screen Off\n6 - Next\n7 - Size -\nSize +\n* * - Help\n# - Quit) [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kaffeine_dvbt-kde3.cfg0000644000232200023220000000670412073567675026041 0ustar debalancedebalance% % anyremote configuration file for DVB-T viewing by Kaffeine. (Server-mode) % Kaffeine playlist should be already created % % Thanks to Johann Bauer for this configuration file. % % STATUS unknown % XTEST no % SOUND app % ENV no GuiAppName=KaffeineDVBT GuiAppBinary=kaffeine GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kaffeine`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kaffeine.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=View DVB-T by Kaffeine (KDE media player) [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Make(mode,kaffeine); KAFFEINE_SETTITLE=Set(title,DVB-T) [Mode]=kaffeine (EnterMode)=Exec(echo 'A=`dcop 2> /dev/null|grep kaffeine`; if [ "x$A" == "x" ]; then kaffeine;sleep 2;dcop kaffeine KaffeineIface playDvb;fi'|bash -f -s);\ Set(layout,default);\ Set(title,DVB-T);\ Set(icons,Kaffeine,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Set(menu,replace,Channels,Toggle fullscreen,Close and exit,DVB-T Start);\ Macro(ALLIN1MENU); Cancel=Exec(dcop kaffeine KaffeineIface quit); Back=Set(text,close);Macro(ALLIN1MENU) 1=Exec(dcop kaffeine KaffeineIface volDown) 2=Exec(dcop kaffeine KaffeineIface mute) 3=Exec(dcop kaffeine KaffeineIface volUp) 4=Exec(dcop kaffeine KaffeineIface posMinus) 5=Exec(dcop kaffeine KaffeineIface play);Set(status,Playing);Macro(KAFFEINE_SETTITLE);Timer(KAFFEINE_SETTITLE,10,0); 6=Exec(dcop kaffeine KaffeineIface posPlus) 7=Exec(dcop kaffeine KaffeineIface previous); 8=Exec(dcop kaffeine KaffeineIface stop);Set(status,Stopped);Timer(KAFFEINE_SETTITLE,cancel); 9=Exec(dcop kaffeine KaffeineIface next) * 1=Exec(dcop kaffeine XinePartIface zoomOut); * 3=Exec(dcop kaffeine XinePartIface zoomIn); * *=Set(text,replace,Help,1 Vol- 2 Mute 3 Vol+\n4 Rew 5 Play 6 FF\n7 Prew 8 Stop 9 Next\n* Help 0 Pause # Exit\n* 1 - Zoom In\n* 3 - Zoom Out\n* # - Run/Quit) * #=Exec(echo 'P=`dcop|grep kaffeine`; if [ "x$P" == "x" ]; then kaffeine;sleep 2;dcop kaffeine KaffeineIface setNumber 1; else dcop kaffeine KaffeineIface quit; fi;' |bash -f -s) 0=Exec(dcop kaffeine KaffeineIface pause);Make(mode,kaffeine_pause); #=Exec(dcop kaffeine KaffeineIface quit) Channels=Make(mode,kaffeine_playlist) Toggle fullscreen=Exec(dcop kaffeine KaffeineIface fullscreen); Close and exit=Macro(Cancel); DVB-T Start=Exec(dcop kaffeine KaffeineIface playDvb); [ModeEnd] [Mode]=kaffeine_pause Back=Set(text,close);Set(menu,replace,Channels,Toggle fullscreen);Macro(ALLIN1MENU) (EnterMode)=Set(status,Paused); 0=Exec(dcop kaffeine KaffeineIface pause);Set(status,Playing);Make(mode,kaffeine); 5=Exec(dcop kaffeine KaffeineIface play;dcop kaffeine KaffeineIface fullscreen);\ Make(mode,kaffeine);\ Set(status,Playing);\ * *=Set(text,replace,Help,1 Vol- 2 Mute 3 Vol+\n4 Rew 5 Play 6 FF\n7 Prew 8 Stop 9 Next\n* Help 0 Pause # Exit\n* # - Run/Quit) [ModeEnd] [Mode]=kaffeine_playlist (EnterMode)=Timer(KAFFEINE_SETTITLE,cancel);\ Set(list,font,medium);\ ExecAndSet(list,replace,Channels, cut -d\| -f2 $HOME/.kde/share/apps/kaffeine/channels.dvb |sed '1d' | tr \\n ,);\ Set(menu,add,Choose); (ExitMode)=Set(list,close);\ Set(status,Playing);\ Set(menu,replace,Channels,Toggle fullscreen,Close and exit,DVB-T Start);\ Set(title,DVB-T);\ Macro(KAFFEINE_SETTITLE);\ Timer(KAFFEINE_SETTITLE,10,0); Back($$)=Make(mode,kaffeine); Choose($$)=Exec(dcop kaffeine KaffeineIface setNumber `expr $(Index)`); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/xdtv.cfg0000644000232200023220000000472412120355622023367 0ustar debalancedebalance% % anyremote configuration file for xdtv management. (Server-mode) % prerequisites: xdtv, xdtv_cmd % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=XdTV GuiAppBinary=xdtv GuiAppRun=echo 'P=`ps -ef|grep xdtv|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then echo NOK; else echo OK; fi' | bash -f -s GuiAppIcon=xdtv.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=XdTV is a software to watch, record and stream TV [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Make(mode,xdtv); XDTV_VOLDN=Exec(xdtv_cmd "volume dec") XDTV_MUTE=Exec(xdtv_cmd "volume tvmute") XDTV_VOLUP=Exec(xdtv_cmd "volume inc") XDTV_CHDN=Exec(xdtv_cmd "setchannel prev"); XDTV_ZOOM=Exec(xdtv_cmd fullscreen) XDTV_CHUP=Exec(xdtv_cmd "setchannel next"); [Mode]=xdtv (EnterMode)=Exec(echo 'P=`ps -ef|grep xdtv|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" == "x" ]; then xdtv -capt_width 720 -capt_height 576& fi' |bash -f -s);\ Set(status,Type channel number);\ Set(title,);\ Set(icons,SAME,0,default,1,default,2,default,3,default,4,default,5,default,6,default,7,default,8,default,9,default,#,refresh,*,question);\ Macro(XDTV_MENU) (ExitMode)=Set(status,); XDTV_MENU=Set(menu,replace,);Macro(ALLIN1MENU) Cancel=Exec(xdtv_cmd quit); Back=Set(text,close);Macro(XDTV_MENU) 0=Exec(xdtv_cmd "keypad 0"); 1=Exec(xdtv_cmd "keypad 1"); 2=Exec(xdtv_cmd "keypad 2"); 3=Exec(xdtv_cmd "keypad 3"); 4=Exec(xdtv_cmd "keypad 4"); 5=Exec(xdtv_cmd "keypad 5"); 6=Exec(xdtv_cmd "keypad 6"); 7=Exec(xdtv_cmd "keypad 7"); 8=Exec(xdtv_cmd "keypad 8"); 9=Exec(xdtv_cmd "keypad 9"); * *=Set(text,replace,Help,Press numeric buttons\n to choose channel.\n* # run/quit\n# switch mode) * #=Exec(echo 'D=`ps -ef|grep xdtv|grep -v anyremote`; if [ "x$D" == "x" ]; then xdtv -capt_width 720 -capt_height 576 & else xdtv_cmd quit; fi;'|bash -f -s) #=Make(mode,xdtv2); [ModeEnd] [Mode]=xdtv2 (EnterMode)=Set(layout,default);\ Set(icons,XdTv,1,vol_down,2,mute,3,vol_up,4,prev,5,fullscreen,6,next,7,default,8,default,9,default,0,default,#,refresh,*,question);\ Macro(XDTV_MENU) (ExitMode)=Set(status,); Back=Set(text,close);Macro(XDTV_MENU) 1=Macro(XDTV_VOLDOWN) 2=Macro(XDTV_MUTE) 3=Macro(XDTV_VOLUP) 4=Macro(XDTV_CHDN) 5=Macro(XDTV_ZOOM) 6=Macro(XDTV_CHUP) 7=Make(none) 8=Make(none) 9=Make(none) * *=Set(text,replace,Help,1 - Vol-\n2 - Mute\n3 - Vol+\n4 - Ch-\n5 - Fullscreen\n6 - Ch +\n** - Help\n# - switch mode) 0=Make(none) #=Make(mode,xdtv) [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kmplayer-kde3.cfg0000644000232200023220000000575612073567675025104 0ustar debalancedebalance% % anyremote configuration file for kmplayer management. (Server-mode) % prerequisites: kmplayer, amixer utility % % % STATUS stable % XTEST no % SOUND mixer % ENV no % FBROWSER v.3i GuiAppName=Kmplayer GuiAppBinary=kmplayer GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kmplayer`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kmplayer.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Media Player for KDE [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Set(icons,KMPlayer,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,fullscreen,8,stop,9,default,*,question,0,folder,#,no);\ Set(title,);\ Set(status,); Cancel=Macro(QUIT); TITLE=ExecAndSet(title,sleep 1;echo 'KMP=`dcop|grep kmplayer`;dcop $KMP kmplayer-mainwindow#1 caption'|bash -f -s|sed 's/ - KMPlayer//;s/URL - file:\/\///'); QUIT=Exec(echo 'KMP=`dcop|grep kmplayer`;dcop $KMP MainApplication-Interface quit'|bash -f -s) Back=Set(text,close); Back($$)=Set(list,close); UpdateMenu=Set(menu,replace,GoTo,Open,Go Home); % FBROWSER v.3i FillList=Set(iconlist,replace,Files,folder:..);\ Macro(FillDir);\ Macro(FillFile); FillDir =ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/'| xargs -d '\n' -i echo "folder:" {}); FillFile=ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/'| xargs -d '\n' -i echo "file:"{}); GoTo($$)=Make(var,goto,by_value,$(Param));\ ExecAndSet(iconlist,replace,Files,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";echo "if [ -d $(goto) ]; then cd $(goto);fi;pwd>$HOME/.anyRemote/ar_storedir.tmp;"|bash -f -s;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); Go Home($$)=ExecAndSet(iconlist,replace,Files,cd;pwd>$HOME/.anyRemote/ar_storedir.tmp;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); % FBROWSER v.3i Open($$)=Set(list,close);\ Set(menu,clear);\ Exec(cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";kmplayer "$(Param)");\ Macro(TITLE); 1=Exec(amixer sset Master,0 5%- -q) 2=Exec(amixer sset Master,0 toggle -q) 3=Exec(amixer sset Master,0 5%+ -q) 4=Exec(echo 'KMP=`dcop|grep kmplayer`;POS=`dcop $KMP KMediaPlayer position`;NEWPOS=`expr $POS - 10000`;dcop $KMP KMediaPlayer seek $NEWPOS'|bash -f -s) 5=Exec(echo 'KMP=`dcop|grep kmplayer`;dcop $KMP KMediaPlayer play'|bash -f -s);Macro(TITLE); 6=Exec(echo 'KMP=`dcop|grep kmplayer`;POS=`dcop $KMP KMediaPlayer position`;NEWPOS=`expr $POS + 10000`;dcop $KMP KMediaPlayer seek $NEWPOS'|bash -f -s) 7=Exec(echo 'KMP=`dcop|grep kmplayer`;dcop $KMP KMediaPlayer toggleFullScreen'|bash -f -s) 8=Exec(echo 'KMP=`dcop|grep kmplayer`;dcop $KMP KMediaPlayer stop'|bash -f -s) * *=Set(text,replace,Help,1 - Vol-\n2 - Mute\n3 - Vol+\n4 - Rew\n5 - Play\n6 - FF\n7- Toggle fullscreen\n8 - Stop\n* *- Help\n0 - File browser\n# - Exit) 0=Macro(QUIT);Macro(FillList);Macro(UpdateMenu); #=Macro(QUIT) [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kopete-kde3.cfg0000644000232200023220000001540212073567675024534 0ustar debalancedebalance% % anyremote configuration file: kopete example. (Server-mode) % Prerequisites: kopete-anyremote plugin. % % STATUS unknown % XTEST no % SOUND no % ENV no GuiAppName=Kopete GuiAppBinary=kopete GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kopete`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kopete.png GuiAppType=Example GuiAppProtocols=Server GuiAppDesc=Kopete, The KDE Instant Messenger Beware: support is still experimental. It needs to install kopete_anyremote GuiAppVersion=echo 'V=`kopete -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(bash -c 'A=`ls /usr/lib/kde3/|grep kopete_anyremote|wc -l`; if [ "x$A" == "x0" ]; then kdialog --msgbox "Make sure You have installed kopete-anyremote plugin."; fi');\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Set(icons,Kopete,1,plus,2,default,3,default,4,default,5,default,6,default,7,default,8,default,9,default,*,question,0,no,#,default);\ Exec(dcop kopete MainApplication-Interface quit;kopete);\ Macro(TEST_ICONS); Cancel=Timer(t1,cancel);Timer(t2,cancel);Exec(dcop kopete MainApplication-Interface quit); * *=Set(text,replace,Help,Kopete management\n1 - View contact list\n0 - Exit); Back=Set(text,close); Back($$)=Set(list,close);Timer(t1,cancel);Timer(t2,cancel); 0=Timer(t1,cancel);Timer(t2,cancel);Exec(dcop kopete MainApplication-Interface quit);Exec(rm -f $HOME/.anyRemote/kopete-anyremote.*); 1=Macro(INIT); INIT=Macro(STATUS1);Macro(MENU);Macro(STATUS);Macro(ACCOUNTS) MENU=Set(menu,replace,Read,Send,Connect,Disconnect,Away,History,Clear History); TEST_ICONS=Get(is_exists,16,presence_away); %IconExists(presence_away)=Exec(kdialog --msgbox "Icon exists"); IconNotExists(presence_away)=Exec(kdialog --msgbox "Please wait. Uploading icons");Macro(UPLOAD1); UPLOAD1=ExecAndSet(image,icon,echo 'F=`find /usr/share/icons -name presence_away.png|grep 16|head -1`;echo "presence_away,$F"'|bash -f -s);Macro(UPLOAD2); UPLOAD2=ExecAndSet(image,icon,echo 'F=`find /usr/share/icons -name presence_online.png|grep 16|head -1`;echo "presence_online,$F"'|bash -f -s);Macro(UPLOAD3); UPLOAD3=ExecAndSet(image,icon,echo 'F=`find /usr/share/icons -name presence_offline.png|grep 16|head -1`;echo "presence_offline,$F"'|bash -f -s);Macro(UPLOAD4); UPLOAD4=ExecAndSet(image,icon,echo 'F=`find /usr/share/icons -name presence_unknown.png|grep 16|head -1`;echo "presence_unknown,$F"'|bash -f -s);Macro(UPLOAD5); UPLOAD5=ExecAndSet(image,icon,echo 'F=`find /usr/share/icons -name connect_creating.png|grep 16|head -1`;echo "connect_creating,$F"'|bash -f -s);Macro(UPLOADEND); UPLOADEND=Exec(killall kdialog); %CREATE_STATUS_TABLE=Exec(echo "Unknown,question" > /$HOME/.anuRemote/kopete.stts;echo "Offline,no" >> /$HOME/.anuRemote/kopete.stts;echo "Connecting,refresh" >> /$HOME/.anuRemote/kopete.stts;echo "Invisible,fit" >> /$HOME/.anuRemote/kopete.stts;echo "Away,presence_away" >> /$HOME/.anuRemote/kopete.stts;echo "Online,presence_online" >> /$HOME/.anuRemote/kopete.stts;echo "Msg,file" >> /$HOME/.anuRemote/kopete.stts;); ACCOUNTS=Exec(echo 'A=`dcop kopete KopeteIface accounts|wc -l`;if [ "x$A" == "x1" ]; then true; else kdialog --msgbox "There is more than one account defined in Kopete. Sending messages will not work."; fi'|bash -f -s); STATUS =Timer(t1,5,0); STATUS1=Timer(t2,1,5); STATUS_ONCE=ExecAndSet(iconlist,replace,Contacts,bash -c 'F=$HOME/.anyRemote/kopete-anyremote.status;if [ -f $F ]; then cat $F; fi'|awk '{split($0,a,";");st = "presence_unknown";if (a[3]=="Offline") {st = "presence_offline"}; if (a[3]=="Connecting") {st = "connect_creating"};if (a[3]=="Invisible") {st = "presence_unknown"};if (a[3]=="Away") {st = "presence_away"};if (a[3]=="Online") {st = "presence_online"};if (a[3]=="Msg") {st = "file"};s=sprintf("%s:%s,",st,a[2]);print s;}'); t1=Macro(STATUS_ONCE) t2=Macro(STATUS_ONCE) RESET_STATUS=Exec(rm -f $HOME/.anyRemote/kopete-anyremote.status.rr;ID=`cat $HOME/.anyRemote/kopete-anyremote.status|head -$(Index)|tail -1|cut -f 1 -d ";"`;export ID;cp $HOME/.anyRemote/kopete-anyremote.status $HOME/.anyRemote/kopete-anyremote.status.rr; cat $HOME/.anyRemote/kopete-anyremote.status.rr|awk '{i=ENVIRON["ID"];if (index($0,i)>0) {split($0,a,";");out=sprintf("%s;%s;%s",a[1],a[2],a[4]);print out;} else {print $0;} }' > $HOME/.anyRemote/kopete-anyremote.status;rm -f $HOME/.anyRemote/kopete-anyremote.status.rr); Read($$)=ExecAndSet(text,replace,Message,echo 'ID=`cat $HOME/.anyRemote/kopete-anyremote.status|head -$(Index)|tail -1|cut -f 1 -d ";"`;if [ -f $HOME/.anyRemote/kopete-anyremote.msg.$ID ]; then cat $HOME/.anyRemote/kopete-anyremote.msg.$ID; cat $HOME/.anyRemote/kopete-anyremote.msg.$ID >> $HOME/.anyRemote/kopete-anyremote.msg.$ID.history; rm -f $HOME/.anyRemote/kopete-anyremote.msg.$ID;fi'|bash -f -s);Timer(t1,cancel);Timer(t2,cancel);Macro(RESET_STATUS);Make(mode,READ); History($$)=ExecAndSet(text,replace,Message,echo 'ID=`cat $HOME/.anyRemote/kopete-anyremote.status|head -$(Index)|tail -1|cut -f 1 -d ";"`;if [ -f $HOME/.anyRemote/kopete-anyremote.msg.$ID.history ]; then cat $HOME/.anyRemote/kopete-anyremote.msg.$ID.history; else echo "History empty"; fi'|bash -f -s);Make(mode,READ); Clear History($$)=Exec(echo 'ID=`cat $HOME/.anyRemote/kopete-anyremote.status|head -$(Index)|tail -1|cut -f 1 -d ";"`;if [ -f $HOME/.anyRemote/kopete-anyremote.msg.$ID.history ]; then rm -f $HOME/.anyRemote/kopete-anyremote.msg.$ID.history; fi'|bash -f -s); Send($$)=Exec(echo `head -$(Index) $HOME/.anyRemote/kopete-anyremote.status|tail -1|cut -d ':' -f 3|cut -d ';' -f 1`>$HOME/.anyRemote/kopete-anyremote.sendto);Set(editfield,Send,Message,Hi);Timer(t1,cancel);Timer(t2,cancel);Make(mode,SEND); Connect($$)=Exec(dcop kopete KopeteIface connectAll); Disconnect($$)=Exec(dcop kopete KopeteIface disconnectAll); Away($$)=Exec(dcop kopete KopeteIface setAway); [Mode]=SEND BACK=Make(mode,default);Macro(STATUS_ONCE);Macro(STATUS);Macro(MENU); Ok($$)=Exec(dcop kopete KopeteIface messageContact `cat $HOME/.anyRemote/kopete-anyremote.sendto` $(Param));Macro(BACK); Back($$)=Macro(BACK); [ModeEnd] [Mode]=READ (ExitMode)=Macro(STATUS);Macro(MENU); Back=ExecAndSet(iconlist,replace,Contacts,bash -c 'F=$HOME/.anyRemote/kopete-anyremote.status;if [ -f $F ]; then cat $F; fi'|awk '{split($0,a,";");st = "presence_unknown";if (a[3]=="Offline") {st = "presence_offline"}; if (a[3]=="Connecting") {st = "connect_creating"};if (a[3]=="Invisible") {st = "presence_unknown"};if (a[3]=="Away") {st = "presence_away"};if (a[3]=="Online") {st = "presence_online"};if (a[3]=="Msg") {st = "file"};s=sprintf("%s:%s,",st,a[2]);print s;}');Make(mode,default); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/banshee-v2.cfg0000644000232200023220000001242712123520167024334 0ustar debalancedebalance% % anyremote configuration file for Banshee management. (Server-mode) % v.2 - another layout % % prerequisites: amixer/pactl utility, ImageMagic % % STATUS nonstable, banshee drop support of --query-cover-uri option https://bugzilla.gnome.org/show_bug.cgi?id=673815 % XTEST no % SOUND mixer % ENV no % ALL_IN_ONE GuiAppName=Banshee-v2 GuiAppBinary=echo 'B=`which banshee 2> /dev/null`;if [ "x$B" = "x" ]; then echo banshee-1; else echo banshee; fi'|sh -s GuiAppRun=echo 'P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=media-player-banshee.png GuiAppProtocols=Server GuiAppType=Example GuiAppDesc=Music management and playback for Gnome. Different layout and cover art support. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(TEST_IMAGEMAGIC);\ Make(var, banshee_exec, which banshee 2> /dev/null);\ Make(var, banshee_exec, if [ "x$(banshee_exec)" = "x" ]; then which banshee-1; else echo $(banshee_exec); fi);\ Make(var,banshee_cover_art_support,CA=`$(banshee_exec) --help-all|grep query-cover-uri`; if [ "x$CA" = "x" ]; then echo 1; else echo 0; fi); (Connect)=Make(mode,banshee-v2); BANSHEE_V2_SONG_INFO=\ Make(var,banshee_isrun,ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit);\ Make(var,banshee_title,if [ "x$(banshee_isrun)" != "x" ]; then $(banshee_exec) --query-title|cut -f 2 -d ":"; fi);\ Make(var,banshee_album,if [ "x$(banshee_isrun)" != "x" ]; then $(banshee_exec) --query-album|cut -f 2 -d ":"; fi);\ Make(var,banshee_artist,if [ "x$(banshee_isrun)" != "x" ]; then $(banshee_exec) --query-artist|cut -f 2 -d ":"; fi);\ Set(title,$(banshee_album) - $(banshee_title));\ Set(status,$(banshee_artist));\ Macro(BANSHEE_COVER,by_value,$(banshee_cover_art_support)); BANSHEE_COVER=\ ExecAndSet(cover,noname,I=`$(banshee_exec) --query-cover-uri|sed "s/CoverUri: //"`;if [ "x$I" != "x" ]; then F=`basename $I`;cat $I|convert - -resize $(cover_size)x$(cover_size) -depth 8 $(TmpDir)/banshee_covers/$F;echo $(TmpDir)/banshee_covers/$F; fi); BANSHEE_V2_START_TIMER=\ Timer(BANSHEE_V2_SONG_INFO,5,0); BANSHEE_V2_STOP_TIMER=\ Timer(BANSHEE_V2_SONG_INFO,cancel); BANSHEE_V2_EXIT=\ Exec(rm -rf $(TmpDir)/banshee_covers); [Mode]=banshee-v2 (Exit)=Macro(BANSHEE_V2_EXIT); QUIT=Exec(killall -r "banshee.*"); BANSHEE_V2_LAYOUT=\ Set(icons,Banshee,1,prev,2,rewind,3,play,4,pause,5,stop,6,forward,7,next,8,none,9,none,*,none,0,none,#,none);\ Set(layout,7x1,joystick_only,choose,3,volume,ticker,up,Vol+,down,Vol-);\ Set(font,small); BANSHEE_RUN_IF=\ Exec(P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then $(banshee_exec)& fi);\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch banshee); BANSHEE_V2_MENU=\ Set(menu,replace,Vol+,Vol-,Mute,Run Player,Quit Player,Toggle Fullscreen,Help);\ Macro(ALLIN1MENU); BANSHEE_CMD=\ Exec(P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" != "x" ]; then $(banshee_cmd); fi); BANSHEE_POS=\ Make(var,banshee_pos,banshee --query-position|cut -f 2 -d ' '|cut -f 1 -d ','); (EnterMode)=\ Macro(BANSHEE_RUN_IF);\ Macro(BANSHEE_V2_LAYOUT);\ Macro(VOL_SET);\ Macro(BANSHEE_V2_MENU);\ Exec(rm -rf $(TmpDir)/banshee_covers;mkdir $(TmpDir)/banshee_covers);\ Make(var,cover_size,echo 64);\ Get(cover_size); Cancel=Macro(QUIT); (Disconnect)=Macro(BANSHEE_V2_STOP_TIMER); Back=Set(text,close);Macro(BANSHEE_V2_MENU); VOL_SET=\ Macro(DEFAULT_VOLUME_GET);\ Set(volume,$(default_mixer_value)); Vol+=Macro(DEFAULT_VOLUME_UP);\ Macro(VOL_SET); Vol-=Macro(DEFAULT_VOLUME_DOWN);\ Macro(VOL_SET); % Android support VOL-=Macro(Vol-); VOL+=Macro(Vol+); Mute=Macro(DEFAULT_TOGGLE_MUTE);\ Set(volume,0);\ Set(menu,replace,Vol+,Vol-,Unmute,Run Player,Quit Player,Toggle Fullscreen,Help);\ Macro(ALLIN1MENU); Unmute=\ Macro(DEFAULT_TOGGLE_MUTE);\ Macro(BANSHEE_V2_MENU); Toggle Fullscreen=\ Set(fullscreen,toggle);\ Set(cover,clear);\ Get(cover_size); CoverSize($$)=Make(var,cover_size,echo $(Index)); Run Player=Macro(BANSHEE_RUN_IF); Quit Player=\ Macro(BANSHEE_V2_STOP_TIMER);\ Macro(QUIT);\ Set(title,);\ Set(status,); Help=Set(text,replace,Help,Manage player by joystick or from menu); % No more 7 buttons - Nokias Series40 has 160x120 screens 1=Make(var,banshee_cmd,by_value,$(banshee_exec) --previous);\ Macro(BANSHEE_CMD);\ Macro(BANSHEE_V2_SONG_INFO); 2=Macro(BANSHEE_POS);\ Make(var,banshee_pos,echo "$(banshee_pos) - 10"|bc);\ Make(var,banshee_cmd,by_value,$(banshee_exec) --set-position=$(banshee_pos));\ Macro(BANSHEE_CMD); 3=Make(var,banshee_cmd,by_value,$(banshee_exec) --toggle-playing);\ Macro(BANSHEE_CMD);\ Macro(BANSHEE_V2_SONG_INFO);\ Macro(BANSHEE_V2_START_TIMER); 4=Make(var,banshee_cmd,by_value,$(banshee_exec) --pause);\ Macro(BANSHEE_CMD);\ Macro(BANSHEE_V2_STOP_TIMER);\ Set(title,);\ Set(status,); 5=Make(var,banshee_cmd,by_value,$(banshee_exec) --pause);\ Macro(BANSHEE_CMD);\ Macro(BANSHEE_V2_STOP_TIMER); 6=Macro(BANSHEE_POS);\ Make(var,banshee_pos,echo "$(banshee_pos) + 10"|bc);\ Make(var,banshee_cmd,by_value,$(banshee_exec) --set-position=$(banshee_pos));\ Macro(BANSHEE_CMD); 7=Make(var,banshee_cmd,by_value,$(banshee_exec) --next);\ Macro(BANSHEE_CMD);\ Macro(BANSHEE_V2_SONG_INFO); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/adminExample.cfg0000644000232200023220000000714212120355622025003 0ustar debalancedebalance% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Admin GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Show free space on disks, system uptime, user processes. Allows ro reboot PC. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ ExecAndSet(status,uname -n);\ ExecAndSet(title,whoami);\ Set(icons,ADMIN,1,plus,2,default,3,default,4,default,5,default,6,default,7,default,8,default,9,default,*,default,0,default,#,default); * *=Set(text,replace,Help,1 - Show list of features\n0 - Exit) Back=Set(text,close); 1=Make(mode,LIST); [Mode]=LIST ADM_LIST=Set(list,replace,Available commands,Disk free space,Uptime, User Processes,File List,Dmesg output,Reboot,Shutdown); (EnterMode)=\ Macro(ADM_LIST);\ Set(menu,replace,Choose); Back($$)=Set(list,close);Make(mode,default); TOP_TIMER=ExecAndSet(text,replace,top,top -bn 1|head -10|tr -s ' '|cut -f 2,3,10,13 -d ' '|tail -5); Choose(Disk free space)=ExecAndSet(text,replace,Free Space,df -kl|tr -s ' '|cut -f 1,4 -d ' ');Make(mode,TXT); %Choose(Run Top) =Make(mode,TXT);Macro(TOP_TIMER);Timer(TOP_TIMER,5,0); %Choose(Stop Top) =Timer(TOP_TIMER,cancel); Choose(Uptime) =Set(list,close);ExecAndSet(title,uptime|tr -s ' '|cut -d ' ' -f 3,4,5);Make(mode,default); Choose(File List) =Make(mode,FILES); Choose(User Processes) =Make(mode,PROCS); Choose(Dmesg output) =ExecAndSet(text,replace,Dmesg output, dmesg|tail -50);Make(mode,TXT); Choose(Reboot) =Exec(reboot) Choose(Shutdown) =Exec(poweroff) Push(Disk free space) =ExecAndSet(text,replace,Free Space,df -kl|tr -s ' '|cut -f 1,4 -d ' ');Make(mode,TXT); %Push(Run Top) =Make(mode,TXT);Macro(TOP_TIMER);Timer(TOP_TIMER,5,0); %Push(Stop Top) =Timer(TOP_TIMER,cancel); Push(Uptime) =Set(list,close);ExecAndSet(title,uptime|tr -s ' '|cut -d ' ' -f 3,4,5);Make(mode,default); Push(File List) =Make(mode,FILES); Push(User Processes) =Make(mode,PROCS); Push(Dmesg output) =ExecAndSet(text,replace,Dmesg output, dmesg|tail -50);Make(mode,TXT); Push(Reboot) = =Exec(reboot) Push(Shutdown) =Exec(poweroff) [ModeEnd] [Mode]=TXT Back=Set(text,close);Timer(TOP_TIMER,cancel);Make(mode,LIST); [ModeEnd] [Mode]=FILES (EnterMode)=ExecAndSet(list,replace,Files,cd `cat $HOME/.anyRemote/ar_storedir.tmp`;echo `pwd`>$HOME/.anyRemote/ar_storedir.tmp;ls -F| sed 's/$/,/'|sed 's/(/openbrace/g'|sed 's/)/closebrace/g');Set(list,add,SAME,..);Set(menu,replace,Choose,File info); File info($$)=ExecAndSet(text,replace,File info,cd `cat $HOME/.anyRemote/ar_storedir.tmp`;file $(Param));Set(text,add,SAME,\n);ExecAndSet(text,add,File info,cd `cat $HOME/.anyRemote/ar_storedir.tmp`;ls -l $(Param));Make(mode,TXT2); Choose($$)=ExecAndSet(list,replace,SAME,echo 'cd `cat $HOME/.anyRemote/ar_storedir.tmp`;if [ -d $(Param) ]; then cd $(Param);fi;pwd>$HOME/.anyRemote/ar_storedir.tmp;ls -F| sed "s/$/,/"|sed "s/(/openbrace/g"|sed "s/)/closebrace/g";'|bash -f -s);Set(list,add,SAME,..) Back($$)=\ Make(mode,LIST);\ Macro(ADM_LIST);\ Set(menu,replace,Choose); [ModeEnd] [Mode]=TXT2 Back=Set(text,close);Make(mode,FILES); [ModeEnd] [Mode]=PROCS (EnterMode)=ExecAndSet(list,replace,User Processes, ps -o pid -o command -u `whoami`|tr -s ' '|cut -d ' ' -f 1,2,3|sed 's/$/,/'|grep -v sed|grep -v cut);Set(menu,replace,Kill); Kill($$)=Exec(kill `echo $(Param)|cut -d ' ' -f 1`);ExecAndSet(list,replace,SAME,ps -o pid -o command -u `whoami`|tr -s ' '|cut -d ' ' -f 1,2,3|sed 's/$/,/'|grep -v sed|grep -v cut); Back($$)=Make(mode,LIST); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/amarok-v2.cfg0000644000232200023220000001426412123520167024202 0ustar debalancedebalance% % anyremote configuration file for amarok/KDE4 management with cover support. (Server-mode) % % Thanks to Jesus Vidal Panalus for this configuration file % % STATUS stable % XTEST no % SOUND app % ENV no % ALL_IN_ONE GuiAppName=Amarok with Cover support GuiAppBinary=amarok GuiAppVersion= V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi GuiAppRun= A=`pgrep amarok`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=amarok.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration file is for Amarok2 with cover support [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(TEST_QDBUS);\ Macro(TEST_DBUS_SEND);\ Macro(TEST_IMAGEMAGIC);\ Make(var,kde4_app,by_value,amarok);\ Macro(TEST_KDE4_APP);\ Make(var,cvDir,by_value,$(TmpDir)/amarok_covers/); (Connect)=\ Make(mode,amarok-v2); AMAROK_HELP=\ Set(text,replace,Help, 1 Prev\n 2 Rewind\n 3 Play\n 4 Pause\n 5 Stop\n 6 Forward\n 7 Next\n 8 Vol-\n 9 Vol+\n 0 Mute\n ** Help\n # Quit\n *# Run/Quit); AM_COVER=\ Make(var,coverencode,qdbus org.kde.amarok /Player GetMetadata|grep arturl:|sed "s/arturl: file:\/\///");\ Make(var,coverdecode, arg="$(coverencode)";i="0";while [ "$i" -lt ${#arg} ]; do c0=${arg:$i:1}; if [ "x$c0" = "x%" ]; then c1=${arg:$((i+1)):1}; c2=${arg:$((i+2)):1}; printf "\x$c1$c2"; i=$((i+3)); else echo -n "$c0"; i=$((i+1)); fi done);\ Make(var,coverconverted,F=`basename "$(coverdecode)"`;convert \( "$(coverdecode)" -resize $(cover_size)x$(cover_size) \) -append $(cvDir)/$F;echo $(cvDir)/$F;);\ Set(cover,noname,$(coverconverted)); AMAROK_TITLE=\ Make(var,art,qdbus org.kde.amarok /Player GetMetadata|grep artist:|sed "s/artist: //");\ Make(var,tit,qdbus org.kde.amarok /Player GetMetadata|grep title:|sed "s/title: //");\ Set(title, $(art) - $(tit));\ Macro(AM_COVER); # Make(var,song_pos,qdbus org.kde.amarok /Player PositionGet);\ # ExecAndSet(status,echo $(song_pos)|awk '{min=int($0/60000);sec=int(($0-min*60000)/1000);if (sec < 10) {sec="0"sec;}; printf("%s:%s",min,sec);}');\ # ExecAndSet(status,echo `qdbus org.kde.amarok /Player GetMetadata|grep mtime|sed 's/mtime://'|tr -d ' '`|awk '{min=int($0/60000);sec=int(($0-min*60000)/1000);if (sec < 10) {sec="0"sec;}; printf("%s:%s",min,sec);}');\ AMAROK_START_TIMER=\ Macro(AMAROK_TITLE);\ Timer(AMAROK_TITLE,5,0); AMAROK_STOP_TIMER=\ Timer(AMAROK_TITLE,cancel); AM_LAYOUT=\ Set(icons, Amarok2,1,prev,2,rewind,3,play,4,pause,5,stop,6,forward,7,next,8,none,9,none,*,none,0,none,#,none);\ Set(layout,7x1,joystick_only,choose,3,volume,ticker,up,Vol+,down,Vol-);\ Set(font,small); AM_RUN=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh amarok); GETVOL=\ Make(var,am_volume,qdbus org.kde.amarok /Player VolumeGet);\ SETVOL=\ Macro(GETVOL);\ Set(volume,$(am_volume)); GETPOS=Make(var,am_pos,qdbus org.kde.amarok /Player PositionGet); [Mode]=amarok-v2 (EnterMode)=\ Macro(AM_LAYOUT);\ Macro(AM_RUN);\ Exec(rm -rf $(cvDir);mkdir $(cvDir));\ Make(var,cover_size,by_value,128);\ Get(cover_size);\ Macro(SETVOL);\ Macro(GETPOS);\ Set(status,);\ Macro(AMAROK_START_TIMER);\ Make(var,am_mute,by_value,0);\ Macro(AMAROK_MENU); AMAROK_MENU=\ Set(menu,replace,Help,Shuffle,Repeat,Playlist,PowerMgmt);\ Macro(ALLIN1MENU); Cancel=\ Exec(qdbus org.kde.amarok / Quit);\ Exec(rm -rf $(cvDir)); (Disconnect)=\ Macro(AMAROK_STOP_TIMER); Back=\ Set(text,close);\ Macro(AMAROK_MENU); CoverSize($$)=\ Make(var,cover_size,by_value,$(Index)); Vol+=Exec(qdbus org.kde.amarok /Player VolumeUp 5);\ Macro(SETVOL); Vol-=Exec(qdbus org.kde.amarok /Player VolumeDown 5);\ Macro(SETVOL); % Android support VOL-=Macro(Vol-); VOL+=Macro(Vol+); Help=Macro(AMAROK_HELP); Playlist=\ Macro(AMAROK_STOP_TIMER);\ Make(mode,amarok_playlist_v2) Shuffle=\ Make(var,shuffle_val,P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle`; if [ "x$P" = "xtrue" ]; then echo 0; else echo 1; fi);\ Exec(qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle $(shuffle_val)); Repeat=\ Make(var,repeat_val,P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.LoopStatus`; if [ "x$P" = "xNone" ]; then echo 1; else echo 0; fi);\ Exec(qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.Repeat $(repeat_val)); % It is possible to use % qdbus org.kde.amarok /Player Next/Prev/... 1=Exec(amarok --previous);\ Macro(AMAROK_START_TIMER); 2=Macro(GETPOS);\ Exec(qdbus org.kde.amarok /Player PositionSet `expr $(am_pos) - 10000`); 3=Exec(amarok --play);\ Macro(AMAROK_START_TIMER);\ Set(status,); 4=Exec(amarok --pause);\ Macro(AMAROK_STOP_TIMER); 5=Exec(amarok --stop);\ Macro(AMAROK_STOP_TIMER);\ Set(status,Stopped); 6=Macro(GETPOS);\ Exec(qdbus org.kde.amarok /Player PositionSet `expr $(am_pos) + 10000`); 7=Exec(amarok --next);\ Macro(AMAROK_START_TIMER); 8=Exec(qdbus org.kde.amarok /Player VolumeDown 5);\ Macro(SETVOL); 9=Exec(qdbus org.kde.amarok /Player VolumeUp 5);\ Macro(SETVOL); 0=Macro(GETVOL);\ Set(volume,$(am_mute));\ Exec(qdbus org.kde.amarok /Player VolumeSet $(am_mute));\ Make(var,am_mute,if [ "$(am_mute)" = "0" ]; then echo $(am_volume); else echo 0; fi); * *=Macro(AMAROK_HELP); * #=Exec(P=`pgrep amarok`; if [ "x$P" = "x" ]; then amarok 2> /dev/null; else qdbus org.kde.amarok / Quit; fi);\ Set(title,);\ Set(status,); #=Exec(qdbus org.kde.amarok / Quit);\ Macro(AMAROK_STOP_TIMER);\ Set(title,);\ Set(status,); [ModeEnd] [Mode]=amarok_playlist_v2 (EnterMode)=\ Set(list,font,small);\ ExecAndSet(list,replace,Playlist,$(CfgDir)/Utils/getPlayList.sh);\ Set(menu,add,Play); (ExitMode)=\ Set(list,close); Back($$)=\ Make(mode,amarok-v2); Play($$)=\ Exec(qdbus org.kde.amarok /TrackList org.freedesktop.MediaPlayer.PlayTrack `expr $(Index) - 1`); Push($$)=\ Macro(Play($$)); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kscd-kde3.cfg0000644000232200023220000000574312073567675024200 0ustar debalancedebalance% % anyremote configuration file for kscd/KDE3 management. (Server-mode) % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Kscd GuiAppBinary=kscd GuiAppVersion=echo 'V=`kscd -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s GuiAppRun=echo 'A=`dcop 2> /dev/null|grep kscd`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kscd.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KsCD is a small, fast, CDDB enabled audio CD player for UNIX platforms. This configuration file is for KsCD/KDE3. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`kscd -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s);\ (Connect)=Make(mode,kscd); kscd_t1=ExecAndSet(title,dcop kscd CDPlayer currentTrackTitle) [Mode]=kscd (EnterMode)=Make(var,kscd_volume,by_value,-1);\ Exec(echo 'A=`dcop|grep kscd`; if [ "x$A" == "x" ]; then kscd; fi'|bash -f -s);\ Set(layout,default);\ Set(icons,KsCD,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,default,#,no);\ Set(menu,add,Playlist);\ Macro(ALLIN1MENU); Cancel=Exec(dcop kscd MainApplication-Interface quit); Back=Set(text,close);\ Set(menu,add,Playlist);\ Macro(ALLIN1MENU) Playlist=Make(mode,kscd_playlist); 1=Exec(dcop kscd CDPlayer volumeDown) 2=Make(var,kscd_volume,echo 'if [ "x$(kscd_volume)" == "x-1" ]; then dcop kscd CDPlayer getVolume; dcop kscd CDPlayer setVolume 0; else dcop kscd CDPlayer setVolume $(kscd_volume);echo "-1"; fi;'|bash -f -s) 3=Exec(dcop kscd CDPlayer volumeUp) 4=Exec(echo 'POS=`dcop kscd CDPlayer currentPosition`;NEWPOS=`expr $POS - 5000`;dcop kscd CDPlayer jumpTo $NEWPOS'|bash -f -s); 5=Exec(dcop kscd CDPlayer play);Macro(kscd_t1);Timer(kscd_t1,10,0); 6=Exec(echo 'POS=`dcop kscd CDPlayer currentPosition`;NEWPOS=`expr $POS + 5000`;dcop kscd CDPlayer jumpTo $NEWPOS'|bash -f -s); 7=Exec(dcop kscd CDPlayer previous);ExecAndSet(title,dcop kscd CDPlayer currentTrackTitle); 8=Exec(dcop kscd CDPlayer stop);Timer(kscd_t1,cancel); 9=Exec(dcop kscd CDPlayer next);ExecAndSet(title,dcop kscd CDPlayer currentTrackTitle); * *=Set(text,replace,Help,1 - Vol-\n2 - Mute\n3 - Vol+\n4 - Rew\n5 - Play\n6 - FF\n7 - Prew\n8 - Stop\n9 - Next\n* * - Help\n# - Quit\n* # - Run/Quit) * #=Timer(kscd_t1,cancel);Exec(echo 'P=`dcop|grep kscd`; if [ "x$P" == "x" ]; then kscd; else dcop kscd MainApplication-Interface quit; fi;' |bash -f -s) #=Exec(dcop kscd MainApplication-Interface quit) [ModeEnd] [Mode]=kscd_playlist (EnterMode)=Set(list,font,medium);\ Timer(kscd_t1,cancel);\ ExecAndSet(list,replace,Playlist,dcop kscd CDPlayer trackList|sed 's/,/ /g;s/$/,/');\ Set(menu,replace,Choose); (ExitMode)=Set(list,close);\ Macro(kscd_t1);\ Timer(kscd_t1,10,0); Back($$)=Make(mode,kscd); Choose($$)=Exec(dcop kscd CDPlayer setTrack $(Index)); [ModeEnd] [End] anyremote-6.7.1/cfg-data/obsoleted/Server-mode/rssReader.cfg0000644000232200023220000000575712061426047024347 0ustar debalancedebalance% % anyremote configuration file for RSS reading. (Server-mode) % based on configuration file from Domjan Svilkovic % % STATUS unknown % XTEST no % SOUND no % ENV no GuiAppName=RSS Reader GuiAppIcon=view_text.png GuiAppType=Custom GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Read RSS on the phone's screen [Protocol]=Server % Not parsed correctly %http://rss.slashdot.org/Slashdot/slashdot (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'if [ ! -f $HOME/.rssfeeds ]; then echo "http://feeds.feedburner.com/spaceheadlines,http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/world/rss.xml,http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/sci/tech/rss.xml" > $HOME/.rssfeeds; fi;'|bash -f -s); (Connect)=Set(icons,Rss Reader,1,folder,2,default,3,default,4,default,5,default,6,default,7,default,8,default,9,default,*,question,0,default,#,default);\ Macro(SHOW_FEEDS);\ Set(menu,replace,Select); Back=Set(text,close); 1=Macro(SHOW_FEEDS);Set(menu,replace,Select); * *=Set(text,replace,Help,Press 1 to show list of feeds) SHOW_FEEDS=\ ExecAndSet(list,replace,List of feeds,cat $HOME/.rssfeeds); LOAD_FEED=\ Set(popup,show,Please wait);\ Make(var,dummy_used_to_sync,echo 'wget $(Param) -O - 2>/dev/null|perl -pe "s/\n//g;s/ $HOME/.anyRemote/feed.txt'|bash -f -s);\ Macro(SHOW_TITLES);\ Macro(PARSE_DSC);\ Set(menu,replace,Select);\ Set(popup,hide);\ Make(mode,FEED); SET_ARTNUM=\ Make(var,artname,echo "$(Index)/`cat $HOME/.anyRemote/titles.txt|wc -l|tr -d ' '`"); GET_FEEDNAME=\ Make(var,feedname,grep '' $HOME/.anyRemote/feed.txt |head -1|cut -f 2 -d '>'); SHOW_TITLES=\ Macro(GET_FEEDNAME);\ ExecAndSet(list,replace,$(feedname),cat $HOME/.anyRemote/feed.txt|awk '{ i=index($0,"\074item "); if(i==0) i=index($0,"\074item\076"); if(i==0) nextline; else { j=0; while (getline && j==0) { k=index($0,"\074title"); if(k!=0) { print $0;j=1; } } } }'|sed "s/'/\'/g"|cut -f 2 -d ">"|sed 's/,/\r/;s/\$/USD/g;s/$/,/' > $HOME/.anyRemote/titles.txt;cat $HOME/.anyRemote/titles.txt); PARSE_DSC=\ Exec(cat $HOME/.anyRemote/feed.txt|awk '{ i=index($0,"\074item "); if(i==0) i=index($0,"\074item\076"); if(i==0) nextline; else { j=0; while (getline && j==0) { k=index($0,"\074description"); if(k!=0) { print $0;j=1; } } } }'|cut -f 2 -d ">" > $HOME/.anyRemote/descr.txt); TYPE_TTL=\ ExecAndSet(list,replace,List of articles,cat $HOME/.anyRemote/titles.txt); SHOW_ARTICLE=\ ExecAndSet(text,replace,$(artname),cat $HOME/.anyRemote/descr.txt|head -$(Index)|tail -1|sed "s/'/\'/g;s/>/>/g;s/</</g");\ Make(var,feed_idx,echo $(Index)); Select($$)=Macro(LOAD_FEED); Push($$)=Macro(Select($$)); Back($$)=Set(list,close); [Mode]=FEED Select($$)=\ Set(popup,show,Loading ...);\ Macro(SET_ARTNUM);\ Macro(SHOW_ARTICLE);\ Set(popup,hide); Push($$)=Macro(Select($$)); Back=\ Macro(TYPE_TTL);\ Set(list,select,$(feed_idx));\ Set(menu,replace,Select); Back($$)=\ Macro(SHOW_FEEDS);\ Make(mode,default); [ModeEnd] [End] �����������������anyremote-6.7.1/cfg-data/obsoleted/Server-mode/amarok-v3.cfg����������������������������������������0000644�0002322�0002322�00000013367�12123520167�024206� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for amarok management. (Server-mode) % v.3 - Improved cover art + library access % Made by Carlos Sanchez (chukysoria@gmail.com) % --- modified to run with amarok/kde4 (johann bauer, johann.bauer1@gmail.com ) % STATUS non-stable % XTEST no % SOUND app % ENV no % ALL_IN_ONE GuiAppName=Amarok v3 GuiAppBinary=amarok GuiAppVersion=echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi'|sh -s GuiAppRun=echo 'A=`pgrep amarok`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=amarok.png GuiAppType=Application GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration supports cover art. This configuration file is for Amarok/KDE3 [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(TEST_IMAGEMAGIC);\ Make(var,kde4_app,by_value,amarok);\ Macro(TEST_KDE4_APP);\ Make(var,arDir,echo $(TmpDir)/);\ Make(var,cvDir,by_value,$(arDir)amarok_covers/); (Connect)=\ Make(mode,amarok-v3); InCall($$)=\ Exec(qdbus org.kde.amarok /Player Mute);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.Pause);\ Macro(AMAROK_V2_STOP_TIMER);\ Make(remote,off); EndCall($$)=\ Make(remote,on);\ Exec(qdbus org.kde.amarok /Player Mute);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.Play);\ Macro(AMAROK_V2_START_TIMER); AMAROK_V2_SETINFO=\ ExecAndSet(title,T=`qdbus org.kde.amarok /Player GetMetadata|grep title:|cut -f 2 -d ":"`; A=`qdbus org.kde.amarok /Player GetMetadata|grep artist:|cut -f 2 -d ":"`;echo "$T" by"$A");\ ExecAndSet(status,T=`qdbus org.kde.amarok /Player GetMetadata |grep "^time"|cut -f 2 -d ":" ` ; if [ "x$T" = "x" ]; then echo ""; else min=`expr $T / 60` ; sec=`expr $T % 60`; echo "$min:$sec"; fi);\ ExecAndSet(cover,noname,I=`qdbus org.kde.amarok /Player GetMetadata |grep arturl|cut -f 2 -d " "|sed "s/%20/ /g"|cut -f 2 -d ":" ` ;F=`basename "$I"`; if [ "x$F" = "x" ]; then echo ""; else convert "$I" -resize $(cover_size)x$(cover_size) -append $(cvDir)$F; echo $(cvDir)$F; fi); AMAROK_V2_START_TIMER=\ Timer(AMAROK_V2_SETINFO,$(UpdateTimeout),0); AMAROK_V2_STOP_TIMER=\ Timer(AMAROK_V2_SETINFO,cancel); [Mode]=amarok-v3 AM_V2_LAYOUT=\ Set(icons,Amarok,1,prev,2,rewind,3,play,4,pause,5,forward,6,next,7,mute,8,none,9,none,*,none,0,none,#,none);\ Set(font,small);\ Set(layout,7x1,joystick_only,choose,3,volume,ticker,up,Vol+,down,Vol-); AM_V2_RUN_IF=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh amarok); AM_V2_MENU=\ Set(menu,replace,Shuffle,Repeat,Playlist,Run Player,Quit Player,Toggle Fullscreen,PowerMgmt,Help);\ Macro(ALLIN1MENU);\ Macro(VOL_SET); (EnterMode)=\ Macro(AM_V2_LAYOUT);\ Macro(AM_V2_RUN_IF);\ Exec(rm -rf $(cvDir);mkdir $(cvDir));\ Make(var,cover_size,echo 128);\ Get(cover_size);\ Macro(AMAROK_V2_SETINFO);\ Macro(VOL_GET);\ Make(var,am_mute,by_value,$(am_volume));\ Macro(AM_V2_MENU);\ Macro(AMAROK_V2_START_TIMER); Cancel=\ Exec(rm -rf $(cvDir)); (Disconnect)=\ Macro(AMAROK_V2_STOP_TIMER); Back=\ Set(text,close);\ Macro(AM_V2_MENU); Playlist=\ Macro(AMAROK_V2_STOP_TIMER);\ Make(mode,amarok_playlist_v3); Shuffle=\ Make(var,shuffle_val,P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle`; if [ "x$P" = "xtrue" ]; then echo 0; else echo 1; fi);\ Exec(qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle $(shuffle_val)); Repeat=\ Make(var,repeat_val,P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.LoopStatus`; if [ "x$P" = "xNone" ]; then echo 1; else echo 0; fi);\ Exec(qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.Repeat $(repeat_val)); Vol+=\ Exec(qdbus org.kde.amarok /Player VolumeUp 5);\ Macro(VOL_SET); Vol-=\ Exec(qdbus org.kde.amarok /Player VolumeDown 5);\ Macro(VOL_SET); % Android support VOL-=Macro(Vol-); VOL+=Macro(Vol+); Toggle Fullscreen=\ Set(fullscreen,toggle);\ Set(cover,clear);\ Get(cover_size); CoverSize($$)=\ Make(var,cover_size,by_value,$(Index));\ Exec(echo $(arDir) > $(TmpDir)/cover_size); Run Player=\ Macro(AM_V2_RUN_IF); Quit Player=\ Exec( qdbus org.kde.amarok /MainApplication quit );\ Macro(AMAROK_V2_STOP_TIMER);\ Set(title,);\ Set(status,); Help=Set(text,replace,Help,Manage player by joystick or from menu); VOL_SET=\ ExecAndSet(volume, qdbus org.kde.amarok /Player VolumeGet);Macro(AMAROK_V2_SETINFO); VOL_GET=\ Make(var,am_volume,qdbus org.kde.amarok /Player VolumeGet); GETPOS=\ Make(var,am_pos,qdbus org.kde.amarok /Player PositionGet); % No more 7 buttons - Nokias Series40 has 160x120 screens 1=Exec(qdbus org.kde.amarok /Player Prev);Macro(AMAROK_V2_SETINFO); 2=Macro(GETPOS);\ Exec(qdbus org.kde.amarok /Player PositionSet `expr $(am_pos) - 10000`); 3=Exec(qdbus org.kde.amarok /Player Play);Macro(AMAROK_V2_START_TIMER);Macro(VOL_SET); 4=Exec(qdbus org.kde.amarok /Player Pause); 5=Macro(GETPOS);\ Exec(qdbus org.kde.amarok /Player PositionSet `expr $(am_pos) + 10000`); 6=Exec(qdbus org.kde.amarok /Player Next);Macro(AMAROK_V2_SETINFO); 7=Exec(qdbus org.kde.amarok /Player Mute); [ModeEnd] [Mode]=amarok_playlist_v3 (EnterMode)=\ Set(list,font,small);\ Set(list,bg,54,73,135);\ Set(list,fg,141,159,218);\ ExecAndSet(list,replace,Playlist,$(CfgDir)/Utils/getPlayList.sh);\ Set(menu,add,Play); (ExitMode)=\ Set(list,close);\ Macro(AMAROK_V2_START_TIMER); Back($$)=\ Make(mode,amarok-v3); Play($$)=\ Exec(qdbus org.kde.amarok /TrackList org.freedesktop.MediaPlayer.PlayTrack `expr $(Index) - 1`); Push($$)=\ Macro(Play($$)); [ModeEnd] [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/obsoleted/Server-mode/amarok-kde3-v1.cfg�����������������������������������0000644�0002322�0002322�00000014154�12073567675�025046� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for amarok management. (Server-mode) % % Thanks to Gabriele Flammia for the patch. % % STATUS stable % TODO comma in song title % XTEST no % SOUND app % ENV no % FBROWSER v.3i GuiAppName=Amarok/KDE3 GuiAppBinary=amarok GuiAppVersion=echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s GuiAppRun=echo 'A=`dcop 2> /dev/null|grep amarok`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=amarok.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration file is for Amarok/KDE3 [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s); (Connect)=Set(parameter,debug,on);\ Make(mode,amarok); AMAROK_HELP =Set(text,replace,Help, 1 Vol-\n 2 Mute\n 3 Vol+\n 4 Rew\n 5 Play\n 6 FF\n 7 Prew\n 8 Stop\n 9 Next\n ** Help\n 0 Pause\n # Quit\n *# Run/Quit); AMAROK_TITLE=ExecAndSet(title,dcop amarok player nowPlaying|sed 's/%20/ /g'); AMAROK_TIMER=Macro(AMAROK_TITLE);\ Timer(AMAROK_TITLE,5,0); [Mode]=amarok (EnterMode)=Exec(echo 'A=`dcop 2> /dev/null|grep amarok`; if [ "x$A" == "x" ]; then amarok 2> /dev/null; fi'|bash -f -s);\ Macro(AMAROK_TITLE);\ Make(var,am_volume,dcop amarok player getVolume);\ Set(layout,default);\ Set(icons,Amarok,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Set(status,);\ Set(font,small);\ Set(menu,replace,Playlist,Search,File Browser);\ Macro(ALLIN1MENU); Cancel=Exec(dcop amarok MainApplication-Interface quit); (Disconnect)=Timer(AMAROK_TITLE,cancel); Back=Set(text,close);Set(menu,replace,Playlist,File Browser);Macro(ALLIN1MENU); Playlist=Timer(AMAROK_TITLE,cancel);Make(mode,amarok_playlist) Search=Timer(AMAROK_TITLE,cancel);Make(mode,amarok_search) File Browser=Timer(AMAROK_TITLE,cancel);Make(mode,amarok_file_browser) 1=Exec(dcop amarok player volumeDown) %2=Exec(dcop amarok player mute) -- only mutes with amarok 1.4.8 2=Make(var,am_volume,echo 'if [ "x$(am_volume)" == "x-1" ]; then dcop amarok player getVolume;dcop amarok player setVolume 0; else dcop amarok player setVolume $(am_volume); echo "-1"; fi;'|bash -f -s) 3=Exec(dcop amarok player volumeUp) 4=Exec(dcop amarok player seekRelative -10) 5=Exec(dcop amarok player play);Macro(AMAROK_TIMER); 6=Exec(dcop amarok player seekRelative 10) 7=Exec(dcop amarok player prev);Macro(AMAROK_TITLE); 8=Exec(dcop amarok player stop);Set(title,Stopped);Timer(AMAROK_TITLE,cancel); 9=Exec(dcop amarok player next);Macro(AMAROK_TITLE); * *=Macro(AMAROK_HELP); * #=Exec(echo 'P=`dcop 2> /dev/null|grep amarok`; if [ "x$P" == "x" ]; then amarok 2> /dev/null; else dcop amarok MainApplication-Interface quit; fi'|bash -f -s);\ Set(title,);\ Set(status,); 0=Exec(dcop amarok player pause);Timer(AMAROK_TITLE,cancel);Set(title,Paused);Set(status,); #=Exec(dcop amarok MainApplication-Interface quit);Timer(AMAROK_TITLE,cancel);Set(title,);Set(status,); [ModeEnd] [Mode]=amarok_playlist (EnterMode)=Set(list,font,medium);\ ExecAndSet(list,replace,Playlist,dcop amarok playlist saveCurrentPlaylist;grep '<item' $HOME/.kde/share/apps/amarok/current.xml|sed 's/<item url=\"file:\/\/\(.*\)\" \(.\)*$/\1/'|xargs -i basename {}|sed 's/uniqueid=.*//g;s/%20/ /g;s/,/\r/g;s/$/,/');\ Set(menu,add,Choose); (ExitMode)=Set(list,close);Set(status,Playing);Macro(AMAROK_TITLE);Macro(AMAROK_TIMER); Back($$)=Make(mode,amarok); Choose($$)=Exec(dcop amarok playlist playByIndex `expr $(Index) - 1`); [ModeEnd] [Mode]=amarok_search (EnterMode)=Set(editfield,Search,Pattern, ) (ExitMode)=Set(list,close);Set(status,Playing);Macro(AMAROK_TITLE);Macro(AMAROK_TIMER); Back($$)=Exec(rm -f $HOME/.anyRemote/amarok.numbered_playlist);Make(mode,amarok); Ok($$)=Exec(dcop amarok playlist saveCurrentPlaylist;grep '<item' $HOME/.kde/share/apps/amarok/current.xml|sed 's/<item url=\"file:\/\/\(.*\)\" \(.\)*$/\1/'|xargs -i basename {}|sed 's/uniqueid=.*//g;s/%20/ /g;s/,/\r/g'|nl > $HOME/.anyRemote/amarok.numbered_playlist;cat $HOME/.anyRemote/amarok.numbered_playlist|grep $(Param) > $HOME/.anyRemote/amarok.filtered_playlist);\ Set(list,font,medium);\ ExecAndSet(list,replace,Filtered,sleep 1;cat $HOME/.anyRemote/amarok.filtered_playlist|cut -f 2|sed 's/$/,/');\ Set(menu,add,Choose_); Choose_($$)=Make(var,real_index,cat $HOME/.anyRemote/amarok.filtered_playlist|head -$(Index)|tail -1|cut -f 1|tr -d ' ');\ Exec(dcop amarok playlist playByIndex `expr $(real_index) - 1`); [ModeEnd] [Mode]=amarok_file_browser (EnterMode)=Set(list,font,small);Macro(FillList);Macro(UPDATEMENU); (ExitMode)=Set(list,close);Macro(AMAROK_TIMER); UPDATEMENU=Set(menu,replace,GoTo,Add to playlist,Clear playlist,Go Home); % FBROWSER v.3i FillList=Set(iconlist,replace,Files,folder:..);\ Macro(FillDir);\ Macro(FillFile); FillDir =ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/'| xargs -d '\n' -i echo "folder:" {}); FillFile=ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/'| xargs -d '\n' -i echo "file:"{}); GoTo($$)=Make(var,goto,by_value,$(Param));\ ExecAndSet(iconlist,replace,Files,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";echo "if [ -d $(goto) ]; then cd $(goto);fi;pwd>$HOME/.anyRemote/ar_storedir.tmp;"|bash -f -s;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); Go Home($$)=ExecAndSet(iconlist,replace,Files,cd;pwd>$HOME/.anyRemote/ar_storedir.tmp;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); % FBROWSER v.3i Add to playlist($$)=Exec(dcop amarok playlist addMedia "`cat $HOME/.anyRemote/ar_storedir.tmp`/$(Param)"); Clear playlist($$)=Exec(dcop amarok playlist clearPlaylist); Back($$)=Make(mode,amarok); [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/obsoleted/Server-mode/customizeClient5.cfg���������������������������������0000644�0002322�0002322�00000005307�12073567675�025672� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Customize client 5 GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of possible customization of Java Client. Shows how to use icons of different sizes. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Set(parameter,debug,on);\ Set(popup,show,Please wait);\ Set(fg,0,0,0);\ Set(bg,255,255,255);\ Set(icons,Icon size,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Set(font,small);\ Set(status,status field);\ Set(title,title field);\ Set(menu,add,Fullscreen_on,Fullscreen_off);\ Set(popup,hide); Back=Set(text,close); 1=Set(layout,default);Set(parameter,icon_size,16); 2=Set(layout,default);Set(parameter,icon_size,32); 3=Set(layout,default);Set(parameter,icon_size,48); 4=Set(layout,default);Set(parameter,icon_size,64); 5=Set(layout,default);Set(parameter,icon_size,128); * 1=Set(layout,default,volume);Set(parameter,icon_size,16);Set(volume,16); * 2=Set(layout,default,volume);Set(parameter,icon_size,32);Set(volume,32); * 3=Set(layout,default,volume);Set(parameter,icon_size,48);Set(volume,48); * 4=Set(layout,default,volume);Set(parameter,icon_size,64);Set(volume,64); * 5=Set(layout,default,volume);Set(parameter,icon_size,128);Set(volume,128); # 1=Set(layout,default);Set(parameter,icon_size,16);Set(parameter,icon_padding,16); # 2=Set(layout,default);Set(parameter,icon_size,32);Set(parameter,icon_padding,32); # 3=Set(layout,default);Set(parameter,icon_size,48);Set(parameter,icon_padding,32); # 4=Set(layout,default);Set(parameter,icon_size,64);Set(parameter,icon_padding,48); # 5=Set(layout,default);Set(parameter,icon_size,128);Set(parameter,icon_padding,64); 6=Set(layout,7x1);Set(parameter,icon_size,16); 7=Set(layout,7x1);Set(parameter,icon_size,32); 8=Set(layout,7x1);Set(parameter,icon_size,48); 9=Set(layout,7x1);Set(parameter,icon_size,64); 0=Set(layout,7x1);Set(parameter,icon_size,128); * 6=Set(layout,7x1,volume);Set(parameter,icon_size,16);Set(volume,16); * 7=Set(layout,7x1,volume);Set(parameter,icon_size,32);Set(volume,32); * 8=Set(layout,7x1,volume);Set(parameter,icon_size,48);Set(volume,48); * 9=Set(layout,7x1,volume);Set(parameter,icon_size,64);Set(volume,64); * 0=Set(layout,7x1,volume);Set(parameter,icon_size,128);Set(volume,128); Fullscreen_on=Set(fullscreen,on); Fullscreen_off=Set(fullscreen,off); * *=Set(text,replace,Help,Press\n1,2,3,4,5\n*1,*2,*3,*4,*5\n#1,#2,#3,#4,#5\nto change icon sizes\nwith default layout\n6,7,8,9,0\n*6,*7,*8,*9,*0\n,#6,#7,#8,#9,#0\nto change icon sizes\nwith 7x1 layout\nand menu to toggle fullscreen) [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/obsoleted/Server-mode/amarok-kde3-v2.cfg�����������������������������������0000644�0002322�0002322�00000014746�12123520167�025033� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for amarok management. (Server-mode) % v.2 - another layout % % prerequisites: ImageMagic % % STATUS stable % XTEST no % SOUND app % ENV no % FBROWSER v.3i GuiAppName=Amarok v.2/KDE3 GuiAppBinary=amarok GuiAppVersion=echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then echo OK; else echo NOK; fi'|bash -f -s GuiAppRun=echo 'A=`dcop 2> /dev/null|grep amarok`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=amarok.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration supports cover art. This configuration file is for Amarok/KDE3 [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" == "x4" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE3"; fi'|bash -f -s);\ Exec(echo 'P=`which convert|grep convert|grep -v no|wc -l|tr -d " "`;if [ "x$P" == "x1" ]; then true; else $(CfgDir)/Utils/message.sh "ERROR: ImageMagic is not installed"; fi'|bash -f -s); (Connect)=Set(parameter,debug,on);\ Make(mode,amarok-v2); (Exit)=Macro(AMAROK_V2_EXIT); AM_HELP=Set(text,replace,Help,Manage player by joystick or from menu); AMAROK_V2_SETINFO=ExecAndSet(title,dcop amarok player title);\ ExecAndSet(status,dcop amarok player artist);\ ExecAndSet(cover,noname,echo 'I=`dcop amarok player coverImage`;if [ "x$I" == "x" ]; then true; else F=`basename $I`;cat $I|convert - -resize $(cover_size)x$(cover_size) -depth 8 $HOME/.anyRemote/amarok_covers/$F;echo $HOME/.anyRemote/amarok_covers/$F; fi;'|bash -f -s); AMAROK_V2_START_TIMER=Macro(AMAROK_V2_SETINFO);\ Timer(AMAROK_V2_SETINFO,5,0); AMAROK_V2_STOP_TIMER =Timer(AMAROK_V2_SETINFO,cancel); AMAROK_V2_EXIT=Exec(rm -rf $HOME/.anyRemote/amarok_covers); [Mode]=amarok-v2 (Exit)=Macro(AMAROK_V2_EXIT); AM_V2_LAYOUT=Set(icons,Amarok,1,prev,2,rewind,3,play,4,pause,5,stop,6,forward,7,next,8,none,9,none,*,none,0,none,#,none);\ Set(font,small);\ Set(layout,7x1,joystick_only,choose,3,volume,ticker,up,Vol+,down,Vol-); AM_V2_RUN_IF=Exec(echo 'A=`dcop 2> /dev/null|grep amarok`; if [ "x$A" == "x" ]; then amarok& fi'|bash -f -s); AM_V2_MENU=Set(menu,replace,Playlist,Vol+,Vol-,Mute,File Browser,Run Player,Quit Player,Toggle Fullscreen,Help);\ Macro(ALLIN1MENU);\ Macro(VOL_SET); (EnterMode)=Macro(AM_V2_LAYOUT);\ Macro(AM_V2_RUN_IF);\ Make(var,am_volume,dcop amarok player getVolume);\ Exec(rm -rf $HOME/.anyRemote/amarok_covers;mkdir $HOME/.anyRemote/amarok_covers);\ Make(var,cover_size,by_value,64);\ Get(cover_size);\ Macro(AMAROK_V2_SETINFO);\ Macro(AM_V2_MENU); Cancel=Exec(dcop amarok MainApplication-Interface quit); (Disconnect)=Macro(AMAROK_V2_STOP_TIMER); Back=Set(text,close);Macro(AM_V2_MENU); Playlist=Macro(AMAROK_V2_STOP_TIMER);Make(mode,amarok_playlist_v2) File Browser=Macro(AMAROK_V2_STOP_TIMER);Make(mode,amarok_file_browser_v2) Vol+=Exec(dcop amarok player volumeUp);Macro(VOL_SET); Vol-=Exec(dcop amarok player volumeDown);Macro(VOL_SET); %Mute=Exec(dcop amarok player mute); -- only mutes with amarok 1.4.8 Mute=Make(var,am_volume,dcop amarok player getVolume);\ Set(volume,0);\ Set(menu,replace,Playlist,Vol+,Vol-,Unmute,File Browser,Run Player,Quit Player,Toggle Fullscreen,Help);\ Macro(ALLIN1MENU); Unmute=Make(var,am_volume,echo 'if [ "x$(am_volume)" == "x-1" ]; then dcop amarok player setVolume 0;echo "-1"; else dcop amarok player setVolume $(am_volume);echo "-1"; fi;'|bash -f -s);\ Macro(AM_V2_MENU); Toggle Fullscreen=Set(fullscreen,toggle);Set(cover,clear);Get(cover_size); CoverSize($$)=Make(var,cover_size,by_value,$(Index)); Run Player=Macro(AM_V2_RUN_IF); Quit Player=Exec(dcop amarok MainApplication-Interface quit);\ Macro(AMAROK_V2_STOP_TIMER);\ Set(title,);\ Set(status,); Help=Macro(AM_HELP); VOL_SET=ExecAndSet(volume,dcop amarok player getVolume); % No more 7 buttons - Nokia's Series40 has 160x120 screens 1=Exec(dcop amarok player prev);Macro(AMAROK_V2_SETINFO); 2=Exec(dcop amarok player seekRelative -10) 3=Exec(dcop amarok player play);Macro(AMAROK_V2_START_TIMER);Macro(VOL_SET); 4=Exec(dcop amarok player pause);Macro(AMAROK_V2_STOP_TIMER);Set(title,Paused); 5=Exec(dcop amarok player stop);Set(title,Stopped);Macro(AMAROK_V2_STOP_TIMER); 6=Exec(dcop amarok player seekRelative 10) 7=Exec(dcop amarok player next);Macro(AMAROK_V2_SETINFO); [ModeEnd] [Mode]=amarok_playlist_v2 (EnterMode)=Set(list,font,medium);\ ExecAndSet(list,replace,Playlist,dcop amarok playlist saveCurrentPlaylist;grep '<item' $HOME/.kde/share/apps/amarok/current.xml|sed 's/<item url=\"file:\/\/\(.*\)\" \(.\)*$/\1/'|xargs -i basename {}|sed 's/uniqueid=.*//g;s/%20/ /g;s/,/\r/g;s/$/,/');\ Set(menu,add,Choose); (ExitMode)=Set(list,close);Set(status,Playing);Macro(AMAROK_V2_START_TIMER); Back($$)=Make(mode,amarok-v2); Choose($$)=Exec(dcop amarok playlist playByIndex `expr $(Index) - 1`); [ModeEnd] [Mode]=amarok_file_browser_v2 (EnterMode)=Set(list,font,small);Macro(FillList);Macro(UPDATEMENU); (ExitMode)=Set(list,close);Macro(AMAROK_V2_START_TIMER); UPDATEMENU=Set(menu,replace,GoTo,Add to playlist,Clear playlist,Go Home); Add to playlist($$)=Exec(dcop amarok playlist addMedia `cat $HOME/.anyRemote/ar_storedir.tmp`/$(Param)); Clear playlist($$)=Exec(dcop amarok playlist clearPlaylist); Back($$)=Make(mode,amarok-v2); % FBROWSER v.3i FillList=Set(iconlist,replace,Files,folder:..);\ Macro(FillDir);\ Macro(FillFile); FillDir =ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/'| xargs -d '\n' -i echo "folder:" {}); FillFile=ExecAndSet(iconlist,add,SAME,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/'| xargs -d '\n' -i echo "file:"{}); GoTo($$)=Make(var,goto,by_value,$(Param));\ ExecAndSet(iconlist,replace,Files,cd "`cat $HOME/.anyRemote/ar_storedir.tmp`";echo "if [ -d $(goto) ]; then cd $(goto);fi;pwd>$HOME/.anyRemote/ar_storedir.tmp;"|bash -f -s;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); Go Home($$)=ExecAndSet(iconlist,replace,Files,cd;pwd>$HOME/.anyRemote/ar_storedir.tmp;echo "folder:..");\ Macro(FillDir);\ Macro(FillFile); % FBROWSER v.3i [ModeEnd] [End] ��������������������������anyremote-6.7.1/cfg-data/obsoleted/Server-mode/kmid.cfg���������������������������������������������0000644�0002322�0002322�00000005223�12073567675�023345� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for kmid management. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no % FBROWSER v.3i GuiAppName=Kmid GuiAppBinary=kmid GuiAppRun=echo 'A=`qdbus 2> /dev/null|grep kmid`; if [ "x$A" == "x" ]; then echo NOK; else echo OK; fi'|bash -f -s GuiAppIcon=kmid.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KMid is a X11/KDE based midi player for Linux and FreeBSD. GuiAppVersion=echo 'V=`kmid -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x4" ]; then echo OK; else echo NOK; fi'|bash -f -s [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v3i.cfg);\ Exec(echo 'V=`kmid -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" == "x3" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE4"; fi'|bash -f -s);\ Macro(FBROWSER_IC_INIT); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=Make(mode,kmid); [Mode]=kmid (EnterMode)=Set(layout,default);\ Set(icons,KMid,1,folder,2,default,3,refresh,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Set(title,);\ Set(status,);\ Macro(KMID_MENU); KMID_MENU=Set(menu,replace,);Macro(ALLIN1MENU) Cancel=Macro(QUIT); QUIT=Exec(qdbus `qdbus|grep kmid` /MainApplication org.kde.KApplication.quit > /dev/null); Back=Set(text,close);Macro(KMID_MENU) Back($$)=Set(list,close); UpdateMenu=Set(menu,replace,GoTo,Open,Go Home); Open($$)=\ Set(list,close);\ Set(menu,clear);\ Set(title,$(Param));\ Exec(cd "$(fbrowser_dir)";kmid "$(Param)"); GoTo($$) =Macro(FBROWSER_IC_GO_TO); Go Home($$) =Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v3i.cfg 1=Macro(QUIT);Macro(FBROWSER_IC_FILL_LIST);Macro(UpdateMenu); 3=Exec(qdbus `qdbus|grep kmid` /kmid/MainWindow_1 activateAction song_loop > /dev/null); 4=Exec(qdbus `qdbus|grep kmid` /kmid/MainWindow_1 activateAction song_rewind > /dev/null); 5=Exec(qdbus `qdbus|grep kmid` /kmid/MainWindow_1 activateAction song_play > /dev/null); 6=Exec(qdbus `qdbus|grep kmid` /kmid/MainWindow_1 activateAction song_forward > /dev/null); 7=Exec(qdbus `qdbus|grep kmid` /kmid/MainWindow_1 activateAction song_previous > /dev/null); 8=Exec(qdbus `qdbus|grep kmid` /kmid/MainWindow_1 activateAction song_stop > /dev/null); 9=Exec(qdbus `qdbus|grep kmid` /kmid/MainWindow_1 activateAction song_next > /dev/null); * *=Set(text,replace,Help,1 - Files\n3 - Toogle Repeat\n4 - Rew\n5 - Play\n6 - FF\n7 - Prew\n8 - Stop\n9 - Next\n* * - Help\n0 - Pause\n# - Quit) 0=Exec(qdbus `qdbus|grep kmid` /kmid/MainWindow_1 activateAction song_pause > /dev/null); #=Macro(QUIT); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/iViewer/�������������������������������������������������������������������0000755�0002322�0002322�00000000000�12123520170�017147� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/iViewer/banshee.cfg��������������������������������������������������������0000644�0002322�0002322�00000011677�12061426047�021262� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Banshee management. (Server-mode Command Fusion iViewer) % prerequisites: Iviewer client installed on Ipod touch/Iphone 2.x and Iviewer free winamp GUI % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Banshee GuiAppBinary= B=`which banshee 2> /dev/null`;if [ "x$B" = "x" ]; then echo banshee-1; else echo banshee; fi GuiAppRun= P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=media-player-banshee.png GuiAppType=Application GuiAppProtocols=iViewer GuiAppDesc=Music management and playback for Gnome [Protocol]=iViewer (Init)=\ Include($(CfgDir)/Utils/aliases-iviewer.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,IViewer,by_value,true);\ Make(var, banshee_exec, which banshee 2> /dev/null);\ Make(var, banshee_exec, if [ "x$(banshee_exec)" = "x" ]; then which banshee-1; else echo $(banshee_exec); fi);\ BANSHEE_CMD=\ Exec(P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" != "x" ]; then $(banshee_cmd); fi); %a1 = volume %a2 = needs a constent update to. its the seek bar %s1 = artist %s2 = track %s5 = current playback in min:sec %s6 = song length min:sec. % play d1(1)=\ Make(var,banshee_cmd,by_value,$(banshee_exec) --toggle-playing);\ Macro(BANSHEE_CMD); % stop d30(1)=\ Make(var,banshee_cmd,by_value,$(banshee_exec) --pause);\ Macro(BANSHEE_CMD); % pause d31(1)=\ Make(var,banshee_cmd,by_value,$(banshee_exec) --pause);\ Macro(BANSHEE_CMD); % next d5(1)=\ Make(var,banshee_cmd,by_value,$(banshee_exec) --next);\ Macro(BANSHEE_CMD);\ Macro(TITLE); % prev d6(1)=\ Make(var,banshee_cmd,by_value,$(banshee_exec) --previous);\ Macro(BANSHEE_CMD);\ Macro(TITLE); % toggle repeat d12(1)=\ Exec(echo "Toggle repeat") % toggle shuffle d9(1)=\ Exec(echo "Toggle shuffle") % volume contol a1($$)=\ Make(var,default_mixer_value,by_value,$(Index));\ Macro(DEFAULT_VOLUME_SET);\ Macro(VOLUME); % seek >> and << a2($$)=\ Make(var,song_len,P=`$(banshee_exec) --query-duration|cut -f 2 -d ":"|cut -f 1 -d ","|tr -d " "`;if [ "x$P" = "x" ]; then echo 1; else echo $P; fi);\ Make(var,song_pos,$(Index)*$(song_len)/65535"|bc);\ Exec($(banshee_exec) --set-position=$(song_pos));\ Macro(PLAYBACK); % Feedback PLAYBACK=\ Make(var,song_pos,P=`$(banshee_exec) --query-position|cut -f 2 -d ":"|cut -f 1 -d ","|tr -d " "`;if [ "x$P" = "x" ]; then echo 1; else echo $P; fi);\ Make(var,pos_mm,echo "$(song_pos)/60"|bc);\ Make(var,pos_ss,echo "$(song_pos)-$(pos_mm)*60"|bc);\ Send(string,s5=$(pos_mm):$(pos_ss));Send(bytes,3);\ Make(var,song_len,P=`$(banshee_exec) --query-duration|cut -f 2 -d ":"|cut -f 1 -d ","|tr -d " "`;if [ "x$P" = "x" ]; then echo 1; else echo $P; fi);\ Make(var,playback_pos,echo "65535*$(song_pos)/$(song_len)"|bc);\ Send(string,a2=$(playback_pos));Send(bytes,3); %Send(string,s5=);ExecAndSend(string,echo "01:00");Send(bytes,3);\ % Make(var,playback_persent,echo "65535*"`echo 50`"/100"|bc);\ % Send(string,a2=$(playback_persent));Send(bytes,3); % get volume: 0 - 65535 VOLUME=\ Macro(DEFAULT_VOLUME_GET);\ Send(string,a1=$(default_mixer_value));Send(bytes,3); % Artist name ARTIST=\ ExecAndSend(string,P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" != "x" ]; then $(banshee_exec) --query-artist|cut -f 2 -d ":"|sed "s/%20/ /g"; fi); % Track TRACK=\ ExecAndSend(string,P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" != "x" ]; then $(banshee_exec) --query-title|cut -f 2 -d ":"|sed "s/%20/ /g"; fi;); % Song length mm:ss SONG_LEN=\ Make(var,song_len,P=`$(banshee_exec) --query-duration|cut -f 2 -d ":"|cut -f 1 -d ","|tr -d " "`;if [ "x$P" = "x" ]; then echo 1; else echo $P; fi);\ Make(var,song_mm,echo "$(song_len)/60"|bc);\ Make(var,song_ss,echo "$(song_len)-$(song_mm)*60"|bc);\ Send(string,$(song_mm):$(song_ss)); % % The following is a common part. In general, it should not be changed. % TITLE=\ Send(string,s1=);Macro(ARTIST);Send(bytes,3);\ Send(string,s2=);Macro(TRACK);Send(bytes,3);\ Send(string,s6=);Macro(SONG_LEN);Send(bytes,3);\ Send(string,s4=img_coverart-300.png);Send(bytes,3); d5(0)=Macro(TITLE); d6(0)=Macro(TITLE); % Init i(1)=Macro(TITLE); % Password p(PASSWORD)" p($$)=Send(string,p=ok);Send(bytes,3); % Heartbeat DISC=\ Macro(STOP_TIMERS);\ Make(disconnect); h(0)=Timer(DISC,reset); % no needs to send "h=1\03" replay directly because this will be done % automatically - that controlled by $(IViewer) variable % If $(IViewer) variable is not set it needs to use the following command: % h(0)=Send(bytes,104,61,49,3);Timer(DISC,reset); STOP_TIMERS=\ Timer(PLAYBACK,cancel);\ Timer(VOLUME,cancel);\ Timer(TITLE,cancel); % Event timers (Connect)=\ Exec(P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then $(banshee_exec)& fi);\ Timer(DISC,10,1);\ Timer(PLAYBACK,3,0);\ Timer(VOLUME,10,0);\ Timer(TITLE,5,0); (Disconnect)=\ Macro(STOP_TIMERS); [End] �����������������������������������������������������������������anyremote-6.7.1/cfg-data/iViewer/vlc.cfg������������������������������������������������������������0000644�0002322�0002322�00000006331�12061426047�020430� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for VLC management. (Server-mode CommandFusion iViewer emulation) % prerequisites: Iviewer client installed on Ipod touch/Iphone 2.x and Iviewer free winamp GUI % % STATUS nonstable % XTEST yes % SOUND mixer % ENV no GuiAppName=VLC GuiAppBinary=vlc GuiAppRun= P=`ps -ef|grep vlc|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=vlc.png GuiAppType=Application GuiAppProtocols=iViewer GuiAppDesc=VLC media player is a highly portable multimedia player for various audio and video formats (MPEG-1, MPEG-2, MPEG-4, DivX, mp3, ogg, ...) as well as DVDs, VCDs, and various streaming protocols. [Protocol]=iViewer % Init update %T current title %M song len mm:ss %m playback time mm:ss %p playback time in persents %S song len sec %s1 = artist %s2 = track %s6 = song length min:sec. %s5 = current playback in min:sec %a2 = needs a constent update to. its the seek bar %a1 = volume % play/pause d1(1)=Exec($(vlc_dbus) org.mpris.MediaPlayer2.Player.Play); % next d5(1)=Exec($(vlc_dbus) org.mpris.MediaPlayer2.Player.Next); % prev d6(1)=Exec($(vlc_dbus) org.mpris.MediaPlayer2.Player.Previous); % toggle repeat d12(1)=Make(none); % toggle shuffle d9(1)=Make(none); % volume contol a1($$)=\ Make(var,default_mixer_value,by_value,$(Index));\ Macro(DEFAULT_VOLUME_SET);\ Macro(VOLUME); % seek >> and << a2($$)=\ Make(var,seek_command,if [ $(Index) \> 32750 ]; then echo VLC_SEEK_FWD; else echo VLC_SEEK_RW; fi);\ Macro($(seek_command));\ Macro(PLAYBACK); % Feedback PLAYBACK=\ Make(none) VLC_SEEK_FWD=\ Emulate(keydown,Alt_L,key,Right,keyup,Alt_L); VLC_SEEK_RW=\ Emulate(keydown,Alt_L,key,Left,keyup,Alt_L); % get volume: 0 - 65535 VOLUME=\ Macro(DEFAULT_VOLUME_GET);\ Send(string,a1=$(default_mixer_value));\ Send(bytes,3); % Artist name ARTIST=\ ExecAndSend(string,echo ""); % Track TRACK=\ ExecAndSend(string,echo ""); % Song length sec SONG_LEN=\ ExecAndSend(string,echo ""); % % The following is a common part. In general, it should not be changed. % TITLE=\ Send(string,s1=);Macro(ARTIST);Send(bytes,3);\ Send(string,s2=);Macro(TRACK);Send(bytes,3);\ Send(string,s6=);Macro(SONG_LEN);Send(bytes,3); d5(0)=Macro(TITLE); d6(0)=Macro(TITLE); % Init i(1)=Macro(TITLE);\ Macro(VOLUME); % Password p(PASSWORD)" p($$)=Send(string,p=ok);Send(bytes,3); % Heartbeat DISC=\ Macro(STOP_TIMERS);\ Make(disconnect); h(0)=Timer(DISC,reset); % no needs to send "h=1\03" replay directly because this will be done % automatically - that controlled by $(IViewer) variable % If $(IViewer) variable is not set it needs to use the following command: % h(0)=Send(bytes,104,61,49,3);Timer(DISC,reset); STOP_TIMERS=\ Timer(PLAYBACK,cancel);\ Timer(VOLUME,cancel);\ Timer(TITLE,cancel); % Event timers (Init)=\ Include($(CfgDir)/Utils/aliases-iviewer.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,IViewer,by_value,true); (Connect)= \ Exec(P=`ps -ef|grep vlc|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then vlc& fi);\ Make(var,vlc_dbus,by_value,qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2);\ Timer(DISC,10,1);\ Timer(PLAYBACK,3,0);\ Timer(VOLUME,10,0);\ Timer(TITLE,5,0); (Disconnect)=\ Macro(STOP_TIMERS); [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/iViewer/kaffeine.cfg�������������������������������������������������������0000644�0002322�0002322�00000007245�12061426047�021421� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Kaffeine management. (Server-mode Command Fusion iViewer) % prerequisites: Iviewer client installed on Ipod touch/Iphone 2.x and Iviewer free winamp GUI % % STATUS stable % XTEST no % SOUND mixer % ENV no % TODO qdbus org.mpris.kaffeine /TrackList GetMetadata X GuiAppName=Kaffeine GuiAppBinary=kaffeine GuiAppVersion= V=`kaffeine -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi GuiAppRun= A=`pgrep kaffeine`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=kaffeine.png GuiAppType=Application GuiAppProtocols=iViewer GuiAppDesc=KDE media player [Protocol]=iViewer (Init)=\ Include($(CfgDir)/Utils/aliases-iviewer.cfg);\ Make(var,IViewer,by_value,true);\ Exec(V=`kaffeine -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x3" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE4"; fi); %a1 = volume %a2 = needs a constent update to. its the seek bar %s1 = artist %s2 = track %s5 = current playback in min:sec %s6 = song length min:sec. % play d1(1)=Exec(qdbus org.mpris.kaffeine /Player Play); % stop d30(1)=Exec(qdbus org.mpris.kaffeine /Player Stop); % pause d31(1)=Exec(qdbus org.mpris.kaffeine /Player Pause); % next d5(1)=Exec(qdbus org.mpris.kaffeine /Player Next);\ Macro(TITLE); % prev d6(1)=Exec(qdbus org.mpris.kaffeine /Player Prev);\ Macro(TITLE); % toggle repeat d12(1)=Exec(echo "Toggle repeat") % toggle shuffle d9(1)=Exec(echo "Toggle shuffle") % volume contol a1($$)=Make(var,change_vol,echo "$(Index)*100/65535"|bc);\ Exec(qdbus org.mpris.kaffeine /Player VolumeSet $(change_vol));\ Macro(VOLUME); % seek >> and << a2($$)=Macro(PLAYBACK); % Feedback PLAYBACK=\ Make(var,song_pos,qdbus org.mpris.kaffeine /Player PositionGet);\ Make(var,pos_mm,echo "$(song_pos)/60000"|bc);\ Make(var,pos_ss,echo "($(song_pos)-$(pos_mm)*60000)/1000"|bc);\ Send(string,s5=$(pos_mm):$(pos_ss));Send(bytes,3);\ Make(var,song_len,echo 1);\ Make(var,playback_pos,echo "65535*$(song_pos)/$(song_len)"|bc);\ Send(string,a2=$(playback_pos));Send(bytes,3); % get volume: 0 - 65535 VOLUME=\ Make(var,vol_value,echo "65535*"`qdbus org.kde.kaffeine /Player VolumeGet`"/100"|bc);\ Send(string,a1=$(vol_value));\ Send(bytes,3); % % It seems qdbus org.mpris.kaffeine /TrackList GetMetadata X does not works % % Artist name ARTIST=\ ExecAndSend(string,echo ""); % Track TRACK=\ ExecAndSend(string,echo ""); % Song length mm:ss SONG_LEN=\ Make(var,song_len,echo 1);\ Make(var,song_mm,echo "$(song_len)/60000"|bc);\ Make(var,song_ss,echo "($(song_len)-$(song_mm)*60000)/1000"|bc);\ Send(string,$(song_mm):$(song_ss)); % % The following is a common part. In general, it should not be changed. % TITLE=\ Send(string,s1=);Macro(ARTIST);Send(bytes,3);\ Send(string,s2=);Macro(TRACK);Send(bytes,3);\ Send(string,s6=);Macro(SONG_LEN);Send(bytes,3); d5(0)=Macro(TITLE); d6(0)=Macro(TITLE); % Init i(1)=Macro(TITLE); % Password p(PASSWORD)" p($$)=Send(string,p=ok);Send(bytes,3); % Heartbeat DISC=\ Macro(STOP_TIMERS);\ Make(disconnect); h(0)=Timer(DISC,reset); % no needs to send "h=1\03" replay directly because this will be done % automatically - that controlled by $(IViewer) variable % If $(IViewer) variable is not set it needs to use the following command: % h(0)=Send(bytes,104,61,49,3);Timer(DISC,reset); STOP_TIMERS=\ Timer(PLAYBACK,cancel);\ Timer(VOLUME,cancel);\ Timer(TITLE,cancel); % Event timers (Connect)=\ Exec(A=`qdbus|grep kaffeine`; if [ "x$A" = "x" ]; then kaffeine;fi);\ Timer(DISC,10,1);\ Timer(PLAYBACK,3,0);\ Timer(VOLUME,10,0);\ Timer(TITLE,5,0); (Disconnect)=\ Macro(STOP_TIMERS); [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/iViewer/totem.cfg����������������������������������������������������������0000644�0002322�0002322�00000006113�12061426047�020772� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Totem management (Server-mode for Command Fusion iViewer ) % prerequisites: Iviewer client installed on Ipod touch/Iphone 2.x and Iviewer free winamp GUI % and amixer/pactl utility % % STATUS unknown % XTEST no % SOUND mixer % ENV no GuiAppName=Totem GuiAppBinary=totem GuiAppRun= A=`ps -ef|grep totem|grep -v totem-plugin-viewer|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=totem.png GuiAppType=Application GuiAppProtocols=iViewer GuiAppDesc=Totem is the official movie player of the GNOME desktop environment based on xine-lib or GStreamer. [Protocol]=iViewer %a1 = volume %a2 = needs a constent update to. its the seek bar %s1 = artist %s2 = track %s5 = current playback in min:sec %s6 = song length min:sec. % play d1(1)=Exec(totem --play-pause;totem --fullscreen); % stop d30(1)=Exec(totem --pause); % pause d31(1)=Exec(totem --pause); % next d5(1)=Exec(totem --next);\ Macro(TITLE); % prev d6(1)=Exec(totem --previous);\ Macro(TITLE); % toggle repeat d12(1)=Exec(echo "Toggle repeat: Oops") % toggle shuffle d9(1)=Exec(echo "Toggle shuffle: Oops") % volume contol a1($$)=\ Make(var,default_mixer_value,by_value,$(Index));\ Macro(DEFAULT_VOLUME_SET);\ Macro(VOLUME); % seek >> and << a2($$)=\ Make(var,seek_command,if [ $(Index) \> 32750 ]; then echo "--seek-fwd"; else echo "--seek-bwd"; fi);\ Exec(totem $(seek_command));\ Macro(PLAYBACK); % Feedback PLAYBACK=\ Send(string,s5=);ExecAndSend(string,echo "00:00");Send(bytes,3);\ Make(var,playback_persent,by_value,0);\ Send(string,a2=$(playback_persent));Send(bytes,3); % get volume: 0 - 65535 VOLUME=\ Macro(DEFAULT_VOLUME_GET);\ Send(string,a1=$(default_mixer_value));Send(bytes,3); % Artist name ARTIST=\ ExecAndSend(string,echo ""); % Track TRACK=\ ExecAndSend(string,echo ""); % Song length mm:ss SONG_LEN=\ ExecAndSend(string,echo "00:00"); % % The following is a common part. In general, it should not be changed. % TITLE=\ Send(string,s1=);Macro(ARTIST);Send(bytes,3);\ Send(string,s2=);Macro(TRACK);Send(bytes,3);\ Send(string,s6=);Macro(SONG_LEN);Send(bytes,3); d5(0)=Macro(TITLE); d6(0)=Macro(TITLE); % Init i(1)=Macro(TITLE); % Password p(PASSWORD)" p($$)=Send(string,p=ok);Send(bytes,3); % Heartbeat DISC=\ Macro(STOP_TIMERS);\ Make(disconnect); h(0)=Timer(DISC,reset); % no needs to send "h=1\03" replay directly because this will be done % automatically - that controlled by $(IViewer) variable % If $(IViewer) variable is not set it needs to use the following command: % h(0)=Send(bytes,104,61,49,3);Timer(DISC,reset); STOP_TIMERS=\ Timer(PLAYBACK,cancel);\ Timer(VOLUME,cancel);\ Timer(TITLE,cancel); % Event timers (Init)=\ Include($(CfgDir)/Utils/aliases-iviewer.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,IViewer,by_value,true); (Connect)=\ Exec(P=`ps -ef|grep totem|grep -v totem-plugin-viewer|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then totem& fi);\ Timer(DISC,10,1);\ Timer(PLAYBACK,3,0);\ Timer(VOLUME,10,0);\ Timer(TITLE,5,0); (Disconnect)=\ Macro(STOP_TIMERS); [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/iViewer/juk.cfg������������������������������������������������������������0000644�0002322�0002322�00000010054�12061426047�020432� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Juk/KDE4 management. (Server-mode Command Fusion iViewer) % prerequisites: Iviewer client installed on Ipod touch/Iphone 2.x and Iviewer free winamp GUI % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Juk/KDE4 GuiAppBinary=juk GuiAppVersion= V=`juk -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi GuiAppRun= A=`pgrep juk`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=juk.png GuiAppType=Application GuiAppProtocols=iViewer GuiAppDesc=JuK is a free software audio player for KDE, part of the kdemultimedia package. JuK supports collections of MP3, Ogg Vorbis, and FLAC audio files. This configuration file is for Juk/KDE4. [Protocol]=iViewer (Init)=\ Make(var,IViewer,by_value,true);\ Exec(V=`juk -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" = "x3" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE4"; fi); %a1 = volume %a2 = needs a constent update to. its the seek bar %s1 = artist %s2 = track %s5 = current playback in min:sec %s6 = song length min:sec. % play d1(1)=Exec(qdbus org.kde.juk /Player org.kde.juk.player.play); % stop d30(1)=Exec(qdbus org.kde.juk /Player org.kde.juk.player.stop); % pause d31(1)=Exec(qdbus org.kde.juk /Player org.kde.juk.player.pause); % next d5(1)=Exec(qdbus org.kde.juk /Player org.kde.juk.player.forward);\ Macro(TITLE); % prev d6(1)=Exec(qdbus org.kde.juk /Player org.kde.juk.player.back);\ Macro(TITLE); % toggle repeat d12(1)=Exec(echo "Toggle repeat: Oops") % toggle shuffle d9(1)=Exec(echo "Toggle shuffle: Oops") % volume contol a1($$)=\ Make(var,change_vol,echo "$(Index)/65535"|bc -l);\ Exec(qdbus org.kde.juk /Player setVolume $(change_vol));\ Macro(VOLUME); % seek >> and << a2($$)=\ Make(var,seek_command,if [ $(Index) \> 32750 ]; then echo "seekForward"; else echo "seekBack"; fi);\ Exec(qdbus org.kde.juk /Player $(seek_command));\ Macro(PLAYBACK); % Feedback PLAYBACK=\ Make(var,song_pos,qdbus org.kde.juk /Player currentTime);\ Make(var,pos_mm,echo "$(song_pos)/60"|bc);\ Make(var,pos_ss,echo "($(song_pos)-$(pos_mm)*60)"|bc);\ Send(string,s5=$(pos_mm):$(pos_ss));Send(bytes,3);\ Make(var,song_len,qdbus org.kde.juk /Player totalTime);\ Make(var,playback_pos,echo "65535*$(song_pos)/$(song_len)"|bc|cut -f 1 -d '.');\ Send(string,a2=$(playback_pos));Send(bytes,3); % get volume: 0 - 65535 VOLUME=\ Make(var,juk_vol,qdbus org.kde.juk /Player volume);\ Make(var,vol_value,echo "65535*$(juk_vol)"|bc|cut -f 1 -d '.');\ Send(string,a1=$(vol_value));Send(bytes,3); % Artist name ARTIST=\ Make(var,album,qdbus org.kde.juk /Player trackProperty Album);\ Make(var,artist,qdbus org.kde.juk /Player trackProperty Artist);\ Send(string,$(artist) - $(album)); % Track TRACK=\ ExecAndSend(string,qdbus org.kde.juk /Player trackProperty Title); % Song length mm:ss SONG_LEN=\ Make(var,song_len,qdbus org.kde.juk /Player totalTime);\ Make(var,song_mm,echo "$(song_len)/60"|bc);\ Make(var,song_ss,echo "($(song_len)-$(song_mm)*60)"|bc);\ Send(string,$(song_mm):$(song_ss)); % % The following is a common part. In general, it should not be changed. % TITLE=\ Send(string,s1=);Macro(ARTIST);Send(bytes,3);\ Send(string,s2=);Macro(TRACK);Send(bytes,3);\ Send(string,s6=);Macro(SONG_LEN);Send(bytes,3); d5(0)=Macro(TITLE); d6(0)=Macro(TITLE); % Init i(1)=Macro(TITLE); % Password p(PASSWORD)" p($$)=Send(string,p=ok);Send(bytes,3); % Heartbeat DISC=\ Macro(STOP_TIMERS);\ Make(disconnect); h(0)=Timer(DISC,reset); % no needs to send "h=1\03" replay directly because this will be done % automatically - that controlled by $(IViewer) variable % If $(IViewer) variable is not set it needs to use the following command: % h(0)=Send(bytes,104,61,49,3);Timer(DISC,reset); STOP_TIMERS=\ Timer(PLAYBACK,cancel);\ Timer(VOLUME,cancel);\ Timer(TITLE,cancel); % Event timers (Connect)=\ Exec(A=`pgrep juk`; if [ "x$A" = "x" ]; then juk; fi);\ Timer(DISC,10,1);\ Timer(PLAYBACK,3,0);\ Timer(VOLUME,10,0);\ Timer(TITLE,5,0); (Disconnect)=\ Macro(STOP_TIMERS); [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/iViewer/iviewer-template.cfg�����������������������������������������������0000644�0002322�0002322�00000007375�12123520170�023127� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for XXXX management. (Server-mode Command Fusion iViewer) % prerequisites: Iviewer client installed on Ipod touch/Iphone 2.x and Iviewer free winamp GUI % % % An important note: % % Heartbeat messages are sent every 3 seconds and the maximal waiting time is only 5 seconds. % If no responces are comes in that short period of time, then iViewer will show the warning message. % So, it is strongly suggested to write _fast_ and _effective_ commands. % Keep in mind timers which also will consume some amount of time. % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Template GuiAppBinary=true GuiAppRun= P=`ps -ef|grep my-app|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=file.png GuiAppType=Example GuiAppProtocols=iViewer GuiAppDesc=This is template file for CommandFusion iViewer [Protocol]=iViewer %a1 = volume %a2 = seek bar (needs to update constantly) %s1 = artist %s2 = track %s5 = current playback in min:sec %s6 = song length min:sec. % play d1(1)=\ Exec(echo Play);\ Macro(TITLE); % stop d30(1)=\ Exec(echo Stop);\ Macro(AM_RESET_COVER); % pause d31(1)=\ Exec(echo Pause); % next d5(1)=\ Exec(echo next);\ Macro(TITLE); % prev d6(1)=\ Exec(echo previous);\ Macro(TITLE); % toggle repeat d12(1)=\ Exec(echo "Toggle repeat") % toggle shuffle d9(1)=\ Exec(echo "Toggle shuffle") % volume contol a1($$)=\ Make(var,default_mixer_value,by_value,$(Index));\ Macro(DEFAULT_VOLUME_SET);\ Macro(VOLUME); % seek >> and << a2($$)=\ Make(var,seek,echo "$(Index)*100/65535"|bc);\ Exec(echo "got $(Index)");\ Exec(echo "set position to $(seek)%");\ Macro(PLAYBACK); % Feedback PLAYBACK=\ Send(string,s5=);ExecAndSend(string,echo "01:00");Send(bytes,3);\ Make(var,playback_persent,echo "65535*"`echo 50`"/100"|bc);\ Send(string,a2=$(playback_persent));Send(bytes,3); % get volume: 0 - 65535 VOLUME=\ Macro(DEFAULT_VOLUME_GET);\ Send(string,a1=$(default_mixer_value));Send(bytes,3); % Artist name ARTIST=ExecAndSend(string,echo "Artist is ..."); % Track TRACK=\ ExecAndSend(string,echo "Track is ..."); % Song length mm:ss SONG_LEN=\ ExecAndSend(string,echo "04:00"); % cover image generation IV_COVER=\ Make(var,coverfile,echo "command to get file with cover image");\ Make(var,coverconverted,F=`basename "$(coverfile)"`;if [ "x$F" = "x" ]; then echo img_coverart-300.png;else convert "$(coverfile)" -resize 300 -depth 8 $(TmpDir)/generated_cover;echo generated_cover; fi);\ Send(string,s4=$(coverconverted));\ Send(bytes,3); % reset cover to default image (if playback is stopped) IV_RESET_COVER=\ Send(string,s4=img_coverart-300.png);\ Send(bytes,3); % % The following is a common part. In general, it should not be changed. % TITLE=\ Send(string,s1=);Macro(ARTIST);Send(bytes,3);\ Send(string,s2=);Macro(TRACK);Send(bytes,3);\ Send(string,s6=);Macro(SONG_LEN);Send(bytes,3);\ Macro(IV_COVER); d5(0)=Macro(TITLE); d6(0)=Macro(TITLE); % Init i(1)=Macro(TITLE); % Password p(PASSWORD)" p($$)=Send(string,p=ok);Send(bytes,3); % Heartbeat (no heartbeat == connection is lost) DISC=\ Macro(STOP_TIMERS);\ Make(disconnect); h(0)=Timer(DISC,reset); % no needs to send "h=1\03" replay directly because this will be done % automatically - that controlled by $(IViewer) variable % If $(IViewer) variable is not set it needs to use the following command: % h(0)=Send(bytes,104,61,49,3);Timer(DISC,reset); STOP_TIMERS=\ ` Timer(PLAYBACK,cancel);\ Timer(VOLUME,cancel);\ Timer(TITLE,cancel); % Event timers (Init)=\ Include($(CfgDir)/Utils/aliases-iviewer.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,IViewer,by_value,true); (Connect)=\ Timer(DISC,10,1);\ Timer(PLAYBACK,3,0);\ Timer(VOLUME,10,0);\ Timer(TITLE,5,0); (Disconnect)=\ Macro(STOP_TIMERS); [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/iViewer/amarok.cfg���������������������������������������������������������0000644�0002322�0002322�00000014050�12123520170�021102� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Amarok/KDE4 management. (Server-mode for Command Fusion iViewer ) % prerequisites: Iviewer client installed on Ipod touch/Iphone 2.x and Iviewer free winamp GUI % % STATUS unknown % XTEST no % SOUND app % ENV no GuiAppName=Amarok GuiAppBinary=amarok GuiAppVersion= V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi GuiAppRun= A=`pgrep amarok`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=amarok.png GuiAppType=Application GuiAppProtocols=iViewer GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration file is for Amarok/KDE4 [Protocol]=iViewer (Init)=\ Make(var,IViewer,by_value,true);\ Exec(P=`which dbus-send|grep dbus-send|grep -v no|wc -l|tr -d " "`;if [ "x$P" = "x1" ]; then true; else $(CfgDir)/Utils/message.sh "ERROR: dbus-send is not found"; fi);\ Exec(P=`which qdbus|grep qdbus|grep -v no|wc -l|tr -d " "`; if [ "x$P" = "x1" ]; then true; else $(CfgDir)/Utils/message.sh "ERROR: qdbus is not found"; fi);\ Exec(V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x3" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE4"; fi); %a1 = volume %a2 = needs a constent update to. its the seek bar %s1 = artist %s2 = track %s3 = album %s5 = current playback in min:sec %s6 = song length min:sec. s10001($$)=Exec(echo "s10001=$(Param)"); s10002($$)=Exec(echo "s10002=$(Param)"); n(Player)=Exec(echo "n=Player"); m(portrait)=Exec(echo "m=portrait"); % play d1(1)=Exec(amarok --play);Exec(echo "d1=1"); % play d1(0)=Exec(echo "d1=0"); % stop d30(1)=\ Exec(amarok --stop);\ Macro(AM_RESET_COVER);\ Exec(echo "d30=1"); d30(0)=Exec(echo "d30=0"); % pause d31(1)=Exec(amarok --pause);Exec(echo "d31=1"); % next d5(1)=\ Exec(amarok --next);\ Macro(TITLE);\ Macro(PLAYBACK); % prev d6(1)=\ Exec(amarok --previous);\ Macro(TITLE);\ Macro(PLAYBACK); % toggle repeat d12(1)=\ Make(var,repeat_val,P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.LoopStatus`; if [ "x$P" = "xNone" ]; then echo 1; else echo 0; fi);\ Exec(qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.Repeat $(repeat_val)); % toggle shuffle d9(1)=\ Make(var,shuffle_val,P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle`; if [ "x$P" = "xtrue" ]; then echo 0; else echo 1; fi);\ Exec(qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle $(shuffle_val)); Repeat=\ % volume contol a1($$)=\ Make(var,change_vol,echo "$(Index)*100/65535"|bc);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:$(change_vol));\ Macro(VOLUME); % seek >> and << a2($$)=\ Make(var,song_len,qdbus org.kde.amarok /Player GetMetadata|grep mtime|sed 's/mtime://'|tr -d ' ');\ Make(var,song_pos,echo "$(Index)*$(song_len)/65535"|bc);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.PositionSet int32:$(song_pos));\ Macro(PLAYBACK); % Feedback PLAYBACK=\ Make(var,song_pos,qdbus org.kde.amarok /Player PositionGet);\ ExecAndSend(string,echo $(song_pos)|awk '{min=int($0/60000);sec=int(($0-min*60000)/1000);if (sec < 10) {sec="0"sec;}; printf("s5=%s:%s",min,sec);}');\ Send(bytes,3);\ Make(var,playback_pos,P=`qdbus org.kde.amarok /Player GetMetadata|grep mtime|sed "s/mtime://"|tr -d " "`; if [ "x$P" = "x" ]; then echo ""; else echo "65535*$(song_pos)/$P"|bc; fi);\ Send(string,a2=$(playback_pos));\ Send(bytes,3); % get volume: 0 - 65535 VOLUME=\ Make(var,vol_value,echo "65535*"`qdbus org.kde.amarok /Player VolumeGet`"/100"|bc);\ Send(string,a1=$(vol_value));\ Send(bytes,3); % Set Track, Album, Artist and song length (mm:ss) TITLE=\ ExecAndSend(string,echo "s1=`qdbus org.kde.amarok /Player GetMetadata|grep artist:|sed 's/artist://'`");\ Send(bytes,3);\ ExecAndSend(string,echo "s2=`qdbus org.kde.amarok /Player GetMetadata|grep title:|sed 's/title://'`");\ Send(bytes,3);\ ExecAndSend(string,echo "s3=`qdbus org.kde.amarok /Player GetMetadata|grep album:|sed 's/album://'`");\ Send(bytes,3);\ ExecAndSend(string,qdbus org.kde.amarok /Player GetMetadata|grep mtime|sed 's/mtime://'|tr -d ' '|awk '{min=int($0/60000);sec=int(($0-min*60000)/1000);if (sec < 10) {sec="0"sec;}; printf("s6=%s:%s",min,sec);}');\ Send(bytes,3);\ Macro(AM_COVER); d5(0)=Macro(TITLE); d6(0)=Macro(TITLE); % Init i(1)=Macro(TITLE); % Password p(PASSWORD)" p($$)=Send(string,p=ok);Send(bytes,3); % Heartbeat DISC=\ Macro(STOP_TIMERS);\ Make(disconnect); h(0)=Timer(DISC,reset); % no needs to send "h=1\03" replay directly because this will be done % automatically - that controlled by $(IViewer) variable % If $(IViewer) variable is not set it needs to use the following command: %h(0)=Send(bytes,104,61,49,3);Timer(DISC,reset); STOP_TIMERS=\ Timer(PLAYBACK,cancel);\ Timer(VOLUME,cancel);\ Timer(TITLE,cancel); % run these timers a bit postponed START_TIMERS=\ Timer(DISC,10,1);\ Timer(PLAYBACK,3,0);\ Timer(VOLUME,10,0);\ Timer(TITLE,5,0); % Event timers (Connect)=\ Exec(A=`pgrep amarok`; if [ "x$A" = "x" ]; then amarok 2> /dev/null; fi);\ Timer(START_TIMERS,10,1); (Disconnect)=\ Timer(DISC,cancel);\ Macro(STOP_TIMERS); AM_COVER=\ Make(var,coverencode,qdbus org.kde.amarok /Player GetMetadata|grep arturl:|sed "s/arturl: //;s/file:\/\///;");\ Make(var,coverdecode, arg="$(coverencode)";i="0";while [ "$i" -lt ${#arg} ]; do c0=${arg:$i:1}; if [ "x$c0" = "x%" ]; then c1=${arg:$((i+1)):1}; c2=${arg:$((i+2)):1}; printf "\x$c1$c2"; i=$((i+3)); else echo -n "$c0"; i=$((i+1)); fi done);\ Make(var,coverconverted, F=`basename "$(coverdecode)"`;if [ "x$F" = "x" ]; then echo img_coverart-300.png;else convert "$(coverdecode)" -resize 300 -depth 8 $(TmpDir)/generated_cover;echo generated_cover; fi);\ Send(string,s4=$(coverconverted));\ Send(bytes,3); AM_RESET_COVER=\ Send(string,s4=img_coverart-300.png);\ Send(bytes,3); [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/iViewer/rhythmbox.cfg������������������������������������������������������0000644�0002322�0002322�00000007022�12061426047�021666� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Rhythmbox management. (Server-mode Command Fusion iViewer) % prerequisites: Iviewer client installed on Ipod touch/Iphone 2.x and Iviewer free winamp GUI % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Rhythmbox GuiAppBinary=rhythmbox GuiAppRun= A=`ps -ef|grep rhythmbox|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=rhythmbox.png GuiAppType=Application GuiAppProtocols=iViewer GuiAppDesc=Rhythmbox - The music management application for GNOME [Protocol]=iViewer %a1 = volume %a2 = needs a constent update to. its the seek bar %s1 = artist %s2 = track %s5 = current playback in min:sec %s6 = song length min:sec. % play d1(1)=Exec(rhythmbox-client --no-start --play-pause); % stop d30(1)=Exec(rhythmbox-client --no-start --play-pause) % pause d31(1)=Exec(rhythmbox-client --no-start --play-pause) % next d5(1)=Exec(rhythmbox-client --no-start --next);\ Macro(TITLE); % prev d6(1)=Exec(rhythmbox-client --no-start --previous);\ Macro(TITLE); % toggle repeat d12(1)=Exec(echo "Toggle repeat: Oops") % toggle shuffle d9(1)=Exec(echo "Toggle shuffle: Oops") % volume contol a1($$)=Make(var,change_vol,echo "$(Index)*100/65535"|bc);\ Exec(rhythmbox-client --no-start --set-volume .$(change_vol));\ Macro(VOLUME); % seek >> and << a2($$)=\ Make(var,seek_command,if [ $(Index) \> 32750 ]; then echo "+10"; else echo "-10"; fi);\ Macro(SEEK);\ Macro(PLAYBACK); SEEK=\ Exec(python -c "import dbus;import sys;import os;session_bus = dbus.SessionBus();pp = session_bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player');player = dbus.Interface(pp, 'org.gnome.Rhythmbox.Player');ts=player.getElapsed()$(seek_command);player.setElapsed(ts)") % Feedback PLAYBACK=\ Send(string,s5=);\ ExecAndSend(string,rhythmbox-client --no-start --print-playing-format %te);\ Send(bytes,3);\ Send(string,a2=0);\ Send(bytes,3); % get volume: 0 - 65535 VOLUME=\ Make(var,rh_vol,LANG=C;rhythmbox-client --no-start --print-volume|cut -f 4 -d " "|cut -f1 -d '.'|sed 's/,/./g');\ Make(var,rh_vol,if [ "x$(rh_vol)" = "x" ]; then echo 1; else echo $(rh_vol); fi);\ Make(var,vol_value,echo "65535*$(rh_vol)"|bc|cut -f 1 -d '.');\ Send(string,a1=$(vol_value));Send(bytes,3); % Artist name ARTIST=\ ExecAndSend(string,rhythmbox-client --no-start --print-playing-format %ta); % Track TRACK=\ ExecAndSend(string,rhythmbox-client --no-start --print-playing-format "%at - %tt"); % Song length mm:ss SONG_LEN=\ ExecAndSend(string,rhythmbox-client --no-start --print-playing-format %td); % % The following is a common part. In general, it should not be changed. % TITLE=\ Send(string,s1=);Macro(ARTIST);Send(bytes,3);\ Send(string,s2=);Macro(TRACK);Send(bytes,3);\ Send(string,s6=);Macro(SONG_LEN);Send(bytes,3); d5(0)=Macro(TITLE); d6(0)=Macro(TITLE); % Init i(1)=Macro(TITLE); % Password p(PASSWORD)" p($$)=Send(string,p=ok);Send(bytes,3); % Heartbeat DISC=\ Macro(STOP_TIMERS);\ Make(disconnect); h(0)=Timer(DISC,reset); % no needs to send "h=1\03" replay directly because this will be done % automatically - that controlled by $(IViewer) variable % If $(IViewer) variable is not set it needs to use the following command: % h(0)=Send(bytes,104,61,49,3);Timer(DISC,reset); STOP_TIMERS=\ Timer(PLAYBACK,cancel);\ Timer(VOLUME,cancel);\ Timer(TITLE,cancel); % Event timers (Init)=\ Make(var,IViewer,by_value,true); (Connect)=\ Timer(DISC,10,1);\ Timer(PLAYBACK,3,0);\ Timer(VOLUME,10,0);\ Timer(TITLE,5,0); (Disconnect)=\ Macro(STOP_TIMERS); [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/iViewer/xine.cfg�����������������������������������������������������������0000644�0002322�0002322�00000006214�12061426047�020607� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Xine management. (Server-mode Command Fusion iViewer) % prerequisites: Iviewer client installed on Ipod touch/Iphone 2.x and Iviewer free winamp GUI % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Xine GuiAppBinary=true GuiAppRun= P=`ps -ef|grep xine|grep -v grep|grep -v anyremote|grep -v edit|grep -v xinetd`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=xine.png GuiAppType=Application GuiAppProtocols=iViewer GuiAppDesc=Xine is a free multimedia player. It plays back CDs, DVDs, and VCDs. [Protocol]=iViewer %a1 = volume %a2 = needs a constent update to. its the seek bar %s1 = artist %s2 = track %s5 = current playback in min:sec %s6 = song length min:sec. % play d1(1)=Exec(xine-remote -c play); % stop d30(1)=Exec(xine-remote -c stop); % pause d31(1)=Exec(xine-remote -c pause); % next d5(1)=Exec(xine-remote -c "seek +10");\ Macro(TITLE); % prev d6(1)=Exec(xine-remote -c "seek -10");\ Macro(TITLE); % toggle repeat d12(1)=Exec(echo "Toggle repeat") % toggle shuffle d9(1)=Exec(echo "Toggle shuffle") % volume contol a1($$)=Make(var,default_mixer_value,by_value,$(Index));\ Macro(DEFAULT_VOLUME_SET);\ Macro(VOLUME); % seek >> and << a2($$)=Make(var,seek,echo "$(Index)*100/65535"|bc);\ Exec(echo "got $(Index)");\ Exec(echo "set position to $(seek)%");\ Macro(PLAYBACK); % Feedback PLAYBACK=\ Send(string,s5=);ExecAndSend(string,echo "01:00");Send(bytes,3);\ Make(var,playback_persent,echo "65535*"`echo 50`"/100"|bc);\ Send(string,a2=$(playback_persent));Send(bytes,3); % get volume: 0 - 65535 VOLUME=\ Macro(DEFAULT_VOLUME_GET);\ Send(string,a1=$(default_mixer_value));Send(bytes,3); % Artist name ARTIST=\ ExecAndSend(string,echo "Artist is ..."); % Track TRACK=\ ExecAndSend(string,echo "Track is ..."); % Song length mm:ss SONG_LEN=\ ExecAndSend(string,echo "00:00"); % % The following is a common part. In general, it should not be changed. % TITLE=\ Send(string,s1=);Macro(ARTIST);Send(bytes,3);\ Send(string,s2=);Macro(TRACK);Send(bytes,3);\ Send(string,s6=);Macro(SONG_LEN);Send(bytes,3); d5(0)=Macro(TITLE); d6(0)=Macro(TITLE); % Init i(1)=Macro(TITLE); % Password p(PASSWORD)" p($$)=Send(string,p=ok);Send(bytes,3); % Heartbeat DISC=\ Macro(STOP_TIMERS);\ Make(disconnect); h(0)=Timer(DISC,reset); % no needs to send "h=1\03" replay directly because this will be done % automatically - that controlled by $(IViewer) variable % If $(IViewer) variable is not set it needs to use the following command: % h(0)=Send(bytes,104,61,49,3);Timer(DISC,reset); STOP_TIMERS=\ Timer(PLAYBACK,cancel);\ Timer(VOLUME,cancel);\ Timer(TITLE,cancel); (Init)=\ Include($(CfgDir)/Utils/aliases-iviewer.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,IViewer,by_value,true);\ Exec(if [ -f $HOME/.xine/passwd ]; then true; else echo "ALL:ALLOW" > $HOME/.xine/passwd; fi); % Event timers (Connect)=\ Exec(P=`ps -ef|grep xine|grep -v grep|grep -v anyremote|grep -v edit|grep -v xinetd`; if [ "x$P" = "x" ]; then xine -n; fi); Timer(DISC,10,1);\ Timer(PLAYBACK,3,0);\ Timer(VOLUME,10,0);\ Timer(TITLE,5,0); (Disconnect)=\ Macro(STOP_TIMERS); [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/���������������������������������������������������������������������0000755�0002322�0002322�00000000000�12100017560�016607� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/common/��������������������������������������������������������������0000755�0002322�0002322�00000000000�12130533122�020077� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/common/cover-computer.png��������������������������������������������0000644�0002322�0002322�00000025722�12130533122�023567� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���bKGD������tIME  ;(&>�� �IDATx}y$Gy/wϼ{͡4!Fhdd[cvL Xbvhwnk{A>*dvY@>5o#3u{o!ETTueY}}_~e6* «*YOG}4'Iүx3!d1 8��!D= ^=+xg*7zf|3 ! lO[H"HdK^�^|x ֦;6z>6!?�B!҆6.tnl^(JKz\Dt�<G�aJ`S9�kAГ?�5]A5JAkDžR'oL1b^]v_/R@c3g/oL+X>�Pk/n0ŚEhAgqWJ *IүlL+Wm?�OCl4 5b;-T{Š!&JD_$EHT訝f3jze�yEQCSo-+72oFR!(J*h15|K_fgg�R{!x(ߏ_X$.ϧ %؉XLZ/kIRmøNOA:wO$B\&(Wq5zJ,렕{D ~۶ fg?mW_|{[L6mM]F*叠v�8x f3ަYS-c$$j#9x[4,+`pBb+$h.V�Gn&bxzIIj�!Pm/AH;fIi˫xꩳ>T&E{|iՊ|!>dd {RT@b@Q(%wR _/�b�ՊS' AUU R �*@QpEYػI$)*nYV+&0nϜR AIXz�JiHE�fIm� !Xz;Y I6hU~Ict n=A$; #Z5AH�pŘ}lBp>^9^rUV8/YxR^msHpH @?&B/F`�"d�7EyZm6J$! 0R()L0ހeY�Zk75 pWxcl,/]GZ]x+NOA, T+ԉXZX¶00Џ|1ٱt*T�Zl��[/\]mBQBgpDG GH#\;pn3W:FeR.O!I fzEʫe˲8U</̀uI�1@PՊt:< >!y -e[Gk L@Hr0pl|.ȲB*w:k @ͤ_8Jۻ5@eP9jD&#B[kD $jC'6wQ댙\jCD%^w%D!D1>9j2J:lۖc`�QĹ8BAD=*y .."yR1#=FA,EX�4 �l& BQ n- PUPAȋ�61|o'l@& vzI:{mQf AJ9e#~Ĺ3 P+@UUp!I[ds&BO@!c|J:e Њ#}BC= KH2>3os@ ACV,IK^"FFc RI,˞$l- J`Кf:Y& 2"S7A׉xo5HujVi5T j$q]; �8bKR9To` NhUi`'E"9v'd$i5JVa} !$@,n&\&][BDbJǘ$ w.^\wzdT4,/DJ:~-ptݙ$A S p.z+_ w&)]2'aXX^^Ҫ7 iOtJ8,KdPU ՊZC:F6A:r?lQe l% O T�a h BЯ#ÛdKaA VWk!Ͼ9op;ժJQ.W?F!gPr$]W.s7lp-6 Ijo}:I{譺L�4Tw>`>IR1<FFUg, 84fPBɓݪ�?@4̀, P*uhGN-{yu2Zss4;= *!lp%V T*C_FiJ4-QI�Ei5#eY@|K3B{ߺ'9n017U{5 DT \"%m)GPAi�*U.(A:΋N&O`qq%|Xq@lފf Ȋ E#QA[K_s5!ZDt6q):U {޺5It\]7#}w3IJ(h^)hU #G>WGz}T@!a  ^k{-P<awvx-><Spðܰ,Q/8LbWp !E"Wwi&+𢂄T0- 1p'LW‹ BGtKN+ tJ<eQ+՚G^nuw? uW.A ڤg$ T !w:EȲ,K`{_zZ7�i+,Z|e$ LOTDI`JE*8ߖ6ߜ,3Q3�= |%�PJ �hHOЭp0{O@tOO'0_ �JTjNZuz˛5nb>͕s/= 2Ms쀮Hm}E 2@-|IAϮ`Y ss0 3넰<Q)uԧcG* r$@O�E@,@JZ"1-jG)4ᅛfS|ɋ;f$ [^@* ߴ%$ uI oqӾ`]q\am|@\C9%~Ӌ7/>EA|XXD%pA) EB�5nG΅Tɕ`l}-e+m\%ARB#C(%^\�[C'̋D:Q/GQa Q73 ߀cy8v<ފ//!6{pg IiD0̋>x˾ >ΐ KӴRe1pG],&g"ttV ZV-|T|,6¬%zX}.4Jj[}Y:ea/&b?Q JUd?*1e$@�Rs h Iut@uup8]ӚV ke:(3@=�IA)c  X=W5;0Glaת}&5,P.lohmɗɲZ �v@(,kk<H�B  $ io_ _[rƸ H A1ͪn41Qp$X5(Th+H;�lдkmhOo[2h6Whxw \K™l+++&1R(ubAᄃE%+!-քa:n|~=dO U%?�or٬ۏ7c \uWID#$[/z]ogMm&ԛJ.a\a*uU$I"u樢 jr\cV'NO1н-V := o: ($%sVO@ D `poaouS>l-vil@z"; sЎp;Dy~|d-ði 5{ ^@m40 Nz̝ iO=jͽ~X!]A,Bx͕w]})`L dj:=Zvz]mfLp/=-lmC{n�+x8PLrp.leqX`Zuuz|* ~X â`� %e%�j> j,4Y] ق:zE' 䎚u8+#;P �ZА?gy'q;a72S0(ą, x̍$�`w:XdШgV Dwg]wS7B(][(P�w!mxuosyΧ(QAċ  @)-pGĜ (tKaNۖJQ0&Ш[d3J%(Ȯ$�`h<n?k䈩7~7ءj2׶"YA 4k!h/onPo|-r;@3mR�'@ZU\p:g#Ҳp*eK�-"ز*/6븸%@=XO>'akpgHz1mpB+IEجAߞ:i&i֕ 22-e'Mǵ$SH7>Of�j̈́J|{hdDP@q IKN8g.NpIݡz;h0蘿8l6RiN sB-RkcFϻo!4ߍnZ.l|ƽv&q `f &"kΝwʵ;<7 ӆ6: U7]�ph]ꖸI8MӠ()0nAQ : !d8~^.Ӄ;[A!(!og>R+9}F])Esf NiOg]a)^'#c��h p [Eߴo/fvċ?9UMcvT19=9U;d=*=,`б ,vD0eYh6`X'yVatCWq}!fs^xg&:b�XU3@ۿƦ#Y>lg1hk��V]ZZ(088s%o_+J Ӊ_+7ցҒ 1,0MS� >fv̀Ib"thfoL!uooǐNN/W?vOla>]f�x߂#G(|dqRcO\ s(#L: J4 ?Ņ ݄_i溠 ˲>)I3BSO^K ǣ.dz*9zܮ[:oexc%Z>҆bzyDGtoZq_xt˗/o}7࿷-Еsc=B/ !x1RK(6o/!{"H䜿'\aG?!! !+voT'^ÇGy$.6�z]#<B8%I"aHZMi]ӆa H[6MSe9 <KYB(BTuoD022.8㰘8s:L-�aFePB`Y|_?<cдU+3ֲ2!p.RB,BN)5($IMI Y,4UUmʲl)RB\٬ ��2{{ʹ|~ۉ 1`mΦ{c {U8,6>u̓R;(sdHRضmrLD\Fلi8҉>0{yn>ݽzྡ?L{0�LLMO)3>f:c6mНshC&%T6#P P*0 l߾###`\.c`; yk:~w?\pnLQ 8Wʹ?4ᡫ�UUa1 suS JiEe2#c혙z}hjjz@+W|ʕ+?}N6hq.( l &~4|PEFN)d׮axxF Cͨ( |ЛM}ʗ%L򏏏cppqhrlj5.P(󺮟4D8tg=sU�&lUoz%�-=zQ΂i%8Wt�U i:nSR�]p7_j|FPTa&E__566azzZm0t]jh4#G2U!%]_,E4OHO}Sga@Fx'=Gߥ+sL6sk6 bzz$Qi0L “k8�nQs'?hy&!(qNVQTz ΝV@)ʼn�PTwMebIydZFfFZh4L]U�&sB?~$!ddz}9�grػgѨ7PШ5 9x?L3I0=yA vl.\.3/_˗8s,7l6�}}{yYG�T*ey)ͦ3 2 TU7躎ZMӸiuM�si|H^^�Ʉ(|߿d]�03CC0M{y_ۇApٌPo@7:sАp}g?H88L�PIFFU*\l/3`H8s4__'zܽL�F::4gϞ񁁁|~7tJQTdX&Iy%!͆h@4T*cuuմ,K>{�-=sP<rZQ�ͷP3vbz4E{p fSa0 a4 Xת-!w7(ҩ4EJ!N!JyB1ư/ڵ9È?O=mTw~拈!|'7MN ]LNBkÊ T,3|\[uJ+++UB9/?~j-ӿ^l/u燳쌋|fvτ)(Q,B[q˺ !l6QY-c~~W\AiWV, '^:f!ܳ?|(jѯ.1s, )I[�s\cpp0G\B\.cqqB !?LCAB0iZx~cBJ}93L6kG V$GgjE,K6q4MY7(Q*YoF:Î|Rd*Ο;7vY9y]x4|MJk|FBȃ�'d122~ zAeY~رQ\::GCCCݼ#r FGf3!b}BdE`Պ+W뎍g>wwO:a5 =ѻaA_^{,˿A6<<LRs_~ٜ9<v }o'$ѣGS$ 3 z]u]ieYeY \fB99½+w(3gR(F{%"g�>͠5�� hIDATȐm޺>ɱ 0h4Q*B6g0VWKgͿdYVEI1d8Ԑ$IRS$K$S$KQCeKZR{^hcTcB;wt+++8}trG>|>&U!'7cyv3b e �OQJ}+_9 |G)ݻSdnn_|yNU՛>ր=�@=.sn+ |[sWǎ[8vo2vܹzT(- fC9_ǁE(L_Tx?^`97  !2DGl-I\@br1s'pi�-<9�z\?$Isw8s̹zhZ��B#xG76:"}B-Dk`kw!|c L=�> ~~ _j55k ń5B~%tkn ՊtҠ/.r@> WgAQwSD2@->c{t=nu�=PhSӓDT\_ʂQtлg/hz݃ტ?ؽg'vN݇wسg޳g^DqW #|sW忙E knzW P �wz�\WK ػow(<Ա}Xkm9;Ϟ=hO#ɟɌ? !~u׮]aR.1??o !~ϭ[6^ca~8V4ssW3mJŃVAoꘚ8^|9$%]Lk.{sLNNRJN>dǏ{q3>!fv͠��B 09=R17KK+Yo_˿,7رcҥK`tZz;ޱo><00,we2>>>ٶmd20MΝ3�qL%Ir�p!@�s_%K%cazΝ9q]8~OSSSLLL|cbbbrhhheY*Pvpp\$Au\rXYYˌO|)PB{\#`1ŕWa|!�PiȲS4:&G1c/\oݻ}b P(W%YR,!1~~tR]1}W$/ͷCX"M^PZ^��GЌ`ey}}E{pE4MLLL}}}e$4M,..^ZB[Z/կ^ma- ۷" �9^XY.ajci<1?5%LLA/!ɓ'111a6M16/jg/GM Hg� nfrxZO ]}!`h4# 0fOnԱm0vމsg/`vvVT*Z|?яfa%xak~?|Ѹ_\׮ّ]8簘qdT_Tk}aB5,,Cips\x ��C^QRF- 0M3OҥKgểE=5V=HQ#ճժxފfߧ=?ץJ+eo~ƙP,t2'Gqۼ.]tW+;B ! r R멓:%C7g6a `hh֝ke24M c8{,|XJ hY/�w}ZVS[vPjێJt*v*#! **f=s$޷oSNe< {" �Gi^+vX@`|b;ʫ-k*'GqķP,~:{JU04SSx?�@ RȎOw *t][O:2@�fIسgusn /\s?AO7^{13ٗ{Ä3ѱQadQb0Y`r F Oc `M{p�gt*T*5'HMo>/1u媽;lv Z z6`y%B宥T011so۾~;|�r#L*כ:LB6A6Y1ɜse ~/�V ѲF_w�ab@{pT8[wFT $hKXOU]Y'CkZ c㣸8} $I�~s�}{ x�{ skQ+6IcŒl4a1w8} �tx'_X^p71f#UK)mllD N& %ź؎/C6�S #��(g��;o~7~D,xkeD^ִ0$%yR`Db+3kmI@a p.puZ0CyC,!yޓ_{ O~vYv !=e !\a�ɻq *lp�(Q[s,B(s5.O4Ӵ B6L$I!dŲ$WUx^ BrO����IENDB`����������������������������������������������anyremote-6.7.1/cfg-data/Icons/common/cover-files.png�����������������������������������������������0000644�0002322�0002322�00000012646�12130533122�023034� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���bKGD������tIME  _��HIDATx]ݯ$UULνwd^[q ?O�$[p b$, E0&,B,EHXbP,;_QUꞙwO:9uT5УG=zѣG=zѣG=z-ꫯ~qpx?[~^{AÂFxܧz5Wlʟ�__>>>^>9p <_b@*\.͛Ϣ̋�8y C��c@D鲼4clΪOS{XV�p85�_Æ>�GGG~:M4lU^ٹdB�/gZ0G�ab\HX)5URQeǃ�888+Wp]�c[<D#QC$k}6ePE*ʎ' x \v wl6i�߶mF`E� X#DmL=41C\YY�8==˗qttdzXs)%E% ˎΝ;x'y缨a�8B`ZZT%x.⾪\Ev& NOOAD_j F?�)z 7N-fby~K=O߸qc{(K)1!!8vUU1,Kp=<l nR5B;l\o!PNsxnoa"7<NqUϣgRHD5hkv V⹲&+T2.8�7oO_E3_$Hjd9$''' ʉkk6)T޻wD4 aW^y⑛]]ʟ�x'Iy7U%;BHD\EVgqd/^FrJ35nʘE�~ܸqV@%9h4|m:P�*<0p% C, qЪcʮ7lut�'e!l*q gBI mdC\~GGG\UĴI坜FE _=b 2hUeT^پSNN�/_x<`0`0X+W$뺥/)cQ,8p# C�8=FըBq$I00N@ݲB[F0ft[&P{nz("xHc+cT/ƛl\3B(q{MPo6LPul [n\W<8ڹBO� M<p.ǩԃ"`W\mW&Jy`0uuo}; %�<l l@7u`mC[4*`#$_z[nv~QZuʮ5T]@ gy꼔=CS)>q('7`'WI}KJXu@�8�;?D42ԍsα\.1\.7^F.&(b[ P.i2[Eſ-a#QhB8)#1ʳʷ;PQf0;�e1Dž2*¯+c=aO死kߟX6as  y1JE{Yd ާU>3[?y/m*ª�<]*`p?o}F $ y�j *"h?!|r - ]!᲻j{ �\s�F}a"csLR8]>?<,S >H"w?}#u!mmd�ιTK$w5h1Q6=:sbccwlmd7|s/H{A I AA|)%8ѵwwj{_;YuvyWL>E3@= [ϓ$"'IRy p8\jc1sk{w8Nqh F^t_=æe#eЯO}�0pު{D ʦg*V~[?�RHDM#0+�h� =�rz*Ԗ�(B-ւ@T,MƩ-X�F \6X�)%'J3L:t2ʍx Wu$ $R\B/%�clF]p81E;@y\%%:AzlI@4Lyke//1�~%%z3VI0@!�� Tl15 r 0{12Wi X @{$@ LDaEu㑯Gq^l! q s{lPTZ:|p& X! Z*lڽfj`2׍`g4aF)� cQnm/`eJ k}d)=&z_�KCHo~M@$:&@* T </M'g.Yi< 0_շ[lkTs|g 5.|/Jz'Pk\Ϊ�A ؏Ff\` o8`!QRfxJU�#J ( G_H_U*70@-pj$>n@^b�!DhFY* DI%| (*6o2$ &�ƘVȟ9˼h0$v:،Z*5CPsbӲq��u Dvn&�"*P@  BXvr) `�^ њ#H-b�^0#t4A8&b.6=|6`m%�Ċ <dm,�11AwiH2-jK�܏ \9bc h{2f�LgmY2PVT8(=#cah�l`B .( y7]_ujsB \* [Q tFPZp$K@M�f|�{{޶.BBA*&@-wbj{xpzEnrsDVR�obn @/ 4Ӵ0@#JsBq60LA}�d�9W+`˯5"[ d4!HІ@\A\�z d�u窻gNQN )%VƂFL5 @nhmOP'CB? ,�K=)~F [?(%< gy!! 8D2%"aDH0~�L0BByUOdX)L+3Q 1Ik>�`�QIO}*@}<"T $�dWD�!HIgMa&(X<s3 _,1^n|aer G,#y@:& !e�k Fk�:XR a WHl̆P+HIX:�F "Cy D;BCa?H((� c�0?FtCzw0(2`~�� )#�}qX z}? $ N )SYyE8̔�y/_�Au] V)t:�( JD}^op ONF`[  eT;�V"ңN�b%Z�DZ^6>:XCU%ґ4+[31!0ԌEV2H/wV%+(�q6!dLX3�cL~�n<v5΋̠ă<c(SnN ̔8b0@xE<ѓ|:J͛_O<}˛<+F'ނԋoYH�>e~<Z$|O(. ;2ȹO6C |Ef8xǁ ]7P�1)%"#w�EqALO�[_N� m@f�a\MԲl˫؜m�h�#Or㣗"ܻwߠg M8�䜁@+ )% �@: �BJ;9c:"2%�u1B% 2,eA%8G ZլoqFdwl2Ns2?yٌ<pg0Zu\I�s1q&@=?0c <==s=1_70&(mlQKbls�8Bb8@8뺚Cml? 9ce mBXMQSD=�-Ҙ#0|zQ07j3?9d2IA d>#%H~GJ|s".'9#h!�=!%, TJ=t4/t-<xqH!NTFg S D4tR6:u`sR� ~�ze bܾt{4W2\- û.O⿖סcWz4AHt? u|ogؤf^)0�Cb3GO&2*r}.8 Wս:<!sIqyrrG??7>(V7(IV17Ut\0@ۯ?y?dg(G,酤O$@kt}$�^ÜK v clru} 殤;kd${Ϳ|@-,\L#][` 3Q.bMyUo4uiu,Jʈh#2 D2b WiUݡ"<V1EfuLQGX4My b*6LGbS SFb mtUu*�j_?m$CIQMҴr5Nxzm]VWuMm"|cQl(*ٗ1BUuQWE:F1G'Pŷ9[F71͆¾N7H<ۭJ*T1CdbՂ.ۈs[no2M6;GW/,*I=W֘UW˘LM4 f)2cyM⾊]TʌEYRh)pV `2BYd&6炰8o k<CE=zѣG=zѣG=zѣ%n5����IENDB`������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/common/cover-presentation.png����������������������������������������0000644�0002322�0002322�00000020450�12130533122�024435� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���bKGD������tIME   ӂw&�� �IDATx{W}?cs}ǣeɣ%a[vl%X vS˦(R:R,TnnIيaʅlaI/==4fo?ѷhTW~wNU\U\U\U\U\U\U\UKD&>J>(Dž�M�];RVF<.s>|3ڥ] o}+BGF� _i==Xi$355(,˪}u{so9uY~5 277OO_ �Rb1x4,_<)[e~Cs �&(iwܹJPU;] i�PC6%ͮ{13 F4%�Tt~@.[�A߈xKh5 "pc xQ$wC4S{1@J_^� LF>B +++� T'FP( ?nSM4#tg@3t \WZ4>�xtz%,yVzM0 1H$.T=X,�b\.WDwޝo w0Oе!A;盉 ey֗,+CnS:F Bϕ{VEW% ~J |/1 VĿFv71 PBWֻt :�~:|M;~r9^Z2t>s\.W)'< ~\AzB`FKXԯ[-P(4D׆vVD$Eb֪844D___Gf |œ655E*jΛG6e~~1xtnt2h':P(Tqqb ԎR)lҴNn+w||~p; X/}#˿\XγS35\ Vo[ W[K�QWh^ͯZ z0 cwLt:^idd2�KL&,]ˎﶣϟ?�\(JjoT*phd@<,Q?@Bp8 MVA&]R)D4nM՝&T_KzlX�PbXaU+(#HL&*R!:;Y^7yUl)wjJAn?h0;W ϵ}^7{Exz㞏d2ЯDbӝ>NRʪRwvUG~ Cn`vv4*~NzK~�'X7\@P^+kx#Oyn�U$U湇xxu~�?\eMߨ2L͕AfĮ >MӪ�~&|EQ*� 4ÛcCs;VA{!#8TN= rR\AъyC�~L@?.Vݸy{﷢\5#Q7`Y/nuiw<@:~f;<O(}=Jn!�)BQ 5quҎo5ID4=[bS>^pYBJ<�4|%!c !�~{G0C_+hjm{�kˣxf~ngz|g *Zt= vN~*.'A~gU?S7ѳi6]ߎpv[?@ptnl]@8w\`o[6Ū*?ui!q;9A7MeFUg:022ґ9ow|>_1&''ټysükuďട|mد ЩBEQ(Z<@%нߨnT꺀z~�D'O 4qw26'Z_Jog (A1LtN#}EnOw+{5g'WWjD&7KN *,�u8 !!c ! B` ,<ɓ\<~2ss͑t ߍH"A(|D*Erbѝ;۱]4\M&0_'zx�=߽>m[\8tGY<v +FLb&C:o=Dne=i= 4ZAe<<=5>* !FIq b!MCSªJX"W,YfYf[Ya%gϒ>{֩ 7-{xDE"B44y\{d2˜z)^}KKU]3<IvLNrm*RJiYse\)[\yNɗJ %ܡC_d?m;^AгBo !P/FZ$ʺziܿ-9_2=DE !19;vpu }2TU~lmߵ ˲83?33R6=p}|r7趩 q=WV_%?~ ν{AD\W1I @Juhx#8x o?iYL _;`_\F\NWO<?|^��shڰZ=<׈9kd(S##,g<w$`X~E<HrVotz]@z.Ǔ4>8�huƻߍN_/!}1+Ooolǎڅ H$q -kz֬IFCW/OOO~ӧB={$5mҡs <x:1cǸJw6h !r3f(,//Y:~> .o6߽y{鶸�!:~6}kFVF<YxM~1:<̟?NԍiڇѭZRJ"7D<O~ By!H F xf ?C˝7o\zms9lğ=�NC ^Cޡ&hɾ 5OctŸoE.xåS( @vqq?N)P{A{=O:4byi3H@WS_7% W`<@|ŋďmb6<t5,i]7;L&N{zG}g �T7hUx巿O{/#(P*b]D/LY:(Ҷn`jm5Ե7?xz>QN?>(�wz+޹&i㾢 nPOV @Ț_? 75kÞF} �GxǏoM|˂|^^Zޫݷm>AT}ԞYTۈ~=?D, ?w |d~XD[4 *pV+ 9y&RUAn m ~f:'ͥ%VO`߭Rv� dozE޵EQ;{9~_GJ8㩔8Z2 Λd<{ߗq Q>CCzN?5Øz6Pk)Rі_)ShI{ꢃeM#GHQmi/D߀NE;Vy-](x,KZ:mU(}=kz EAQ$l߻]> 1^bxTU{/jG7굝э}M~OB7Uv!]eSp CjZCO!_{c9$,Y GQ/_ZX}FZ}m9uB74LR-a5pJU4._}�l%peaRY(ئ,+~e<0УFO?"β_&" &X?T9kJܽ?@ �kGS[UU7<)&dյ(Iں Y:^nx87g{�MxUÏb@[7ny؍ QA).Wʵ@aq<IԠ�t3Ǒ秧 X ]V + cXgyzwU/]+BPU\.OeITKJ.XUT]Hll  "}F5o1,S$,<̲LL\r} .ls\ k̠�ֆYU k!3bt5; αt(G VBk~11 (,MYMt7#tn.[^CJ49rR&B !]A|b)%+׭"U@޾¨?:GXSQH$JiM .*6FpΝ \w/D-eu08⋶eV{bA&?+{b&UE "P"k+ >zI&'FG/]bTB#GHmMlۆqx_c!,ѭ >K:[~o{#R--S3XRϯ@U3:N , �A,2 KKKXccp$L0B!< }c ֭N5&h#模ZB2t1\c�]7|3EfJ_HS>9H$d=XY NTƀwf zwN ,�s9P,x{PFGQ'Vv P Viv)Rw_GB*7l&P9]Xѷ_G^z6,=78fD( bW[|5E ލ~Xe+kIzQu)xN  cbCy@V~KOWf!UsZ,"a[w8olY̧ӤJ6ˋx!"$0NšEoH�7?)<Bu\3_^$E%ןơ<�1v| ð$ fh;wڻy/2~(F7@[vM* a<xUljU.7'~9oH B۪EQDFG1|? d7ڽ祬̾F!d)*} )v_7L4(,/: $Q"! E"~Jp3f�+3 gi�Bn'93\:}"l-M(\ɗ_f s#_R \YŸxj.0OA EE% VuHHal P $|KGsRKJQ"H4cKNƛڬ =) fyL$Ÿue2UM## q䖗y'ٲB$vB۾si snci W)),tL%7~{bx&,ЏΏf,pt'rX%A{ 0q3C|>r<Z oYsss躎_RJ`Z׎j4Jqai些nbt6{0!PPIa^Nc2{a0d)U"$D%AI\X--̦)/3'ÀB82߇#4 ^_ħY)# /> aK|.P DRwEaqw]$z:M0ؙJ*Z<Gii }uYgg bLضm$Q[LD"(jӘ[貀a0˧) T!(BCaX9:vʙL=+%`+yDxԓB%cOU*[?h݇�7o{5m}ѭj\.iR 0GHbw3<+gT( QB$eL=caFټMH AvVFudy]Sh4_@)Zh/ʆɣ�خA<B"A)D:sїG&|gW =g�7#u]:+tSﵔBRDT]<BrbWHd4L&2<Pph*54 M#c N.V%":0GX|~X_h8""*,+E#()-eIg̛˜itd04D,L/\!<]ڗ=s-2KYRc-7LWAߴγBdqK:&֮{%19ɋ_17WW9ͲsxDC!"##D1r9l3+;}ur L]PABxZ^i HX4D8T=Th׾cLW\oP:k}tz *ii:&RC&?�X5M^g%Ie  %fY(` 5@*!BjEAue?7EwX/FLOMOoDGxuzhFv$pps_/|�,-%`S?w|5EuY/HܲĒRa!P#PBCU~),19j!wSa|=A}XDZ]߼ zϪUր]Bp]w1rGhY\]* Mc"gd4 Z( !%T.n"Tr̫ĦM2]U.v>ϝgq�Jgye�|g PU0PU]+ iO|ɧOV$@08ɕ`0a &SEMG0{t=XXAhA'4SD=]<Ehb}1y3!ggϧzcm9 g}>i(gσ+OsW0\mK"Kx>D11! PHo\1pZ3 ؿ};y~"DYEᗿ8kI�Qwn{G>(Eww7$ dk˲0 ˲*UJNp8;`>CiHe&);v&KUՊȑ#,..( B+/;6~(рؿ4H< k7n=V+Ԫ=bD:M4%W()! M#G_DB,($wKJyСCdW|Yֻ~-H|VJb'ԼlFt?LGJ4]'(V|R5M,E(B!PjCP7M˲6 E{gLЭu0X&}vS^ ޕ.sC+9S>kXl\;/^_vTWsl}=x˨^9Pf/cz,o7Lʹ=t^\צv>g P\':>Z&@\ qUK󫕯7˥���IDATnI^*;jy}ǮFCl \xAmƵÁo W# `5_IjI Fj Jjk![2ZQx#W"5*^D3'~3&�Uh~CX߶VЦbZUZh#ӋZLPOBoર����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/common/cover-audio.png�����������������������������������������������0000644�0002322�0002322�00000014447�12130533122�023034� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���bKGD������tIME  C=j��IDATxY[y X{csHQZbK[bOHT욊rjSTTj2[lWblj2x<qkdْej")4f7�Ι hfS0~Ur99Y9ЧO>}ӧO>}ӧO>}ӧO>}ӧO>}z >ܦ&JsO};9o_� |egd4MI9dBi=!aRÄ[�{Z黟kQC5.yW(1)Qz0 !@<SW?-R-/.cq4&Lh&bBk1!PgL Ůndd2$i҉ )� /yf=!ZLh@ `(CQEm5z+[Tt&C:!OHfLHc"}g>WZ狣cJ'1P"0$8qTw $IIgH%R$iiXAr}3.<6<nJ(5)۵`I *QhB@Pld!KU8&LHI " j/ZzElgc8N!Eq`G�}s!N*%&`R#&Ao0)`Q bZ4VYJ,+&H'ӤӁ4)"$ Bg\lgc;9l7_}w70L#_}\῁:ߕ|XXQI4jJ%I%Ӥ))"$P\/ԽvGz5�f/^=X1I4*Ad*0p<">&J'kbǙ70tȞ_ҋB awr�hîkI&) PZL'1h'wzn\z ]ZBU:~/�m[| I+ cu¨6IaDi]Hi,k|+սndwzK�ӰiHH80N'*,Jwg 2'=W7RކV$blP5(ј$G E'p~vKv=ӈbE ׊䊝<pmj*9i syEU=)@H8YH8`SvxƵYXX`vn60t>K8KCr�/&oT "Ic3DBUl}_voaf&K.PR(dJxO ^%D0]9nV,JfCOO3˒/dY(/ L 8><,>$<# O[ɋEGAO d z9!N�Zilc>?G.e&:;;C87ba9>$1!_szR�Riח0RBk(͐0}~ 9m>AQpPI;{4 %;<;7 %Oq!\nffL?3-x3�6~MKWgKSfH?=s/Ξgzz&(Z҂C}Xhu`c: jCG_Ym 0BҚCR#nnO^[`OɎ+JPAq0\G%Ft/a ;CIшT @5pO~'60)%7O_ν/Rty([g{R�)۽JO @,]Wv4hr⪖z' 3j =/�cH 0E ئYy= �zXt]ٽ/#|'IT^t7Ѐ=/�_G~ Ћ(սM  q֓KdKCG )\tܴI,R*JO YFԝw]z6~?X.%o{:u6 A7�ˬp23;G{}.zpZtS{=2!d tnvyts=ːowy\@`P^<,x=6D\ \N>DݓX&J|~𸋼AM M>G(uvĞ."9} Isݓ43>П> n4}%[[Tדhmfyj_/c翀 gHDH&RbQ"(Pek|_QT+eY S`.2n̏~yJ|( 8 !FCoI1uѱdRcD!3FlT*e f :DǙy4M ^|]x [gF=S 1Gy&ƆwF=0z`W[D+ÊBtAe'32 DKJL3kUs s{}r]*=oI!&-FFRvM\V¬|QCٙv(;8<Sv FW7Đ!W _gkaw/9zR6%4;oC(!@R9w|WZ֪@ C 6`q]p508) 0Q:)3,TQ`;9|e|m<e<j3c0:N,l%Ï]/p_B1Xs6ypa6./hWOƷ  ex )Ci")P̠Qb?dƐ/j;kGU�cw39x[bl2<GJߴ Sb!$ jP(LP.,*,,,EݼҸ )/^W_)$-7@mUOLe06&RT,S~È'pO6ZFP &w2L:q�p;�.Lu_7<R_՞E' m8[6o&%!dU7FPʣR1';397VKJ1@=!`Ӧ }qbx^\DȈbQL3iXUrA U뭂*'dG}N]@?5$lٖalr%-ь&00[6XZBA �L4!>籬B  iXhP+(|ZWz cֽvyG/]wZ>2tM�=t]HOU(@/6pӍ7p$߆%nx^ۙv < ߷EaD2TC}i֫Vc- Z+3)R0AڔSRޅOx~%2_ㅗss/wZO,]_Eo^ Yyǝ!p*A}Q,\\RSiwP* XcĢFUfWs >Zҩ OQAkPԄJ~ غnۦ{랯ϫ?^#_VV'xdأ@I6~P{ =CtbtǨ I84( K_-p[>HFz}Wɯ6 x \ sCq|&Y~H�kaMB %ee=^y78ZϲnmHՑ�+񗝻FPjL#&ZQ(W.RB T{Ǫ^;HaW /QZ> b r0gBJ~5BF!0Fq"oc1 FDAŽ}ޢ4Jf-B3މ&.ZɯMd,GQ!k?C$4^Q Bb!sZv e=TG^V;˝/`;A?@s;ޘ\+3d83S`˦"&\`Z'P "h A<$W. }/_u%YO}c~UX�~cR cpuLâTbzPP1L4, #!ÀGj4ս*A{͟o~?ep~{v�^|~v Y v3T rcx~3D Ɑm>2\l/d ;ߘ9EWeMPqu|O`a`pF{0U#+jťo٣ aE�87o;�㯿U3?ݑ}3ŧx+'N}lt/ ) e{-T -È2Cq,o=^bq+Y㫇_ÇivRB [ۤs(NW=>aD0Uo5v/z|T-1kNJCS<Է([NW+zO�X{kPKf iN:qEo (>I_yf&|t mH~?;}X pu_۵jA\j,ie𭌤o33xoQ*g󯵐W p{)7K%~K/qײcՌl&!d 5Jdq.B~Og=G _}17]MS" �ܢ Jc;믟)_4,jͻnj~M.D˵3:d|)d0 5s=[1yOeC>W}_'GhHF+"ξ`Y1G#a)2ŅloUʞP)'\lxtFK O@krep8)#x>@Ԧhj=VLI$'J&98h \n>]Nn5x)ϟ\/V/S泷Wq_ȒoV|tsO#o.|DehWlcǬA�d�}G9vQʥb"eCF. fhKaɁ +H L\4vP,_}oW|}gŷ 5-'f7ֵm6w]H;"1iń!EB,!HvEW<XyhGkXЍ4vY/[ 3Ge{!}Y:Ri! FDZ"05}}Ⴭ$U1ܴ_ew.6zs{|w=\G>~[<=$c>|R<J~PfјF%d '-E>?wfaj[#?;Q.6Ro@</ZQ2 4 #pmD �)2OoT#ڶgO9󯲴*WVՉ;9�"_#x5) v츊WLiV pt=o2] _e6%Ӝ;;:ZP^9_/uҚ6Z -40~laa'KHZ.Q88ƱOMŶf~㵅糮ņn-5yD;{$ nq̺V[)ǀ4koWk]ފm8X-Щ� !o=>*v3wK!v Uӂx]ԚVg=c>V̻fx68K4.g!,gT+ v։їvc;Nk]UCj%Rv\ ߮V{tK�sm[vb厝ƇN oLdA$AFD3\ltMF_IϗKú}-=ZXY/4Fo1~JڱBXM @u:5JkR4>.k\*4^o~E3VuC¥@5z+^ߜNA;bp6R�tB,g�YkRN+Jqr@3(;@U+/XV#v}ӧO>}ӧOU7о����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/common/cover-pix.png�������������������������������������������������0000644�0002322�0002322�00000026712�12130533122�022531� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���bKGD������tIME  ;'�� �IDATxyp$}yYw FspP+"Mre7]Zum*]9J rHJ(l Sgzkq6иQQweUY @==7"2{~8!qC8!qC8!Kn?**a5`PJ_җ}73B?"?z|ϸ_.�p87,KKK wt]_K? 8uVv2L) 4}_: �nF(zvx9sۍQTU�H3vSSS@ønn7TR}fC7Ѵ !Hgҝ#&b3n�)%dd2u!`S H$]7 9 4y&iLt�||__xEG)0|L(0@"@13!<l|>bHjqy|:}p:UU!0M; oX%GLS=_ Ν=h~0|!9ş6s=s߅ Y@geo? )%*?ɏSgjxe�a7aRI)Y\Z7^q\4Ȥ3LN;?0 H)"˃##,2Lߑ%|�;Rx$hm!eHx$@3R {9l< SgvK@rEo6|x< ψP]zu~8wsFu� pf�?/\re[eo=c6v.8Li}ʻߏ5Ƀ^ȅ55=!L<nOݻw3U_sKS DAu/x$@>?k@՗H$^Jg;1Cxqv `ץ~r|~5>G.$LQo='*T|޲R>H�}}}peukRn]5|b Rn/zua|?`nnBS*0=4uB~CS$dr Bq?"Q^xJJ7PB~feq=K <++\]|}WI&SF^@)1LiDҹO41L?p <d:Nܚ9H|a_j B�RM? RJ&Nrl# Q `w(Raazdmĸz*/]|4qi.<<<=Q pg`qq/@*ry/^f$ I464W11q4V[[{geeƃ|'K%Μ9S弆aOJ !N<o|7-m4  BXب SWWo~cV!ۃ{�fG+ĉl6۠(J( BF4 @.RV !i'yB%I'f_`mec��UhoDQUi^|"0^R^4퇷nZW;g6_82M%J4�M=/4 KGGc74�v0OIQHV9q$Jss\|~ !i_ʕ+}5zzzZUUR !}@?и߲TU%S[[Cu0UUA `߇vPUH@׳OLHKʽ}붥 �."P8u+++Xa)Mr$)|XR~CQ8888^8 aO !+磹ƦFjkkD"TUE((bcN6;uw)626:Z ;�ti9<]Q2 sss rgk__vmҶ3R~J))cF*M͍L]]555D"|~yw h1Ea7yjjk ۔:V?@l;o}-ns]L#O(رnE)$jiJͷY[]+.z߇vU} _; 9z(P@u.Rs:9s:|[CWnM8uUl t)^cvfa* )1LrǃV&HSrg|W_yF)_Jo{T�N/^D9q$=ikk'&0 2 lL&C6%unE<*iTp$LkkǾАRk{)iRSS`� z- thh٭@=!�%f:;;x臨vDZPbBBg^EZ f+_ ===떒 . �MSPTO~Sb4ʭoB!y}0>>O~3[rL ٭er[[/ ^�>fx=|≧,N2 JJ%IR4in*?tuuxogfD?)va֏m gK~"74PUUE,O[ $ňD"47( ]]]466077ڇ pѰz kچ(*>,>_o0 666cqt];h׮16:�Ξ?Ouu\{LUU4UCrZZZ�Wmev{\7M5V';NlD`yit 74Em]]$P(D]]=‹ܝioo`cc}qP}=$H 5u.VF\.lM2d~aD"N֙Vlc'O>?X?_!>4Y.Tm&:S|&LO$'s8ϟ-MGv윓R284CFGq=_d2;pPqLt 144wFq.�G n\I<i Bw aPi?J2>~gW|+޾6S~MU3ƥKJ*DOq\u!hK.ql6B- Jӻff7W_uY;�0?7G}}5470?=brJ.8oݦiY9#lc�)\m�r9F=B::; Ύ�`vfa�UUz,.-կ~u^L&KzV$﷮Y3(  򆁩a-6M4QDS.Uuqc(dhp'zcGF)̆gbҸcHnB!D `}c`0++mey콡P^SS(L)bb �024Ll#N!p!TSJ �i0QiJIca nU~>02<359Yr4Meo1#Ĥ �EUfu<n=kgΜfqqIr`ֻ@ 5^C+r9ׯOQ5j DjA*M +RH)P@JpM?f)$aKGSjkBE]X#]mf=>7Qv:(_`+vQ\ۦ~"TO*74sfiGtrx<Y?ݻwsjjIo}[m%bWW-s%REQTZ;oBJa1 !E= @`ô"F&1yf痙[Xdxx'|#]&QUPO6c͂TPP5׽(#P(�VD4fX__x<ʾ <k)O&RF[[|Xf.4 Eecc=y;[pm#G{Q4%MB*E~;q D(fŒ”_0Α&sà 8ԶϳI))e/.DAJXF#߿>rhh,!VUNZZ,… nH$^TUVG `&B(F^PTQ6DYVf8p*Jc-o,:N:a=g#G*V Pҙ,CcS45DhmG"Qc}{^K4y7륳ffgEfk* `GuRW_dټ$gBwzE`aY<7۟aaa˳8~ 0id!&B |.750�^ #'ˑsf![U�t҄amĈ.-)MGXC|tx2Cwg+.0O<`p߉+d`#9>W.3ٳ֎od]T<^t9/L .曕OTUִs mBVl@MzB`"x" Ӗ2ϣ* .M  (ETw"wNO&RZD"]zZ ǎ{�e_-~僿Bgn6GL>'͢gut=Ks?䯾=+d'O0x6P5-(iZb8AU9FG31 BB u4X_4B1EɳSvB}CH`ps5eue .PWWIzzjl (ANqu^ufcybk׮hAİ@J4ty׸rMVK)q'4ftSW[C[sM 3VX�3CFF`}}B[`+nmyy__Ʀ&zxx=^<tl:M,cjf)gfX[<[NZ0?>.].ˌB>*RX6fLt:C<,!Z>4wD9NcC='zI=c4=NPb4ZC,r/It1Jt1ʍ 퐅<p=<_H$?gdd:mR.Nri$ |[~?M D$vF,*ťQo\sO Gfu&T°U:@4MǰpO󋇈OkmX: ٓioCJ7?+ PF:Z [`EQTT9F)KqWV >@oO;ÍۃON TWGX];~{=n\5ۏYwDΟ=/^45 !hmnQ*i0Mb8kI7}^/>P0Hu0fIpgO$Lrkx5KٕR24: O;c'p `znO UUw؆nPJ<rʕ+j1pD?5?<w'7J?O .i"K++{`]ϱhzPZZi/sg[XO/^'x7c|r )%SQ<WeA�RJgxĦezO(euk|[fqi3!GG[+}ǜL093͓Iti67!pUoxt=KSqz=cfnXXp*|s{K*@cS###j[q&76d}}opB<#w&v%|NB /FQU4kGIL98 ^<wh^~?>Ξ:FD2|t"8P PR{4Bu#Ӕ^HɟY ϝ>|>[,J$HcdRIjږDxq|-id7bz Y. +oϓ«O'҄xeV`P)Eac}P]ebU�w,.n=,]'(34MVY[^Bf ыf�򺎙ϣS<^>|>[7v_ `\}ã,.�,@J.DJO$b&AQ]RZ[CU0.sniF& :F506bYa3S00 rۃqfy[|'cm#a ;ةǕ; [`mGù0 folXn/a$,NUU�ո z&";d+Up|u`l][Sl~/@Q=H)inC_\|iGO$X+ $f2&*ZfTjW۽d2,333dYTUEQ4Q.WS{޿_JɎR)BU58T2c3L^lr9M>gffEI<g1ap[u#Ǝ+�,@a]S mB3P]:puEFN231ұm Dz躾mS0:9rZU7SadUtqݨ~ Cgfvz{0wݑLZ^(BEJZFe 4 |Gww7555 `ff۷oJ1 'C 嘜ۑ2Ug LVqFdž_ t`@0 Ppp/Rv? /p|#TUU9.zzzqccc2i4ǎYp J,Q/LW9eI~?wJ z/�*!JX/Zos ygzd2mscB~'�lE,a(FeWVWH̤y4N h?B2d}c`,RJGC R jaƷ kKNN8|C/sO�ۘ#9[6b⛦H5jjj5 o:C7ӳshcr.d?4pW[Kb1 wRDL*E^؆.jkk43g67mnnљꩪ#Όrw\h33+;dQnye;W;t�l&z99=x]ѣG$\W }{݄aarrq&~;ǖ\x<N$!6U`xYNx&RC,~p�?i@ ywt攔'%LJ&+ʥa??s^Gr9ZZZ'>ae*ttti PVCQV^ᴱ`YәT>w`3"=0ފxL0~' +KKK|k_C4+LOhV;,h4i<y�[/p,.ꪪ 1,6$a^PUU-1=ubB<ivI3T*E"B�� `IDATpziBd@ @0(3cE@0thJJpTruފarhB,s�fؾo'UUg:+&h2t<Mp\?~DهiGslv̨W; [@VDIi[{(f^[Nm#O[bL*^ΫaVky@2 7m Jć;Bw/(^ =>>Ͷx{5555%/n-3zΝ9n`B:/ݎ\,&q6lX^^fnnD rćڵ^"M2Z%TG fy=l0iȇ tQQ"VnҥKTWW;ol_|x<^R,XOMX2hfPUT: 3J]w(Vҩ}PU EFhapE|I:;;-;:HĹߞ]tB:.kV&._KQ66o�-, P KC`eڼm|㹻uϟwiFFFJ<.ZM1^)�@2U]||0vV<AqRڥd·u_]]%Hom~Wak@ /,uS~{(+p1/\{$fP =UӴmUѨe+Œ4Me`Kjlg�EQz?9˽1g zX<rBNZ7k˴h3+W&wCb+m#vmqGw(NLNÒiaTUeu=nwI;!,}[aV)΁r P"�Y!6wB) WwfI TgGJL&իW9uHQp:SSSlll8̰HŊI}}  ށ{`eJ7pB-Sĵ磡މPC'puhii'9)kWWW YFMnoAg7)�:::Gxu55e /%,//sv13\�vk~( ]GpI.evnRK ] v٣9vkkk~便%ם`@Ya<3?~˗/K/9ePu.!hHZH:ssCCCUNBX]])4 Xӳ^/4oĸ}{bFu{Pݻ%3MnFݻw[:93iD"sJ\.B<wny7Mfhh_WR涀/!:GH'x`48plꦸ+5&wttXd"ۃ\4d�R}^4Mx<N*(o>ki}b1fffr V'OPXZl`3#];-)4<< sBWؤAJ+xd2Y"UY(4TU'Kʺ(BܼisTڥHV)5|vw^*Eqllv[lxbVo f_04t<===455( +kʫVR㫫7i!axMӜRUuxxx*<e}}}?[P(g $pi)ik+8{?] ) GFNj!4Lie4LI6eb|BŘkkkFa>Dѧ]mjimPHUQ^% `}_߶ :|ѣGio~eY~Ŋ)硛#._a(3}eۣiڏ_qnZzzY̼V*M@T)m\%9rЛRɤcnf{t:A)ы _|ܮsU# n޼I,Fr=] �===477;uKW@JScX^"�e---aF? ;all5zZFvp'o[~Y:I:"]d8coNL櫓)z8ann5*X�Lgp] mmm\.'Kg9O]0 B=˯TL|l6'^"rv{:~ W@NJ0*?V*]riXlם>LӼ}(='NbH5 ?355laA9_u9B}}3DH^dCȭf32�8C—)x z="nOLNNvoP z'( ǑV~C8,++VlQ`}:-(ow[[Yuv&!`_w'LIwAx[J?FR;}@Ԧ֞o ,Kiil8z5}ʧiR^n]Z[WLF޾ &~/w'EQ)hu!DLJ9 LJ)ǖnfNzz9ߋ0�hz= >*4PO, yyLL8YA #oխkW }(G{\R氙@;ys{{ t\D"B BJZ!錕%|euSi޺e{IzS ;]r-ﳙ@x?\yЍ2wΗVWWcJ:!c<KхҊ>˻ ؉[E|xo0@%:'މYku Mc"~Dت�#{#eŅ˷2}u؂?q  <FII"Nv.fOse�±.--{]>!x O:Ƙ,/Gɱ7yj=P$q*u<vs[!O\|u}*7ǁQf�0c'Uτ7VjRFNkC)~neC(cNz=S_D$pʢrȔ䟏 R)>Jw 3 `BU @To�"aDJFa\ͥGFFM=uD'/Ac^7lr˧8!qC�iN&F����IENDB`������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/common/cover-weather.png���������������������������������������������0000644�0002322�0002322�00000032155�12130533122�023366� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���bKGD������tIME  �� �IDATxyŕȼkխ}T-! [aL{>gzf1oܶya0=?{f, 66#$V$T۽u8\n[nR7+32"2/9qΉL>C>Gf5kǙ$Lw6~A�0 +sF/$tMX�8KO4�"O4�\Ԣo"3٧3E�NkJ# i�?6hB�^ g^yEձF�u] � h_m(y躮3ݿM�R@ٌJC%Ag3M(p�0闁Ƀ{s&�L Z"AB+53~3K �;.oc2& �DP=?l0Y0}ye'M�~B/m2KY�~ A�F :Ÿ;1NwWa @�r[D] {a0V> wQWʓ'D|\� ?j<tx~<,2d,H6¸{�o y2@ƿCu|x=>(1%]uvHW:@@ļt^>,^8cӌ[\U*_6uZg(@k=mh$,JNhm+k@+X,V4|\ҹ1[>-/q}ָ9+]~W("2܇nz@~jw9\ t}e]ĸ/BŇ[ش~`7�=w]ׂ>hI,,_VcզBƫ�MXAJ#z/0;VVWo(�ȓ˓*h5@Lv]4}?Q~x% u5@lPw^iZj\%[QK/ٹ! A<iw<Od\UVL�;zp_؄rq/lzk1CKoSJ]IX=Rxk {@0"c)}\ݺ4}:$_sdQڽѓH(y03_7v"Mxg ?j[J/3vc Y+ӇQ[NQus$yryc`n@BϞSn@%.F `&W'V=e<uZ|C˾!;kZ O{a .r<~}D}ھ<(WYJ1M`2J%u(y.- ̸m'f,ow\\Pi Ȯobyݺy>h'KϵDM\+1 ~\*A ҃玍=Y0ۮVʰDgsةOxҹOfJ(.os㉛Dv f[k2|* CQ0oW?IE~Oq 1烷ڽ%f�3CDS/k>Y6WQ@5aq<U]b�@sgnv[ߴ=CӸ4VWxgL~ `b A[=2 f*NTv{-K.ꋈ̬:-hnEuNG5Ot7*v /4rr {H_0* \.'ԭ?⶘vJmhb@`} 5081�X40NAZ_f g|s/@ucvBy)^^Ywyc_v%BM^j ߦlD.dnO1T_! ȢcRŒѳ;0#oߪft Ob^bZΤ/iiM|(l GOBaʯ�f`O a[X['Fo)]hT Ũ Zz##TYIO4[,�9{ː`RiOF4)#cm%oN$�m/{:H /7}=A�ӖkPtrttDž`r689X}?qC״A 2PmU_A]|ʽ r\ -kGٓ 1fQ͸[lUO, C}wvӓ^@݀ "ǬVyuӞ<l%i.4 `>NN\?v^Wzp%Zz=�Oc-XF�?*Qo*bj@kA%CrD:SBlT5ͱ6=[{׸W ͠4f� |t X߃jՁy0rXߩ~HPvݺu}׿ra˻ZJ,ꚉ^*< $՛_�A (C�*А8 ta̖_#//웞#+X7wa~x] Y-֟Eg$Q/E}F b앏`ڵSΗE]K:|WGϿ5PFk0g+ z&>C _$F5^�:臃H꛱C;\9I?)y'Ag�~R1~^j, "`PD_T2gԡA-Ex/TF^}|$'ψŷc7m<rݝ .-81sytҟK.seXC?{F \K;:l@]/Ps_h=л *"ٌ[wPVE%D /\,T%WGqMk/?m,E ~jߴa8tƒBcn!\vK;,M/di j"kOMY7CD C�j�dn d_Ga@b֕�S ВD_}\9[U*>t.G.YmU pV(SD80?2S#O@)DEq-(t%C8 gScJ_} +4l(yrtxM W+/!>ϙ;Qºg_xH ,D[GhoShW/9|iT!R/fҠ$ÌF=(m}Q�oRp#@{{+B{AiKPxM9(8C>=PؾXD 0vHjA@0dyAFϩ}Es=-#=J1 ȠdѻD'gTl��AOF_o<!H/?myvNG'1@ 8 \< b[1C@dJhمbճ맔19<gt�p'rP r *tp.m}"HyȽ7b}L >T7�8Em40"B8t_iɗx`)}1`e杉Z:%*~Л |F9`>^Zp*9{L:z׾ĿU@(=<pbև5ǃQb'# Yt|q_g@�k֬'S |!8cu<̙KgGD۶1%Ͳw^n̡C{i:s�$š@\T,I BVް*ퟯ1 *ST Cm`Q!66YwߞLx}i+:%�eqeWpJD F1L ͼ99tGeAuUQ =@ByDSO񹫢jR#o&-mc-\X{"z_*`͚5@okm \qU b\\.p>G\F1{27~F=߹$RKtkɿ2*~`4S{>:}]}|D.R\{J~ALH'"_u co@2 )Szg6�aphb۶, e%tב9PA_O h3T4TXh8$UkO Ui .r-}vOTxIݳ fn$ D\.Аn@kUqP2=ڋ/chwDxaD/KзX'7kݿF\T (?j4RGr0(?2f-m}j-RiD!$J)\`( c9y<&vUgx$%S9)G6_yQQ1R<4}^vNzO'��,\x]]�yR$Ƹcb:=(S= !eXu,_BN0$@t Pj9Щɱ0%7҆NNNh{u{e޻Ec "2ة9NsZ< O|Ws�/=(Q5 %nDuUj&`U1J\ޕ "[Nr(�ZZZimmCDf$*R'ֿ )2| F[[;^ @yp*#`<~(D(}ݐ7x ⫎oABϦgRQS!F"p/b(ci�Xs& ,X`J)Dqm+d)ۉoEĐN� CzETePT (0ʓce,P GA_?Ajԑ'JM�V 蹡> ӟE gɺUk irELOk_VTҘ/ŧχZ[¹ \@>km7t@ʠb-\w= a1uHAx_ I*b?d~Ŏ@I$Oo]xa `('W 2DDƞ$;@c3@;6�OE-aU.Umr/ykC|mbؘ`Lc|qG,%5WLJL [ t{ef@:R_-Ddrm2*0Zeb_E)KNvjbp7%fq~AzR^!hZC,]yJުV&֫)hC#0f}zw#zڠVo]k'1@)U0ǞBo(QBScѩ62VJĒ( Yr،gB/=c/d*~@&КYF4Jf=&[`7v3iN{v; <PV DaW!ֈ6Ǡ09냼 S.)wZFlT7<uИ� O:P~6"  ioAOG +4EKKx5T2?>ap'7':?o(/ɦ-=jb4'@|!O?{Ǿf~:�veA�2ED{MAC1[ Rb+j&E>>t(:<=,Q *,Qey\oӼ HLCmaC=kVQc0lelM" 4@O߇B|D lUDj A휅p9dW`o4sc`p7_ͦs}'e'A!z$/1vh-GA0{ޜG-mK_2JmK/*�Ŝ+5z-_*VFwZz!&yu\.904ƶ,Ƙj<|SbL dl -qM .R.Zo.0~[!ã/34T0$gr B1%.aY<&%p0^¢O *cn(݉B|Tb/!-pI;Ѳ-JX:p/yjc5kAʮa+TL@_!p{P(x`,DB!1^-.Q,n>P$Gr;63(2W(L0?L7Bg3|-tvut˲ijj.ZH%S�1B[k׬&o6<SYDth H~].%K+5Ոnػ$/�%iÈ�0F0ED9x кTtx`ۉPfj-3>\( %شSͶmsʛN7NW[@eN7H&dCB2d钫y7T*̫0gF:I7LuĦ /@y�/#G!uTvF<?ϦwV{RbmÜד aNDD:+ՉIhɠƨ^ҸNu\L[ݫ-#R!*M*�JBmE"X-S$L5^=˗ iBʎC{[;ZW P137Ԡ!@T*ť^OoB~{,n=C�7ϛujrB[))}aQ"PhJsX?"WHvCv Aw$҆(,\@i4W�`W^ Nk+ @=|l �)^U.rU#B84 %GH]fOu7{/Ĝ_.QA�L-PJf)8x=<l6WhW17kuhirgNzs^80i@|" 9~wM+�dO|+NϣŨf` 7"6͞*&X-!�XKrRƷpm/U ZA=TE2Hł-ͫ;[=Jme^zⰽ*WFt7Jq=3_O p?6sg7]sm<GǽШ�p?&] r9Z[/k؍8Qn]Dnۆ*a {.τpS3B"z3?�[9Qͪ)cWᮃ~tŊڱ,ٳ0}4I$ñ>zMM2y 8K,wTW!0|#[MsS - m57ECc#q0Cog[Dɏ]} �Qk{g(J4qZ-8mWQnZ쩆mxӾ1 1 q/tL@Hej"<T*^|N&xvkK+˖]͌3bx`0ut=<ؼ+ouż15?` 5 LaSYilk8{"4)QRjDjLd;@vO%I>k6q(b؞J_|Tf:Xr3T@erR*JJGuy`@܎n6m(R|nu.=3mt?vq/ؘ7'v*Ax{&XTg0m :oS4'O&q/x"W?ꌅJ�ᗴ'O` w+L>"ʮj llsN��IDAT/B[ X^yJ Q{Poh橭{8zzPS*ЖVC\qʈ@*Bk<b<?F\@,#Jbދ1JE "Br[x K,R$&9&~NCT$1Xڞ4y t۶oq\@ڵwvmwdP?#HTL&A\.cY֨#mppRD3ȸϩ47b;+;8xL+ K0@jz/ R)lBcc  >#X,m477L:b~ ړ$MMtE2)Sv\D462c :;;J߸A[6LI'2 ]yJ۷Vu<}@0I1ƭU80Гe]j0Tz �x~deO}cNj \!NE QV]CXرc@{[;--^z{ vMވ7(injbRdR4 "XhoK0H$IJW0k֬+i7N �Mr0=\כ xƒ1Ȧ=ˑ^(yMwtS+F[,^~{ xGG',):NlCªjYSzzhmY@EbyV-4[d2#q(~䳥%tBMC:('{�mŒ\.}R?`>:dC57d8Y\yGvqajᨯa|ѧPB[qе+ \.wȐL> hl¼j T6q xNehnjѶ;00EtbA,e97}`�(uY;Opݑ嚑?ElrTuc9bވ5o �bP3>2M*Հ@x{7ELT*=vbL:}7gR7ժE!XE&S(㏳ֶٖB}p�?;> z$" eBU8zWx/e%~�Wpxg̟�۲}/SA[if[>sQ﫹7BIY% UL��wuɽ;&uf9x{^4+\=)x.U7x(u1Ei-|C@-l>z3{R8SQG{o1”=2?jZnot+W13r5?6l0(_'[O?4�Bcc#0uג&FawqۼfBw,C!F"@6Wɯkhh<Sfdmw<FWx_QoLuCAOB6VUU1S$ǣ)#nd�w~P<p~^|Dy.t*qWec!c 7p$y!y[ffC^7ՂjG" ·yzq߹DȇPtuvQKǛ!rɌdru (I#nf:n8رڎZt%X ο dsÔ%ʥZ+l&pnV'bwZnaAu3EKAQs EK .ܹ $aslʾdUǺnnkQ>ڹ[},�B>?L:Ʋ,ԯG{.:+I%Z1l�/ڿvn6�<G¹gC*M:NݧA ϣV{+ki(~ ydV̋@)ԔsݿrnN?oצ bC[[{ }펝(� $I/FYS\*Q*2&GEcŢ<5V� EkV> 4m[)JvD"፞ d�^|r6k 7j֨dA#P3YIJzc388E^RP*y.tk*ßiԻuQ tbv,V=Fj=8_eGi. ;c#"kmF"z<fdI|x_o  &"4!>K� K/o8e8O�ѰX;m?BG{rQtCw$&M<ed9'"477OXTģ> 3w]? _ �A~3 -`\[KI]ڮl<zCTչc2%4ºbHuٷ<@{9aXWDss "@?C#<J9d2MxskB,L5u2cmٺ*V�К5kt<\cnM'SyM{s\_w~$V]^м7qM/�r]N6o9++pE- C8@\a }9H=(Nh4PMȘ LNDGzJ`ᄑqJny6V }c߮]_EA~">o><QXŪ9sV0eS308@_1Jw!Jy<fum 8:LsnL* I$0J۾huEIтvT,>W[Z_e{3c?kՍKHomi1R.lF/J|׏ש d:Uu2}2x׶o=Ds2h_?�<<R+; }$oN"\z߁Z q_~o /2̚9Jd*s[%\ǥ1xug5 1%O#|K'l.waY ;g<v&M|A f�TM6i46gw@,_(?|ث7>ji2AyVe/=*Hp+<EX,;S:0G=-vsWƠ[sD .y3Q_EwZ O.{ԬGIa2'b/;?~Uj3o"QܟsRf_ދ~-2lF"'펗컎p~Gj=(g#%Dʏ,xr7poΫ[ߘZ=E@<P) CL@sg=,iW;<549C.=O"U]oo0J/W ɧ�9fNc`!2zv;qu_Gkڙ v "P,e-yI,C�N"WSWԏ/ P7N�-zHY+A%AzAwczmˠD Qf4(Ѻ*|Sh*{)bHn8wRQ<S#:ꢎw^ž wrY3!~6F'?N.k负� hig<Ly6mrHPU�'.x-JcT{#,JcO^(F!=;)bnw`\~sKE?D Bx<E~PP 8v+z|@:~_׎J_r^�ȧf.Ӱ{7d9 "g~aY.o%i¶c yogǖ80O;/c"8] jg2O\l3t{[Ky+fDֺbdզ;W]1,SbŬ;zF2>.C٬?OH$0fdt2رpyh^̸�e|?Z_}.̦aN"Ed/؟}B;Ɏf B*^.DŽRH>_1;yz`Xi;NG mvU@3R,p+ؽ?ZDO={=׸˯ĕW,A)E*PW쏅<A[J3|={_0WJqr vnfU|hlT.C2pW_aڴL홆mhinjwIXݎ47N?oqDߎVvk]D?. ;ujՓo6֮GE(`qV?ѐ180@.?[/1{n]sF\.׶_Dɧ]G+?n�p/o %c$߾{۹;wrx~Yq̜134P&#[:F&V'R9${tQ|0({<5�ǫZݔ_2b:Zġh4|{D-86e]t z9>L팳:dw[w|D�jzұ '.}jhoKQ0vH$1c:-ͭ$I2(#ΝRR% b"J}9ޯgiWV )Wί޹}=߻e̿nf?gR(Suw=>æ[ӖwcSN^|V?'Q.oݞdx}hu>?iE=lWDPС/ZRAng{<d j6@7n�fDa>L ��6�݃PM2&�R7VnJ[PVj-P;ϑ&��O =b~D �Lj BJ[V82 E� f.pIoP7?vLtiI 'Gb=;/V4$�W~p8ZE�?6hB@}!4,!҄�QjcF�v|'MX�.* ≯ä9 IO0o=�[ g҇!}H҇tQ%����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/common/cover-setup.png�����������������������������������������������0000644�0002322�0002322�00000034142�12130533122�023065� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���bKGD������tIME  ;g�� �IDATxwՙ9:wONi4J$8kbݻ`$H#`sM8�Ƞ!%&)girФ\u~TWMO'H G穧+:'yyyyyyyyyyyyy_,{P%�U)Dp�/Uw~K!ߣoqN O<<Q!%A<iyRwq#U߷ ?M" @x^4R�D"DGH|P]g1g?bi$Fܗd> 6H= ,|Xb)%ib&Xή.[hkk%|\BߚL;[_?%3$�!x>&z9#�֭+R4Xi}q5MD"Ass{#?Tz_әIGw8w x]k(@ Zc!a4MR9(x<fΜ7p/ }݃>ß0){µ w!r >Ͼd*R?㹓sF�in7�.n"RHT*M4 ]bSan{+bK)U* /T2;O_-z0?+wp:TO;Փ-[^sou]-  ra&a8!#DUU!pTVV9p۪jӦ',|d\ \̻x>�(JIY)Hh$E^#{)7v) `CJ)6<x=V,[EUUsM4%8vx<q"ॗ_�xuzͬk?Og;& U(\8n;ՒC4L)ĝkrs !\}}}`MrA;hx!.�$\}ȁ{wLy㦢l&M~aa^~^gD6 ANO(BH)O@SU@66m~qe= 8r04( Tj}vr�u">i�WZ䧛6mo<Xw cPYUs/DQƧ%륯8Rk^z33Oo ksZ��6m~mيeG (MP^^hvxI{GTaXV}3 t5<k,jf G @(HSk+~ 9Js 6Y`& m|>G"@,,隷,O'`iRXR R"aK~&ƒ|$�玏w9ȅ{Y+>D�v|^~(UU3Fk^/̹+i>iQǦJi=W,b7N|�0@aQs,"=60{7�knD7a{p(WIJL^Z5@YH6�Rjۀy� ZH0D RL$�pF?@|_br"�`{`x{aS룤>\QWWi~i>W^bL$:^JwLkD �L)x< (XZn$NqQ}p_r&ӺD+P[;/MXɗidK1Rb͝IR�֬Y �Tr�do*i:ˇfWta@B0oE̾`"�A<"2u LHo0fΎ;;R$',L� FX},7)s]^()3@EH15TUW9H,F"t5 slH!1Mh$‘OJ!>}=>Nd~pݣu!_~:��p˰!LYE#Mi"N636´AAiJdZ۷RH C|ۓQ NP SHF QxӉiJ`Jx"I*AlҟM@yi@8|QzT6)P__b<'!.YaiF`fooB]9NT#ռa e4PA8<@kk)SN[�֯__b4e|]N \O<1C7@"9Mۂ`?¡Dʳb0DJ)3>"5U L$9zF z�UX�PR\g>9>O Kǡ#YWW:wXк ,x�{!�\lH*~O AS1Bi4|ߝn& *x<}z||?gbXE)_gΜxG"ш<!9lxH9־aUM^TФ4' ̙}^P(IJKFXy.g_H̛7V4\u Ugl4-[?UKivkI<X%@듓v pt}2$HL&I&ta*ʧXH>Oh|^i#j^\t anjI.23M ?Y+`;(a_<nDz̠D"mܽ{w97(ʪU7R]=ͺZ P__?u/MY/ JL&D" FsnHx<hKn^WW78 y02%T~ E fv2՜gtMťkx\:>¼�Fwq҆=S|NfZ'aN,tJ`" 9n[uK祗_C�sP|/IEmx׿^יd)`w{sK[3H&H)F$,n!ppx |x?")� RT\�RJ:N(u#c0Hi: RD1Z[+_==@`6Iܾ>'u]'H8V8׋,Yr.wߍna?p hA҂؆}QQV.)V}vC^C=ljFSnR~{2u2|txZJJ$2h&/ucL'4a^4IēkjFH˷wSk�!"RCA4Msl۶AS5>pb\wwi`'].71|0Lj lW<n=2y�sfPVV.BA?~)Mb{L 7S |po84iЬXLA9 G8j/RJt]GUU*+{<fΘZ˧PR\B(p&~|nC9&0e�t]G]TWM/_<ް8<B<P0k4*FBA?$2e#'H$IR9\$}d=O=L{FI`zM-+v3K3HXݟks&"Ⱦv;v~{Rkk4g;'ӵVfV3SZ>G[ @B$c#D _HK!_#= a׾=VN2N�x^lؾ{ˏ 0b'rݎ`OqzbQ�C"?sOLCP 0}Z%k*0 k!Q\)%x=34HJO 9dL{$�CEŔvL^ߞJ e:E�ν_`L?_(TWpA P+ٰi SZ]镎f>/%EH$D0ho _OF&EXS�.uZJmO^cw=3Q,M`7 gvKDApk_}Dr3i2̮qZ4)+\$f <`;o9sBJ!k4׷;%[Jͷ N>{3 ZZZꢩ(#!e+m?<)%M~.S@�G(/AT`#Rϟ+$ jܴy˖S;:())0#PUTMJISSDb0JH$BUО^VXXD #H)=>rݴEHUs̿c-FՔ2Hs>yCڻdd`R]L!� 44>Gcq']'R]. 9c~*<H$pҕ]¹,^ARblްaC@cF"Ғ.; EXYxMU[{k J_ZsOf~O&Q+w�2 3{tބLn `QSS% :0H$j? EUiiiyM7LKR|Bu )MOB{tH;?]̳Ii򀫓$v ^S}Nj#e ;@QB#(BL& v*+0MIkk QdE�y!\~!jzos[;dښ*LmZ{4wl\s/BB\ٹke:$e x?j." uM ν"1:cH YxEN.83j `uXs2%k3Ǔ321D!cKL&淿♍OFN(69m]OmV}}^^yyyNC0PEuuvb8H/A*ǂ.D,;3dosAZۭA;!ww<t&w2qƧ?x'" f/r.rO90 xm<|v]9lϪioogp2Nee3 L&immu EEEp>��~E N#tYw=DSc[sϴ[X~},7dRYsZ=<\1q `pp޾9}{Bqu˸q*' GAaa![^z7 檅m=}}tSsv�]{8L;K8"B DɆTM(H�˗K.s.p\TTTGja+bтi={sVy9h"8BB_@|"A<) _k֬97ߑv[ͻع)N,={({{1]gтy֐v8LG/w(˄|dWr= SWW|0/3Me¬(aHI䐐3{W-sf$!-7xKf$B`{)\.!ƻ4E JGӧD%L&FxذamR"~Mb9tvv:vSVV;;7�PU+G~ȊQ<ŌБf� }W9%lhhhܽl=q߿Ғ2 ӑ6~%;택{kVW]DAhmACML$fOH)?|ٲ s1�иi˗D}{(/ ?nf ^{^Hqum,5#?p؊=<\s|9L*Rܶ|- WQ�aV,;&CػwS**K =͋[vL—ΟCY-ͭN&H3Y^4_M~~=v0te=|gĝ�MZbYk:ػoUUBVȱV66b.7)eq2UE#?h̜Ɗ9Cϖ9ȱA(_tœ=9w/0 U)E.PRSj^TS(n."S>ET3ϓJOwL+�H)ZڙZ5!PS+KYyUx^`x$DŽԮ{ߋ|8`捏 1Y %ҹn<BREEs3ښhMTW*U򏶰Q�sQ@ xɟzW^y zn3%>vI1x_W57nFǺ/;[$Յ:^Ә>8[;b d?^8Zs'm?(+-m-H)Ku˗|]}+�oO uqj.W˥fqZ.YMqa>ChÔU\6Ϛ|$RuVɯVr!pRnSHRT",-[&l})�57? Pt]/d3kz9W^8C I^Krb=aRdױ0.%/থ)e%Gس�SʊKSԈv#֊fUU]ɏկz)sԏz}�>nYqՕ.*$߃ϥQEgKH$-!' ^ybY5hi=,CPEY,g5MǥܮSSdl_*tww#`N4mxoܲ  /$//)%~FUX aXq]x\`RVRh A {rnٽ X]Y Kr'+Dp+ HjRE==W^,mش(r}#�3V>Xjfnu\BIq!QB3(2xmw'DKC")-) H?h<fV]Y+(]GRJ4MsHl!4)9NfƆ͛߃,̉�D+f*O *+/ŌjL)3MR^h$0&V O"3Kku33�p4j 0a!p\LBWwp!XlƆͯ< ׬紑 �%"M)%ZS %..Hx OZR\G*o`!isquY3frFi37yahkω(BG$+XԸig1s֯Yt OD˴WhGp!ߊaH# OMHZcL^ʷCѤz3 Bx(-+h4*ܲb ߋ|qN @M: ]s)n0i뉐Jdˬc;@iZ a{tiv{7n J[>m {N! 9;2{}^%%]sV�ݼ< Pg UqɷG)>ݚ)M-ZAۅ#m-L 2wFEPXXDk[ DB/]qS,}8'y�y/-`"/B4IߣI}4$;~e[':::8NeDx<=v\Dc̈)S*v�>E?ќPscD~%0?`$yHx4 H/!Nh8a _Tr Gv,@>Ʀg?B;bD[l/Y6vD"Ջmb>gŬ1vcZ@ ,]|)EER3#<8|K(0FIw�Ǜv1F"6H<&6#MIJ}|xu5!^O'd��IDAT66Ӱ9gj[~edG;5CT5Y:9B0} H |֞|pvA!7�-b}uMtB>TCM]H%Q47Fh.Pu*HPQ@D:xC}G^sƍ,W2z3g[a̐4q(v{hoo0!̕K_,p7X( K1W SG%}}EP(  X#\GK!;-[$_W^`Z__~:Luc6))4M4K’ŷ.yb-g܌ @ժ Y+Re`0Z5B~EȧzZa)͕QUGQȜe~>RCwN~ =6ŷe˖K~} RYY-r A.BaJqQ B::;RVi)mчnoܸ.sjn]w^Cp@Me+[4%]}{t  m>|R.$!E~, き_Y j[|axJZf`fD"N0o̟wq)OV2ׯP^1C;]` 򘒎)-nn C:#WӤ:B}AEQ!?KΎ}Nu5c"z~Lu%ymVgĈu�3Tvu`ρpхYmС#~]:U@]2ݻ>) S`es pFIG'^'\8r[ik-&[G}(TB֎ E.~vw6Zr.R(2n�#`@%%$ weF.lشy1&�3o\Wj~^Wq4^{)gL)LzA"f4.^P1TlBwETz,c?X//kބtK_kEF;C ٍD;X (L:0Kŭ+* 6o22pV7.(rEXX g ϭ[]:Ͽ]0V󭖿*JeI�e5ys ;";s2hllZVr:,@NM&KuHd>@|pe} 6ጺІ`<i> fVx< k($Osx=>ϭuk~(<0GZӼ#@(WվiT7;L9\yfiemذa-,!]v.p8d,B8qa{hB0`457H!swq4@ ,"|`> ._&IEȯ[%_QOx> BhיR&wv"^tAJ~t} W=0?tt:ENuKخv` I&rv)((d`A+ݰiI�O5 y}pʫ$eDb)<.KNzϣhѸ=-{I# K붺OUb?t??țW0?Ǔ=iISI4EQXpŕ̙}S+7`AuAkzoo[_{Nkv-4zZ5U=ʊbnZv%B4-?=4{^=4a(uh͍_tʳyzw !7l_V柀*UUr"f̘5Blb[l#]ر '~X,l!bj'C&bڻ׾|:i?m]^gxߒQx>fVX #h"[WxR`KΡOILAJjK }H!;핵|Ll<wf([)qEN{dDg ˤv!hhc C\f͚7l#t'7S(-giְ~Yݥz*^oG1MIa%ik.|V??o#><գϬ=k=O Ku]g«,q.!F2tM`xtHikoeWgcuuuZp^=fV1`˼4+܄!`F."w شwb@7Ǜ{0o$?d"[f3kON5v_riv�`cEb90lRak{?G%( N5@M| ??ąiVkv$ iB~@OÍ<R ޥgӔ$4 p}+iT@Q0Sopز ?kmKPFvs«Ɍb X>]lr{{;B!***(((`&o$iw}wɦl3o ^"vqaVHE2[MQÁ~ T2A_!|e}wB[K)ٹH&~_?,^m(x<_q( H)m!<x #G8pngsl$ISI) @RxnZr4z̬U< J]i+M_ˇ'1M+C;a$QG=+<�CZ:g'mpmk !J?m6[!9]]]N.":;;  (/HQͩԬB^ VB+3) ( Oo å((7xfzǛID jI7] S. wts̉+jR޺u[J,{{D܌`0mttXZNam}>VbZʉ<88H,sS]nݺM) H/v4bJN]n B*?/⏯hA~,CR*PuP( ,o8aᆪM_A聍^4w}!o"CCClc]]VhZ׋!�v/((pPTdqk؍@ KU'$` e/H {"|՟LM% tEEv}()bXA0zf-~(vKF2 288_xV>8,鄞'Dɫ340 ed THX~zAH,IP)E>h D{ٶcI&>سz(RQlG$={Y%aس=&VM6ls{7y|/+RPP4 DQRO=Pp8t-Yʑ見y&lIְ°RNH4(?7ƾ.:g1ȗ Nw>(4BKk]ݽVLW~],smzzӰ<Nk~N|=\Ot�>xuzR x<~g0 z{{GJ�p'ڵW:Dy5TU4%SJz(@@ma]4wǜG<V鑾/ Pܔ( Ebع?_6Zc/dQr3H0vuMe /|e{^ͱXL觰ۃ&JrU= ??|>P:m4olSnC(9!I&>SU@|E)/)f&xjs: ?<#4|EU* ")᝝Uj~}ۙ1hK{_~Ճ^r~ws4QrFz B|>yyyM4Mprkzŗ2 *�`˛y3~TQ7ȜE$)P?ތ]|7 BYj7vf5TiHE=d`^yey"284HAA!n˅xWx&+e*e4|e}W69!Wik+{Pʊ[Wɍ6K$ B6vWBk�X"i/O1l7~.՞-<$n?o@0rhhN^޴\@?^Jk5ؔ_Ơшϵ@9:.n=KIq>ۚ=k (tc~ȰͅRXy_QD4 {q~'Ah%< ;.fغu޹%D\mmm0xH4`x6vŎ4<Ns*Vk9WƔl#gzJg5k$n*+JuU( I䞟? :Bg(PA+t4_zhĎ?|,MK0mnڞWJ*R&[$J2?oB U-�'Mo T/W4ņa~bTMAU F#O%$?=GP(+[si 6hc> 'A&S ʮ:_~_WWUq{=*yP|闆a4Eb߿;w臏gwwhGe f$Fs%w@u\h>fYzQ:z"NuLDIFFuW!;Hï470Os ޷af;Y-2+m& gΜ-R yC枝;wd\ܸejlͮs@#I{ߟ-V'5Ejݸ3G(TT$ݻX,Hs`bFs\&rMBӓh><x8' hD`zsB4=M}S-Z%G(+)�[N DDD**JVʔ >N5[T7Y8YY$9XfE1ѴW=~sv/t�T7JmϺ^%oh(F8Jiq QB"TUTE^KEQ�w;4f}G]7'+UhfsDl`"1q�Ix&FU!%wQMB(H$F{w?GǔUz]}n~A_o/;KѮ;;VLD#b"*wҔ&r DiloDzi%W^PD֎(©`JAdh#rQ{2L<ڶ'ffn2j"MB}%}*2`,a%8^xԖopU%=ePQ>Uhx"vo< "!5ro1~C7>o;}&SqV:{"ob_\ps)|DxBQ=̃~'"";Q!{,$+<Jɂz2PʅK]TLF߉tx̑ 㕄XpuE.:a<!m1ZUsVj{Tx?^C,s1ʟ,TL4QJDOLpF2Os8Uy1VUqqqЊZ{"����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/common/cover-video.png�����������������������������������������������0000644�0002322�0002322�00000023103�12130533122�023026� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���bKGD������tIME  ;�� �IDATx}yt{f#ɒ<Z͛dْlْ 16[`NH  !@^>!L �^`Ke[-y$Zg$Yi4Kw?ttF ĿsLOWuUu[nݺu5LkXBo4]:BH 8�uE[>^ChPRRx!eE-@Em?1(e^A)�˫QPP0={n�@N]]ݡ`k NSUAQrBH90\:!bI|!>>& CCC //<(z@P pML $:�PXl.\X|W|/Ù3gp)�詭M $@!g�|^… Q\\̚5 111|zuunV6 �d.9pNmmZ|@/KbѢE3gRSS.[6!uuu8w܌+WeY�@nn.CQTk 0QR"_bB̜9شit:Yx^x<nTUUa֭~܌$L&rRZEfBB�,x<#YEff&ӑXL&>}Μ9"Bvvy Wl[ss3-[�HKKCSS�,91�D: !,˦4$%%!>>IIIʴ48No^ۍ+w�T쒒6ś%d�8p}oo�233tR,\٨COOl,ˢhnn�p WնÇp(@TT˔)𑪊�YcZ<O>h%%%·DwݸtaZŧ+rO!j�3f̀N0g3+6mM9q Ug3 ٌ2yXXϟ?ӧO=\KA4n6mw8/UmjjBAARSSB*TW6o<y9z{{4# !ABBӑ3f`˖-Rv?h VBYYg/Jt� ''%%%hhh�/+@X`A6MĹAjj*RRR DEEyRRRD?^5`ڵmϞ=󶶶B#55 ,.Fc #j˙ Eytt4f̘4+j G^###q7ۋcǎk0<4Yfi4M/78qNQT˲s�( fBYY-Zl477… e &'Ak顫Va޽`F6-::FVV222鐝 �z(R_)$z3�MTzi^\.XV477Zp|{`0T�9M{,"X,>β]K�+V,[1&+�{vxb̝;)))"\]pG剭5_bŋU( vx].ZZZzcTVVKO 2�','T.R?qd"&&4M#++ |>0 <oݺVXX<U=�Ng@wAӴlM CXX  v_p8Ggg'^t `ÔY|�4�Yq^TT<$&&"22###�MӸ�{:݄tttz6lat.ݺu^\N)mii0g\rW\0zzz`ۡEP\=�vBSH}Zo�Fy___1!reSeQlh X0E z}Eq/d­ު*`5k`$0044.  � �4}Q@^JBur\ȝE!;;(**BNNՅ?.Kq9܌><\: !?o&0fѣGeK"::Z6E{{;p<y6M$>#�NRuras~X�x< /FYYgs3viRb+ ԩSZj5={pvv$''#''YYY9Mt:aZqy?~uuu>*y=EUdH^0Pd•�qqq@ii)͛ !ƫ S׮] ш?ƍAt@SDqqOYr(Wj4Mٳűc`ZE(xy0$@M/˗#))׸hj?<6PM6CCCgBO 9|``� . "25KpjLW1 Sjq 2@IIɌ1;;~;�Eׯ˗eq8O *//GFF޿w^ ,�t:o!ιι! NBtt4B*i,q 2 /)Ga,!ؾ};O"?D~~>pر. 111`Gbͪz`0;DVV߻i6 Ξ= HX,Y6S%΃_X`A_= 7n0٬ !%..< oߎD<`Yf ]򌍍-—A8~l91115tp ~ųv͆(H%/Tz#A 2 .<FY]YY NE}<--M(,%Kॗ^EQGOO^OׯM㧠3gbHLLk4i8yvHBN;wo@BHW^Eww7, ?mE,PfXV޽4M#!!===>͛ :( 4MfM&N8I;P$΃A@~X,�!eY ̜9v`w}7P]] ^l6siN^;;;QVV&fv>44$[#΃",{L1�tO_7/ggY f%<~mmm lF__~n-rŋl6 6v.!~7!'=APds9 k�>|?0�l6"##/ܰ, ^~=,X�?}47عs'v@շ]1EqKK ^X^)enѸ /vas+WЀj;v,Ex<Gy0�c\t -g�!- nk`Y:V^s碹uuu8vjkk122"G"λ!GhbYHXXةdq Ԭ^uuu<p @ 6w\|ؽ{7^/nDGG+)k@EQ !G ֶ8r~��Q8-2@ IPQQ͆'NCXN�!U:8u9 ̙3p\N8Aww7V+AE?Ž^q!<Q^ wn~zzDzln___=JJJ s̑B �U13t:]�}FF}YF466@nn.y^$8cΝbQXXވ/�BS4@ytE(e ɣ腇*5f : !LǫAu�HeYg?Y@/\IoC'22R:uhaY쫯QShtt l(*^.](<qRRRp-࣏>!ÈZE+zV1`tHg�FM\x)88<<`###%uoN ǻ"""Bivp4ܹs�I#Ň뻙#̙3QRRn�BFPc``�_|~fŲhUQd2aʕ>^D( GAww7�񒷿0mE[nIxСC[-***5:lٲOuoVRRh;Xz5ϟz f-0zK 吖~twwv999/D Ź^30 iiiL[_i/"##qynQݍٳgKb)&T!:;;#6(x<:t�)));ݰ :mȸ?$@xx8*57oPSS[ohiiAOOvڅr/ٳAzzOn²L&F#@ �yw9%sx'A dn_~%^~eK9&dk"NSr ;;orvmmmX~=^uvRk/;C/qҥx>jpAb޼y~Ν;Uq9)_?ϝc�BȖj188͆Wwg4qF#222ŋرcl;_`s=Izxy Wd_ yyy�7|Tg - Jx"o߮io7xC8oo4UcxrfExsZ9sbp⋚CCCxE{":c�'�'��흿eV?GFF6>w^[p!_UUU_"[t:]`�)8.ttt`dd$Ǚ3gjQ__;wM{F<󌦱uxx۶mJRGO=.]aVBpgc믿uuupx[""""m6|x/"V\ӫpf/]wu~m>| t:OªU|axx>ώeaZ0. @Qn6Yf<Ũd£><쳊;p\xꩧd{~G1sLM|gDήB<''O>:@H6C,�{�xKyy9Νhtwwn@!+WD~~>de˖ᡇZ"jjjT?h{{;EV5!oldd|HByQQ?. UUUذaf3(u#Պ}qe�2#??�9z=\.?eplܸQ&ra>DEE?~hA96�/�35k([100mҨcx7A4o�:x @QCn{" >/h4*V휃z hW(R__y)!\\^z >r!""aaa>uɽ۷32pmeYe3#1�r9llMsXxR̙3wuZۇ2:::D $RDDn&>|Xu>}eee\j28q|ȸ{rI&M- p>�7oktiK.ž}T[<?e˖GYYY|w:N2:(\$2./0hoo>ChllD__f_ *G,p!0ʵĭr8q/^*^jZh1" mt\yCCC<U:KEDddx@UW!!|l�-`Ft[#p5P0gY My]O�,3_äeYx<\?\|ܣI ꫯ4tXш3f��z[x ֥%Rf- )GM{F_ c5B&.\szSSS5N)qVJ/-qZ`<kӡ`i0�5 0qExaܫߖ?U1zZ60t}(W@ZxCq<פ|1$u%ȷ\' PpJBP36w& -?..ɷ N$ BjӒGl6cڵXjvTٓɔ06 Tܪ@z^6R9999;g< %Ӑ!EH,a)rJL&WՆ3f{?QUU`t'MTIJ* _.NǶm`Xt:@III<1Ϸpp݈T/1M&kp@ڭrea֬YxV\|鼓ApVB}}=Z[[#}J5p.mmm~Baw1cf3�CQe)]Z@t�'7|36mΞ=g1xG:(..ڵk'x臗ӹ_׻OyoB(x<`X`XD!`0doF\x6 N5y V9߽ɲ!(ZvAJ~ǥ RSSuV>�˲z8\+W^ZZ (  JazL`BMjVg .=L&ŋc},:}cvnfرc8p@/x{(ʛ4iC=ntӉXVn<p:HJJ–-[M0 >Q(`ɨQms(Ҵޣ) ?111v ]]]Ess3{=r�͆hݻgΜT羉,;C@0!s\\\xE/E/cǰg~n1?PۃFt<K/fiii5fCY(Ƌ)] RýjAX!--Mv/0og<U}S5sjptt(֏SH۞ !X,_|cU(^HNN2Ԧ 3gf"O :.^<#RSSqyKK / ؝axOM fce[[hnz3Mȫe!@[DZGxO�AU_oooGZZ&^ a剌ߎn g}TZƻ 4i@ noUe=)))C=@eOD ,DrC,BT V2ĈEsbhllFPa,*'&&b(//Ǯ]2�EQ7}.,,eRRRxbt:޽GAB%P8MN[իW{姕rQRSSqF={OzII ֭[Ʉ:֢EA;;;EN ΅pFgyXn+h&K�%k b+)=Z,qX|9(BFFVZ:`Y?Ob ,[Rcc#v܉' wu*++144%K`˖-0ؾ};>SǥN %q!�_^T �M7݄J ÁhQ`G0l֭[r,z���IDATmݮBiV4_ 0<5LHDDDwʼn'ldgg#33. ~)>CQ�/_FTThak_(>˔/j@RRIs"A4XFUU?·uѣGa۱vZ]طo.]( :^999>uo=R(>%5Ct-@iHk l;ٳ|OꮯG}}=_F\\^/oNSnrCdl8<>c@M%O%>(5^E-=zTuya5u=Wcc#!8uꔦ^*'MLSn T�sg1QfRѵ'OO>Tx҂eΐ)ܣ6ӧ+P&`*0ѦUiӧOGEXXzB<Y vLJyuOZ´hM U ZMS&nPCo!^ '_0rKOk?(AS1,LtBnט9s愢AWWS9,L% jm=SM|`�(S G0Q eg}Rx^T !ZFE?^$j74r> @8�f{Z0Jx= 7}9LibB0`NF@v@ p^xntd e-1}1�5V |C:5vP M\jU33`э`^DpC h0`0-Pc3Pk++KfæOMHf\J a\.ʧ3KٔJ1eXF(%|O,{ b/h%HaY=n`NBRR CsPjJ.-dx<B6r}QqpA`i:�Ȉ؃E0`YvttVLpahL(jra`g旝/B~EM L&i˲FBM(wKqy(IpBKʠ$4ρ된)R_\( .;G$)bפy �F6vH~Y6|sN>\;WF˜+]2)*OBYz.$<#H0_\_+r猤V r T#TP<瀯BNpris!IĖ^׬mN{9_\C?9) <;k%j0Y^,Gxx�B"K�g%r j@ H &nLR4+J.kR B {BS�o|W] k\RO Lg 9a;PRy=uU ?lJ����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/������������������������������������������������������������������0000755�0002322�0002322�00000000000�12100017560�017033� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/down.png����������������������������������������������������������0000644�0002322�0002322�00000001457�12061426047�020531� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^WOHQoi"bt)Q!(:D@.Q KRKKNAx+si:$Jsv3zFf'i# ,ط}5 -hvcn<rʩcT�1B(:ܘ$ IKj7p\D=@/XU>ZkNk }~r]�0BT�9o|Q-I'wG&k7~DT۞=# �kP#gxzZW_ g!%nbv@ObP1M"&a|ztv4tu?*? kbRSω"U$&Bz=?M5`ȳ N',u7a<<$ZR4XoA riĆXUY\I[M -g(fظn@l<V24U Xq,*cл@@"z..-?(?XJ@=_:8'u?ڕ b e"5{7ALB>0S!`d1: 3!rjn dj@b4VIOpc}%[ P2騼#W�YBO|^..-21CIy\X_N@$G? ,ǥF^ kA}3.X/s>;fÓ7ҩ.l/_�d>@>CUp|pk'ٞ: [CqN����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/fullscreen.png����������������������������������������������������0000644�0002322�0002322�00000001422�12061426047�021714� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^]HSaǟsv*Ö<fj7iYbQBWmj5"../hnFmi1&nb tH Ăp;|wl?yu@.kj 20:#ە)0HWV`ŶwβŹy[¢3jGU&{&ufS8yLtMm*I@�D` %C`ya5Y8|,uԃ3b4{+%l6PwUx1<l`YfeeQgPw��<%^@DQ*O+^2 9 �p B@-I`( N^tsg=w{4hqhיv}[h4 4ƍ�2MVӑq^ pKoj9^�Rp j~D"06.4#t#O:mc{okI q <݄W`̒% /s$u_&< �} \D\ P$m ˆ +}>yJP~3!4#\AM@I0"By\Of!D? ֊[l5[w^K(9x�@ e`k=dQbɛP*RMƻ##vd/ʚ')����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/stop.png����������������������������������������������������������0000644�0002322�0002322�00000001025�12061426047�020536� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^M1Zv%"?'@p+!27a XV3a$vJ,HlS^WU!ge(>|Ik0_f篳:ʓ'O{dӳ/ !0X^a_NoЊF#�!PJz<Cpޣe<zO1THP N<BǸ RJ\#DI2?@4�AIi rp�bN;GnD>;�߂/bMq\ J=ARB]c0TEmCK>N&N*uRPIilyZe�*6I�%<>2:1i|/;o_ $D*d0kq|i9v:%/U~go߽yw+젣ܺ,Bl����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/launch.png��������������������������������������������������������0000644�0002322�0002322�00000004314�12061426047�021027� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^iPTWׯ7Ep#( b4JYd24n5feFg,-c*rʀL3F#Dň 6 sH5s_{999lJjl|@%;%LFI@e *e4nPis@8FG50V7W(%�? 1uQfbjRQA)ys<n6fb̝;Xg!)5+ ,%e8%-kg(^F҂JM6wJlR"$-spo_y5/QQg+1NHߜ.nҏw)ӗbٴduJ?ͧ+56.XK?rn?vHsV]gs[ۖ-;5uwK>Sz֪KMV�Z=]n5BI5L ? ިol0$@M:s"wOHLˊ818%5IN<qױ 7*Q)qBp6S[yIJ} -mkewQ`Bߓ˟<z/a (r^UQXX{a@}GrwWL=o6[d1grjA${, <O\4>Rt*€P#̘4)9NFZT#jCPDCd"/Wϋ9jVRʢwBN(e1ZG=^VfMt p&dNI|Uy:PJ{_|¤WU0 ]^GDImL+?nw!:aWNDzzrc@<!(,&pF)Fk 7P=\T_gc{cbQ$Q47Ka6ݓN,_TsO,W!X�A҉6SZ[[RVn6 ˋ29PtIp#$taIؘ`\*I\T:t=ɢG#knwf| F azQx+U*5ЎrVSBi=\+CӀ(xQ)YmXۺ-VJsZh޻)B%�>@mF8X.漱�2]EbH`(l _ "W}#j@m]=(6A8 EQDPPP^M;$OʝnDE2!%Oqё55嵼Cq&=unq|D&M1=>>rA_}1,y_“{`ZvR|ܸeYoVo7>,E_n+n3[kd )&l#pKW .B%Ϛ2i݊46v<\ppμ'sԈMjjj> B* �P[ӆi3җ.y@Cx�Z/%ΟJ ywg ?[r}?OVD@pCT*s< Pjޞ<fq<�x-JQsrV'ޜAj~9ujvܙ3~6zg|t4:;,r*Ӓ)TuӶVT*XکƜ ̝Ϲ""([,VyCż:X{}x䂠([ -khIM'%}ES"w\-BQA^Sc vkננ>tM[?W.K; ~^V3<�ZGt>$g߁}o}cWjXFʪmyݔ O0̜hoqݕO@cL𰗦M+m% el1gl�e"-<~.:-#{z ǐ?8Ԑ<KhX|,Ƌ(Fc~7KUr�?ĔLfL`̈`b ͘&/�5{V#" >> 9; 'aͺu_??`g؞*C*OLtx-M5]&Z+J+i $.ӷsae0 S-{֒ YP>.G&FeZ61J����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/rewind.png��������������������������������������������������������0000644�0002322�0002322�00000001727�12061426047�021052� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^OG{64QUTqچ.ЪTJvN A{�MB:D Ԧ5KK%.P(R&a܏&꽬~]8 *Ӌ/&G8 ^i?j=�XEQoۜ[ruUCZZv|?>6 2X,=bR^^n=|{?2>: W`2@n7r8g;F͡::$Tн3-n~6x򨶶V-qa4Կ^R6(㿞><} txZI}t `6!+#:DFy?ZyS]>EI@`0RrX__0@�PPlI(--ͽl(^_}MM RR<9ӐEn}=N�v(Zlν^Lk<{f'TX qc*PfADvF,1zF퉢%<獍+QVkSe#prnΫE7`1}xmϰvvv޷.jEpl8"X[++P_xS?5D|l'fPxR~ip˽?V%M[IM*3@ RGFFp�!ܜ _~/wԭ-|F"4ˇaÕ#4 0b!p,6|tbRlq~kneS.> v)vk?,Х%Ekkkl;yk̍$]__k"oStuuGdb1OonnED@ATџc����IENDB`�����������������������������������������anyremote-6.7.1/cfg-data/Icons/32/question.png������������������������������������������������������0000644�0002322�0002322�00000003751�12061426047�021430� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^kPW 30#Wq .&.Q QT\fR ]/R,A]SfjJnJzY%h JK4QxcP�sٯϙ.P{gxt3Vv Mٶ-+vT/_[UPڳvT+ה{{*0ꍿ. 7#bNJgWnzFSCRߓ'kxƒE;|"hij ©oKgg*/%LA(Z&Fb!ֈډS M 3߻i"S8#n=ǮBݏ: b Sc҂L}*mNhowWkSyNƒ<#c۞|}$AH$* "T}̙fö́N+U'4V54e s')+YpcQMS@::wz18O=#a-<KkT'%>Yƺ_.h5L!HIF=ɶ(XBI\ck} GY"5XdYJjq h^HŶUsq+3ٹw~HFh�=Ei0+/@i)"-3EolE77IU Q $@dk@DmVijSWfD3kXԎvqr|:WfVxݮ(:k83#VϏ~7�'@2Xch9oe O>7c=K -MJ <2pl6~z[~i1>:Ibiqg r3E@x^ըpIq8I+Fܰ,D]cykS �^&WʶDnEM3`҄i$<NDĎ<"VwrhUq&$(zAHF K)D�=.x'>*!BC$ą|e^Yġo(M~:n!}eЙ@En@Py M"¤a� 8HN_`�"Ay|1wuٍ މwV-bLApjں]|F5Lw5lnB)Z@`!X N 2řeZw\65؁iQLh9Slpt>^{CG+I1|Gӗo&a b2&Il6(*/i Q0p ~f1cLk?()Cy"ŠLPt7t玗NbIc?#ւwʎiÑncG8vD$*mB5㧇O} .78~*#LMw #>& r p]-wbfv:xa3Fsa5ݏ-եu۫~= "C iShg/̀bÍƌ3`t>EWSsW1+YAy Rmx;O!݇V& $I<_"&s}kK+WWTYtn]W yUi1`@`�`Efr8,HIf*Xydo�1 H0Z _9vAsp-T<L4$XX*IV |i/_=+�^?ɀIgJ]3i.{.-:>Wu]sw3anD`"DL#2AZ`I^&6X_Sx!ߊ[cg}В-�MS8BƺT 3~Gx w ׃@y BbY5| c6u6̿����IENDB`�����������������������anyremote-6.7.1/cfg-data/Icons/32/no.png������������������������������������������������������������0000644�0002322�0002322�00000002712�12061426047�020171� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^ŗmlSs\b hK+%uJ@_UmRu]5MP?LCLHSaB@}aLD6B '$UYEia $qk_su}eYu~#9Os}7oJpDU!F$ax( O8+Pw@=` EJ߿<8\jQ _SfE 8,(ldF%nE�B"UX | AK﹛]wbXo0{!<"^ Jj  Jq?]ھ "C(*!׿a?$%Ĉ%_*+!£@5{f183IN'a#r@Γҽ}bT5~ގ&DXCz*?IƭH"> w%TJR#=Dc1T>O?i{14#- a?y !C3ؽ+jE݁0v=uk$wcz5y HS,uK^ظ Ti sEeйs0Ř#ԣ@^�\޶J{ߡqFʴ>0jY/(7LR&Qw]*W`7!sM/X,VpA:erB01*0TPnlJn~}{C%;kU)J!O=b$[[ 1q%V= dh0 <) Rw�VY� (ƚ*˯wq?@+HFȃ�LDd!};HWV3TT eܼEkq}P_@ب )"yij<:>DXQbp9" ,D]ߟ '\"=Fi(€$d0wp@�?CA6�Ҕ8 FP`=Dge5{8o:=G 1YtO/|y=ؙ,DMvt Y /9p@@-w#[)ţT2B\#W?팞ƀ86kb#y㗇X}p7M1 tpFh&QRp@E̽[b,۽ ./y_tx9:p툜K yܕN0Oil\bf3˖fRpWU�yM'P(Jؗ>2|B 6'w@uk lfuuUgnf s m<[@Tbx.D-GS\/8;zH~ /!4?Yw2;$ FAs@(?VjT+p�îc3Z=����IENDB`������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/default.png�������������������������������������������������������0000644�0002322�0002322�00000001446�12061426047�021204� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^VMLQ~owM(DZG<ԋ1z <%z𧅃!!ݛ7EO㙈 Kȡ|zidd|nwJ yyh�X?ZKR2ԙn><};Ԥs?o}=eb1sYȡ׮^mnn&A$HT<YLuN1z;orνu_wro0R]Q0XX`@w;g10I@(8–MLX �Uqεӧ\sX�63;s6{J$#;&R+'Avs3YK䤅,<<3;qQ< d?| ԸN�\ D *@ɧsዥp8ˆ̲fo߽}{4ܕHW+䗵h kmmaPj3 u y;$>\ѝ�0bQ*(HsYX9d z\>PEeL!uǭ�@䈓s18D: �Y@ mrUj}Yj(!B<Q#(Ѯb[!/PKXajBijB)Bz9?r:1ZVQrGb#Mv|?u8ohTs0Bl!rLڢ8IVtsg @f~ '9̿)dl}тs طX#aPO����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/none.png����������������������������������������������������������0000644�0002322�0002322�00000001305�12061426047�020511� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^OKTQweFfcc*>B-jѷErt%D23G , Ц -\ ri\w{;=^ J%)2UP [Br sapcWloz$dff&yd._dYZ"(`A Ð߽gD az>a&a:Mĭ*F!k*oJ?p&51"?6QU"2'q&Д<Kk*Zj/_?S*-pJY][N@�ZPR,q/+"S%0@Nz*n5�gRmRN8"-;=)>09YΝ׫�\attxP�f vx^wт�~Ue@@Fb t.3< c*"b= A:nX/h0bԡjŁx <b�6\D򝇳46E"7b!l`; ^@|a!G\xγl �v0�uꁘ = eU2V}Iq2a!S/ء=59����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/eject.png���������������������������������������������������������0000644�0002322�0002322�00000001567�12061426047�020656� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��>IDATx^TOYEiK D!1-bb$Lw }Ґnt "M@_ @�F H+ @D7nh):T4SL왜sϝoΙE߽!�5Vkk?<8C}}=3=%PPPpԩo>WwenF]8Ĕ<!uqk`jOzWx'dIBkk  8wd* [^~50^X[!e'O;a    e}гh,KR]=}7=niù$Cd5,z;Nf(."_.+A!!jU)vw܁Jow2C$̛ H9Hdp܂|X,gB Wb4hFA*: Te~A4A:'p5ڂJJJa�4,vVBk _q:"D"D2H*/<(c(P5;WU:h<XJ_f[O$kU<-"K0JmMo͚>Ц$&?iܗ/+~tENˡ:_]nSqIDb'ACؘe;9D-ˡׯ^WN `{;c�B?%6" Ţ�+jiiqS![*(..VOZ\ mzZ;s;דd}9z0Rx����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/transparent.png���������������������������������������������������0000644�0002322�0002322�00000000214�12061426047�022111� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���bKGD������ pHYs�� �� ����,IDATX1��i3$`晀@==����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/next.png����������������������������������������������������������0000644�0002322�0002322�00000002273�12061426047�020535� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^mL[eǟBKR M>(v@ _A5͹3$ F2en$nو0-K/"<Ka='O~?9* ݳ[l΃Tl.50j_Ji|GrrF�9jSS_2FQRˋ(dffqÁ8AV�p7VFŀ͖VRR*Ғ^_}l 37z|bb)˄ 'k `H@9;YBakn^NNFFFDY6F"f߷Skvk-'l6 E"9t�*Cx<n麴ͦ3lgX&~uX}v6܁0KQ$�)Mӈe0gdwUpaonuXK,--M(++0Ь]=ڰd2%+MPD?VMTJ 6dJB�TM000RpCAT" &I,=^7|tatd|H>8PDP!18CD~dZ(Rޖ?84 7~\E"{L[)\ў?ywSWdQ  YB! 9Cϓ&P�CPgcX*@|I�G0ِtcUtJ{&&& U'.O{nݺCB[="!L@3Rܻw0U /_u+? LLܼN#' <J٠πT"%DC^kWiӏtO ׮v<=U h(ݝ{y+�/y]8+pVso%%%̌4#p\/ϿfQ ' sdM^(J4>Zz$s{aays,! }}Sr"x82]xbxʔ{Su/_Ԍ31jn96Սi姦ZntJN j{877@AW\44g{"z m]]{%N@TQE?Nְ% ����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/last.png����������������������������������������������������������0000644�0002322�0002322�00000002133�12061426047�020515� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��"IDATx^]hUgfvwvۦP55b+MBT0R4W⣏BRE7}__"T D*mmn6m2_=f]qRr=9̽<:Ƿ:Ji9c4ҍw-{pc(X!ie;;Z7D{OY <aT£kkڞmY,Wʡ;o̜^ `f XJ?K]u;+� �T!&3�\͛1Kݶ>,`� 4�,Á ! "1)DM΢P_qtґ8}ep< Gvv=3c@֘PBj:Hxoj;op}o7<ąrO\�HJ1a>gR~-W!E/$dކ+B0-AY hoNO}oMHR@U Sr:O/<.?A{WݷԌA7q"#@N3T uHg)m"H%�(ZU T_;w3vN`U�Ȼ %U|A'J?p?e[QU0geק{8<br?CrpYڰL2t*ƭO�ȹܗs@U%ú{j~Br.v&禒k":' `~_6 `h r%1e'0�ze^*#62 τp)/[x\F�| %R4~~M0e4X@?GM\ӜOl[ @HsdEu JɗLX.i <6 P`(;΋E�UΩbL0ybSX_d� TH|T/DA�f%P5='3֗|9guW P0rC]"UBL@� $} Һ|^e7�:yMF ����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/ok.png������������������������������������������������������������0000644�0002322�0002322�00000001726�12061426047�020172� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^hUu׽^h2"RڠXT-nAPY,*ej-jl↕dhfJTˆ"\":ikܼqӛR\<w?vϹ3c:'4ϕ ) y=QPC`S%0@0N+a|6 O<b#zP x‡g3FYD 7rZ?wk,ke4& a ]YD- k͢mEV[e%%(54\ VSFJCg/c*ܬ)h+E?/6}99N^r%(YU 5 SX[V]=cq|o7)S.]]QWj&. E¿։E-!CHU{MuǬYjW'[Jh X7V,Sz*ů1vVfd/<Op04D$�@z_qe;ky Q2X./25}NA>AorAlc%G~2[αC,+_0_Fŏ.Gq:ZC-ϐ9SrQBaםQ|@\䬤˨&vj2gHfL>.F>)#709σ@9~ìOƝI~=r@(NKBҗ~;~zxeq>2I?d=<A`E2DL/?/(&ΈtwJ'7 3!jQNI XvY 2,(|Mg8|C:�ywޑ?ӗg;M'čI=>YRE=K0Wnb 3e(ΣbrIi<)vᲬ?:,hͲ+ߎ%,`i����IENDB`������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/record.png��������������������������������������������������������0000644�0002322�0002322�00000002120�12061426047�021024� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^K\Wƿ}sUxqx B"҂ E%|0%( 1yh^*yjZɘ@I%̄!}HTK6 :N3>3/>f|^fsWŨb"Yn=~ wXeTo2 (;qBFY.Rs3/]ǣFn"Ŧ&>irߙޞ"rez eqPUpJ`mlD+,]44`y 8~a-u8�L*d/ om}2mzGF"<EUi]$foo77 x !'`Vg%%wƷjkf7(OQ1IIH9) @�{ϟq;wޞ SW咱NKUon2f4f"> vwF Ơ򩘻$貖<ǣ09Y((Y`(}8”Ae2# sϞA/gK3t2QK€L7JK84a:[p8 UPky4y /`҆z i='x&̟M<(*\x1�gwޠSd6?D՞ |ۛO pHKKǕ@�IȆK.)8zgwϝd[[LO%Dn2ձ{b_53tr@&==rBfZjHh=`Eng~[W,eyy0.L,?vv8t.+*:3}cxݞ@Ck| PVkjɵ5cSVa7�Ͷ)s?MM%GCc:+�,#3g ##``F_@Ci2#jvO@G''+h����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/left.png����������������������������������������������������������0000644�0002322�0002322�00000001522�12061426047�020505� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^]H]ǟ3;1κkRJ&RJ] (t *]MWIQD{t﫫.*m3YEo39<}1[A!v }tS5��Lê{̀@i[>|Fz P8@E%_:\ Ķ3, rELFcIbJIxY6.goTr�KCW*-%cU/m՛\t˲]|?oURćiBp+?b-*)R,xa<J; Ǎ =*J IhxSn=s%)X A1L7r[j;עm b�!SQn8A^dMLR\�.p/WUi EȘxuu :<7B- 0+wq/Ki $0K}ߤ߿_\0䩁T2nAi鹹wfK`h\H(Np8U�vwd3h^L Dp4h12�!@o+;)%�!xTFtf,3v+)-lD⠣U0ʼn;`rGФ4n`5JI/ȝ;|+pJUz> /@[w)0&m.EόR;tryvA%Lˡspr8G;:?¿BGhj2H4L4?cG-,vøU����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/bottom.png��������������������������������������������������������0000644�0002322�0002322�00000001762�12061426047�021065� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^W]hU>O31i-BiPZZ)P"P>IV|7V "BdtٝM;?;s\f]C1"g{={,?_1$"wpn삻V-ۆw 8&( HEi 3VJږ sKb_,J!)qh3Di?)ˤ$D8@"`g*;ORFDhl~G˹vn0 C!fԸÝ ggX;/vЃ0:P+%%ܻu[~s(u1`RYu~xbnSo=vV7jD!P-'[NзoSAA?<O o]=[\' r3:TJy S`~>SR}vXZ4:$tJ7sWKV!둮q%v/r-`w&{ (8ZyeslʼnW" h#uDhU̩&Sid=7.QZeO:'#h G''& ʼnJy�x>m&w{ࡧ*??&z_:ջbL쬛8GKGx >vyoV0lSkc'[*Oߗ2zK1RI֕Ǚk:֗82\X'<dq})�Ufl޻h\ϊ�AtesiIe t:Ԗ!2-%P_,%8IwCK 0NN2ҹFvfkۨbَot'8*V._6\_`T%xFIARAN�K^ ۆl����IENDB`��������������anyremote-6.7.1/cfg-data/Icons/32/info.png����������������������������������������������������������0000644�0002322�0002322�00000003651�12061426047�020513� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��pIDATx^}PTƟ{ ).T1 F;F:t)ӊfdmS3L:jbG1D Q!D5Bkw}9`߽3?ܽ=.YY{m;r[[WoӣӞi}+y}JB+L~')B|l}t3׾޵:zR~(Ģt=qkGvK)]-q%僯\¹KtUpS6 G6*�o[x‡6pU|=�(PQf"cvC 8~trfU\f[ 6HQ (L\0U Y_Y�v׺޴fSK@S8;`UrsԅWu4~٬a jsw˷q)8G\ZVh2`bQu# W Wʊͻ?~!L̈ FfJ !-1a$npv w>*[j }OxRRvB-؞Cu& L&M zi67/BF ыmI^#R2J$Gn^\ _ O  I<)I-i{bZ{Q(]V<=] oX Lpqxճi%m2-gT0nEpw*}ڄ?_ J0澳y @P]3Gť.>-2 � '`Vq1,Iw;,tD$qSV^k@LT.Aymۦ[]NfF#aQueeN(l ܴMqg-[=2@P%�GYqA|&e0f?/>݀ us-9ԧ hACmD_À�AY1`p{<?Dč92>��֑Z7{e.ڛ P54[wR%QK:b_{Ml=ܴbA\N5m-̈́:<Cyuk.'|qpt{Y ƛJxP�~a6�{gS03Db3AA~߸P?N}uS>OלVT/y=^ǬL"x<2Adw|xբT64;1Ypvw%-!ىPG /.3$B$à٣ ÌiJ*Қ4L?J@Bl= p8e;N\fp]r{vpأlx :DZkYzUwkk<̌  $Lzm;^<ÌƆ[aM6|~TӘK2JM?yw>7&$<X"&>?5/ÏSO_[Vv/bBAŹO"[DwPx2c�sZ|8fBR\(zGQf獿{v1�Ĕ3 A-,}cs?bYZS&6<B˝>t cxD̈!Fm?^-ƍ I #(ffc$sh=gbA4@2ڋ]/4G59e("G4,myE\olo~yˁmu[ h[Ѱe[o1|"Kay5`,2CY.1TB&<K_1bTgD^SDH ˀb0>S\e)����IENDB`���������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/prev.png����������������������������������������������������������0000644�0002322�0002322�00000002240�12061426047�020525� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��gIDATx^[LGgwk{&-֦MBH) -D @+MD*1}CH$'1-)ᡂ"ZTJls)UFgUTQEe3srI4r1 ^צv59t-I!o6)+}XOa_�ۥJ(`2HKI(3+q0=zbh8bZ-Yǯ׽gQff;=;ji8&3);;[{#7DsGm.WńmlRܢSϕ+xAЎܦp TXXaC3X@~/ x+aFFe9A+iʀ?<- 0@?bcc ʊ- d+b` c1XQʏڮQdn=W";�g' & vӧPxEAnjQ`%P(0M5΢"nG~T< .@(tܯzWKKyWY &H:@Rjy <-&S瑬v@ϔ V@AH 6?䂀 L�+X b^<˒"4DжSp6>3UXDjQDBds4ݠY\H$QSp ׎W}szkjiq*O9y?|pEoo:]`ZD3 %%%˃ӓwhm̲Í,rg-YBUVVҤ)wZz# &0̰F?iթvGq4nͿ'$ֆɩqo JK}$IS,.A\Z$t=>>nBxQ嬧׹s,qQ`7~hhHw}lwO' iq߬@LL YY%A ;??5335pn)|I+k؋]>@߽fs%Y"yB˞z:ꬆ~mƏC‚80؟B@TQE?iD����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/mute.png����������������������������������������������������������0000644�0002322�0002322�00000003202�12061426047�020522� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IIDATx^VmL=߇QI~LD*]M6sZͤK?-ebF]ź֪-U@vPc9[( A༇~~K$3^o<$uww/qң'Z;R{Z[[m[:{F#.֏9w wHT? 9񱸴Z^sS=5`KTe]¡fAg C0޺u1Դ/z%/7g?. B`D[[…E*+{8ҥKP ^l6QHl3Lf/p'~"y*Dgw'CH;>˫7($~4�Sy ^yeN4x s x>,u ##l޼|\և@/ �4 Np9V\dY*e~CzAj �,:u'u! aQ4"4n؁W~rÆ O 8n|xC`73Pڌixn*d _/_*^0;;iSSSLU@THfY\ EI!|)xOP!34va ǓkD"0{{i < E_C4qנj*؁_YwVqM�,WF[op"[NYO%I(qS$?Dt]$&J*(@42L@EMfZ,dF;ۊy)0M@ͪĄ2!J-Tu1縢 Q$(1dRY0Y0\%QQ22dBt� 1Q #q4,8z :LY#:ݽ{9t*gr&79߇d pB;&p4)Lo 3@jNmMH ,h񕫗I_jxx%V6cPD5! nBrf$ l29! WW R|ę4ߣ̳OpѢ\n1Ȑ  .((amۍķs|cO55}"څ_3R)sȂ K(ʦ``&D˅u}>#`L$�❭bk@Ytj*++ (SBtE:L;20DL'g:zPhHd8~zõjE<u3@ F4ѓ;YM0-SSS0jkk5]g333BX,(bA+g~7v̵(TYbbޮ.%//d4 4"A~O4DV\J<a/.a@qQP…O.5c`w]RêC?mv% Z>;"}o;{M~ڻgnosO<AOѺO[Kmlld?3)����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/vol_down.png������������������������������������������������������0000644�0002322�0002322�00000002753�12061426047�021411� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^V[lTU^̅vV%gBJBFcxWP_D*DMr)!-)ޘ^ҹϹx 'ɗ='gf <{Akֶ#=Rۻ<4f}ˉ#zΈsrOozcKOU\X|>25J+*uzC9K/%[mMMCcNu8�aӦMs#qőn}?Ap8@---ͫYTQR7'+ޮZ600�P233@ x0 p7H h_7{?Agw'd;X Z#Lf3twwnq%�[-HVffa||(ȫ@]zI<Ztt*ݧIY WVV6\\|g<z �-�Y^ - }04-|8%d^f&}`2@WEPr]肏>{0w%AQ%6W/,)}b{An&L{y4yi <lfp<۴ �e$R \`0ps4*9H&FTJ*`k//lOɲ SIeZ!Yn Z"Z ށ 4sA,E`FX Da$a0$(H6C#cHw 0 BdIV �i Z H%`"$A|&ϴ:@oh% @2 8H�( W<ɉI#lT,�p cK(tp~>|3>;95I`Ec0Pq4LfLLp:u;^z$$)JpMBAL}T2E7d_|8+`EuԾ<\3R~`0tQN=m:H7>V&Fvn0sI"7nH4/> Od2�^x6La)hG D"`$Y5U3P3Nʀ?êO2u)=7oƵQwZ%Yn,//_#fdK;57DDbeqT ; BGF_zʈdf/p@W�b67J$-LAPYYY#JF ($,p3ۿޱ0BAEJE0+hHD�cZ{BHTE$}g` d;�Q rrp|{aނ&A⪟:z5ZB!�uj}foaX%7~7~%;k__S 3^+XQYSSCQp8&Ŕ����IENDB`���������������������anyremote-6.7.1/cfg-data/Icons/32/exit.png����������������������������������������������������������0000644�0002322�0002322�00000003303�12061426047�020523� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^WKl==`{cX"D�%# v@PEHDz$D`Xb <ӓ1<`m|2cxzfrnti=JA9UuWߪs[\.M J ]rgO{a&Rhē%XIh=w</R)hҧ{֠TE"Ʌ翽yC2f uu!1n׭nYءd JQ"? ~>)ʛׯA }LY]`Ut>ۙ 9Vߏ,J̝ĝ;qG(6'(EijBl,Q_7oֆ "+oJp 5]Ɯ#:arLX 7n@3р@l%Csȑr<K/=v=_,'w1v TX#T0!AQӉI,tr~rٺxO!N LAqcYZ*Aye%ӈ{19x2p*d /=#2_Dqen|DD%tXǏɓHRy#H\h_D4MqzCťK2*M "}gH$B!`q;=?yĩSp<gsT4Mq*!NU<sFܝ'*lc PHx1 .D6{k - 3S wzvL1ȓ+#"~p޳gB.FK;lmA5i"+5cXrVN ޅUwUKމ˾wيd4+Q]B Z^Qd@W{;*M/^ 2(Q }�.jmC@)p}b;6͙C$TVطo,dw&OC(z,1ʺ (%0iKue~OvQ"|_ƳN?)x>%ZQ8.zyUc{P*7E3ĸg2sXp0ꢑ,ڻ5lՕ`}HD|xɹR;X6]۶<~C1,zB@ƍtMr�w~!K\k7{6<8LjÇs::^}{V!WvH!? y0 E p1/ѿx1"#2Vi7#WՕyȭkٳH],y-UUK依0wB !Yw@``)XL ?ƹxϷn�+z'`| &t)_|eX)i:ʃA!×6Rܽz5 0fX~;w7KS!R @I#,^Rt-[L+h+/. ᰗy~r2A{ ";bݭp/YdeݡZ \UB5Kil4x^WN^Ċ '6º.%Vȃc\2�?@/&&F0Fyg_VȥNRDꙭ*O%rBDMElj=Ef����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/folder.png��������������������������������������������������������0000644�0002322�0002322�00000003577�12061426047�021042� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��FIDATx^{lU?{{oo便OZZödhZ)G1$cfH|%N]\�p @y9PhmRhP uޥ'cI>rNAo Sfڕ8] X"+-Pw~ԌUfӠ˜yK=r^R)[郜,SM 80tKgd+).#x+e]<3g젾A瘚omؑJo]~z_tFfBf"~�g*jrɼ>7*DM&I[bt0X,I_iA9^l>V�GP7M,JpB+f^z:7yo?*آ.dKK\&mjTu Š8k?d\2:kRZhB /fXbF?A7nFGC|HWͳD (+�A ObO{Y0. 9FoqiV&Mer &NWj)R@g V�:wH4 xd Op' :FX�`4#JUn|] !! }㘇I<7!KM`fpXvtMtj$?8"*7%vA#'Ι[CcKCtٮ 5.(/Zu Gn YTMB@躂bT@  N,nzeHRܯ/5<<8FFPv]uC3(7ZB5`X *wڸ7շ= pn. ^C5Իx|EaIPh~Dͪ=Nw" _9PkSMUsuS%jC7puVʅLE@`OUX}[u蠏!.q4 XKR]-)f˓EV㳬IONДM8z1Sbg\cR^oDmymvvQ y)?E(/]- 4{5&hlK hjY0h0O1>GZm J+e_wy�Yhڰ"@7^38R-v^5Y>ݫM^o/@[]ݩErg~zp5u: 5M "︦ 7Lch^-Sr +ѓgw6:TfjܲPLf #DsBWHՂihu k7]uϬ+ί)Wu]TCGNAՠ + 43<<? 6 TbKI *lZPV/Dbʓ[Y0BS$!BZfBN"jHK5|uJ햍sö2`Y[v7~|6[1wpm=v# we#[-'X@ol9/n(?z>>\JU`HӋZoĶ5u_lTncu䂗3\|nޤLwf!QRRV^8[Q XMF,%Dw\䋽>~ĕ gBCeo1Ё GxXQ|v{cuܛf勲Obӑ�:P >rEzׁ@>b<g'>o|s(XYKΗ�;tY w;<[h   k&HI����IENDB`���������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/pause.png���������������������������������������������������������0000644�0002322�0002322�00000001340�12061426047�020666� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^KkAO=;cf&3!! KwwѬEB1W7I<PC"1t]^E7ܡ]T@3Zϴ!e.ϕ豓CEl[ۋ/_=�@N\>R^viqܻ\/:q}1E`[7g]Z3'Li_,cԵOfXtCf6VST2BV< &cR�)cdX''[ijy[O`kx9w+ǔm;u1!) %=l`ц�C^Xjo| Iim@9RJ(B0D_?`Uj@;Mmqc#2;Z((#J%Ja$/�XS$0oD󑔂R�RR!5, c6ICy0Fðp[hK3Qd1�jZz@9΀W44+wW )/`6E"dLwC=IAmm}/$Kbq`3+[�9ml8v <_YY {~bct�C#/Ёg-)%����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/favorites.png�����������������������������������������������������0000644�0002322�0002322�00000002553�12061426047�021562� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��2IDATx^ylVUsu_֡ uXʖ aS2 D-ˀJf,8j0#'HTf``j`]hi~mI4_x=\B/sx>R; o @ء!U0U@l%Ͼ`=2cP|ﱕ%=HyhF 96PRְ Nh2lA9kR 6�*6E8 Dډsh0G3rFDN �$�ere7�y W![iIwF $_"dbDH&;;HUA i̍lu/�Z ɋ.Zʰ*M hzB{]ٷSsJr�cp󘸉�B6$$TR"O>i`=o�AD 8%f[5*?FS9M!N@(j:C]|ZwE٨he��i@Q (5 nݗ*HhHQYV{Y�v/$%@MP pYsO%a��{ljhE27';x'ц^aНoBH ҫ5k '{xA mqE/?44ECP{IYP:=L9mf}{4fcNfS,+ʂ E/d9jzRWD>> 4#6v(PhYް) @K>T3he-\>@ti*)-m@EAqqֻ)oZ/\.prYV5: B7=RE�}L@x >U1a3D=e@\8 I@s"S82d@]NCVH<VA}m\n@�[Z$H`:P*zC 4YOT琪+ Z">K8�ѩH�iʆR\vw{~oRϼ\*"F@�$q)��{5#iVhR{:4s;^_8G@9 6 H#\rcFH BKo0IS$p"�{4J]D)B8 (9K*BH"Ώg!N֝OÙ|ldH*2c v#~f4r, =WO/@C#11kSX & { ;×Zq����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/vol_up.png��������������������������������������������������������0000644�0002322�0002322�00000003426�12061426047�021064� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^Vkl\G=slǻ[?vcZ?Bq+PJ!Z$!Z -4EECRɃ8!Vb8ڵC"Ȗdwǽw N۳:v|3wq;mڏnxnϿyӽ^Z[[OsF=]Fۉ=\Blk5UD<xPQ8{++p8&"Qtuj9P1(/(%BxϪ{70qxo܉R=7)\. 8+\XPi?.J%|`L.or#3'<'nPd5_AĦb˅f#pp=| sLeX?\mPYغh? q,}E$lhPn7QPXyZ, {ݚ2=YmVUNQRnVjRō7Q55kW/‚�2;yS~VPJrs]b\]N[TJD4@ض'TD6.z!כ"�2(ʝ5ի+,(B##Î>S2ilY^7χ.'QiB/@3d}{N@/_ZwWeWXyyJKH&QLt 4*QizSc �[f] PbA(-/#aHRx'eĉ L$(!F2#�AdCo]PPp?\zUށYVk+WV`](NT:5`0e%BԆyĨfH\ ]HL >WǮ%C*(7eVY kY h) 3ӘMB#1\H@H&bL33>JJQ );Yr�u?s.>6 'I2Rxf>]U )q(r(%k[�2}GELD~cdxXniD;faEY~N4?N$ c @7KCMOdxdd\PFHw4nZ]IA4!rh|{"3�`{5|'-#a4 /jܼ\. A0;7˯N3*,4~=ˏPhDD6\ $ A'C2n1#"=馌NF{,Edl�\[:Y׿tXGX58?PSSsy )&I9M䉘wwW!D- w5p M!Q[55'kVOdtp�voDJ$d#7ږ9dz%l*fԱѱ.~K5D�A=g<,lߴeuBY J3ILxhoWwWP^ɚ.{!c 199لE)7s=B`ldzDb!pG}/ŢSW % rsrz:ʗقŁ-jmCS@ >ZO>iqEj/ǿh7c}ݹ'~w5g~ȣ.>~ ?͍eٸXp ~WcGG;?\/Om����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/click_icon.png����������������������������������������������������0000644�0002322�0002322�00000000221�12061426047�021643� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz���XIDATx^ױ 0 Dяe1 d $baeĿ;w7V ;=do>\p~ @� Jj\7 g����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/top.png�����������������������������������������������������������0000644�0002322�0002322�00000002106�12061426047�020354� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz�� IDATx^WOU;� l))~�J0UĚ4F[HSI- .Q_5}0&C U苦`HL4kt[>",s0\72%˃{{93߃! Ǫ(gxD�9e]׭ |ƩT z*?;{Td }XZ'p2 1? bſdž|<@N"*@p`D@X~Jo !! `c!6欯4`ʬ(svSasΦzPmzꥷɋi28(=Pnk}@<J(B1m#~꭯E'z]:!BCHqwSo^3dZQ sWE 2:eCD/G:;_A&n. ؼ :um`n)IA H^ZG[Bk̫OzG^Ide=S-_Bkˋ'._Ioe5 U=#/lO@9zFj*2yN kFi[+1w:OW{=?oo3s+ֽVܽUTȈ;q΀=ZK|:Y8`* 5 ߯ "5weYƯ;t Az@.:s9l_a7}tW[5h �-@QıtEfR xd4ۧ,iQ'�&,psȂ^Ǎɗ"'ȍa&oCr,$w8v@i. p{tBUõ�fVK�+f P+v"Y- 0G&e 9*\x4hrHCQ !jR_Fw|1M8.'s-1b�ii=ak}&dIR3ͩTgMN;8lB7p?_ߢ.ڡ����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/minus.png���������������������������������������������������������0000644�0002322�0002322�00000000547�12061426047�020714� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��.IDATx^푱J@x)7R,VGl,,FSQ0aB! 63;qqOCLRetu!f``wTs3k8==D p|EjP8%γʺVEbUkzPAdYՖas 2cK�,`R]/dV,ό'I&! fa3v*iI^+w[t@B#�AHr�PdD~ )k,Ё8g����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/refresh.png�������������������������������������������������������0000644�0002322�0002322�00000004073�12061426047�021215� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^ilY{^$^%H,QhJ4j)!!BQSRh)RK tV$P% *V-k* qKb6%N^~^2۽WFcDz/tg>̜9={/S2}rRK �΀XRp}=zC h틈e` mڞ~K nlX `0ABJeXyx>}g߼WL ~ݎP߲s}"[yeE A�kX7„GjhH83]-\S[Ur`㺆jfW@˘y-55t΃`9i("KȌ!9eeԸ,9?N?hsʲw~z Ϥ"M2yNaAdx&A�IF-UPD BΕ�l6Ņח{|߇ S}d] p*5q48dw sZSZ:{s]uEqy\`M}Qm'KH((P0@͏ӾͲ-Bw SvF^5Ξ04\RG/CiC Gݰ @$F]^T7_ŵ Md, tjIg=ؖXZ^^0B+BC8[Ʋ-]xK牘}GVS{H饃>Q2DS4RCRNq flotw E_L ٻ (SIac0 .#ڶ5hEeE{ںf ߫w50<M@ *1ߍkH4ZiYP{o_ �6; [3̋lk_ڸtA%$�B)?ѧ~5$|_@ Ł;;[ΟsId0)s�PkW4&뫹&CҘJ) ž}l|i6 3CJlWË}95D ``Gme)o3п:ޡw44=ū$|}ZҳPO蹰,lCWT` Uoi@/><!bR {t$["X ?^tpFyPexqG^`=*rҒJƤv+D8'" (^A*V a,[[7Xig/3e=.uF3EŅH\@eR!*s-Xw8Gldrˎ)O;9^u.ToWkHv-0y~ @_<!s2DCBwwRj/*2T:`jcUUeנSvd 6' d]m!Hx z.`_gUΫ@jpj$膝|?fXCC Xium qy ?1 q?WϽK\nR/Ǫ'B3+ %UBYR l=BJ˟,>w֋c$S/Nۭw?gvG"HA U \-B6ruo80k/7+]o_ r;ԉ˙Q�˶MAMh$އH040'e:\\(I_|vcGo1͂MkYTH͚gZb/B/u/ptFεuwO"q"U.+PIjk45+5WjjYoUn}5?,mnU߽tMw$*[ZS)hL MLcDF�EԈ &G9�`gBir"" ̡qLnj_"l(O����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/right.png���������������������������������������������������������0000644�0002322�0002322�00000001543�12061426047�020673� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��*IDATx^_kcEƟd{Z6j6M? eQ,a x!V\VF/BDЛPě,{iM'IΙׅLSI 3g93//-y?4pc:8"0ޢ'j HDv8~ w4׀t~y֥x s΍ X -<Te D:Nwz/~ 5_#i<AT1B]U/ߜH}wV D�UTȵʄ1>$3|Ӟk/%/X Y(dZNhxlҭ+~gj@2Dk8UMɴFFΌkK} Ah @;g ~Q 2E3<hG*ŅȌqRDhb֢Ijd8"vqP٠ď zd Dj@u+09&^u mf52-z/QKͽLf:zcQ6WDA95 q0nT"͹5bFl9|WC*Nuz30$bј|`Iq=|Z (O�aI9jD\ތצ4Q. Yxlcqg{72D2T"ױ?2)Y2%Ť,T6GϤ(4W2h(8G ق_=“f!~�e,)9? !UnalN6Αm< m7px����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/file.png����������������������������������������������������������0000644�0002322�0002322�00000002362�12061426047�020475� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^}hUe?s=wλ6v욛n/2 LI".FcdPP`AEh*J7Y2Q'/ƦnMnKwty/|s=<G(YO_p$"[]cjU6A:Vʰa{(H$!Dʩ$$5/m5;d<#F+JV$<=e[ EIPRaϗMUH<MVh@1V׺i!SLSe(/�]>ixsB &'We (њ7�Q Ri: *MMg+%2%nW9�JVIᓝ \ZJٕq!}_�B8 3kנ,ˁq`I&9Csf] hc)A3pu0 @w7�ѳhְ <6>@EJZ@bqoGXvk z_'g]@ W4� ;T2 }oQ�.=7Ķ~.XXZT#s! ;M: JCξ~"1BuuL)*h{~UM]來ir�$u:kT<AhE�a蔯,F++gv|}إ�WGwƭ]k_>Cv̊~U`?<% _m?LN 坩'hs4݁pީL}ly#tbMЁ j)ԓzg;zs' A@y{$ `ژJRIK>^J4; ێR)@*~a?OֵsuvTJ@9_E�R� ®p[VRN^EB ֯&UC^fl %ZRL02{v֬K'_ܺXk(h$~E/&Oj!os-L>M^iOL{H{:/|ţR(pV)&0Dym+'r&@q2L}5j="ZTtI Ɣ(_P�-cqVA4qw�8I e٤~ʲlo3Jb[3kU�y[�q[&lm����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/forward.png�������������������������������������������������������0000644�0002322�0002322�00000001737�12061426047�021227� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^[L#Uϴs@1nn{tA(H ࢖-7E_ Ƹ^vqyX.M4ƒ `@B0l| adBt:9U4L;NQ2(Np XM0K6eYY Y(z(IRb:Ʉ$kۯeftnn.|$I պ.^*u2�;d0\W _߼qqfj=t:9// x^x6O�씮 ܶAEO1==~xv2~.8w$xeS)tUޡp4jjj:khhPEp=̿x_ccga5�`!2ǚ|b8C ~00piyA)K_QT%FvlmmF`x<O^*oۂ4z (iy,p:@ `ȌDF ㄎ[}$:B荪"}8-CF`xd0#F;_gy!+@#Y{(Sр7ֺ1?�A:Pי3%#<<ĩ^mi*mC O^_/,,P\ɅX?c!D*/tZ^s\{ŐCy`,T~y/ch4T5J֦eyr呢tme$P,l&We˥p8Χ9S@<?s\4==x,˅?Mw~IKKKB*> %cwUO EQ#uj#Gw.dOXM(2*VѬ����IENDB`���������������������������������anyremote-6.7.1/cfg-data/Icons/32/first.png���������������������������������������������������������0000644�0002322�0002322�00000002270�12061426047�020703� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^V_L>.Pc"bA%?>"*Q_gcJM4FHCٔ@.,,ܽt;+)˓;;9|݁*:@i`fY`f $v>=xᥳ9>>&0VH9<`0H 46mpi>UT[UraW۝`x%mQ]ťe �K-q؂��Dܶ>ЯýZsmLbyf-\Tߔ(h뇹}ˍ UQ^LR.DQZ$`ZqZ>79�CP;տsu|snav_=פtHu֜'Iu´?u;'^xP3l'Ȗmm(9ku� 8 Y(?:t\~5!-.1DxEqIbT.ɜ�Φ\pc3+8&I%D"0S '4xaXY 29Y0[2űUe;>tOΆ 2fl" `ڪa-RQphWEO ۥ'AUY b'Q=MW {*3Tiq)B[AFAŁDk#g^~cⓚW h.l�LS5`0/ʢ ݯ/0/S&"]IΆap  <Q`r7<>S<] ~JQ~l'QZĤ#-DLLOĤ+by3|H$uQqQ’F e\'Ca\yH+5_(;!Gڕ KݣS}GJJK� xsրد = b;?Z`܌$P[z]gҲ iO00"Q,PL հ*N�Ț;MQ \_v�@ 1_CbV&b<Da 2K]OvMN2 r᛾*L9ӘZ�Ol &σfKf~�IM}ILƃ`_� "91s]& "Luu.-@H6 NG)O����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/play.png����������������������������������������������������������0000644�0002322�0002322�00000001655�12061426047�020527� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��tIDATx^]H[gǟ=q.*9=':;vS:p0ƏhK.Z3Zu7KYhatjƂ(q x3dhXQ +=90Wk,ɟ<'<?>𲵣1__^xSQAǮ]ogcAQ d1~ZY])|\\ܻX@x~a}}윬,$5_d-r)…棷KoiT)ˋI]nZ{7c9.*�:(Haf먨% T||;| <6:ǔ�!Z0BCCC|iiyl255Dz**GMQ<%G)p,Cspn~(wY/� 4 ofE}(WDL&.,}g6 ARf(MաCC@$"Ȓ f@׮~r,KO[[۟ `0x%U CD@T@S-deZx<<z~111qyS $%%B6@� Z J{l5upTuuu`S�06eF`(~`$N-g~ᷟ+%%%^B!F C2$d4d!D݇w Bj<Ȑd0 x@EP7` Ձ}oKΞ[YYy޿e(& =@ .;?�] 'o$'L7!!t3%I݄1k000 .>pk&�`k@8}Fވ!5髖,"T$L揓rc^Bd\ ~}PY F.yUՎvEi?����IENDB`�����������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/up.png������������������������������������������������������������0000644�0002322�0002322�00000001446�12061426047�020204� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^MO]NPvvƠlŅFML |3qeBH&B.|TR(SJzg2eh+t[ g{~3vP"y+O�“_>- S$&RJG#a.3n.z O<.bl8_LJ=~]Rcmnlz +-0Y`j6fnldJܫ(!>!hDW(r�z�i˳Xަ`\i܎%~8n)�imyм\eHCA<#z%�Drv).sN0?M&yk;ȬwY(NnlX�xy}4*y6FD:R(> %RgWGzbDYv/0ޛI)�Fm@ IpۮΐMl4 <,pa9;@R8'/#x54UP4Q*>~^8烾)ArXdײ ˿)q, }E`ZB#dDnW, oB}Cm@O�H;Yyzb0t|bZ Z�0bUO釰7`� lN$U):n/ @iɳ4�"C3}*HkZKQU[vA]D! 5fI2b�eٯZ*����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/plus.png����������������������������������������������������������0000644�0002322�0002322�00000001125�12061426047�020535� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^핽OSa|)$ QapэŅMMtv/@GqdR8"hT w^8<Ins?hM&!cW@\`ln&A\}}bjRNqih�媱^`xYهl@p :St�&A! ƮM4x7HɡKgɧ�+ũM N$Gsoncެ#~z5KMP Z]~A%njU1f5Am-Z+UȯV!� ̠&&PJCS$˟ CPk V@& 6B)^|<.ܜ8> Y M [Mi4,�gs[!2={/?N)- $kĉ @] Y*wA B.O&Mqe\@l||~IHB];O%s#9wڴG2"����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/32/fit.png�����������������������������������������������������������0000644�0002322�0002322�00000004277�12061426047�020347� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��� ��� ���szz��IDATx^W lgglq/g0ؾG06Ƙ(EM @$h"V)ԨMۄ&jڨETUDMx$ m I a_|wLw1)IU;|_`Qc^Ň� fw "9`a8p�:;i//-Zק!u~ptZ)P[G/<s籃WUB4h.4¹x! k} y֚oy?Y}{mQ"G<]g v 9!F |E(�`VSN˸y?hZ@MmMvnng3HC^.!eR R P*H7QD r`$ qtwwW>uz`lٲMӧ[Wguù-&h$y>Q)1`(9%Ož>>{1 7!'Dim#6ٿoK"H%uͯ_JIoZ"K""őuVwU_T`sfUgd]Q7η]hLD<F)?rz| ˲L|fY\~D�)*@=Ѽ`iO6mڤ�#kVI_`b#oN (YzR2Jg=W#-SHq Ī^'LBTmy<|J3(: I)AJ yRј@</aqqÑS�E0ͥמ@,Ȫ"`9)1`] 4CU)eDYp  1KJ`@|uԙs*%Y!( +,b0e$!fF~ƌ�BE"!\[LAЄ.{쁰*�jN5'ȓbLg,cڤSk8"Txɋ GcPT "1lbNhdZU*0{?0*Ư fOKLJ8IfTPS|$̋=JĤ8�@PHIsGsw,r': LwgtWQɋ}a}4H_AA@`r e&Td!xR[@bsb cc9jA6KW"0"$Pb* #"S�80&B  MBJ>Ytnw4ͩHc͗<WQ X{mI@ZXFe ^Z.CYJ�A>\j6щ>$@Iǟ6 +7+_mMȽ wN�gk!&M7(PRY:"uopR 2 @O~ؘAùWue^ɸc3g>ݸq=dqßo dpgG@ f@R u zoZd֣a_;FI^N�倕Z-<#&WWWFEq?sT ~%?(snY8T$PvWrA+p;GK^Z|leaW~Nh<kvT>PETZZRo?ɚ"KS^˅TAa# ze0u zVgf}^nvueE9$$T3 -7Zv{0_֢w,qL10ݷ:hOo'.t{w܅˾'[oy~+̇^ܶcUeﶶ?e2v.+XZ ZMythxZڮ9c/Nj(z?n(_oSyN�/stʄ8+L,Lw aN3L&cc, & **VBfڵwIY3r;L#La.<kzz(k8C=v ˖!_PuuSB@}}M l۱-71sT3-g+K$֬[G@_'"cOOLo,/-8gOÏ-Br (=!.1Ag}RدY;R9����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/�����������������������������������������������������������������0000755�0002322�0002322�00000000000�12100017560�017121� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/down.png���������������������������������������������������������0000644�0002322�0002322�00000014514�12061426050�020607� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^ @@o7хD=n�ёZD :i29L�������& mZtwhv>RgO{_+u{z}o8 2")Za^"80(X @ _ ðaR()'H�À'6 IjDr8y38>o]k9.ԛc =33Usz5EUD޳r3D�>NAkQRtǏ  EkH~J�B%C~H �`�@�6�3(Rf7F5x^p }Z+lnka u 9K%?T\w#5X,; hh0ZIQ[h{vbt AU2 ?$:lf"@DQbnaK9A̵'p޳eSv߽ ;oX_Vqkk!�BY$dY됤h�vDk "jncy@&J!"Y0  rqHcDQ)RVШi(@JaĘ@D`v)u|%T �qbz'm֩}~L02"(02EȆk,=Bۆ`"(-:CqaOl rE= k%$2d U="x��" QUE: Lr46]"*Or(c.Py@i"C6nT'@dj�F2Kf?qj.:+U@}E0L$Q/2�nv"8%Y@11tBD@Jq$ɒKmA5~2 [ Z)&!@ƿB܂Pyzs:VRͰi4 Mp3UqN:nrq'"2) \FMD�Ui%4(!bjOB8)6bLl|Q B+mc^Qnz+5zяFJhHNtl:�#J_$�ZB"LAhZ֞YK(!8 u3ά`,;ղfB'|YxB!@ɤW@@* e�vM�p� +/"BBS�<{!瞊E3lDQ*ӂ~@J s U��x�I�j ȁX+"@uA 9̬B�%")J$" Ib"!9GB {E� @@BAX$jaFZ-(F^ ej5D@"2?B^Ts"�@o<Eep΁=Y�K�b mqo>RP&:B׵ֻ ܹ wlie9�Z+[ ~cG@c� u ﷤]� ‚$Itz\ K=ݧ[W/Ѫ�5jpT۶N# tN\1RT[ 8\N cxf& Th͕�|(²0&?h�F3?o*"lcs`ln7lA`ueചJU@yu<6c9\{Jt#'Њrcfc&&5]<I�orSZ<ŸXt]:3xZʯĉgvGjBHG79ܙS!\3R5(b.!�QۉZ{;?~lkG<<k+AHGnU2=OjTUfR�;ƕ1s �dL|@ <{pffegyf GLv䅒3_%lo{tI .uն^ܬ9qj2Cqp*@@ ""#?MScV#:HWμ )y؞˦': ۷)lԠud`O4u| 󫟥"@1R.MMycPtXg}X/g˲d :o+E:INaV E)&k"'\Tp}(i*>";a'oMu,|D 2J/bP(޾ Kֺq^vxeV;&)"5k*J)q- �4Eԉ9S_eǠWjXZ*V=':QRR3RE @ FXa2`AD'�(7Ťi|AX~x?�;X<x�5?wDw},#er'E~UD(4J@DYQ'T}R :3E�,50֦syY/[�"7f̯ӵ;%fi8 LaIj:rlFn V4MZλ%f>E7.̸y6c p%=m\9J>0nߩmjO!8\WK2�EkEzcVsWhf<#_x|Oqm nw6iGw~R._ֽ%WVhy c,�GJ=TUlĐrA+!�^|?Im̯@Euf_>s`o{<DM]b/5^Fـ ZkZ 7%s  ,1lRj/൐ʎNg۬,Jo"xV_U}o2�v Ow " <ҹ{_k5u 5kd`Z81 :�P~(JD�H1sg{:=㳨|-Ǘ= r$Iޘ_X/ahܴM˩V xI 8F'sn/G!e˚Az^/r[TbV ՐShE^'#ns)QYoXkɤes"O)gzGƜ|@/~zgv\t_RP -0'kn"cX";a$3CEw<}"2@~x �wgWWbc@3DÌ_I om$" qCJ/o_j6z医Y;qܬa"Gy\d�pê^UZZ{=&R t^͟cZXw$v|b查=47AE>Ppe MM̙ɒn"edf/X2yl\Xf߽, )k;8[^O s=0^#a _UIC�.}Q1}n`k_^^JҪ R״t'wvqͳJZH$\ }䤓V @<ò59kܬ(r5j@&` ^oߞٯY�kFQI[Bn "H 6HAk֘Z{�8u/?똄r?Jlvν}i":̍$IKV z&4<1_#://ݾ@,0˻� @O?r4ʎ#CH(`vϤ a% ifiNBhݚ .G5ixcL[X)w<Cw??8ǗY\ {1n7%tլڨjp`曲Q ?Y&b:k<%@N�2s/<v }1@ |9_1WS_]q/<uTu81^@{Hg@Z�)"*'D eʌ `0CsyC1_"r�"<uB><o^4@?+xNw{3YN)Xd"ZA� tv EGrM1@^!A ?"]4�%%S)<1Q=@@jf!f*2drSIg-LzkL0W ??7  v"h݁ڻKtcvT'On!4^_%PN7DuA=GD ,K֘w(Ɲ&/uiZU�rU3omV wwSo@+�Rnx 0;/c`EU6l|s Jhtﳙ(1!*2[ =ę]h?8[_ozyww뵐z D(30@R9'(Ϟ1:gww8Ѿ7q_=�Jt*>W�?�O+gkwSȘ4ՕΧiAKH)֝#( T8!")>3S>cz"HGٙI޴eUX+Gq6X U!n6S? )c-eߢBX % C\�D\+0k NV^KOij4 a ".U I�t#2@U4 �+oGuvWmpܧ0jq#ւzѠLZ7|*0Y{In-`fpyKI3ΦG96W3wW 1¨B0(*�4o@�*{Pj8 lf 3ն ("H 6u _9s!IX37ތmghg"G!,j>@}ޗQ``w?7?WU{V-9ӳ^PT%-[ a~fIǛ8'?Kf⹓&ӍFjT!J>{"(�APuCH7 nC) :""wA`E[( u]D�&)}ᜃ6ͫ=K$qWO|r&e(�6H,!s"nad ѧѬ-Z3Z)2i~Z{zz[䫆2/s#it耏gҥv}2ZbZ}_F)`ni\� )M–;筁zZi@QY" C|^5OI.~tL}7P>qo(DG(@뮱m,– DJ+�ufQ )zxYjM.n]?]<ntz@}v59M@ț͈3As;t4P9YzmC�<l^&;Τ'$3>]=h/[=e۝KrKE;Ar L�Q<{ZV;&N&Qt5$4c,β{MlMzՙ]vչkZ�x>3_L*f>0 �%:u`'*hAhNa;c,{7wʥw. ';fCV2H0z!Tɪ~fNZĚx5v]3]VAm3@94#ٓ#.Y:zҹ%�z"a3'~I`I%}Υ*)p�OjUky! 0cw ;{x& gOFH)�rQ<)1P<Z�6A[&hVE,ͭF;A a"ݹW\|kl=+ !m 6x`t}>[ Ab;vb!YPM ^DE[ѕ#?_=i1�c!H|xh4*b;H�#.oON؝`orsni,kR} lOCeAI7T4֧鰽sz(s;9ֲW <`TyBIF&G\&`Dt !)B&p÷ O>E|WK� %FcZ6<clql p>XOCiIj&@4#t=lRh|4!7͏ &` &` &pGJ}6����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/fullscreen.png���������������������������������������������������0000644�0002322�0002322�00000015051�12061426050�021777� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^}ydG|UuUwW=3ƠEA!0 gb!vW谤�c8|;X ֲ¬l%cFHSs}Mu#Wr:E7  2dȐ!C 2dȐaf91t�3 O<a9|}NŠFJ?7ſ'hbm%toͿNTxXX3^Fgnm-Qr @2hkd 0[DC�v _30z]# [ڣO߇Vܿytj}N� xQ=5/<+KW~'ևJ]co0\$Jcua>xXahq RJ]`pbRj2#66'L W|!4wa�ڪ&|nVʏd]a=q�/pkV v(IkՃk10PZ_$$6[܇+, l;I#G[{0V nڼE(TcR$0sB_f<c-̌ wv(K}=(vP(SD_/J}bZGi[_YP1;?G^.!R7{ӽF^tu{EV{]fDD)}w3XЊ~R) W CWqoo7 ]ОBŨTj34119#IO�|'ZBrĦ[tzy bB!s.E5WYֻ6ݶg>�D�wu .S,vA,A�ҐY<,]L7@1[XF?s}s5bХJEz%Syr JrcTy{'َ=G,92PJ̼^x))LbkV֬&8ODPzI(B` UC|> | >rW>�B;`R$XoE��vܱ<|6p @yAGN+ϛ>2lH >`7)4P\řcع["@)5�sDԕ.#?˞~@ A�?C`tj W�HN?DZ4 },Gi>͖a#亵$8/AP+&"%c9'ƅ*kZFH{^#8'i^c )ĄYis�Brl-`8v�JDmC?t#ƻ}L,2o~ӵgo|M|s<@�$[km1\^ffmf_6ϛXDT{> -«"3{�l(@3!^�V06lv7]kK̜`S\3eyNxXcRApY@\$ ZV,̮J_Z'̇ax @_ (1$Yn=lv Mh3>5Bb8|0:˭t0P$uk188m۶A)XyDpQ$I1ފW�fǶg'CLLU`uQ{%~v]\ЖWBZ @DЀR}Oȉq$qAXt\}p 1mp�"QkD42>NM rvNqbQӺ>EܪĜXZ(N$" a-@)�9:2;7Y�J6R�㞻K2X洃) ^F ~{y 232HgWm 406Yu^�̨Bת읥�| M{ށZ9eѾ%_ "m:0Y߹oia$ƈsː aIp`d!]41߅݌kno+hZ }Er窶s`{\{̕Wo} ^.G#9X`p0):oӝ{4@9>_P,ώz 6japփ/n ((@ۅ\*v@DŽS ZZuIR`ӯ@G'3~@=U-w}M}^=y0c'@ץŘp|bgqD6=71�\.*rGرōɩ_H>оKJot ;`Rn)h=nc,k7c ~Vзw_q\{?| UUj^{~>yz[kN]Ŗ�?_\qV'`l"K&xJQP?x ݅ēc*ˋEcyԍA>@5ߕ_K?B  vf&nba5ܩ}5ەMbVD'=դNxo&\>'Ŷ ~E8NBkm_AmG_[k @ A.@wo1GDkWk<~Ky0r 厯/w|jq#V=f۴֗ <^"L򫬽*ZD+1ђ`e"2�N")piJnLQUc%corY;,}ɞq]_\0+u+ٚ�YyzRwRrH)�XX{aL 2 gYW bJmT>RYc.UD�\~xu@0X}b]W)yHӽqdiq4v[�enϝ*$I=hg}`KөO*s Ml+@^k}/C.< >JXr$3@@uB_T_o R=m*H+8y0 Il=IEQ[= RJ$�y*vx? ,/еatEs�Jt�n҄/lPp̌tLDkBU+5\QTq%?s^8)F�D2c[� _+%%�GwOaLu]T[nbqA(k+�؞$FRO/6 zR H<jqT/4 h</2BEJ@D}Okyc {9bFÔ9p)3Z0NU|zYCn점SgNuVf%qzg*VD+х r]CJql$ a &a#1q:Lek7v  =e-Օrŗy)d Uٖ ^k8F$;`)ϊAi5k@dJߖgh4, P 8"<dQ pG_pE[n!VG=^= G1 &E&ߕ<$ip; X :!p/Zk]F#t#<7]p-_kRIa{^W82 8'D&,47Zk*kD(aoCcH 2`ILJlԪ ZB}<3SgE89˧W_sّV/|)XYWA8ft\%gj:_ﯹJy8iX\%XQBN� ՚ew,.:r3:8 汦~7%  5S`Az`$DF=̋f RJ-Vm- _l  HEybIQ459gK7CGB�.�'NQkD!Vjmlx}k؀yT�@-vm%L)" Py�˕H !Q7I}ԡٱMM Y:–*E{ )ں[<MRb�s cpS>@�2ZTc&#q0O/o:< [nyڰBA PO&qwB��O&T 3^0aO.Ϧ]㻷)4Gc~3(@.$5vO/d&0)ǀeGNz lǷ-x{HJݭ+YxI^@KGx(>'8컯�έ,հCO} Ϗ Ϲ2 \AnXR3fS'~x( `R,��0 ?.h9xc�|p]AKR=: Xs@6>!|N -a.`; f1Y<*]ľ#Νw\}[0XkтOv"ηlIIBT*)J;%{8 nBBoop ~.9SY5 ڴmN.SЌ<f12vDkZaUz=H\Z h$Bv0hZ\ruSZ%\?|w>2O 9B�򽴳$ $ΥIfkhy�Q�r|<Zn?cfFZD1`AL@\~}!4rL�asL(jԌD("pA�qT) 9j,h1 %%M[AcHPaxnddd`bbbv#E!iGRPoI s(12�J6.M:43�JJH(ái܉BYhPA(<y$K3sZ4ˣ`v@B&A&Z됙˂ӧO5cĝ�%yB%?=Y(F|T9sDX�8j% O$mNX3О@k@(Y?%HHH)@ mLyN3l?jeX77k40*N c!*TB_3`�ѯrW^N56Yjhnr~ Zs@BzւM6nrMDeN�)�{ǎ�X(k³w�h6LQH?L6C\>;  �Tf:[# -fwi E pO�԰y{NZ\#Ypޖ@!.w�b_=yF(3)V|.)d�3@W0F@? M0X~''�0 |z]k Am2MߩK0b4ΜC<>ާz 쾢?s}M(^Zv1zP)ߕuR/t`0 Qɽ%bKf ?1H%S'Pt#'tH.3ӕ.TNnZ+`?Ԫ5H[&1UުL4(t(LH%*gƪgNTւ0IMb]X!&'q97ը71O: йe$4;k)q%8O1F7rW~�}9'z#BԪsIb":LihG92X`k&I�7;뾧պ+DDJZ*D0 (:xK>r{ x(@Qb<GA璾r 76Ir ׋ݍ?hLO?G'}~gٿwHx$:0|j:&'!CƘW~� Ds195 0$1b7_̺XtQ)016 9WekO/cd ;TE  fVP5xag fP k{txh |Z^i|ܐ}HR7 - çNpxXA_ODrzltHDk5?_12V�-wIĎ(0Rk$10fưRS//z9V hJU/2 �~)<{G^iu),t^?�&?Go^Ai ^qQ V�V}O�Mlm:K>�CAl?sk2xG0&AEZcFYνaf91t-~ y|t$0C�2dȐ!C /n$L2 /����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/stop.png���������������������������������������������������������0000644�0002322�0002322�00000006426�12061426050�020630� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a�� IDATx^1�!EAݽ)$'{��������������OlnF6 ,GWU=vfgw8%8Dp\K73p.pl) 'G8Ļ?~S۳^Yo۪WXkxx\S KZ׈p 5 "4pğyFBcrt#g7`0ζfƑVQ,>XP׵O�j�!o޾5&{8.,0+Xz&Q+UB7Ϟ>|ã] E�[[[N|8GOzıq @"�bmUUziv4LA)k-ѵ P!8ao3.*^UUg*8g4`g{|s0 UAEB2Z*888G>?=c-O�[:>чR 0"Wg*: A) /a>;_ HT)p8"#@ (zݜnjX!Kr"*˂G:8w+鄅~F,+ ՐfA�D2R6\8Q` f@ [[ |j] x4#gBC@,vv Iα}#"TUUL@�$R�UWk--ex��S ٹv4l�q-5�b87TH1k@kaHMeTKGRŻJTJ/k!GP S C XҚn]$! �Jh0 UD"Ĕ�^�m Gl\9n@Ae <PM>*FCNpr"h 4Ly8- *V+-zـq䩒X �cV=^& 7(V{] OͶ�`^|�F垄N|-+) h>ae/`k;xo `͖))Kr/ %%pw1d�D(7nDxg&f!i` C8tIami؋A=?~ mo<AL�^6D,`[D؈9 \37>6gvlb/! /7ʛU#WPZjw FCn'I(sjK�#&Qx!8"[o`! RJů~Vq\񼸉@ ;<lSmjcΝK*'?Ϝ QJ-˶JۧC4I?< *K<Z~"ĈݽS$l<nΌm!=t,*?Aw;woH2O`3jk<�10}Sd1ѹ 0F^ܿ 6 K&`ZRmX>^5Xxټ-K,) +=. D4� r=Kc#j[-B�Z �6"�xE W |'_}AN�| :@mg+ % l |�&h�5�L=r!rjV#q^y W 'FC⻄ Z<\O*�H8Y Di#Y<I, ~.F|KTIUpd۝0F�b=@vf�Y:r$GE@[IyJq DR6 V?TN²ƻ � y@y/Uh?k5�)7 Rpc8  *3ƞt̄P>*QK0ff*d! q("ddTx_,:{Q$ Bq�ü8*N!N)fTlF{ym8FosHU.#MD� BeL1fYKPJ@Y+v=ѕ5IVBp#9"hѤ$|aS9D'J Rrǒ.TiGz&DdH=`0}ZIeu8sDDJTbBB?L SP:s1 V�_3# 1�a$Hؑ00JQh[Hi(9\'@ˁd,-$,c JHi:.c@+-&@Bpҭ0Erpe( $8-S F%*97 +Y]Ik9O7Q+9arO1! Jf\Vkzl?!0pכNDT**5=f3M2" $K6@_u(@{ `YM16d#(8ne>cZ3l)EJ�)zda&C^'EQa)"DDZum`ӋBʼn7<+  RNTiXMr9bILWHM~@(4)Wr{$JAMNr6] ǣ8 TK& "ZMJ#;jDp](w^D<VtR��T9\S'}Q2 H!r2Us>@( 9O9hy7Fpr Z1&{]焊�D{YE?j/|1k�ak0dK/utt @Fbz¡#"D(S0~uÇ+ˊcA\ٷP8MV _ҨzlVR�~_)Ҡu|`$A[Zk>?㧆4> !5 O��uᱵL:r (Lhy@PݿkuQ(S׏|y@6{1M'3"�P#b�.h8>>V~aQuFUԛK4'O2{C"j5&"ҎGη<&cE4 ^oba";�a�Fo@b>9۷WXp���������������|W^O����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/launch.png�������������������������������������������������������0000644�0002322�0002322�00000051751�12061426050�021116� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��SIDATx^ͫW/ *E&imʼndTI3@ (XiQTVRssw/-x7Zkrǿ'>8!`2�/K |izxŋq6,^~,ǐrD $$ r0Ip w:H]6_ tCs3tFf[#KY`�6Rץnki~bo?!|8i쌅h̹{brɐ5.Ԁla-x;]@)%O19Oro@g0]xq�G`%^0'|.�4J)4<11O)֫82ɉ{7oRUUQMR?ȗ_S8BG /iLy|42͙fLS;c-CF1-b2 ]%?Y@@0KsBb] ˪nmhJqrv ,S&z2Xc}_?!G(1FvBfbR`U7׍:jMUh"4k�RJVi1 >~ }Н|X%�~#I;4 1R˶VkV뚦p'#d�4)uvcrݹC|{pKg9HC9hB9ei6giu0 S1m1�D0!2mE�&C팵=3ۑl:ŋx.ΊvY~N u D\5 K/y^Zoss_E(6+ǝVI$98)M�rf]ƒf$c'|W^ys^}?|ng~~$#:>�\H?' *NIt/07c9$+ @ĬiJؿKx8DMh)f3l?�Sl|7._+`;No* 'zpY;L`p L vuhB Ƙ$i =Y'�<v4=+/�{# ۟?6c-;:{nnM-E%R=-[#["ۉ�A@ `f @"G#ɖgf8-%R{ᄏ﷖ZefS#)ݪ:u}7}0_.~8MX h4j; Q>G?gl=wo՝xy(mr@7�΃i`c`HM�8H) ._fSmWe}AM줥ѯ~]eT bVdl(Vos+xFe2qd\b< :=iǔ8}(R®Rx T�L�<kw-,XݵR]\^ؗfB~^7~'o?IיCl .`pE(Y# C bs�N9(w:4AsT۫٣Kߐ MaGl�.>7z.XZǁ [sBaT.|Nd2 ? 6֏Z/S<#ֽ �;_q2i9m駂S{,q H`;Bp9Pi851L4bHlޝ9�b7t&9 j2L)_(dU\՞iV <7te 遇>?#_i3Éb|ExG>T)W*8o+rw[+W*eȠ9 Gc@ƿv}lj̝>Ƚ/){_GYLs TRyp8 V ڗvKeP,JX;;8�4 -\.fsYr.x?mS_ƥ `L ԽI3jbwAu%_}ͅbl> -�I5*�Y=mqiY-KݝvDsϳ G3굍ΙS? 0/Aiv>Q,/TڵRp ժ9miyQ|Jsw`gAm/�' RN7Vy}rHp�]*c0<4;W@�zE$YfH� y Q�yG .J ȇ:Ye/a.LͿm8 &B<P/Vܜ9L|L#nXXkTtfE!e0 z3uAl<\ީUPǭw;啥2=ZE+Kel a!xJ?{t]orHtڝipj6\ud2Jo!LcfYe=S$'<a(yxsՁBћNm9ps=cv@!f =s{#a6D L<%0' RsE|̱$l^bjy<�m0W/;Y<�x xO_wC}< Q (\6{7�st߽wwn�O~`  ٌVgh++ VkVꇚv{U,mmԄm\'͋�r\Zb- iU9p4/Q8WH@#$`BEb Lq@cSp8h]Cg+ � \HF;d@v~ݖlyCt wAD(�0h q>njd<A ik+$.VqUeLsg/ߺ@U;{>7W;8_o޳*!D8:;YqK:c d�UPL}u` P {?R窥R\X)F.#g1zX1Bؗ?M�4?F> "t0yQXv"g ibHN^n|lǘtqo `ژ{:D"ٵg^(8րI Kw#A{+7&1KgmmaqI9UN{n842�QHu\x}�QEHy^� K++K&>-u cnR?�Cw6;]tP5|jɤJ/w-9 60l"t#p<1˜PfiQ�C!tVHS9Y)RڸMh8$'`Y|,L\&TqMec.q&G<)1p6\*(D@GѪ&-Ѕ ]I/. } b;)Ce](_+B|\9R @8/5fٮW\.jY(KKUm@$ؠ9xfPs-ybVFWW FZ?&jF T'?ҕEѱTJuMdeޠr1%mbJ1W8 Bš3!x�<H{Kħg&%u-h7= 5K2)M",y<`1hCv�/�%}'*r`wR c\ބh0<w0ʒ{Xqw �vo$[A�7o,o $ �h>5<2@6ش#9�҉!F#t2YGPƒAFMQ\R+Fz0"T[3K"Е+ kײ�>SAyKɻ88#| UQ,7XAוJ͆vLD͞ 5|@r crO@"od F@)4eB|�EoYO$9c`RrI S#+p  Md?�?j[2�#�6/m'68 +DZ_:=/8SupFa\fq1Ey?7s\< .T E;mbX10y*n"" A� clyGjkfSkZX-!�~22f?i;0cl;n_a/fq,Dgl_! ,d@\?0cVHΏ5Kᳶ`k3,ϓs̓2{X <:=Y!RQAOWYq!t! ?t:`X}w V>u?IӶ|Oxe ,7lu~΄ qma�( {F ',lE# 5SsLk 26f 膮uY܇g>ʥi"e7Nmmnh۵m B5s;!{>' Lw6U)x F�q�e yLgYxdNt?Z"Rc.ci �O!(y!fo!wY�2+v.F$דKg5+$Rti`XgBq:Eԥ\vr�>I#+'~XlQ Z-C+ppRRQ.u["ʎσT-&)lIH#K1)tmΑ 'aJqJo;9& |uGj5A? k@Ӗi/~t鹤/Ǐ<^Ay),]w2o7vۈJWV ?m|c 3Y{<E) IMis,S <v`t{c>"{&,@B% Sqw8S!{msscC"R ke\s?z(Oog}ll8CR6X# 3ӊcwP"ڶďԖ4ҥERrtmN2u<]BXŠ&0j뾬3a5g>QQ{u)̓�"¨R%%%~֟q1DYZ9%9tHRF0flM>{RvZtw4]<g?*'pgR笌3lN1'} n 4/,T4Y.AM^CIcI=V(93V?S4N#;f)GK]z:+}stGnF#Q |"ʼn|ꑿpI^  E=O,l㺮XZ^`9مcLjdqpUM=s"DtDl7q > #DLi#BcRWk[hzu<O}+1??Gr㥅{$vÿ{-]=pjC(=׹;1HVT\%ɗ_=!/ 8w=FX*hA,XOE# ELv%| xYFl) ك�z k2={Yu/]wޘ#’CUa`�z@qWX~HáyagoĜ%>?A�?v8ܳ`Z3$j &~y=L+z_{7|y 7id(obwŚ| eҡCWe[r)K 0LvϦa؇a]Xhx/BiF|);S3kS YHC ۂAv~nl[?C[̗V2k0!gVJ+`vS23<͹�Jᓒ)y~pe/w(WxNF+1rvEoZ>:A2]ęBr�gU' ,V`I FD#|oJ`.W i>w…d L7hiΕ)V!o.@&TG>_V(CRÃ&k@Y^P`C8* ,t3A/):5 8'30wm!%v� 19uVLi?QK}/Cd ҿZFVtĚԤpWw㚧/FxRs�#!Nd/.//eD2 0@M.S2j/sZN՜#_t;=0Ъ{a Q0Hə˸'F9je QHEآby嵰mBR8�gET0Ø5p"�sc˕}v ب];[ l](nY&5>$=P-jW*pab'E}r[*CF-b5r(:_څbQ�5N.p/pe0+o& ӾHϐ4EN*fq0>d(sQ"0� _58n$ id51KisH]ٌP"+؍Z̃b7"5Zm{]S�yl|G\ %gIQf ;k66aibCá+\AHbI K8h/*8�E\,sUO$mg�k?{ji[f~ R1oWJl)ʉr%%iB_̢]tvV+ȳP|�]kf;Hx�dŠqXtX $;5_bϠ7wHEQ!×"`v#<{)N::'r&4B^'DO Ӱs/1`1c(X,Hhec-<PVDJcࡌ_v:+~C(oZ4Zpʖ�~Tz>keˁ'4e`mP`MAgۿG'e.t9r ǶXRbƙGsܾDY'4[\rl:<y<`NhwaOꑥh+c[9,nS\Sb|@cLDłڨ[[."h#XVչp y!;ʳۺZXcѺgs@ 8r{a,K ŅyiB 7NL @xj!DGE.$6*5K@Bzo{~//?XjLMi}SǍ{lڷ0_YՅ*z~�Iz?(_Ϛ7g~Ryn纅yV667WZA(z^u�^fޣwњPVЄ<jw^A$wD{pc f!~t(I Pzm*\CL,ʑ8aDd'9y\ wx{Rh1Ҏ?,5)s=<Mkj܋y WQ%dTXs<冊R웦!ϙ> nd_?,r93[P. K ҏ|o8~5=OI<N?J!ƥÆ9)5[-N܉IJm iUB BFVȁ0τpj*\.#!$*tv@ꢤ2+±?o2xpkE9qQ1 E�l'Wi?Q8_Eek8E4ﵰ 3 Kmn(]7AASQb")'J4X돒Ada8|rHf^ku>B6?W~_%w~w6F}r0܄KJy�e0쫀+?*uR $3B崲D*O0U0Fi{>+Ė1A=ܳ)ܠuK},7VCz e�!˄%nK`YvPG <&@̔'`aDPe>G0Һ,4&Z:2fk CޟĚ}u{/w ˰n0y1tɿtec~Y] ͗C OKPG9}s[o'5�b jVm4'@p߈j _ E.ʢ RR1.NdSgGn(B Owp\`E2&cא89"dPɠ ؗq WP^Ņ @ә;ئ+"ѐxXC8p:FCBwAދҟ>tf匽Ӂ}IxS?.;Ay*F}SJ]&V"g3c@Jb$7=ȄQ%* #1Kmlh(@:t+ǚdĉֽ U\wCaڵ;nSI_'/oawc�B!kB#%ه99Zbda {ٔp?=(-�,?_TQʡOGβxm~F�k/ 3 ޓ/y4VnѸ<J, %@5{z1 D #i*g)qh!cg5�!Q c\{[[ {t"W}KM/K] JE/DGȑI@Y2Q;6 M0|rH z5 ;h"Eqaw 87ZxazܳwA�ݎvMӺa>zeqwpbK$*x: "C(g~PX�1T�%2/Nor)˚~ Tq69U>RITPKaKR6IF"{{8],[u�Pb'Z�5#+?^d>�v¶ `k9<i�,ǡak6cc8�R# (F:*2 r0 ^ X$.(:7+'C?ճJ74O`u#)P]yr8yʤ2R9 #@d+blXq s6Wt9܇@Z'  SiXBZ&=Ii7[xCTXJ rkd@_C[o9J51!\bY5�ᙝO:˄q7Nӷσ9Tc|^0 </*T F.=y}6N{xzmqqAqh�fݽH�K)o XSgJǞ kx$c& \ޑs)ѓ;#'ʶ ~GZDi Sքmi:&lZ`{n(Gŀ1$oӉ<f+`bkt3 ::"T:C�Lp^­0iCů ع͖۫�#t(d t=u1P rP~<O@>/fgDú"meDkH# �1 &U= s Cx�M>E�/U!}ijr6X_:{BEBfd2}\�vG3}\�6.U 6?Lb"Ae9YlA0a~r"_9 {*1 fe#aJkB KLk Bi eӣI;ɥKR"Bf۪% , EH)!Ǭ�~gx߆a9|Pf/\!9f݊kJ"!TX�<y 2CN@$ Wʹ`"$s(9e&_qTNk <AFIԎeI:�oJ#9w1@;wHMz,ۢ<<x2OM]}:kt#`o_<<!Tf{)Ч�>M66Oy`Hw%Ϧυ{ޅM13v)Df^)P3)%y^|F4b1y | R<$)kaKq//g\~ۼj%l4k S%6Y<Hgc"(&gfoɱ: J :7˃%HuHsm*kވ@0[FfJf/�  &׽JyQm__@^T1MU{;s^*]2C+ D;U~$XӐ1ejډ{ gpxI:٣MSNq� Ĺe2b^2Vf `a˔gu7FC{'/H:P(I g`s0{?Jvl8q3w$&`M`&%îิSܘՃ+f!u>'"QzB10TU)J5ïLt�ju*0#2j= l8.ԑ d1L̙bm묉%TkJ穡6oz4u4u,2Peҁ8}JdLj�[-,G8O=9$,r1t-0SpvL�.v s&NJzZ `00jqob冣%X:8tm]:+h&NHñm2UsO{17RTV/]w0B錈 A|G*\H)ΦV'2<0Q|Vdg(GW¹|Ej"|<oBQC!Xo#{S^}uMC^ںJ)xX&B2#!BHOb ЫK96MU +V;w0UK_}$i?Un} 'CR\$@BCr1d\ۨ\Ul_r!(/7Ȁ1 dF5Gy9P h[c0pֲNvfR8Z=9ržx6OccSeX]B_ix2'_*P3K Xat}ՠz.sæ{L|T�'3k;* ƴ(8f33pGԙq 93B!胙] w(GƤ^[M mD: g6~8/0�ty!h,`-T;HM0/ *. bae%_ʥ?''To?z*?~+!mX^^P~d>9nbF&S\11-zs{vCP{"@ TNq�$ @60 ӀKFx os9$98أ`XP\])UG�:,sA0D"1.-�|Q~Ь$--.JӰJH۾r˻Z}cs{/u]}1!gN>,ٵl,c-TB舉[DZe4#S/v~Ͳ;;]J+0]܅K.\:.V n[GVX:ƸD#mcp1M]zgB+81;qJ D D\ 'dQya}[u/y) F �A-̀2wsXC x<r1@1Q޵C!,mjzn/kg�o'Z]* ol=,/.1+\)w'^Ax$V�~�kx8h֯hkkV{\p |#X[Bke,˗`Zf@ȥv  מr}&kk PW!(*x@F;:�K 7I &2_)UBF}{%>鶏=XΆfܗ׳?{pC{[_?3>2WXGbhZ)e;!5FTZȄ/$.n T� 0"Gѐ4yM#DmO�wdԺc^5bk?jԂ{O3m)dlಥ IxI:{aA|)SyԶ *dA-,g6q )E1cn64*C^e\8_["D"ǡ8Hz"([)rn*fmidB~ONp!Y!@Cܟl,tby"%qP\m.Kg^st]?'N2'~o|<hnO(vV<VI%Y D淥zB($kђ3j+T8@$ �` > #Ū=ïơ'!7x6yfq}=o`G,&(' (yGyLbqjQdzĺJc@O}o@(ܔ>{r$?=B?*@Ƶ�o魩 zٺ󽟺Y /]rfT\ݠAH7\J<5i;wE)llՎ\Z]. _v -wϯoj'_o~{f}9y z>g2 =PySPix~?K?k4u`_"];8|Ƙ?X&m-@cs6]QE ]KE*Ui&c7֖KTlsgD1o9<y'O>rǝSODRt {~89MM&mz~t.`q^$=] �9qz úr2wb'*8/# ^$gln2|%V5H5"(DUݻ3̈́IS֌5;],f�J=@Gep6l3p\-j>{%`v^ڵ;UN։+{0࣠ bO=8nL{f <>�:@zVK0zXrrzLV�dn7=)ʴٛ8q[cN6 Vk2d׭#�H W JՈ,"`u)mN7ܾDVf�$w6 s./ٳTڳ{AS)0�ucd5]E54-b�!#T!v> 7M[;qgh2^$婨%,[#orMi^rk�B мY?>g@�h˶ >>)�PNzc Ӛ�Tk>G߿ogĔ=2 jj4)1tJTj#n k�A:sK{>`Um4Y k\r(ԼcG.2 i'e`rDQcΦႎtC9Ɍ*A.QԤXdqӣt<ʌs0Ÿy 7EP'喇02o1*JՉ7TL*kq$AŜt;[^~8Ӌ#_`𓿚>Y]׍M<X :.BiȱIxM%sFC-؇ wY!Q48 YIJZ�I`51/ �ưlF)`2Ol{1SMi3fd$&Z.^^wQ xps07Tt 'rRPY(BX Er9B�?a9|>{LX-,7#Zr d"?OE*"ñ| 9g5&a?6ԈM#^6g܉E2zٙI~hF]ڔ(}k8,L6)ʿ!{1 ڮe SOɩVo^C*N!Dmaƍ + +Y4�5GӦ|= tBP #ޥE&>b.!4g#Bo*.@s2k7Z!YVRKpű=ve\(df?H!M=;"rV΃O7]d^cR {T)'՟0T=ys"'!m^!&b;sX1 R=$Pm|~+~ſZ\:uտvֵ|䳈O{55XNMBb@s&v1i0ݖ9->=zBapSQ1[ڗ6 ޸~ܻ bE_ !-_Н(zFqx/IT;]'>o�أݼmB@>Ov9-­eb&SD 8?ɎI{ՐHq5c-Œݤ,'D΋+wIJ{L.JD[8X B~qF|FHk侁7<v7t~[ '>?O_MӇ|:~.gb21<$7O>Nb,DĵQ'B,=a'ϔ1Ug/ 2js@3`}psZqqyͣ#tݴS >hdb(X0y*x'xm'K!`FQyd�[9#*y^ < # 17I *fu􇦦,֖!on]G�}f=F=)?x! { S' o۶,KPY'XE{*k xJ)<4Hs>nm ͦ,+wSSJg>yQnjWW)HƋn7/5KnBoRB?:7etV)ϱQ{UweATwUJ@Gwޝ9qYcFK5C)t6P~\!tqeݮuչ9Jӑ?:53Ǩ!yGkG98~/3"W{($]}m楕%cuySYN ()~I uTտ\:[!@^ EJ ?͵fY\ jUZ!GV>tr+~/jޑΆ<Ggn7-4\;>8wup>? d9EJ,8%ak|M}/Ż!TS�atr̦OU<)_'zCDP2KXC$.^:3 }?9wƼ0{c@|b‡iw?Ue1�h}�a,3XR|..M`*R9k]%GW”7ll$'rn:ɀNZ(9 ݈ou2"uXOmj7tH©K[ߚ>?e}G�WR?󩃘۾rǐ;oٵ!_]vwL\&"*$M;~K!t]H$5*~1򰗱;y u.S+�{J\y*PƉR}O[q^#s|4,sO|qH)7?;Q˴tK II2g)8FOSϮL#<5?n+ דߪ� uܤXTWWVY[S")nBVJM1%o/{o?7qMDzep(ǀ�%) ߊ ]د:a QhVhw.eؙ,RSԛkvJGK$88w3"NL#zҺ<k[  HE Pb-m@*"pק|G>_lSKfzo6j /N}~7DU96|L8Wծ<F$&0RL? l½ >͚&�rh}#_Q2y&VE^4kX.o[qroY'<oʷQd ;_ 9蜌|F2aZ}G]Mݸ$ХftROXiQ&Ђ{&VQ6<ܿH@$V+kD" ?ڮG�Q[4~M,]~\H326W7-y\?a!;\]sX=ݫ+:?NӚfL+oFް(ծlkse-H=tIy3C=UoB 1�C$:>wtN;ҹ ׇ*kK:6?Wai1 2=AXE9F$9y]U;ZԪ9L &#{VC̈́dgO2``O:/`�zBhϾzօ {vkG%8dJc}yQbaQ$W(t- b�ĞGo tCnG%M:q# k^^\~J'M>y' �sE$ 3bDhbR|IxRr I(v4Ӵ}FD�)ԇc)Eʡ ̕+ '-gUN."$դ>&vi1Q:}ES7б ӷ@ݜw `ckۻ5޿|ʠO}6�lH7+Rn Jܚ#䜑Hԯ4NGjl#U: lK8f�F�蓘 ̼WnwܥY2qu1QT?v' t9589@A5A}|e d<r`~wckk N ;lKj܂Vy cU"4'ψ@}'P9BT .xQB6F|m: 7MLeZmgom۽؈<wq$W3@,(ϝ6j֚CώP4c?q,!e0@m�` !g&=s% K5f%Q'_p�@qjmC9{um[De^[&:8E}Wե%A�V̪ O0 r@FOo4l5p!9ͣ UnAC6CuqךgS3[[ {J<1na')Id`i .P%7"%jg.`n ow3~w/ak=v_{`ڵd K<9KQ<SX>5K R@Zlx>;uO +ANBJ7RmI5!F#g4mܻ՛MHiqc!SU3ئ� _""'I5i|e8Uo9_7k^h?j^tk!DtZ[caXn Od�:M$i�H@Pl0TNq:^z敓nv~L.o �jB0XN- ePV+ebٌ�埿|I{ճ+Ȼi=~nן�<mou۵p{t<O&Ë7^]2X0ݰ/onf_Zά_H)Vl#d, *])1Sb~.gִK$DԕFqn6Og~w+y8�.oa.ٶ3@"HQ"Ktv9BA<�o:/vsS{ٿ[Il" -{aWzmXۼgilX<{2\촂 kkzCp޲ afc kϟFIRb1Z僋Ҫa`64a) ( ]:*JUː>zpjjƨ-/D66q-mϟ{ -y/v[[6(}H؛1: <ixk0m]&܏ 3cr~7:cJ8x'̓FmkU~ĺNaOnoi(0[[K`c!w'ȑSg6�Uyi#x45OomG~m C$ ȃ am| f=rz R$ kw{6 Zf~u{9jq0p"`nv<.ypm4l F, ̎g2A <1vRg+[\s}g\ǺbGJQ`NyֹAx? a۫b+-DNqO;Kή9 y<$_2t4:<T8ۨ_CV!ގE7Ɩle{+qY(-dswXxmDZYXa"g1t66zþ;bЭZ[I .8.i)𱶽V?_\vSo&tkswYM��=ڿ~�!tn\Z5ح 0O.ː/BK_X 9 kiD`;1h1|&j] JsK"! 2RDOR1w2!EP{͵N<^L=IO6^cyd[I!^P+7~|+Q9a.6ixS$d5@څʪf;y q1O^,ٗүC?S? 1YO19?{Ĺ'!{hvA2 p hB>&i/ S)jB YΥG]]j<d -ðI)ү˽];)fG'/"hl^z߬?xP4uݜ(Ohb8:nvy�2B; 9E{ 0j� Z�#<( R :NJ|*;`K7E:N {~^ Pi:%=L,Fw 0HKBa U/T;wqϴ^cnsqh I'p uG] Z;Iqv=iR"|ʁ.ލڻ6n <Qu:!襧z/EŶKcf:XĖhr".8rf^U9.My됆؋D v۔$EZ>(E@Lxb-pB=/3eJaP;#P{ H軈~kEQt*�Nnsp?eAWB`nLMKN<giH2b,\\hLFdS-]+rmm·�2|� v'5fciSG!#r] a*H͑k�Ze?[C%s@D[[O;lږ=0s˟NYûs̴^}`F`~vh00@| 3'_F۬s8�b= XLPR\1ӂ W fES%^։/?4|+MmفRL7q DS3N':Cs#)ފ}d& ;* @疤ٜ=k˭$NY!4 B|ښmlTF{@3tq罋1.B ĖD�Tl?/ҽ+pS-"=ub1֝RurnғĦʍuIعs s =PS~~P&t 䛁6s:{CHP^FO%#b|?9+6p�f Tȫ\}1 1˼e .$L("B"N6x1(ҷ~-y?ۣZ+ <oYPaTCݽkxP~JXu3jH|.>6Dɓ44 NRCDpލWwQ} �W°7xd1zR3^0/H_8snBd!:Zۤ%!<?G1Bhoz@ ."g ,Λh܂9CY׶&xO)&@@wRkD$:@8bn1kOfWg?<f 1Z"L' D4pY#C>=zqV&E0pd1-a}95_4=}r6ބY43!p |W'SJ#G9b̶~ o̸^&JǪO0I!I7@x$h>$KIW|ſk)1".����IENDB`�����������������������anyremote-6.7.1/cfg-data/Icons/128/rewind.png�������������������������������������������������������0000644�0002322�0002322�00000021076�12061426050�021131� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��"IDATx^ֽN0IȏT D ݘ`E pH|r,G���������������������� Y(q9q:|* & F?O޿֟7fm$I4Ȳs9TH_eXWUS^t7ܾCϹdu-%&lu]ʲ8nZjS(u)uFW?_/һ-{uU^4EjHg$5_?A�@8?JA220@(N 9X%Qc4)RJH6{c][nszUnZ2bKέ>~}Ys"h#pXJDQx:ΗʥD21'lZw-9#'`jy<po~oǝM\.W..-.֘eYCbp0?|ӉD|,Ɵ~ӀXg>&8,x6=ǘ/bxxxfxh�ObsfF2Mɜ ~liXfs>D 6a#U �_W2^Fd,2@Xr> dr"LGGGRZeKKK@�%n#~$,?a/gҙd*5J\U¿71(񫜅bh:J@cd2/#|?v8<<ȐjDG|.Ch8Jf)ǁ?(w_À Xd{/w�|&)ݮt8K ӵߧED)& 2d2284䛞aRirC\JB>V\{�G_^^%pXvo =sI||I F*f@WF g%ryp,LH S"Ce~K8^ĹLK+L J|0(ƀR0,J ycIGDğ ?m\�4l qK\QT=:4 V<Pzz Ӆ|Ç d(?;#0pl5:�@:OZ|O <^„$/ҩtr)x< }:) dw?i*׾�;< M}?^|oη}wA;#Bϧ'e|2 M6id"aCClɤ"Ii[XL*-<8{7t# ߴx"9>tu2H&G$ J~i#hj4 I,+'F׵ϥ "HǏ9ɇÿn0dFc;HNdJ3EMV?ϯs�mw9oz.C})D/?ɇyQfggՍuL áAP"BrOO&B"x\|*%W]#yU eVA4!ZյX<H~P~qCY?~5Xz;0. _xg٧>)Zo6Rp] >VjV�;σ ba,!4IKe G� (QZ|]&8W9PMwVAEB#-Yt 0,�:?@.mfaD>7?RG3pe:u,.RU_ͪvsJ"Ef3a0d(-L #PWHITIPw_%P}0Kʇ֚uU`$~0_�v Wwm�_;ַ:׏=XRi}gG̲_=...f+<̙FLu1xqA(0###Ce8!Se) 7Lr׳c4<x u]mivlfzq|/׌9a6ê$c>*~Fqw7�Բ�O_b+j+ՊZ6+1Z)=4Q(QQ⅐7b S ϛ=6\%*4j08 e0C}z�7XʖXբxi4[+%~$*yG �ǔb!o`hwo m�f U9�CG񡹣')#Ū7l)\!\Vػ�$P ꈑQ ;⟝=\P+ jJ�, b3PIuwf;ߍ _'ja^'3vWO5;qϘk>EUBՈW*04osAO p!1P C@5fF1:wK�Vp>ehu?#zå3!5 l‚E ˈ�k5BL)x %� jqrya�$P?O/ϨV2 JrhL,$_9d4TF,a|a T6Al[̴,ÿ́ #s"<(괂/βw.q)F-]-ɸ/g1ğ ~7d~#þ�]ӧ_S_ze(!5`ڶ̲%|~wX<G;AB=aˆ( �l0a%݌Kuqd]Fا?3N?W7u[3O>ZL,# ͗iڴВ:G? C\Kj2V-c�t~]\_?b\Vjy4t`ht5>bYSm|rdP4p=fF^U BLMx< ]__fRNf+)D$?MmePǩM}w qSv'0^L2Ӯ߾oSa4t0ux@ 2Rh\Q陃q-pvM .3[q=x{x܄QEm9|oGGwi0,'23~ZhGiMُ0uov[ }Qz2i1R<=3%gz-Y9wgϼڃ6 +,1 uaXia6^@/(xB!:8M6=HD$лEBUۧ|z#вAeU]C`Fq6^į-hFSλMzs޼bw @>_Nd}8w;thZEVP7]z1j5K ;f5hT#M%wq(! 'wp_.M7~/R#Wd'3!p8X^Y Uk1JOG"`yܛBL'jY4=42<_uDzuj qX^gſO@iFMkc聧- R14<JzMQ,\x$~+F@ [XxRoU-Ee)/x 'r6~<^Je½h̞$o{p^^# B*B,szQv1ۓ1+P1)XǤeSȗCa玑GvHejyrޭ>m̯]eRT:ʓAݮUYS<1 iljaI!LdvMoY|?/v󽕁~a ǰz#�D�/9D)}92[!tYDοʚt!%SQ%DP&1fId"Là8E+mA iִʈB>H#0ڸ$#Gب –;Y7S7pzLt6&ySȹғ”n@ODl%Ǔ2QQG/�I:wI%8 FGB(mrߠї{J1~;��꾩(t�f< FJ�2BQ߲6A5 2�Y4wW8p'!R*hT:l*"nY `hXm4aj\fJ@"CrM&ΤȭN[^w^ݞz.IJH*T ?wNǛKȽ=\\y }(83C9ny)7+J{g�7PL!։Pm5aԪ r2v꺙z}oY/ҥIk}B5Hiǖ#fb@#e)Px7~/PXd˩1�nM֯*6T-m}]Pʹi ]ͭM  ܀:G!s s\ĞHni/8d`-ph*=-zx8Agż>,=y$X$Ќ �Cٰ[E?p� eJl~zZ]l|v%*L!C=U߱*ޭp7dG%BE(<ZhJ200%׮^S>ɠ!aϿAˋ-=]@/!uUxM /eZ�OA{ƍ婕IְNMMͰaM@$PB�y7vސI{́ 5)ݫ7fgTOOiJ`Fy!v/xu�}N+M(ȼ;O]8sjd4[CS8@" %:'qtX @O'zzۙ\y!~zie#0c'Μ=fq}} 8[:MO$S0[7?rs T ̇ݿ?ϲ+H,>q+[<;WUmX %@^Z^qU5 0Hyd w{IN5B; nv(k@oeRe| {PZ Cp(Rpsq�P!>f܇/SԓOW^/40Io"d*]_h,./X�'~�-*S=4Vz#~G<*wR DS4u'~g^% 5?,%~ ^GĞ'|<')017<NeƊv7߹*>@$jdA 8Ϣ*Ik3ZrVR;+)u˗62w=,N]G7_oZߺx~{a*ת>(XBjQ-( LRg'2m;~DlَoƉ la͸+\-WK.݁/9�|l2f0΁ jZw)Y[}GtzylSQ.ş`Eu0^QVm?DN~�B=<'9y L161,X/.+Jtsc}-�t\:.Z["}w{]"Zn)xj@9w'/LE>_`m~ڵՕt^-׫ME?O$A?8&R>dX`6;ͿO(fnZ<BwneF!!-]d;!OaMø?8㽛^gp's{]sRAko7_af40:ve;K:{s QѰKo]á`=ͭDzV[K(JY^^ZZZEtFc#rkcbwؖN.= ~=^"2#Yy gP$\Ϫp,\5k \π$N᛻lMG �(/{su}>Fs}e]˧_y}n}sk_6&yC@YAE7*B+'Ǡ6;p7ѳڋw:ޣiR;.>ߚWMKLz?#40o{ޙG�7:a;/URU7l[lnlL^~<+Ch L:CgQ,eHm."Zi2wCǩ ǫӯ-*b� RB(ğ%^/p:tw.?)bϕ\6wat-8F^`GIcij(.79G!;׃\5S |wbLRخy^1MFG1r>[02�A''~N banBjFioتlQB9.ÆL ч ^ KFB\UrQI g;Hnbn+oZoۖy?)r�iO^1&ב?may<i�rd,Z>Le$$"8X)i][E}U(^Yn?Q>ܿ@ ѭ#mI3q@(p�٥wП_OGZGn=u}na̹דX"VxGK6B-<g5x1A)+ekGJ?)h6kk?}j~nX('ZNCi櫧jT4m 0B~sk+k rRKqZ:+ڇOI| X->qܮlFѳ!fHY~A G(9Vȕ;AZ ȗF"\mزljs{ NLsF$8 \d RCX)V '@y3S,-ᷙɔ.B&cJL@Q)-P/2'Y^�ſ/ Y;W5 _\r2hM=  JT{+t:{�ORpš^�;JԈL~ Umj l yoﶂ?_ ENKV6uͺ뾟A?](H?_rۗ.Kbص#i%W X^Pgc;ĺ闁uU^ xLljWԁq5ލ#0SJ*nNM, l5+،@JV+˶ȼETd299I6F��PV?cS3*h548j5W" waOV(j6 �O ԃ_�?#n 6xC\Y(@FHON60烷P Sٮl吇3``X9pL@- |Pw 3DWgϝkl[XJ%C cXL@z{(#F>4ؘL' xl{ +"ibucJa}<M l -Pl Կ ^᷊ U׏qv!>&yW^{ťehO�`HQomU |+ m[Z:]/3]̱o{?_pN鶶?DV3iT!cݵ7F Jbd@la*6"8�=L$ namFHfwo4+j4[iXK\@C)g~&DamHZh8Za9aer!(ey(/�V$2,m/_6$~1xϹהUpŮn=É[ND [K?`İt6g[_wo_zGۛa(bH0K #߻WmVYU�<s]#<S ui�~"eMW]6D@p &09_ȃj0{ ܇[u\_k4?~Dnw* 1�Ut%-*7.!ͭѤ S1 R2۸<e7K$޻4/sWq?� -D^K-p/xf}|f���������������[F$k����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/question.png�����������������������������������������������������0000644�0002322�0002322�00000043665�12061426050�021520� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��G|IDATx^սJQwNvJ4DK+Q,K4"^hhdGTO/EQEQ$f~Eӏu(@_C<HBL+! bF6/Fa G( #9撼; 9cX;pyL$̸d1kiґXAJtm74Į@7@#4�?<}L zE;/xuoٵ9zkz^g9YJȀȆAG'�I8D0LKV?G�A8v'f'2%䐜}z/ݮN5 CbXF;sY+<mI]Dr{:i-`i:�][�p":�ygpĈ!3#~K|Zzui >U01vqmwޑ;=W7 iI!4HYBn}`#x!4yB=)椔)Ox! S܉HЉGBȆCV*he1#نd{ 1�R0=!MQד1nsZ)֛Zo:d0D [&zv?#>@tՈ5o q �RzXrac. eSQ;DC°C(0)`da{y\FR7݁j�۩6: zWiI B:B=Co3k:],jDاZ9}o7s_S_Ձ広 R60Lt(`'�id[2M=ɸM)ǖDDK'"q.L3'  ?�j�P'd7[=5:TwQXkRsvؗ$7Ho\r׿(Y\2 R9#u O.ݼ_,x J9r>.<BIY;ҎNBx4Hx4E�4218&-}<SA3d 9DIS'!X R%H!\kGkVT$itUq;8|(ܓ_ Rd!GN?@XfG= )k90z>x-ne(h1p$ ? '{3o$DtY# �pjzZڑ�ݼ]M*;-!H@KM_xsb'>|i{O>zyoxH$sX(2h8 P"fS>ŅTi>#'bmCͅ')80fa6�1L]WL MC|5]fR0t{BKdi{!^6k>~Ԭеp~L!c?BF PJ!,9C�|.U4Ojg 1(ͨaPtPndV�|&%&+l >y=FJY FY "{n!BNP\GT&D |fɻNSZُ~6Buaǃcq.MX-Б R1(rMQ)f|<~ϓ�c0qvAgcw&q? l$�B1=(�p#k A4AL&uuT[nƝ2]]wklJIWL/H!쾶g[/h|C0xf�e$hk{" 't*2I;LK$ (lqn4>r7g>w�=!S �XMƑ=@ W撙{+ ;i0:e63e|o.T4{دrmxm3Oѷ "|`MC\`?d'BS鵹#kQ,j8\YGAOTkZd-:} iCdb q\0pxJm11HC p Al{Wk`{KQ,utwמm/Gpϝ`uоC/`aCDZ8YOGAӠtACnkkt 6ŁPsq7a@c2rj&ї*K�3*�0GI;ag2.9Ļ:CKoB hmup(_|lEBVu~ �o; PBV|, A6Z%e,fhّax n��5g;\_Lrv4c>f/8�t u/vl*æbSb| HJT tS <؂+dT Jȇ6@]zş</߷p׬<,"+.ys>{@ǖlY )ك) zDا;(* .3 O-:_�O JɃ ô0$`B@U-':>/xH ,dbUf7hG k|vK(-]>L.ޓp_?_FHGv}q9 ZGN1_Ѧ6Zj8YiuP[k{&tA7+UsQq0>Ok\80%M%>GcceInOK�`<h!Xou"`J}\m+^B|9V_/ʅ/o}SoZckid}m\{)G:yg},.7VX.Żgy `1 <OBdh 3ù. 0帑aY�;j,XaCͤ1X2AaLc~v)ʕV띌r,ޠ}BnG xB&QGt߀Y裧O<F*qvHS.LObэ <�Ca`cr>sppsxz�<2m`8$1ӝ\ݳK|60 B?N/\3�'{Aߴ V}0ywn=y& %d|Z?dZl,s4Q_cSq}35 v95Mϵq#Sȟ3*-@ 䁿.8´25l,i; _pnuWvq^"{@oO=x;؉pkuh$ rY^K7F `tM[浙@a>k 2ޣ0u令{`�]˒ j(W #Y^E2LpOpK] nlߥz1/9z2+hމJZmKKl0>]%\~�.36y3@Oq䃷K 06% \>Fx[*5*% f܁T]I՚�ckЃF_2�b�.fi_E֟Z习c=z8<u82?(ٜ Uk <^T~O)}s~�?K iV@Hf%ANC<48 J*Yq+|r jNI}kz?5?weC&?�غřsK.%zDEFCt=|}p^ ^<^g06k3Ȁ_)`|IKozJ h /_iFW龛yzC�XoB|6d?᱒MEsJ=9@IS&76tTp 3{gϵĺOo<Ҧ�I ܏sȒ�cæ3J9Ȥ J?W<I喽SU+9f <vMY-$PDDʱ=ǟK<)M(5PW2(|ӧ~uٶ$9` NWSA8SҠ1tLl pB'$ ~)VxB:h{u23#/,:sw^v΀ ( !"~,@qLL#R ?ǒ`wӃ|<Z}w\U{{^kqKir.#ev2"_|C>c iU1ce>>pl1R;NC?xAlӹ0tx>O,B_GFHKr=f3d@{jU1+y+2 t**0eiFz`0럴1W˫gX| ь@bD}tY B{=$ +ϓs|%~XHIqbZ)),[5vϮL[^H*n_& <r�a�90[`nwYGL$KKpL!I@ŻtLnFO�(0asbJ.i,OA|YxȴG�cvw֣ I<0dȁ�ރmcd. `"aEMfu!*p,̲3"(s~;#਀Mr!Jgl5:- Xv#WJ}62.(.! <a'&^ (j=v3.3{IiaKWa@VvF#v*xص Ň²~vJ_@�^OUav .4pt21eK�4G�G$@@�<�L�~l&Lmzq3I4 g+2o/3ر儱d>HQ=j1\@�Jg0ZW/|}\{8_`_<>i]=dq"2b֠d7DX _<|`e+ju�;xS()Qe.Ip\aB(�*ļz)6+N𬘞pjBEA;䜿-P"D#0Lz!!eqzƗs )[xj5x C \&DE�lFkQ Gj?2>G0Rt+z 4p|8㓏|F'(:̜?OD(3GS]@s?IIL@"1|W �ó.Ě�MK,T.}s \F G`NHI#9 D̘p̙epX&1z6R\\CR e@I8~do?U�@_\pce;[~֡3//DV!3XAdBY'@g,=o&vw̟pr d\zӘu�ɥ?6 4bgn]õ~ b XX8Ojz!r8FXCd+oLS&ŃIc({^Ξ8¾cR=4%m㑂`^ p|59v V~1@Q 2"9zvZND'w1ag>x<Iљ,1tq/aL8{iύEŇ'O|W__Pϖˉ^2y,bzi+(H >G>W-�</!^Shxt xG}aL@MLvd�f;bRƄ"�#c_:2L(lmpSۼҙ bYDkh+Nq?*es9Ӈ�q<(WA> *YceTV-kC~\?>=De{_r>xME S7#M f VSgIXP´s,i۾@ZlvXyAQ5$~dm:Snmvn;&=(⼢ <Lpa ~3Y><}Rcz<C|gʱf+ LR m0kB4\)rCJp�A6OW+wVŎ,y?fs6 [#eM6]_ (AF+`=O_~hGjc8e5݃N C䇄O%! cn"9)Ih++#?$cxne.�3Y{ZD8@M̴Y>dU2_59Q(R[Zĕ{O@4ӱe9pOM|b@\""|1@^hÎ}DK2Qʅg=b(9db3`γ Hr%ɻl2'_Z?A?Ahy0ˬZz+Z>(Lﯕ 1A]䰗Ex[q�.~JbS,R8Ӧm>IjV!DK@z HOS 2Z{x=D�S>>}\{.'`�y쀵̝ FNS(Bq@ %NϒS,৥1[+n vBɟI+|*,VfG#EĶT#9 =Wa8|ZJ @[~4 3+UB `3ˇHKf> e9ϳN+t<J$G2< N}c4c {@^QUոS9?Ĕ˟UbRũ`cdk'U`1Ɨ')H)y?nEI1!gRR^tUh`fas*x>W-r!UcFl6%e8?7BQ@,Ndo$lw&j4cZ}6T,*>q^n,7@& "/𻧄F<EߊĖ F-GP,J1GFy5��K�/ seUųp8m+ى ^LW0 U)@I`X Xv ݋#>gy{g� Hl4VєT[蔘Cp\֔%ȹ(mpcv�D ި\^F 3l3JpFQD�*++b5' >h7�;W#>M�轄XzDx]>FC]5or5F(vI6lr5%f YtdxqD`|[$mb5 9E>}P<V"IR(aOJJHR$n�W; {rp<�aRQ̿w8k= G -thĿ?�FenEBȴu*x8GqJQA!hJB4F$Rؑ2\l e u'QjST�J@ ]җ !P]lJ q~2CυQA�.<)qn̍,#'Y8ו0rQs 178^ (%vFt@눘Vf'xL!fmހfO$,4ZK3 /\ Zd`Џyv2bV0*ywBOjeT$C!=vE~"ZAT*hEdT6=lGiF3 " JJo揳Xh$GDD))~A2= SPhfaz$6)mخ]v }̌!4 c_g`[ ctNB7b%_ �lA"|)Opwc GDҹ@ljH{5b3Xq͍339ŻS8G0sx":Cw9SJyp_FZؠL =s l5@iBwLl6iLZ?f:˳e8E< ޹L2-HK C^Sj NDge-0#039*_Ұ N&N載4+`1M}+%^nOR$iA@ `*ҧ[r%1$nRP1ٛ' ه;oO0"X_GaN*s Tmu9wAn FX*b\HBO+|c ^P"،.M4tKְT?}.�V Y>UaĹgXR5Z[N/TR"4 qV\A4�KhV!$0ãubI{K �݌[9ybPrPεd.@E i=f{ڲ °�^0v,&è 0f~dnvG0C; Mit&`'lW H@Ǔ(cPg9/edH1i"@eyg\ ˟p[y3" ^T-H oyXxpe+{_m{D) цHPG.;SfݵY<abGk};3(UԠ RNQBXǒ#4- (Q{/�A?N{H!#bA}i Ol_ wsL5 ƚM{b}uL/Id+# Lz!E M<b\G ,*Q'�|܌c*Ҽӱ!j[K5! 0 8IܩZt z-i1 65eo*~d춣^?l~1T}(w98ɕڽ&=ҋ6<bJ*VB]$MxOfzؚ5y"Z \oԣ*2Ѐ49@��˲9NMN?O@ɖN<$*(QZ9_vf*aMRdﲣgeR%`CF @u+t|4чD1xbߍ#2HM>uz{ڵӱ+w1+ )9isgox{54};kpئb ד^_!�^wN1?_3}6Y@Aw~_n*&lۯ@_$䗡%,%@'w)19 f7k+E|?؊);<Ag :v <6'VŚ\耸:?7[)dCLG3X~DEc:kiQ>_LģfАM]ŕ:Vy> pHG o2= -:`сﮙ�*!|AcxVfG=621!!X\<|wѝ6B"D>:?c%(NK-\N.LhFb6 Wx;h >NI,jgGrQwJ_3͝K̉D;;޽DO| NԳbxH+EH#ur"QJJdn$ ]x"EY @eʋ@O=,\h!=Qډ�XSgA<y=O%[$;6Pɘ̆;hx.׏@�*U͍M?b@>B-D\#;$ӜJyms\'6xr9b9!z#IqA#wmJ n!mvJI/bLnj;%Ez7?�2ٴ!CmO%B(C=ur)Py5& � D;T.�?Bj+Z=/ 2'>/6\H%=?0&YǮQճl XXyll+�4i=U* v#hx gV9; = {@�qsS٥HF;}Й6=D4߇Ⳉ$2 @҅aS Q֬fYZwֱ Dr ܖ΃dkL*]msJb`[5 ϛ ;N 娟,_W sF{%+e8&}1fJ+gP$.ݺJ~V;MHiOwa|?D$x-iD+ȄfQ0с+YLrdETܘ8>zHQfHƸ(3٪\ l4i5=z�*p8^C{ҵ&@yS2QuGV8">N2xdð-V݉FTDc]x^f^k"^kStI.i!ϖY#J6}<$nQ:@~ȯL)*GDANݣM19wՓ\9/J@ޅܢe{(1M i� p<~7Eo*A $r\E� W@o(Ncs4 0gg(W^ڮE&lAv -m(�!d,L-q$?1s"�HrCUGSmx\fB�VFc72j*Noah^U"HE#s}RD�#)2Tx^ZtT @9zn`"oA1{=~d R'XW L�:4m敽v`k#`0Z -@# bOQdB ST})srW Ve\REr$!8H H@ !K[lfsS?L0�6#]8dŃ^dP^A6[Y7kDɕh_G{Q|߿9ZP>=29hg@^ؒTxU8u1$e~:~#F:RYh}YE4AX60dY^}^MCpx ̖I.;Xe@I1s|Cjc6611zդP >JRH'WI =?Տ`<( ! Lx̟;]53k�M`wbݸTڤ<)lercJtEUbl7@3+դCgpuh@D@sa퓼ȼ1O,;m¾j7Spn*P~�?ke|Y^J2-q8t"q,>ml}AC:$H%[y{0&puj ?) Vի4Vwi'nWdiW,LQd۲xxȟQ>q,6Ga\V~TJ8"【BFwuqJ,�v,DREnp��Ow |2t:oDHz4,|֬A;_DyM!*-,RYҝBsaύP`IbbE�W,!A~8 91jR6am*e {H k!Z*U4jlꫫ??80&~tC{5ɪش :+Dl\%ô�ա 8BV⺂j! A,+J+vD|~1Z5=kz7w6|xK3<<$Yj]7:+}nn9?l6Ar'-Pe_Hy&D68oʼn(m9GR^0hL|^gwy3jtU2^|ؖP^b2n@ fL|OĜ`�!3Lk3_Qh?ՓD/}JaHjRMeIvV"w|^�eB=¨@ 73s< :!=dL#d@v%eܪ~*d~nheAYb\ p0jzC8-l~Dok_֣qoHecj1nm6ZctU9rKiV�'>ܘP#_8p]? 5 D!,T+cwfƀfV%KsCND=G=A6cֿ<!C lw3X)#i,�ܼ5xlWJ )0ǜ1n!ۆ{<` 9x9C"o,bk8|cR'0 5ӔzzhjwK c^D f8 \�@�`WY s׵`{ok r}|)VY+nv^5)�rOܰM?4AmC�;rw*^)\TRϞL_NIk dc@1ژ,A [PYP0E.A>˨TX=;0-1Y"J˜dxǽjW8 {Hy (N!Kl3 |OjxH�6Ş}N�N�/_t;EL}ssd`}(zp$D�+4-Zŋ/Cl֛1dXQ:f+ cvneV~[] GqEeY瘱\ dzRgVo(m[]\F䱕26d=܋B�yh@pLVJىYo,0M%4;܏9Xzs}O^_A[:5ߚkDBy(&㫷w6+!LeUӿvKA䃞̄9M]b"\G)0 |SW!w4GIP#VJM1eiX[$߄ܿ~gw�˫{˴/Z<z:I?{iħA' *t I A !cTo-ȓL A$aȊf'8l0= 8qv|`ZY2iy p]wRo[]=Q_~߱t# 0pԺLTlW/LCB ,vЖL82>+pp GO6=M߱z]AC? 9`,mg~uqh8H pᇖZ~E^כF s1:v= r�@o{ ;1^}s n1XVF Vc VzQo۪FF>h\8|Ee<Îkl"mbީ�z_w^ l _{l*('Ҧ KXUh 5W聏atko�r1h'ܬWnoR`ĮW/U͋T ȡP&sVd%W,b̃ 2/ȥͭG G2Q0�B oJ]Ih2\-PnY<:48@~h}ucU/̮})1러p'~B/z ~6; R<;. d Met&6xɮ$\Unɂϝ7u^ݥ%5Vꥋ_I'O܄h,ص#X='ŵ6)zztήA.,Wxܸh?oqd @{<>-P0o\*8fg98;C%˾wԹ :<7QV4]}3Wr]$DO0ɸC0˷4!hVVO>X"kə3Y~k7`oQ;YXL^jkqKpf'%BXXr:zo]?>Lz᰸X=|d?Xe'P`3-Q#/~ iخ4=LaҞKZ:&!!%:ϱ}xr|@FRLt;rFw omlo7?in;{urxtx g?Mꋯ_[&xz-zZy a+A ܹ>o4jtXjue \>aVp9<;.0`luP2k*pZzܨ?Ml}]3x WY޸A" [x8 &?-VQ^R*V%Mh)0r { |D^K¸}O_5b:gJl'?qT!cWb< @O-PR-.þ'~Wz׾kV./=6Wi3ԣ|'P<dKY?wnS)YJ%P" 8�/j{9dZj^[UL^۶ 2AC߿&4>ߗPYoe Ih.;?y~w@�w ߊOplКzNδqdl_~rbNgxiI s W↯klaEQ7vA(J^f 8})vZ #ěm9D잵eYErBns{0Hۿ~mEWG5 o wk GÍhoOKŤ<Tf.wOgϯ.</T~ʅ;DT <ش:C|QwD'{ d_^#|w|_t`|k eA$$t 糈>R릾Umz? +FwV?ɿ742zoމ׿򕿲QsoA)޽^H8Visw) khE"KcgʤE ʮH@6QuٔS LזK\éLX鉀}$y@4zhGϳgUQw\~F{(?}p`a;wш^�X֗MRly,I[߈=P(Ο[ ȲNJQca0~ Uh �V$g{Ж "Z\4qAsٷٱ<"/E<KYǐܘ4^ [;\n=zyچzv;;{׆o7ۦwի>֙2و=e,_^ o{͆*ƟT{s*3s^B6bVpa].e( ޮTM9rĀ)YxcJn/`T#ZَF^,sڲUޑ_uKe^<[#@ֽzf[?X6[fO2_[󱊃lW|7i}B׳ε_Ӈdty'1W@SͯQY�Ő48T*gDȓ(0$z)]bn--KzaGΒ" ǒR"H==&jw˝=Nޮvv;^Vgov^Ժ C[jJIq&�5hNh/೰DDyk~zvL M\N}5'A (Y[\K:֮1=fkV+ l Ń5%5[EIl#e؂#N^VV5E9{ћ76؁fAgjokފmܨIlq ͖;$bf K/i-]̌g;eI֍G< `5~A+ #A΍aNG0c@L0W9,U OVIgz艳n7I)%w�>{8kWKc” +5k\/ex&zx4t;wu-4M&61#w꧿U�lMWR>Zf"'g!&o_-T8{{ts~΁`>,џT5nnڢSbg{׼{hEf*uz :j{@qZYQ!9ƏY}`USMbbWnC}3gMH'@BFޭ3P7 u\ͮч^^QR֔TuӢ$⮑jI;ՋSG-}_7Kzhu(㸨X[S-?XX5gM#MdŲ9n6k4iI*@`dV9ҧL�WT8ˈ7%6dfIvXFt2v!,tǦGz�<ܷm#x<6�*PQ(/)rw�0D`aKv]d4Mg"[H#_�p;1x.]݈UU=o0M֘,=B`iա1q۷ 0eZfGmꤱ_miAu2s }^_{0>zD7r}ndT~j<'~(zȑd  (8=2g.|L fn�MW$s: p=@9!n>]p@QD〴zk_=Ǵ7ǿN 18Y)UVPR>'9_?%.aχ\DUShBD =rlՊeX$Nz#,-rL7%,@.4&# I&ȋ~Q87DB^N:NiW( |oyuqܒma)`yZJ\0MSUu]EY$Ys*KiA$+2Ylj(-Ѥ�hZlÐz� VOQ_xcB\|wu7<FWΉ\ǟ<bL`2 \{Fܜ 0e0HJ ^HdUhCSg{bVv|>2A `@BU  +-~H C{Ȼ\;5)vS8@>iᾴ Ыk 'v� **i.X,Obs�x=1DW=+A,J`ީOnI(^`gc1}D/uګP=02<Q`%)Qn+KRzf~h `8 lF+UfԹ%SW,–2UA ,(=k EP�; `'B3`{ߎ@ l�*|ȸ<daveoX5[`%I�3�:+.mo,�+7N=+Kѯ|/~laJB' ����IENDB`���������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/no.png�����������������������������������������������������������0000644�0002322�0002322�00000035572�12061426050�020263� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��;AIDATx^ZY#Wέeu۽.gzdfB,2I& < B<HLhY$~�g ^B"DA4(al^l/V*nu: G]U>|;_U3 @a8<asa\Letۤy9:"ۅt]ot8jyh&j:]6�]7MMhHغ]Ӂ2[ \@;gt,K譖6!u z(!�x0p.Hܟf (tq@P{O<ك3Z�FZMo޾}r8ywϞhH@A�B<Blfi t �A 4K0h5z￯an΁n:NGظgW!5*`׀mY <?oLrH<! sv0!�zFDR]i[VQ0-ZVKVt_/u5{�@Yò.-zOMMAVvn p 0$z"tf,2MDx+HhwnXl6p: pu akv<~bjvV/?.'I95E-U(#!K)b^IEF2 3 R-SJ9F\k4!Tc��t~퇀s�"v:N't6ONOC92Mt2[lmo}/LDÜ;�k8cӑ udE"tRisJNٴ_�~ TvAB〰yxaL.WXZYfL;pЩ׽,#ط~S:Atǻ?D"E;Qle]vQ'.w > 9E gtFhCTIU*ӽWA5%�rw=!^)%1 G !MץH:X6 &̥ .nalz(e497ݻ } ;t�D*g}9?LBjU:\ t^}s9R ˈUtmY<۩Tl6air,s2%pi`Ÿ�*i(?tڙ3mݻTy#bx)A놯OC*/pz p丳Y][bHH CGt ,| 「g ]�0DY cwf㺯_9zK,  Vh,1 ҈`$&&(�;=.nݸ*7_:w<78@sI�x|D&NgqQsR\e8۲CZ۲.,#x]`{@S]~')(`EٹrXDԶ=doPЯ5Q? "%Xx9]_S.S}s8`�NP(evzz*cG->okI`5vhK+c `A�bq&N?nBeB�SѪTT޷x{Gԛäg2Ta ]mÈI&ag2!-<Y)بK7J9Λ]<{cj  h:q.iewέ:U5e^�-}Tju_#:pbGBxCJ#Mnq[[RD+G$9%<'yLN LZ@Q SS4ǭ# >_m A; 9>dƭKԿfp~8 OԻܪ*L| {[Vlonf e%ǩqy .G�FitK VWǎ4(AV>䃝mW(qis>:Jǖ#aXb"|DO*J%P9 jx0͋ˋeb1> wyP0.0\}$x Lw>(ሇD0(L&/HJ@Ta�TRAp7@pطUJ|Ӷ9ۏ1#‡&%A5!>L fh:4@גCg0h�꺮ʖ Md#N38ZǷI |phdcOS8㋖m_׎>/3OR ?U08Рu> U]>6Np>;?$bO)R ` dplϟx$7??Bv$չ�h1S_BdnNv:h) 1wNDc+/ϣ>X��ky&N}C,jipU U`|B/w1I4%%S߃ s#%<0dԯ!.>1ld^R rӺiKJl\V+a�o/>F`EoF $+8/EzrR>Jݓ|]Sxׄ}f{VƤ?ڽƣCpJo#q%ٶnSju�%lͿ]w�/i H7uslH#|p]U}~=7!h(#HڙE;3g9#`Mv-x f`-SoءH6E &,V)f% tlZ@ܽ�q#ux/8s!$"X  ^�"@H7>B 8!N␛ۛzws驣3={ftT]Ug<~:K"o]򫏽ORX/ <CL*d7K?Ia&tIxpȠ'1lKj*1Ryq8KF亏ùAY=$FxLG}bgo3PXW E wK>݆d4ߐ?|}͔~>D<cؕ׉e`ɮǢM:+4D/̩"#B]Ĕ ߙ6V[ѴwBƨt2 H\)rxg3b:Q6UEF e4?%yD__^ڽ"b@toN+9\t"]-l_AP RQcՖIpgT4<Vg :<}qc@:jPr#e = HL6nj=*Z~ӽ[a0$_GA,U<?OQA Iu7ǒ�t>e\Lv*~Qiuy_?=Ǻ'ďTWWc)3pEM¸ B>ֈ8\Pd@ w& !T0k `w^- *y.& =;TIP/}qJ$O駛qYC-3#~=U6}STQ#8gq$ GJ@R>;"!K(CPu7q6o[tx5t\HL`ZUG L YIF5^2&?s׮}ٵG|,fnQ@w3E?pT$H D 0cR?7ods4҇7y9{$3zfQIK%o| *Ĥ<F:fj s7`4Mi;ʪR?@0]HzUu 26?suTɚ(ÅQ»zSбǝ8)*P\$'G>5rYR mpi C`+9]LD9+%fp4ǢrUBa HB?J15M�&p6qnRGGGt]Q-@ؾ.&yJWGϏK+9yN23]>?Yj~>҅^E3`UH}r1B<:0SMEctfkM0qg~"dge/:O?1İP0G˜'ͣb{FW@9�u5#zSpOMX \Э |W:wG}!�ow3P|>2L@kszV)%Ys1@)h;iBOO cDWH>SĩaN+1WI{ET@-! >1?QU qݑ剬60IP.7+hX¥JJR :`RGuQ/<Ă}:Q\0QE?;NH?z?v$Ʉ1ZBp Z蚎[>mR3.= %i= Bku+x;b$W i>e8"CL <O6`Z7c07Рq(>3ݳs+A54gW'xV.^"ge~>+/~B]fGoiu;, 8Q Q|ҡ >`b!H"ãV CR͋{F&i>i7+D3XHYI $`P]:nWFi͸gf0` p[rg<5w$ɃUPU!.`4 fG(s$c;\ZXEYܞSKfxC|\Cs}I[ߌ%Zp phA#h m 5ɗdr+dbضqa#`Ѫk/e.*\ gtE. X0 m:$X&ibZ#q1PZ�~WִG Lc7#Tggҡ`q*TO0y#}F K-Y'Tì,F`~_ W`_>?jts}0)=$)(JT``B4٠�ZP4\߭F}wp0\>:WXƅrCYkDyy@`\._JDQ*&@;-,` `k<CL)Jh^·1+ Rblt1'K(3f ,>ō r?,`ΥZ<L(рfРKL s`@+[KNdFb<|K7Yu\l y>ei,н++ˀ,\5D0Glǀf:y{shhP~n 0#b& 7y3PVZrB(YKpG.wυa{Ct~!+A5ׇ.@ UZ*QH.tܺ0tG V_snF.v:H Ρo5NXK# 廄b>ލW^$b2dzM .ѽ.d {I{ޓbd | $e95י1�5efah 06LP>;f&TM2(~,-ͱv3s%WB!�1"6s!ݼKڙ4=B>#)@k;:IP~[Q-p�_LPB|Թ�u!`\.o^hd%F4e_YYjSD߶/ޜopT jp,9{:ؒH&XͲAg5gNlN>wWKc-F\n#�%yuX:nUB|f.od[FԥJ磑1 D'Zk_#$)_WLהR'3/Nad#,&q#\< qgy5ɺBμ'8ʾ("DS7 97,<,^G::t0U+"2pňX}-w�ć(` t?$X=qܻ-1�])cws܃]= [~љʈE1Dꙇ<ҿx P-ێ7HtpIeyK`>�=I@:hE2+i y=BݸN:4-T\/^1π}J Z; yW૗X?Qhe9}+"qWϩ<mA`'Ja$jQQ$Y8v\Ww6|>[{xD$AUϷ ~>w!B;QpsjwB QFޅ9ٮPRko@:aHg65t._'Xz6[jk0zqߵRUy_ek9~`o*"10BF.BJ/^mt"E|v m,.\_aG�X0 Y\`(,Oyy gfw^:�(ѱ[/5~ /<WѥC!8k&JF#Ϝ^•8b6){]0a !O0@ЏjfhoG8 ~Z\ н7n/DXZSmd-v�UŦl: -yd Fq` z!"$'@>~Qe!D[,#JϬFmcon}MB0˨\7`2uD0 X]ieSa@|\=nB![b.ڟut:wmLv&ފi-afy>NB) >"@*F= /I 6x7WO@ |H~*oҭjD"|r j!=B[',`'c4#w]|\(]%`K*L-z֪m㍠U#,/W*t{:'x?S+#6PU.- <~[_aE¯ N!R1Bu9 ;5<\~%5e}gkPs쌫=#?%�*y,F:ύʮݖ:c.5:PROXQqSHf&k橈#(4PP4iG#ˈel(L@&oy^D=c2IZF0*+Ή�ZveE:%;aַnvrkz c 3z;Pk#PF5|_f56v=<X S� ^#`,Sgߜ^ ~tԂr@:9ndVx$ڨb5pO<~,(!<9 1Xv9᠘p48i6M&0=-<� PՋ*b5Eֆ:cj$+t@&"I?MFǹx 3AȅDp6;p6u03s8`�`5"PD2x$u*5}V'@O:Jxڸ/{~{"iTyGE|w}�qϚdu~[&X[C$@ ʄG_R$vvw}Mvi \ SG^1 ($_tw?gG(tj]L2(T_&[a*] pM|߹O۫EF24�&t*?Tot~: ? >FGpqPK{|ZjJ5T;6ѭx Q)Wôռt[ޝDBm̑p{mngޞ_>Rj 1Hrwϝ>Y8JLM(Q�ƅ0@@5۪F K?2j >1�(Q\!{bQ?b)YD X"G 0 1GUjw;}/pQ#e잝]l[2(ݦ a<ᷗ[Oŵ.^ed4̭6{mWΕypސ>W60@Cgذ}"ң-W{@؏Jx݆ݢ9k.5_ðV:csMC�/R-4]ۺ(|-6ͣ,̓GcVuϷ  +Zȟ=(Rɸ\kwХ:ڽ Dћ66)0dO!jְ>m(-#{}oCy4Sѣn䉈C t(!=�ؼ<ͷChLlT7U.vM‹5oG /(Fұ!>|܎wzM yI#:~}i3U=/&. 8B!%\DH\{8@\F/.3b0@ǢC, $ڷ&P%ⷝ4u+SHQ ־X mC05? r\C8P3Fgq6ٚN-N4/ D3::WZF_qH>񰯡WþEKF"z#wӸ1 ҕh4 /!/sʁjTbFhw@1<WY+X8;I>Y"~Ly"|x9~s5*It$G"8ɚLH5ԘS?C^ V2)?=4&cv[0tvI;P.oN}<IOI328&Ug/BC|`ɟކ t$j"Gu@ }Dv H<#abPX &N[�{] qxz�c=!~ 5hµr/Ro]c8wsbKJ"Tc /rzL2mP["Cs?b h"ωǀ m(> tt2$ ;_-ˏ$Jzb�Ql}_.n2oOSoukG4pL SE󕫦% a0x{51�F6*0~Ϯ!iો /<l֭Kߐ C(##QH?EXKeՌ`;4'4iV}t}_SW (�qmclRA Gx<-LYCbm` 7 5z#>  L:H` TM$ҹ2l B7}s}}D G8_4j\flA\10U"^@sB5`6߻gIZpjڨ!/jIa(͓a�hIWok8a /g`ɡ`/nnH j;H޵-I9A$_Ct[@,߼EIAc= \Қ-X<JH]iwCaRǥs4W33ҘFUY^&~=VҞsE:t�_\0!\dl1.�k#DDCS@ZO.Q"JP>(} CHA0x$ ^z#u*A^L]0%wEYͲ"7.pŎ#FH;Z0m9ngk噮C ԓ۔IoD$@pĎ",#8WkH`vT~FX2a S%:Y)-@^>rDx=0Z4-1i^aw;+|bΝ7-Q cvl m uʒ#B_P3?cpXl|)cc-vζ[?=mR8AmԖG R瑰}/D=w5pG a>E8-v {& 16E�Xs(Q qW(-YE&*հe 0-0* ˒E�A0yLS+�b ~Zh\+-y1y g gEd~N+k6־|OxÈBgB=[eJ-^|.2I5O:J"@*f,㾉:{0 }˭ &A1 Ku-3u0kֺz) >Y\`@[09ཤK>ن4 Fi~_�7wB>RDvb`-1O>wcEBQ_�ƫb*FױF;'LL6Kqc$5wHr\T#O6U@z!>=Z`H:BEʷ/n$ ̏ScXҹm~b̻@ć9V7ՔR st? inO0@=Wtt5t< /:8GQw ޼[o`<҃QZ<o,w+},]nAƴ5xhOp D# I&i786.͞E &�^Ӽ4?Ȅs 70'ygD|fD_[b+,kwH࿈E?ЗqdrhJ<x w3l�qo:޷:{fݴϐĤ$2 ˢ{]fT/:OO?g}sJ ]Ddӡؘ"Mm~C`ߐlsH=>#"lt7,S|Yv$6.ՇI_<,&(hAk+x@e^p  g0CScT:62X\F84) n4Jp EY\T\D60 pE|c`i$S`?6۳Y|x_%ܮt>wdпjIݾ�T9{z7< B]E")«59 F-;`!D§z.i3$uXU8?I +A9> '-ᩔCAՉ7kyY +1|paܸnQ#u"8Jn; (F֥ r]u$oi',s?Vͯ2~?4 yL0  cc .}Kk߹.|WUso:*F;ϫ;"̿%oYgJ}!TsLPyݼlH -ߑ_Q0|`o/m+H񣫫*@"5޵qadwbnզA m%DJ^PP -<�⒪ЫJBh.vf㵽39|sftF>vkU8;~{QiDξp*z> zӭj)}>,h B Q)fYUEk>p2+-?E_X AJoR[&e SEA:Aul@eʕ"+jyT/ЮE|;X?*<z :(t] 0K<+oϛViq -S7rӵGn Ege U6ז$0sm=tl7~3 ,䗟|sOEV3!Hߋl6 8IR@d%x)ϕ5�5x �  lN; [\R>Gڜ1U[gp (l>Aϻ?o?S-f0diwuJJ[-@#hWxs%x{L8E .{< @u 2 | [/PӤHxFN||h HaNy/ W;@*"/TiG_귐y2`.=p;gŭ'<ڼ΋*ie[gHI}bͪCƆS%}787~vOEi#�k`X/H(0km1&cj`![<ÎY@Q9h>73h>CL覟a vc|?昖8MyA-lC)Uh.a+[[bF5tCK>m3qdwIt!AiLscg!(݆�|>C( | 6/]ޠ:j#sП/J<vt!"N<9>TD))t0  hA~ E[,Gy8⋩ _NƝ{b[Nq!.,,앧%3HXNͶC24~1R?;3w, TVtXſ2fb畄Q7M&ly^wйF2Ռ z=^/ |^)@z2`r~=+OA/QN"'J͇�@DUy fEƭFSPh [Jo9f -x쨌1.IQ9̲k{Pw~*x(YcP,Y(Kh IfH*M u]9/@n_5}`}|qc\GS#<h={I6B ֯ؿOYr(M#< Z(~!r F_9ƞg Asfxl ,eH!/U!l ?n4&:1o(Hπy �[EWq ۂ1v6Iv#}h1'Y j(HsPP)8wFYves:`I#�)`XCDH:Gb,m+, d ueC c*qO| }t^G/ٌȏ0?̲}";ƵSd|inh>_J6i2�L t ˓d9 A`4�cZA&P`1`kAUHe2&�!9FQ[{ |Dy9MV㧖IeFH.r+=�1u;+en S:֝9b9قKsǑ]Yj2`:]ճߚSNQBSo,�vz!0scUPmYl5TpOeɜܛyq7cNC@[Aχ LUCݳ d�7hS�,d@A1>p\'Z+= Eν9v:ߨ+a`|n~W\L2lIBG0dw_[C|~hkk9K$� ]X*Aƹg<",c Q7]9{| dۛczɕ/r Mx3Gq*L{S Ma9 t@u0m K#E2yA=T=SOO4HDX5?8,�,�眦�p*@ +@&j6s8 ~`*+&"< cM0x|яVG=7dյkuLW݀q907a2[.qhRy .b2c{}$<żM@ sg( ǛMm$;5}?w޻0$Qo7(vPj;E;VQIzu8K0UW̒)JA 0CA(ujk �',Wh-̡1n% }^c&)Matםƀ߰&j- a(x3w`ʏ|XgkM %fBhB5?s94m&>Өzq%V4zc @  ㏛/2慀ЄV8w|K"�tn/52! fhbMLc|{,-PU7,*vS5֨QB$f 3S녅O�h漾7!`9Vm"�!h݀I,2Œ԰5`ir6 C<C<pw*y����IENDB`��������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/default.png������������������������������������������������������0000644�0002322�0002322�00000014070�12061426050�021261� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^OGg76\R&U "7z qȅ $"ā W{OziHi!S`lNJ"eլ7o7>|㋄hKKKUȈSyyu~~qUL7UT1sss˲Z@4̈́a+2`۶ ;9m)(x{{0;;k&''MTM`0 ׸S)i |PF�g|;/·ѱB#Y X(HO|u�10im�.(8߁[|oC?loOLL8怇OkN4r\D?<;"HW, Ye!kF/..BR)H%OOOrP(?<<|G+PX8jz~" @0JE2L%)D h_�D" >MKFN{??unL�|[XXh2D|xI /84ɤ"("} ?S�nBtςr _e9mbc888d1=OWBB+B<#=&U-A.f)R8^T@o~jL�iU"1ޢ鴁~IU UJE7aj >cW1@~1i8Y[[7emllH+n5łqIEb//J%]i}Xޓܷ]0S`B "iMX|DAUw`BBY,<HD�"թD.XD HsO1P[xfie9 j.D2k{hhhozz͛cffFM>Gω,ě|9YXҾ5sm$q4E�BRh@~1xD3ќrkU00 AzRZ,|NȿPAs!;~=/BN HR )`Ǖ�Xm�I� TbM kr!^'IR_8!_^@Ӂ ~Ӌ ҾcPHGR}Jm]cG(<3k{ce߯}u; u뿃4b!& kEMEC?qw-@8KOk$L(Tک}p@Ou(�׏df�tZ!)33k9*0]g�e xhr4>eJacN@W~289 &MkRv(, CY {%;R1r<zͪO Z9;5O#2PrpO|F掅S S:|d-e"KլrČj ]}f-а{ d9!(3Rl rtn9X=L$� !ϱ̼we问)Lzl.EJI@* PѰE^,TYi#Zqt(JJrT/=?b*duS[aT!�ƒc[{'`' /vXca?%S YqL> _5m|P8g󈴾zD(@0(Α58?K�HOVϪ_ћ_[W1LIMNh @(`Zz'Xdn!9i/a bo;&7mL_2p2Lg?OO(:~P� <X"E� $\ _ۑtcƄY*h͑"l|qoVg|JczT5|Jx r �K*Oʫ3~0_FM)0FzP֧Jbfܟ{Ch[)\>ފ۶: p>,ADМR w)ѼQr}q]<&0l0 Ui*=(0of!n ApS.:mQ9'7@E臑p0A< (0{N�K+ 2#�c((qgXU_R(/ i4}`�1pVoh\f�t-ƿ 0}HAJb<H*pmaL5`m�Gxh>c4vEUf [Yߌ;дfLޗ@R^oE`yc1պ 0cgzf:#%Y'i> !P,vJ}ب?^Ѭlr%TNNd_o@cM2Jl#s_ӵܽ h 0嗣�yRؗ%1\M2L0v(]̒1y>V#p�4tEL̒t;s�?tL6p7~V�@#P+s-@([:5夜ų�!GM 2Z ZO}P0Qs𱷳�255EACy f Y!+B03@idc{qH1"M�L2Fu|A@p#jq8vjJʈ5:Hh("#yQ FQceM;֣*rTӸGUa ? s$h`>$גH~^x΋4Wc-@ȼDQtR$\8fp/.�~@I&/B2vI| /$>NrA |3G TcCeg2SAB**~SǓe"I wr 32j --N0@1Ǚ_tZ@H#!_@>'Dز' 3nQxb$(~`Pv<ޠmm `SB'3x<Rv{{@nTL:Tz~bM g#p�j L|\ѣ{L&:m\5w0�}fٵ26 \A}πy�b+ Ct + R`ccWb!�cx@< �z{E8շ|�s]MNJm@Zx5vS? {^޾%,o4MMmI5|zqv!"O 5J\]KOFvY< (AC#~5"E %0"NR;jyk+m([n ?^6m+ȠA 2p{Ex N#VNs,?O. A"U#7crUPQ!)~H(`XJі'>g.!|lXBkp$(hD6p41N\@&2 i �%V� cq:�&GLRSp?hh ˴C5 `yAd}[]``)K3mRg.Q#11O?brtpg=\`%9b�(lwR+Ȑ?)%@S݀h1Y0nF ѓΫ8L<\!ũKaȗ_Ds5JSɞ+gs5KJM,%U#@%"[\@w3[Hzݠ&܀{EnD`ԂZm_CTB2�8˪\O͸1wY @js@x|nS GDz7y|4КL�DCg$`;6 ,U,.trl4k�8W@p�r~m&CLHdX\Լ t괕t#k ns�#I$2g5o�1#SFS 6O 2O9hb$QB {X6 ɮǐj 2.Ëh/ԵZwMOA � _lW vMm!RHC"dBAZT_XrmM8�<yWH-�i Ŷ |>C*CJ`^[J GvE]B=RU ?iMȜM Q)- %MM p�o KJIQn}p^}6�-3˺GdоSr#h(A�#<�D�\EXޗh"5,k?C554G�YDa?o$0nX?ZR5nr=y�x.Ab�FP��ج|H�<�grM� 8>j`&[~ ga:яDs�f|"~ޒ]u#@"1h~Lz>>P[ ׀{ i]:fx;*$e"@USFe/97q!&TB5#0L& X&R̈́q.|}1/s {vlx#,K7("HL b`s:3&_{"r1?>،.SwvvVs~ iX!ҏn;=J28'#o7&w.pzz* /"}'W( {Γ}c8l(.K~v=5:"@ [&SF_yƼO H,8@5> t{{kWS ('g"鶪l"lQϥJn: zL4Ng׿狋& F`X4{%_߰lV@Jtc]dp&75ن+Hd*2p]t,xÉ)~ʛx<p|ttł*VԾ揈h5PsgnwE-$ J*,e H֜AuA�|)UG>Slv|~~o{DE$V-ZK@?>>>Ti?Vc[Smfgߕ.&>X]vCr=sa^Z__? 'Xh-@Fn+"n"@^"S!mW+`'5 cg`#v/a nll\J͠E8XИQ0%Dec|9Ǵ=BB8#\'�R@ɱx$O(¿h҃RT7ar眑 ,677q j|"6t9�\GX4ZwP4+Stg\ !I7kkkEo. yT( dP%E}T5Oϰw Cmj@\g89?[^ݏru-c{p1 s -Q|Is]A(I�5Y4~޾lNNNFR#]CŨj'9[=3'`0�n ~v6$HBNp,a#I6eڧL aB?S*-9D:h�$-Ө:8/L]L�\q` 3Am\3xV4Bo\@XyX DB 2IlL Q p =c뗱prOpyIP,Fw~',im $PT ?;Q|*ah% A~n�hcD!K$B r Py`SJFQXH=xk͚�} j(~$�|WǮtH�+!!!!/Eb^C6����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/eject.png��������������������������������������������������������0000644�0002322�0002322�00000015444�12061426050�020735� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^N0~я[CP"^_{Qr~ɚewҖK�����������������}QpiړCI`{RWy̌1^vi!|Fn RΗycbfzՄY枠�<\;뾪̋WUO!amL櫀�e:ݬ86~BcUJI_ރ)vX8 yw38?)ֹ4?uW2eJc㺮o}̐3H--Y ?E#4E$Ma(6.EFW M[7qVǭXbkH2~-͘miF;{ι|;<I"0@`2O%|___Oooo p2kHY\ `%P|盘P(VP(N~clbbgxO21�F"RA.VlSUx0 & <|C�r=3BUal6fckkKitoeX\úiXx,ѓLi Ba |,˱66:ʆto* !&(IraLC, 6g xCCN8|qh(\a�Ҳ\t]A402 !x@^kb<冏=f9zqVu,Ad|D"{`4BhK@t?pT!t.'!`_g`XQguL>I@8=5{8fai rð. kTg*Op�|y�lZk Ƞ Ot*XXi/sLMP&ԏGPL@dll\d2Y …rjUYz `cccl||\f2dgyB!UWvR;%i2` X, D) g$FrZE J� 6:EQ<n =x m c] | 3J#K %H$<ۃ?80?<{XP T�}U*uollPتVk%\8�  (f�ra?S.)*LbݔT,N P޺5`oY ~U$`{+| -6ęx$͝<q8th!*'w7́+h4 `>p!*}}Z* "rH`6Di;4T\}ŧ� pH$r:M>'e~2K/,u{9l<ILRIrkt \�{�FSLo:=;<4PH�M~8}0vy ~舓"hP(1ѧ(jf}}SX"w@X}@Hx<;5NFBԴ+fR2o6=JaSd`]l2 N@ZVK_~ݯ;0k++), ;Q x|&@ZzbrvG=~xϩS4*\0}x#MΊaGP�Fe=}sϱ7޸2W,SZ_ri}nmumlb6;M ,DŸ;f pS=I>~ɴIiϟk$O `" vavر4.ֵ^C7H͠(2"+̚Hd*I<?q bWۤs* [YYa׮_kKG sss/WW7o˘ { A~׮]۫7 ' O!Q7/H꙾ 97X޽r7�OgwPa< n޸X$lخ`CqJ{x83t},hhprrSO|-X�IE+dE"FK⪆R¬%D]Qu+ŭ ��y`~W�3 x<?0<~ mPOsWc}MR2ˇ.z1@`#\Ulm/^<P]ƞf/f/}Aw!烡w;f`$Hse =J\(prT*MJB۷sFZZ*&ח` @esҶ H:W_=PFU1kW HEiD#(H>|D$G=jOz%HBAVaFwU 'jm�Xi,�%�oԪ*сH(oϰ{wr#AKsYK/.\xmcqq;wΗJ֯8ZY&e<r`Zsɓm!RGǒO${S3Tj"L&(WI5R&yԏ- \.Y1С�W^%!qfs|r~sk-nƒغ*G+:�x[{mY̆#a$z`GQmƏ!#SO<cl{4=%hÅwεXێ1[A 2U!d@X2RF͛7#�& tMW*&+kbc}V� dl{ (EA!?) ~N. wZ�jH7wI KfCp[a6q[kW4@Sk j^g!FÚDL AXٌ` Gw> ;�;�E^$A7%L!+pJq4"F%TGE%khT\n#rQL 0#X< DWH_ccۦ|#_ڝߵ"mmʙFN3YZ +\پ72}=˿b׿Cuy%ja?ض•P0㠉(6a^q(Z 7vdpK{h[g^C=$|R[ D?KHuR  1*8~|# wXG<vvo=X F$0@w 01>�BNYUݤ-V}| η[!k&~j s٬@jeyehnB tWdX@_~yTV0Z /!CAYU _P#鷧y[L=kCxč.v!0%ʢH%Ꮦe@V\M{d; gϊ'pկv3'T_ʧڀ�P U{7§a5-9S!y {rζ3L^tͺ2L@BU:nJª< `o*=: >}4�3|!כc~a ܻvq v%wATb7 H8s�@?Z\,BDuoy9sGO`Tb0z>?'cܹe"O�`w,|um{Ns/6t!7u/K.֖_?,!qtIڍ"DP~wO:kgZ�йox@$@bQ�X6G23 SҮfxսښyG@.x<CЪ0YhB*ADG`Օ.mhqǧ[k+~;m:\!7Ģ UAçfUM׷}|2u)@) +wW�W|(lѿ!{ǮByVs5jBQA.֭[bhh>g7*O3Lg+g>駟n7㇎LA_wR v�n8-˦s<xMj<ehy]8+OߕCC'2i8EYP[UԠ27-K,X""o|392cW$tCrTEw yj%bi+6]IĮ#Z $н)( 2qEn ޺fpC ^ZL_~[0�'rQ3|_3$;`I(q O9|T9 ' jI^[[]Z=evt_ Y$�e`d]E Blnօ J._@C/׷K|N3ϰO~oHOk^� ) ЧSO\ӃCi= *{m�okY̢e3[L+`f:KUKUBZn4:oZ>'?/:_|^ ,!;gO&&) 6 N$!r @`[/ԫJb!yXshY0�_FW4U|FBicAJeb.mYߥn0L�aYLa:nM37ʝ~og+[[_+:>p8*~n߾M@RR0":1% "*uAMTP~\\W1-Fι Sdk5vE7[.||nrh`}^n"ZfQEU2 N7t\}qohw70ː 㼈53<- Z&~E@!t?<�^LtP//3ߪmqMնa^#5&2 yŲMͩs�ma2)~PْTu-UnM"ݜ v~2G*i>У~ƹZ3+C&7A*k\5jBKPg?`}c]P-SOSX$.֓HT6DF) LLl"5RB:tL H\[@tR*DHd+.:kO/=ͿٗCk<žHoG{t @0KΏPC{V)K}eYQ^`\ߢ>:kX%n}�|~}LO�^b,6Xط�s@DL |?t S_*-uEPS}D5dhhy|~o@9`E50�up`8F)ށfJ^v+?�8dr LӮBh?J.p:v%;?LWP9`j5"�BX&v%#T.SS{W@0{'g}Hoc>pN8% XjbZ%,f`94hP uL7 gGGBн$x Umʸ;Tq*H-Qdf|!qvgߟw~*W Yv T9|uC8L]�|Ӧۆo,hBvᔰ(< C%( @&9}wy5_^} B'@L<90i yj20a?xIseE4YKh[*v۳((`ZڊU_+R}e?8~%S E&A)|~L_(� B.28HU(BKGVm;焧8'v(+:y ;;//rnWz 6g0(2lCe› myyfI{w=y궘n1څh'mMvȹ4.��m+vZL[Zvv UI*viu._-OYձ8nrrU=p@aY�64MNq.m ߽[?x['WOFp|Fy'�`#UEZg|Ӑ+(@4 lZ?G;s ,?s0Q�v| 󜪃,'5~p!rąPV1t 8SnQ�A  sI_DM^ߑp;*-b &m'rD9ZWX�a[�ZAzv?[=vt+JE?@ dB7a�n+roUkk* ( Zw~)~1_,9?:k0�l6Z0܀DQ| A`uޅ%3) / B${+L-U66Y W+ WүH$R_dt *-kR6S$5F*6+Xش)"ƐWīoCK/J#46l @=pTJٟl^O"� ;6(�+ 5µ^t#bܣVf �������������L ����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/transparent.png��������������������������������������������������0000644�0002322�0002322�00000000515�12061426050�022175� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���bKGD������ pHYs�� �� ����IDATx ��0cV²NR5�`� 0���`� 0���`� 0���`� 0���`� 0���`� 0���`� 0���`� 0���`� 0���`� 0���`�  0���`� 0���`� 0���`� 0���`� 0���`� wc����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/next.png���������������������������������������������������������0000644�0002322�0002322�00000023546�12061426050�020623� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��'-IDATx^ 0@\h[M4(0<���������������r<ezD5{s./<cija4F?mc2kwάILϙgS{/U/hl)"% !44B1Fp̵o;B73p#LHF!fMDr�4h,պt׾suZnD.zΗ_~[fl@y!np#+¶v"@n ˲jN(`KϯH~7cƯU�83pΥ.VݮDo *v&hDΝ?{&"V3[TZ*n;c"HoJUVSTf1'n}�^7ڦّl4ŽM.<Aw Z?ycc�1+p]#hD"o, iZ|tvVR12+fǴ+~5HN y`q)�U0YӲN��[}T 8:l4M##M=Pp !Jٮ6MXJXA>8l$fc?Dx6ZG[aDžkԅX4‘� +gNjuhԙ2Tܱl@EL2|rJz^ }iw�yߧ>Iʹ,8{ `̬o[օz &VzR?kZ VObi6;;+A�辨eYGVT�RӴjW3�~2_Z\]K&DO'`\U!Dπ,?I~t[M4U믳~kk_u<OkP"wcY�$ V;sLoX"zXh P87LdjZlf%FO%gm|Mӟ=j*6O'~i^,[Rq" MNMJ~\-_ QM6=.@<0�k5Z"ې.@4ɧ9&] ݺ|;J!K*2fek ,D0Ouڼ| Y/�1-M(�>xq x(t_h@Kp[ Lr6p` RR�9�M>u!cKK<Y:(Lb-*iL~DB'ʹvDլ۝:BՒacA<S_3?7'IVʕJIFQuBAjѪ*z]*"K {@˸%tAXZ2(+�VhȖ';C]Π$HQB|ii9t$޽;Aqo'•hګVk{T*Tř|�=~_V+劒e S``P=#dAwN`:?)-wBdA WqkcHS0?Ϟ{ o|.ǟ8Lb:_OĿ<19D2LLэp8G�>?ot/ ]˗ϟ?BkhX˰/''.MMO,9ӌP("W<Pt<p tۚ 5{C|DBǂFUlb$\Ayk ܫgPflBި͡f||OAW0aR)9_kځZz4 fo˶\4%o1{dOWI+}S`I�\t p(V흘`Ξ#I/L&= ]VBua; b�?@+v@|n2“O˟MOU+唪)1I%mxz3czob`7cv#w(djWVV˟goE L6>399y69\<{L2D"z(fUs`,o5|H//,=WeO: O>\]=5q̹j2?~#XWP2=M(^ʈTEcކ3ǔў#i-L#Z֜@X, R1)`J}CյEQLf'UY@Q N1W:ޫzCG?{W|8iNfBas  }.NA# Yd8 JSHǚ~ڳG!(]a+0AD4vY�$sIQ rLr;wAxlk{+qgLZBJleؖy FjhN6a~G[J@A˾?<+Qio36^5hEHu iv/aDii[(`C{4@h&hLV 8 stD^."B@7X$aIZ 6 uz1KTD Va6`™Z\W:0~KK2WGS(Ns9GFW[DݶH($gfjJ{W6Dl T@< (kzj>r  ͌%3ΥE>vnv=Ͽx&z_tMTtX|X [Dr4C,ATB}~s}=ͽl6[_Bp<,S6kZzHG#1*|%p1e)keeJG�n.hx*&re Ӫ0y &'Yϰ'_`(Q{">l9Wֱm[ ٘2v4CFWj%ѨKE( PY1W�["&1?йd: GKL>fkaqp޲F'ag?/>X^Zf`vV7eS [KGSdEcQG47W=R�_NM n4Jp l1DJ$ JNL4K̲lͲ-UG5Tw1־*ƨ]xqvY_~_ M0=(׎]i[@~tF [J []vmfZմp_lܻnݖ;1e4IU]V18 �*)�`Y/W!<+5d|@b:|?Y>ư;-+|>Jqi[¶1†mT*wP?kgxsQ-q 3>t4`2WW`qB?ZD1f~6R\p̙.)XG!JW'@*7�FR] 1cew{6WAL&nnn$o߾=B--IUnAGVwTJn =>r:K̇sՙ|W�=nAv{8k]~~˚5]aPN=9О:B6N.0i<KB1^b~~5;#, tܘ"T   49"`i#� ʱ\ b/!Z**@= $-JgB-M+)BP>|y/tO F >A_~:f=jMDgZ[BYE^ 0 vjԋGR�x舚3C[c}x#=iJpMS|W4c+8R.Y6llz煰%>Ňeհ'&5;иl/<6>B)|]p1`ZXxO?tm>ƇfWS-(1ebiWd 2oNOf`qaVɄ QWm�Gn%H'm4氄Pz("^tLͶXX:(`slM؅ y ~yp0)Oq"Sd:ςڂmjy+B0lRD5(/\Uqi`(0u 7})|14=X3Ī%4¯P%ɞx`2mFtW5pѭAŐS_1"+Gt2.y#iLSM&:{ %`˟ (ʕ0.�$̣̖�-KꀳJ̈2J鏦�w�Q18aAA;ФP<у8@~ZيQI#ȺXSbߊɳ T�(=#-l_Ŵ:t2OSCXf;Hi%_<A=L 蠫\H$T�CZ,DG�T5=4zI*z6$H r5X4Q !0@wmm6|"iJe#}9w_iE dF<=9aUW*/' @q!:`961zVhl=LM%9fZ(·"M2c)q*oԿ'J!z=˞Ğ=:h@l)jYqqʪPot}xOCHx>amdPo0-!kO'A ka{?&kk$SKx-Ɣ4 W=U(dO8~oe:OJY1؄0SIݎݽ{'" R'7>g軰_G>s޾4 v)02={,S, tI7|8rY5A}HiIh+'6?zFx3_辉Ps]'ߓsbӽ5XV7pMcm]N?53'Pg`¿7эkp~ie ZtP� h<!ªcc)s ̈́TL/GFR'J>>@tud)XqH\ 9Ad?=GO<K{75@]P�nUTwZӵ`9){)WHtQ{WPP;'qOix V&L^Tȁ\Jg)@ E. -.n\ Cрb 1ď aBS(L n> {|q@6A}T0?Uc||5WXy+@sz|dK,b( 3XYX`27vlO@i}>R j*8D b?4oERI~_�̱cX@XA(,bxl0{m #p%V�a[r A139Bp덜zwL*P0D)7b C.6ob( 4#lCJ8@ 0Rz+Q� v~1P֟|uoü7s)X$&�hr|/R },e]>TCU&$_2TbMu|856& /(uRz.Kcȷ!ʕVX)p=a$Ŕ 1߱F74Qďe wCoM_gs_V7_u^xRUF1xCs=/�ssEgmJsIEV]&0am<�kgB*a>=t i?šZ|n57xm!LTK9UR=GMc�*:[t Ak7H!?+ҪtuvLS pgwmܺiSEMC"F&kIQLrvywV!lotT۶5\ӧo]xTi@K31.ې $ 07?+Y� [y>{(b6P60 B;͔вLɣT%x|}eyyܙU^{y[䮈N )nuX[OWnE;*>CA b�tl~|Ov?q/a"& mDU?pQ:V*l.r,4T?Tn S(P`0\?slg/Y0'rmg|9V$j Ua({"ID|I "]7`^\ZM(*_�1SB:hRb eA AyT`B`0P(ҋs t_޷[+gN۽+pʿ.? OIl9 G6㱉ZiiamAV465UdSۃ>wG|T:yOCh2`WP 5) p$9 3ǰ*h3G#yIYOEjÍ]g\0Fjnf~&?~4xG=*5 X-ɏ}{Xqb#�~+}_{i#^3"u_㦁~* XEy?x}}7*%`3mus76̊`=߀?ղN4`Táp]ӕV U) }FW_ +eْ?74G}/wr�@uҟxhC@\�oI^SS[`Ew$m3_wL\Uhc¯c_['əy_Z\4Cz/d-Hm6r..!k[^'n|%cۤ? d ŸDp+� e,: 0B� 11#DE—)P>/K0A^ #m:R] )ɉ&{i8 =~v ~j"G:J]ֆv0}_j (�㶙*@oq˯:::{8 İ@lwoM[@[lwo!,EMONژ[%SD#`_5o/~ ʫ<w�َ ;.Ǐ0[ ^ gx.d"EZ #u=`4wXf^ r7� �|b[­�wslX!2'ndNOwyycM@6l?vo|苔 ݒu/_ʗ~  |s/?C9rX�aKpN8ۋd)@Jҧ41yV*C T/+ղ̓<Ӱ8zT#<p߀Ҥ�U?<& ?~ [ n)>cF9}1~,~7|n pjٲ{ޖ֙)ịH  P'vrT/)P&ra߬tZm:[DWյ/R۩_o#ﻫ̉[8 | ϟ `74DLMM]]^˾p20G~;뭷ءDN!g8/)@'tM8AS>B #q�cr&gv#Q&^wԝxl2k`s'mvj]~tL|~Ӵ6a]yh'U릙[̙{J Zׅ@)@Ut(dY6f[[[T¥ӰE\k-2 /PI[�6{(MR π{{ywBl݂d`UH}">Y/߼S;.mxm i : OjtM/D8:gw u`6د/bߢGĮ>ssg_1Gt~{,_W3ƏD,{iv6\C:˿Ε{r/0ݣ@)太2 LjžPQeWUhY0TAdM�@w]8tB U$qmRb_v!m(.D k(; ̽Ų b5apuZ!@xBĪm �mIwqaasA#\fw_ÓXgǫ%rIۖB??C\(#:i'?_%/^x|? }8y�@.>VZ1tӆG>ê!ٶ_lPuH?zw<7x5'&:Z=RR>/9WO-?3{C�|�_ ul~X~%WA!e["94ή;t" tiwWV2CddnL!(t]RC 2z:bx $mO~ �[9?')@AJ=+pQįx,D#U2'A�sN_#i8Q_?)_e\/[lBuT! _N<ԥ66>??'ȍI9&[VkΓO|~ch6,١RNܴO{<[鸆u2?8@ A!$|afßPd{ey5QdIP'ALL8Z|״,w2]P(rGJ}泌K�$dHYz-P,�4 <Z^^X4~ \hC`-֌`ٻG /I~S�e)<5I-3AG"ǁ_F@~JnP\42Mph' Jf:J!~ ⵗ_zy/oZmllx�m/~dLS.?& W_y^~a`aFs )߫h6q\pkj|b~dAÐHFU-D)Pp}2+}<ƚ1ܲ e o8p˅{Xl?FMjP6ꮵS0];{4yT  D $5D C{9kvv3)R'?o s?ifzӟ~fQfcQFؠ1ő~Q'cMR"lz_IB1hpı4=ȯYq2D"b gx]ϰ lmWh1JP;H�c Izon>.t33jĒ\Fz KnV|Mƨ˝>Z%%M�������������U*9u����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/last.png���������������������������������������������������������0000644�0002322�0002322�00000017756�12061426050�020616� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^1 @IZ+ȞH 1(FP<Yb-bUUo�������������?�N0;<.tp.Qtj7y}Pt>=I�cR^OAp2<WUO_@U7e%= 93/� A"Cad;"SD"E,R*TWYIʒ(+"<?TO*S)%J!@X�$Lw9홮eσY{ɳ3=m !8޽b]ƷwYv;ﵵ1@AZ$3"2TE4�4w &"V+3/v { TUD (�u0Vh �.0[C|� WlKOgTR7WXa=}cD1"@wU,i�~xh�~DnI-؇]cx5&P5 5jZ@ lm<X\#M3Z+Jq�A`/¿: Wkux5ks7(pp{nkMv3=0 =/[ �l 0'E.T j},qJ+ewý½_:�8I</Idf"ODOMa׎ 8HC(TI5ܵEh "u", <Ak8ܺ2=s#A1<E#CPj e[u+ \_J3Fm )`nyq|,SxWd:ArW9"o7$ag$a~)|@!TO E[֨T"Q@;f0ec`&n$GH;>Dؓ(S@]1:1=dQb ߷ 714 'G(BUÛ)Ad=A) & yAང ;tR}-3{�?yT�-j N?_p|X@XF[I7 Jcb@(z#z=LgY~ҍ(ҁ>&�Tt"cn!SwMb)wzrtjb( >5Xn`Y@5K:4GJ)V :9-$fx/Ըi]c <5#Z>&WE9&;R-h8��*Bj#Z:xr5v|y ncKD PD2?`~9r aDM}{*Q( ?WV}?Q4`w 3Fj>x֟7<dBD 9ۇ!xh(Є0 1*LNX_*Ij>4$VR;?xSR7`,D_H v&'זR,5,0B3dL}'F?H&@#)E7MGB ,$="G&Y0s)?M8Q0;U>t@�XDa,YH+AIQ7>"2P)=c>2UoK$s�֣C+)t2@LMkv׮q"*mJbXH (P+DvNM@&ܶh:"rt酋dn�ZH 9HG1F+ HRs3{#BLTd1F%Io[5mn]>N�d-``?\*aHJ$co[AO�WB@iTBDa�|0^pǒXk|b#*1|19"s'𮏵?&@J#f.Z{/Dp4LTKyYʀ:ƈp7LE,8xfH+S+qظ{Ioy재T]/5E tP b� �ZҴ@ &<HZ T@CkU1C(H : LDk=;jTPep"pnC])W0D RSD{*(5mTh1 8P>%}?=CUe|l&_u3"$�iMՑ*vL0z#F 5c0]T?O~~]~)9BC6":: �7MOݨVleP"N} R>^^dYePky!Ρ"0P{v@ 6 E 0l;#/6>`HEHTD S +YE3XXV^gxVPrf 1 ԺVi;W"=# 5DUPBeK.�;K[]{<%7CQt_\< Ȑ B.U&a^ġް 1^gh̙Sg~80:(Eɑ*vDPDaC$1ib[y~B,O ` @TT u .`hF~΀<=IBo0ff! QԪj=h_uApR;?♧Î*9 ,צ�sf] Z)ŸblD =3D�:ШT+V&{;Vr=7DT%>KjO=gzm |)˦S X {] P~BpgL<C+L�A jqܷ\Ov;!Vj_}BBPȦHۮ*E-Or>HϢjJڨ,LE X~'ܫ߈H`wi9 Pd\ BT܋Pg@0#NH镌bE)h:c/׍}=wiiᚼܩoT13xҝ-7(bg]3c9w`حQ<?}Gmll톯n*;9<޷N+"*PA)a LtZOi�i_ Tp{Bma6Q.I9tHF!`玉Rɉ{ |R<>?T}yfPf9óE 0Ȳ##�ڈ\x1~QvLE`ׇÇz@>�4l'kP;/ �!7IS4U $t"s\'p_=wP'Hf>*"'�#1^�Q;VJc#�XHl` =H6 t}:e"HI&Ś$f]MeE ?s|ѣޣkR�R65Q;E<HH)@+DjQ8kQdnKSԑ9wWf.<JxoJ6hT$HLCal| {Z)7kA|P)u?TJdO�!e,)qRчJI6 d3WzQ4QZɊiȤnsFuvю+<?BlhnmS u@A9F: 0>^CF#DZ|]VwȾr4(.Y�.zjk&0:R( *L{%"pkt3�Q)|^zz,e(7DV!t�U0DD0\n/}]+wn aX訳|B'$) Bv+Oh @k,`ZD< BT6w#N1)h�DlpE])aEjigj"d^%$ 5{D<WA#P�`Bb,dכjH"�0Kx7oK>He�;5!ӆsgQ�! Egx/`>ebyQr0*o Bm0jj �h4Hιka�7}�.!鲩mȁomQ^.H|tH#"(YIV){ѹzM=:ZVQg5o[g^)hEZŒ45 5n;xGefzuƓtJ顙ͩ nJQMmo_`[QM᜻,AE('̲?v#Ec�NycnqMA=U e-u `32i&5IWAgCg.BBz 5e- Fv IZc &8txZҋrPʏ)'dHǪQa(,C.BME/^߿+@z�&�E"çH;K29Yk <6s3?|ANLheRJMn7j(Px#iR0?‚g �'\ޟ 5y2-hRk}h"h"Y6qM9Sk=,R?DN/ &:^TC\3<3( ,/ 1pJYcgc|Bo-y_- l۞- EFVXפ 7ijZ?IMR|^)hrsX>Cë )A`©u7/b!'g67Y^Οo8x{EJ ^*7% OSA2e3/Z@g#Mcaԙ,[N{rAMJ}�mH�- VmRVJA8uVG'Il/0"g ')ԙ#9ڡk�E a@ ;?�$xZ}@p^9}A2)kୃ*4̇gJy@e2GJ$"T�*Q�)@JEcE:K@(_:'Rdv?z1F֍sqaO3<!hq kԶ@Dy�]ձ[}=*eٓ.%psW-ɇ091IʍFܰ֝:W<8.>'$fFêh;?:RJ9ﱸXo]VkitL [2D׾&}նRk Y!ij.x`Vk8~�?/b7dS௾osbXXH@ l3g}Z]SA� OYH<xYVcclg�D+�GX%TO1@e�2\̮a8g%tyS/XyXnA� ?mmZzkiƘupHzNx1M?8gZx画X_i xY&=,{;~Z3#umlJD~M}nY B^ fkL"J)N|~Nzj2F~O u/�f@Z+" g5 P [=]9\[>ȴV'v--4 ԇj]9ICYn.e^<DK毼'F'n hpo�@o~a3wߗ�WaQy6E="{/[c/YkN/6 f>}vI kd x(HL1W n*SUW 5sVP+DfΊ18A8g{瞇/M^tL_KާK6x-A=k7RP֊!4 }�2v߭A$ʏK~עͼb7~EYBM4I$wܸBrٟ6l�ڢ^\Q終+ټ\]0%ZU~npBUM�98`R4Ek)cΤ|p,9{pnqŸ<BD,eMoM`A~L 97 `O"PAeYp&>M2gEdd)3v>;%<ء=|\z\aRl� 0X Bck �; ݓZ<G`g8kIS&iru˗Y>Nσ9$%SPsq9RHW'61)/>ס9:Mv «>#R0Pdcfݙ56k҅s//)V͚*gH RME�S5|6 qMYQFJ&F1 ܢwO-ɸqѐ hzI?H4:{�/3gjX&?Po@чUQUKJ#Ml^.c.9kx#g~z <�%li%֗>@cR]h7ڵkB=j VQ֒Vq܀I,:cfI^sϒǒ.$4�Fr2ȖA/)Qb^"�_!2Z`}�kmfڏMx{%KGs'_Zx;'��6= @Tւ*p &k2EEhNq/47 pߧKwmp|O~�_~D|=sX^^Fhxs+cv˯_d�\16%k0l2!UD/"peuii7OkǓg_m#�ڍ&�ȦFu'!`ljH5H;IםiRtׯΤgs'j?k  {]}Fd= 0X(�+f�1)o}3 Ɨ__~m% Z$Du̅"�2YZ_˚F6e"-tif;sħK3.$-MC7ѓ~ֺOEw&M[$[Mi!ЕBH_w~ R �?ʦK٥˧+3W'�÷}o{m&)3HQi4E� "Q�:84R_rrMDb{7_>vm}.PT\#kP| P1W;$‘ٸ` { }T3oyɠiviҌ3 ?IfO/5akW1)UHz 2 iH" D])Um�x یi ~0O)p1 J΃\څdD>:=_VAқ< HD o[uc `2� B TuQ0:Aͩ^jfsZDIm(NRJ.ez7iH(tELP$6od=Oy HcYZ⁐P훨DG̡o޵=@=S qUZb$Y�(TgK_);+(dEa%k "q37%┰jq( Y c&x q 0 0 SNC����IENDB`������������������anyremote-6.7.1/cfg-data/Icons/128/ok.png�����������������������������������������������������������0000644�0002322�0002322�00000024575�12061426050�020261� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���sRGB����bKGD������ pHYs�� �� ��� �IDATxɏ%~?s=7A ! ,@b,cb˜Bb�[xdYb`cA~*y9?q"n[7kꩺ)Y o ؟ٟٟٟٟٟٟٟٟٟٟٟwU|#G3oW9DA7�?~bPB/_As)+nC}NW{3ڟpPCy吽xώSiuQ1`$x*@8Up b082 "<xc>D/p0�:AZa*h]<Z8sq`9G8DQy@P'Pb'bsү {*1JO/T9V] |$D ơ@.JC^&YcP1!@{ "H2BL+SE)TYc欘\{ů$T:j|//H'Gx"#{"0T̿]Z I,D)B'qR #bL1;W|ba B0tʱ'y?‡RY_^P,H9#\2XP'Ra LgTqow[Bu+COe͇1ʱJ<J'p�82L(8's3%SrP/9FqBGL`HJaw|TC+|W�H;@,)dJ sN+a"D 嘊@# 1/s6�?>&[OH!]*~10DV0"(XJ-p’ϙq"#N N0bŒ2C9@ R2`cJV`p^ouRg{(8"<"u |{;TWeuJ%2Ypʄ9S.72 bC*(Cj-PrL׸L]VFMW|ݟ'!BcUvC1<GAPU㭇N K)%r.Y \r W<eSd<W%{^1|RPPM-ϟU?Bx <By{{G D'"=EUb >drΊ3fT+2%y%x(sXBB:t2@xȊ@ '�gk\}UyC}y9Pt 0"�FUsb)(pΜg8sN971gX~= qܠh\R* G!P 3uZ�V}+Xcû0�1 xh?F�8ubŨEN܎),8c)לq%sΜ%z[hڧc^)dpXq03&~?1<C~Љ;qD ZJ[Rآ[Rx̟sŊO8n8g-?kY8._9ȋށ8b@rHO!9xWc}!#:{wP؂edX+sUAZJ\rsfq \qʘKf$^ whBZ@>A(=Yϒ2?H>uCiоw`]|= ypWDb1Ql~0 #Ȱ%/r ĉ((YqÊf<g9#.s\m`~|ZC@02L1`0eJ'k58C<!G{]? 㥅'F>2<#1 $ BHQ~/=0" 眪SV I8c 7p8eˆ9K++BK]/C Gp PT5,j*+*Nc= $fXq~o''GkuL߻(& qGQd:qnKӧw] &0EYhQL+)EQ2/tXqɜSnxq)Xb·vT/AH 3BR3nD7$iʢuq  pĀO>G<�dzxWg&:`A!G#:qQ!2f\t"[)yeR>ә>gc.kSFE-jP0&hr+ g0DAĠ;$YE/mc RnpԖZq4) 8yg<WlbHEz? 9:8hpG#H`S2gt1e,ʌ(rم[sͧ\rL3ei#f]{琌k">M1G)P!0Qt#(J#/@AiJŠ@9G䔀ar6-�G8~= axl<@&0a(Cߗr8<`H#J#/՜$IlinA5KΙp9<sd$䤔a^k_xZ`= !'Da@W2,XbBfa/V8a.xN9_w>1|(8DNCۥ CzݞQŲHEjb41[Xij,O)qM9Sr9\sʘ V|ۗmKڐpsS pX,88"b!AvY.zYQҪzN0S )9ɷmo1^|8H zNKocx0dx0d0;1Q!*e*YXΗ,K9U( KΌ%93N/>[]_s>]b@R*9X8@{A8@,˼j҄!iR8~?#W49z/UȓO&4&A܍`p9?Ӊ;cYEVHR$sƣ1L%i9eQf.s R{̿+aƘyٶܻ}%|[rLeeđPgEY9&&H,hZRI(@EDmq!ScANP@*Aox1P ňWDHzz?;;u L(%RٌdLEꊼj rYqʔ.991!%%'i|km;yBI\&,4RSvA' bte=JW 0_}9L6 \ +5PVj`1MlMdLqHu= :P+Xcblb`>3ϘZl*2/9U31K8e1zKKAn=Uz%1Q#gQYAMg4Rhԍqw}4TLl ȦY'hsÀ ; ލ?e>WC\^-*}^܍Q?b~L܋Q\]aeIA2I]t>j"Y$$ilIɊ+L+FLI7Һ-}jQwʢdiv@h"}HLdP4 BV,***-l_w<kN�p%~Kۖ>f[yhڮ OPa$cb00AaNCԭnRJ)Yyfj"f"- rnH9cgx\3fƂ9+rҗz PӠ̱Ln'yL@,`0 A DQR20 )2p k b՜bc 'z"Fn Q?0":4:#ð~ZUj+6dY2YMWjMQVɸ` 7<N_~m&U)@@1USWBBIYHf?D"T{EHH(j4+ԏԜÒ;-N 59Wa j>#C1rW" %Ll*hݠrpj0;ئ#ʩ[Zʤ|OrqfE2Kȓܑ1䚂 Vyw#ΘXH݋dOo7K`ep+q[cm-ȳL'Z""6M C* eX=W;㰚UxNW r8|@5;WW?/ %a $!ÀtJ�耍-ySJv{LKiNvi6$䋜2)XQr͂2};#f̜E?kMf1A,jaeVjdEJ s*PPsk[*U?9V޻t K &!>>>1_9F!t$D21 $<5:MhD@�.p8kצr^sQ*UTX笫9J\0g|\1!!%#E_LfjWގI h %Cc1 4TgsK�jay.v4U*]ŊgIfÆ a#<ē1<JpCC+Bȁr~5s7N SQP4W(.-+8s-5 -c2Xr g{Yxw^W&{m÷U�);S R+yIh6Ą^DF ,Vo:BIYsiqs 'x@|RC_?r x!y@!HO!@ nhGZT +(RхrZR YKy̷N+d ;ӻC1o^R1]B1L2Y-,yRGH(S( p8u BHң` "OPq',ygxi0{(>U v/TY7q診.-.uP0ɏ1g\s#V$-^ނ5ٳ|\*Xz?Pq.=n|q(5!uJ\T@Y@&KjpAUd@]Ww!9}Zh $) R #7[<Ay1x?ja|H>!Cޡ U5V|Wv=Ϳ$a :WtH U(TLdAɘ <ϹK&HHI[bGg o�8Cy _gF HQ ,bS[)"C5@6q3^=,z AI;ey% τdcIG! ;U"gMB` [EC+Fܔ*u T3`:VU&NԲ$]VrYqʘ39knXZ¯F[-9 wYDIq8OK2DEW~ЀlY"o ?TY9H̜;(]<bFҏ~h >DxHbؗyTڡvVG(XBa2t0yNɊ3 k2Ιhk~ٽSQXS!#޺R3oգU[scׯCJ=;>g�=ǔ`6W.C}"t6o L_[({K{.8c9suvŎD"%G( .)Z4(FMz"~樽br *Ř ‚ ?;󱧮G[cLsFN P׵gnp-jL(RpC% Lxʘsn1fʂdsgw9+ `QK#>CJBEQt7 P[Qs(% K|+RacdK*oqv C)i_Hkw/s,KV0_s95=z7-)@�3=31}:t}/qSlDNۜbX2 ŒQ2ı6!1>C<:뵈urdcԺF:>ڣ2*W~ʌ+ N|1\rV}q~} ¿]ԏ:R k,Gd"Bw[D5 1 #1ݭ!vkgka}r֭[ʰ~m%kQa~mX9eΧLxΈKFq3m\rۘN\h37XPxz#%l}&peLR ] "=_AtEi쪏6>om/8︎k8+</L<ٻ)#r.H9esy΅+uٷu Pn=d!`]B_ζUՂlh�!tPZQCW&HJ剔7lkhܽ00?!cҧv+̿k}do_�òaĒ`Iэn݆Ml 1xNTRh=w탖믯^C4m7|6T\Q3ܻ0O)Wqʒ3n8n{ɶܑRS_O`cNax^{lK9n\hK05)ô~v꧍+?^Έ$-?aLyΈ F3O ڜZq�m`a2t('Q<@-'x ~[͌b;d4-X|ݻHrɞ4X?f1`Bussڝ'~r-ڭ�ESfn09%ڞ ˖cekcvlclpSQjRr#!ŸaQpEKqW)hV]Fޛ)@# 'tP_V_fꯠyUl<l8A(*t hǶk+-x݊A61X_'wj_Rxy_rw]0 ʍ @8bI!cH ѹb{fn]V;p1WY~1?muͼGHH"咄KRHb5sn0fʼ)qʦV_ٲ�+Wk+7 Wԯ兯՗h. _k$9KXpɄ+0gƂ%iÄŝ I`8>EI͆-%75/j̟6/ OFW$gp%#&Lq,},Tr濓Q~֔z^͢s,/UԧdnͶeD|_~^oѱ2/q~ʉӪֱ\3)yw0M!%G8 #fEH Fxz@^ kz^%%,c|ڶ&veN/z}C)?g?ݼ62 [r0ޚ[?mJuQ''cF Xq[]F/;mo�fU(J綈{ gWdP'z~U5OGR09gLc~#̞rL[O`cv˔#�3%/v<۝;VgۯɆo1a-?e]K6,6UzyJDA_'1}vf WoAZ7p,[9*{YxƄ n1eZR]V|c^G . -a Z@ݼ:gݷ79Jt³\0n?c S6g+d}nt$Oa^_PR2#ܻ3~޴p՘u<v b)JF[Vj(ׁS|k�7/|Q'#�� IDATͭ |31 7L{-֞S ) .(dVk#h 8_,"AWm0oAݳPR3RNI8g%KF, {e E�N=;x@?<6͵Ko�Jm~}QFkV<cg8cƈ $Hw4`{NS&Oqѱz/e ]1o1ފט_!~ɂkU8gFl_&|h7�$ Yb|u:z,w&3Yx[w> {VlYWX23J?Wl{Ysݷ(`f7+m.7ّ c-Nsߵ{Ƅ (wZ7p_�UP)�e=)dXJJ5;XnJݹힿat'''`A5 ϙ)sNr͂K/Y~Ʒ*y)'>1 H H|ihَ{n'y֘ນɟqc~N`-]|o v|,[!"xaxT߸6>¯IPv11/ݵޯ_{ąX zG?A`W^0 &hdSESo%~B{./�um`�C?# ROk<լҳ,b~ }v_F'11@;nes^0Y 3O9њ$ف9]h(Sa#l6]ϓt&;r2rf(7X9'Lb˜e2߮}N�_ouMg]5;n#kC2|e+7j XJ%)%,fɄS&g;cTNܑ{:`5iŁv/kc %$|΄Ϙr))EC[3}RS�x^VU97[ VmmycSrC=a)3X v<n �o�Tꑹ~v?;Z0j#>B]Nq 9)9S%䜲3.2a:|{!C"$]F )(C yS-`{Ǽ'5)?"i8Y|Iջ{ݪ ol"zvGRM]Ҕ>I7U{ 3)2ݜ\]H~ �M赞 R E  O,cuEJ]^ki{//�RNPo4`Afw=UZ_=70׮{n/T~=;~vPSUsH+rl#p9+=U`o۵a2X )w8f? l"$( 5%g O6C6֭`ֱ̻ 1%19F/YPl[R2 !9e̹/,b!3&38^!C]u~MΜ/-_sΒ&_6ԮݽT]\^Q㰍}}ο0y,d f,Uy/vMo9Xm(}˸zzkSU׮圜ԧv0X r5&NͅN#ש\.S&scO^g^ߨW�k;X}HqL)iqwn;ѵPUM11=ɹ{D])T[3<gc-{v\c;�W@4̹˘y/c 11#޵m8>zDCL!{@zgNqIؿ.}='3zU,p>W fEB1R #2F$Xqɜs_ޯwou{3 }RrV)!`@JN1.XjVX/P%! b,KO)#tmWS^8Vd,CNLI/|;_};uYoX*({>xݧ'ĵ,֫펱yꟿΏ/wݷle[[ǖB Ϸ^v)(�{???????!M X����IENDB`�����������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/record.png�������������������������������������������������������0000644�0002322�0002322�00000022611�12061426050�021113� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��%PIDATx^j@a'&rwk'΂l ax����������������BOn]j7Yܻ}JNvfa\q$NV脠:_.EU1�/R^u\Ժz7ɢv|c~2',,@S~tjHκ�܇zR7;"6'ά|9X,F<3"򬫫̐!4%ݕ-6HCeғ'^Ao kX he]zaP,J+"DA9$g9wgUuWU^ߟ ^L QYw/]p?RآR|986RvJE CUHg �Z@g  |V56@D!:Fv-㳏q3vD<TRơRZδ}�="6 qn2! ZRU-AG�W~I�p!t@b &ACDP``*?1ӌXLTqЏ@V@߀eǎc'6L)5* !N(c�AG`q˒G)&\EKLI�  s-n3v ZfsʘOWD蛤 h) >X ժ$w@Y.>MAm}>?@X* Ba̱Q4MB8$D&}pT20SRϠ8HВ Ng,68_d1I 87@+=/C%7>�;id]�e!A`CM3eX;2RvJV% m[` .D�mbŝZaQWV+++~ LM0۷zUj`ELKiDa3!%�PR4~2 Ι)!Ky9HXÑ32 {tgH2mJe-(_ET•8Bajs` //Z}✓ TEӌ.?qK˗/a `\ /.N}H#Ð>JZPVs =0`*3efLHc�;R1@FI0" d*VpFcY[;4J=9yspDg0^X+By9wMS ͛`'"oy\JY~H{cYnR*NNVJ'Oܩ)f 0Q*gRVZL5Tw6dJ b@8= טwvټ|)7 e)bKʟǫ/IcbP~_2XiڣRz^&mL0NJv1 p �ߞdז78HUy* 5R3nm[qu. 393h&4WRNTBa`jR=h^)6n^ ttU]={6R>d1@Ҹ61d8(mhXO0v^jDedd-:}z%p~k'I~>m\<d:@3Im- XuJ>0`07goW)FcQ?VV.K18V# }~[RPMHcphVⅣGEqe(GE xL*wS3_25Ez-I~5A:s�f8<RɄ} fT-P$W,GfN(k?^'?{*'974$P<vVi)9U=GoH~z9�>IXÐ' U*#iC)Y?krDoK�\i;hn2Z b`;&c?ݹ#^؝3:;R򃭖chN<)/]rj;}0M~Njȕ+}H~P8Q9rdÇ& [O*ݟcQܖ4^-&Y�bG8 01;;n|Rxސ-Kw]FBIah[q C<v,z}�hepP \JwMW SPqo'%R--hy�PJw=clG;9&P"UOs &�\@MѨ�ճ?;BiJ�}ii61@1ì7nhLLV;V*p=>NqxŐv$}D|Sh8%mh}3$(@h>Tux/_vߪTf_Z$Dsq ˭ /'G?�ez#N"k33эÓAj|444U7 PIW%>!]8�ywz/Ȝ2H�mg-pP..~Xt:+oLLj'a܀~is<k;ܾm"�N :Pq<^dkG CCp,O17 #o4kLm0wxGyv=ΓFMQQQz1!'?4BZ[2=Q #vUcaU# 8R@EflG\)j�b*"{pHRG7R$t.wݽFP9Pi_'Thosyf7e=j+2 bf)M(8O:6MSa%4,oضq0ze|uuhNJ=lFͪV B@w;^ |;2:i*zwL8vEc8Cȇ|$Zj'p]QV2 LK'pjMMFaLcKKG-Jv~3`XD3\d 1zL!RŻeJ�̚(8&τ)CST%D66Nͦ9~m|T>(qկ~5׿3g^#CZm|x6T"j1?U<'G}*o6:H+i/6+ oPW[Y1"ϳvKJ 0> ϟx.5vG!N:ʰ;1a=>*AsfGR=ʞT&ཛྷLҙpe1'F<& zwL،YZ\CapK!Tu-92_5{G?2£"5iUx%QL8~QI!Uk�R-Э9ɿkM;LLD=%E}B26BhZVZIV(+Ju2M1T 0m8Uۏ�aT"z!)bj9�rv!Ew Z()c": (BeQ$[J1rC, |bvFj#R-kȶUY`]̑e|2@YN>ϘˋkyyBJJ]@5 $Z%U*Yv 1p�uÐ SSM|EB)sLQ<wp>QP7KfiT*I|hK:79UIx | 7Zؘo y~RKşAf�eY8 C 'muK.^#kU>H6-̶swSً18,n@Mmgc(|tIR**(y($,~K^0@bnZ1o b &vQ4d+5i 1jU*ŤrqHfr 2I-mu|WWeYŐݥaELD)!V6�3`\*UFkEahB+�`xQ{ e-h##�6hЄ 0CTH < CZ2[*n64p3صs-TjS5M$̢C`8j5qx(*ZqI/("̧`uc3xHp/\FhcCgRӶHr6W@Rwq,vߞ'T{J]SHO7!tΥq89hӳL86JEI2 &T p\aY~83*z6;n#OZʳVJݦ%};;]4HP)eQ*T"&(Dt\ W! , @6Hf3Lyz*{]@Jw@Wj.!O"Ь(_MD�ήKuu1:b_b%ΰ") C@Ӿ�P?ŸK4 *,}HX�AɾҿwKnLS3FH9e"nC � "tPD"$N~�"�&Jm-' )pLz6cм&=MycϿS".%S Cʩb `aiRshD@psҺ<]iСfm0IȦ+b$L>l[ҥm޷w Rs{1Av)s&> h�284Ů ,0A `V zSt?/᠜r*@|9ݵ43g9kL93d,B' hiٜ|b;ms<{S2ʦ~ W0n;k_vl&\cv�>'uk4C)b 0fҺ5L*ddR#T祻zyMJ3_( 6?tG ~yhla5@4ueҩ[TznлwsQCwn .6[;ec=�qʲm%@/4�]EkϘm²Luۗ<t{1Aw0=92MB?sĹ1xmf� CKߙ!,`] 7mW&@M3uũ8}/ LbE T+6Ŀ)7PJ�'!%�?!HB j?۟QQR P>z0l8NW0AGi0P w{6ƴÄXHm%o�X3rF|;;{?c�!&Hƺr == h?O�^&P{k RLsM%Lk8Al^[οO<OF^>a:1cAvC lrK_Tn>[@b81i%+|D.,7e)�\<{:/xuA~G)"}q+;`,e9˜ℎGŋJbqQ*E A((L?#u&|[xx{51y=Cݫc"`BfSmK<nF˪/`Ս _ ?�yRT 5eQ&a<奴="CwI:i5[ `*Ng oE|p/_[SqoS84wx`5 0xhAQbQ�!jW}`T/"1518 �|CGWq"e<-05>!ַ_b6=CdiRttRDeN$u[zo{z򼇤T糀w`XZOcXligϮr\�Z-U19>�'gmǏ=VЫ@wMI@XDfL1%Z-)9i725ޝLo&d TLmDk 6 QJ*X.z=oR ۗ&2s-ö8B F0ד2j Lax9�=Ma|,?_FBi 4-XY 15fuXN`E6Z' AM@340JeYJW /b "smLBxsT૴D+ ̂uc\b3u$0(ȩ[-EG^ÿ <Jgn8 A&\4´Srߪ>?LNje3 a;5?=oFR>}1>sneD xڟ& #p~>w5<vb3Aq;4߬MqU=yt?~(9WttӸ_a1ͦW(:u)zO6~m0O>h{~ aۗ@|/?GĖu[2v+y,*b1eT=5EK)]u={A}K@ia(gwJ˜Z2 gcobqَT�&N'7}>AO4k16aX<s~_ZZinqH07aed{3CֿԝĽQY9:, 0L,B̰1:d:0~gx808}Xt{ggΣ/ @L GA oa0AS8'�IT6|-^˄J As&z*)gZ Bm.{cF``>貹g4@v-~ԯ:kAՄ *oaj M;Ƭ̈́HwmOhn1~VDDŽHFGMN&ϳl1aUJ]7{sZ $WJo?2FV*o,&,^^68`*}ם8S3F4 ]E[^yMwO<խ]7 ]9FAC=6BGr͙dY|rL5~)>|{H+T _}7!aX6Q?@jք}R'Iz.֥gS.@-|r?B0$[Yw8}ow}l5xXu])G?O; SS?:oհ@.ɒ2YtA"&ia)U`eʺπb{Me]B(('JvWaِ^}|ۅDwe>L<xRO޺ugNI|kSKL?\K?z+_ruuX (´4`e "S9+eTRyʵB'iO@ 9wDMEw#GW7ʇo !>T5:4ٴ}#agXPc ]Vm>WzX`YU!ICi\Gԏ27Je{abt2R H5̲<M{]ϗ # WV< _Ŝ_4/|ԧި|k7+yP33҃s{'d B?ə3gؗ%;cqS }_c/ĥKp;<H{D &0kB/מf2~ 뒤s#|"6(uk]kqX/gx!D\.˥˗_뿆,n>hzF\.Y_(U$a.=ΛS: &Z466V6M�\CjԳv�`|>rZ^*>lyH)!nqxRP|XsWolڵkYt:�qw5?fnA9/4wƍ;wp )Y4t_jwi1 $IR ͋ 9~Jsld䎚Μ_Z+XƋ/J�Ir\}u/?/}PX(_gܺ5(nݚ0n8%!0(,X,^ oZo:)xNE*TSy>Φ:;u'bO/rzY^\g‹..ίb#�7g(l`9K?ӐK`p 9UH~s_/VP>Z 54ܾ.1 Ð&x` 6>~XgĪ+ĉ w?A=+-_H}Ŝ950~n@2|SǙ1X Kbu:orNP!�8gqX]J ��7d;��m8_ %,3˪CoޯUHR0>>?Ae@cuJ:!Gi=}L|_4>q`iq^}$Ο8[Zfy`Hw;�䜇\{LO  jdd6>qb^=*?wxks\vM߼?7663UO @y _9J<WA2f|1{?/_ss(2<o PE| DORN^r!*j S]˪EwG]lt|[g,�vHtޤq\+W/w3t86GZNR?n$R�_x1`>+FW<OޜWm [++t¶ߝ@D7OŹOZ@ǘ(�b[s;t+ EB)Ge`%A%jŋ7ߌ_{%4-(`;yoΰ^?}Z>=GI而M* ZoEUDBy_{-]y|1!h7̿[fR"DI#[̒Aj_DRDR&ɠh(2ێ�P�x3h$?N2w7O?Xw^58jxO9KM+w 5 A�Ǧ~"(o|SPw���������pc.?����IENDB`�����������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/left.png���������������������������������������������������������0000644�0002322�0002322�00000015745�12061426050�020601� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^Mkas#3ӌM&ilS(ƚJI[ ]\tB7B4"C\R j+R1 [3980 ⅈ#\q?5y5�W|ͽ/՞�ByCJ=tuZ:!`D|$CN1p6]W4DV Hxs<#p4 PQP�n\ ףz%^5wvYT P�g� )⎝>8t%ԆlBd @}O,q�&sD^LsݲM6t_hq pXr!ZLd:ؘ[6-|'nA 0BhApmwBŔr¶ʾtͣ'8 &hOTuU:]ڸ\Vs)x ^?PzQ;Roy˷H("%QbG-jڤ@ڒEHE[GZÍZ5b5ۤUHmْt)<3Ϝsեs/ϢFg?AZ߬Yki֢OxJBD#on5]jƈ# ,3h�[]ԡa}X y<F\svΦ̕�Zˀ2B 0/Vϕc9+ͯȅػoԣgZ5ovZB)$Ie⩱)wǨYעH-옩90 K-,2D!-LA#I)#JS8;7hG;w4DVS0 y<y~d@/=r #EFLZ77UtRtшE )NO\=J8ܷL 4 D6lN7k9rw٨A*vbv4 If)-*�| F| |2\Kf=fM {XdH�� Tn"2_?mq-0OQ?jG! zE71}%@֖!k^fd�qTCÖC <]{rgzZDi2Ùh�76 T=2R[_ؘ!~!ŝw뵨٧s37,:r.e<o)pgj1 06t2SFtlw<OQfT8]@F$ʹY2IcAw+)⁼h{k5sGRB[˰Io ; �e]+2UY>|맭 ^J]5BmNJxf#[}IIݼO3 "@"r1�y.S'fxGdEAwFBRJ\4e�s۞?|G`t/񝳍#sFG0Hz}g/Z5k=RY=m)]%92}Lr%׻ȍ<f�.O-�緵,?fO{vwBL39f|75Xx,aBPJJ{JBD "D$�\؟oI;n�W0*ީ_ 39ϓ7+)}uO- `r<X$z�~7ќiWA�F5LA8 81 cB(ujīV)iK 5g-Am}'0lqi4}JIϓwġ4_/잟}!=$b5鹘~>2$2C BЁ]0?kyݑ1_,*zA(B75]/jcRRXs_{}~10PwEQ rfgsټs/5ȴ3pN,3Ny<%٬рAi\Wz^CY|3�<�%" XK+`F "VޑcQz-8'u[9ZDg8{@悀7Rb<Dc=Wab#J R8& *>`fq!G|_ܬrgov|+3CuTg0ymK RÄ"_҈'u Xk%4 pO`M~GeUjtXG -7𽻚hWUZ؋3'YַXδh+�,35,3fW k,0$jF cәE3xnoUg[u>$ڙ|dal1G5к@ hGO_B`f>ޡV#v4<Czp/a]kaBS#4+@9lޏ~1L e7GqpVOٌwF i۷|~- .=DT)+ ` RsZyj�a -HJ,0i#3׿d`64hFyQŸWJ8 nk6"o&V))rE2F7h1-fC3pլ}Q9;fHfnY!`V.4|%Y=�>шdN+z!m]hh/UOO_ +ѿw?b1TVRpn IRќKß�m"Cx0}E{`(`!؎=zaGALi>ik3~t7 |uV Lт9$nFuTʄ{}׮oE'ae/E!3hb >&%B8 n`!_!"H`,͙DSƒ$ЍK5  d�R=,HJ|ݱD8oRQZX߹0 !Bºif NLzrs�.3ZM~_o&S'=yg[pGsn="TCvOkf_ܹ@h|RoA?)y" [`jȕkgZ߅u�< ugH�A+կ-̷;g7 5> kة0 $d.9wfA*=_yzYoPdjh�>"ȴtfdz Q�fI@]cl]Vk AIg X7r� ؼOS}Ehh"* e�92Iv n4s-ƬRHxR�V ( l`�̋ؽIW)EM)Oh �Að1VFSopk-ɛ_X`-]$+xZܞ4srsQfzm= izk#Xp}n|PU~W iui$)D52'k!. HFsy�t'~@%i2wu\z! f,1G//cwAVȃRJ$k T'pX$,翔]^N^ A%LJR/\\yEs2G걇8),{3~'O(Kp+x>=_ԗ-bXB VR(!% $)@0i=@B|\|/kg#o_%i˗:wKKFWGnZ`,O@gM\/7ztQP;$S^͍Kmi bˡL P@ Ll.祯 a?|{F(ٰ11&3䦕μ$D L@.o̪`E17س19W?;iy t$)Ha>`L"<5 wcc8&%4Ӿ LD2|RL2Zs7cH%m_�VSBJit{@PZ}H"4"K0OCdk2o0nY+I0Ӛjq8 E-" E7hd+6hkx4=z\g\vPǁRRA D.1b/xoAq>�cX�i-JJ]4MYmZfp>Q -cO kSGt͗ش׹)tb_91|.ItgZsf8VKJ$ڵ(6#M>Z@[@J`x>k#{B]fc`vj\IR@2N\$3 M:7w_/A18oâ='|:X{|HYԏZb�sS"vlBI)`%Gb*lZϣ`;]bDR9 Oח)xacckٽ6MSl[ISB `4 8Z;#A | A4blڨ. JǁuK@lc+ bA.�7/%x?~տmxII�]p{Z^nNRy)t43`ðW}F"B5:.$$1G,eb_]/Q=9$�" <Aַ. eycyK{ijOF#FUyb0!a>gf-Kp VW`t jէwʌ;NBڂ P}?|w 31|wH k;ʝo ϓ; YPZေ<> ɽ$I,[$H^9OBc،ݥmaND�^n}'D F%yq? 0d%mN79iš;XWDRZd iCW hDJ<sllL UҶZ|x'Yg6I�\NG$>�PRByS!$�8 _婜�^>{ҫ h7dw)!8O<`"@ ﻋ@מq;>%$ " xBqGʒ { 2a-eRܫ&Yyk;\OԣBl9ś庿\ J靷F2s:|10T,l3@1‚uƌ1Q5z0�dPk�$ovH7;rQSّق1vȅP #"#["%7xP%C!~L: {FC3NR @뢿@$ɎVFڋ?y8xx7 $vŭ (DnC6 ]| ƅM*6�M0ex?~x1 bTIW_sS3w7زez6o%A B#-]^ /|d6 *(߯v+h{ �*neK�,+/ `%rcG# M@$Tބ/dZeVK�J@(A@r7kJ'R^} %ɝ3?A7)jpXgUAYy *qe5b�4J(M?/3(@ Jߐ0s�-e4{ig0wk-Ѻ ЏT j �|B�5-OǾ~ @^iQ545+ ?:[?e07@D-)eh-+k'! o))` @}P_-SlY$t~%yW�j d*C/PJBIk +�VfUPU[kEJk>*T�q?8oXEZgz/%�y|wri **B _@nJ! @ʫ\Ѯ!/X/ �fBJvTĺV ?* �{|ovzXX!^A5ˌ v<hGTxxUԍ B@bly3+ u�zFkbAeY;\_7ȉBxQ52H(ɛQgiiXk4le /.b ^i[!y6AMty<N'o_n{I-jBP|FB0 i& 'p3 S=. QFUq 4j�ISҏ3?c "�y.ksoWJV4cR<A8\~E.~#qy{K$T$/ERAD$`KsO;Ͼ1VPyULTLw+ț`Yyuqk![E'7:\Q`lp&B:^N Jo {b1ksadl*Fjs Z^{_X믲u�۰L\2:zֱt K 8{^cYb[YL.FuNt M^AH(~j�@�A玺k.%:ۺJ7F`"abYtO¦]ֽeSkSJPNdV)*~VMŔy%Wm[�b\U @rx@�l- Hᆕ^axSF`2&L[[bJ6ɠA ST2Le*SB6����IENDB`���������������������������anyremote-6.7.1/cfg-data/Icons/128/bottom.png�������������������������������������������������������0000644�0002322�0002322�00000016670�12061426050�021151� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^nEEϭ8ɚ` <Ax,"lx8q毻48i5N=HS3rjAAAA=jsWwIL Ao;4۾sIMK3Х=5OJJ)Y %-n:gO3xOC^�HE~d@`+w1 ds�o#2#zLJii%S*I@|c9ܶC\'UJ|Ã>�6ARL=�MYoj꺞TJMn$-3_λop5$(=.;[Mum9`H ,k~㌳s`S|Ԑsa�!@sN)-T魛orrVg&�6n- m6ujUo%3 UU! �hdBK:hY/, 4,66SR0ߟQ� jLNIij_|Υb oloX,GHkìJߘ9d #`0bhYיźfB6Ūf 0hGl0].)AD@ԩ�]8N�[x`vKM$HITI4%! R)86#� AJB'히6mg8tv4Ks B>L0]x`DD 0f�mx hdCjtXW* h1;*x-K>U<>Kt5ي 6&(>=y*#Wt3(XqXlM8_w)6(%*".`j>@jMcץ�މGlcFDbU^6G5"^tF^;n{?@`F9A^"5/ō!vЀiD 5ƎJ;U}IQ$%Mɂ/`u ?& ,?I$ lÏW HA Yd ĕ%ER|SE =:'}o]Lo5F}N>%+"DٙJT )Ǡ O?4PL 0&�D Y8HW Os$!EdĎt"SD< ~r_OB �HKf"@X�M4ÒO{LnU|� `'/$ rK(,T̷Ò[S=D< -e"@ �:�.hpD(v!m�~wR>UpM 7R)בlB]]D@p'�@ (A2"y�-̀`QY�Ŭ) YDX䆰cYbӦ1Idy%H)j5LL^Q؃Tvl@`�-2$[�'}$�h}cDZus+6OC)!*u~f-Z+5j)>h�d4 $IfZ&"1&j@pF;w.`>&|85KǕ"!&Htdnل4A+c#"Q@J{&eA$" MH Z'+VՃWy'-�|8q1yKF - ;D0}lvZ'&hԠu0 d� kGE�J͏U < p�2p O_wdb]c?xBLIcSkw]۶yl[) h]B|rX2)Pplvf[s3qu�wZ/>%#1[O};=O^V3KfS!I0^cuQ>DJ" Gny"2$аN Rβ1V1KwDp$8.=:F'J{kw|sZ+ȕXZjzb|ezZ""CHvA0)Bh!8X଱֘&3_�^~{Gm&n6}NLx75[9XnӚ֠p r_UubEYo,:Xt5OO&#Y'F0N`iӃ?|d6$*QQjY hB-İlo}t5e!!@8g- vqy]D ET~45ӚσΠև^lŖYXhrCa%P7~S"B짩v;:t̉z}>Z_|-A^Eluv)E[Y$TVX bKYmejTh%*h=Ŗ�xf8cZg Yfڶ#_Jƺ]m_EI/Do;kOTCX",Oe3CC"$ALbbFpAdM!p_7Dp"j{ߵs>Hr }BHLRTe]KDrxːU{ |c$Q c up/qz!u: ֦?/K  p()чB]Iآ;ADEcc4EZXh@4Pu"{`!k\08zq"~~k:+/,..-qPKmքD+諦.9Yg^_-o_.IQwXcZ[k5٨g$Mj"sm�TV 6�]΋$x)zac5y???$Oӕؠ•{IWP;]!:%J!hfjb e NP4B{^oM! !oӳ#7_XgN?~FR/<8 R$Amw4Td p֢te+~$8Tnǐ?zAzs= LVyި%dъ"ъDˬ?HP9g-Yc\A&r}X:�--ꑏ1'a�|[O=RJow/6[p&ǐe( ,$o_+7=̧ > ,��C5[ԾR̼_5@+EՖE)">6Zssh"u\OQUo }ɳg.e^Yϻ yw$۝:d !DRк:UTP燀Ps`_>nW[fwG>c,0i0d;<МG Dʦ.Zŭm kMգD  rY._xƶqU߶}tH.,6'rDF�\f�[HQ_Uk Nο/"Ptsx70H{K?WNKg]1x'<7ۋJHF y0KA fIʼnDž޺3)VDH,G7,Uz"�f{4rVv9&06րhzFP9^8a:yo9mg8 %;rFP|<gxG[UXQ<,MLtu <B:',;2&w|]gO{io!$l3?l=or3nuf܀ H`[ֱs0 X_ ̗+{f~}~!{Zٺ70Q3Ƒ)Hr?/DYi&k㼳Mf7//[06 =Ԯ}mNR^u:,HβL':!� T:\ے28-4XY+N${ 9/KƹxG7`-dO4˂u^`RI IӔ=#F`)gk-b D,gO\n;9nTh"ccciQVDI1ӻ ,΋59e9ܳ>K Ɵ[?țmKιv?$" Nh!봮wO Xs콟eD0d( {~ @NwQP%AbLL!$_lwdR$M�@z"!@k%](p HeR!tP plP_@_?,{g$IvY5L D7_׻]QdΑ24] yu,++h<�KX6"~?ƿ !8sֺ#f+_ZlN`H+%=@$+MRf91&+&WdyAuƹޅ-Z+$Y*Y"RЊ+l˝>9s"zBIh 6\`+W]r]72yVQͶݩ33eYg A  {B #.K\].x?WQa9:tvw.a'6EIkq?"p.Z\\66zr*]~/>"`Aw=-ϋȳ"0ym(֮y&+fvRsj!7{3!H"CW>xr;&~}~jiGF]�]q�0]~qUv&ylSDZA$B7yW4>om^g >v'»_[�"HJj` opߋ CP..z>ܹi=Uz\h-gܞM$I)�;yu`odҗ ]a\+'UU%'+stKcxRm' .|3MF5H>)ُ5흻(7ֻ-_ź#qy5PQ5oI% +_JR! (_ricSX"RZz`J!û_paZ-x[{>w]54u//f@)�g\(ӷښK5$ U,Hա53aOtZmzHtֺ;4Mxga:l (#ܙ;p+v\`je TUV[w\U\!Vs 0 " ֔md$v3&};�zVKIw;Jl" ̙6�Yf򇀹fL�Cp˱z�;b8˸ N%#"PzXk;g<o̧\h^:Ku+@!f t55(u[�;9yW~)Ŭ1j4_c!x_a[??kcs�CA?:XP=e ۼHd�/y 55ge1;7p'Rf%Z7|gp{��`0YA`I5&@`Ӓl.&ştmB ^*yMV3SG/)t !̋ŗf?fhM{QZ�\M&d$=Y0zY;�҆,ߖiG&@`FWc&s襻^>b`&@З} .D: N�ӴfHÂ(gmYX,7�& R�$r>J"DˣH'@4)|%ǴRFL.tZ|{Vʻ} f�:ve +ٖҵXdw^9 d QezCW gUGn^;<҇8v%a 2@6$I_/(RIc$rOT*@~2)#Eo˔ E>J4@0-޾YRq\LR;.D>SY:tS؈ (8 JeM%ٗjzgelC\Gy)YVY3GtYzb0tMNzO^Ch(A\)$G[`2R͕~>ds fDJ;H%ih=,TPj q-K�9H $dU`,C2+Q'(1(+eYFP3P3"ETh}}�)JgWv&sfs~% ٦P b~1ಝCw++ ?,+Xq 4J(eKe;xYTF%"""diz ,C88XQ (h9հPe#>pR\>*i,wmek υ\.(AU#*o�": BoDU+h9bC%ZS_\S9X�y久, e{3ewʆd3#,@cX04hUytrc]le#||;GGT�@F$ز&:a XTZ[+"[HGr\2H^Ù-}e@wIVQR1cDAefƖ:&ڋ_yQļ@,ö.d"-6�>sʼn[ܲe*d_xPHR(D17<7 n*ɠՕbTyheȵ|Edym#gYReRqJ{\B@>#Q &R�"I*Ecy\1InQU)Us}nE_@d:/dg(l r(9n2q4j8$Z9�曘_h-f|"7>r�B�dFD,Bʇ`~n\;~UzDF_AFt(iN0$̃pY@&E `hb9,(�u @ hfGs�\pF,6�@ԃ3]�O4m|*h6h6h6h6hɷ'X -\����IENDB`������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/info.png���������������������������������������������������������0000644�0002322�0002322�00000043665�12061426050�020604� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��G|IDATx^սJQwNvJ4DK+Q,K4"^hhdGTO/EQEQ$f~Eӏu(@_C<HBL+! bF6/Fa G( #9撼; 9cX;pyL$̸d1kiґXAJtm74Į@7@#4�?<}L zE;/xuoٵ9zkz^g9YJȀȆAG'�I8D0LKV?G�A8v'f'2%䐜}z/ݮN5 CbXF;sY+<mI]Dr{:i-`i:�][�p":�ygpĈ!3#~K|Zzui >U01vqmwޑ;=W7 iI!4HYBn}`#x!4yB=)椔)Ox! S܉HЉGBȆCV*he1#نd{ 1�R0=!MQד1nsZ)֛Zo:d0D [&zv?#>@tՈ5o q �RzXrac. eSQ;DC°C(0)`da{y\FR7݁j�۩6: zWiI B:B=Co3k:],jDاZ9}o7s_S_Ձ広 R60Lt(`'�id[2M=ɸM)ǖDDK'"q.L3'  ?�j�P'd7[=5:TwQXkRsvؗ$7Ho\r׿(Y\2 R9#u O.ݼ_,x J9r>.<BIY;ҎNBx4Hx4E�4218&-}<SA3d 9DIS'!X R%H!\kGkVT$itUq;8|(ܓ_ Rd!GN?@XfG= )k90z>x-ne(h1p$ ? '{3o$DtY# �pjzZڑ�ݼ]M*;-!H@KM_xsb'>|i{O>zyoxH$sX(2h8 P"fS>ŅTi>#'bmCͅ')80fa6�1L]WL MC|5]fR0t{BKdi{!^6k>~Ԭеp~L!c?BF PJ!,9C�|.U4Ojg 1(ͨaPtPndV�|&%&+l >y=FJY FY "{n!BNP\GT&D |fɻNSZُ~6Buaǃcq.MX-Б R1(rMQ)f|<~ϓ�c0qvAgcw&q? l$�B1=(�p#k A4AL&uuT[nƝ2]]wklJIWL/H!쾶g[/h|C0xf�e$hk{" 't*2I;LK$ (lqn4>r7g>w�=!S �XMƑ=@ W撙{+ ;i0:e63e|o.T4{دrmxm3Oѷ "|`MC\`?d'BS鵹#kQ,j8\YGAOTkZd-:} iCdb q\0pxJm11HC p Al{Wk`{KQ,utwמm/Gpϝ`uоC/`aCDZ8YOGAӠtACnkkt 6ŁPsq7a@c2rj&ї*K�3*�0GI;ag2.9Ļ:CKoB hmup(_|lEBVu~ �o; PBV|, A6Z%e,fhّax n��5g;\_Lrv4c>f/8�t u/vl*æbSb| HJT tS <؂+dT Jȇ6@]zş</߷p׬<,"+.ys>{@ǖlY )ك) zDا;(* .3 O-:_�O JɃ ô0$`B@U-':>/xH ,dbUf7hG k|vK(-]>L.ޓp_?_FHGv}q9 ZGN1_Ѧ6Zj8YiuP[k{&tA7+UsQq0>Ok\80%M%>GcceInOK�`<h!Xou"`J}\m+^B|9V_/ʅ/o}SoZckid}m\{)G:yg},.7VX.Żgy `1 <OBdh 3ù. 0帑aY�;j,XaCͤ1X2AaLc~v)ʕV띌r,ޠ}BnG xB&QGt߀Y裧O<F*qvHS.LObэ <�Ca`cr>sppsxz�<2m`8$1ӝ\ݳK|60 B?N/\3�'{Aߴ V}0ywn=y& %d|Z?dZl,s4Q_cSq}35 v95Mϵq#Sȟ3*-@ 䁿.8´25l,i; _pnuWvq^"{@oO=x;؉pkuh$ rY^K7F `tM[浙@a>k 2ޣ0u令{`�]˒ j(W #Y^E2LpOpK] nlߥz1/9z2+hމJZmKKl0>]%\~�.36y3@Oq䃷K 06% \>Fx[*5*% f܁T]I՚�ckЃF_2�b�.fi_E֟Z习c=z8<u82?(ٜ Uk <^T~O)}s~�?K iV@Hf%ANC<48 J*Yq+|r jNI}kz?5?weC&?�غřsK.%zDEFCt=|}p^ ^<^g06k3Ȁ_)`|IKozJ h /_iFW龛yzC�XoB|6d?᱒MEsJ=9@IS&76tTp 3{gϵĺOo<Ҧ�I ܏sȒ�cæ3J9Ȥ J?W<I喽SU+9f <vMY-$PDDʱ=ǟK<)M(5PW2(|ӧ~uٶ$9` NWSA8SҠ1tLl pB'$ ~)VxB:h{u23#/,:sw^v΀ ( !"~,@qLL#R ?ǒ`wӃ|<Z}w\U{{^kqKir.#ev2"_|C>c iU1ce>>pl1R;NC?xAlӹ0tx>O,B_GFHKr=f3d@{jU1+y+2 t**0eiFz`0럴1W˫gX| ь@bD}tY B{=$ +ϓs|%~XHIqbZ)),[5vϮL[^H*n_& <r�a�90[`nwYGL$KKpL!I@ŻtLnFO�(0asbJ.i,OA|YxȴG�cvw֣ I<0dȁ�ރmcd. `"aEMfu!*p,̲3"(s~;#਀Mr!Jgl5:- Xv#WJ}62.(.! <a'&^ (j=v3.3{IiaKWa@VvF#v*xص Ň²~vJ_@�^OUav .4pt21eK�4G�G$@@�<�L�~l&Lmzq3I4 g+2o/3ر儱d>HQ=j1\@�Jg0ZW/|}\{8_`_<>i]=dq"2b֠d7DX _<|`e+ju�;xS()Qe.Ip\aB(�*ļz)6+N𬘞pjBEA;䜿-P"D#0Lz!!eqzƗs )[xj5x C \&DE�lFkQ Gj?2>G0Rt+z 4p|8㓏|F'(:̜?OD(3GS]@s?IIL@"1|W �ó.Ě�MK,T.}s \F G`NHI#9 D̘p̙epX&1z6R\\CR e@I8~do?U�@_\pce;[~֡3//DV!3XAdBY'@g,=o&vw̟pr d\zӘu�ɥ?6 4bgn]õ~ b XX8Ojz!r8FXCd+oLS&ŃIc({^Ξ8¾cR=4%m㑂`^ p|59v V~1@Q 2"9zvZND'w1ag>x<Iљ,1tq/aL8{iύEŇ'O|W__Pϖˉ^2y,bzi+(H >G>W-�</!^Shxt xG}aL@MLvd�f;bRƄ"�#c_:2L(lmpSۼҙ bYDkh+Nq?*es9Ӈ�q<(WA> *YceTV-kC~\?>=De{_r>xME S7#M f VSgIXP´s,i۾@ZlvXyAQ5$~dm:Snmvn;&=(⼢ <Lpa ~3Y><}Rcz<C|gʱf+ LR m0kB4\)rCJp�A6OW+wVŎ,y?fs6 [#eM6]_ (AF+`=O_~hGjc8e5݃N C䇄O%! cn"9)Ih++#?$cxne.�3Y{ZD8@M̴Y>dU2_59Q(R[Zĕ{O@4ӱe9pOM|b@\""|1@^hÎ}DK2Qʅg=b(9db3`γ Hr%ɻl2'_Z?A?Ahy0ˬZz+Z>(Lﯕ 1A]䰗Ex[q�.~JbS,R8Ӧm>IjV!DK@z HOS 2Z{x=D�S>>}\{.'`�y쀵̝ FNS(Bq@ %NϒS,৥1[+n vBɟI+|*,VfG#EĶT#9 =Wa8|ZJ @[~4 3+UB `3ˇHKf> e9ϳN+t<J$G2< N}c4c {@^QUոS9?Ĕ˟UbRũ`cdk'U`1Ɨ')H)y?nEI1!gRR^tUh`fas*x>W-r!UcFl6%e8?7BQ@,Ndo$lw&j4cZ}6T,*>q^n,7@& "/𻧄F<EߊĖ F-GP,J1GFy5��K�/ seUųp8m+ى ^LW0 U)@I`X Xv ݋#>gy{g� Hl4VєT[蔘Cp\֔%ȹ(mpcv�D ި\^F 3l3JpFQD�*++b5' >h7�;W#>M�轄XzDx]>FC]5or5F(vI6lr5%f YtdxqD`|[$mb5 9E>}P<V"IR(aOJJHR$n�W; {rp<�aRQ̿w8k= G -thĿ?�FenEBȴu*x8GqJQA!hJB4F$Rؑ2\l e u'QjST�J@ ]җ !P]lJ q~2CυQA�.<)qn̍,#'Y8ו0rQs 178^ (%vFt@눘Vf'xL!fmހfO$,4ZK3 /\ Zd`Џyv2bV0*ywBOjeT$C!=vE~"ZAT*hEdT6=lGiF3 " JJo揳Xh$GDD))~A2= SPhfaz$6)mخ]v }̌!4 c_g`[ ctNB7b%_ �lA"|)Opwc GDҹ@ljH{5b3Xq͍339ŻS8G0sx":Cw9SJyp_FZؠL =s l5@iBwLl6iLZ?f:˳e8E< ޹L2-HK C^Sj NDge-0#039*_Ұ N&N載4+`1M}+%^nOR$iA@ `*ҧ[r%1$nRP1ٛ' ه;oO0"X_GaN*s Tmu9wAn FX*b\HBO+|c ^P"،.M4tKְT?}.�V Y>UaĹgXR5Z[N/TR"4 qV\A4�KhV!$0ãubI{K �݌[9ybPrPεd.@E i=f{ڲ °�^0v,&è 0f~dnvG0C; Mit&`'lW H@Ǔ(cPg9/edH1i"@eyg\ ˟p[y3" ^T-H oyXxpe+{_m{D) цHPG.;SfݵY<abGk};3(UԠ RNQBXǒ#4- (Q{/�A?N{H!#bA}i Ol_ wsL5 ƚM{b}uL/Id+# Lz!E M<b\G ,*Q'�|܌c*Ҽӱ!j[K5! 0 8IܩZt z-i1 65eo*~d춣^?l~1T}(w98ɕڽ&=ҋ6<bJ*VB]$MxOfzؚ5y"Z \oԣ*2Ѐ49@��˲9NMN?O@ɖN<$*(QZ9_vf*aMRdﲣgeR%`CF @u+t|4чD1xbߍ#2HM>uz{ڵӱ+w1+ )9isgox{54};kpئb ד^_!�^wN1?_3}6Y@Aw~_n*&lۯ@_$䗡%,%@'w)19 f7k+E|?؊);<Ag :v <6'VŚ\耸:?7[)dCLG3X~DEc:kiQ>_LģfАM]ŕ:Vy> pHG o2= -:`сﮙ�*!|AcxVfG=621!!X\<|wѝ6B"D>:?c%(NK-\N.LhFb6 Wx;h >NI,jgGrQwJ_3͝K̉D;;޽DO| NԳbxH+EH#ur"QJJdn$ ]x"EY @eʋ@O=,\h!=Qډ�XSgA<y=O%[$;6Pɘ̆;hx.׏@�*U͍M?b@>B-D\#;$ӜJyms\'6xr9b9!z#IqA#wmJ n!mvJI/bLnj;%Ez7?�2ٴ!CmO%B(C=ur)Py5& � D;T.�?Bj+Z=/ 2'>/6\H%=?0&YǮQճl XXyll+�4i=U* v#hx gV9; = {@�qsS٥HF;}Й6=D4߇Ⳉ$2 @҅aS Q֬fYZwֱ Dr ܖ΃dkL*]msJb`[5 ϛ ;N 娟,_W sF{%+e8&}1fJ+gP$.ݺJ~V;MHiOwa|?D$x-iD+ȄfQ0с+YLrdETܘ8>zHQfHƸ(3٪\ l4i5=z�*p8^C{ҵ&@yS2QuGV8">N2xdð-V݉FTDc]x^f^k"^kStI.i!ϖY#J6}<$nQ:@~ȯL)*GDANݣM19wՓ\9/J@ޅܢe{(1M i� p<~7Eo*A $r\E� W@o(Ncs4 0gg(W^ڮE&lAv -m(�!d,L-q$?1s"�HrCUGSmx\fB�VFc72j*Noah^U"HE#s}RD�#)2Tx^ZtT @9zn`"oA1{=~d R'XW L�:4m敽v`k#`0Z -@# bOQdB ST})srW Ve\REr$!8H H@ !K[lfsS?L0�6#]8dŃ^dP^A6[Y7kDɕh_G{Q|߿9ZP>=29hg@^ؒTxU8u1$e~:~#F:RYh}YE4AX60dY^}^MCpx ̖I.;Xe@I1s|Cjc6611zդP >JRH'WI =?Տ`<( ! Lx̟;]53k�M`wbݸTڤ<)lercJtEUbl7@3+դCgpuh@D@sa퓼ȼ1O,;m¾j7Spn*P~�?ke|Y^J2-q8t"q,>ml}AC:$H%[y{0&puj ?) Vի4Vwi'nWdiW,LQd۲xxȟQ>q,6Ga\V~TJ8"【BFwuqJ,�v,DREnp��Ow |2t:oDHz4,|֬A;_DyM!*-,RYҝBsaύP`IbbE�W,!A~8 91jR6am*e {H k!Z*U4jlꫫ??80&~tC{5ɪش :+Dl\%ô�ա 8BV⺂j! A,+J+vD|~1Z5=kz7w6|xK3<<$Yj]7:+}nn9?l6Ar'-Pe_Hy&D68oʼn(m9GR^0hL|^gwy3jtU2^|ؖP^b2n@ fL|OĜ`�!3Lk3_Qh?ՓD/}JaHjRMeIvV"w|^�eB=¨@ 73s< :!=dL#d@v%eܪ~*d~nheAYb\ p0jzC8-l~Dok_֣qoHecj1nm6ZctU9rKiV�'>ܘP#_8p]? 5 D!,T+cwfƀfV%KsCND=G=A6cֿ<!C lw3X)#i,�ܼ5xlWJ )0ǜ1n!ۆ{<` 9x9C"o,bk8|cR'0 5ӔzzhjwK c^D f8 \�@�`WY s׵`{ok r}|)VY+nv^5)�rOܰM?4AmC�;rw*^)\TRϞL_NIk dc@1ژ,A [PYP0E.A>˨TX=;0-1Y"J˜dxǽjW8 {Hy (N!Kl3 |OjxH�6Ş}N�N�/_t;EL}ssd`}(zp$D�+4-Zŋ/Cl֛1dXQ:f+ cvneV~[] GqEeY瘱\ dzRgVo(m[]\F䱕26d=܋B�yh@pLVJىYo,0M%4;܏9Xzs}O^_A[:5ߚkDBy(&㫷w6+!LeUӿvKA䃞̄9M]b"\G)0 |SW!w4GIP#VJM1eiX[$߄ܿ~gw�˫{˴/Z<z:I?{iħA' *t I A !cTo-ȓL A$aȊf'8l0= 8qv|`ZY2iy p]wRo[]=Q_~߱t# 0pԺLTlW/LCB ,vЖL82>+pp GO6=M߱z]AC? 9`,mg~uqh8H pᇖZ~E^כF s1:v= r�@o{ ;1^}s n1XVF Vc VzQo۪FF>h\8|Ee<Îkl"mbީ�z_w^ l _{l*('Ҧ KXUh 5W聏atko�r1h'ܬWnoR`ĮW/U͋T ȡP&sVd%W,b̃ 2/ȥͭG G2Q0�B oJ]Ih2\-PnY<:48@~h}ucU/̮})1러p'~B/z ~6; R<;. d Met&6xɮ$\Unɂϝ7u^ݥ%5Vꥋ_I'O܄h,ص#X='ŵ6)zztήA.,Wxܸh?oqd @{<>-P0o\*8fg98;C%˾wԹ :<7QV4]}3Wr]$DO0ɸC0˷4!hVVO>X"kə3Y~k7`oQ;YXL^jkqKpf'%BXXr:zo]?>Lz᰸X=|d?Xe'P`3-Q#/~ iخ4=LaҞKZ:&!!%:ϱ}xr|@FRLt;rFw omlo7?in;{urxtx g?Mꋯ_[&xz-zZy a+A ܹ>o4jtXjue \>aVp9<;.0`luP2k*pZzܨ?Ml}]3x WY޸A" [x8 &?-VQ^R*V%Mh)0r { |D^K¸}O_5b:gJl'?qT!cWb< @O-PR-.þ'~Wz׾kV./=6Wi3ԣ|'P<dKY?wnS)YJ%P" 8�/j{9dZj^[UL^۶ 2AC߿&4>ߗPYoe Ih.;?y~w@�w ߊOplКzNδqdl_~rbNgxiI s W↯klaEQ7vA(J^f 8})vZ #ěm9D잵eYErBns{0Hۿ~mEWG5 o wk GÍhoOKŤ<Tf.wOgϯ.</T~ʅ;DT <ش:C|QwD'{ d_^#|w|_t`|k eA$$t 糈>R릾Umz? +FwV?ɿ742zoމ׿򕿲QsoA)޽^H8Visw) khE"KcgʤE ʮH@6QuٔS LזK\éLX鉀}$y@4zhGϳgUQw\~F{(?}p`a;wш^�X֗MRly,I[߈=P(Ο[ ȲNJQca0~ Uh �V$g{Ж "Z\4qAsٷٱ<"/E<KYǐܘ4^ [;\n=zyچzv;;{׆o7ۦwի>֙2و=e,_^ o{͆*ƟT{s*3s^B6bVpa].e( ޮTM9rĀ)YxcJn/`T#ZَF^,sڲUޑ_uKe^<[#@ֽzf[?X6[fO2_[󱊃lW|7i}B׳ε_Ӈdty'1W@SͯQY�Ő48T*gDȓ(0$z)]bn--KzaGΒ" ǒR"H==&jw˝=Nޮvv;^Vgov^Ժ C[jJIq&�5hNh/೰DDyk~zvL M\N}5'A (Y[\K:֮1=fkV+ l Ń5%5[EIl#e؂#N^VV5E9{ћ76؁fAgjokފmܨIlq ͖;$bf K/i-]̌g;eI֍G< `5~A+ #A΍aNG0c@L0W9,U OVIgz艳n7I)%w�>{8kWKc” +5k\/ex&zx4t;wu-4M&61#w꧿U�lMWR>Zf"'g!&o_-T8{{ts~΁`>,џT5nnڢSbg{׼{hEf*uz :j{@qZYQ!9ƏY}`USMbbWnC}3gMH'@BFޭ3P7 u\ͮч^^QR֔TuӢ$⮑jI;ՋSG-}_7Kzhu(㸨X[S-?XX5gM#MdŲ9n6k4iI*@`dV9ҧL�WT8ˈ7%6dfIvXFt2v!,tǦGz�<ܷm#x<6�*PQ(/)rw�0D`aKv]d4Mg"[H#_�p;1x.]݈UU=o0M֘,=B`iա1q۷ 0eZfGmꤱ_miAu2s }^_{0>zD7r}ndT~j<'~(zȑd  (8=2g.|L fn�MW$s: p=@9!n>]p@QD〴zk_=Ǵ7ǿN 18Y)UVPR>'9_?%.aχ\DUShBD =rlՊeX$Nz#,-rL7%,@.4&# I&ȋ~Q87DB^N:NiW( |oyuqܒma)`yZJ\0MSUu]EY$Ys*KiA$+2Ylj(-Ѥ�hZlÐz� VOQ_xcB\|wu7<FWΉ\ǟ<bL`2 \{Fܜ 0e0HJ ^HdUhCSg{bVv|>2A `@BU  +-~H C{Ȼ\;5)vS8@>iᾴ Ыk 'v� **i.X,Obs�x=1DW=+A,J`ީOnI(^`gc1}D/uګP=02<Q`%)Qn+KRzf~h `8 lF+UfԹ%SW,–2UA ,(=k EP�; `'B3`{ߎ@ l�*|ȸ<daveoX5[`%I�3�:+.mo,�+7N=+Kѯ|/~laJB' ����IENDB`���������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/prev.png���������������������������������������������������������0000644�0002322�0002322�00000023024�12061426050�020610� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��%IDATx^ ���06a[���������������z8sU,=zW!/y$D9d@0"#_K`Gs<M $(p^(D\$Y+)NO{H]o/_:;K,ι UtekⳚZ&VR{'p ܜ%~mBE||].xHޡ.0FOSе],Œsٔ)#e'W j[a8螢pSຈxqƉ?}`0|< q'\ωը:تX\Qt&D4!a>bWK+qkkWl53> zFC!p>i:wzc/޽][.A~.<JyMӴJt:|M3s?ռ eZ πtڊŏuu[뼡*+CӰLʣu �T.۠cgLTb==m>kĺߝy�|oY!_=d 08Ɋ�ʐun[ `u{]66pO5rL4a1A^k =C7}��ss)t<Y";ex8Okz+O ?<c9 f?@ ȍZ-vpEyH%?}W}٧]gGQGw{)j;s*ek<WsN믿b; Qȹxnc_t lmsc'h0C4Xk6_g[[cϠ{+W.˗?g.%WEI6TA6ApmMS/ڎrPu}Ā\ctJ>bn/J)mwc?р1"AnY傹_lxF>Kл~_&x7{G.56T:_ln;˵3LV4UL]`AnoQ=~/)dM*~З6ta/6wիb40PT ӠN�Ga4~%#HYC>K 4*@F@ AaX6"X j%~~g{Gj ,@Ln߾ I#YX}_G&2`m?j~?ժ՚tߺ%Ӛb'g�X gҒ <a4b?ITUz BzG. a:;jx>3ST͛7@aضjA L߃�ςʈ|P^`r�32'u'S�?9~Jx7nN⇁h 9a*kB6θ.;ξ PtQst KjEq VX߾5aA1@x5nh x6Jƒb̕uzwٰTc)W*U]WLD5|>l6w c"~;f٣0+guWbna9S]~ .Lն]ch3M?>zO_ݾpk?/J  p43f8N@㊫  Pt&X?օ1??/<:�QTHZ G+ô.eߖwyg)S%ջ˾ⒼIgtOYeP>OQvfv){6hRDɳ!^G^A1qN3&S92~uͱ-cx/ye!MןOJө8pKH#'T*,d'mn@8}T=|d/\V5eʹzP*\>X>_AR\>MMZ̪<9VhCٷ&Q 30366B-VNKK_%1c ?Z Q`M6SQj=݄ bz죶&yk؇0=PEk) *, OU+5[͖@)qwrE$Jܚ-tVE\u:]Je + ~wjuyˬ SN,RGh~X.(6�εj*H%]wU2L mw ]J%V5rcXM OKqjDVs Pe8UU%.ZÇه~z뭵u\QMm8b1`%we(o1)gS>GGƏ&�LW\J#( -f8&T4Mc6؃]5 #49맹�ma%3ȉ >TFr:cEblGs_24`?e?*iuT)7)vT / Ð^ %y0f@H"eT| e�+do?xo_S\؂E…HY]C|yp,dYhv9\ؑ@(U|\PYZPdn`L*K_vuڵkMfZ90&ߟ,?2/b)7k5t>W ܽ};eEm8 Ӌab z܂JV T%kJ5g"Ykܖ. 1 [왳YH?7ـ=#6*CqkQBrH(axJX~EP[tb=r�⫭sy2\`fgz]vT@(½p4jC mXPŜ}cA^DX O A%\+#>+sB;]ab[> ~'~ YQ$qJĉ˲0j ;�H$\Yt$m+esrŃ<[|y> Z:d)Ѣ|^P�)<j}I]\IV;4,<piSժ,l;=qvA;f7%(`ץkoUzo$K#}q#)e\6x<r/,BiNwnF3*�R>\Dz.y!"pN bL+U!L ߼~_^KE"k(E޶]J^ZJ Շ% Qq.K%K p @AN\e.dbb7%Hp~?v`]37)P" +~%P];rUJp_BKּSlSh\R_3Cu 3v" +x~AQW~?=ShzxQt>MƮ3h0Ƀ3 T*f}@>BnK{n[KcQI{Ң(m̉kBlwoB1" 3P Eg?g27evnW\O>cS$x'ɴtM~fb�776).a9& %c;b!G@Qww#GvK2QZ$0X891HR_c8tNqUW"Pw�CkG9s`fhE m ?*RɆ ylb%ϟ'H,`JE49nn6iH]K1/%g &Un~yLAl|av*_NkcC={o 1Y0w<gD![3NAWo|jw{(x>g;K=ood6"#h;."kW8.}ەn>^�A 3=1E |lb%'mE[nA f{�q9}#G."Dg#%Gd01R,!ǖlq'n-D"t=[hDq)J#_(.}wY2(^5d _nن8I<_pC19'�ʱ MA9al$)� +|T(K; ;w΀׳�sR8<C>5dc-U;bƚbf] ӓ:~W5eqEdNAeX,vhahBgYfxY ~6S'qp0$W~<eN#Muֽ13 ((`h! I./5>!{1c4O_]ȞPh)+-<(R}X}x $Ba&m ѓOV)q*_ι-uRq'sS&w,V@ YhVh\҄zuP?ۙlF?eQGJ 8?).GT E D{{/"+r. 7RKYܕ=qű� xc9MIUTU*2NRSRycl1UWʒ%b9( A,b9z{.�"٭o Gw#Z#蔜\u#qiZXj#jꈊO2c- {{Wڮ+tA9z;u괎UトƉE-EMҤ#h9i!pSV%Le�ȜҴ=!$~t9ÔƮ:{X U @qrc'd�]ǀB\CBHuqQF0M8J-=G@1eR1泀Ob2-G+ G1/fZ&ҕWWɈwl,.C&$,` L4Ąne;U1�7@6xT7Z&n^+$^\ħCS.=cP=J[&]~Gcp!s$bϤ `APj �ΧbLmJd &jiPQqlJ%o &Uާg�K /:Jf'\ܻHFy>lhʦN* _Oů)LO.:Qq !4/:W ]EV^[ذ/'!Jy#+<yM(U'I)+B4npX۲&itL0Zj`a}r?.I_H rMLc \Q?*�P,տ#d9NLmiqd)-v!dbeo`@bZvCCz�s?9O<K@䌸"4"2 4 ;"4<`:*G,]3 # "jXq= EuA%P5EԾbrLsgnM+sFv6O@cY7 S�R'1θR0J`4i%a } Q%333-..(M@d!'uz~ WTkz[ێn%Eg.?S_X,?t6}~Nnnn<?3OIH< =6p@SW D\ W)߽[tfݙ3[fmRѠ&<ЧvÐ&V~Tn,4ҾZyG2 alӗ^ڨ./,=ڶ,"͍fe\-{8΁WgE8cg� R xŠ$>?Nw� =J瑵1DZ-nd'Uŭ .41P4sfNuЭ[7͎n~;Zm6ӀiTi D&`2|C4H#  *ZȲvmm@ǡ0tlgjiiRuk<l^>50&!5&v ,Z15$ 0+7X ]4M=c؁5/p,c }~T (ե@==F $TZ0ymzq{ŭʤe�As�:C@ czh R& EܽҁNb0nRz׾s ##cu W#[ڳïEkߝ97SbMaԢaIt];Y¥sR2MQ+wqX)c 0%aQ-F ~1Cc%,nB Lb +YזּocO=zG'X׾5ӱ8~0fecL�a/<%Zx̷aq+Lv�) N@1]۶qY NB Zz09Zg0b/FO89}4G ̩+:~PaKpp� OZrkUv0T%O0ײ~63�@BS8`_]Juc@�lG E $>ɍ_#VZ҂ `mhW,#6U&(׶: .=KZFDCÝ4.YJ$N' "ʺ519Vοm<^7eSsaaϢ?)gtpG徤.&1%,gYⶴӫlWn7 h}gxx:U\oxcZ84lqT (E8?'XEb'R.aLXA4cVn ٴEbm}e|uÜh5Q�biTN@ `ǘ, }{g~7l_ZCh.1`QӴ^Bţ09#hNCBvdZ�=!ŊeQ%!Z`fJ7n!7JK_Y7h @- +v_�¯s]2@0̢5: Ṭ&_=WdJD?w'oؗ6CۄY=j[./v(@M} dxbe MQʃٱ7T:˻o|?FȵmŸ~}"EK] ̔,}3� >? 8_�@W +*QqB~܀zR5SkJ=1 (kYb王U3"<Jxx@5Yў?T}bѾ nK&b%W*LtDQW�_qe(jW,P q�ܾ멢׮]׫WHʜ#'ZW~݄47hTQnN 7Jkc'z>G.$&a8�`PsxuN<? =k?]CW&]g*OM' 1镌P/&Bq`pO6Q!9@'B#)뽄+JRD8+ʕ?u Xb!yXh5dQ47} `wo$\ZEwgv Pim ;ʇ#ͨ,rQxxbu\gh0i-u)w!MAMbBh=fYuڦ8@4<x;:4<FuvL@N>1~<۝ ȋ\@ DrTS C/ *:z-ukeJŸCLahW>xhBvl\Xbl/ :9$XI 3)iU~D0Ѷ ='}hB%tc;?9_K]&bɣTթ[ CD B%Î_d>wj|qe7e`<1d"(C\0*c{I-O7o}LT1:s Os ten#/]A&U!y)BJn!Żu ǰ{SǟN2F̻ܲб=6ci`O4ԡ Yׅ[}i4ڏ#Ul3Ͷb]1Po�VKO@\=e$M+5>"vب'L۷o{?3eg#i_acM 'l8G`8B7:y "sEFNhP|n@%B]ʯC_{ p,som)ۍwP $."ɀF fd.Z:XlBT.! χdhc^Y-_ުV΢Ļ\AbЏ؟U&u:4pEzn7$~ uQ]2(M4w; Ö�*,=C�&V}VFXe48ԾGoseeeu[1ܭ^XGAlt+~0ktpV_[Y&Kc֋^?=~!'=}p7ύY <2$EDeɵL%_2(Gb=A0tieYsL~{au-|4m:č:P˲2 c<cBQHښ,Pn*#NSpΙq Q<Bo$Aq .,ρ9ꄿk ckK5D*iyT#e; &t={Ϊ{]fL]m#C_~w+6b^6&T/:x؝{2o[ M8'f�eH[Dor`C?24L|`h !b`H&|}*`_.֧#[D+&8@2{#_7kS ?§ث`M_o_. ȕJg%4b5n"mKC(5R%`{I~T*'X3mdσ_KŪW5Lxvtd,+ .dB^=K�J]0RgFLTĞ=jt鄻V]T=ɵ.~|/�)}n 1aQ W/s~&׎�P�EdPqPHcz<im\w˒s7|_>-F-i��������������7Z^-v ����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/mute.png���������������������������������������������������������0000644�0002322�0002322�00000035102�12061426050�020606� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��: IDATx^AK[AL^ B) r&R$!"B@,"pkPt&ᑥh@p7wwΰDDDDDDDDDDDDDDıf6%>OiZ� +["R<e9WgWD(tEM;PoY5�'sҡR;⛷cբUK9@0i&pn`v#cI\,*#MUk mh53-F @ ?pao)Mh-k_ ȁKXpL+?D` xMJ /xd;{-}eCi"%X,LAM#Yr' N82C 2`mQT؇3~y޳ާܛ)V.ek<ϻ}~_ۨ<WaF0ES_Xz|^,�y/x /N~puS7�v/#Y2Hg1f;g$M&Ir%MҋI\b]nUjԣ~8Pj 5~2$�yuz4?Zs,sR lи^׹::oBEx|ֽ{|}[?p?`zZm0aRA)y"cE >SI8N 7pT FhOj]=�ȍʵ!ȽF6q \e (Ͽi>~{?Ѩq\<�w,jrU<Iu+R w:<} j%l5[nfPA!B$kr�(p8ԃ0~Hr\c7q[ etzy9ފr!5%|< ̗o}䂏|#o�>�ZPg@k<=a5\Ur{7Gø @R'tCzZ-\`TVu p?T<84SYhBQ|SjZͦj0T`ssfu=$ �N~74uh4z pA�J}]{;l[�zj: `H-Rfjmii)XZXPF B0 -ڏFx>T�"|[J_z=v�uɉ<ծ\Y Wʡ_=3}�<>]?Og[~NzL*l>h6nq&0YI-{qqQ-//`fE:#NGu{} 0U l+ &$ &CcQ)\F Ϫ$5kILiFx%R55zzf?kUa�ʩ3g襥EA@Ї>g06t_R \t�ΎR7nT[[�8柆`pCTn5L ,Z [aESz}!gq9{?Og`> `]SЙ߀-=%�z߹{*7&l Fz*P�~ueuEt]su}|<' n7*Kjc} >EML5syd) ?+q -(v^2%Hw\gk5|{S;~`f^[}/�2g[�8y T4g:ϑv`IL9b|} uuuuuMM*;¡ `rxr:�(`(u k>J$PAxzΊ А77p@WV2羱Z ^� T=Z_[S}ϻՏ=p6YU?xuՋr+ϩV|iW90-jSX|HazmxJƺZ]Y!UEűjwgfAq,]R}up|(z;MH�ZYjZ>wpzշyVz( 0Ӧw{=k _~E "�]D@-Tq08U#hrcHi[](o4R4[&˪o&d8Rq\MfH8h 8�N4C]zz%u5$p}|!.Qx)'HhFǎg$syTx-1\#ab`}S&DgWX`*.*WSHex'Ol!\f঍I3^;. ۙ.&#v]? 3!4L`b8�B o8zw]FWh%NF�k �'ǴpG|D+�d-g)f (pe*'AW2[�?"*�@^ǐ >+pwvvđ#{2]yF^a#`I!h=b I>ak3_hR#HTRf2�qAAF) GEPe12h $ƹ.p\+� +@Avv0¨PdՃpVWTjQ�e um*h|�Ah}^ԔI)D.HiΞdC !"@#E�`AO~`'?BhJ*8`�C0$@T`߯ PivV%)Fo[W^}Uog疶^@u,Ӈ(ّL`/Y`|+.`t}Z&a< 8&dPpyȻ8R'?b~ S>_ula='|ZE]>X-ПЯ+&pj׻ w9hu}kk&DSu]K˫@EM8=˭ϛ� 3y9H3*CCvƪc%K*']`D? kō<q]ܟvr-d+++ť 4xT(Um\~-<K@&Ԇ,VYcOiF2Ɨΰ+# cvWnz|;kA�5TFtR(X߆P G3+zJQȇ�%lj}}==y�uo>//n8f[I0�3EJ{ SPSI9�>-Y %T< 97`;10jw?Q`<I4(hLAPNTcg^/p|Ryoյ ,ظQ'$ w� V 0ae"o` . F,sW�{0H`L#̑kF&Tz :iN;7ԫՅd=>{S'8@rn6a{J6o{gTF/+&v^cԞ/%Y~ V+WEdGogh)Zy(/-�128:qo }(s7oL@?|3K!R+ZS ř VN<Ʉ i "EwsyC z<P(i�ц]me&GOۿ#8~._?��%bXOG2$K12gtQ@NsM\K $�p�s{h|G-{z?8=( /|{řOKa~ 2ƉƁ-m4~~Z 9p\/-Z!*Hz| AH\D-L EJ/"Ge K0~X3;[*p> 8|;wrb)ڕU>gP~g}( (ƳOe˒эfC}Ғ8rJ3C!Iڶ�۵0-zO )5�32ҳRAr|9F*8 /=y �}�ZXY^��E[]|4prjAGTi 8A Yj AfԀܠ=@4u p0 .ƃh{ %\'�$$(RN, V(@I 93 mд6-n5vJrL@|W@ӄAfʻ2<K R` 0۰T*zL, T?)*ѡ`)17@&e=w1KE\|8zCDAx~pqCz\X \FqYfgm& U1}nO<g9XYg2&};$^ȁ,kyy x T=O&sD.3BE4ΐ0s ,ڱ?`m-g8.k޽wKup>foA@_R~4MF=r23$ST++ˈN<t륧J^6{K|8r� 8Z]?>@Bfrv-Qx,U|g~CH* WchӧN J:{TBYf2Iߊwn-3d$ Fڑ0I_ՓFL2K)bu^N"ݚ (aJa3rҌVt� 'Afx+�pDv;gkv ?^88_qD<$%1Piǒ kؗOV)Lryk葋8&̀[RsC`d2ڍ&:5f1Q<3qNJu>'mz~;(Ѩ[e<Opv2<'eOe 7"Rհ*8CȰNl)5ĭ~_}f O0,HZ L4K̳H_P�X3L-CRd* קL7P!Tv~Nu8 uVqM=`Qmo<˞ јL,Ұ{iq=rɝY+r*(Cn�ˍEVK\D^rVI(R.2WFQ\GYh[\%&{yƾG0SbF1:RXYFrP}ׯw5 َ\:Zd#({bڥ\># ק@F Ki̳"|o Yyg'AbD8.8,qa5(1e 0@.:26OZ 5q7@gk`\kjXk6[lKT4ԢGG(~>�?H�$/ p )xՎm"x_Zz3]0'Z2Lxy‡d^X*RY1vMb('ut^1e�!@1Vakv+rfL\_J\3q]fȇ(@���a4|�bC7ks}~�xQ�4 FI6P0 9T(7z8WqBu\ME(‰[C%QgM~Bŧ$ҡ1vFMy%�L�1{�8*IĦ^`.嵦xT24B?ii@%繥wnsR!x"�YaM9eA#0i rMNNЮR,g|ߜ ~~"k$bL5tS4j)�\F |ApBx|:sŲ.L)�V['hZьrJ=QVm.͆�%}㔥p�<7giM&_6GBFg jH6N# P|"->%x7 ^T&L`S�y]h߀Oc3 |c�^jjq+�O $NkBbUC ,ʶi[{^PQT2L&8)z: 2ʬH2P)v(ϒh( FfW%yL@S|} f|Nub 5DYĩP= ΚSkGq%,z)֮˒LZ2_:� >Fˡev(Jq/rO�=M8uj#`9HY1CggN?Vv IހyW@<IF̽5p8%c@kD"4bD> XYdV4jdǴ g*XNz7ISa3A<6I1v'ELmR_]oԖALx\D)ڄe"0ߔuά([O|K`37_$R|Ff+H/Ǖ ťȾҵCeK6  5@fPT |ag}bSijݻSΪwE2@d[.`nal9(y &M2 (r% tI8R2yN "qpGF6U:|=fq[%d\"/L*I~qMLӾ)@΂O1*GUZ) Y ŋ8>�u=b[*3=^HDwxNm!yr43^glC*NeQ|[w7<O*e)&|f-B�C):e`L)M~*$pGP!LR;S,Ć}I.!D&JlZM{bsuLη^_vB2'6;_dnN)@M+J)<E$J017B/bZfAѡxExqdj5cjxAU�o c165^ilx큖L :־?q9e8eIl`4QEOQa=O�dں4\:̯jY+L%nvkg?Btl#83Q 4;{̾__:Q�%O00�-'u!nNj8 ~<Y.#zJ4*2 bFL0S%,`�hb v44/<KE&tDMD",?S<(s>Z_REMl3~@PH܅jB9qbqdF #GدZʝd�!;y<q<@j&3DDs.'0Hi0XbXJER )]P8JV '(%^vvjeo-ӯtQ > 6PR0*jA~h(�OGK}UTb'Ց16rp1siχDNڴwLRfIMXpf6(:|f]U&R5gL%eL D\+T)Āe RY|4Y 9+@@^|:r0+h{FkVvʷp&=|IgJf0ƒd.b(۲� 2>v(4l9`|f=kXC@x7 ;rʦ'}4Ru|AA;:j&%m0(a+FhGJܻ {>_ZMaO7R H-7:R3+rRNY`Ķ $a1ge&&|,gNF0x"J$`.řc;7h䦜D?pNIS?hԅ)L/gJ=')L1D�m-l8# ahؙnک O[p1b En[+Jm1++%+|b*e XT{7;a�J_ĹtYj7UMi}ΒgofF\paqMڵ1tގ �V՘  �!'M㦉$X'ڴxԀ6sB.Ņ>g 63=&y [2&RLe"vKY+Kť~&"q ,8^cTTŔښ.\s3Y)'—[-Re L^u?x`k^(1q)v6?]v*ϛMT�3ހhΜPw^7Yz&S4{T+Zq."\G1HMO1<2 wey[}\Ħ�|X CYB(@ Vug\l,6?[~`MTOld ŒS?6rG )0<JV P2ϰJ[&(œ=Ax[t`xI`&OӯiBjnq 6.CD9y6�=w ݄Դ CyXō}:P\സ&j3|40ΆVeQӊ)Z[h#idZZ˜P/]*]6>A 3W%lZ `^WY5:H†k,%Y3?2YjA.$3Az{7HIy6u+(l$JM[8cT(ۮ͖1KĤ|qbPj s&9cm^^P',4:k�b]&FsJ۰~1܎ 9 4 RwmU Ѡ_&_Xn+%k=>87ҧ<wI lE̮-&(|iN',W&Sc6o�y e J:Q۽ar'7֞R L@O-W= L~La-f"("b]/e3_B Y;;;!�hf*@")AaViHsֶJ|R*ChnXf ۔ÿ|ze@͟Rݛu}�Ѭq7|zVM}c(U_e 8I<XZjSw@9Viise7 *X�,oEAT{8zE8N.˜a(̓lG+j+9{뛡wj.yZ=Gh3:;;pGF0uA'<~g뤖`ۮiQ,hפI/h}%[QNg_I X6Ek9c=Kvz9ye>f#Z;ߚBgDϾ"&&2I<q#gIYЍf2M8q7z/l �rş%<-b@[,t-Ků*}L~ w HbhӡyE $f$0=*K ὎TxgϪ"A_T(UlU67n_C !nFbdh*Q 5gxYI lqTj^4,V�m#9`6F(y7iՔZdc_üAytoYe^EJ15LU4ަ&T;ޡSjIP�K\%J %|@KKv:T65fڼf3kZwPLy.�otuN׍s[ cbj�7Ho&Ί\?'/&_t(`'3~^ </U3'Ɔ>;V#Ҵ�,A &A^-LRA2y.S2<w*g/r=ڥKI?{pȚi5MY�qRv( M@y&" "edZ}}'m/p4Eւ?3Ƕ݁DKW9ŒԆo谢j� ^4L~Isr|0H~Ja�iLe9 ߥ $CH{gb*@TOֹsWD LR2� L 1X`^@wSqlߥ$kv  -'i6Nbph�uu�_|vߗ _HjוD.WURy9,؏+W{'Nx |c�zW�0<ҸyYStn۴p}جݽ5L{5lL4 `*2`ciQ \ZKbdB͚)L�n)#c?P]�H ^ftȇU^RISTc?GI>kj n`M?y_ӧ\Q *ÏPwղFų"w g.Fpb+9@I>KYV}f\d5 P*Trå�(@'1n, 42= <v'~UG3gGhO_?c:w�G4`=H Y< V@*QTPu;hLE#HtSwx83!2W uTo JYg-[:n(5 n+Ǹ<FՐ~6f0>�@. [D.GC'RvB5~TgUCo9�fJ"~nZv8C}�auJ P@M�SK8&i2m? `k . DS7Pr žŅvml?8&CdRcC=[vCG?Q L{[\&Oc0a#:T2xښ_�nl @.u~/axiĉeZI$vNπOB!� (l](ed@ADW:x!m~ATioPh_LAR<""LśT2 ȵ堃j;ɉMGA%p)dp]q<',!K* <E.^T]h�O搂]S zf?owc{2;졆 hWAe9@d{;7[2)gIv{~Y,KjZҧh4j:0_$L_-T;*qUvycBvL0u)Ta3LrK0sU*&2pg uP 4%dawzP�swЛ}}={;\F_ \|:n�@\3+S0@=�PHa`wT/~ g/4[ `(sxQL+˗Gǝn rҎ3G߃ysMai@d]:gH껼2(;|{\|v&J�#w8#ڎq6GZ xNmB8iP4�,C';{S!lcb?}=l[>4*C=dx6`h1ڧ??kؚ{ߨNwQo$r޵e,K"(I T/ �Me{wKXm< ^ZT]`!1 PkH*#4KN�7W#eiL%Ϗ޹md31/|~7 *+%\x(4IL* ݞ`rP#GUSI5D#t&Xh*o嘎.O@ps.Qbq(&1ELuNz?'g<V>#� T[ rE>P�5$?<T8vx )^(@>X_B3ќcF= U5#0SUϯ՘O/R!tn}051<|Yn93 d87a;6@ ? 8m8uA`J{Q4�ͭ\za84/{Ї(|Klclr,إ 񷑽lM}ӻ1B'+6v0 PQ y^K_@t8'+ pDφG|)Gn<E5fb>uu:A$}qAE籁Tr4t"YQ x&Wlr_RF~F*L@s0i(jdѦv6U&y糱)c]W9FC  c p}ל@ Ѣ KH b#pSۃ`tb�W![YAF��4O -H&܂7жռLzeҳuE< k:BP9ޏ8z> @dnLf&!_u %0LS2OpS3J�~l?brh&Lp*8Mb!w=ӇTj:?zÓnPyT:<Wژ̦{\5trѷP�OU= ~*F>󕯨3ψ/�ߊc:Br_~(T/&\M} pg$;j|F̘1˚Փ'70oQkpU3W1�DĬ7)cymG`>akyϥJ_Znam8p " {LPe ~tr}U8<o "4䦟 + 0:aH*2 ۛ7u11X{4�|5 OCbH½8@zx>�+ԅ?h <{߂@||8Oga}I$y~_Q |[i<HN`sdA|wth#٬a#|TzA~x]?$x_^]뼮 }NB)xw s(rJw?Fi+[<o ymYT0)ә. :N@P{;4Rt*eĈ>(:;$P ֛} P@�|3{y <M n\R/ }?)V %]:ea"C 'vQ a#|; fY!=@Gk6XJ6(f{#ՒUK,OE/%ڬӦ3M'}_Uo,w^O Bri6<uw9rfy*ZlR-H*? 5ޤUUUZ| +`If/Nh<z5g->)#z}lL&vK9g-.YKm rh<@E" iY Ns  6\�PV* Ң&v2y4Qґ~׸ iJAɗmODgAfPo Ny1O%}3L_C05}X,ИV_+T_]�*}Jdfs׎ ~\3{J%ш C>6}.Ax ?(jGDwraH>#(IUe#Pݫ?< E lDUCBQiBʯV]Op�SI#a(WW.l#.xYUĈ" bRr :2H]<h?<G`PJI(6ۃwj "L c-3 4s0]2~kM(ҹB|V!)QL(ec ͠aWpJVǐϹl<>2vw.pg<#ߞ0~Ø#$#bg`}k<$@)+r󺃁|ApI"EJqTlvr2G;?@pdzZ3)zmp]yPc% �fg{2C>1� P[ 8Qd-PpZ+'7ܕ� s!8a oG8`##)N9x\j?)\Aw!!<3�4h� 9 op})!,0=arxZj?*w:T<;x!7:4-1 Tq`".~^ 9׏xɒ[/dC($9?<M.s*g9{+GMJI3\#'$/KLFR Wa?TL [m����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/vol_down.png�����������������������������������������������������0000644�0002322�0002322�00000033043�12061426050�021465� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��5IDATx^AK[AL^ B) r&R$!"B@,"pkPt&ᑥh@p7wwΰDDDDDDDDDDDDDDıf6%>OiZ� +["R<e9WgWD(tEM;PoY5�'sҡR;⛷cբUK9@0i&pn`v#cI\,*#MUk mh53-F @ ?pao)Mh-k_ ȁKXpL+?D` xMJ /xdMcmK5ysv4 c#BB'G)ďHBa! eT" 1ipgg{UywZk}Iԧo^_k^;[~xnv֪6L3I3tO~(^h'IQ]j-Ij@m -u, Zc(<e<_4M_NÃzXtl4q+MTi[05_W2q+Wx_h XZRfC겵kE=gGg=GO w@x3zn^tFhk&BEQ$4gOʲ\iElc2h4TM=_J`?3 Ӟ+@8=ws}Ykx 3?3/_^|na(�dNjtՍ[~`f$ ( ߒZvjmmMuj6BAC(IR fL&z<4x Pw4L-<Zk(Uމs�]q~l#i~_/ N}M�t@]V}$~Qo�:r4^t�@ntZ[.BTftDSDәF<'ЪFH5 td:Q؝LM|<\3oaz:(~$KT�1'wMn߄zt:}g?j :ko0i'ɺ ~kE M�dwm|:dm3lYcj5.\innn&nX7Ot:S�O G#5a K_S[WPwrrnٷks|.$N˂|O"�V|SKKd kvz 6-Rhww:;k�Bu)S*iE766֖ x5=L��zWH+Hʳ]  dhl` 2ED_M9\^ni:i=S&9'Ó\x�ɏ~pwu|#�W^՛"IB' %v :o*6$7�0}ptݻDqȬ5 -PL~ֺӂ}h(R]<SGESR G`0Ck01|?nQ{s o/A@xZѸ @tCMlwv!ST4A D�q㦺~zŗe?`?h(T#p0ZGm\v/h ~�&H,Bм/Z442&$+8�.\~ure.$o )m ,M[!)F Kbz0Hqt|Lwխw;wԽ{5hBPsmT�.+ghFW*3 꺋*0$衏B+3HMBiY:}XL�%I'm}ޅox=מ~V^;C}[MUύ@zWyF\׃*H?Z ;Xrk*B�S3VLnƺU;[!4ua<ni*a:>̐9hAnM5RWp<G>bMqfZ\vcpC3Ϫ'{�%aZap^x%/cJx!g"(<"rL&3Ks5DÖ\!!Dy3bw^OowZp@8t]*z  d2ʪ5с4E&@K֩pPwWn^nݺfRU @?倗}j� Pұ#3fmG1bs;QG ^ۀ{e]FupTHPi,:.JU()$KnTqӎhO'N{IqP3k"4r$�Ŕx1�zMAz5=�tt'NFh|u�G}39cMiVf9c �H2m $;YO0ڂK8fmX}%Ҋ&�>  GH9 m$J47BIV?%A)COT |%^ݤbABƤ8 ar-ϳ}'>Wohdpx.p0ƴq`4-Ikp'7+Aa0B`d[]V-H֦H|;_CPԀ-&%R &aihT@)s Tt$�2nnl 15O*;~ >؉Cw*ߡ~xd�l` p`y6ϲE#l 8ѨNO�D_&6z_x% l(,mxuO8[j|V! 0@0b^A4C%'|d}_OY;|c+7sڏL441#kQ'Zqd/EjEbסғxT wɱ1BЄcp"c'/yyuEJC ;A X%đܐHGɜIGϳ*{[? (Ajc oH ? Ҷ͂Gl8m!Eج1I7 8Ng:»wn7�Mi*N�~Os1a_Ct]Y:pq;]=UFW*70~J 04x4Qz@4]1Vy#P2,I=|a֢0ԚoA>{)ĦvwwK/�PmQ|1t 6tZ):)_j%BKg0:TBwV_!l�ڙ(OSu|)h<IahP^kFڴڗ5c(H"uD*듿%^[ p<&A6{V}W ; PM#D"x$O'|!0a d5N+5y{{>? ؑWlV_?[T~9 )(%Td 2`?sf1 0 \r* .<+P=p&UgS@`yō<X � `<{$wxtFw/+%v^Q,C <@aS7nT/#ߧs^![AWC|-#x✜yJ: h 5&X`\V PJgh ϕ~ ??@Jul<g8bw%&l  QѽޱO<d�ҭDRHm(G, A-r|G23/$^KW5> <9q}5@UK12�]Bk!q:(Yꏏ24NF 7N SD;}j+ {!߉w �^Q 6H<d�VܘQ*mjv[G$A'PZ�2R5(?rw@R *VBhN}j0.EP1=W<7mr�Ǭu]6ǟQ} '>+. .� }p.ڵ=hw)"'{0,_E Cr}.'!t%nwڒ퓒 ggIe2am=%زW@/I!UoHJ;T2(UQ,Yv>_Ү|ӟ< [s'ZLYiM鷭w5Uv치Ncov2�=8 ַ-4��1c|.NJT*c32l6�8A 9v4ɨA +?jӁ>tўFg[Oc6楂5h`ǚVIۉzv�wqyXh ѿ#$JkP˴tFn$7]{^13|D yDi|�p)(/>�!l??KUUW^` }*?,i|Z/nb{Gɣ >\|v:3WAm#L_Hj$A~ҳPs-di6W=;GGp505"QXQ_O<?0ced72Q<8PSxO{Aj]޻ҮE=]k:}0qBF5W 9ƘZκ[gX*�2VGL`%_G;D{:|M 䘪A{my.t>7AO@@J3_RшjȉdAT[.V<tJY{K| `U)�Iҧg^4_@>[>#aʍP%2�5RnYm/ L>d6rcPM[&n~-`#S۽u!x1~{c\xku裏2dHhgO\-9Wϲ/FL2˗Z2I/KzV%?,DsO4WW@%`-p1'b)d)&]Ӗm^�nMȡ݇]4jTd;O`t&[-$%1i {XO l [?ޯWռGLA9ֹ'dU`1)@k;-1M:_1VL=-;cDp~ ?}?s.kFn<Adx&` *:V:@ި42jn"F07,3Ɩa  PKI[Z>U$�4EºT51=]c �Cbۍ5f(Ww~`2hЍ,r'C4&h(xZiX潹997*"2#3Xu$!߃U"Z&NU*N˅PY(!e֗_&q}<H(Vl;@Q](v>M~Ojl%x+ ȥLfBeWV\Tӷ80zHDۓ0eN}{ਕ7h|VA*!KBSW?��Ŷ8WjO8 `Gt>K֮h�HLB�w0(yF /f6,/yi& Q!@1#D)a3w! I;:[TZFүIz3E.4<'Z6xy‡I[ʛge`/Mju2|a�Ҷe0!jA s�"g:hKفov׺ꕒ2q_RZ̕squ.3cr| �G�Ap4|�N.nƔ~�б_mwHd�$G x XeUGpbTkajkT]qL8~x;hbIU'~�" v]@)Qg]~D$Jo^ wĻZ$J |Eպ űl8EQdR;9|gD�XS'[U{PdD,i.)cm P4ch}Q�AMF۝ɢFKJ2vLI0piǍR4ըs:NhP[x}4P-#VL}s�hew*͙t.C<Sà �ҩGL3.[qlT߸_g�/yGxtsGWa#3 ?jH2[5@MXchǼ4%xR%S1%%w%OS-ov_8v.r%Ggw8ZW�^j֠ k�OS2 T{'̓a4`N�u?rx'0K.٤fQLۿ\>RzUA<M"uMҋfccfD- G Kaf!?:fWbMG:</ cR ps^W:s5QDB\T=> px5~RsoG(%'OzU]QRx./m&O |EǞ{]ͦ](yߢM؇.KG,gKҦ%.I:ʊ!<*Q{ֺ_ 'QP[h QЛ�!S$V7.@4(.VM0"WKєQ!� :vtVI p"�֩+JBpKҰ]:$1s܌ڹ`f1K ~wĕE]XF* LaId�JfTߺH.�2Ny@ZهqDzYFYGR!9ja I/]kV:['~h�a�)Jv̧z,ջUg]!V~׃쇥8Kry}\c]!AƁπcP\ uIؒ?^a)eܯzWWMk9)qHc}h)�罩Q=YQOX:EU=U3M ƛd֫ -0?q@&#|ΖDS҅ M[a 'w/P>78R߅p጗|?Eܯ2 @Z#& L,;EӶXɐN12d8sF'Qz^ $6,F u %&L `q^ZSys#u>Y 2Jm/B0 EF)dfqɥRxVMrǸbP Z JP)xSi@32=Aatmjw6A;,+ xy'~8M`4QEOiaH�w5m],.Dk Flbyk`񼜡IU*)h=3ΐtJV2{Q�'�cb>@89Dލ9 6]U5t9 J-_I L-M@D 8G*;@S)W}�Bїsf\(X&'莓gi[LWMԜb)h>^|a6 lB_ExD Sΰ_괪ϨܱS!!W2?Q@#/JZl)tb<HS~\I5<#pǹ20(r+1JB_ K;:&Yjb'}Ե]E4S-7R_̽ipS|GUᨘ_B鴤P�|V/5@¬k:~NP:<7 lVޫj ?':{r!)K/9pc'v�G1L'UvUrOѿc+̓u9l�["� 2>Ph h`H^ҵ2 {{\&*}<O-Z{l =ݡ,(AҪ**ЎCCxiu�VMÞKXHYh@F߬Q:9"GI6Vl<3D>t,$T٥R nE Ы SWЯz{^2g�Cp�:6 4Xh~1)tY!4gs�~a�wp0d;A"A"%ASiE$^,bF)MVm_YT}XsBZ׼bɹX=UEhN[OK2 ,5pq 8B_C\Z�\|t21Bs�`�SiJU$lmLgh LLnQliռTO'-[Z*,5AÑor;9 4kP�2pK䙿NO<S~nLmd#'-;=69W + v.N@s @46eU#g^w76 �<38DwDuR[qhy2Z&q}61KT"߯ %3<<v cSr>ޙͲ|)i)!$=2j^x_I<vZZHvSE%$r /|mNS !S Rr}x^(,jy{^.3 08o#㲡�w7M'd�cPsxrZlm<ᡵ2Kw� :Gc.8aЇ.'~$yo Q aJg%Tbx Z?G R2^^ ,!cx`pt|-?*s p<9^]y @}=DcvtA!(3O[Ճ󃊝h@%OL5JJ\7+ms0K[Xi2lJe1]Y8cd(_͒RTeXPR5T^ݬQ0 )fA NjVM Fތ0xprF0qìoʞ0U^%,pSc>_'70U{ƿݖϴ8V2I-&(NY4l8Irq+97~LP6 Re^.sfWl942q>K8̬~М޵3h=!GiB~23_G IGG NMHX7ьmNPHԲKJɀNGy~b%(ZMZgЖe^bw7x%sx_xY],zqw,�\:ݴJ m~ MĠFRH٫p`:Vpng o}mUx$Kud]e,UmN*vx4Q ]`XEl=: e+ 9l񹲟�s &%6{s4> �9g@Р^lVsc�vmptxOƣCHdRn>Zz G6dWX/b_fnJaA/C]J0A"R,S{xF oW_wS<++<D2lߢ)5֞ҽ׬MfD ?>xϗJ 9 ㍭}8q  6&�9OH$5ueo+} �aʙ|  N{> =4E)I\ 4cTIW_d |ͣ/]NT<&c9L+K "f hVs8sϿ�zRdɔ@1 n`gJmdT1&*+SRNNc -M%iü `(YS`t&X-UW/?WjS >,9<% s3v �^:-\I`# |-dا]rK\ֿ 3o370D%S-KWMlXVQ:d$.oZU%_K*�-IE#,kirSdzj{Gx-޲z\|W?70ܪ٢W_?:{+LP$*v:�Ҭ|A> H$|pĽ2Ho Cn/~y+Ih�T pWA-W5U ^l̐bɊuXãxn+7V`LVG:'vfUCBhD%+1s�skj&Ƿ63TeLچl`^@8pA%I$Bɽ`P?C%kUᲖ2_.L(NeC:8mY$�,Z XM]/�zҙhnݼ5x�0c @]z jR[)(eZ�(q 𬆍)LKm0I524 fj 7fX).>d73^xa]_]T,^Dd H <t[f=-0@d[,ZBXv5+:?!x_ +W䶍x~1d%ûz9&g.D" 6.%0 g"%n#JHC;ے|U#2gXUNf sFxzFXH\u>w=o}78am'L~[߶Q$\l,5@uab�c{@NvLfQ-8u�S٬Pyal< g)(9_*4� )D9䷁ʗ:,h55nVLL?3Ű1'\ 8g=? i)> #f:Ye X"ؙyfs^|o͝[֓Ic{�`oZP7;�ul!4 RAo*k;LJ!x77ZYl+%u|X%x Tq ~RX+'ypؓpqw?0-0E?C:kAyx&{ɓO<,Dw/^.!s **T%0 Bm�8,M0@:M:-0p/u%b(fjXԾDF;$%E<WJkFۜUY,I gՊ`�ExߢA p||BF$0@pl4e> ?B[!�kaYbC|K9eY<(2eِ�CKvS}bWKu ,yA @:aER%~v)f2~[Sc/e)3`⻁hg_?ϟl*Zy>ǽN#cף8A�Ie >�Oz@p ssBU/tE"nW-,  GI(�[)ŚzF�}S1˭< �+a4T3ڷNt `�ߟWKAeَQ1b;K}K acc!AvT^SzTY)0VZkt e 4SЗ$(`em5` r NNR3.ŦM.qPwv}]3ȼ.@ٛ]>>|XiPf30KI8/ �M2B#J"PxU]I*,uܾze>g>7RX%Q�^_Qp|srmd~>h`Z&?DɅm3JϤ=᷃8>Q$. �xrˊ_ r`^?]Jt>⃕hd%=jN%}f7k ѳO~a MįS3g@3a%vssctсY1BcDЮ  �sT([\:AWV"{k!QF ~ddžύ2* z!/B?MG'^|�{{ N*fIMK̑OFa'okߌZ cTf>c?8z^PS %%%E]>?[HY뫔ST$~JY>B--KGn/SO N(xPl鵧f{6𫭧FAq:fmc$x��BZ8ׇÎw�$ê1mTV݈i6DrD"J"zV.8 /ŪY6~7?пJtn87@g ޴JkPK0OĨ<'~ UpT#4`n=JC-*YZ7{Q8N�": jA +L'0pv]M[DJ'΀&!EBGT5h/xViu[UVM@d Py_'+wH?p ΐf۳l__UJk=#GCetTjD`f=x?덧6נ?ãȠ&X[ge7;/NU}8Ye{3<߿妗H-I'{($хK[$y3C( Bpkn) ec_Z?[}"0S[!omVUuI~VmվQ8ܿ'^׃Ё^nz dP m"w5Ky/}q*Hfcqxg4b U>_I;�/IjQ7ڶZ#` >*kҺg=I=s1GzK{nڽN0@C:k0fbcwd̈� Ij+Fvō<IV$Kq;E#C?w˅dqyQUU0)RJu̇Qon$H̑V E �k}Ϋņ[9JRt )~4Qr�a8r�Xo�f=E^RⳠ?<<~hF9=ޑG쏡rbpawkG+j\ sO��������������L<@|^����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/exit.png���������������������������������������������������������0000644�0002322�0002322�00000040107�12061426050�020606� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���sRGB����bKGD������ pHYs�� �� ��� �IDATxI$GQQUdŪB jsB3400sh`QaSՙd 2ۮADU-HF`wss5'`Ogks y��_R n5O/p[}t3H100;OarN |�= C`?RBY @&e̠+`l± "BDy BdMI$19_gYbah੅�>i$D4{])e " Xc1ˬ(17wwp&`FQ�wY&DGJʸ$jF4RREB  keugn&O_Zgo#YxSh=Qf?A¿WR~FQMNqK?M1qI\?+K`mo UYF,c\2]V,0YiBnݻ4` 0G > I'!'1{.R$JG*R"|_?ѵ^gE[K5EY%%8NNi ONI Iң߷'1n9|o7Oϼ쎟}!Gʢ4]; [=ZjeIBTu>Ywrc?+u4ᐗ|vpш`@'њ(ȋ,)h,';戶߳mMhym~"!ݱO@*Eյ Aq{<ʮާ$pȋ=d4b'V jM^W+<( Jc0�?�BP}lx|GS{o:P B[^q>B (PQc璅 U~jcR,,bdSBփ<H籔d4d<f1CdElv6c\sD[!@@>t?" M .�~&x{ NRߣn)̉X)RHJ$q̸Z2ywwtJ c^kSesJBHMUENGq,Y,-Ls&9<�8F_6$ 7J4lM瑟&ͮ @ذ8M'[p[5(Z˒,]0hL EJ)$Q<?(} B$RQ:Xc77fYE "BH_0-jCsR4 -> >Ä 6Ӣ!P f=vb 3a 51ZC:+cu::kY "RQ'' qhV̖K&@ză>xL<@fۂo ZBphm-l:&!@Yb =af3tY,( XJTx~Ohe,U=!*UJv}@^̳|Ne^_{5)BMYڢhȫEM8E4ozrd b,`#Z~Zc3c((NO9yQyFFPQD$JI)eO*_-DBE>W+f<HI<{矓#?@ך;4m-j;&E ۾~۽%z8D�\.AX (ʒ,Y/vIcoN_iTifoc[(Lgt^*-LsNYbЅa=@|Roq ?z|N hkZ#30A4ØVeI^.F^AƱlߨ5oUV×ݮC"gƸ6AS [Ba#!y ~^"^h0NX`x&·SbƠ1pJad,17Pז&>4Q(B12Czq촥:xC%�Fh>|fBJj@kLh*|&P\ Jy %WVN=.'𨞱c !t@ +46 A`-8 VizX$$Av:DiNK,@YT`v[Xk�%61Y2tSآ�Z dC"�?lr!IISU^ h/n%4)v&r"~ x+C\iT 5s0 ]bi)} S,)V+rϱv6sLY޿Gej�mIgm[=#Tg.)n۔\z{a _h퀉 0Ip˛k HP1pHu$Y_�>bb:lvt1ϝ0km,Y x%51xnc$W2=U^@ײ*Q~xo=c  QJS(¦)f8t>7)f3ww\ xnAkpƸQPTknYqek_iO�-x!pHOrxHrp@紽: ͫ[1HV{ZCOEAr$kրƬ1+pT&WZSpK1&tK+�[ki\F#шk}<9ıCwK \E$()XKǘ~;bg3tJ6B�*$lhē:R¡s0C+  �U}vH>u? ϛ@12nFIB21 U5қkY 0uf oɨmoDTc(SE!㘨[~KC|�>$iM 0yNXp\E5 X ҬϩB � x{̿~ܥ)j8t1'Ǩ1k讚kL7mu9cl c5tJZ%Up]WV ,5`o#A 52f 6L}γgt?']H�R ,{#&o]C!hT0 \j[&H]뙀V,J^ӧt?'}h.^�gȬUZBX8"*]#~Є-�<y"\FJLQPXmBYR[5ꕨƨzQm jfjMx_99qqLVfnoYNex|$ώ$R(]z'%2Q.qO:t}8هRO)x:%֚8I%-94.M ֭@� WQN!P<{FI%J>vƇ^d|+,f3t` @$c1QU<"d(0\x *Ma,)(cZst9%mUD�M (ܚ hӖ0�0 "4%98p1j0ve,r ;Ʉr>)sbAZFZPkZ�_)DJd(%f:%|0phD<z;[u*I9ZEr2!sO+FOSy)"+Q&Քd4Wr} B*>uuC?@e9 n޿[&,0%֨tk/h;|:kyNd-֨,CfkVݮC<yBpmz}%<RJ4ŎFջZ!sCe kF"6Y֬47ZkVu @M�l�P@γgt_$=>v>#5jMkο9|Nl 4%MSzIBG)Nq\w5y!(g-:(Y.>p$x K#8tJYd\t$Bjۂ U|g\=[AT6qca]7w2}/_To4B&Κ˒l>gvs7q w?|LZӍ"Jѷ>Ѝ"8*Jmh@>~AY({x}^qu:[%Dv:|0j^ EkD -L`u}D6[k1e|kbcG\WaB)TKO'99I~eLwoz5" a~ IևGNm#VZ�YG@"9;]\$''=ieLA>'N'ys{l22КU=B-qSPTp,^,(&D3P*Љ$Au.{$yZݯVf3&\g~_3;;#szQh0ף$|dТ5uLisrϱ嚪_>` *1/(KV!H:Ⲧj`̶Qm)`P/d,s#ш΋c9w8oy5r6P)iJ?t:59 M!u%-x-9b2q? ;>&99!>:"G< :Jq+,{ZT)G!U@xv�U-wPUөaNB>㽽ƺ}Wuzٷy-QnjQKR?*L6:^`k, ;"g3,[3C<(QY^^2[%݊V]sUٙЄ=0`܁U-\kl]|Зݝ}]̯:=_s7ܼ~Mv}MGkQĞR*?_Sp1JM̀hBCGq*yZJ@jH1JE`@zp:<3 cȊ&$j+#?&je\[^�‘4x4s|Lzt;,/KOO9{W}8KSI ]t/kn [˟!!- @z-#,pQ i!RU*MtX, Xnh$1eV[@MN"<w!Q!] WƄ锳~&- ☓Q4@GIu0_#Dxu͠Xe2'jTI@X.R)}vHIg<f)lƪ,}Y,/*PmŠ loQ&P"I)e.^o#ksUw~?p j0Mt& =4䇰hu8ApTdFD!p#5+K Ob6mjW1g3'�B } CZ2 cj͸==%_1]`.iIM\}l) x&u4}ӷƐfܝ%j(xVM,*|"ICO>!y:a$y+EkŭAd0V9"0>@ރyoEt֬YD%c CFPSi6!uN@8*jU28vؑ9CveQ0ëW,]`C/6� --$ġsGG~Jg(*-vQj@/@j֭[a`8;N7>$?$.ݽ=:\t^DYQm%5Lƈ%xg }Ď9֙x_᷿Fq=H60^Ee'OH^ SgϐF"Rt4Z÷k v"^iM"Q)6HϪt1177-Yv`7KHC/^\(SfEeI7U9kh8xk Ф!Kվx4_5U^ҝ͘s } aS7^@ zuxkh<&[OP:{p9>Ilt\ $/S B`3lFZ1]y[)4uM]Ə)hj$B %j8%O>q@FkW8fgg^X)JёP-0U☨A?}J|tv^ӧ,'dAY+4bcu1vԵWjldNNww#'Z@C V5lvNNHONzAor\~NIE {yu GGD5DiJl2!Շe :yWV0:X]kضe v6ü{GA3TCFI8f5qQ3:'LAcsRbk_;:r|Nъ. &gg\|;~,$8E$a|^$Dޞ3;J)GGLG#t3srpV?ukcYS߿GHs[A!/w1IBn-YYRX0)]ύT1 Pg+.v}]Ы/sz۷䗗v:w"h™Z?@(嬀!vK)zt| [Jɢ(Y2 p Q0ǘ#lOI" !E+ +%(6Ž1@(E=3?;߿Cڕ9/.B-& ofcUKA叔JIa +Oֵh qsM&-h# DNyN1SzN܌*[2lKO@Sے(M]^c_@FkV +q7>RF~l&qS>*(&n ʹCn0ۨP#0b&'áaC IC:ȳ\yl?5^z==$TOJca*]�:ϙ]^2yd* cPy̲&MZWRy "U.@4Ro vpV3k[kQDo4b,,W+QNx4ZC‹o kOv-efX낭ۆhbi l&He.ػ;vobK"Ȼ]t*KcpTBaI^ "j`S!E6nn`$:Qeeֵ 5�.?D=' @6 mk~E �{t䲗ǪQDiR]Gcw.|5J̠[QV%[旗[ZѩfU W zUq03SlN ,[}KtLMNE2R[Kw6Tk+z=K{њdr6#s:RcϪI"P ӆ~Sx+ ꬣ6f ֗ydл@eyEnu00uV#A`S xw ZoI.:|׆ͿF[J<fCvXY].ݘr۲(![)"IQDI'-  C/Se-(y( "kI X>H0e݉ALnWg?'�&o4m(Ko-OhZaW+4]\JW:E_6Bȶ[)^m�04j��IDAT ˉpΖ]>տ`O&o@<zO5OKTuϣȭ j6TuSۂI#c?*Mܾb�k eSfٚ<ZlCeAGUeZঢֱJQ8T0qW dTt�w&8E 'lb�2B�e. O"\~b,ƞ qmI?G[p�:m/PeDNXguJQͤtM Jv 14pjwLK\vl]P(!VO�jDo<zۦkqev~(rJ�W\$\G>d`Z4f;ueGږ:+ G3u}a`V$Mu. #R<tsQDED"k(cdJCVL O$M &6Vimt*u h`T]mCPO+f2.)_%llZKjVoK/zzâIp] 44n!k(w+)֣ư+(fSGnסYr!ڷCp(cY~ᲇ]:_S#H(GJƠ̵WlZ66U<״d5&<oLcfDAQQll6|_rY1FS=;01~k(�Ѡ�PwYJ`ְ]R.!{ djÍDv7-mP氡4 уo[\@5dcg`=C68. ״fYxPʙEdZ�v٠4X Pn?"k׃]D1AtC%Ơi~7`�-ywPy PF`LS7ls�6n|Y.KM+*5$AzEm]C�ϴvjZ  \bV@}GG{{n ASoYچO԰uq5n9 Vw:�w�hSžatsp?y;@98@z@X6ͧA떢U #(T[;7_К—rTu.vuUXY)-z: 4EQ38:";9!;=%vɬ%*4 #_~÷[b&+!~W](zxI#hM6yB2 ,[´Zm^m | ~L䷷Lze26ځDI%?[-,9�GGe77,..(noIV+'�Jص ߨQ߰�77ww.i FIF#tPx_V4M`4>& hn� X8 Uy%3"L[,hZeus2tJ[TҚ}Em @k3 ڏDy3O{{Yuؒ5~Q ÁPl u\I\QaaˮFE1rwg3V cC7zmV1 QF6W=өLêwtT˗HѫyQo'yU Ădם@,o<A+VW4EFgϐ''Nv*Kł-lF\)KR!E#ն ڶz#alc^>-KbAquEy}}qS/L&doa>$罚6ͯ#UGQՓ_e(-rSU,z$ Bf[@pZ _ B~ p\q\fy}V̔% H�?iNBl$Ussd$]V x %Պz2!hoVij3;|$6Z\eYZinTmb2=H˪~ gx㚚3b4$8(B ᶼa%i*q/4&nsɏf7=FfܽzEvsCZkQ7LT| TŪ5^^]a�˛׸z{^.kG2XVy\~ ~+_ y|m/f3&1{X;8FUCÐoZRŠƀ UAٌ֘r2RowCO3/@| (ֻ[RW 9 }vީhwdT:q5ʊR.%r0pg/GGnhd8#Q&޼azz �屵55 Q ѻ�}wGdRy+6=9aFC("ךd{ )m..(OOɇ3lFO~/0Ae$ *†Rȃ[wOr6k-uX?pzT ")JeQP8q-L#=<_+dzq(%Ƹ)AI|?+3ZaQQ<N'`\| oP\]IQ[ C WO ꯈ>ܥ-im5?;jWC{F kBCK5)#|H1)J> Z1V X35ӦĶmo5^Lw=?>Cc~,^,X]_3yo7tSZ3JV9g\9mo2WWܽy۷,no($ I(RM[k-eCZp\879)jGȇ *QqLvrBX8e|cXm77뭢O\;vb6c~?}5(b=ڦrppg(.{yt>Rwbl2a_3}3pZZ@5|mFuxxEDá^3ymt8dPJA:;tiR}Ep`ta\\ՒNS7mk6cquE㏈K9bϛujUۨ^ #NN\w<*rzͫW,޾%. ո|MlvF!S @P9mA<<;#tʔcO׃z})́L1@4P&"&-s{%h9(6 zJ1ߍƕrH q'爓M(W+fLNOyC~~NiJ/I4e6Pk 4Q[k e#g$~J4ĩ8f)i ,XXc7Mc5MlJ^GT=#Z/!a9QѴjL{z`88p&O>qê1d)}{dx8]|mǟ;ib 9f:Om@)ESEǔ0puX,\_]8f3RDU5ZzOrK&+jU1{cDOKO?ES3{=њ}OEjMpF;o ON BS~<?'es, t~>|`57 ~;PD>0 hlݮ]*n]VB*xcW%ӻ>Պ5W=s0vOSJݯKIܝRYG]Ǯf>P{Gnɯ~ w%(IHcxv߇K7[(V&ڰ Y 7:jj;:lO_}w7?{;ٌA (ldB- l)"mlJ*(6www}/P t>{F<}JqzJw?>=E^_f1VM 1lSjݻ}=K䧟`ٳ{fGG\'w8o8ɏ?M iq-[PŶNrPOd=f P#⫯\Bd0TmqL:wLv1Q" "cQ'lj: ^{{]I]wx]䱳{ⷿevzeXGIQJp^qScm!X A4׳\\P|c IvԖx$t,Z!]b6=W+7C>*TmHSwT á >uY+| Ք%+_ 7_}_EIa:.N۪uapjCE!76Je Y)L`5O%!|d4Bx]?1# 7,ݵJ979x"=}/8|S,{ooX2 K~z[Zp]J<BGmW#W@u!YY(`'mYc#KG)ɦSK//p{{o(ZN&v ߥKեھ8<t0ё~Ue8_s7o77uw:v: x`eNڶQۊAd0\X={wGbY.1~J||PY])1!no[mQ"Q[Oӹufソ|{{}wR>sn^okf_f3As A~eSIR\~ћESAt\WQ۷N_]OtoO^=bPá[׭/۵ Uf9uW|+oߢf3/L= ѬoShk젇Y@t4o_XRie6=KII 1 $ T=ѦrZz-7_}us88V˲5d:BҲ2n-ںw[R:/,pv战)/IoHQsaaqyW_qs ]q~s2J5tv@4r h`GbJKEL&PE.>p]bT1uz{%ts_s׎wwG,ٗ'{IB/]M0kk9`SWRǖX(A# |[kF_^:<7Nᐴ#2&/.}{ɄnQp4e}>i*mPhR5Tۢ)a;fm}ul^T͒r-̑8=gψ?'y8؛=Nc/KWW>|[&LOOY}@yy&=ƟxX}%][߄ږ+tv `k~m6 <?`Er ޽C{}y{QzPjvaM3+ەvn_+oްf3R2cg㘁o2fwZۆ4`;dkȑ M87$Y'h/�-1v8D D[YSE~Σ-u9S槧޾\\N&tazL~]-m&RәVJX긖i^mB#+F"B{q)p9<Dxx!gak1G޾SN&Ds$YF0}>R RDZ(k]W6Qjownx!\8KXP`@O&;'O�=S6(`͌}qSrȯX\\0)~peIOJҔ4;) ڬ鎚4U ~Ј7INS~7jm9lHz% s)e0уsnwΦ"T68^ 5g<s7+)V+9(Sb\.r3)KNo*EW):JmǺFͯ1C1%mo `/<٦;F UEϚ;cBJJ))njF tR hI[oO<-W+eir|˒Tf1nnt=4#O3dE>s`<>!c|{!x0Em>֑=. [&{m*RRB>P`QN)b:uNEx,& z ,MQ`x6s{K2C&T MmGkc(#؆4PK6X-aaG!m$a˵!2Z"-EGUHK"R{J3U&1CeX$ӹ#y*%Q\k+GX[5,ɋ,8mX>!J@oc דe7mbE+EmfT弾 XZ >[qΔ1^ &S Ao_KjQsm 0hccdE2ȊB0DWX,*jAikmmTo[m6)x3jo j/&x/Ǯ*ORQi;wDzUWK oE2f,#/5c-h%,Dڎ6FDՍ+&@ AS멊 Ǧd M;6TjgTL߉Nh][h7BPVnmf95x<X5Ptv>gZle 1\ "MzPdYߏP�6Hɏ2Ċ-@RW{u7qCu^BCfDkާ2Zk s?qzBk 1fa](�( 6&@'Z(KY9�yQI8v&<m_r$ja"k_p=mik.mb^0 Ytd\2Y,ȼ +ȴ&hk x $Za>ɵ&+K(2@J<_Nc +x<v;\. XVb8֑m~d̖K/XKi LE,@i¥B8�/sW}܈| RV ~Ya_aC-KTL & c [;pfu;&rK܆`ZJJkE(ȵFCU?C ´4pQDR 3mU4PeE2@&\emm}d�m>&X? 'l#�5,ɼ>/fy΢, JF}L[lYiL~^QSۦ1`iqN #~k+w{͟9Ӣ`Yhk3 J AK` QC,wQl >#7G2vF<o2Ţ(X%˲©?*BPh1ƤYY2/ `bFTz(~^8<ve=֒k~z@fc7ڹO-D($"D"!Bn-36.+3ZSsMu!>k?ɺ aS낃 /O (9 !zzBԪ60. P}70"!JFQ^PhJZjkcJJ@ ؿm!7Z,2ىRZ;F����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/folder.png�������������������������������������������������������0000644�0002322�0002322�00000015436�12061426050�021117� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^앿JP(X\⠏ <nMh{(Hhq紇rNS B!B!$IzvQ<*C  MSs4MG>/&C/XS(]7( g16SwIfXxc-N.N~Tw^l[48-�>O +ty`X{kXT�u]/y 1  0O^^7UU9m۞χ 1 2-"]뇍3w>rN8[‰H(kׄUҤDKUh(9&'v|3jiݻ>f;c{fsssΞ={~uul6 l 4G,СomA)._:99YZ#L{lFɠ 7hyyٴm9G[5h 9N 2X”1~FcALV0PO_Pd}Qd}70n޼y޺uk=fFg]tL+VRv�a@⠗>\aaJ! <dlaznj, j�+Z U@U*D? dm\D*GZᕍݻw.3�NrϽ]h�b%�t}J*I<MȓA%u1"U` pDwf&�eWlm$�I(xk[  @wYFEej)/ m >6d1S.7^ KvK*� SԚA%?&܋k]:T&�*:ˤ.CU09k_֕V�`7އ10׮]𳈱T${yLrwՀ_�`=�[QOr"\Br7+aK_z3U7 @*ej $؃kN)@@s?9&T9<WJ%%u-�*/&'AHj*@b=);M tG%'l P]l ,cR=^ZH-I2.M4\||KHz݊?> @5O@ak  u18F{+;i$z~{onE%"*mշQȐgcJ2x`p)$"] sBT j\bm&d@|-S$x �a^Qp" ecq 1x PgdU7nX|oooOU8 �hs/>eО}2e}#X=%yˎu|'hf HB*`l'&mWR?OSK2d�үuñ~ '>4.ޗ'dw|KK~mȘԙMhQ{�1QS¹󋿏c@3l&kϼ@2<D5Do6;vo4 H�^uҺ*D3Pͅ~cKH*ז@m~5@@� {^^9lzfh"HD7x/߿UU`pC:V@_hEYev@ ~>X(یɍ9oaQڲa4�,R6 g7laKÔfH�VDQ5D+$#%]ehơOlq.o8x|G>wɕI *�@x |:8G?CO:'*Kj3A[Ft|2f"غڸ14x5_ۮ5h'{QGKuϏ>Nr � >N,XQ?6+cwu33;Fj˩J? eC1IR;u\kg75 � :Z;zzg4 ѯj n0̣,Lbw|�gvO'v*= 9-3L~.15`V"_QD&=>ܘٻ%;̺ vlX]`3-X`�acb-Yݷq3nKow$E}[qNߟ›.V@ =zpo#v ,Dwxe/$rm~zBʝ'�Q _iDL 3qg B8cPs~{3lcUp%RC&*ȐԐ,<|rb7~dlb\' LS$P �4n>şC&R�Hh<RH(yo/G|Wxr1 =nLLd�К�g;*V6=t]D?*̉͐- )/k @BPT|H ^ \Gzͪ!eaև 8FwÐjW  Z$i ˧Sa�!%0#W|h4n!BAdM xʤ&�R1@%`] 0Ӏ@P NZ AN:T(aILF8: F &Uug?~1}{!2HUD7 CLZ�� 7e3-CƘYeEf Pk5҅dUz'B=O<ȥG4=NN U Ԛ&T�8ȈnoԽ:' $@!U{3lBB(A EglBD0' -`9 �HҖHM1hQC-jɳ >_/:3ȶ&@YC~R3�@1i\SCf 1A�^%' %NppM;DOpbe 5`Fu 7`#UfnM4֘ 5�d3ؑLNkDD�TcP}_ωTմ �Ŭ�w&$0$JiKɹ)T{'P"Ȧlۄ| mWNt,4 `NK0H䅻t"� Xv$� A�,�'Os=v8 �̫ GT @ȵL@O|+)`DDb@8ёp2-M2x�<INWw^@Q3ym WōðǰLjaT$s`!91گ=~ 2L`&wAsx~�ՕQ@uԉ7g5s*]�p�fDp b&5crYS l3p1@$I[e|+-rnF%ed$Y7\a ?bXF Rap_ɶM~I jT!ca-h1f@ZR jJ12mԮ[kq9^aOS3[*@f WV'{/N:.8;*b q<xrzf{~ܔ{ \!\oAVi KV8|/aK7iSdN3W` ̘EneA;DDL@NY@4v} 6G|bGfp:ը2Ra`͆T@$�Ab!m�n!ĸ7!R'&vVQy��P#.#MFO0p=^8@ $Rnhj 0mVwJ$w26@.!3GR#(W�m:PUCJ u4lH@ &$om''J50!(l' %4bL4>-G(]sߚy7�g|{ӽM ŗ`�F!CX'Pf H1^ '_Q*xUPMSʭ�pi䖣,I $\$ GN?@f$V'eg-u�۰D-@LlA<ZF 4T3d!Cɓg7^I%i!`5AB ! ͋9ɗfid= x~M/QLCA=RƧW �~`ِgp0$�  Y&K{ T/K}h2kjș7NQ @; D;Ka{!0�RCn53**IT̷xiWX:#L̺ȵo6 Dz%ˢ+6osR2YP~oBqBei~Jy]`zx*ɚO�AqЬ(bhOo?_ k&PTpb=&)v�fUhdbiS^_CR7/T&sMM2, Z?<GQ"v!FN0n~=z\~H4~-HE =�b$"&A�EdD 5A*U̐0i3db"_zDHI&)�dܟDLG; Y֮'73cBf^ '0ZFo}#O\:VƨLx%fЪP6tHz68[TLoIlXA*(Xe8 o|�G@:H$;XC�ƚj{!۫Z0H"2- D�RXF @GDJ#(!%)TU)'PM8o'j?lIg@P@jHf6PhR�Ps܏[Dl/Y. @5>@Jʾ la4 f4,:o\iBV15 t'9&�11j+$J n?oX y3-Hjd`"A�1y:8 tJ I>Q΢-\f, #ၜhd5:D + Ņ# A)a,t! g@MR8 r{z$WfaIXg`@ȵ}/vi?�yHHuEl�1 f.n&VެI@HV-@VF@'0bm>`uVs/TKGDu@ж?׆f\4@N$wIf]_B@Ș *!9Ԡ$P 8Dwrou9$v>>d$!5}|'xwC ɶ0GR?2'½-ޞ|c,\; I8eN렺{,k @@ƃ?"iS(8BWJ5J<YzU&2g ܧy�s:6\n-7lBfzh?D�a �u)`jMosesLNΑ{X]nT3sM:||c;Ժ0?d6#U,&=�Ǡ>{Sky:vD,C]G ?�lW ?V�0" ݻ*BS?@b>:� :8Ǭ׾N&+gy a WPy=g{rlE�BF,*�sK1FA1 Gyߐ@M7a}[ hB vW+DaXC]QR6BQSu,"mFS5Ӥ91<fELh'm<�!~K,+NtWH@n 5yGk?0 ("4ӧfEH#3!QRp7ˊye$&4R?=m8%/yL [H.3#gg[X.ʜs!iwnӰ{z>}3`͍LJK-"{0##RQF0PB)65]%*aPL/o0^^\~�B\b|; w0 RR\^dE8C,07~90WNj3{�yVPBS93ٽQN 0_ΟCtzo'o᯾xUO�!चC|n9ӴUu0smԄ뢆T4L+o/?M_eQƫ7ljOWBw/B)T}xSgD6\� iUg_c./vL +4Cڂ4|W= .>G" {/N<1Y?!!5"uBaxt?i@$`&�V cHDs@!,˿ 0 EanMR<RF΁Խݻ4 :!R7׃o[۪=a8� (vtf~/}odq4GilO*QCltyM'KwUyCB\aүMʾ�i�Y Иb� @љVf񎿁Os,6\Ol;�&����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/pause.png��������������������������������������������������������0000644�0002322�0002322�00000010733�12061426050�020754� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^1 �!@]dWm<!��������������N;Fϕ^i+qhy�gّ82HJ ,"%e"" _ ꯱?eOޫa�0vO{5M&m)p GdN=,S9ȩxGFVu1�].+AT*zC\jcLmYgV�ZkUZ99<5}ֺZ,3,l ,0l$R5w�,z$@Pw�}P5C?& ?2ƌ&hZk(7x]ݽ݃lC!x�V[ɰ? ,lF}`fWU]Ջbqp} �"e`/\}d2a {9cS~Ѧ0Ɛd?{G{ �՗._;o״CcYCgX5AT-g/_ϝ_FvElO?DJv3�lQ=d�"2Y\pk<{?0\D8N7մ�0jQ?w`!x5@Πʲٞld| ֋͆1߷^|ZKzws4׸ImcGf5�F R{{ M t8X2�|e rohZVK/Be){>3+5i^.l_P7?P}oQ@02#?)՝;ooV:e�ka>-!!wS=5BWj6er&ĵ֪2H<x �S0@Mssލn}tl6C ^FNtcz{ww1`sd(h�P=X^OM7a. IPTq!\�ERpx-*n ?oMدkbdNN]">4ֶ 5&SW`$S ~mz% 8?XF1ZuAn�4?$Oq1~Bh4Ve;Tp�kSWB{ʲ$m!쿷͋^_ CeeA�O|M3Sa昡fr:=Ʉ\Orҥ NS d|i5@HL*1=@HAX 5-"a9\n)si<Xe�o3A-봃H]^Xc"` X[DVupu-pp܏o bZaDjX݁:+6\m9N%6sH<OP`AF"ȓ)Y6G&a !a*Z *0Ý)E<P، 0�c &@�Y ?iCAvpm9Qgyį;ZP&&{ݥnD<Pff�GRX*,i/-U2MeL@|�iͩ YH|DU5S{YH.@k SGq-n<S%>-iqjkۚ�` Mgtn,c8}vА̮Tݚ7'o)k pIKk,[v 6g@`zJ |驃z|k|8 Թ 3d/jy\�x0 |OMc4'tH0 X'N^|bks7JWdLL8[[cnm˓<A4u^Ɍ�I筷nM'?_J 6Xꤡ%ӣ{xz}6<̐ZG{"u;?�GgUGiG<;;"-+m۟lp�fX ZR,d7s ҝɁr.u$R@�T:4�=zl)-$p0A\Yk׮QDSn ]+o:sX$xb!-g�Hp@uL/1i!|6[ D1s闦,� d`5 SQxNmECPv{#hÎ_8GUBN`1EB2 MǬ~"3$wu8Ӻ`<@M F5|C[@r&bIG:-d2q߀.aǐ0<"= a�#fZpH*2 1�VH$r- ~&@8shn KU1Q H;O7;X2a(՚�k nxFDV]Cոji׏ O�i1 OԎث@&3;NWhJ6 < |/AgccƦB4Fst<1tL%PZ@R~}Œʍ2@x%&� 9P!jTdwj o,%`=Ք 1'ڈal8DR�i7s',9_,5a x0|)i; :I D#Ht?�AV5'5�+3; �Ujh<L\~jb�9̈l= 9@i!Kf}iM�#݊i_Dj ғ~8oʓ/QǬG>Sx!/2�X'&�rő#(zo."mDTHI�<s[3@4@�%6GiZ$\Ϩ0HM�{,lZH|MprPM B�T Þ'ڝ@F@qgm *vkKsm90b\8}yaS�e㑔ȩIWI kn%p1cm$ƆMT9e'<j� Ur* ZIf0Bm#cqfG`ɵΏ˞;v#1$J]J|}�(m+>$2@E`.`L@@S] RcL@Ar'RmG5|EA!8fLR֑ W_l7Ndc=qtr+Am# HMݵ$k[ݍa'} ['&'d%,m8 �Ks,�dDy.ۥܝH`ɳfUU> N w}^l'!Oag(%D-dQJ)C47^-lQ5LzRH&I k&K=? Ċ9=W>")/ B-$�f+eȵQ_3h\~C?%,f ȈK}^VN%X6zI&�g_7<X�&44eT`5Jzj� HoD|3p,dTcxGdX@$DťƉ뵁 [k�c #~GƀYpPnttwՊ;CU'tHVruX!W6A y&hM(@zB<l�Tz ך�?WPsX.0v`]Ic!q[ dCo:"r/WbQ[$N$T&�+]A:ĨZZ'>˙ eX0 pDb:`&pOS>>$jל& Leڸ_"/ȟ+X؂s3>@�\uV[-'y/%ߎūԘΞͿϗz`1,>715/ ^ di,ѹCkZbitϕ1w4#<հp^bl6%] _7ſ\$JgөӟGҚKa b^|ߏ0 vZ 2L;"ޫ]eꇳ<ORŤ:-n.%v;3gO9ԠN{ PV(tOAwHJ)ޕ8˯JXݵُQg�@)5էÇ>0 =EXs�'ZY.^7}Rn$E,}²,ӭpDp}evv>/P!#W&icL(d+?^OoJ8X!g;vʉku>0hc;�Pb5_X/|}补Gc5bv?y\>#snM�9Xa(468s? hK;wl��,ݩU!SVU&S;H㧟̼���������������}fAQ����IENDB`�������������������������������������anyremote-6.7.1/cfg-data/Icons/128/favorites.png����������������������������������������������������0000644�0002322�0002322�00000033601�12061426050�021640� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���sRGB����bKGD������ pHYs�� �� ��� �IDATxieU[ w|{9YUYjT%Bbihc74p&!v4n:h[m;` IH* yyΗ/|3aW*Ue*3;yw|_p7,?9ܧ8R|*(u8k 6ޣs]?be*qH=irVg' �6gDOOeK-K)(O|;ʜa*|nyG(7 qk9`sցSz _ѧvsxJ|S�@H)qM8cX?$m\fOE4B](A KsW>?o&�ܕ>jIxb@C8>2 D6|3epCa XMKDEZ00){Y`6{�%SӂɧZhvҿ rrGEg/m ~&%K<U Ϯm:>0bmoI柽='N_2F<2n1?*fDfvV,@sSmMf44ピ<-!3~?ɇ0ajFۚ<Flw� ? DZJkI"qپ ${xfȎXR1T1g *=�i?oGpY0mֈvcHSc>:9*<#]_UOI 业#jɑɃDRTj$1Uyh$�px##n 2 fn~`XE؅=ٵf Yed{xQaH fќb̶I>`'!ﻟuruiNROU>&>^ "4$b.i!c!0R%R#>с'pi)!6r{{&vS`4jjv>aHj@c$57U0₩5GxNgqM$8L 2Hxb8� uHC&/5eP*5nVDx�n7?])(Oq 3 f. Qh 2!=I|bP`rq<a;>Kq~`)s݀J}hcHtgg V6}(M 200w1tw�_cyTǑt_D4*!rK@2MGF]ՀQ35462yԥIL1{lIy\1L&=Ja\AVB|{JH�/c)+Kv%OiWI0wzP`^E%d#�zt!E3D;vLAeԧѹۀ�nQԭC[\qHv"�$0A9 L#GvŒb2҉)e?0TE(_g}DqTiM͞C=9 m~^E,p a/$nf[%>?x'Vɟ'Q`qԱኚ5GvL?@Lm"p:%T<D\ f+<�揍DS|&.:P=&EYC9@ ] Z"" SCfK43)4,A3j)GLL 1^+1*mu=H`mOI0qCIv ק6pp8b: <>nozj-x Z!ڵh!=Y p3eDv>.0XNnB]#vTg`ŗ߿n)Sb$w3=~_'`~̫3+>$|RNri R3){{&fOocc\*xBK5T15V3i @փ9(8܆"!R�tI4>P*%PМNym<|x{�ec9(% DMb|3޻Ñ8 b-9hn �ף> nV n-O8&<%iF`D4<M D?ۿIp/z xm+pg(OҨ[#&5f{ ؂i'}Rp}e$oI ܆JxJ` 0i*#Q\܀F̶agޑmx3bi!1cs?eҨt_sS'b- �`yD.hTƉw?Ja)dLD<ƻOk4 exJ *4m+~:0ӏ#q;b'#�3Fy@DUv=D\>wƝޑXN%c�c"ȉ%ʷhO2 ю"{K [h:g{CL�;&Hnۡ:>Ɓlc?YHY_Yx+m)߳д!$ЏNwu?;c�4oNHYA% ,*5,OXGl#OEk1 ~s.sA63X r!h'@$q*ɓ~/i̲mrUz16I:`Z[{vY@bn@[qGh�h/q%H GA8+SqYqJAEjs.PEsqXm 5>L}"0q9.>�zm0t || ULedߣW%jOLF$mKiTjmL٦wujW~R+:.{ZH|oueMNlwJ3Dz}gI2mZB }v𑮈w*�g=�D)cd44Q88(PЍcBI$(KbpDX$ Ju0 ?fAtiO?7$rTDg=$MD ` 4.WFKETlURbq*uԬ9+5qf<DB-NK7вl-E2h߁~YX ׭<ˤ$X F=9b, 9}+~ p4p( Z d�jӂ W0:ηj><YP@cLA{?f0?WB!8$bod\�Yн &=(=Z,% ^J "801RS(%j)+je+jyE \M{@&'+޳?:sV'4Ś[*9(:l(sGd=̢}bR'cYdNh@ee TPRGlt%R%"MQ\I9bՑH<32q H fl~> 1OG>oGG8| N1`P'MC=Mp9UE5S�EdD &b#.5b3CZ55㢱 RNOo2.cXSV�i;h ֜2�\):]v`E&P1t %M2* ({ˆ'"/E&L$F5)&X!$$$A`2Mbv>;?]D@&2P` edn AH>$5NR./d!/pY9lO=phвDm%(,}"| ;/8BE v0ZLҲ^Ĵ$ڪU8Z+c1Wk)1 %L� !JIh$ 5bR@:鸯I'd 1HjH!q i k{ :q֑tz1Aס~Jo3`Fփ#x" ܷ?Azh-蠇؁r4keta딝5l*n \^yEFm.+JTKH@ !ä4M)%êRZ $B>~�5.@%4?8Xc8 Ԍ#I R*UH'V dq!!BrXS ~c|Pm9[)(e ;KcJ*x^� +x/<�Ȗq` []u��+.e :Aؾv.^N@".VqB Z߱a }@-9xZ:jf!#AI$O``Ƽ+!uT'gdR0ULx1_�716ueU `nt}t!3m{ệQF#M[%V8h+\ͅ-P[ƕց@вy w6z%.qY" Y -+=:g:k% $DWhXOQ&Uy.UZP"QG&VCT FzX/B2'-نQT CGާ'@O ��ֻ|@FH/wu%p(CUR h :�!IJE[hj60ky%h_Fhv6Oy"zbAlW I2 5JƱg0\ǃO#qV\awCR"Gh{OP=0HFB/Q' g-tnt8k|?T idDB �MmCX�D%hhy A"՘`TA3pۍeLBq8�-2P)[:W3N~yn^&c_r?eIQ;%"k.Z_Q& n ANRz$4<uar#v1 &_ss9V`#2iܼ2�#$YLy5`C�T(�HGT֔ʈZar4 NvB9Vf9xr "X|8gJ N+G�>:B.,V u$:|0ĕ#RF̂aF:w:Ɏ}l=fv=C@b/h2(+MXH|<γmY-!µ 3^2Pn _'|CL:eaR U.yv~ߊPt zc 67 ć#ҿ:FdrC-ݗm9`}^ПT<d\l ((UJKz녔ٳ\Xs/˼|y9*7Sc| 2P$|41C4MS>2e@�<K$I@y3)#rz7 Է`oR kt 1F>2KRYԀ2ɑh&Uŋ  ;g)82-iW;"i)ZIJaMLMpa u_Q}6H*9x9+ZLU%ߛ 4i7_6�AF@*jA&(n) h׵-G$(c._ yJ '}l/~?og\ X&|9SRR ̷/̟C\ߊq$ _A~gn:lf 4uH-+f{&=6 MAAdB?#?e }w؄r/e''k=k? Bh?@ezHx$iH P|E]c"2=}Ox݂8OwmM..$JN435H{3pmdr/\A,b )p]2G[%@ /vA gk OLTQ3pK=ܗ?W>E~;x Xׅhҍ}7u O8ݳ ]rtK>~Xv)4 Nx./ /=̹Vzz߿^5�h?_N>̫x oӨD<LfKm- !T|S�:0(r?0H $r-+Zi\]oLkEN7$_鏐'$D#ԡci{Xؿnáo>(W=esx A-rn^凰4G>EPǸ&0cP[P^ygr:K\ hC_ϭWxk\R mFC�E> -2~+[&;j1OG&MqK}}׬*#{EoA*=вv SrKߢO||神A%?7ޠW*@/h=7J&ڏ.:_9^\p%<wnoYps_He3)z&n"ūE$bF8Tv�E($H ;q`|1t/OKRjO^ub A}Z|g8z|ȃw25o_w#{eM>d<%V eQŨTB)bV""Ȉ]&`(0}ÉWU ~Ab4Tqep)s^o8k~jg~/3$c#q~VڝF6U>X]8 QlX]YC*cHu Eny!$T7 $�'C/AHX c2Kh/X|NAҀp+^毿酌P%m9?xx7dX!}54e?qY򄸚]"郈lEVeHr5"c#ԆT5Gl_~)U`|+~<G�{n3O;jxCO'Rd-f9EH*Q^]\i!vbw"i(/C9]GܡίŅdhYm < oSyڗ|$RMK|qK+|/ſ]|ײl~+p=ԯCz._?OG ?LxE8Drc<&h{[~F&Tܩܒ@?(RQ{*Jz ]V<Q[AmՒ󧺼^f�-羾e_Wyĵ7+tf̋0aRG®ѾT2C^:А^lg)S$>/9T-v%g_Y{Q."<u%O/{/bTփԯ�%ܵ[ <Ꮯ6>xy"klgqi)uqitDUZW\ ӝQ?-M[-%U XKT}#gs:o(u<eq^?mNJ;xorn� LJ�'o>‰ %S:qRkt-/f@_ެXn"V<ԋ߈ Ub|1g+%:X&\9,O^๓ 7]_»yП& p'i*`=>$+TJ+hm$��IDAT;1b:Q4l~m-X|x׮E"~A/ Z(vs/tO!QIA6 qϸ�sf<etS7t. Yg=V su34dDsQ=7FAI90/K5Yw,?kYһIp1v…./agtc!or~_ �>}Z_9%˴= &c\+k.My4C1d ED6 F ̟nfm+vYiP]һJ$ʄAOta_]"/d\l浬^[qk-GvбTя6<e,erP}6Wv WjnS̯ v2=SJO 4ơyT].rf!c-BG7Wp�`\4+/^Gfl}N-z!%t�s` -eX?~TqaRs,W+x m7}-Pŧxvxqྏ˗i%Eu(V}g'bEs֠5T!Oiʉ/}i>{ۺ.�vXxpweey_~҆fiB۹% ԿWCê(?_g9$?౷ k2j`a'jՇ4n5v  .,|I QRg,p5 i暴lor 0rLvT\xC$0uAR{\d( c n"![/`w'obM]Ǯ }AQ^auKŃWU6}'dG2.0}٭o�*.vr8,0zow�Up:4[ DUJA5t*aPu̖`�ݚct -K!xs}1_# M\i^an&hb藃{]� WVb]^hn1W&>\e.[m;%jގ^�å~[4DԃZJ0Sy〕w�{պvmP-Wh^"1u߂F"_d}=a-%<jJtZ$a*L;1";s B>ښvZJЃ]؛H{:Qm]Xz� `-Q DHqRZ(-6sX!oW\d> &ʵm,<e5 :=n {-*i|ӡa+�1e Å˕aOb>]뽮Fز`TB(4lkɇL\Ҳoj0PUcm2hhuq-9IJ0l+;ٚQI}/L7Ȧ?#/+'�$0P {h@V s1GwZ-\ۢ9*U�[kucy+UlQUڽUF#�*hf27n9� mwԵpWxߤ�Dۯ1)z[?l&:X� gJgO#_O)=!dp^$=uVݕL`ةӵ.n}e4PL#tה]Gm%8g\ajEvvFVl7-L$�Β ) >w�)[[?}oxM'-7kBxLz>=F M\cIⳝE6�`2b[b@j;�+v}R-u&0+ۿ՛Fب-Þ&d#e[:`5LpߛzW}a)[ q%ba B([]Tp1֙٢IV Ğ+f[@y %b;lpױi;-vPM53DuvDf+}KJs[EiBn-~�`DXC>7YbUJp*׉o$iµ[GzIk(БuCo`s([-uPmA:/Cy=bYx! կOjB#+� o0,L*.5h_sd pmwwwjFa7 EzkYA A(BM}ە4g>߂h/59:lnv�ISHX.(0&Z)tyLkhw–B bBPZnz|q[$>\Wz:X2X﫷5hZjPDM@F3#pjy4'JRH*^Q0Jnz>WdwHi-̴fHmŅ (xQtjTGF `*]:]^&ڵ!>KmC ڤoj#mނ'ڑl`\Gf1[:m�psYI\k. d,#ÍF6 yS `Z6|l eo!5{б,"/B 5Z@zKeM#Q3%aBEl,o*I�x> wV](M>'b+XJ/#Ҧ#^~ͥ |z-exoA=ܡ /u8}Ihp R{BmМxQݢqI @Cه$3fޒҀ[ݔ]njŭ-YdD Ҡ҅mo Fpm^*ug]fauvڈ }y7>;ωT߿՘˵0+ ń.Cz Ͱ`Čm "Q{G8KRf^w_$zg`[mg]R+ha|b( y52wzk# o)Vr.nGqU/ti~=ej{C۫|`6 +):^_Y=>6E-'W$BjC�fK;�~l,ou6[ru -| ؐչE5zbm&.v;0"y{]reu`|_˟ĉc\o-Z�?] ~b ?z')H؃20S yJ D64nz͞LxXU_2ͭѩ(^۶k\0Kna 7-xAKySwmnATWNy^]ҹz=z#D \>Ѧm fSUb>4zBSaЇ~u7a|kHn4!TI!M7Ifd: <>=li! &7:}lk΁"Qu ȼn|N~Ef=zȠ eKBV*^pU^<yNgA$U!;4{.[~>~k?0ONn&AIhRs9|;CelTF$?q~F,UD�2TM�N� Nan2i]L�6�Z)3t߇ܗU+c#,g,\r^zq,n}k+>< ot ݫ^:>#呙oxX" %@M[6F"ᑇ Kl4"v<dǥrAf7'^Qz..ՅCnm4jZp4H{xֺ-sH y`C_*tJw8 1^<"#{+萁:}} i||Kp?=u+T=P].Z{cGE(vqE 7#+ =`{,\\.n>4ls'|0yi'[2rqzd(©@~ǹ~|S:cfPogֵByr&#S + ]1T&-6� {BN907en9߈X�;_Z 8GӌkB޹ ye-oRY?r3 0G1V]*W+5?=է v8IC!5$Yh $U޾QhkIjLxt-pkw?V.]\2ΪBe v^xğKkrlGW92gڬwG|&:4}etbNoOyfX1OW*%>LrV݅2LLa&L-zPe(1LNL5#ґH $4I$N[ދX $@Y̳ yor'V=$)%V>yOcI]c8a;а% ͠вF V=s"'"fj#@ �YD‘2!1+wx^'ߠD{;K}isg:,k;naEW<=T̷NF<5dl Ha^ U߀n'j9`[l$$&fz১U`Eyqkсַ3^l1r.\絯,JΕR0w9ƥ~?1]aYj֒R <DPy!J cL%hRw"Cd9ɡ+fcN#/+=NK/pBS-Wpow ',.|^ؙߖ\w4"k>LfbGlBì/a\G:3wK+=μ/< ]}P&?y<siJlxP`34mI$J=hZ sRfG7̳_Rq.I @#b%cX㍓|yWW6zwF ZMΒǖ %_* zJL ]S9Sa vp奛d昀STpN=Pmo/厵:yfW_^|o|B3Ɲ ϭoN6B$eV($+]:S�5o%:S*'^]k;d xwsJ;׶0|pԸჩ0Oeǀ ={^I%;�-UvXn;}ǹx9'8lf5[7{C.=$~ڍ`81<)Ӟ2U=ȹ-\g9-,^Pw�/<ÅKHxt[‡k Lw,jo)C88\7u�Y] |>\\葿?疸y$ Fuջ~G ?0͕?nZIĀ_qrX%|ӾX8AkL~aKD_BoT e!l8znϱ^n}yh ނw ZPBmٷd\XF?m v^MVy�|Trܪ(K,GT׿Wn޸7{]➽8}4����IENDB`�������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/vol_up.png�������������������������������������������������������0000644�0002322�0002322�00000040464�12061426050�021147� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��@IDATx^ֿSAM" b/ "6H. rk,lU|| AEm,̟9eR4 $?)a9s9s9s96LQ$eɟz=�!'U`8?ɏ>?_6C?*uU]Y5>/{Oh4 XQ6M ldR% Z"(l " 넺gX]&/'idٹ7& .KkޏnM.ڶ]. [g#dRD` ~�߀#+Ƒ~欉`ZW�y/?e+v5* Z@C*"OG|-iVh޾SN߽)VotwI7-;ַp{ƞV%@H" J,!1F @ %8IYE .RI)0XPT0;81:Q7R$z~o=V~u>{M.izyXXl9gZ3m 4qR ~ WOL!(>8NFޛ$=V.ȮXkRk_P+3p;9z^<Z y?e EQ܈$oF^7LvDfˈ0C+/G?{USoЧYꑴ~}7XFlXkrA9T<SKNt|,gL,obÈy fj[fQ8@dYh4nr|l '"W1/1_Dq4NlÀ=M\Y @x*8 m}F ?v/~ g~gfKZ{l=h?sp (k~mjjmq4I.7fwlmmFt-0$1|ȟL23d8d"zGYD<9H.r.-"ui=wT䜉qɥ7A?)m|{@y D4lb˧ARп5e= LwpPݺ��ӷM; dĦ!3MEQ(h$Il͖vh<2 0 p4z�AtqrG)�``X7½x_ՙ4n2=ulgL7%$i-VGq\Lb<'8iIĝNuٳgӳfccHL{#kZꤌ``��xW7J M7n L^:WHd\8i:,ˁ}KJyHx\)~'> $Wٗw^C|gZbĢEG }u6NRHuov�"d{kLyD%Jn3gΘ �ngd" ~g{@oѦȧz90*nP!8@@$Rw9ּ@_Yq;10ɓW{iGߟ_p8-'z߷<}7N?Դ07�vnw{GΞ=DH}rrBu" p1@77o2{@~ pHT̹RyO�lmv T !Yly 9uXE@z}r=�s?ۏS(9#fd91]o/|1)j$EZg<p9w 7.`s<VU"(;�bEjo8RUs套sϽ' �HWIG&{Dm|5w]6/MV"3]2mYDJ^W2dQY:@kmdG$/ rq#qrbK Y*tK?)/: 3@2-du?�5{0ԧ(gAGGDܸy\~\qܺuR*DDw!`EV2�*RWwG/ Q8H% % _dTR:fue27i~jZ1E{�I~O@FI*R}/?wAV"Dמ|\8|w}yTCz~_玏!{f#V_N&�fjB ͋ }s̶x9BTeFcZk8kg5t}RZg$vdE+7Ϫ<f~HlZ!n]Cky;3W,y>7$Ͷs"8fBN1{pp`S拏?a>RD[z:㯛g{<̳%I3X-wFT^l̳ŒvLhqQ)eAhC;4KNHR@awxa^n?.j~rlũCwawza#[~3qP 0M Lb:JDd"Ŋ[lȝN>^1\y% W̵kM ;rI�1!K8}ז`sJZhؑb=zϹ "sbw#1ΤJJb&1Ȭ&vZ!Hlןغe hDRv XIɹ&.rU˗. Q!()P_W=z18] C[F>~@N 0d.&]Y[jBԛp1=]}omWqM#Oh V #,�) H|e{?5ԧV;p3Ō30n@6Z%8�X(ށlr@iQnE�H|~H�4�ُ.!]A|*P<<<TCL+GW$'J*PDt=c'{mJ)eLN^ ]C|Hgz!6rhhRBDms?K/x"!c  \HmE^OļHҫ@h@HyQ@fiZk4;ntUp"aP" ="?zDjb.S QU;dd>�d1P(b ȿ .YH$" }g+9GȅhI \u֑h[qn#9ݸ+VbDd,Y `dmyb"o`@\xAPQi߇ H͋T=mZh؀J ,!?@D$�N{T2l/�i/0XDsa<rA�}1LmMё A�W.m}p =wߟ#Ȗ".ܣ7ˆ{l"/^v|Z~6Dz:~izrI V/SaSQqb5M=zRw y.!YO`Y,ߗ&$1!)Ub5S%R?ƿ;rfz>% /�Q_[ Ɠ |t򈢈QLq֒,K+HDqipۋ_w}&qr{v/buwww7Ξ9`&RkO9NMw߸߻� Ӗ3Ml~"� >L:ݮ<(rReB!+/kJe {F%I^j\`8HA(0^dRq/lyî_;>6h䎖o/UΙlS7�-rTg}Q (;mU<"egq ./]@llt՚w⋜.[Ik02 !pӄ>VB-4[j3cEIA*䳕%/;J�#bOEH l[xKpZ h9-ET†=]b;3=3)SVJ?x˓�G~jɃF7gvos3aFfH$<Z' �x0L�@ ^`5ƿ}44ÇD *,@^Ը~oUY3f5VeD8žs4 G=Wλen7:DdUեTn9$zNvhzv;6a֪CԾR#lnۀ]w]:_琎�p�c~Oy>7f>O yA+q)Y@A̰^5/ۣs=ңi+Ce&Pyt̒Ikz+$(%$y<D`WNL pZHi GsXs br� �P^'÷|3X'F?;wc?BHun=l;7Aəu26D h#=:*yH�DL(P u({҅Hڐ9G9U/""W_�x#w�u)EϨ'u dދ@]duGgFwnK$rABJEB%O?]x<!,1|L=Hىy8y䍁7|"'O?: 86xi'HLT2fT%Z}4t"z5TA@B F~h(4h$3c?EP {]_~iJvt'.z>ȳ1YceGKĹMcH�C2U 7S_ ?;w__ /E@>`h\9}rr D-D! Kׅ@$x˾PK҈)]7Ӓ,k>FDyۧaۀ|5 D ˶E#p\)7d#4RI$T^KDoDD_>s| ?'b\n"~yG~mR3t*K?Q<PY<}5H$Lep7''){V>W_$�ZIr M:wUQ :%+P`X "y77Bbk@lP}>E E:G ѫ*/`= z ��9Ƹ݂ ιqM2npF s*@�ë:qiv6 l#?18 8N ciA fwԮ37+?&*"9O@@\<һ= W(.K0$*Z ,)8.A0d%`utq 2D$ΔE|{̧+seC{| d0ai8�Dun+*8qZFi~v9{,@hq^Qzg@Qbk8|l;a8 B b*yI? w}O N|<WqM=A[^*) Uz<zH/B/W+=PKz5 B,ʭ,lo~8 Бrhj?ȸڱ-~\U ʸ''NT܉/d6ipoh#TKԽ߁*7^i(\!`@1MjW"z1x w1~Kz #|,R"#8Sq" !&N}l"ݱJ5c@Qu2EZ"Z+3َw/N@}@^#/;i bj$5 が gʳ^Ctlbl%5Źؙ5 "M1r`_ܹ"|j{$*ەUzks<t)89S__s||VDR+EsGkJPBxEVC�L .ʹqyDŤ[xߵl'~/w~s޿G~`� )"<Tڽ%h K7:D*ELNϗ,(򝷖o%'1(-4}XO9M}pm˲kh*kHuA;Z"XVaz;u "WTD]膈ݛ{'�1D;u]aNf9G{ӽ0w $vXJ~_XA6?3o O*FMs[t- BVSgYAn"bةD:#klJ,*5 ơR(*JKUR`t\�x/1�bxΏZ10ٳYt�тd>\%FNCj=~A>{e#Tc:KVk_8W:mdGDχYPϴ']4h@(uZ4(aN;uEN#Ubpa΃[�Aj,i8*8W(!9}O\=DlE?Pj1Ol<= vRK|7:ϪםRY3Iɞb$*:^7עaJbeF'[flwFDID$­PKPȮ'V|T˷ߧk)$�YÚ*;q{Tbܠ `xr2vNvNt>8_5Ud00Zا)f4[L]5G5Yמ�s>u8?}Ioq~R AU4CʜXE~lݍ%Y!⥓[ѿd4Ѫc@m�5T9G @Y|UU !w9Fk UMgAS-弯q`ChFU9"Xg)ˬ#$J�Nܶq2/H(/ ҽ8e|dʥ?Yx:U8E�a;haRA76+9GJrl_+uLr?d/J EtnBg}1T1 7 cDl�תe"X6.e7vj-kqɨ=jI$FXrGp"4)3B ^l*e+g�=#<Xhx WYĉ8n%�{GA*�}8d>_.RU벯O5հly$JEus L`Y7܃Z-o#X,ɺ)G**NIE@'+ZQpS_>hl�V�m"wBw4ȅEFRE zA$׵s1*|6fKPzCD@i<+ O/~B>AuբA{aY9;�o@/EVeVЦĺd*^ܤk)Pc.ȫC6-.ۂm7n KusALDsrd3p؁Wh d *J{h軓% q52"6 PT `)@ȭ#�yA<98z.5sڼJAw@8N̐*ViTa9Us/.X$jD"6j�y+|GDpI0¹x$ LX_;bDpvń20|[핈 \?UʕBp3hp521R$u'hBȄ#rSd8|xB6`P2#K}1h }M e|DĶHZI TkwȳBE=)ߡ`k+i**5\=:6R?T*2sKJVԋg,.Wɺ]sQ+bYSwVBwE;~]ߋO!UW�^~5 ES|s@<[a1ܥ!\/ZY1q^S: f* Abx *PK[ȕ`d0hDM=El"ǃ[NGun@8u'һD�F|ɱztׇҰ.LF)/_Q;|GY׵ar+WuWCO0u d<y)S1HF% Ω� {~*e;J\PخtXgڻ`(>]#F5vP%Xk>"@>ZEZk9)qEHQ P5]YCwXǡznרּf}Ւ -.~J$|Д^^:= ޅvu v rP0cf':9yu}UTW5bB)Z" ׃1>2\�b?굅\D>sX}?!E}&9bL?JbuHb [6+[HDs2.Uf+$(-"a*24N'u&I~>9 REwLi=C/#y^' $>F04sPu"h/I3ƘTRh='j)i&3p�6h?]j|$0X9n\POdBWu>1dͼyQƛ%BPe EyT'�^J *i1H>TW HzWz[`.${R':^OH�cjpN?x$%L{qS*`݊6�@o T[xd(D6 `đ;F!X!>f}Of`x֕*@@9Mjd&h*W"Az*%,V%@�cVϜG"qM6 Yt_uH|XQ/ l�&F@ƨ4 N phJM]BrX -U 3+U5C JEUU9]! U֣g)H|Ѹ Qn@ !p㲬hN8/_xJ_G_"P1p~ Č1qD'EV\  'ozK9Z/`: Nher͈'4\༊stV"/Aj{AsX ,U ϨQHي#hMfъJBs_$Vؗ V8q�F=8"dyq٘4L(TOV|xshLLǯ-J5XP(TU WH4ݎ`Ob _S*ㅸ(B/DWi7V^鼺!ԟw|1:jl�2uk ^b$D<D�,�]\@Cp�Dzm%zn^ W=�1Vڋl}s;OҢV TQ|PRԧS}ȷD~G0j"8qsG./!o-}]N09E:'+@EI4C�v:> ab3 `5CԌ­"ˆCY�JVzuVmD>kf+ +Eyׯ~g/ 4@I8s`(&"(/.,HZFsW=bY$WX@!J�b�Gʶk9+Kl+iE$YUWM-Uۄ_UT"-5F0B&|A{V@2 u0A"@K(}*p*�$@.LGf!սd)~\spJY } 0&WUABajeZ6G7*-m/&lji @E0ism.c'p3'E>Z*6@�%ćӄ60 =wtZ{2]6Z6Q7ޘI]hO5.ʹ8O~Vqwi�R�(bra%Bd1O̤f'`?SP*iAMq(~PU_퍄׵~Po xWuA!rJcr>p1p[L7 zH�Nl$~$/5m#'3V'Uϰ{x}};4zW-qxK܋"Ɋ@"~mPUr? ZD$ ֖5AZ8iѽ\$5>JJ U8�p歃 Aq+ԮOr?1{_>M2w'�<zs,�/lOq@"{ =v lr'TEs2ൌހ]:[Ңabx'vpm JߗkO=aĊ(c x^7xAL&}a^gpEŎ_7`6=Nq5ﱾ0%mc(K J#\LIvLX`B%OB1L}7+m .yBBтM," _Nߟ7 *kd6S۸91YA7K|ZH9= . D[~6ٮZbսpNVcHοc%�gn)N^HLNh!`k @A 3LΟ%T"8q8I$!G.}r3,?*b"ܩw=S\Gx- xzpp2YO5K"_˵ܺ{Vn铫RKYP$a3'й)l7NE`q'ppBG#z} K=D%(-m^D�-6eg-.SwXx¶PX3UPjԱ [ŪQhB' Y:ylDy(xn"誏8/WXq?,}nzpY{ mo=~T?ȑ{b_sbME;&/KYRh٠ n>ǁ iXeϗBHwf�NB(V˟ݙPЭ`md ``UpĹUQ{E*\ ;aԑX*wzBB݊WU3CaK= `x .[2U8NdSlN㣚~?�owz;0�SE>F<iuPÃb4##˅s{>HAw4 A< i.!]@L 7~AɅ %4,\bmX3 Al ƃoDZ=x=WU:(g`UiJm|᜴HXK="k52X F~Nh||{?Y@كwA/ذ1S. ${H2s~?׊| #7kK;c@) Um�RB5eN->kCc(] ԁ}}[}:/FC9�(Rr\*ft<W\CËa)%�+"|@}\+[#�Y x4f �΂c+=#Wږ@Irq4,3{@ɩBK"sc 70?;FwL0&݂_|^BxmõJ"�|"V\aw(=3趯�b]Ѩ8u$�qFT4l}t*o˔J˅ٖئɔֶ XaW E Cms�[{HĥHmd$<M蛘 .*zp/G M"h*On`oo6jh֔'wC<DpלVddY{ 2"'J��co/YFbEWA=q=w3@=[3H)uj\n "h777aOPX6p;s""6 5HCAJ[[qTK-1~^@ )&c|3"1c ^s;:bJs(q8'nK4NM% 1:DΉ>{YЉ%b\at�ج�p�!47'wtE(! u/<$(<D J�&kp0I8p[ 0V\7o ]>jYq?!JjkF`]k.5Acb3V|iNƝ � F֋:_.Zt1'4qarڡ-[&^P{0#kW/u)o1BD/zS߬V !qL�9^N`/P1 tL`HcJ'[u@]8J(!T@>g`lWF#PJP3Aڠ`n.6AQ%<.FlkvYA* O8_R.u>O5QWKU/ >bֵh~05\U7{ Q yq\nxc"Kw*릈BVW?p_[‚`z;ꯄ='gSbQb[zcsqg uvP} ?ϼɩ̧O2&Di;EsVwVĵޔH(m"8g&k< NTHᣆp�hEGGǀsI+r3Nckm`hdҌqXivI߸Oc@ N*$�in/suYi)}V-? B e]Zr}�|=F:Ye X8g_X?<HJZxgƁ8 7L|yg׫0]8/o\~nv#݅qΝRB\wpq|$>@*";3Wgoc%^C ^Wȯv B0�'n@p|lVcj\+<Up{x\9wⷖ|]]#LS'|VpA_S]p~-2;!h lHq@�/!x .r/�&$~RG"V !(U7PGXQBky+/yW1+=ޗ?ݺޏEA pttBB$RA> �yqz7}pCBևe5ls �h p둯yF@@g ދ́n9V%�(J�D~K16rxvܓs3Ҙ�]Km LfS5k3Y"`ZPR&3ڶ�~zL( m9[dvn FJs%@&�7quʚUFG1RsP58|>>:<2S[JčFD+ Ha`~b#hZ)aA@P+'}E丹T+*G-\L"اnK/),m*T,/0PrH(]1~&htL%j*9__aK7; K@[K�kȴ֐$Ϣxdj/\syq7D`A~v$ڸO0G}" QNE!GqZjn2 ?"^K0Dc0i7N$CdmmD0 ' zlkij[A»`P b茇ZaH3]=ɽ9Whi;_5}r5Hծ=5ZO2hLp�?=<lv_�6fp ɅXM�kʩ? 8@� EJ�ؙcyOϯ,f%Ψ!?U\( y ?ݿ+p_]{OyO{kɊ5DōiSsh=UFwn̆JѸY"B"ءgPIzb}0$rh#诏 Ez/�êvP<T0_-SuɘukJ1G ;=?"޸'1f?7 ?=wYpaŶtX#[Az߁�zW>p5Ƅ`'<$8t]D}Z0+*5N5pɲk#w Nl, OJ R_`H M*L8^D|odP8͘\D\#cMk@�}yp_|S_3qKdM׊ᖬ7Bc?;'5g5\o\qp>Vzk\.CT:LƧ@Xlk0A[[~aɷz"; kD=GM1ME|7}LD:0[L>,_)JI4qX!>d2G~Av[Y2Z/GGxt<Cz@! JNУ n.~@xJ6hD2Z R+?΀"J-Vu/ExMٙ4Xh:#f{z1*ͳuz`EBئ�&8=y uIpG5@(X<Wr,ƌiz�q#b[`,cn'8N!>tp6s6WN-hCN7hĕ u'h|Z숧Z?G�D}*3hAo}{]+׃SV 8t֬_`ܾWv]sI&!VbR<Y,i.8K@f+"e�ח/xu2sg�nd2/{wO:ᬣ8]nE{ȟ`<99'7p4�>QRZ+'Sc@I�k}0 mELwN(>ō͇4}-{/= c䌵CD.h_$ K1Pp-WǾ("OWs_eѵ|g_UCz|@ʻw4 \/8|P?_f ᨿۄzf8+v:Έ-+voktHm�wDmzLjbk {O;q}N]S(WB@b+%: "wr :1(ON_Ɠ�/Iqqqp˧3ʾe=V#]3[|_{w:TA?:v.˷ppjWݼpAp廬[69@J9JsrC"9^~iv4Dİ ` >ۑѨt$\A塢)\6K.|"yDn Z ZƏs)8@`[`9S&ОQ ~2| `(~}zFaV㪠zW@,eOE;"~JsO /`LX$�2 um7dդ4^ F҇,z+(#X( Z�5GF,NѕVnPWPvϛ<̏L2a$&snDDDDDDDDDDDDDDD6u\Z����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/click_icon.png���������������������������������������������������0000644�0002322�0002322�00000001432�12061426050�021730� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a���sRGB����bKGD������ pHYs�� �� ���IDATxؿn@�۩ԁ.0@Tщ `T3�,,,,eHl'i:R'p08/YW'Nx 0?0p @{+KC` 4]0a^w FP85VEu#kEP? p'itpae(�o/"L%\8 f0z!S G7T`qC{gb!4@VA!�Qٲ�d�2� @ � @ �d�2� @ �d�2� @ �d�2� @ �d�2� @ �d�2� @ �d�2� @ �d�2� @ �d�2� @ �d�2� @ �d�2� @ �d� �d�2� @myr(~PP.vgd柁 wP| 9΀(]׎[@=2%Z[-Y| PE<.'+7g,M�?ͻd>v|Ag"< As�>D8Ѿv=N(Z4]灌ͧ<-.Js| пs�8 'z @2i����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/top.png����������������������������������������������������������0000644�0002322�0002322�00000017362�12061426050�020446� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^}Y$Ǚyw9y 9xi,J<GIV , À``xɆm?>쮽%QܥVl%S\D3UG̬L$ =ŞfUS1WDDb)b)OibZa\��qa /*)b"#"$1eҔ6TZ- T?ޝKGߞ/ՈӵR43x Wy29Ѐ�;�]MD"E5I�i4@#ȶQ]lmk$D(� [� (�p3SʁO.@G}"R{B3i71i@kUXF.4"':1%*"y^>kj+%յaʳR;6tPA@"cQ P!"qDZ ge6;cʔ@u֌^Mu<ZXP^'vŹ60tQ`V<KH2I �k Qh6},u(F%8NZC8mWe6AU14dl2�5rLJZ:?ɔ( M*L�Qq6Zz]ׯrCq~@[Rb*bXץ:9ܭۊZ3y"Aօ0x+� "DBDQ )b<ITrG�+C I �T\0 _3$/�j%.%u[oÐzjJoi %1'�""z.gví*xT9Hv߯$q9A՝͚C:2/U]_k [D c�67t5ãzu[\z@6h~ $ MDC.IEu"0qsvH&%�pTm_MQbneջg!衖?�CgjPS Z@vyED[@z :!uﺣhAD-\" 0!E8w~D9t܄hأQz(>dR?-J)R�"4 ^"fw7 OSBJ$$XJ6&@%D-y�Y]$91TDs&" t$wE]̴̷A Z+KEB*!@}>.0OēD�#"/�%J�תUJX}�IY`'H\� ;D,מ�'|"{EC 1+*p$Jץ?o:gv '/B?ɯ,,؝rsf۝uQ"9w?4"hȗSo xҏsR|g3Ot7w?Ib0zueBX_݇5y(3_v}ozFTk>27\޽cݻkwayvZG+|G=1%ŖC|긗8s3];xE1Ņn5YGRljC;gZCokBTS+Cz(Nx{fڍF#.bz.͠!=0:ɪ5=>z_2g4UIDjƊ?9i^wBk<2ctc{wvqv5+v.Ͷ:jf$ 8̌ )vY$8> s[Y'{8{!w{x|Ll\G]>8:V80>]qb k%ھwkjT&ȠۏO bs,PNcl>Gt{0&9w_/w8UG4vI>{/۽ٙVzqfxAX VcVCcF#\׸S�>OOaǑ;g>b:t5ޗ?aЎZbWd!uff^3 t(^h c&1:*^jxZs/.Y57IbIlɜx[L&2 obF[@l,z8 "ՠ&SpV�p%c폽>-ǔ�⪎uT1lk~4>eF&kYʥ>f@4Xoc@�(� N gWxvp̔�[ދ!̝5oW7[qՍͦ7kN--?10T-+@EL@?J* F 6Kk{yƘ3o{'ˍY۟?[#-eb>G @w%"_H r|i7@74Ѝ%Xh @()0^ l\'1%T;.eמl&~~ GS CDKkuw\Z3&Iq&dmHe`<NQ"0V@E\#;J|%eVTR.+z oP;x�zpJoz3 Vx:|ZkLK^d((HGH #K 9\ ȏX35[|n=^K”�ņ�l]?H%_϶|('x?Mf揵EB+pk `Qyoߕ$2iCQ?%F"vYSU95\G}3FgnMV0Џm'R D{ǃ"10F ('"bbx& .rx e}X4@¥ELm~Wfû H%!] ~_id?o+t V{1!5Z R:|!9'nXth~GѧR7~mwfgNj|j6+Tn4}*~ޕ Wtbb"*1<.f\M?�z_Ne~er|S;3l Y˷ FЏMFwD9"�^a+(0D4SƘ6]!Vd:po)e W.G0U' jN=3K3㺈 н=- QyW`@348֊Wg|)CM@_q_8y<NybN)uucL~)}4ὕ0VO oXA7?p{.% V{} L(V¢uB�oN P|~.Kw}cd棎V7egy.EI>VG"w. Edhr)2l8̼Wa"X@ɕŗWKٯ'18(?ɯ+L|R|s3n۵c˦z|7،e-xXEҘic~ o?3�M {vD T1{}n<k L sKb, B4ojP c8T{Pu]/lb1r^k+>U�e˯ɟ?۫�K|! 9F;{sԱ+]ڥv!B?)I, V�Q'-E̴T8"^k4_هxԁ9pCDUk#}ˋo~ʍ& EPX!`|t8ߏvI.O}{D4YIDW>s[0i ĉ[~Ded5G!NynÏ͕Ih}-ͭ#KN=Kj\𷏹Pl|#}F|s}u:d.qrGi g ˜QX (E�85f+]Zّ< 8 :~+ӳF|:7|? r]b󈞜XL*P!(<ubxA Wp$ы PEȾǹn?ϊ7}9:{~&;+Qn|2h/vH+d*\jD!c'9$Ytۃ_Eݸw?y�h/ѧSzq΂:R2 !28}I1B4T(A2pPE4眾nvĦ"�΢Bfm�e $}_R>rBD'=d~_u}b8MQms+0"`2p4v481( 8x_Cǭx%~qF @gරw=>tmb7w=#{sLl=¹|J+?1" 106y�@|ϛ=;>5?j,m]p�cXFgx9â>t]HÿcӴN}k;?zd`EJฎkCGw%.b�@dby{ȅ<8jaN QG: J!voD&ږI k̉e0R VM^'R/ܣϿq `/l `X 3Sni ލ7뻝vf�#(ܱd�n_(1LJop΅l`=g3|^3+"QcE|9~ݫ⻳VߛsyiT4i~K:aVPʁ8YlipU@YbZ]<׿g&jwfq MI3  c53}ܜ<Q?CQv26`|C$ %d ow|-e_l'9|Cy{"ݽ-/@|j5"|,A@F\߃hED$IخlcgξsX@_^'x3qmA^nl8Τ_eJu8`ΤxHp֊Sm3#Ƙ$+�Vjx*_C�3';RGX\+;L\SV�&%&k*xCb !mV:sY)z%+ș?*QW;'(Wa#"y=<ntR{EdHz/'|טLaV f}k0Dx.ț#fl׏ko4W)G=Fߟ,F 8�$-ԱV 0's DÌ$DB(: &32MS$RaJU6Ki1pN|I--gXbI;WAӗxu0+D)2k2d~dPf(5sbA2Q f@/w[L߶-:'z?VoON3OC$UL\GD'vR :8 <!]e♽(f$fIKQ4 Њ*JA Z&׏ `E~t�@JSwgޛ㹇>Rb<��:..aWK!. +lȒLT}t2@J1(1YkG|G#+E0�e&>opq) `?�8 HIʅ.$[!gt5t*,(#<fk` Z /ʔ++h mY%%7~$OUDpig1� M� �vHPʗz!D.MX/GKp\�D^$c Ke|'E=E]" 8`D�2�zŇ� j14Xu?Cp{�rDk>St"8HK$OcdP'\PLBFn|x��3�gHq:I1KUO'�SzDG b\ZLt1/(1Dh{| VUEbrj}F]+TAy�+D,6w~|5A$e ä|l5=o5y���Mļy@׾P}Ai[U"L JUsU_HŁm.2IC=&�SPm\drWH[P'c%&VaEJz�.@>A 2ѽ`J�Ys&e)IO&d 7&J�&Vt: iU+eR ɓ�Sк4(�$Slԏ;Sشm訊$S\ D,mTC!g@,w =1*Z%%0*/sdTh@b1.*ڶU4miVY?!W;�и+(�pͩ>`jdl1)^&KA� kڿ!` O#|[R @UM,2*@(4 # P%PEOd= �4X `+p�uڮ";sF�X*wb�d, rۤ4>e~-_?t~2FQ+`BQ_IJHBC Pv\17#2~}{>C; hM—ZG_�PmI7Y1bIsib[J9􀐼he bHAC rG`6?<U,d ڐa+2HPHeMHȵ s7 _azZR@p$e^R(J7 z _LЊaK Z�@1RD񎿺8WܓڏbKhlJ+nRΕ-_TN::l8oIr\d_6ؤ>jk΄Q7c-2(ZgEe L[<l$)U:SD YRY"BEdM1`7@C4bGD8{v0BOuT]@(:>_o.I4 <"fEPa$y�IqC% v{"@ۇI@)%/iD`mD%b$!V`tO)r (�FJ\sw^L=&zWĚ( UG� 6M<l�TpÆG/E6XN[c]cZO΢<}x[e]4R`pP"&VEٸW"֏] Zo8N*w�Ͽ/o߷ֲMbk?Hzy<BxF$ <^nH1`M )qV6GĦ&. )A6CL�. $p�h.$Ȇ~đsѪ옞 M$�r$ѤWlo>6⚱Fƌ̍ئ-"8.#<j_[ Tl6ɘ2yVejM鞓)b)b)0kC?I3����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/minus.png��������������������������������������������������������0000644�0002322�0002322�00000004201�12061426050�020763� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��HIDATx^ֱ PXi"6 4Nb)h'q2B,䁼k"/������������������������3C?\G1R" �'`Oum"VۘK)o}"E5ɑ"_²Ĉj9 q'�$x^#G�NH\X!Т3>ն'VW*$,eΌ}իUxI^Ky~\yywC]_6۾&R�O@&0vmRou6MYmVSj>~ �pCMh!H(&nbde)ZK!>~Y_5V9ZQKq *l�ua 3k?|{aC6zUG6oܠm $#�I >/LƲū-~z˳mhvW~;I]W#§vɍ;~]֫YdCSg&<v_; 3;vVSkgoZٶ5mw7Z}e6=5̕@2s ٫mAs# vÙ� "zb 20P8ZͶSNP k�;>n"ٮՎ]�HWsڳ7(_1/b~fm(`0g$TX:\ P}etg6/aӯvhZ!AUYpAh4J 6(Fp `P�$`C 3.@GoLtIy?1/4`Pj"j'2/0EV@)~2SpFm?a <fdBB,kC q07.xM|ť~xD{mlCF0�?ܳ } b$EGVE@W}AIAAX;e@=XumOĦ,sD.?ģ\߯fa|$q鶲c2Mܺ�BXBlvIDS"ek虌 }'=llRm>4H2a3u%f.<t*�J/rӟF62MoQtP $Hͣmӱ3 L?6 hܦna�s=y7! ^ij5۾/i6 Af9 +-{/)`dly9l@"p" {fa0] D^>9$N8 -{"_{hmY�4hE$@  gM '7W AԻHh2D@<v&d̈́ɫg}%Ui@E�ڶp4.t|+Md^o<sI.쩞ʙHɠӗ~>"0<%$ gͶ-J)c`36adaз=42`% A`4\;8hgIRPLN+t]zUV5 \:.ҍ;s8Mɢ{>T/rH4kNT-$Ҍj {ID6:{[@6 s"*x|�guf@AK% pt  @>֠+5\JyBamA6EO&1P02.^kUP%SXP)$��;@�H caaLcS2րfWQ s ݒcE76[O¾ke|ˠ$ty"XR, FX"<f1HBq~#@xh smn٨iJʪN�vop!9aS$\�Хmfߗ=<_NK+)dpI*`v^gJTxd]?A ��@hq? ?F̤38zR5lkؽ>_A����������������������� {˕�����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/refresh.png������������������������������������������������������0000644�0002322�0002322�00000042004�12061426050�021271� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��CIDATx^սj;3Y6!)ZBEM"ހ$%$`cU� 1l! Fy;9w\IfYj4h4hko{N E`$D)!4![JV*r+)1#~�}eJAamR!wa:!ͅr@Rڮ3ǙPGN- kG̮(@f,B7dmu]yP)te{1c`Էt,&9?o>;Fݼ֋L~mKV<M,2Ϲ[r]jUR+0 000cbc1@B D`x<C&b0HBB-4ˁ DHBnjͬ|o9sϽnf.*|wsěwCMێ 1RQn0P JQG$(!= @ Ơ$̲ Î /0+0ZN0WD)$؀N^ xA�/k} ?g<&Ǐ~}; H 46ln.8W!ohw !R]0ҊVN; @A;P)PO[�DEّa°si20٠B"+ g@98PzGGc@|]^}@"$]D CuD)";MxѬVFVv%B Q)Ԛa!M̚H%,°1lj SQ(tXB94b[{:5 xl +" l  9/? /i>T+ 7Ǡ~2AA~Cv�X `d*cO~NЄGY`Y/"ux0ۍǡ>h:(ZT #8RkE8򸗣�qdK(8ȍ܂;Ʋ qnLqv0LS-Bb̼bZC\}jFDnC :|a�![ތ"<jiEGl;Aq@W@O=pT=TlXq#�l‚\{<菲aze1|a E`@W ϝ8<n;vG): wvt# Z? 6KF�&ڿmWV8鴂vV4KiMfath +mXkL WZ `fmW{ğ'rca8Lr=: uG BǓ�fe+U1-CMn7Y$!MοC<�^E~y@?777 7"[~Gw, , @�HיFF %pG#ݺ8:8DvuZ!8:jđ Uбp|ԯ˃=_Lzx4 J; D,$Yin m;L)$$Qod, ~|-򢈜|;z < @w9|VfRǑm,#aGfb<~h,u|!z 5cW*. , c4180Pf0_&+ 98]y|!¨3� D ßΟ{:Ab_ ԭ.�!8VTg8z~>QYnoʹ{ٖ:܅CXr~n&8 c%$z7jSVk Nb'&@DQi%ܤij8͋k{g5Rr>{M}%$GǦAzb3(s=8Ӎ(:]ɲzoFR+p "9rG\WR:(S:°yb֧q!\?:&h\/; �XN@h;À0qf`!6\Xv kJ4YR8<�p"_)y}lKKtb"֊4PT;^마tkn uw@cGp[[U WJ6ysӞPd'2%, yaC񿇛$E'w 85h8v m&3zZ K8D#鉝~c?4ѧEV~{qf>?4'~� afa憄X`*ң4$h],t-tݗnH{sZiOA1mDsq?+n!#�"nbv0a\:yѰ&g^5y?< kY#smXL KP@iQwM�ܠ vzJPNXsx:x4߀{`)Pb kQ3*: Tg'}𰹝DWnKb%ۈ,:%,*�4 >s3R.nLR3u W /cDzOc9�]2?+|WR;2{CqS:n|;68-PD`+#-y-$BEʻ5g@t^,73QW.[[1{Sx0A0Mlm}{{9ۍRW;1 huK͸ @qQZ̴[wph +3E1@o.Y=GApa�vא4a7ߵkK4"*VvOd{9l |P?ENA|0{]}RqPnǫ�˿ ۑ^wkEQt9OD&ߐhOYsi!ywJZEDlo5{<!!7Gg`8 087o {/*,h}n.v2NBRk^C,_&_j} C-B[;qpha&E's-hGASiL;iN\Kefnbh, bBDZ uѨ0Ǜ.BLQD֡aDU]%KP[((ui]bQwsL<J�ZqF�ӂ! X: N(C]{|' ǁ!fJN8Ԙre 8@@׾XҤR (%/:ajlZyD;P;έ2N%(ԋ.EnI/`9'Ab ٻv귄y;U}^W=rti/vAk`7E**2C >͍̎I.J"D姄J]J׈X#j �Y_د\D >Hab;|h qjL`rb,/t|[f()  \'P%B)c%B nƋ.ׇ *M'Rx_S%G2NJ;-h`j7Kj+}@IQ*4AɕJUZA794k"E 82=^KR[0"t!J)DxleBMe3-n‚8L?7쯩dm!^E ,1Exݐ>2x0jSdƙT6Dz Ҝ/JY;rB{�!D4/3�Pՠ�Y(f;+UÉ<+[HrMVqlG7!dRAfQAY9] Oܿ(͇:8НcSV`9c/,dƙ)$;H. @Y7nk4=H=Paebh%eމCLPf ܄4Э8WQ;X&U"yqg!̞W q]Z{E4PtE.0@"o$< 3(3e4h: u[pr4{ ɑn+07^$p7FWAG0KQQP{k/,�9�lk @T3WD]D3. :UjKPb[iua�Dxvwp+2I|Pg&?/+PuQǬR˲+Ui:?bӟ7^�tf"x.gU.mMneA2er7sp6\a |IŽ68W2KQ�cs�/"/#�Mx.XR[l rD* ΦYp8H9>TV"w]++m�"$KvPx~zN@k'2^f2d0b-lwCi(۫ExB)uӠ#n2^.U"sq^Zjo$798_*E*Tl@Ƕ`*-"-G' sOnd~a8-oZ-u/j=ԪR�b9hZ0Svyk9 ]�X2*ʷ,?>5԰jrI]iq"TGwv: j-͵a"> rzk!8__ΎaЧo%I EwcZbS x�gD䌀l E pB,~ �  |VأArb淝wiE(Ժ]O];JhAR2T@J%rsʏMKJ# 7?! a\O$)tnK6cZ+h q@O߰ R屣5|ѣ'{N/?V죿ژڿ"ѾQ~cߵ~@)BBtEin"L.=B@E,q1չ.hP'eyzs )X�c8�EseI+5SwܾOZ_έ{E& Ơ'Wr+X&"=<^|zᛟހC??t+VF)IceqnJN2`,L/J1-{=!cwV=-Lk}ZEHYKħ؁/{#wVTDt)͚4X[0R@�΂Ix4j)W � Taiwdy񎍭L3wЕjM~OK08OcT)4Vˮ \:@cHFD6^ز e5 @@@ ZZ_+ȪO?&w> |?9wd3_qX[w\'+6 `$,0 Mya,)N63a}*A3X?7({Wy/ 7o'>S-"PJ#dctV{C%Ҋ}$͎D+b`pٲs0Yj]>? "#,="zV)1/.Zy{\BJPkuJc/ C|˕"^p7VB +h2r8^ڝPQ:@*EnDϑOx˧ dp{>-eqSM=5v0Jtx|ZA k0  v>qM%L/桻a:'ykC1A,-Za hf- y=kۅvY͍`g369ģ@A�O?p3IRxo|wg^"X+c* ֊hd;iVhgDk ƺD\{\r8-Dx@�Zt*TDROmeqjBi0� (c-, eca泟�_OӤ<Vwo?wq3]QL^}aJQ�&]TdPH+D�GI$`˘EQ8 `jX$4(DA E$g<�jGpW|Gt1sy0o-PsIL&Uu" Ĺhw8 \MnJ06B= P)a ZQE( TJy 8JF�0'G3$?Pz+r|Vi�a)do,x AZЊ5" /ldK!@.!PVj~H|—D !J �}DsC$7dlD+0УV̴ɿFD5rEٽ+�kz2+ .5`!@JJmhEZ VZ��~aQ3=wm\G9\MM_oňJQڥRB#B[/�Vj_?Pu^ႈר)/j!O)E4PۚpKA蒰W��(9iʵ1!;Z(G?�͸ݿۉ[@Gi-[i(Uv2�F�cf\5 =;/dgP8rl@AGU:e(iC"\#.l2 5p]v':B*EGvt[ K6 WH\A ru߁q,jaF\nhִ E#¡�p '*EV*׊EH!m8Ο-ٔ?[$f|[;g٥N0 Rb_j'6@YÎ8dT�đY5Rjwf&D-�H)*QQiE:&@$#)\~(:wу 魱[-31lrvS[!g4뇳#�Lv !:PZGJ%` O� 8N wD t$) H �< ~\͘}ӕp^5Qmx}Av ak\s�^` L 6Lrik?$3#1 7#@_!m)Tۊ?b*^hs&Q#d2mp?[ bvrFz;|`~ VQj!ɫMnfwz ck,7ƒl=|#m,H.,#`B-[`ÀMlΊJ9 XeJ&IދF;�o!\G%"iGn<<Y$`s  J^Ceu#@ú?n~CX/`Ŗ{$؋0)%g+bXCb؋yda>g #BV7@h5AO8 k3mAІV s(,K wn5Ssˇ�@\fĩrp�XnqVY^ci6gf7./%gz9`Q�^$Rȧ]#ʵO�q�zNđJ~Fѐ*LVT~ӳc>⮟(�wkX`(x3V~ƯX <UL"xZ_ndnsט޿%c�P{3Z7-ζMGe#B^TB^l?]iZ~ȃoLvYay\]mڨh3K"p|˲}*ϓOl�dq*(d řǟ"H1Ng:x[)=p5Ldy] q45ȃZt }Q@zy>>R@QT Vĝ�E@{`@W`}kpbzttqcfo3 B""]R»~s X21 �5pT*1D@ZˍvNZ]׀sJR$Jƅ-vO9>ڱ�FjW\Q=DH�q[g^j[�ĩ_+Ṉ겳R_/wti `��!�> y|G'5;9z%�x,0UWten߳ aouU]*�E qFd_eADdxIe)i(��"hH �O9/a5qװY@D", &wWX_V! aC7-媠8|9z>mZ06m[]W�X޿Ў=uYM=N"ֲ�nv-oo�aB,ڭ�cZr޳ΞXsA(Aۋ5"lݿ{:(d|KUKD|Y"PN�職xvOv8pyigxv3pv]CFZG%E_:ã 0\qVd[4ckԇ"(�V?.k#�y ��y #}$�;Q:" hS͚ŠkoBi^�/׌}K7FpP[0~u\]Őyw<c{(5. ,"`0)XH剁aZҠ{Y^c$�JM劤WWٗ.Zo4YK8�M[))Vв"(3e V@cBs\+?Wxs5'ۛ|sx@]T!˭gZpNˏqeREHvwaG162P*' 2E%,X,[c~t Ӛ_9:P-Yk`Mu͹9oʜ}zOXU8 >\u*/7 O*>u0eLZj–)ҫ#:"RDԾV ]@� ҆z/?;o�OrCu'+7C+cG"tJ[p2, D,!:/ ۡRCZu `Թ%%p6Fpx?B rD(H|>p~u-ԾX^c_CMΠ 㖡zo\\&Ylǔ'l#X3pvbasdq69-wYD0 � h!ZKş=a/?jCn @WyND:`ضoLlr>Dބ To>sagV1$fyVI�9:Yʐ-T s2Y#@q4 ȢR̘`X� A<x  c�4W=OTF@&'D SN7^?YsdգPjM}cFQ`Yá1ShS$d�D%*HCk?1?XSDKb BKZ7^U]g8^ :&,7=L67\ p DS�)q{߇#X0`d03 UH՘BP z[F 2��!4ϭkHCW.;,~(>|~ V7Gh=/,8'>'qA`Bd(3 P�1EDBM BE jYf4-�A|^y 8bY \w.`:ésn[@e}^\ ER""rᛟzooJ' hcn㤫=@Xn:VˌvDxX�.Yr*IK \p@`~REa6\_Nԋm! zRL4-I1p!A -mf`Jh;v"6t�К%j+g'qG;lE+u�C@$O#[ @0"_7f�NM v$3(D7m[}n=S׭�hmxZ; ]D b; K~XEs{7m$�R<\�+[. }fT&0 E@Z-$9a-XIϮ熷H^zOGW&/@#(mDX,+0G",G �:uD^]MQ˜;#ffI�:*J +3j& �+FGgY�(w$ ȥ7ʍW(zpw3+poe&Bbh;BS,7*E.o DR YeFf1aVkr@�M9ַ?k5,·NpySN* 4D<[+O&}<p@< `omVQmC R0:>Ӽ ?GBEE [6dV箱+^ž,JG`^XFŁ^$y0J dFQ қɳHS s7H.ZBnj ԰B+ސBPFI p[n鏊7 Vt賋>g[r8=�K}$W)>p" f 尶5n 17?бoNDs  02+"r9DvNwՖ%A*.,N=mߔ)@CIH":#t"tO <U>Kn(� %1l�* g@@eT8n5 dRl_l.Il~\h;&_Nբay(sq$( 2Y Zf2FY'6;Iq"QБZU9q=s-;mSo�k ;dz8&F P~nE+vrQGwfӬ8a?`E s}~`QgQfYYͅzi6P$D03FEVf C,bV0�R20 @�״!K$CFUF%J80`nIZ`EMۃdZyZ.Dx O2)co>=3:y\!VD]GH-_񥘗f:,D"$ۙz E'in[D@QQ܊QiEV1`Yd�7�q|M`:f =4&{/lRZ0X¨Ai -@;Da^E(=љBld`Qb&u$}S{Hz\[NMG3vW0==sCY΅q0}l;ci60)!DqrmQbF? ]gftN�lG@./o[c"V=iz M`XױcV,Op^'_b,AZ_*!x!X`;!ˍOp<Jא:I#Q[t2-kM[$6s'bOώy /5Bw7ݥݹas (8R0ZYo=2_q[ae.rR4J `kzl RR&N" 8DQaDB`LVU�( 0]s}�x@ #:۳(D@+O%dže>0nT K.v3scKQ:-D ’#HD6؆لrQiu֣مΑ95rnf zQ!u CĥHS|N,b� )Lsp7 C̲ R"lwRA+ "U-쟾jl "#�0TT71-_^# YkR|PEfA7RB0 Hȉ�QdYHJyTQ! ft. E1 ʈs0$4 #Q1'[�Q\Ba"(d8 in�]sHH@a_tAtЍі1f̧Ay�x�0ofnkoR|NQ6qC�Z_?r'5[%^`TzP?V<:/L*ϋ4Odi><OɲԂnH".NvZ,z6b<3U WL;kGJ4''`` 5)�o(�FP|27X{ZB]) ~샼$X](!L:몘yò G+ĒG@.}4M0 0I9RڒRFAfP.q=ƕSDPD@'J)PKFA Z@D^w؃#f)w&̼ kϞ}x?=\uIt,ț}4TF5|u_^hPk-}(3[wڮ&ElM_ Jd͹&X%, y6" 8Dc(\ 27zE@AhTZ~]$ 1hr#yll*"Aۢo�Շ?|m~A -R_jӺdBvq1r|n84Gm(T{Rq gb Nt-7oݩ89Br\!}l��"|nծK> Q@i,EE_Vo6zYdma KR�F0@y~l1k7. @0)J}(k@ #T.l ٵ~za}$YqZE"녠 ĵ5#~-x)H|D!J l~g !ڊY2�s,<dI_;�KM<O\_ ~/ƼlbGaR::`adb "f_Պ4p\~D]enk<=%鱲Yao'DY3隌wa`˶5t" nk zqID5I#snC:Xƕ4߶ѴK~4QnM͆'N>GQ N=eQ@y $> %G\5ߑb OxE`:۬-ͨ&K<\pYcܻ 36AdrG0ikaؿLam#YeqE^1Zk)җy?35.olz`VN,`Zq7hh3'_ ngV[ݹQ6łv޲̎"ҭ�|~GNce'{z${T\.4|Ǹ@C~ @qaGp`0= 4<˱-ӶȞ(/o+#�k#�hO @uUM<[ɚḀήږ:Z}٧;}>m~WnzI-y΢(n2oDQin 88^x 'dF3ӧq'{M_F�%p G.5?+ MRTLd7ӯ-7u$I{�Bp;WGDp%dQ{X.nzoh7۽}W>um}[= ǿ?Co$Pc Hf;3BTJ&U"[jqͽ\2%=HsPFD>�"M`fRTYV ɒpO>@!SS]�LPq,8L 8ևSg{ _όמ}"�>jm`ޫO\ t.nbEAq4PpZ^t$,J^БYq;{X ?s`K�ݣ{_n Xw/ ?OEbsh/|es| P{e8: �q X}'yUyeuNdZusۧla-|TC Wީxj]>ٚ?zHˍw}$G ӎ�giޥ[LAhƔiqrt0\:‡BzLj-ه"Orp;|SkRi߃嬁 H�$"8Jrݞ/z}2>3|z/~m[jiTGdI8K�lkm8hY4mucaV\UݪT" YܿvgD=iY�bF|Ⲥ*N<ˍz}Ydga ljܓixUXi\q>�x8 4:llṗׁP,>'W_v>k/j7.cP;_nӱfqw9luU79a;j5PU`$xSՎXjch^Ǧg5ܔMQ ԛ]-gyb}pՔ4%W8ԷQsG(<|DT-[`d{/z-xjϢ>_95)aֹtttUŶ�FTvVG F)LayBE'Ľz>w0lv u‗,M9MgYYK:x/xkόA2 pЯg"5BldpS/lR‰"fF#Et u+ 隢hgYaJQc`pRsG/v50\&'qK 8:MfP |g<MMlQL6~1>}7NEq'k/9}Ek7b6Pv5C6QBp.ld<V>::pyP49b3[d [Ag lԙ_lӠ}H:pZn"L2hRxg7vng0ʿ{;2Ubbl/l{Yγm.<[+!}@Ɗ@V IOlHT> y3b8JG]/ϑn+uVn;d[_&Iym(8t+Va@ "`RFw_WEީ~|S,/bd-k8?_'޹o]|+'_hT?L�}Pؼ�]ylghe^*S#@l^x^Z.)KFà5{òa/ ¨GQq+3yܚ °ðpM]ֳM}LW&%9ͨȳ"K{E3&Ϸl\|18?\{VewC {�Ý&x;O{go"h�)_ F)kmt+UORG:iE٨u!Vat*AR;7("QD#q3,ȊY<0"v[ٰEzޙ3y28 6N{gËǙ͇y6XO{j9i,d+j]&9z1|e9j[D4WVxrYfÒпΡ7-zvؙVaw"pQGrC/O+rDŽ^*n<-_ 6X .-O w xM6b3.~9}W_}B` :�~`e9R:Nm|v, | oh}5%y 5p7\A鴊:m[H@B/R+CrDn+Ej60e+[Yk3ܤ G&Qo ;]or�;'OyUAkN)rNEN]_:?m.OXHH!H=DBtŒN@Z-QQe JD,NŹHE:4ε: K6V2Š-X6,O^WJT#ÚHZՂWS3T3VkX;h/Tԍ(hB O4<l>NMfq#s9 7A \< 6"8ƸJxb[`�j.{7O>:؍LWo%II%y> HD:$$큯v"lܲ))3\$i];Xm b0 }G'1|T 7~)[Vi2@oTu gӳ<6g{u_5zo9#S36�9OaY te�^Sn�kH,S;^x@s9\�Ȕ% �E!;k� ``4E]gusYS2l<_{@QM%`@e]8oh�`lM&k��@0} V'[ =�9 00^D8`]h�0� 4ٰ�i�;cLOl P����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/right.png��������������������������������������������������������0000644�0002322�0002322�00000015446�12061426050�020762� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^ձJ3Asg&X$ ("|+A- 'Dm| MVQl4l׋p9DDDDDDDDDDDDDDDDDcXfE�$HJJP8=4SPo~$fPr7 HuN "LW7)0Yf-snߵ[<*P^;' !eƲ "+G |R`bt@P\pfШr}ej�Pƀ_�kAպKQW,P|Zx*!3Cp!\ N@}1r]}{$%Di#MXiZ 'IEZEƭȕcJA-@Աeَ]mYJ$E%+>Dr߳39j4CGܻwf=9߽{GR%G=#* �K2VjsaF05v?| Ba8 #�<< Xcv8܃gf&v\Twz,̌(=5w}##UU+qtx�Q0~aLGÅ$� Z E=K1Zrp$Qd?Des_v/SQx?SFA�ygFZ{p=ؿwjbrȻH?|R7}[4=\ @T{fx/5:pkIfs �J)-5̏?ƹ|2Ai<Gͤo>6�SzF3uhǘE{L޵gbbѱGz0͏SdP9�i永`~5ajj흦=x&boV+kp@WYZC+U#uB4:ZHDj)"=_rXQk]o}z(%E`XXKl8D*'ǨZJZLqر:Aa Б`i5J@GLMKTcT*ѯXV7+)`_P/B$ <# jBcR΃YJ3Yfn/},^a#O7?5�;F(�g4Z )) ߷fFjR?!¯+ޣh[+E8R"IY_(4cJQH4j%DTȂ�(&zxS�y:uu+(^gR� G0 eRfTH|}{ٙC#/1;wO=]�;rl"]EFkAjF1FJwObllˍ$5,HL=p~[�e<v`Y{YD43HjK6(l]& jQTEZ3p2cecEC8pJ2{qdIN�>D@hz�"p̒Hn d+kC\GYr9?;B G<�1jHjN!/ jyhiyMu{Yd@ML޺]o^�IƱ8ˀ@;!+\U 55"br!xPkG85&QF@Pz4`bQE/#֫jt6ҧKy񱺌փ[/VFc)v*QL##a(#?If N5{/6~~#w~bsHWS8p jb--YǡlJH׵;6i+ȉR+%-҈HzFHGⅥZ1^F/48ƤUT<-WHe֘ h7_fd'Du:P^:6<Кhy{il(! iWcM#8+XeM&`L)7F9f.Ypshk+~t0P "cMG31] 2A\s^ 3} 8X}V*eBDE9�(D̷ZeƲ16NdƝ^}45�u:ly'_naYlRчB QuPDML>^h0Jc @@V}g}4M$ ˌ$sa1Y /VѥEڤh^q]DR @S%FMDѠYb"K)ՉY'_;J{]�@eXnԇЕ=`, PX1qTJw7=$h=s7Eu@#Q2`{>,ԪתGZ)BM{2"Z= ;9P9͒iFD[H ^�C{E bHQ{@1{1+ƮX㮘,ϝѥ?|@C_Q0>Ѳ~{[XfbP0116rT&裀P >3:-m (=CkETHR=Yf:nZ_4W0E:y?z)N_槇;,1Z ifRf4Iv,W?-aF`\�qINȻ<h~#9f&HtMnt ,H+Duؑ45#D̼B*w釾pSK˰_>ЪxΉ�K t aXE1Gۑ�33Sc#?@<O 4 {xa$8::Ү r${~w}2D(ᮇ>S7(" D;H! jb4;d]1Ɛ#=7ךُ/mE  N+0`-#>9&0gӓyT9E WA_ɑ_ ,`~r( r(!$R4Q{ZHUf$9RH~uk%|6#@�!9 3v0.p,D )TrXzf'ijUg᯼FLzlqE� ^Jta.6e9Ğ~3��/�8g!CHDE*Z%V("ʁQ�LP 9NvQG͂ XX$A+z4 MI(Rp aus`X1 `FOO5¿+DE'YA� �6 Qz <HijyE H!�A;b) % ,G. # R ᘽGlMg]C,�pXy^n�O)EPD4!t8w IdY&κw"{ 0gYpiKQn^6J�M+ �{&3>m+"rJ8xMYů5{2uuxR8k1g%9|Q:Ax씽�H)nE > #~L[b�^$a<ˆvBKX ,"4"R^O@<3=1l2fY?ID/a^nAv1 #pb^< E 6֪m&ːZk̫rDD pTfKW|@޿!PC{gZ,rDt23oGgɭZ+V 69 1Kι κ T:s!V6'Pէv�hH~(Q�{.T)?%"?�ы$rJ7,r n-5Ūu{&7{`!慄c/sRtx4扣Ev�(hrK6R9wNd2,˔$?,ɸR_~ ܝAPX%;+&#YE&g J9"Zt{xyR-@5/a08kcMk6~f?ǵ#ߦa0zEF}OmT澿y#=lfc .DYf>W/1@Ux3mCc3ݲ�?$E5"2nS\sp xD)kqI!J]=υ}ԧBs)&]D?QgRP{k7&KK޹5yiW}`ؗʊAhjTv.%]$&w'%,A9R&u'r(,*0gZc_ޟcg�y:+"R fzJX>7l V�u:AIu[:g縼NHA:\s:~V"AAq v8MZ7,s"8!"i~3WQZ<P�X+ԨZH.w{F^u)=#w"*`ޮSU1"am-9.Y86P= F ICz?Go>Zbrrc*$}5mu;MI kmޟgc@ψO6+~oV`\շZmR Lb@Jn;>(NYXcLF7Xp%o+Pء&Ns��T!е!a*"&X>"߽ &8k/3q^pD,j| JODR�8�'!Vɶ e>gpg,B1f6[iUGˡ1CDo2mEdO҇s~4q#Pc ؁6r w=\EY)%A* 9|'+9%m^<Otȯ!$gF]�|cL} ],z^$t:a{'Zʒ4~U`x{i]tJ#T>; ourPjDzR}LV*. Tl#�apΉ1,UYwwϊM~l.ϭJp:)V!A$TDYJ K7#o�0ۄ ϣ^e&=ʌ!g̚s L[pqķW]*@igbñZi{ _/dS{L}ª[)|"t(vd6sv;owӶţk9!ݯ:ӵ$Ճt)eJ\D"A9pNutJ=NeO"E|eL79mY;p\V瓢- u]߉،C>^CX]@4O+Xq6G7'd'I_p˶p|_F`\ @w=@_/PMf+- � l&0{qJ$]&}6|yWMp�6!&z\;$>@}#�aP\@Z  9mΘࢳ٫.Y}1g * }#s"nئ ֧�Q뼿ńd&vƤ%o.k$k\9-F2ݵEկ&?u"9u_"!!IĚ,ksyoZdz6wFG�x1/R^+<2di[&]v:'m-Ҽ|-$v~8K|A)Ҋ9$V]y飭ǯzWIfpzGm/O18`wΛ4Mr,yoNq"[{e_P47o]�*/6R^-A$D*9\;eMVNƛZO w6mKHK[ p?6AT�p~k+ޤ'iq/^;bh}_zvu~ },A�A9#O'4_tWsgs4 M@z.8K0}/7->Xw'=_졂�* ؟f Zx=[<suU� _hc{'�}_M\  �X'^W[]I^m˰ߥMyԁ"LofP¦~wDuu223c lg/5/}3[8tDF b@xulWD7v0pt}ޏGg~7^l$z|F7l}LPQMo,7aI6x>> 6o4Ƞ6G׷wO~ 9Mot(AҶQS[Ϗ#NQ5L.xM�v ={l%M®3#XQ"@|C�豝5H uI ^�['SÌ0F78LT?C 1C 1i aOD?����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/file.png���������������������������������������������������������0000644�0002322�0002322�00000021504�12061426050�020554� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��# IDATx^M$}/"3{z>vfW;R")HA-%0||g_tGl6 ^xC�SE& s qq>*"g]힥mU g [|jW;A1>w[Cc^*>O6Mp <z`ZfHZSCxK[�|xtOnJ@WC+`2M;.7 [o֭UARJE$( ) `ve<nC8EUWZk]7ΚΎ"JI i*z$zCOWF _o}K{մiYSp�Sp�VlHGGtL2yksUL\W1kv>J9O a$4o|q8@HPFI=։B^Φ+_o~_fޙLg: Y3rx0@I#wd$-0K؆Bz=zŎyk�_*Lᷳf&S]|wRt�: ID:`( _G9q3m'@-(mW~fdʂ ѭ,=zs|c^OѠ7_iLhbU�_ίڞa@O~uOJc_NoK;m{oi]/8LLAi$*[ �,cH M/;Pnm/2I0i_}}Нd`}(߽>5}%~nU꠰{ 6} |@[9�Qg980?J_Z,<xƍѓq0{:4A4))h+#IF0j2 iEp -7@CV #ϿQIӷ lWK7tJ4dL7vLI)s>ØF~ ]\>iNNm_G2~88^y?GMX\C8MUQ(\0{ &*R#4h2 I /̑3_0jgy[wNXR^vʉs*ЅwqYPuפT#)V>qWUDQ*iVK7jF`d{<AR Z`bQ+ڜ aǏn/oʾ'з�93%p/gB<LfLS�K~ӫBu]E%Rsd7Ji3) ѹ1ն7^b,zŪ˸鵙—Bx}�?s<'%:L ,5R VNȃ~ot[�ٕM) U躖ŜqRVk l2-bw5p=l@ =f`*vJa0n0{o ÐQqG1ӡPlpK3V-pc7&(2*(-[Va rof�KZl7B8g'1H�fÌaMg1 S yCdFuϡ!,UU!$b1gSDeN}P@4ts!|a&ݎ Mwu-V-�1`(E1(d�ƛrlR}BBLhtr .0H+%T+Xe$%1ͱIiA *TLsU&瘥 3Iz[t;hh;Gf O;[ ĺpV_{@$C`v/�cC B$lBd@RxUN+bźa q/euOCxR@* $غa$ƑZzFr`J8]KI'�t^ Iq ^'?X9#0Pq 7Ű�\< VdrJm![ kCn*%h:a 4P-ZtL�!!|/!aL o] G+ר@%|�e>yM>/[;yf�& o5Ń �sFZ%!H#x-9CTUK imB2!MC6(:= !@ƅSx<ts̜rX`T;<%ozYS#ROA=� 8 ^xIv&@Sp"_- H�@ @6"!'Doԁ:AggXSD6`ue'2'vW?Fʠ=CٵA8.]i #/}lSAwE<A~5)x4,ж:hZ&$w.;+?:*zʚ]f_%fhSː@ 8$$#BOSi {('> #=m$ Bx#*[9`[86<M0yonq#dBu?Rpsc!${S,Xۛ"U ?"A=p"F1bnuWr#I{!S|'؏ ,{W?aljp=<A!H1{c 6 s^l=q'\*ƕh�:<M5FD{):|4 A*C9z2Y"LP}OR3yOE_C $W60̀%/i Xloʉz,-6K$y�>א6P@nQUo=Û/ ^ˁZ₰곬$L55P3- $E nK`Qj=}#}<͘@d H # #|f/9]SĮ""  --3�^�Ү]ŵh|z`$#?%w>!mNߞ;u -vV""hCxdϛ=쭂_K/ڷiv 2]g0H dҒ!9#  eǛv?M99O  A"`$lO~G]ۻ�M* ?91>Λ+0*Ŋ  /#4l~X圿p%Pp~뜥R=5kǯUQ>s߯ikx?$QP3`yAJu) qrr>+Iݍ1J5 U&Bױx\ۅAa 0%nQ I<dͲ_'ZB l)9T#5(þ4ݹض$H?8og{>3,B `�dQ̦C#Obu{�K#1/yz7y8y죐63Mq"<G |Gt�~ &dHjBFXu8 ^ہznmW`ohE .[J֯. ;*uHb`1Ǟc{ ,IS(!gS-Տc ѸGLW 9�|>hK)|5gpĊguS@1x@꯶%9}bf`F`@H aBI7ο*�6xObЋ}zȏGn6S !pFh `Q F PPw:`�`Q9$RHw3�ܽ=/)6xŚRU;Q Х|w{Qx�ֺ 9J vv5:m.kmOdC$:7a�A,�_߸HwDmU+0krX K6y`!x(Wmn;x tSDzŤ\SҵC-f]Y]q@ U 7& HaZ[ 9lOsJq jK`)hΝSR9zH~ Bʀ €6p;e{@mwGT 0@] f pq�j(-I 80Bk$Rj$-%UqNE,vuGޏ"ڴ/>/i]AzFq�OA#>Dv *!<YYN?$9L�tD})U?&p8L#4!,Ϝ�h->E _x#U,fRٗкa@mۺO!` NGG`R!v(tϟ矜;6 !!CT`Gca U;ЉOpXf ^"1%a鏩% +7ƥ�ִY~F;^H`�oH!8?LJ%PC%^GK@3R~qLU?Lqzs s$g}"ƀ-nl@=$KQ )BJfX'l #JH8/p~F1x}hzҏO#2 ұ~2dt\!aug$bzY4 ^U h-hh_J=ѥoņoP ڭeĀ-rz $r~l!  #Y R5 bط|Ek<OHfO1_Mvo^ i$w, bkH`w!=D vԘ#ֲgȀcDLU%E15c'BO i|1&;�ư|]x눷` V*N � `*{cKZ70iKGWǀ] 19gqjشA>V5>a=OQ8T{E+J@X  -m:ߪO6&#2vB؀ at8PmSR{HМQh!EJI~}RjtH@;>>qeho`*"� XHo: |g0 p ;bD :B4Sf:rǮkIæ٧<kb7*]t{C2 ܠ[h]4�篂SDP# #h<Kzz.pp4s/b1Cx 7?%�$w뒷!_rN@;#iGv�k)Zpu!~$: gp9@ 7z񘶝?CbGK0Oc_E+˝JưM]I'%2"ag cMk]L Btcn"]'ڻq+/qmtl;lNY"#"H!C\ ;7*4@ͭnyXKvC8⬅K,: bj <|t|�x:3=1p@_s ? /�beS�}b-5eR68tHp>Ov=`F>IG΃113Su2_wbޕ�X "'ʢK%PXy-OАΪ8#c /8869 sNl#$`Yyمc4>$O0,>!׾ndG^U#’g1n ,ja \�5X2Kl sz!/~hjV*_ 4/*4 D5ta t'~qG_T)II{l5C]^..EzkYG q98<HXpZ<Pt }8p1FDI'˘B_A#sҌ ʜ"ABLmu<@9JTg}pp,TxyI@mA{:EuX R"A} ͥzs=-RM)Ќtg;!kA촭(ߵc?$d_F|lucGjZ 僜4!Hjߗ�XUFoE~D6i1ӒDE+ύ y3OGo 6$ᨆJ &,# +Rt"~ Fn87RV@001@iGT*PsPP.@yN_ 2C#V L%vW�8SY*HsjSH<I-d/3g B4!$f4LHr4Uy�GQ8qkN{!Bź ƌw6lCG a` ~� 'm=VT{6(bT}V0@d3f2vqSjQ_ է�T:Ѳ !39R:ǏȰ>.@n'wfx2h3aAFkḅ5Ŷr|z�];np3:�{8PB+o ">zB]hȣa)(){x3!$\b0c] SU%bu[�Ω\- 2Lϑ4^a=@4p.ab@@&@VF!$` HjWp}cJ1,OʱdopEGe%!" |:1G\vkw40"h)ߗG~(t)�οÈOD 5Mf�7vH�PCVu6 ѿ<l5q X:Fq̄ /:?�ϼI |`H _"I* WBJ IH<s+|XtF!l-(v+D"D^#tFZD@}~U@0.#d„^A Sţ$֒e׷DS�ӡ@@FC@CبQ[}�0$SR 6!dgMy d9٢~hfH<GE'#KzE*F"Tw(XV#a Ct㠙A_�Tg݆H 6gJ:�<ֻvtV G\2澏�Jb87xa뇆y)sWƀclx"`b ¬7=j\GC>IlAçB!HG01Gch?nCY72|b^ G@hOB:C[!\Ac,ŒP܅џ�o~^>Δza] Ӥ / uc,U�2DH& G!+pY=vߝWA.J̠0=~j( Q�[P/ţ'}˨,GV?<203*.2S%!@%2}DpgAYfKQhۮ98<%:PC<$k$a!牗rˤ]"vg0$�=4Ym)-0;MOtkvH- g"t6ҢmSկZYbBkǻL01eBsǐJ�,mK|+ fhp WQPl)C^XhrB8e`Ty c՞-WPq$ <! <Q(-�|na׵ưRN2P{A"NR#C܆2ӕ^@X:7e`GrڶmH/F4{ A夐G$J-^4Tߥw*躾k<>�/8/ZsKκ{vw73mۚdbN_|f �NAC fWH-Bfi1mך8#!` $vXMϟ0GXٗƺ6;條Zqϑ][:ٻl$g'f2d,J)/fyk׋ۛۋ݃`:1A:Zdb?xFrǓ4M]'Y*{bfN>9| /s~9?;{}vvw{{9YLv~~?0f2O/=;>4�8cJzoxanW MuM dñՏׯ՗_a!Rn`n5 €|h09!i$,(3Gv"p9iϿ|}Gr�_!7k///}5}<>>>m~nۉE04SfSX6mEt$wǫ/1wC\A5+ʆI6bto/v (Ue�Y@4 PF!AD_/2.0魵) 1ļ/T1T "@>͐/0T nt !˾˾}qf"����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/forward.png������������������������������������������������������0000644�0002322�0002322�00000020557�12061426050�021310� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��!6IDATx^?K@]z!I VcWW7']?Ty> |\Կ����������������������\e1<IKQHGꇼQOPGi' �ZJ$grr(6Y]izj[ȹ1﷓V3Jvխy޾^oi+cLq~հjBxi&7e96/UU=MmR+ɅfXMoZxgb#2~ΩK_Wݾ=vxh5 16̲; A I^Ю Oh'®x yDRH/HhQ3IČ{ue#dCJ}K)MBgD"~iX\Y.g///r٧P2 zGO?ϤP1 6 W֑\BV&[lz9 髺yBt&eU�wl̤35Aqzz\8+###,FnF.c�hbHpOdztS¯z\*MN@<Վ�!�x*M O%/\XtbD?ut<2:\J&Cˆ o&/8" $p\- Of̞Y/ԧc) Hc0`Β+gn$~~zib6JfnsCCa�$0"G:�.I2G π]͜37.~+N};8K~}{ 8QI( 0v }4ka4t]w;X4wV0mЍ.eaRij5{�o Iq |O0J> h,w;X4aZNyDo[n�xv횸;_*p W'PH$B:"rj̴minnnJe #Fc!Nzר� � p㎝/?ȴۚMirDyT%T> ADDxJikd2ψ_>Gunn3Wrlyt H<_XvB|~~#_  ѫd6o"5@j UD2˜$)@YQ9b' f}!)Jl4`$LO/,GwKccc'&Ξ]XD5]*M䡔p>2"Bg( ~B+U9_ _*Mg&'SS:"gBH�} cK7uh!F&&& ˆdww7ӨOD+ʸatUU*l A`cF�X!abC~4vzQکDʸ,2>9[}hfv:6N @xN4m[0MeҖdYXcBH4lw;&, E 4ewoolx̡(M�mD`oOo',Js\d"k73R @1h/sKÐʅ71N}0 ;v w 0AfI5khldUFbyn4vTݽ֮oo~<s}\�@Ô)]P ێ-Sk7wI.5i<H;$H[Uȝ~%RB*l1elYzݕ((VfST]T%.7) L| AnOOa㓻k{2M%lM_.pE90pUs^H/l6'llG&MP,Ӱ݈Lyiޥ_ywܕUUl.Hcć=~H Re躪уTuKR"Z^޻wOT*⋽7x/Xdf[AƄe=1BcqwLHD1d~nDzTGVjd?O4_Tlr@sqBVF<\E횃'_ a܄(v H!5lxbٴm5V DS0OlI}qǵBj4M01C4 3{V{T(ڭm5p d53]!P˗ݻwEV)DDc1vm1#&-/D!hq?/ 1odQsnZǬ=&ԓ"vZy   |ˆCJ=al4 lΡX,+kVUuβ,s""ĪZl}Wa!id{Er5` I%UBtu" i-VC Q!<2-UGJtە$YSMMMtGQO}C^$+þX3/8 t;*~| 3`8x9 _`;1DFŒXލF=ՐrL؂1?v=#- *J./Qx\ey;{"#tobYs//YX?`mW6zg i#YRh.'''%, Ä4؋T%xE[ \6OUKO?B';Z5MZ#T&٬fT͓;Niw^}ۿuQbBy?LcaD  O?rpp୯n("QIfh }MU[Qe{=w໏W�u�t{v,0dhsL'"ڨJD�  @)~OYëjL>!Z5TKA:/ 9˒fFH)OHYX0`XB,! ?W!?RVIj-YCMM"r8N{vK/_]�"e~}O *z4&ܤU3.QlvV++F~ˎ]ϫBKs]>RcV_cQ!S8�~ ޱ01~aYl#1&)bw?{%HP.{=8c~hk}_'%U[眅wuU<]6 #ɲ>  Gh_}b%;(4-%sL [f2p1-7!?'.Ԡt7x%|.9\v!i4%d(889c?Z~©͉KZʝVgX^0]seH1ly;w$�yX\ d|{aGa5/B!߬A�Ѥ=^T")MYuBvO I]ƙ#Y_X 1P z$7?r RB WE*eIPlMNW}i27HګQ3 _[ W/<0}|p{L� xGߟ*УFy-6ihq ѻT7vRkkksȫFc:Zx �sBL&L?~ �~B*l6P$EXQl4o7Wa0?״VkJ]o՟!8$%J$;~ĉ릉8N6 hxѬ,EdmY"@ N*'_$زM=,Kio[8s;wnAj 6m"83/s9sxf2 :j<(=-<lni\ܪZ㇇)EVZ!�TU(fa=< ~ Go6E{+pc)LYï( "qp F1y�ȵ7(o �+ML}[67�* O(�Ӹ o{|sxP( &m0^m# Jh e#axгLfoR@i' OH`2a6=sĘiz/&NJ+n8[K5"{ITG?t:4ZMgW&CК>:5_B Ү T&/tJE:'ܶjVl%}D8:¹~j,QY2_!^ً0<1@v).1K}$ r&U߃*#m۹O LSx2&{/�NB5T p~16032[xfNA {7Q rƧTRXkx3\3/y(mg9N-E?b~pE"|ɀLUˮ(�1r;�`58£h]AXwlf.N@:X?Mw֟ &ERY\{n)sNa[LNH>nX"'njxe( S $ɾ;�ZƳ�e p\K[^͜Yγ58�+&Nb\lcZJ-x,Xe\-dV'cvr}FGc]�lIwC22vGY\Y؀tV %Bb_NܷV}k�%.ŜT&p^Qhf -f$$~2H2r%&!w14C6]C�B-τk"r3OaLG@ ]%9dsX.Pp61={O@f}^ۙ:'oMpQ 9I#rGL),3j"ޑ@K Hkp>/ %&ca%Ł8"xen ,5g4{c K�B娀 B �7_Cz�$hAiR0s)@KDC׎k2I$mӲyc &ܥTA0oө&16i %psH /O ȉBϽO/,Zc㍗^8WK׮J_]N۷ou +x`lE=ȜcE]lZb!3i { W+*Gxp! `NL̠E pK(p2P^ex ?q)~2D*)JEo_ fb_�3@N @څZ! Kx$ЎZBG ~8t\Hԍ+/I."J1bǢX3h ''UͅprՀ_k%I]bQ94VkǬڥK_˟~ݸq֟N5'3 lD rhZ-?i,-F1}$(%BVW<X4bfg[:*@tǖ?lqdls Lrݽr*?GڵãJz|^z5w1~ @Ik4Nv0:2g~n$*=*-eR6.VZ ˹COf)(e:3~412|3ϣaqICiRX2Chdw^Z)|CdK9xK֏9۪;v+4ҁR2L&[DbU+jZ6}?0072ߑ'`дbU6-1B=?OĵĪ {w9xKL5jZS4ӧJ13Hۢ}RcRGnD|}U( rA MPxxh$֨2<oKE(#_*:S)H}ν(l{Bȍ`;F! gQqa-\>pD:ue mS$�́[@lټﯨjp=zuA8j+}b <l~X<s8q@5Tw2zOoi;� J.UBq䟫ka f6ibݯ!NJB910!ɩ#lTTMc hf`oXCǟO g`z`ЁaΝ3L� W'h+ dvZt.] 5{\)S(^( - a@qL~J!*K&ʎ.YQr񯯯pPHG{Vty$AYX;ӹ%@Q&wChU4G!'TH87P9sF'O ?.1Lߴ p^rl4Wud&5,W5&rց'jYN$lC׼d yqccNDM rZ߸ɟ*4\i~>uԿ[º͆?C[׃Wk A`Zt `.WQ8 &rx)U/*!3W0,5p@}͇A l .KaS4p".|@,In_1j:[-iL H)njbOMtxa|ltݍǴn9!dž_ C ahtb1诽6 0/ RblX X91bXm֠R!slY<Q^[B噃?x 9| 21@}s`|z;{ShE.mQVC%H\BIӠwb+(Y`sgn.Q>_ [{ | 7|?UyxwGY$>.%iP;0 67B~ܭ ('a-MԺ\b>χj}[T�Z!~Mʺ=K9M7"8F EdTtN (t(讵n2#ԙ{ qDL(p<�Au+},*>%.U PME&w@g1t BVCk$J"F\eص_:_o~<_2U\_~,_OL Ju˥gz:n?-\1R"&0NT%^EUL9c@}y3ãr>lϟ7'''HNWf^/+y)y 45m% OC0F굶h<]EPw)c֓VU5 j(rb/a0s[C"M~~ x+OqyIۓ3h-#{P2 <o%Z>gLNcA5'VE0P=er,_c;] N*� ڪ"oE}\keJDD#1^zc H4Mb_Am<X �ʣO[u40ܱve:U?x? l3|  }Q?ZxhwPIӱC4eXKIlEȍ'^YWJ6�5n<>pʉ&3o4f SKm CX`wm,"Hw`=I<!!$ˉ+](5Kx ;I 8{K=� ӎ>w,V*\& XNCƀ�cE~M,l_ݪ@EO^w[6T !^Xa3/X^Sͳߢ{~{͟Toƹ;eY^D~?.#2�7Ur=?>,���������������6�SQY����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/first.png��������������������������������������������������������0000644�0002322�0002322�00000020041�12061426050�020757� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^A 0TUP6D nD6 8B҂ta������������X'9.p�pb~wiO6[O2+gma Eef'FjՍ%-C~Z^*޷u]}k}1!ER%IYe[dْ_mEQ@h4EԊي( G?-ҷQuTrq}sޫ{{gsI5Xqqs׷{D[kZhf.TG*%8u^ L}+g-|i׍yt{J|P�EDVjO%�D@!.3^!o!wt'GqV�\}�z[�%3n_J>�lXNXw'3'^Y_.pegb8 i{�"<F=BQ� 'j `E?;#٫uQ :k�XOm�`-suZus׎ط A݇ ҥUƻh;ڴ->ex)K%wH^l̗%o' �kز`#@m<I -<WAI "XZf\g:D=P%14h83Ju<HѮvf mXe#mL ch,8w˭э>Y SË'?ʌ\BDѼuN옭C)k,RmPz{�* / &2:I\GrzxBѣᜫ/)xu;Xݳ3ssTw-7@I}�P%,msP ׿ F{/^<__> !UGлوfac~ZCA)y;x s n!]O}oܻ{6ؿgv7XXo @_Ng�e}~/><8ppF4#Yzs@`A�6v<0g.VEwg{3yײH?6L]FO+|WV>v�V:+G~lùG !q`iO1Fy9cJGV9cM(}\GkÅFFaP 2ENEA�9s:"cmh|ql,o4~!| ,+׆QZ~i�F|f>{76Cqף=C`jNa,C27]@E}!35W)5ӿ'Kw0ߎDwۅ'5{Q ,Gp\%$A;ш15A _[[��z4cxTyو9S(8.bXh:6 ēB0iK.{y 7g9-OXc䝂px!7Ѭ jnb2�hu5gA�L%#މܵ2BD|I"8 R�D`f_�`qmI5j{�hff_43Sﹰ nJ4lb!�5PC6?1|^U�8.:29KIy$vu{wυs (G=mGǠX0d97xK_~?4,�3.GǓ[/@"ӯ 聧�RR~SG߽3L?jQ�mnG팻̂DI b_#g^<C@�4@fhd^<'j w-w\w�XK y2(G"YO䑾ﻉF-'Tℙa-7@xXe@ +_m,Mfů B|@:/ϧy"_: т>בf|$j5WVsve2y kcWn]%H%pu/Jʃ4 ^!i xyj�@qi>_J_X|f �{gfu=>{ΑZ^ Za�m8=s\2 #J^ ;gJ)qr y[;vv;F.fm4pPWt9a)=ш[v7g}L"oQSvWg1 m)%17[$c<xytcG|O$ !IR9'IO1Y~#;^ss8{+%? ꑿQ3șmryhNӼO\|Ank,#a8 `de]J GIt Z._�zN`7_'=0w{,DQ0FG'Th̄ hV T5+Z: :.t\C,3RR@M&>zqJۓ5lւs bmJrǩͅf)JRK!: \0s)֭Js�"Dհ_k1(߷LOOShQ3Ut[ PJȄ}SJs!N|.E @j  L�Gc7Y#zlN_}940+N4#zWZT󠬓Z\EFo� Z"< ]x fye[;(uaIu>\C5k+x8|]uAeF!`AEኮW5p\cˈ25;7wssBC޾g@ )Ġq6 a*}S'܈C縪.\64x#ܹsGsW=2@@vl&n ZB�=NjtSJבt/]G=^sa\}%A_i3& ۄJ Qq5ֈ7ƃ/iboO߻OdY.7|~8d,r_iyZw\̱@hh}9m:  J!f|L*q/3;g8|RʁaB8GTUś,“Bǰ")^AtuGcxO8H4#I`;Ύm-!ID؞TN7vI]UU Zp`ǔ#ݞkZ( `:E77pT xR'^pRWy *z3(ڻ8Q >1kfJ[Pnop9^<@Z`yntcQ^i3}uI"չ<ma%�D2u+U#o�acXwQ":֫{sG-f^-2njv_1g>&QĖ| �0uբ+,|NzB3u�Wϋ9t]4oNF\ k 9Ӡ.uQ g;;:xz^ Z{nڟ$ Y2+xd<FY()2}`-2g&Ar8z m-'mU7ƲW<-+s}k-Zی 10��<" |}^VS Z֭_=Rm�k(E-� <aN5 :XC SF3b�eVFkZ Mqэz-#0:tx-8C 8WcjcX :1n"6� LXΧڈ8Nv,V.RI MT"ͻ �Ñ.v1C3M% JX[0ln2/U�y֦iK+Y@#bjfc9427İ [|�M%<LTj{l}cؚˌ6J'EA>y4БIW:,&jRLUW9u%xS_{ }]a ڝc(D:*0@ .Ӽrj �v;#FWyo45?HDĩv'.]V EW.jUAM*o<23GS@.�j(hy) zY ^ =s˫`DwP]٨Nt$v1WMs]@xa QP/[Mi먝�*n}G f&S9ܣm~L�\樸j-"bX&p{`棾 jAsp:(0ocAٺ�*4]3i3_=tq,ju݉w{PJZw$) �Rmr� M W逦�*=" <f�JkSN焠Z3 R( ~L@kM\`.x�B-cz7^8�;VWpy8Y F#r1Sx B'c y8Tx7renjrs2N6AK$(u$Td`l5`O;]r0@.@�Vvœ֚0sH[˷hmGRn mэ!o0SQ 19ͯV.*)^ƞjb$n$I*3a˨z!1|%Q"�\rB|Ri˭a*g�=^/ ^Zv?1[9JJ"G xV B/Hhyf^n<Zmpw6_ۖ0+heұ~^D1':IzZT#*EƖj 1k7X^E*/.dpKSwx+>i`uRc3Z軎"qA+Mȧ|=wD׮@3T-σ:F@\qc_ހKϝ_rl*)v:JխHQ arP+'"APB@ :^w쵎r,x|Gv 01@S�[G 5|-%NLS}ޥSsf_L>;*X2\':23 P9zϪ<�4>A�]~2yTj}AtA)U^w�xc";1ZeLqJ/IEFa{"Oʭ3ԁݥ1r{df^  !4PA#<Y e5/UQ![+k�x k7ae_d mDzt\T@ ، p6m8AE굎rygO*~訟q7W w!\"r"oY@=:}bmY% lq!s' F Zda&  իvK iod?@.|14,Mш*!ctcs Bu/Wq5ec1PȖo\p*kY cojZfJSwڝYy.,u\O?p�OO%94ѿ;H=�~sۧ%Kژ#]CWhHӼ}hiyUxK2.4 M~/0T�)w`ŇM E'_zzyߣtH+BȳF vz : d(%.N,7A2ؼL67|#rǡO$T dWE kx+.o4jvc 6P:Ϧ�ַ{9;sAKn0ѼTJI)Ȁ9p3 v$;˰DU5*7v'|�HϽj=j 7 _%�|wYK WH816R|4ئe1@wB#'[3ulq8I |z.+ =IXt}֧l}6ōM<=J-'XMV`c8.V�&qĒM٭R="pOB9�+GF#2fGD/xUR[Vy#X �*! .5i,nG'y"7RhAcx+\߰*OI!J jNg+\<IOk% oDLc `4 E)X,bQk9Lm\_k|OOA)X3xl~lM"J�@LpI<~+NZ"&v�"uZbd&l[oee}ʭ/1;@J")@�)`e>c< k4u\C=aߐ �@\&"{EC<E�3+ktqfA X/-�3@) *ϼ.6t,fzX{d >cn.|+wizècdӆaXT(`mKIYxdaD_ǵ-4'�`cB֡$)vώdSH@I)x?�LAV:O�DP `b?|ɱC�vN%|cmX<ytJR\s {PEa\�2 �sFWh ,T+ {S�ld}>nNGk4MaR8R(]^)_3DaoDy`�6x>͢T]x0N@4uW/[[ҫ]"R=G&0 6EA0M M5J2, ZIMj?"�Ko wZ vu+)ffi�H`-E Yz7b56v@DTS]n1 �c-Kc,R@)T`*XTL0Q l*Cwοv'zUF+ >Jq-^k �Uw9sJbDkmH6? pqotzpʏVXt�\X|Z,^"^< Z dr>!DvHWɟ8xP)<fNS$Xek:boH hcR{ܱEtX3Q^-R>I~H HHH2�[r! `򽍜O  `kq.d(21pOB1`n{CJ•,^xm�' WȒ'�G")|u ,<U�X30:EƝRg 2 #@hdWM؂[8^y·/Ia!o)�(S7?? P1 .FE"0?!Rn{ FrvMioH.?qRa ]tVwN� k&^YT;B|u ҨlӴ{*cΝsor@Yۮ٤4DA^q@ d y'F^F* Qb2?vM`-o7+׵` 1Q*�[Uc[Lo ~CG_w6企0O]4$n! !~POؾ>@g%LԽ=.skUmL=L]NS7b-Ek:�oU�{C&L)ԏax[9U�ΤdͲPL ehDP<tw- jHT AAA j>����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/play.png���������������������������������������������������������0000644�0002322�0002322�00000016767�12061426050�020621� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^ֽN+1a{77 � PS!qrHA2(5B}ܹyV��������������������)c E%FF&9xZ*Q#ETZJҙԗ R4uSiެjOᘶm'9eZ<T[ Z �$9yם0s*&Yk)w-`( .֋bc|Kc̜}3s ;Ezؼ/|6= X.|ku$iz9=>9KA}1]WKoKu6,=6fI > A#"$$ !| (9!!@) �3{z3.U]]K߹^uiwg]t;Ҝs;"r@- @;6@kƊ"ىg3rA0Vubzk Vh $0뢵s38-۷Սasccؼnsbi;$D ZŖ֌ �0 <v{'ؕ+O@ N= GT*|__I}}#].n隇H}BS�Ǒ9ghuuudG&ZO>q .OOO>6ӟJ=:2|ѩS'a6R.m@A*;ĭ)�rrWlٖ%ǃC Z=sϱg@…F.wuv~QP29D;\젥?c;ĭ)� e{ I8q;w<|sn;>44tرK/H&{GH"ufUC]|`NM'p4Nyy RCIK>2<R)wJP&勋1FwҎӱFX\-˛n<'G֤ÕtỜ+ժjpp=e3ϲ<~ĉ'&aޟH$^|\_8(̃@!Gae[̴Lf,Sr #ӓdPlxdX:$Lɓ''''O 'O?JuOwu%FaR,DM sC/_nJBi1v":5 Bv~{xsseqaaZmg~m0dYh$_u̷�8<mj5V)2t,K`~V<3gN/xN!>Kԇ)A@45!$.G8gaUe5 !m � ^ɵb--|0e5Mϕ+dbmm͡KNS� q1ib t+QN+ l}c֭<tSs\(W*oW̋yvl 84e^;"s|Z-VkkocH1'8agϞI`p"c_:6t㓓ch*I᜷I  'a�A38\Z擓SU!&!!t~ee%FKK4پ .UkmwP �8uR#h*2`%8>>(%Rf{ɉS5xC;`7y\O Uz�W>?ynOMNtaJV:8"5L jZMk/J,op,;Jc5VrlQ6~4M�H+tӧϰTo+ Rؕm) qMׇAHxTѥL\tja:M P/�#2H$Qq4%1L&]YYN՛Ν[@ lMӐ KE )#"n =:zAB5jDe!Xp CmxxhphVTV(Q JR<y0 r DSS#|sc(g_ך@i/q̒龖� I=eUC!dBg2rVV+L8)놱aC�LOab�1SqW9Mh\BV rΐ=xDHW)VDq۲j!Er}@(ޡv%-$L"˶!\NHf߱^xQ ᷿�x ٿE5EBh~;1FC'{hBD2blf3Vn+RxkF+QCQ0}kG#6Cg}){C;g۱iL =le#c4mzZc|ͽ|뭷[0 a"X, '::t$,UUILT2󷜦� gKw`.pJ!!3cS"PKt&iJB=hvʩJT+Ni'2`6yʘ!?att3 p `]U?i浗_~ �wAU2>~ @["Lt`R FG8JTD @ss*Q̓"$V O{ɶ0v0i<@l0~j68\J0}(jgD<?i%(7ciQooo7nCmbq5U9Ƕe9iZ$JĴ:z#<^{5=)�8%:Xi=^k~{2:!e$8yQ5Ƣ1K a2$a2 m%4J$sH<oiIċ6@hH,*;ڝ|;{|++�"AefhpA$7s8 $? .Cœ`g�- "յ؍فl�p6Y܊bZwWnfb9@lBX?{cG_ vf2r˿=n@Mԛ=͂I x*'MG <j as+S-A<ߊ/ 8WxR"t41jB}3qďc/Yv<C$7%dY|51_` }@fs^QFcHG !ƁA$4F1�дΕ:4BdL+|kaNDTKPnGO#5?ܣ�پI=.]n iV#!B{[;C Uek&Bypqq0> yHyރ69p:l#TԀ=v9d^,L Ay~@PEaC.ك_F=RdeH8ꡝ*Enc|=a <QUVn`RxPAvM&$(Lp4a @x   n_�  ZE+bIF  ԓcg , _JQvQ4 e+U<n QFL׵J9WAS 5? \X*kF6߃gLSj!DԈL=k~=d9c!MN;) U#cl)qpsy)vlf`-,|7peMƄp@%8W'- 0TUZM!dI+H:-m*S:xW6KVee{@Нe󠐈Fi[w("P"x "0=G PVߐ7`NP}Läia5Pdbaq.2|(lJ =_ >ECڏSi">/((qs OyMZJ-#Cvjʶsie\aB([Htڡ9,LDW[q�Q}@{< y F ݣ KCWۋ `G01^Rbֳ\n�P٩Tr`xw&!aJ+o 9EQ i21s$�i�R$�Sq0|PAu4wwzx@PUa2O<B[wcJŨlv]v3ګ醾mxZkk< ƗVeiE˶4j`nyNR;@8@(k�>#Ƀ?!0`FS@r,RXR00 v`c {D [<64xmtd$ӓ%� #M,%X_җ# !|�0_DAF5 qFuR{N:$֭\>VAsqδޛP4e@Y%Ti' ΫT*:#_(q�_V>OP �+ `ƨ $ј:b�"C*@VPY[o5͢Ѡ JU7߸i^y9f'_;@!~D {i0DcRsh_VAe3hwI*kky$}ʗ�7o':B;*_?SZEw^ ,,�\oLO}Sַ%G laaO} W{u̖grm˒0{ [ ~yyI:xM/uҲLa]XU3]]P]3uKG#W(L�9aj�7pCzY JGO􆽴nܘe8]B{{uT <|i̙sehiס54h evo6~ � |1\ߓ N#ccMx} x=xRұK7bz^v>x}+BAAJSᅭ"~^.a| h�7 1=7lG A4b<2zR�,[h~~bz$f _ki|Hrհ弜ܙ1kh[a296X\y5v=s/; S _>5Sc4l7 J:u"7o>,=wJgNQQ1?&|5 ;͏~n_z%Op'@I\v`};<j85VaW*Bg΁jDBgqpDpkXޣr.;Zރ#b*uM�X~ !Ә~ׯ A2 w WSm5k`.]?>?Om;`itȕa?wA* 5A$[ngqxj= Ͼ֗Խ6@<l״Z]G8w[=bB[ƙ ȼizWמ|I<> BzۊBY W]a{;N;#ߝtP#ul}}<vnۿޑHRieN\Soѻ !A ǁuxlmY4z~e7 W(^HsouTޞyx㡇ʻs8fpU͛7wi[S��AOzyE_ t2D #Yۦk\"oǟ{Y(:: 8pr4wHXY2�i�O| ?ISkB<D+iY6u2xdjX]FHz ܽMAݧj:*Y.9LPEEP{69ni9 )i,=z*ÒG4n#cglf6M21+(SFy᣷Ke۞roPgM6 @AU8�.9P| |ω(7TRijbMdnEԓ0X`%0~m3LMObxђ`:�b�DAOR ou?Ew/Ȼ9@퐬AY;]j9%/T{ˏS�nLx Ggjj�<V$ yl<bj2*T�aן"ElXƑ:nSf[Ro  ApKÄ|RGd=I T3 D*r IVXdr}n';5U~U0 w>;?{ȹs裁pN=%mB1i;7{ɫӧN}S+xYV!0l]V}]M7q�G3E"*j\&D=w.ym TU͂K}}s'Oʜ>C55^Y gg4DBU.Ѳ\{Vt+skc46g&Bz5}2cz,t`1m#1LӢIkk u8 :6=tqfř y 9p~*)�.)p�5a.UIuv~ eX+]kt ~hslt|kbbrι콅9_k:K jHݳLme~~}sN97�<~^~p:| >Q]x(߳CԚHx'+2/O(6_W2 ۧa" �(nu䩥SiɡՎx޴-@wS:?Tk+G^Au{ lZfDjG{vMaltJSɓ *8)�!܌%C:Mlxm v ^;19èqт쾍Zw��UT5Sγw޹IGױW4 P 85y"=12^v}� D=�a5+�.kvzϙ3?yg9w+"!f;8?/}#[/#ή7N^y{Tst"9z{?9y5M� j} P󛴂;3@6&'6&ua{wlC�lbښ_viٶXvhX5;Cq} {p!ܦ�@ 6QjH5r79xxD3Ynۻ]aý͕XO+P(GP!s qJ|?%v2ow{Dű_`�[=Rc#v_sRʧ/L9Νg3S [Uԛ"\OjW~Ȭ9;||%3;ť<#r  Lm�����������Oew_7^����IENDB`���������anyremote-6.7.1/cfg-data/Icons/128/up.png�����������������������������������������������������������0000644�0002322�0002322�00000015466�12061426050�020273� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��IDATx^ձJBaiYX %NERBCPDH-u m 5Nv ]BPCC4EK-TpmTPrx#qZ;x񟹝FyK�c|z9}�"\9 X9aaNa 3uV2�"AـT' IU�^n.Fûd& R_Qh_F~ 's=wb, K8[r8q41[ACL~2L_<qD>3ݏ;Ge1gzGD^usMrN^"%׏aa` HC)^zqk.bWl«X=tU^'9U,N]MDFtvv_|y `/+ՉhL {�aΉȳy.riYtC9&OM|$}}$ZQow<1}ۉ탱 8ŧ78C=TR|1daQqynNͬ=s&"\_xEI*56*5XF&\oJ|0٪횟®IM7f=^`LNcM^CĘ�sgׇ_8 I޳s;03z-=}h^J ƨCs;Z Q*5ẹʒ'‚Ҫ}o! ݭFEa�fPvI$=tJ~hcZgL�9,3f=;;5b;{:xBҘjbDY g�r̘N<0`}p癓o7ι S=Hi\x%)j1=0(}0nbSӘuSz=\E/;uF9 c({h`#9ԢgҎs8*F&N$g�PI=c2rM y!: UHܾ]3hՑ ɺGYdCf-b)pq)A9DQB sr'~F+0y$"m,{ꔃ#3M&T vI,:INR;Nas+QT /]ƛo.^egܽ~ٳnv AXpg#nl7a;1#:@f R $/F+`AV'Nn^$IL[~�Rl=O5cKFsEcgE+E&C@) `Vh6}O>x8NIb(5cl&/}<}}_QSq}ZՂ=Yl`<S8ZGZ. !# Ns0V'i:ɝutN^a=_<Mr4p[QoqWq,d.wO.{ONL F5ډv&Ij @kCD$i.Kq&]a嵢0D^dx{9efQzcH?gN|[CDGkuo- v4V BdI֕~r{/"09:%APwZ+9wKZ){D�|aL ?/*CnM{3ɡZioBO]�RW!N+$DR� QWDb}�$ 4Ltu>. QuaL�<$=}{ WSn-Jkq^If/ /蹉g/wRB=4T 4Q*ͼgLZ01?x1~{Up=An5Dp !\_s"Vh*k-h&r"m i^9t}h4q8ۘ[<EkK-$zU 1]/glWf?ZIc!N-)^tA( 2g!9'o8 `BoQYԩ( nׂDf S- K/vKSeRe$uЬyirOQ,i! 1m,dSszijBXBfqf @tUvwe0/Z"Va+km9>So#j)^}cyCQ' aXiδ<dh_NBOnlD�k] h(1Z+^<[\{_,덿x<+:P)bI)u r?[>Bx1)#,w歚`deU4#Qp�IN8Eg�o |e)+>njV ٿՌy#ͬ8P_B^2\U$V=tΔZGDka鸓I.L@y_#K+_zqPSקA&ee+w9?wK\j}-ɶE%;i@4Z&a$N"'7 p*'ws;'Q9yZBj5j|Kqi|ɭDPJ ʾ0v (RAPu4<?Xtνn\Zx)�T3;ӳ 0 �q"ޭsӭ.5qh?-Z;8'*8Yy~ʵVh1NwsD?x1*~k74"Za훛iSSMUi$6u8l)D (3�Q ?yK=eq-ڛKsgz矴5PmgebkwOPޡF=4~HrWJr!@pN{B ( 4Q\.κ׊^:tw^zkY%C}2Xq7~ӓ)>1eI-Ԗr[-bQ݃uHרkEt߸s2_r @[ែNve 9ZA<,;zJ"X0jB)IJeH;=$Igr zOXr]O&o^|HjY=Ͻx)V|8b:VE9hDAW˵wVvߓ}@N AU)i&O+0|"ڟd||7~q*ρo[߰zPH0=�rtѨG(�',̏{e^ﯧ3C3#uԎol �.Bi�ForCoRctDLKX)U-ͻ$: X0Y ͢AD$e=٤$P3Og/>,7V�A>u;}w>wlߑ;Vsdvxjh5#D_T�VVdl6 t*Zu~3ҰLo ??94Ak-u'+癅ɉDcke[7²?<3p"WW!+HpIЮ8Nɭc]�"ax:qg(6.~TϤhYh[>l'@dAd<9`".KxHxs?.1V6pkx֮=Sha"rUZ+=Jݤ;Hp[Hh&hD\r[, 8.Zg&H}GX㽾7An= Lj~UZibю/3 ~d<κ :20Ɛ~F,r"uŴ4}uڎ_6>LeTKퟯOAR7উ+3`�0ʎ2HEd]`!trBx1~_;%=-evX?  oOk_?TYӬ\MsV@O%ZV0F+"yN8ĵu}_x8r Pmp\EDnjwwc4( ?XϗdYW:W=1gl H*w&TOg X+.~5Ɏ<)1 H,6?tٿ�_Sy+>xbjֻA'/x�L2LV+V)HS%XҦ`0+N'>w9Dx%I^Od#ΜQL FƘ;jD͂�~):)JC2dA?- dݹ˕N[f Q-1:pJ4"a<>7zϾi�FƵGhYwDu2Q-_F#B@̥ X0��DC/=` PLfQ# KR= e"<`A2!k�!T/PeT-Q�s+jvb6GM3EWj �B!AU~)-qjQfbLQЊA*vհtQ f@TYsv6@wd s 踀?lB1p$z=DQֺ,w |Ð҂쮺o{#e$S��"RU$FY"RDq I.seqץ7;IZ Dܔ퀜87$).]ZbWۯЗ겯K- mZ31@=A)Af$#_#W4` sLt+1S P(�$J6<]�dt:,(C"fg0?7)z4iぉF*H}+@߽Tb.s]ЖUYBn)9 �7� <�\ou4\?*[@>j�gN$Y:电\> Cfg&`<�D#[N'˒ec月z.Y ]"-8`�dt�`�s�R�K:[K ?e*;�99܇FR{Iٜu眓aHD f"bƇM�?pA\� 0UVғtͮDDmyf/kB&<1O+1D ԫ|sd|Ơܛ\�, [XxDzw7~.U"2F "+^U.%u��ׁ�ȼy)N# SXBx92a NPͪUU 0@l HUEE ܓl`0&� EF4wr#"?& q y (TdLM`R ټ6@6mn&IY|X.`PmQ%hP`�$clG2)+ۆH>&z h@ (kQhl=wXsfT5Q&A-2h\= ;vX4m28yz{c�h V!PWt}A5ők߳}ҤПѫ5z@AB};_uӢ#kcP!G9@Ul8J8Ǩ�ٖYc�JQQ%�}iEe�<֞�<@x:</"FsCChe( f!HP+ƧU=8.cosjH/Uٟ Er`Uiz$П"؉~2H^a+7zeCT!h))oAdeZ>rq}$&C J `1)Hd 5"J++ld +/\�2|\>xOVdȆ>%`wRiy,khenEgIk)" y*,2!A뗦r0"3V˱ ^Dm%z?{ӕ2.qc`@ @W@$cYxs A>ǫW¨۪7Y \9VƊJ* ܻyH?BU@Ie H]6O�bĵ1S@XibFD .\XDO$\@94+`puy *10M CɳNu0B b_hc<R{:$zMj ( E'.'搔VD%5(�jXO9<0Sq6Mq bA@)�^>=Ry�R *Cjت_|ELrYxrYY'Ή[ WsE 4U`!"&V>p߹͖Uyp FܴGհ*!�7Z0}迳 _pα3>Lzy<rp5^<LC+各fzW#UX1Hi*\ _o�Zf0m!Eʋ1f9tݿsj/CIa�h$�562K:X{mvˍ�@^0 [h7bH~6$"ȐφVv'l16>62sbac0fA N]s1c1c1?q6����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/plus.png���������������������������������������������������������0000644�0002322�0002322�00000007605�12061426050�020626� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��LIDATx^ұ DD9TeJ9ef �e/ �����������ZߞkkuW΅PεHs"2/3^a1#d,B& -7H mڒX]yf/33UBf'EG^"Juw �/I+VUcu0A�8; Wxא8?ӓoHmBeA ." aU?xOk,nnmݝA9I��\6f_ /ݘّsL(B:L8_TxhNvuW=6>߄j^oKuc4eP5>|=?lY'5:,ޘq |5Ǣj`&\&u@�P;O pEjwDYz Q5!Zì8)˞�آkB0,pt*! M0u &'w7$E`XTOVw$" '$Mrd%'́pL�Zh e8@R3a'e.`/'EN $ 0u0� ín 'y0M][ ܂O@\?wW'f.` 'zqq(6Jճ*6ć2z"}=CKV|'|goR {� @Xx)�s?6C+3?P̊C<_�tESAw`7WUj3�^Y=BB7ƼEi  u~3o~yǣ1}%E/¹3?TVBS_&a I�+�nVfw& "^p20&:fjYNQx,j% Gt~B�PM�7|9=>3ƺl4 'G3rݘ$DNcu|V%g!fI' 0`w<\O6 ])B)P_xn �4Pqupt hk$ꀏ<Gɲ> ʢp 3-WMuPYʗx__ŭ4!}Ɯ}Zey P7l�n_oIbcJ$PNH{b=Yu ٺ?;_WMR! hYQn}/V Vug ^]BZf2(1UmXyCY88Bn=z@i$I!H@֬q9yur`̄`Vfn&^HD ꨡ$L>ͧ;1)3`s�d젶\kU7''xp^ GЃw1M6T5� \`r</@Ɗ%U' Z+ɎFw% V H!Đ|x)#HvO$B%^l [DGF3KW{z [Q"}ݴ u}?X4v|%ĩ@�6Rۓ\c5s4{��L})'@�2@q%V/$eʫub�hXֆUZ@82ߐ12Puai& {~Y}H=]{]賹b#Aw!`[,� WU@m I�0 �`ySw\/iigSK6!'ـ t�lC�^mrA`R:aY,VPK.׵J/@ @cK`>#'QH�g1Uc� pl`&'s ԧ+& t@Ǧ>h�C*M  2+HM4+: iDr+HQlrah(s{=�635%8$m7YӟLq`+Pvɕ`ˈsql٫VcrF(?YB9`zfJ`;Ƕ9AWo 's OŽGg+`ixGsy'�dKxC}B&"38mcY8*i1i)*[!2-t=1e|Q WJu^HS!DR^Bꑅ. q5X֨Ҏ,�ckO?w 3dbS䟛ٹq"nc̢I'},mh6yzS a˖tl�#<| p'egt(' n5zGBY%z\7^x,qFxVpv{??E#t9�^ !)߬wHØ=v.usWO0Y#Tu5+Ù[UM;YL.e(f/s;+KՌӀD $VI#-A6Cee)ۧ͌HZfc`&)KŎ rxdcf4 /q>M췚) H:e=S/,+u{ζ_dY|rKo`?�9Jj?L4�=cY_JN@ ~Wz}h坷|a{ie aKl*m&ߎ.fSW+8d*4|#=~\R�\o_ix3i0ϭ q7aA39Y8ILMPJ삯6=PMGUSb`n6z>o7 #0�z!J|(ȃAkb$ x Y9W{ǔ*%4 ("r"ȁ�4�fq` ?h(0�Y\�p$Ԟ�;jDB H$2`( |YUu3a3P@m[#]-Hi) t "YZK& 0$|W̰'$~aFh '^4 }"r.u.Qfc1h5O7<U_`[~>/=NJo`/ w8(Hzd:6BM;dF@( nPxVpD,� -R Z~>} +q67 U' ;ZPֵ⳱dq%J�γ<\,+ݑ�fGs03>Z`Y yXx?w޹]A9 xzm(GYxe=ĽR)lDT Z+wH(<ƾ>g %eC㺮_].mVc~  <1�@Zp]?}ˇ><s_ q?u4M-l(s$ 1_:KBGOa)X}m�Oߦ4 M@dAYyxk抙ws$=d!}8};J!/Qx@~ @6˳ }RIs,j.Eh`=<.#5:%>=0� #^�A�f3f%3%4x{Mהg]kڔ>›|ss7$?\G b(z��������XEm] ����IENDB`���������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/128/fit.png����������������������������������������������������������0000644�0002322�0002322�00000051402�12061426050�020417� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������>a��RIDATx^_]WZk}ΙI&3I3I1)-R 2cSsSy7Jiu!z!JԚk33g{חsa*myww-#>evڼӠ7R1Ղ�,X B⿬K.W1|kW VYrpL`F(0„ЬD67cIэ+;ߟ]xϒ-)lٚQ*!`641,D2 O-1=o]{t@N-ej)@<)Gp9� Ff6j_$e4� 8e ] /~si yţ?`lqCMCA:S<c\wOiUҲ jvuvR{\{9w࡜ٰdv]x\ɼy;TRtR,K9dO`,#4J1 UaJUcbL)@ �0 0Z n0nt5}?t}w뺳]^e,c,uv3'3J/6#ޞO'A69NvyjogڱrL:PxZ / =F!vCU%SMUסRAfD ɑ@)>NG}X[ڶ-]7) ])v9޻3miyDL/}?$C'w ;[ z `ؙmNT)tCWb1$BBp0+SLH�ٔR 0B)E$cJnB.R<AWmזv6K)v{uu_'b�Jt |^ƋςC5t-/--f_bfܑKԠk6e c&0ͣAB(@�x,0?~>|4,К3ߓC>p +E4*hM;f1c8 f44KG)蜾wr&Ϡ `s!@r"1:i'4JtӤUyKiJλ?;{"_yBuyDŸ.xιYgų_ ʍ\AHXm^mٟ3Og)yd s�$D@!w\RUQ;7 C<i} 4t0o7i&vZr7Q c3womKv3Vkh@ x8ˀ`q  `',%`Vp0YBݴ|kߪsrE{ש[j.x_B xPi}?x4|(1x_ץl] c[n`w_V~*<wk+"-j(БXfy&�|310㨓tM{yIj( PMUƘx9wϵ 9## 'j>8I$iA:aB,s*V, 5/Ʈ2A"ul9Fz}R)'48*M"Q4̒h'85 2sȭR:(7H�fՇ kƘǜn5Ik//{Opy>%� "KϧYSַ-͎X<>lcU]]FMeq8-뜔 x/P+�s:j\;KVege+HaHIV #s<coP% I@b{R;xܨ.Zʭ- @ħ)^&7 Gc=L\!%/K?�q^vTIceRU^*HJ+ɸ/cdd L�|)oFKhH&ֶNbYg&Uվ61JM+;i- <dD:1TH%"s9nje;1^x~᳏//h_ܧɤm 0/`/=#jW`o7bIDS0b.spr%7Ͳռ¤@CdO !ۈ6׀t"^&#]/:s⢶{e=M@@5U#t\:DFM%Srx�Ra4d;By`D*RP 3ټ`GJ4͋h wϏ PZH>]HW/latWX@1|g3qx/S+8OfK9<.nHJ{F2tX >Dh<Zf (KmHޕYVBY(FZnSIX֦cr?pY`N7ScB& 2J#]ti+L!{.mu~ٷzIwtR`]u/nyXy _ x0ǥYv"V!P&,qͰ5Ǿ<; EFg@po�{�K|[j$"� dcSip--E %$0�Be ׌B-7'ȏ٪Z<]}ǏKc6;଻<t`~b~:ĠlJ򹫦`_ﳱbUYS3"^Yw!ڪzXimwHхt9>\dd |H|ovJƧe}:czi^PDqŹ5Lbρ(U$5!x E~ P?ɠG<IUJ>OJl]6LmAӏAr% ˕ΝJNБ;=7F?cG8&:B=n^DjA \r^m(- &7;$]  9?*aD{ֹw ~닏 /ov?3IIS@Ӄp. R와 X5Ui%dBqtb,F~nl-V"=^FG?CȎpW!}DN W"nU Te'Hӄ1Mj=F^&x'hY||x׻~C~0>>HHmAG[G#/vw۷ѱlEWbc&3G&өSZnV3޴C:dw>`㻃louڐAO&nNKmJˉWRBrpj;ySqh{��SNu[g1;/D huwlHJcx{ f@ȇ?tdz-*k*sI1E.:ЌC_jʺ>rЉ{vx2]d)|D:_꯵@ ' 2S;p,&rSQYJL"B$C{7jxƁ<v >֜.% ~#OKq57y5k2lܠp Mh"�{tt]/ǡ^  "zV FӒzYҺ[ ъpmzΆ6OӬ$t),,Цt4,(܍Q]-xS?/-?&w*ZT\ƥ{C[#3p? p䗋ה6ͰܯGRzU=b6Jظ?iilk8-_ l1-k;#䶗!X#A*/6(|jlb*RDL'AL˪:7_,(Nq] yEhO~5__^0?V Ls"_G˕VWlAIP,[Q9څ[MUxYYt1i:)##EQ+pU=wNFd堪Iʺc1]Dv�0 I+LiduXZ䍯u \h&iekyDeNWDcG^Ƽ6f'*ZS %� } ʒ /%\?hĪXb_rILqecG@~ꆾ3�g(o-ࣺAX+aޙ?~jO1.T�q%X i&^qrnLq'.w8R$ačgݣh1"ml,-rvWc5>$"\ŧ&#< %~yP!J5Qq!;LC.,r įHUeh`)ShfU1+?n˿E\kQ5mE ֍O�l c?Ȯu�cV`F~hɗl{;'{sq̒=ӑ5û,gĬLhLb&V2I3_E* esJzWI\Bry8l /9_\s)(қy {UU]rveurÅSZHWj<H$ jYք6S`'k@d$IyRp P o[I"RRv>-y;}(9HI&|,M>ΣBdʀ09J)e%1KxG*^tR?}[?!֗} ZRrCi.$` l/|h`jtdN)T8^Ue)kq� AଯEh�+l Zj9UtidSU@BX=~Z˗~os0CxpT~:C[<^_'D`шDy&)U:彻I޷?OuϚ�0CD'ul ok@$$>yNO)0"*rp\(4  *ypR+3&a߰5c5Zb+Tdm3=/p5OI!Y72f ^><RMxEҮqP�vSW_cU@~EOI"i41};d)ޥn/?s bq+ԯ2ܽ lhK_VVǕieh:ʡ vg`Nb\Y d%$r dTW&m# ˠ u4H}q(=uO!�:_J~'"VD<sL#)#scЉjkOR T <ƌs_<0>ҋ6 '+!ԫ+$ .e(Xxq[5V^TʉCeP֫Xk,ͅ'l? TXIdC7')Bȟ"ۂ:1O�uzLG^w6$k`UN,a)WlhEX'҈fU6]8DT)A)Z|I<gB�Agk Mtc8Q$tj J/F XDZ(b .ius}o%q,r9wO88QY�tH[5g� -խk?πS]0ՋҪ/7P�\"٠S2�q'"n0pt gHZpl IR,2 $]h &�nKI1O@ҔJ4x[l&pM^~<kh)u /U[$K>B~_t�Kk5 !@Gk7uh؊5z�fL�HIQ'1^&qdJrC$0[!Vub{G0x+feseJKyI##'4n 8)H\<ަL El}I?WƮİ(Q%Q߫= ]&ʏwacu߅%85r>$wNGhB+ r[Q1s ژU;y6>:UeZ;Iӂ jibk}MdcĮYf5^uq�PhG~?3ѤQ4<:I<m%䓛0d{ㄵ2jpQZRTs㻧8 ''xnՍӮ }yYѡ:  =zdgbR\WKó�Lc,Q%Ƀ8]tB!M2G1R9J55T9 1F%TSl Dgg}l2ʝP F;4L\6F(ɆJ;Y V.ևD?@c pJ[a:~:q\NZO0UCӷWH`^L7Z/Z{TxjlX1djAƒ42 rb{Mv9:OsBGQ]?9-X#WqSgkT-ellyUkQ˟r ~\[ B: ]0Wf%#$A p;M%�zGB"'uU';0Tn=KZIsMv 4yx6r_H�l2Ҿ v9XC.- FfW!5A8{�$C9 R%O#] ʚ -)jq.e7>h@}u49HQN9MvFc2N9DE03A'"CM*];r ;AgN �DH�W #¢'P%E'+�kϸӑ{D'6*Xg}IA�2@x7< }訣}iן2{.>K5JD=ƍɪ<C:#9t#=;/BZM!c<0L�<kTRiWVePժ:FmQnQRbd\Epˇ*v>} O&1\>?*Eh R>6ajymwO- q簐EmdHRu LsNy&JTUByq* X 9:^�M )NR# _l2G4-Q9H;F$CSww%ub-<I-]躱n8ngyJ7g巘5{wS0<CV:F*UiF%'ٽj=ZBK: N@,%NȼY]w�\lVma@8[ Z/1;o389RGNˀ.8is))c|UG9pB/ĒO{^sh\CN?% `赈#ъ"W}nZ]eQ?ݠ}n8E|o0gXH Ў�'`e_wx /uЗZ(n2@vAUॵ 50:h ũh?~O�DpWj_M. ,s(A#VE:Ѿ@J9PR-RQ]+kchGEVtmbyUtYD�#љ�K0sٺ*q 5�vRF�0y{�ir<kHHPp((nOӪ_<'1Ӳ| >XdC2eNcyV_< _LCX=*k!YV͖>Z6f^( GW'of'wLoׄ|i#")"�WS)JYTI#E(FԎ `8&qhhD&;`[dz?y.\I(%>ԟ1[jk(�`_ow٪1ޟ1 1X醉ԉoGI/db>)b U�+; q'Z^c)̱uI[,fۥXW`:8;5't;Έ0@G)AJG:5tDk=DB΄P?˴ 5:Xgכ8x -8eԽ/aƻس@ɥ8a|qj@!YkܷvC3IzvIrSgO< ڻo�Aʼ%W1W0zXK&uj( O> =yaigu}c ~Q I � IiM |J}cPO KwO>*r #|@tp$8KhvMZ0YԔ>+Y3iP�*z;Ng@U;X9.Ls�1;ỳEʒOQ,ktkV ic$g,X%hA+>]5 ZVִvPX,V:Xum#cJ(zu`^7V00ҙQ?4$NEߋHVWs@ffp[vEg\ԩ&Nuc.g+ГB/ZQi$1&oTh-zE�s!<QF luNM=\w07 gĕm_ˡ-D;%|ـ ,K}+- +b|J4I-"ϭA7 8@/BOYKu(FVd X4sS,%2 SYikZЅzH=-$:TTGթ ~{Нֵ;)ƒA';G " Z0`Q@~T'hZR5}P)O9!iC^XbȆt4eHqk\)25x;uuͼtzNVxrnjx .wZK*$@jP2b*W]Ip8T�<#8ܠޢe"h' ak#peG17 S�>ѹ>tBtъ3$9@Yky^1a[m]#g5@�7 W3:SÃ;L\ɵJcH*ԉn% "n?#GnmE.G*){H@ g\+p:S`IOd w`QtN]Rv \0(.U2:{1ҟ%HUbc׌�$ZtFϖ=ؐMCC7|�`} B\HXK1%ui a*�O8,@{zaӪrוp$^/&5V;BVP_R/k̍׵Ģ -"#:Cwv d,C0tJRAcY7t.2{�#h\;$8:*"iMe{5riGvh/jeHԪ$qRGꃥE_}t.g қ[d&B$-d$qCbW(O'O�R誖mAeHtCO(GIi-=3Tk 1hеT=Y;F@~7 z+F~DmTZmg[b!@[y,­gb̢l4- mM])8&e)"b_һy끓l>s eG5H8W:RCYLQ!Zq_ nC\ G9o%LY8&&*X4�N<Y=:⏬uSZ JJF~D"R)DI-- AXFd_~rS9N .>>fDIU Zz/uZ�urݾpn9q6'_g"^vߎߞf>RRU#P ">W}>^EJvv3i&h#w$ cPTPh=ˆK!`k #jZUg bH5uHO4={Ob'xNp! ϻ(ɚO8Z<u{a[_>Ԋ #r-#/DeB^!Lp*|`"lXAm/W}Ӕy +n9JaM@Fyy&n(7M]$.o[缫.\%G{ SU;j(@�dSHQF(+ <Ra~Zv \1T#K) ;}D8ޗ^=Ĕ6<zߜ"#1JyU+AR`<H7kI/r[XŌR0Mq:�hC9Ύ�+Pi  ,q3gY%c1/^+fbnXVkfH{G{} y 2/"k|u%U*Tۭ]|{3 7´CG|v,43]>@L6q>FZ8pi]Q$uYW]=ǕJTdc H2I#32mTs]vUӱoHK�Q|ad]@IPAtCaGv4 {z3Q _ YGl MY->Om'aI懓L Y@(G\دU]{t2gH�$�Dߨz\8N”7N@ij#pfXYEIxσ$G ¤" sTEIvBORj#( CuxA "NThI舐�0,!bXPsYg-k@EAbԠS&M3n퀈@+бq}<|v>(0N[]t`))\DT>'"X#UJ7#(<#�TTݓ.+c">^be'g Ȋ> a-ۺnX@6Zk^Y-ggG�ɢƚ#t ?>bէy Hd/!O+nim̠YOҔ}O>�ёiA%]CUVIW&šwsTPIM9pF #�NO A/y&ė'v5IeLbffj M _X۾kX!D`&;VWX <hZ1k}~,49~PhR#w`k=Nɭ?VluÏT[�Njd2>ƁI\%wUMxKT gL4C}%**2}[%:w)'33;7^e/mEIFnX몲@ow3S�DԾN=~UUj\d}*Բ4M=LQ&.KN:|@u" Ȫމ=)Y=zTioY3K$ml}:j=B.7du|I[%ld[yN G^?hêK6msxs: �R88br_3=B$ՙv__ *ǭs,옶HKƓ o3LոhR740Z6tzz-mȠtYBvfJ2i0;$D {O W@8St@U΢w0RG&EZQK('e6 or9P2i+9-mh3 kǝ֩ۑq=?{ 8@XdZZ.&HdFj0Nb>Pוf[=tٺ֭$^q߶ooJ'd$Cv(~[ 'C 2s�.' eW6\#\W6FXD>c0BiFT'yC9 hjUVH gM& p)pFvOJhS71/lu!$YAQr{f|{v5emp׏`dW!a1u.hEF$>!nXqVڇe �FS-3tplOzFwLKyL+<s{$˶T =Mt~`ƞte<d3 :wJ6ͦ?dѺ,"׹̗s#lu֘C �eaWnmyqc􎳣Bgɹlr()%zJ%6Hcҹcb�dBDK.ꪗj.^k<ӡ o[Eqp>2v~Pa F١rb pmq 7#} ؃X4eYx*W3ۿ7c~OX޴Xc 0W�c\Iހ!n@@7ݭE2,꤃n֣uk\k}Js!us2 ñG�j\4xzeCNWn[B~Ffs/?Wwy+85J7'c0ň4auZ/Wַ +Μ�[zZ88_؁q9IPUytu/Ʌ5[Wcfx5]F6G2lemZ %dafIȿE0.ΎeBǯg.x}5B7PphchW7օ'+le| .Dw5�Fτ�=/ܰÃWs:i2e\شC# m-hOx.ֱ؝[Gn_![̺zh^>U nC)ƣ=|oeޠ ,!Xqik<2I}u_,/|]ԛqN!ðR,qfɻݺu~|qSW/-c߼~5# wUY^5{Adg{E0\r |Ä0Bn 3QRmqq3[Y'7B?d ۇ)R6#̴,u5Z{]ѲTG9~(Zo6*Drsf-Ldq~(nգu ~0uV yXƺ߬y}_P~ړG^? ;aKJg.s ^e}_2utxDG7WG�g/F 6:=LzE+lk:YYL|DB7lKgJ3VC8/͡6Fy2՘ ]dm�;T>>@ަQ?NwÁظ ||y{a[ xh{{[Lc0تi,RN\ݠ2++Frpwv͌S.5(%@Ym :JJi5![H{h@å0F|7Q?apM#,ylԓ߿iF@pcA$&ϛhܹs-,}0}svOkX2|_o 6Oݻ+,)F@ GGq#\L-c9Q.伊2SgI*{NXZ[8"x= C@=] AGVӹHs\ ҳѺjp&Ihk>xɎ`0u:hZxxp wwã98<Rw|V>Ew#/C98CVU8.�Y;{dhKRHmrLS\ nayV6dkx1E<�VAOc~8o* [Fv;9:D5r|eXl^ۗ&rc{fc%FoVuV~ooסeoqF<J?u_ϼ1{t7~kk>Wd&v־Bku?tH{)d[stTIe*Ex3.Mp:\̌^A6O'P4Xw%<[/Ď@qBZ6Z Bm֑0jb|ѕ&ŭ#Oh:2ʌػ~:D<;2ET{xãwW_u_<:}_~#??lK>%t {Rr t^eCi)4oTϑqyK̋nY'E3¿H Z]eR~ J4LP N'}`7Al>�wDչjb@2ʸܺ:.M9*烁F.l ebw%C���|QqsϟwYl8 VToܺawyן}ckO+W}ǣkD T|ՀdF)EZE8u 7WnS:[K6YՃٍbtt,KZFn2mO1]&v6cU:꟧S +s⭴/NZL f=Kd=Bg"zO1^g?歛bww>6_|||tuU??0Ȝu5DfTY t? J|̾[ܾMoo7>}vߘf{ p5E!PޅB1Q%*F*[Y].Kv켑!I YI!*_Pa0H65{ΔVFҪiTg8l/ٜj2 |Ow՚3| {0%t\-WiYAQW 8RGOG3\{z흟{ �uoyc|Z8ORPz~ؑACT$7#@'c%^jFDF8\@V6 vQS؀(l5DcM낞ʴɱ2 P&"HU^h^\oJY v$>M"| R~wd�fr*8 4K5 fE4ע ?TcrbEr%bDЉ^kga>?8Sϴֿ%cTP_n3KV˥T윓0UxyZ7 2y=ԋѥl^E!*gM8n%ܦҦUᒦv=۵T2!\�NP:XOGQ�ͧI=(M&IǙN4 hE<t`y7v<!}sj4s& PO&uϹn Z i<gj 16={lJ1/?oG# K==~7}]7;%]ԓ $I|q_t%ԁ[|;2Rbdo=$4@fur|T'`@&) WT 3,dHxAHRI\n\b~W 6Ib&H$R>?v?@LyɻG14Y{Z]<`k qDn޼^qs3|R(l."|F~ xKc8<8O=~�s}LaMYJzw#Jſ?�8~j.Q4"QAeF[f9�$4YBF$ȼFmRjn5n4 Ië{Zan&oCLh5/_u" c(1<tC kJ\BlKtR.DẠVEW|ȼuxt|xJi E%=l/z{wx^C8黻{o3N׽,ohwM|\ ʎv bI$M* #'X;�a۬lMQcrH^]KL?:fiDk8ɳDq"=jmG+^[E![7nG}x:(1yk*V@˫|�Ns(3xKc/\)pmF}siAΘ�zw GȠ9&GZ57@z8ہ8$cT=8(Uc Y߆44q OIΛ&!. x>օV;dpXy lgNdhkĕ dw_@wDi㭭oާƌP_.*fwt^ mldeA1QY/q�]1kI|40\?[ 18"Yk} F+!;5sle rF, B �'y:ϩ$죂 ZLJ6->3ˢ)+ @ckpbo>_U.xbUlZsX&4\cdzĠȽsAN'uփ0ѯ!h?x#)_*`o:ZR``PRu(Zlbm ;ihW >\__e~VU/']hhC)# g@.3akwOw o}~t \�)ޓQDU #3;jޫb{gFeTx<4YwE<SXo~Ww R#7k̿Moeɶ獟RV;U](o,qN]bNmhöAWKjOѠ#@t ;�ǮQ`KguQ<+S=ijOyM#u=K&2: Sº2{A'ox:!C ~e *TЪ*1nI gp>Q@D{VIywp/D" 9RZ!Fγ4 ,lL9CKReOr�˪i] iՂ =<v\{?av; ooԞyw c�o. D:qT@;wxO<<M=!+Z~ï~3Wﻅs,PJ"mow{-q`#8јq P]YN[:VT_݁3Xc}a仢(- Xׯ[jfR[@kS$cR a<]�B`Ҵx(L; " b6ԥlAS270 8Aw54<!G>/{Q%VPJni'BTK(S }�Hq ՜`%<HiVx nDı0.9\__:߃\~_ûX+xo$\7I:EV:冟f9d$ K/ 6\n׽Hɟi{ v};̇OD:ʀ7Rl[)Z@63b*IІ�NL U> ݱ�ȺQ|y*+d4˽,I/iHB_f zh%;ЦX{H"2x20RAD7%\]X,,d@Ro^rEP5 >) 4 @s@ 8"CE7}OGsq^袎eTK�x 9vZedt[£h�Up�,|ls-o߼v{WFEX.W5q1s6 F*�V?/7{FϟrqY"�6a#v*Ou;Pk p<noܸ!>ǏRщE?R%I8{Sa31ae,*=Ǟ:hWd:-`&YJ2÷S'\켏l`ex"8�\^-yŝ[}ȷW5N3 3gB>zH;{G_7((a9%c1f^ ItCqtoR x Ͽg3V]kq$wGZ,;dug3Ȳyw-t7A<m]Z-[?Mʦ]sPuQoln}!E6&_,Wa&gE !'B TF.޽+68a'q5~ݝ{=qk퍛3ޤ$ͣTBH Q?�D% GRiU>h44)y5s8YQ®",݌=c;};3VsMLy@f.uI%$'�ٷ~ K•Օe$k� Pc|bX:�a⢺0AhΦn=R$@UtowڝwOi} [7oIS>eY�0θs ץ@Amj613sfdݽkP%8zˇ_ ۠k`[VD!{gYhC`N<AsU > 0~R }甤JBaI?j&::Ux'A /x"\BI($۩\0?rGHLU1 $I=;0 U+�V "J+Jg=03bQ!3I{B3cd]>Y#o&knQq1-A{W?,y7գ4yL }%m/MN JqS5N5 (~͛aO K)p9m̃_>SG�*3#JW_`UE ^�TdY?~qp)Cw`edGwx@pb%hYʲFE1i. iLF:%_ p 0'q5J/x@W~-�REB eMDQ1fA) qL[ ;uE]f'D=jrG̱i>JFV#/;’�E&:(C@u/" T 4Z�Mi!x^;ȀQsgLWWWHqwf5y\S o x tZ>@p@8C񗏏 ϒ' Luʘ@%�xïփ3ܼGwVA4p -ZwLTUv`YיE elJOa cmr UйyKC@j "I0u< &(.[7p%2Jd�Yb%E}!� z&bxzW+) Y|3d ", Y,6xvHwP1cs-}�K Vem%ċ!쳍s]~NQvH{Y4)`RbyMgd:y tFrTW{{;r VfUO1[�;}bT,6~vcˊw}I#-nOVܪ[,y<C.CsUP"b%>�3S1Z�~]˜Ux.K&>#[ؘ,aMzpCeeJ:x< q tI5$IĉtgwjM܆گk=o3?�Pd0 L$#eB+>Aw@ɬ !b9zi8 0'g~\-5EyϚdC?DB`V ~ꌞ<+Khw"0֠};5YŅ\#jQ$2?K >_ATe`Ⱥ*hJntr:d� y$i4ETK(Xi3`<�`#�W GEV,vb{@#e@h9X=n(2%z|6yZnʡo;Qd>D60N'*kK(c"I"gM #Q e1R UFn@q]GJ�70x'6&I�kN/ ,C4U@[@q%W1pA <仺8v`;LIL'7я \OM D 'PbH !} |yf\O>)�Pl-p& 1/= v-C&X � `yESW  �X َLO $(ӘQl+Ӫw#ڜ����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/anyRemote.png��������������������������������������������������������0000644�0002322�0002322�00000001007�12061426050�021262� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^OKTQ;ԦE4EWhSm+$Bd)-Lkp2@!hrUT*[ ZHilj4CgΙ{,BL>{8qDPjq Z:w70c=gSoƀJ)oh3=%XD `([7)'j>+c }&v1z� Kˆъ;3c ':nc2B87]-V 8k U|k.3V|&.t1.4[AfD%~鹑AN]탨|;7{^~| 'JSy;Ix2҅RJkfIgn7(gQU>[4%)Zpj%ӟ>""%$ h4+]zk[uܚu|VV1 ����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/������������������������������������������������������������������0000755�0002322�0002322�00000000000�12100017560�017042� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/down.png����������������������������������������������������������0000644�0002322�0002322�00000002566�12061426050�020534� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��=IDATx^XkU?3_uMB6R QP>Ԋ PG-(<`_RCZXMd׽8lR!gL~ws"))x98]N0K;xy V&,No[d矆Ж�N!^):Xr~GX4a."gС<ϞM ×j� C /u/Γ`H`5\�J)o 7a)JvFl8eA;"pH(=΀w=&@ob`7^ �hK:GrF_0vdYD\or3�0p{_Qn�޸EjGs  Zl@!el3;Ɵ? ȝawTB,y!8PuȤ2S^o 5kbߓ}mK$ƟfuBE]h3`S j X `KI7&RtI:zș]O<<<<Rh9`$WhU8hYUIGO1l*dڕSGJeH|\ >y]ʥ0;%SMN H#!%yPR*s§k >YW - Yе2bVodZ'K+ $|02eS4".L,߻8b:~jV-ƶL)]/9y%dbSL򣥥4@pkiq!m( "TԌU-Z?sqlPİ ii�K*2WO0'Wet:lK+ bh3=;DANq>Gyj-xǀ*ˤ\R.VXJZ0:~(<J/nHc,{MQlUn.~8V}LݲfVKW*R"z|m5eSZ.,ɫX-a[mTo$P9!qTj%5u8I05-1tE~MN9uBV gPmCv{]#�yed!~ �@jJѶ6b\KfFhU\N[Xx*4 $rt ?;v7AJFuqG�7Z|piΌ6ܾc[̀<`'i~ B>njʂePE�9jOпuUBӝ]Bh;c5*lydv-$+#<J8+ݨ4;h/ }eS< I(*p����IENDB`������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/fullscreen.png����������������������������������������������������0000644�0002322�0002322�00000002666�12061426050�021730� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��}IDATx^{hSW=7<4OjtN8Ɇ†؊M26L 2csXsscNm0 c+6ZWIӤMwororwDܮ~˽\ZHata-+X6}DewVem:tX0�4*@]9%Z.-U,�Qk,z6`ܼR �{ Y f�,7h&۶* 1L+vW*M K`rm8�.Z?*9�ś5_@BR& "Bk䟓)(�N`{,Ji0U$2C`Q8T*j$ 87 T*5| �yyy@+0!A\~5M&("!t<J�H=G�h2ڦ3P˕�,(6LX�R,1�, zgCE llx;jw cT\FSOj6n� $BU'ġT2o9ַ @{6g\gmIty]n(0(VIĺ}^˶l==Qd2 `#.SE"}y?|, jm;ﴕ335�̸p L#\(kq%G;3AK_ޘ gsr-2I8c048G`H H*MkW{/ dU;mT :&ΰ#�aL$hD*-c� MfnBH B(QA �]4$ѮxYjճ9 n*^>W %.vJ1<ӉPss5S~x<c}#aW gGQ{NJ 0BSԽ&s~l-u$ 6F>om$0 V<w44Ob:ri2;I>L"'"HLR N %r%X B!P(e?�a̫cѴY\#@rFC"/H\kir]Kǁi�t'GN>L&& Kx<CO 9]s2S�fi|IOJɕKyfrɈuL�oQuQJYX`7h-zUBضnm՚ ZyǕqFzݯ�tWd_ '�̀^ x6c]>w9=n͢Űs^%B6w2; _�h^£:.%kbF;o]?M9G) -`~jQ`+>����IENDB`��������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/stop.png����������������������������������������������������������0000644�0002322�0002322�00000001551�12061426050�020543� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��0IDATx^Vn9=nf"ȉKBn{L $~[ Xv? h7 !0 "3va)7q]VzU*6GBBBBBBBfnIb@Vݺ)K;f/z% P{y= y||r_N^(JWZJ9ymc  jy G/eYOYh4Dt>~,ɽn *I'@da "3/m6Cߣf7q63Lf M׹qobl%k ďWYl"쒡!*=Pi/y/l +S c7<&B݇lCGJQb$Ho)fD B 0+v (uN-!njc XbϪLfPib Qe%,=�1,S f y-[J6Ȃ^2(꾳4T84Χ*:YADIt4HEyQO!dvO'@P*FPJQ]7e Dmwr%#3㹂A$TkMRLPlP^?3lMI0i_`T( "o�"/dG<chgBn<J Nr;")s=+?L&dչ^v [5g4hbh174D6iDr>3њf)DNBӪKЕ1W۲,R֚l b$].`����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/launch.png��������������������������������������������������������0000644�0002322�0002322�00000010773�12061426050�021036� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^Zwt׽jZ+j 1R�B` ؀A$?⸐1ΉlcmB98&Em ȦtTPY}wgGHyνڑ~zsg d)BtNX .]Xc!" oO@A!z}D9eݸ rNdx&!ut:4Z-d"3O~7> 5GJW[pʂ F#(7s}vLw‡ ,ŅT$Q *Qw4~Yƌ{4pſ̟[Z4~� 6,_ly}eЩOSZM"4+?q[ЍeYslU <P^2Z$c 歉Q#S Dd(jH(/s $ԁH !pld$r M!kܢeёo#e}=W be ?ѩzz:!<:s!&.d婺W?Q=>45ѕb2$TD �<ρ8Daaa&%Ϸ=+o[0Fr& "&7a2"k;x&d*-':ͭv*Ip,aۊCC&䛒qnDڈD dz-ii̩3bcm#f6G+{DUu-Sa`kāhcCCN~J%v'aJ) !:+H>Ahԩ?7X3A�0!CTk54J+kLSӆfN8$:4V>E*N)=\Gș7tsv7x%B8� W2tOPP*H@ zѽ¨ASB>/|q w灜A| {hbS&摚z9RHs()?F�?Ts13DGw:?g),l#²nBE.^X݋ŵM,OB�@XuE!sEZM;fm}|ߺefGr oCvaq^x饋@ WTI)Tl.\ N ȟ:u VTbiӦaS'͜BIӱfƲEY+O>NTWFPF*bߠ$p{D%P^tW=Ή?$mZ(J�`tLF~KϻMÚ.<ondT Y(̫RUDęIH% KWnX`muR& U*P 47;HZZ*[5bCe]H@'vuiSp08%6btdj_`iljM}b# :uuʽ:.(@xvMI!}^` > Uz鹳'',540닢+R4<|)t3g6BiFHD@LiFiT9JpD^^2|w B 6[[aaA+l2~9TKjЉ;e}| ,@u?~ jm/]4s8h4f \))` aF7Iy|5[}pZ),K8ƚxA$S9M4׿~Ģ�NW[Pߵ mZ /55M[OEE;^F&‘?¹})厽 vZ}̻J$%"v˕T7hkU75Y.y</TC ? SP/|Zm)1њ^&j M6Bi\cMzg-2Fo4[m}_w=p[%YsysgΊP\ވ^0lj8B!jm3IK<OFf4%%Zɡ:>Oc$> YՄpr-nYU#>6k|rd_R2 w1a`}˟])D!Me(PUk<ϩ 4fokQ>t SBC cV;#a4`jhnj.pW p:q%UsӮ(� Fb)^a9 ۆx"l5hBH)/pL`B?PqF1YIt8ݸQ rvOVMP]}jCFaĨ~ɽY M,ns 8>rsm=Vfi.Poi(9Z=G<eM)a0h�nI}�%--v]NYK$( DCr5Xl "##a e9AX K ـ)"910+%3~!wEθt,3cc"Xض*FCCB>7ŅъBZmn|5H;D((ڙrc.^8 5ڠ,r�##"0}OXoPtj,V!VPQ2n'2zܞ?O2ܳH^IQr|}L/e"Gdxqq gR\#%IE:tF#" t@J yWm6?b?398p`S|fW /.65+yu@$ A|/?*-]u+1jl|Y1FfWr3pxwOP~)T#?WV׼y렊z4�#,3#mEʔY47Q_:}[۬ӎؼBcGŊ_=oojm0>}4*JOv~V* m5Yg9:9ّƥSK\nR}_kJA�@- Uڣ*2朚T4>5-A%wTY,s.MAx 2k}NYr敲qĄO֠拇J׿5~3:As 1|r<]TI<6'%H: �T)6KAF>o$y@f#@C뵰[%_|Н_=9v!EvA1-EvFZqW9*\THdbr@Up$sd^{gjVڷ%!CyPg+aFVhjV$4U.k C�(Jz�qI/"Ͽ3qO`碩[<QJ%BЭᤤ [Ss4ej].UC0x>b4ų Yi/)s݆PnKZX; ,JR "J"U8uRfzt0'#O%nsCJ0 3;p;Z9,/m$.bď|y?MO%EC:"heĉ,sp<TeJ5LzA`-r$'<u9|�Mnv$Xu!$h7HYB!ZU>^QHv?qz+,مOiLv;|qRv򕫻<~AGKG"Z($r=z?yU!4Ԡ{ɞ 9>҃ gFTr$(𝒸^jo'k?J?m:ՉIΕPovHdL(mjm"lhiHаHܕ�ЌʚGءу/G<0x  ~ Y_ze'}K~U#/L;p|kGeN8d2! "z%|A,u8"k�=}(3E.mIK" C1<pΐ6^<SOO쿢zf:e.W'!Uߧ#!ax?e892}dx0'!DUp_~M]8Sxħkn1<nj?|F?9ٺckT0Iӻ߾YY1 BB\p$qrd#LeXbe#[4׬^>u|n.Ou3,ttȂ7sRvox|@R!v]}^;NCekyptԉ.kKݬNw%$<ֶo09>AD]nի:~�vRglwEeB:*sju#EYҰɒ?9ͪY?lLW7����IENDB`�����anyremote-6.7.1/cfg-data/Icons/48/rewind.png��������������������������������������������������������0000644�0002322�0002322�00000003507�12061426050�021051� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^kPSGޛi$`xLQ0T#Liq_iV#֙*iEP["(mAPԠB޷g7$0DPo&.zŋ/^x% jL}ϙ**+Qۙ�)p߄Cw$ar<L5%`,,, ςɌCQ6K;sFShDY1 ?o,\ZwoEB%Jq`/)@ R(CBY9o�P VeIk?pIxH"! Y, 9bXTāRR.! qB6H F#1 JiJ >N0Ł@pؑjA.�I}CNp+p^q�XSs�DAcBY!>}z五ԔH̖!d[HJ%C/qbccC =22b]jZ94 3Sf >>P^)XHPhb&5F 8 {9IY3cǡq03ɲHIIi6ui߰rd!WOt#!"A;ZV )t9s]sCqQPF9^(B't"H`1jӲ׬YDkf"pG8 0 "وr'$W^xkMrGv **Kë—ed@8w"pyAcgeP3󀓞N1`п<Sȅ5A bB><<37ؐ' RŠN.hIdٛ(/*װsHX $ϑTqGe$8 &i@RUΧ4$)'K $Q77w%``X;Hd4a#m~֧]]]BXܴ{EVub\ r-F {$ѵs9e`7w_B.1qR@4Nfs6iq[ #t#wFxx R D3#tI%_dګn7'lFp5m.Pgg'nb<ϻI?X OZNBhI'=g@z̶<5=Ν :$%b;4}VXt㚨7޹SYӫ0�M%0Tt!都x:~WD\T=eJѣG:wߵj㿒$^gjNAʙ.R1p '(rb{ZⴳĄSSsI|ld>ߏOzKKK&%%]yaQU8~nD*Cvց #dQV̙3 p'q 6c۶m֊ _ݫ֖AapA{?dEa,]%7Gr`fMw>2C]۳88B;޵ȴڵw຋Rs͙_-Lp⪪r---6n┗ ϝ? 5g~;<}~/<xPРxBuzzz7NjkkUuz�koowsާ EݽۚZՕuϟ?Wmݺ vsߜ>RL8[zm޼}jzollՔ86mb <Þ4Ë/^x?E7����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/question.png������������������������������������������������������0000644�0002322�0002322�00000007321�12061426050�021426� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^Yip[u>oXNqI)\푵8ErأGӱ&3i3ɴtb׎ɸʼnĶEZYdIn-S)RhR\A {.1nj\ӹ];TGp fxUھ;w[|遟o:o [~VD`gxދ}/~)1]opUn<úݏ=`M΃?~dOS߾E`}wji=<cy0+`8on;j'6x} ȍyk$ʉCþ=|"&'x+0-[kZxV%6°$ %!J`18bt&4KK\z3?Cs1/}i8XٚS}[j޷s-f1 ǠwxZ?HI0GA™N xmPvB}ey\`4K34/|+0c_Rf#ܻ]f,NvC LAB An+EHZ ]gc9Ԕf�/园s�dgs>pkIe[Gh޶ P/v*}\d90,(b`�ij.o�w:}S/ ]{ү> 0g}=Mgκ+m|[HȧAb�8@ d E8:`)πB]Yw~~^@#[+F&[#ooҐ KR?nBspK,S>^bE`4ot:bsC 0y1crhZs G߱垯Xrlz薑xH3Er<7# Y6j3Z s=Wϱt?y20I#wZ]m~GS4͖m5լ�v<!8!h%YcC1ܳ j_=nY^;7Wk!i!y7!CCDв)-8>�cz^px[j^`yL7t V辵p ز 9PURuaGcQa8)"t?[WۑrlF#܅ <ٛH`S⯟\OraihmZkrO:[d8%htz^:8mL7w!l̩\~6UyC(+� 3u&0V2%>m2ԙ(æ Uyf1TBNdk xǔZ@Kpؾ:8=קU<S FA#M`/Y#  H$\e)4sn+KQwJ,]SPk{W}0&yI 9Z  vx7w7;3B(z_)6I6sh{nQK rZ[^C%)FtJ<NΞfb|�4,BSmÄh/ ̇pV'F aYV� ޛ#,[Pvr&a6s ͋K^TWUj+8{y g){|?  <H!H48eAK؟Nt39_R@ŰΝIJѓ x_I%&JDdO2`2չ< RɓyX Ei@"~ 0qQp) X<[z>e t|&۩wa{3ES03J׵E7UdHN\ggiP"N3\V<k2uDOIN6BI}fh$ 2G"}BNv̢ Ca(D,!*^6 ȫBhjhPyՅ.h yV;KHoVSpc.DsFN#i ,.j( <:K�8 z<|b@GIYHx>˿/ dR)BPaf %E*Т:s EL ?+\]004bD2TZ䭈O'ybA),bf6XQ$ՕIAA:yI(Đ<JvyAJڸl&uB ԖJ�;:}zHY" 9N;l6fϧiQH}DD!tm5!*_ b)L{#fҕ/]kDmtrXRdfI/Bo}s_ 1:/.>g<HsՊ$%A;:b``f#a8+~ֵg9mF)-E[Xk3Hc>)]#"Wg@וxJRRj=U6V ) HBvJ(8�˅+X||�c̍ Bœ2BJn\9J HTm!U&^E`\^kd$J)�'GGO~d* 2`-e8e2p5P=4Hɋ RGјH P j?M4޻u}!zx URߐtxl}R�"4.f|~|UegS)Tf`'WH*b!�P̣]a)1) qAPAroyBRɘS챓>|W3Ma0C85RD!x QC#ajN v7A_#34y9!% gδ}^,ʄ- ctm`e"�9s&1 xm,ZD\6#S6*qv>r٧#*(" 3?l,.u0N <iegK\f,P:xE-ԁ^c^%n;AG89>hk7DV ,^Յ#O<w&> s([yUO"blc"eK]ԡmm07U}۫aAŝj#|L^.ol,?p^\m=hgmW<22h}LoM_8hc4B8gU ~y 77p4#]/bk-p`{cPgsS]Cy,8 0Ig,[#ջٹxf >`$ ŨIG˨?Mz ^zMA~L|A:[,9פ7]nnƛM7] ЄNbOzvv\]pliSĀJZ!D�uVoIbrUU6(.$3Zo6prPŠ@9¥C:f: #Eu*XY400uxSz6ouLo3#h48ZŰ  37C ˽X,.dYdCX"?r(DZ :z>^l$"m &0ZA&r(4<BnsIxber0v Ԫr/c*����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/no.png������������������������������������������������������������0000644�0002322�0002322�00000006225�12061426050�020175� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W�� \IDATx^Y }3s1{UZXL  ""Q jiJ-ZVJE2$"B DP," {5Ww3ttzv`_U{_}J|8W�'xu<{_^ �p8ˁFwQQP( ^ip DmV56J[t} zyyR𫯠bfX"dޒT-\X;64 I Tr]J]]ӆo;&x Q'B{h}- 4r n�䏗/YS) yHg !I} Ƚ̮C7596 #~槔lF9ծ{{ɸBNӉq0wj>3nj/f;JQU[ 3o17= Fț0 nt}͔�0CNGK t f!̹Tmk:Y0fΝuII_(e>@ɘ�3?Zy'MK"Q*m5ȚpE"s?,)\uE'Nr<햺[(fNPִT@~3B7IC-?@w啕ǎLL % S6K/=9Kx 믓mcǐpz .ln6Frr4sϔRN KV1fRՉ̧,V'Thgˢ>m%am!2_L5 l!"h4j ׬�lD͘4iU7Ts8/7r([ v:g9n7 QKv[p ׅoO<C6 n:N锫͛ҭ>ae edAl xҥD֊ѳz5<l:B-\޻Dz~>V Q#Hڞ'#ٳs+\n._AgfTB+f@]w/r<"S #%aٸ1DvЮ#ƭDSX|&H7gF$�ٷxUfy !wQS!I]z)z(+!9SBq(H =C=KuSqw҈1^H׭TR긷~>F& >@9eg4f;S;l݊V&aq-Tj֋ -B\:|}!*+-$ԋ.�Yl "t+9$A8~ ϖ-he+ni _]�l2G@EL uUēOB5<s!)oWp9&X\;tR!I϶mp /hiA.uPk 2o}#g۶DBF%Kb&sH 3ƗlODe^ cǚ$̰W>�YB7ebޜ4O3KA);dykb{qKrj޹i�qMWU41gqL KMWĩ-:AYFň9L9K(xTP�T52{Pxh*ekۨ݅҇@A]B_{- ?Fɨ[b5VBfq!gJ{X#hQl>dg!n er L='x#l22;T!i)t HLF7 XӊXbJBZиB)iw,qj^8w-X 6|q,Ihc z ((IH<;RJ%n5Y>Cf%U #ACU8Yh(20qBi^@1&A"p6);x_IqN6[xA"$h ='%KPyEU$YϤ.,I67}>}:΂�nߎ;'BB:BȈKcSQ[ӧ_H@a]Q}f!b> 9m{3]~=7@ۧ}Ed~˯<G0 ]]ց %T {AC/: ]õo>3|?I|Jx3ץރL(m܈S"BuX po:yOe%39qo1'#W_E/e0mz}4m #dϝ N>Tr:^ >onm~] 4g$X1pyd躅 2[kw87w.rg1֖QIG{ кumhH ^qP6z4:"#gSP}ɮG۳'8i(~ؽ ķ6d^tc/#/8,x+U_n�>Ir|+|\vYގ.6(&L?,JPH?V,[8�4(K1zY@�]|?M3vsǃr6S/>h뀣mbMoޯ yzݰ|4!fZ*_K(ݓ|ns.tIqtF¡3g?Ph W.{5p_-6tn4`$ܙQ6G#::v:E�B(CDBx7(Fk>rɓrfGS6'wutl%^�093$Hbg?P~xۍRZu={;8ϐ2/j٢SΚeֺN2Z:kwgԶ o3q?zb!5#i;NCV\N.HD#06=c $>\m(ԓ"YeJ 7CQ�O 0AN:,YC ?)*bHD444 pXe?cvegRI!Y%oqQ zafZ6s=,tSu9.9v/n*$B����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/default.png�������������������������������������������������������0000644�0002322�0002322�00000002623�12061426050�021203� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��ZIDATx^X[L\EshXp0ܛ6BR>Hb$؄m|4фƗE[%JHj0mmP1XRR ){;gƹuBNwݞ>3;s|<U)JQRh,mYThJ(+/o=r[VshwyI"B3Su7|^ U}~t �00Xtpejj zzzO+`l�BP3%ՠcxEQxm<~{|/G"V{/?}Lc,Y-KI PU ܼӣp. |80==(<j4ם ZKtC`0h,@<�}L0h pm܉(o}�]Odĝf[*`ii@UIr4w@}]CU(:*,* DPdddd0 ~Mɸoqa5UUl> u# JJHb J@S`3Y1pڏKʣ?g>gPjV+rB>]׹/],g>Y0 ) 0垔,$`?O*?+KwU<R  LE0󎝔̚(Nyޮ| TXߕwy .@/6}o܅>PGGCMiX<Ɵ9Ns/);+K[",7id" g^ "D2/3h` .pVRyRģm-U uݻ�~o1t}P %BK Ж0ER]vjI@";ۘĶ�{4!@dn"^`%ϥudb@<hv2+h9BKgpv&H`boh6c!\z@LZTYAiioq̩fփ,V,ۨ$-d_%9ox�ȃVв[ZPÎ؛P? zؼ*ɗbFT4(D`2&%)a&dBgcb)T @T:ŮÇ@B HZzBup>kޢ}TTT!˟yx3 B*(7^6-p_daj~BH&xh)pmmm۴~BIz=SuRR_A@-5����IENDB`�������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/eject.png���������������������������������������������������������0000644�0002322�0002322�00000003176�12061426050�020655� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��EIDATx^W{L>w9T`/h[m*Fٵ,!mL *J%m5QI-&>65jE[#mX*i.;3a馦 f̝|9wa""   Kf+0ր>mYg.�#-tMH` �B8##%%eP~ؤJA=ٳ_[~15k Uv$%eVl4@$-ɮΉ|@ìԤSQO�vnFFzvyt`8%u][8`0LdGMغB1bDg *(**X �A'&1=t:-^8M֪uhsSo?xr�| ^c+ضR�IHg :߿UU{~~)�@HHH`cXjQrrړlwt1-n8 4\j+::\C�Ξ= :4/)9رDՂPH:Ǐ1eںΝ;{x飼\%4gN=6מsd]! LM@$ș!ф0rGœ \O\[[[LyɁBϿVzcobRs"ƥ鱴݉۷}ucɔIMMMW!nCcc#2ad\!IEj@Hp`, /Zu+?z}ŊK.)O끔H^{]~ǁ`�T*`*! 9YR�#P߇++vn1:�B8s挲*+wX()X|~D4Q1Ft-AƲ/$?`gVo�UiswxVi4{ p…@YYd}U'LX}@!QeB%9}HA5/b_^ _ʼ H�ʵF~>Py#<H& \? h5 yD2ؾ+x)wnܰwae< dRRi j> %Ȱ@SX.`T;ZFs6%O*B:רmX=[[5 J `Y 2EPGRҰ,Y %)#C�PYY٧h#?Uo6-&Jsܰ8E7  Ry kjj3ރY0apGxO< 7|d]ti5B�+Bl2l(/ C= jf`,_a(]`KE7Z,dRT LО�$ LK:龀ǼT h5j0MUTjܕܘ{,$xEh\jXV116�˲/(�,5.T]`#&L>aNx`EUZ QQ㕔z{zLu'Si(z]t:Q"[\r^Rk�@wX>SlTfJ! q\\cW\<" "O3'F����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/transparent.png���������������������������������������������������0000644�0002322�0002322�00000000241�12061426050�022112� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���bKGD������ pHYs�� �� ����AIDATh ��0B$swc]5)ov����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/next.png����������������������������������������������������������0000644�0002322�0002322�00000004277�12061426050�020544� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^W{PT?/`aaX@-"1L"PNW:M۱ R M;v2R%8Q1U#i(.11y%(,;1g=}\P(E)JQR8LjU:1CsLLؘ,l8sAv!]_5fz?`Y�'[,6<_P_ZZ҆}9 3aXnkݜWt:  Rt󪂳:w+6h9jͯ=m1H; YR?~0lkIcFHŴdd4DAq^Qm[SRRҌF)�] 2(I+$&DbbMG 3�&`ʕ7_^[ZwW�!jxPfjj^/-++-u%q`è. 6cBiD �pMh%,ːbfi?OkVeg6ddUYu Wd�*P}k?IΪ̤5kք脥k :\h$I"^'ɮi۴iӉՍ7&i,2E4K'KBEIIIrAAyʦ TyE|9XnV X%,SOZ-7z z]]9 +++ @8-�q~ٹsAn՚Ta|CQ^>6`='=Hj;)۲Oq\timm)녓~ēNd,8"IYscO[[[=~~ܠK2R qrD:Ȩ !,vIbͤjgP^^^xB6$h* z,đ(l߾Cغ|6x#|PAIL HX6 -6@>bȞ=u}ի98NՍB\/_YOs{<$1Bjkkɕ+Wuu]]7997eB#hd4"�,(h`@H}IAD%40q}P2Ab 6CaiW:w<RrP 7�x>PHFȒDDhƆWD2QeFB8* ϫ93Pz^0=FP"?K/,&WOO?GnZ;yVi�p<v5,‚Vk(Rie T)1"1[2}xX/II+] @8SF~~סVx8P,Z5=(#FẊօ F,'^ǗܧNeKuͶ443B�NKew}SSն*J`AE9GP18s䄄I<F]Ő$I'yM20?6=5|_듔jfY]gI绻z :RF Qcl$QJ)bo"z;;yY'2s1t̙3T#$C;΅ �AWa_NoOPSSt{{Na6t]\cᩋ2LOOs?,dCB|R}=$:}#ܼ1wca6Dc8k"^%dWBG'I2;9=jѓ#GDRBC<3 8:gWe|ԃÇ#`9j4*#Aq (699`kũ';mz)vwwݻG 2.Tp22?>쌌8`LMsz0 }5dI:VyKѣ:tGIKZol@eű Em8TPsvEjsNSG#A݀ूo9P^"'LY?tEO ݧOM,R>&>%.5a.+n|blDRQQ_]ېkfc;3A݋S ]~݀(E)JQRoBj����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/last.png����������������������������������������������������������0000644�0002322�0002322�00000003671�12061426050�020526� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^X[l=@ -7D A()ID$18jhPjЇ6& VE%/4pSTFh - ػkww 3yb*O߯is;7 f0` m5�mnQӊMY"QƕϾɕV<t[_Ͷ)"U4(~rϞyg;@8dn*OIo >h"4aak鳿țX�&CD EðT`*i6_1I(7T�=5ksݚeշ~ �4ysŮʽ@r Yħ[!ҏ/߿Ki3]' Y*\ b*lښ/|Kn<( **1n뢱J'!`>/*+@Gϯ]>9ux=_!N""L* -Jzh)tmB&HAS$[d-Nx Z߲], ۍہNN, ;ETmt<BA@v&iJ8n9ůn\jɘŏߏїQ!m AT@4qB?tM p7Xj<\妍qg>k9zeE#Ƣ[ g͛L"BHeٟ%R<q|Ǚ[nw>݊5Z,U�ȉHܵ(TkUbE Μrai:GU[*o}MJ@rM(#jeg^yoI}G8T` )N"lW$ҠUs*ÿil|0,QV{ R#dMpӣ룳++w6T@d YHLISRc9]Rx4-vP �5BGF3 hN S$w00<Q0$4{$!"5$C>ܞdwi޷U7b= ]W"y|E~E~)aF~2&'" >(4ixFl<ʩ %l49H~;C:+! һbG"PN(xB>2R ""gEBSTO:wG[,A,�IIgrxzv_q(z[>GХ/maC+|.M߅ءJ3]=wE^AN /Bdsߘ,ʎI\_@u>Ď SxHlD(q@2By:vΩJrh}93;c� {Ľ)$ z�q{h�;c~g+yE ]K%z>i@ $,I,8d'tw;|z( BP:+Br/7N];|V*?i[?ĽEi*;&)DX1Ff$?'< rysӿv0\O(τ DÚt[S}��"=�ʼ[b'T�)$ $׮� ^֜,\;~7JxY8<jFDr|yߵ=-osY�yG/3xJngB)Mg>Y@ ??R{�4ͱDow6MMw MD?OǾ.q)Zt@2Gbhσ} /A(lM^ſբw a)0maްd����IENDB`�����������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/ok.png������������������������������������������������������������0000644�0002322�0002322�00000004505�12061426050�020171� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W�� IDATx^yy|ޙx</ xqnC@q(8QAJ$&M4" jJ!!& lc6cg<lYw( A#y=Xj!xQ5`Dc)6ޒGv9I959r| H0 w�w!ZKpꦑF3XHCrjwGq7ErO"d"oQ.g]IZLPpS=zevN؄*$ 6J#X) Nx^VF_I,?�mۭsϸÃIg2E2V[\&;˹) S.0/yoI|C̷lp{7w7TmnsV.sw mtFa`AΟ8-oy&aCJN>%J|DoB-V:eUW*á2R!ÈB)1b ==%i|zJp+� QN 2]5mڴ V._9gyެy018C~Y?ma=S(u/IwMsʇW[f<_ė2_K}Om:)qƸ鮦 L,F#H<*,J 9嫖 Lr z}IpDPQq{†-S[{yŠ+BI)lyrKܺm`_y1(*b_/|p|#KueXvs.̫ �}[EmEms-q/w]}(~([d}\ВfﵻΝX%)h@�ґtGўѾ`3Θ7Mu)إ~q }\{jnBkauӢgy[Nkis`A۟ඃct~n0"Jqd�>Abhau\( WP1)&a#J�gI*Hp&x䕓s-g!We=b˱ _+>dNe18XN$VVe2a<xU6ݏ=@Eưrc5Zsdq|JXabїGz_{#FQ0"P[B�p5 K9!"{! ڥJ ۋ~hjPTp:.rK,%I @2ۢ2y[1A U�[,kD *JqmR}=!K3T4_,t40؊ x^S a^E@bAui9EA"jyLѐ&4lD EEyAEz1!"�3MkMN0*6,i"(� 0l~iOJ"Ɛk+:r 7]*�Q�DNP4N�"QoHm۴c�(c `Ԙ6":FAD""! � v ٧߳m.Jɔ0k5Wi3?J4 S{&8g/;ۏl#:dF%26dj5DV{P> NQ=: Jw}}#9Qcn=XNVD�y:/ = '1m. FE "ų?Ǔ:CIPQAW@(00F# 6q>O;8% FjŸ~ FltPNzSDU$!n6d#9U'PE#2'E�� 2lP2u#hFfcƕ^8!1I� JpXhUHE(E/ G >Tqv)dZR{ 6$RdHE.؃cx!ڥMI7_D'X#Zm>ȣ2y9a3^t.1 Uفq Cc("Ev GII/l]:QDjwy޸i1n4L~t℣JiC E0uWaȸ.t`TNۏ~o%6:ە*]bvt3р[e\W&e!.VXT-&qsm+l_x`1[{5jkou8 т&Ԁ-hAuwډ|F����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/record.png��������������������������������������������������������0000644�0002322�0002322�00000004140�12061426050�021031� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��'IDATx^X{lS2 q1E !jW-YDRn !MCE2GWԖ-k(ePb!)P&<8v8˵U R1α}w},",B N!N%N'"V\@4`"K�Ԭh Sε�?^�P �D `r"d* ֝o�b >$}�ki2t%3f̀G:ͳZRe%kz}8jmkO?EÇ1{ʕCcPo˛pTÀC^alop55uK”sA!Naq�Iр`4.'t$4 O>O|`nkn"p_rzvǪ+|Φ&{/CoAzq $D vT6B Ӧշ Yk׆B\|9> XmmΏz֡9y˗ /8idIȢUI#z=.d#,{ΘpG7ÓOlĬne^*x:{,݀"^E;4#N:moGϡC0׏yGʸE~u:/]_~R,h剐 Hx5N<$߱N6~8%!?~|4t:QWK\۷yL''w�,0#$;4$w:B}Fߟk;::&'<պ?~*J3Ib�b*Yj"<vml4ԩy}WN6_[Z`ֶmmh�1�FeG r!%ȫj&!125N^U3 \+Гف5'OuTc} �xy<s#UС4H\EpùsO[sr 3<$;SG�KV Nb,)DqΔcO /}97֧߶1� {"F@ˣlh*Z&Z1d /v1ba!@ ] 2+ ʤ1)1-ѕj�ӛL3f`Պ1k@DP0m*Zaj?i@ɫ$38~V{s2`Xy!{?hJ`$L*>ec*hZ9)Pƍ>h pIfўa)L +bosY]Q |5v$Kc6mʜ_`t݁+Wjɇ1H:1 ϥ @ύ[lɜ7Ñ޸ 3HUXQ <<adtN9g_bf48^w@ %e~@DV[TF:ӜhCÛyk+**ƀQO%%qcKŐ()YiTO.YSYs1>X"gkNb~I]]]s#iˏ̜Xe,x8odNVi)(D3ϰɟ߉u_8-`leeKF:B*Py󘶤hqƍXlI|x8ZZPS А pfiofNj`= w7?p0 k�/"rb߇;w!M%wK--}j}A/A1`63@߰;wX ќ뷚ׯzk׆o)*0:67o7ԯYc67?9r%DkJ56~ S뭷qY*8L`h!Y*q]ڙ+W U�w)y. W`1<{D.<]lzUaXX v;h?+WG4fNI/PKEYd&_K����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/left.png����������������������������������������������������������0000644�0002322�0002322�00000002745�12061426050�020516� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^mh[UǟܤI۴I4Mڦͺ4e/΍ ۇu"eCdLd 'c:ae/'Q Nҍi&MovrߎIz[.lI?<7}~'sι%e-kYZVs^޶ I Y7:ei�5jt�0ك_<^tc 1 Zdv=aOtl}U jiNLuеH3�0w4uq;v8;o(Q@Dw.mܴDN% �c�,!XT=PW=C8_(,ür#�}sΗ�IScLEdk;2XaxA�Q0ƹ5uʚ.`dodW g޶Y[]% ɊʱpY?;E@4`(Aq!C�U*/�@[ok<t9mdJB*0NBJ5IVSmpW=}>`k1r38QXuHݝD6N@A1| fOԷ{ЩMr &/~uVMڡL&otiu5I '3.cPZ[Y_ c-e% 5vZL[Lr!*t$%X/ hpj9MB4SD @( 1r%abS4v#L,-.m er|Mx#= TtQ^n]*ĥ"ͯ>јF= @b]FET3Fw^PTZP:}vj%jS- zZ}r�\zo׏&/PCN ƕ=1 �33>̆tzo{AM b@<j*X;JF#4BeYeȘx Iv(ޱZ5u:EiF:kyq?F8^ L_)h4xG _b6h OlDT*5qX^PKQJB &c>F'os8z& uq]Ir`Ir晸sLtM|d6P�d � $VLjzƭ GBPi57�$&{'}G�X]4:^;w08dJb yR>q^K@:U:!5``j6I'+c>!UAPac.o}{eA_�ֶaa,bl^uU7 ICM}^+pZUH2�훺2 XP>z؆%e %5Ld����IENDB`���������������������������anyremote-6.7.1/cfg-data/Icons/48/bottom.png��������������������������������������������������������0000644�0002322�0002322�00000003506�12061426050�021064� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W�� IDATx^XmlW>羯T+$ұ"UCS5[v|H!C]$KdE !IHS5ǀ&!MZ˱%qbN;x{7v^4::~Ͻ =CqNt}u jB=:ރ@e22B_Ԇ u[Y;̥cN`[�'vfҬdK$ kA$?f3 plI%#DR Ҭ6'{Z^P',I&qtl'8̛]c%D BOXw q S]`f#Z�׹4�IxTJKi00WDTy){wzX.v,;0׳Q{׳T83]LUHVۖ%Osb! Y@~!�bZ:!TL`Fʟ=ptM'0m"}2*֡>�BAh6}~C3c՟?2>ұgk_I 3,"]U"⊮Ju4N_ L{Ot{f|#},0"VE˖߭'BL$ONCG&օm{s<S`v?Ć\H ա4Vb( c<)g/\]^Iնx˓&Wb+^0^x'blСf#Qhoq!oKIqJ$ M'SGm#pq|vGW9k_,5;7PKZNXZPBp<Ջ?RbWa/ өw._fInv;_a�-HifΟwB7Z]Τh fU! d^-_}ZCoR}20s3FN~ӣܱjtWmCwrq)+, wL1pG}}-SZ P(f Nۥeb,DD|�ߙr;SiR7B -܇4qH&ûb6dl[QH4OoykNk+h4R>'Fto<Pt;{|2y[st6HH=xկ.EX9sZ;S#t4p|(`X_ ;zq/lS Q!IC#/Mŕ'}/f֢?�pT|T% c7�̀2>4R}?XIv?�"ES_*\ t;۶mB&[0YJ�9ZkM@57Tr DR60H`TvNp --Wo-ܴ5 _hw~mW>! Vm61,KfAD9-Y( lG�PEk[g~z܎OU eq֝jMLJ2 ~ǖW~NZl�%!YI6 _1l!!r_ J+<u-WjB/-fY-0=m$t: uAI~taF @2kƒrJh[*3 gHjWGL]| }.qcE6ɴꩼ;{?f*����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/info.png����������������������������������������������������������0000644�0002322�0002322�00000007412�12061426050�020513� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^Y tUUz9& H$A$VA!bM vΌ:,N:i UAkH�I o<gs{kV ?w 6\ww莕\R ._ˋsT)f/7\7>vZAD4Oq}&?K)|%yĮD!W.]9xpII 14 L$y]@ .?43p o9Vж3E�W`Ĵpr|1eyiogg{@Z0FS PgO1,2/l~gOX;VAö4 sa"=c3'�Ņ%8#xPD EL@wғ>U�t])r~\ԸmI.ЅSVI7jl?rB8y3}U GXwU`ּӕ7vGQ%_;q�h.C#/, s+J߱<@W“S3r s%.C|]^G54Hk5O{P"W!y >8w.$¦ =&m4'7XxHa/_1*%}xϧ&]8W|kAJt]GLט�e-qz�R[\�Zfv <p. z{^ԍzݯ'bXC[ᛦN5]]#K+Hrr @<G\r3߃LD9*|qS[$|fI%)5 7)7_tC ]ZK4IL 8cv$hbRKp#KsᚂAs?.y:9pbV7el|MY1gcU͙AcK}#-0HPh3!9I,0-AP^=%3z.^~j*ɱv__UGܵ�720\LoȴDD?μh",yx<7{"<9k<L,!6tPWNk!!+3V 6!s<V1{oOW۰BNJn{i&V" q_#l~@(Mֿ֑ mù]'&b5 |yUG<t-!WZxu{.iÝ4V(L r-& y U 71lMB_ʗ,o\{1t]�oBr[%`tO8dhvTy"Bbc(>m$Il.e~ik=d \3rUV/"/L^ Ls@*/1C%AЌ9W1dAQ-[3.cPz`v۸B687v²e 0DJK^>?ra˶b|!ٱnajA 0)nN Z|R@"g!֋Gw,H˼<GO-V4 ~AOdB7X&ʺq; s Hl�PH%P؄nJPeQ<yH9f'1C\2⍢gzh8Q$o\A.XuݤR2R .$EQJ1Ξ ”A_/QNӴw" Zq;^T(7p<JnBThD� (>!�3Sb#Sד.@X} X_42>HIFj%Knb\*y@e)!6R@We]5@n$3$k ǐeRlmcc,GbRHpp@$\@$G \I%uɶ@8HbX(<8Nmʰcž<6,P'MbK=~YȲ08Z=4P޲kH(OdRә ȅ23'1u"6._D"3纇*H@XƟUו}X`3X*i{%0&"Τ)&e#xK#ƲЯsO]CtmXN:*lN 'IH=C(B= hseݸ<gjL0'r ;<G^دVXyy40 6Q[R[!C{sT)T7GD!gjfWauG;%d p9f<uWoPZJ'1"ƕpuA[(D}bBnvwZ@+9)̑F c͇ `t̥Hnjڹd@>iOΕLD2rGIJgˆdDBF\ LEJ,{َiFE :)w96XZ 8PL\q(RJY],$%#Rve5V&ay߷ჺo=kY8QkP)f>J#ct.yfU%gthR ,q^y(bZpwY ;[3;Rzw5>ܰO4tdk͊Z* TQX邀BnxӲ'Rs4�R>oWx-og?Z*UNm|curYrSdșj[k~S멺 6<"zhu2M.p/Z;zoھT*bkwJ xBe*2#5uW*qv`wFO-pvsP$bR7)~7bxjO/@ [ )z5v;JXI~XI|_�M{崋vvZdFn[CCkhv <|ut+ܫ?9.X G5 kWM"1ub y<):�(; �H#Z}�Ӵ mpϤ]&ļ׶`oxrK͢}ઊ*hB%:[[KZc#DE Vl2&~GL8IISv: gCwFp-{?:P7fOZB0/pe}`H/XoÇ `ds7a{B,΃e>dz!CI'ф@&~CKX/{ٻ8QTd]̧ȋq{Orr y`ʃh?HecAb Gv^ychi<Vߎp$q) >A$O+zo^ټ܁9 R2~t=ʓebNbFc$Q }A,,3?~Ծ�`JdR=Q".⩷IyF,)ڢEYpEO%!:{@P_k=|Kio}58~%�=pŽ6W9%e H3.-3"]i :z{{ڛ_84u2![&rĕ̪)nR@8@HEa"%_nOa]+)";$ n)WC~_((X'Rw./|7]$����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/prev.png����������������������������������������������������������0000644�0002322�0002322�00000004173�12061426050�020535� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��BIDATx^W{LT?9saApyV ,h6ibnV?4MJ)Ԯ6nM6[tc]Xk0D^4 3e&"M9AQDEQDEQ Ёa:( z}\1qVl+ϲpߞ_UVVz2=~mxziɴ+/?{vLE[“qh4$Ijud ڞLbbb˺n$�Yj%v1hk`]kzzZubRbk{&'fF0A@:N8 zo#v!..N /ZSw:JZZD9.NMA5 ۲l׎фy[N0Z-qA@9�y8>##0=#LUUN~¥*Sl;r8xo0 !/}وxnfOkjj_,yPd4W<t"%́XF)0)3z`2r8yfΝ"<3d65ggokp֐ 6r$n@�DP̰D9gGf<j�qa^!1AII(R6 R@aQ auIV8A�Fm}i #:�T2E<U(''Gf,A': l+,jCaɜ`F*#C "F©H3s\ZB e#FlR<V� RfYB}7ozelmUQd2w(TX3DEP�6t:\3􆦦㠪 .mx( ቉ByNs ,!a=o%7TH?x\_B H3>蓽G2msQn3a씋pY�=s-B՜WTF;:tlX=(;`' gȲ獍AS(>j2Hiw!-O%(�C)HdL3ІE8Va< XanvsQԀ L<d ih8  t}d}IIiFyy9 =^OH͐W/PA)H#OIɿxaD}iIYFk[!X ;i,ܟx2<(˶e}}wzo%CO@$ 8fSW֔_*zn_Ƈj 7Za AD '^^NvncΎ\`'/}?pz HCsnNJrz©_}1gD@z1<#'377⒢ML=QT\Z*, 7)B?#(H4t钫} Ǝ͞(.x +bB$]/Du++!<u􋑪# HrkԔ222z؋y GR$" p( 9pvѣR3yNhp8RE"=O>Uu9vAHׇݍ#ͤ0H )$ N8wʕ+K+]4tWQ2-E|O-mf;MOl@1M`iDl"`hhH>͛ڳ)ִS{Oew$w}w֭ Xӟ>C Ξ=CZ]UGUǿ A//#qw~ᑡJ*'S֏z><HULVUyi5s] qh .\LNN.655}Z}pjq+c*Ԁm/_Э>([<8;7hkau _͗,,WѣG:<g vw9eD[�OQDEQDE�}}����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/mute.png����������������������������������������������������������0000644�0002322�0002322�00000006120�12061426050�020525� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W�� IDATx^X{p}nv7dw !ِw - XöV8jZi)vkukoZEi`y IH6ɾ{s6Z&j$g~߾~s~s9WkskkVcgu #[xs]+f>𚍿Z_]Nm]s\Xtmp (\<jʌ3K\߰;*}Vzx0XʫbSYIuSl] ϏTJԜ"PZVj/,*r`lߎ7⩧Ć w>dge+999_<2n|o]p8OTbD"ضm+L&1ys.:JAT+|JJ&Y**Tf3dd`ǻ;kn ''fYpڱ{n455<jriue#,?gsnw+^=6L&((Pqt%HWT4C,l܋LfZ8jc XV!�MHGrD4B͔ ?p_,nj]u -՘Hq G~ #[']թr&Y}p≸b2w=}!X~_y̻6[~(DKk>CE#!PMhPUAtEAVVH q=}eGUUifNhJ>9?VenMFhن1�}߭~}FF J!'T-]G9SJG (?(kr@t Lx<PLXFMcF fzz**02!Nv[)s?/`8$Ձ5"u. }6!g\Lp0DNMfy2p�p*,m$\M Z?j#ei @ɤRtJ~"G]34BIB3?[ѝRA!I@i�tۀ yʋ O7#bW)2I6`?8;d#ŢQYĒ/PjTIK=iRqƂ.+lnn1֜zn֬KQiڶ-y &Pkdy�GX͕Ñ+_mI`:k'L-�I&`DJK!FcUŢhJ%3+^U(+/rnQcho(ZȠȥRI#a,B=w !4Eee9ipW e@I� 4MW,TOH65"1gR--к9 ; .\_ 4s8 H2=?HfpUT={{2 %K%D"2#W,jd^"nd\ Fdĉ.$d4A4.^|-8ԑwR^�KpG2`OqI"/!LIrğn�8hUW!HШ~jDbN+g}&ie,D#VDzb2kC AhȚe4!"F9G_R 2ĨR# Ǟx%K@ߴ ' l@:L BLD,(/d {z"d²k1FU%Cg*Sݔld@x 0 )|0:L5LrVc1GN2z a0aZ:}t6ho p"D:t) ]3Ϥ%$|>'Hڣ~Q:U|q;Lǐe�}!*YxZ4e3H"g0 ЌR^CtzY$-v87caO'~7#(=G y"'t.5RʱH~<Dԏ2\Eii𒐑Qƹ! !a>w݅#Hk�"k"|H8?%DR?|>t(AFcaIιej^Y YQD !b2/#H71k:;"Q23$!3g6#Ml>^x` <x~׻ 'ƇqN1GOAY99W;u`zch4=Cr* :H&tkD4z,88Xe8Q"vp0xꇥe[\/Z̖k Fه!Ro RN(ea /=>KLJ$vl}Dg<g<N~ (ޡ7~(7-NF?jm%sp {:%a#*:Y:::B8 u.pLi+n|&thK]$KGĉJ!Uxcn-W6~,4Ά�{:#9iMify�?аc�t#4&P= ʦ744I@0 v&1i|ֈ#]=#cq&gmm';t'}}y`Xy�SIܡkvTzy36VzS<5“6lmi}`SlʔP0<Rze5klDzdH8z444T&DDcQuMhC`BHNg)>Xe�F\z`f=AA.eh2egi}l61 ~ I :}k  .N 'aZ`Op("::;rϫC|1+/?yCA\h|inCMsoyvnN (v:j|<! #rr=vE{Ƿ,ٳX9mz^zɜʊ =>yޱPl:^ԇf_͛oڴ{Y-jӳď~ׯ6ͅl.7w%7n}]u碛n|32chfY5[6 (<|v�^z����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/vol_down.png������������������������������������������������������0000644�0002322�0002322�00000005601�12061426050�021405� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W�� HIDATx^Yypon=ks@$ EsRX:ZZ3qZ;-%vJ=PB+PԀ\\M>3YtjT/ͻ~{<=ǻu.Knnir44in_ +y\Zy~7ujxwM7d]XԹU[P?waz^7{hƟV:& ֯ʯ_\MUvMF'$?� HxumOUWW9gj]Խ](s'twwÖ-[;{BA~TXXx]qF!pÍ߾n2*")0!L]awJ%╘+|* su:yvJJ�Lf3a={@oo/TW׺̭_\3S4;W-Yr.Kē FO",Ix-A?tKTg?Xts9$EAϮ`X@�\A9A<1 u@z�R$d65󛛿R3TZ4FvkF�eGA2FC=y֗\p;V+Ѿ,N H*b@U, $Qi!}Xs-]_#,uX6G022&FFo4rv'b<!g F\v/^d>Krn|4<ۇVk!O3bi�دNk-T`]{FN@(<SKGp$G�YQe X=6d[Ю9݃h8cޱ_+Z<BIqĢ18>|\ ;vWEa)su Jr(ȓQ8"|@g@\S U &XQT-I`\By|]VQks|t�HEEEPUY An GkAhIȌSH=Z< 9m+pL7,v:( eXp8] y(H$_tÆ%5L:[q,, ~[t_rIYzC0<p*3荀 lfg$qvn| ǎEHU\ 2��' dQ4 Q%B �$GiANjjk.s W(!2y ,f srLd8wˀj<,KK$)W @K�>mNK LǑ@-r!$WD"A0Vstlv;߁qHHH AdR(dMZ0nӏ֡*be/t0p"@6$@lLGg~'(;{*7H^ IJM?{%aǰ BP`%`$+2#�g(:(LD'$J4!`jTyv=5:xHC M1E%"l(d#U%)hpuj=ڰAS"^\:I3$nnuQ+x \X>4X%:΁CX 䣲q4h# Pz `XG8 9 H}NIO @@cp(co @i2) `l8L꟣,˄8?OgֶV)"5U:tZz@ybփ,iwLJc8Djl " \$/R%  �`Y-T*I㉐aĩ L!L@vʁ:~o acatxBPBA-MlD0Ii>x&FF³s@~ ͟#/l|H& 1„|>/xF(zvn%-E q�Lt: <аT<*(\Ț}k}^ӣpDЇ=`C$Xf:%Y療IX0"pg['< :JB'rBRQ,}Gd:.$$PVZR%t$1q&e!'t4 myWxm^@z{U664B6 nfRAefRD"j4\[ dDNgea`޲'K@8&T-XtҲҚWH;N*;sg 7ƈH&S`۠�%ҫ˯\5|lXaW3@`~2>68ՇQ!hwhBvIX,f|" Ȯ-[@Id M8|𮾣}y, 2;Nrz*שd5ӿIS.Dv \%?f7Vg0$*TP'#QaNg)Wf8)H~?o>sOl0{$ h ܝ5~L%qѼOw}#}x/ h̒KUn.w7ބZg/OB:յ]].[C P0ȣPܴ͞ё<`j0ϷMf,t< ;zEvd9*{vw$@Q/:NA$!Cb_{+1J0g~km}'ަ?VyV{dY0WKkK˖޲k׭_{mkv]{5ۖw]]Bl2FJLҡg38�����IENDB`�������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/exit.png����������������������������������������������������������0000644�0002322�0002322�00000007176�12061426050�020540� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��EIDATx^ZY>vwu 1c<l],, !HH Q QH~�Hy!M$cc0c{ORKsoUݺ3Wen=wsN  #FopPDǒA4|a L cR6M'_΀lQ'+3E[ގ,׮[W2:J|lێvB]Dm97#}ui^}GNjxXWWnߴ)<8s MW*lٷ4 Clf qmCNX}[|ϱm*xٮKggg~f�6YC^>oL#>vYd&mMMŹ}C)YF;ga`y4P.irnFXs9 |a6*ųazF S\y, -Lò4 zC;C s'UɁTpQ@ɶ,i oB.8 A@-7 !C$1pqQ>#S[44D5�&@^<yYdĄ�&ք7x\иR.u�9L;LXDuQ0Sd:šHLۃjؗe68>A ,Z8<R*˅WRl,FWYP8^XI0d4y">Y&l%B'/#I+5",00[G~ل82^0Yߗehnغ!<$dp?O=^K]]O#[\]cF#LN~ 5Qt N H\@&UyӀ 曩xdZAboӧ8p/ykE� '-V 3rt|uBuq-Kz�9I֓c= ݉#[,ӡ?$�.nD,�ס@֭!Q� PfV O { |l#aذF,t`믧RFdԱ~o/]րz1ELbC&<@5$5/g!%t1sZx !ĺAb3�HR27Z(cFr(5aya_^] !s#6�xRA,=€"KHJu57J`1{雗^"q@|<<JYWPg -|5Au͛+4O|9|E !i4 9vXP[dKX8qEI>f xy'9xO"X�YxbVP>li_cV۱ .uZBu6/,yxd#1.pm QZZ8XouxϺ%)Ìb*ւ` 4 N j%Ak JSnTŋ/(|`#dn︃:ﻏ*6)Nr<3S({y(zPB9p*pѨe(3}atT={o^6Ȗg!X{ La*�zf `_9T)8=@.Fbؠ.DPZW,PC(1kłذnL›p6xFW`Fi?ڪX>oEMdw $u"1bi@(e7Q`%X86 q?&. `RfF\jMxB %( gg@@lCb2(ͳ(2,\Q\EPOC%<T0ZxfnETX>ێW&AsŜ;dCIK6qd痳Uqa$ dDT'q)fٗhSbt-5KԐiMrY\JUN(�V+b@/k5]Icq1%4[FH\3oDǕ9-,'2u$`kk ai46^JP=+-P$n\_dUC+=5P65F-f?O)o,d`u7`7`oվ>04%ifRIٱV2`PH ȣ@iyYn5|Zse|/b!J MxqAEb?=,+U ZF͸~o.[(c=Jjy/ BaRf  S+ ̼J|U1(\D[G}Q?>\lW,s@,9s2!˲).+bĚm,)~p_Q9O�#[ a3$6ݬhߕE&vm۴gP,NKuŜ 4"2o>4tFRGBʎv(JxmXEOR?ѷ_+xbU˄kYFUsU]ﺋ|sD`3U4;)(rwisϑAE){=dȲSi'>@ϓ(Y BR�%!! H֭x޾S\zn͏?ֳSOg1%Ȣ㤖ɂ&dAЀ7GgY)øooh~S:zuꔦ0b(BGymm駟dKOF"`s>J.Z֟ХyZAk.ik¹Nye k'hNA<NRcq"28?8ٷFFY +qg ޑ sȁ]paA9>auaT2k,iߙ-Pu+fg:l / 꼄̟bʿ"P>s8v?9 FÖfkjg`Kf~[dX*y4*m ! POR&'䃝yD4~rh' n&s &δa Nx]H(a²Pr :Y}g9>X}ϓORيx2qz bodiI'^]c4o{P]CCg4ECF&Xe ի39M0YٚDzM#OC+kZ@6S \!]fSk늽˜|de^].o^;qzDt"|!Z<IͬDaPi2eٞJM؀u0[D6NЪuB<Xß^Ѕ׽*mr4ZP^jEȅ.G#QNlhـ'bqK*"c7 r+=O Ua=uHu$9 NQxoӍ(02^TNY`IWX"m.ͫ,g4 mDbӿ]s&2#;ɔBA _xnpqElø<FQElcU{𿪧V &����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/folder.png��������������������������������������������������������0000644�0002322�0002322�00000003134�12061426050�021030� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��#IDATx^Xkܝٕ F?tr:7GҸrTn.QE*W $G.x(vdEZ+Ν?Nfd"ZAOFse7 PAi!Brѩugϟ7h}}{}}*޽s4 "8kF3G^ۥg666&zF(0KU1UQ}m7nݿ&j0Q~ky]@Ji1WƘ!,[}`hŏ斉HHt+C<�&4su )p t 7{)y˵M|Ν].ɾkI.%9vfffjpI<P.\ZZzѣ?Z *zU$ϣ$\R�M"C&l6}}CJY &k=`{�ID=0L2b0 XGH- ʑZFmfD!<K?FOW;n߾Օ+W>Ѩ4g34@D8qPc,ʃX}ژg7(-I8ԁ no 7t�(@eQ<`dnT!!&V nd&@q$^;If9B?6Pb PaH<j B̧c )hB"�ɨ1;(]&7$TXhR B2,Zks �tVG@.Y: /cdbH�ZkqCaCɒgr _z>awӁsIM8@+lX7̧Soʤq~4s`*ֽ**C?NzB U:  hp6NdRCP{C`^@ cx>r1-;@ != ѡi";!-^S u,RT?+rQNFϏ&)eHRʄ>PYFB3nɔ DZB\BZ�8{%fggy :iAxƉ�o#l}C!Zl%IB'"!Frd$G6p>MQ t"p2Y_@DGRk“P!ɂ^# 8ok+0,IAP8G")+?Q^- ɧmB5Oc1H@i8g_;H@@h3"B dP@Rhغ�&?MD,@=`%&f>vǨvN,SR�"$FN!TaNL/7 ~[Ws:�;0 p vzacUX rLA0{>mw&K G"%j?}?�""�*Ɇ,W9D fE^zvAć��ҺuXDPԚ,B`EMAXQbFA;m= gen����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/pause.png���������������������������������������������������������0000644�0002322�0002322�00000002257�12061426050�020677� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��vIDATx^VnEݵl|E$DdqႰD.H�đ6H@"9 lbt1Uݚ fOK3>O78zѣG= ڪ}4v*Z[פŪN=<??ӳsߐJ%xO&dzqvvv뫽[y{gO?O"wwoykos\鳩::zӻph"+;;[~& APRÿ,ͤ@ȋ<WJ>{Z"qrr w|C.iY |$u h!a0J:RUɦ$:!]ct t/ ˰J2=ZgQJ̒4A\Һ_n"G�ĥdK@)s ��W潋(]X?&KyQ�7�D1 ()] UB2> S4Eh@F@B2FcHZskm`T1 } y.iRH"N#Y>IR$F%(Y,5<` A%e],b$Q@mMcH(5bZl>ym$�ϓdkh) ̙[jUU$4Z.d:..6 !G Y2l QɚBGyW:GњU5@ctJ)Ndi%$ ILuѨ".ˢH%8k[)zGb:Dv$т>EQB+  XQ|8Q}B܅N'r3H&"�. h.s֘FP$ ˺c OkȒg״~}$b5PMi8"]bG0x4֞Zij B2#FC@Ӆf+ʂ"|o#HyA9X9`4٩/l##2i ԭ0!eg|:&tQ-~O "1f1I},_FgIL;p{G_ H)0VJ1ۛ|UGhcc =zѣG=}Ic ����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/favorites.png�����������������������������������������������������0000644�0002322�0002322�00000005157�12061426050�021566� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W�� 6IDATx^key=glB؄DCHhiA$ hU5F)Ŏ8*ƳbP( Q 4`9llv}/$f?ۋ%IqpYL|M5H2SOܩ-+V!Y۬ǤK&n;:DύYԥ㈟@D3zAuOmf׮\#> D|W/ _O~jLdVQ|镪-t99,jɯǐҩ|EtԴ?xwI}:˯[R6/LG(oQG\@qn7݈̎"!xPqmb9?^mTpZ}Ԓ7J>+oARw+O0 Oqw%.< %ٍ_xji5;H&>ژc/;71h:4(Թ%?x@+ FҔC'"Wwqj̛m O+t3*Oq+L (`DJd3"!+S~_E&SWQU EuƐxU\0; \wmW @4܇4ߎ'9w]=}k zsm{=-;z0߸6OΩrFJ9?)mq|YFtk)uSnffEQZ]�R$s )RA ;I1t }uD4U]uD>7]kE O4h 7կ)(;*JQDj&o&/Ϣ3I1T=KiZ7HRS+q-7h\uE)}C|Y|pZ/U?'WR:@m�M˳U#M4/l0AL\//#kk}V2䨉 c?vb :<WgM#VPDe%vߧv0i>molJɁ[.3}Ix])u"!G �FuLEC TPD"ZЎV# )ͦ6TG?~7y[n?X϶]"]Q;Ojl%k"/ #+"΁߁b4&z@Ďz+۴l}<{ۺpgdG LV@EL V|7Dm_i~GvlC#켅V/1*w(vR"‹"CPYRٳ?<4"=c 9$wO:Dx)z$e0urfi^Aaʺa_/bs//UNen3x[t~gJ{B25"IGp0>T0鋉}~Grkgõ:׳'4^h?TDAI$0* BOBʷ|0mXyKG}1IJ_*eQ"uvvLoyƇؒ1݊@%t\&e ND a<c(Z{o-z6[>֯7�` ?տE輄4@ <v|񙞹W>~І9G驈 ~4zrY"9< 9jm|aXƮ*LY�Nʟ}Oy @F9;ٗSX6Bq:iC﹤4Ij"keA8Lb<vrrb;*=WB_N֠I۸c^j#SENLf0seB #<WY颶WhKiT߉[{^\WAJD5PEEóFN䨡;TQ@.:]AL *͓'6&2FыH\R7Q&A�KNChДL ˺$[=<܉*j# TlwFы buhi! 5YԮP]Jm[09v(Sgb:jzҷWR0r40D_xdS}V?<CDb+FHbEqD =oU?s\MGr`Q'NG'5/oqJwcJqV_'E|P䷈5Kb%F>qr,B+G^7Ξ'p\޸]ħE|IGw(9蜒 DQ~#4wb7i f`h|w/y5Sdb`]5ܚʞݽU?*::((N8]uuIFlT>px"?{1x=x29r)?Ѯ3"n\ewE:ou8 1 W2N}-Kg;%/T|NqbjV}/M/[N$|2>t͏,뗊.hBŻF ]#[{KJ]dcgSKŷcLBݨyU47byHEn1Hw.+w w,H����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/vol_up.png��������������������������������������������������������0000644�0002322�0002322�00000007117�12061426050�021066� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^ip\Օ{ZݭV:ICdc $B< kA Sa(2d<ɌJMp!;d ˖l%j}wιҫR*4 S58ҩ;{}i_[Zm͍ͭ-𵣩u]�\MˤguƾqE_7;^~_s_;{1W�6}u*�=o9t@߅s n=_/Us"0WʾGk@qq1< ulwgnUv#vċl`utښ9ebڿU=͛SP[Wkyڧ*]7*]b4sNؾUرc<u `2V|g_Լ@y ] }~fzwuu6H ̀VT:ů;6C(sޅkkeee'[iԪ^[uWfN�55Ɔ3 ?8ee`2X�VN8P[[lH►� IW)R<#iN�[655o-9 v 4 $T*D ĠLdl^=nݤ$cl ֬Ymkkk^|AXВQTQ%|t 2|Y0jI-;ޒ^_𢛾Y/}f�^Z79,IÕ!p<:AP4PaTF,}}ΤV]8gtcW4k BER&kt% ck߲F#008�(ͣ/8 T(>XMㇱ(HC@`L -/l@81(`+#q^<CnhZjժ"veP(٧}C.Lt�f~zDŽg%ޒ gGRb2v]P(b/�t 2TxOzNf2lZZr }�U�' @ 2?rTmoԐ_Yrw⇮ʪV8\*e6d2 ,b8d3iZJͣ+Y"H"$;yf3UZH\Ģ'M�oҪ`y<᪨/)1&4 պnZbA@@(\YS?# j͌1 _ꕏeAh-ec2+�Ot8J7kZ tŐJ$l6rՂ& Rpa)|O6Uv8>{CnhhlA24v-B%X%4v 5EZ)\bSV˗H0_vuH�Ը@d)@NΖ1J� �27  %A7r\h7|G()(ї#(q*Ay0:25z*<Lf@lBL !$0M$ak/ NkW mvJ5R)adyyU%ώjWe|Ix43! ( dHǁo"˅q0P � `<2<Rhyc0]shu$�Ҁ�'qq0%S<cf>Ʋސ"<cBhѩ hgR]2�!A`H$#J©>$1FY>MeEby9X, h aNV/905؝*� B6$ |<h4J $8bM" }(p$Ha Ai".u SNȯsݜL2-nO,+]̠ U;%Qp‡FQH sF,ϊ8|d^YH0e(h@_RBJ+٠r P]WԉlzYP e%&@|P#ngd*Kx2 \8L?c/*Jy?�,9CP�#Z{1,OI"3$@@FNx#{H$F? hZ=_B <d-^J&\0AP__.WR*|/E<iAB1*v+ 6  QXwbGwjbb P@ kO$T素֖f.V}鄥˖¢Sh4&FFg�Kr9ؐ?C2^(4#0P�P T:ya=F끮yj%jJjۍ܄B|᥊wsJ&f�2@ �n7nY⋌><HqoO&< UTf(?JWh,4Qb0=™^MlRе�A'2/?0+CnP?se=ꋋtb$8�xt(=<A OB::,_9guԼz{׏րz^ߐz;v'B]{{ �S2KMMaD73L:sahh �B@ER&Eݚd^ANܕPPg\?pnJDt12E)dU+[b5铧4'P 5GѺKeP(F Bq-O/6 rV7hۀjrEIo֩gwơ+g{z_LxyHTFZV3c�z|,w^Mb۷twY۵=CrJfvM,yc8-xI P!RRFrz:Ns} Y._> tw.dJT`3N3S?\oGԸ %FksSKhzm!P(޾}KI<8ϷEKkR�@A|~?8sbs_ �8#l{<L9[}CCg-O_d 5�B]sB|N~A|e/hqR鄩@(kJYnFFG;|Q:rAc[ 1,Qe4rʅO8lذ[6lu,X A~4g2o٬qs|jR;~Es,�l*#~au||pV-OVa~"MKŋuutw'XKJkm{a\#NJ+_s'Oc8awOsЖ,`mho|pmVӷ~%?W7v?w+9k 3imEXVl;w>#y{uˆ;;njVNWT7/ 2u[{#z z؍}Kџz=\GҾ<CKl����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/click_icon.png����������������������������������������������������0000644�0002322�0002322�00000000252�12061426050�021650� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���qIDATx^ @ RB.KK{N>-s's ԒkWk3$hKV+�������������P2��������������ޒv=މ C)����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/top.png�����������������������������������������������������������0000644�0002322�0002322�00000003561�12061426050�020363� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��8IDATx^Y}Ly{ �w&6vda+5_6ڪjV*Uj%#R~%DZ5q ڦr4TRTI s87ݷ{w6{`JIofvpw!, Z ,{Κr6sovNA Me�Z4 ,_"XZXmai0^rCl|< â�)Pf8: cq>sߟ � "0řog Q~ D�Ogs;\Z"[�d=]7d\;MSSA9Ki˲)MRQO\- 8 ]c pAcf@v&IE[T@@Xa emf1Xii|}^֥aI9�Xtg2x]:6mҏy\{u`Kۢ?=COoӓ=pOZg ԵZ}]=wē}mC_9oŗO.E窚I(,-0< 몾SE0>5`AWp> }KC~O=U>V]]NV}"щY׬A*Dar�c9Pa?}| i\ ]k>)R}VGDk)mƠU@m]"'T@0CBBȽƊ]Ezz%z{ sj:V_[~t0'9 d|f4Ғ5O{5:'>6f_Ct~|It8 ZByQ!L$-@d+}ނləEK$X4`6qCCHjMsk$scfDh|AM`j6A#>1} ဪ* 5Tze ~>x8i_o9@('.G ?^9$zW5G 0vlYFg)!|] ZۯDd@OMɗo^3TSIda pr&eT^v'N6wڶ k}ңov�'; / ȅ4I7}989=efM7αN_QҷsǧibzIZ*ZHU:^sTӐFcrQ_)kO9ھw}A@qmQB^ Sqa�Rn8a 6mѱs[yg^ݟZ][$xZ4 aLeL Bom˩d1Owby`!> qEQr1PA q׍ٮOUŢ 6u`e�C}@93pr><17AÁSKB<|vAȬPVJ)AȚ * I g_{fh @vJ�S>CJxJ*64LR⳴([2Ͳg}1gnB�fWP\7Zŵ/e5uHҘA)d.c2~t so�9:超tPfB=)<r#1}m; .KRs]ד}]X\0:c~?U/8AORmzbXImb} {g8e!A+ɜ"Wb}<;]$mw8@ˆew.p iG"`����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/minus.png���������������������������������������������������������0000644�0002322�0002322�00000001042�12061426050�020704� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^AkAfQ/F\A=/$xLN^I%1D#&n'h0, ,"X,]UݽRJ)RJ)%? nZLw޾| \捻6֯^"!!B(f ?ox+X<}p *j7,Bԛqf1B8S/"bbYcVG{*?#7.oX^j@qMnR`{'\XԵ6hf-XHߏ'qN&! $cgMkWZƓG1] @Ӟ}1?pf`GÑ`u/2NS?ELIq1c&(bhJq5gjd`k*�$sI>(R3Xcl`BWZ*&`x?9zZZ@!y]X[mAFĄpoPJ)RJ){^jO����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/refresh.png�������������������������������������������������������0000644�0002322�0002322�00000007105�12061426050�021215� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W�� IDATx^Z{p[՝t$;Ȏۉ $bZ! ХҲ,nv´K@]f`%..G($Đ;~ؒmY^{H\Gw0L٣w=2 }.mkP5�B$�H BGFý/B�S*gGeͿ|qןܺ뷴޽k_ww}S׵mʵz7\ۃxw|훛U+*J!)xko~GՆ|R{ږ7o*77zz8_,&�-X1(3Bh6~!6Y'ivlԋ y/wtRϐX[PodLjWd!S.Km[A:YB/Bρx>R.�!Gpx('G/|X=14&:;_0ȯw>wnitY�FN@K14<g}׎L6V ~^"3#Pr{s{ꙶ +�\(/o7~gO]74;e+DF:yY]@4zh *TxpǶ͍a/[v)i]֮MMkV4-Jꕫnû.�FY}e=A0ў|=q_Fj7Vo஫VToh'P+|kn. �)QQ1` 1=,f 4L@٫g*91 Y]Iϒ2f2T1T5niֹy%#0kp&g0I$Bu: k.emp;-NNn$XLiX'a5Q Rthx^NӌL<ygg)E 4_OZ2I B8*˲ Tg'/fY udRCUw3WF^�bJ8%HQZz(ip <DS2i3n!ݡx 9,w6xj⻽3 eN.p..jF|t<2ؑY(>쁩O϶޳=cEcU˗8=.+`O:+;n%jl xݼ ݌=5 格IۨaPa_g z>8yn,b <v38aIv )zW4UcI}!RU^6L(cLdYQ럛9D"X3v94 m{&"_o^F{9i (J !5i4q9vbYL*_(C;.@EHPǯhw[Oz*l Yr9T�`2vἉzsXv� >GA ha"+>s6Ed ?l,g91RaR*!T|uc_޼&&R f,qR(AiZ̃ �j a<Hs,Ouoذ " RZڦ>MT!E p($"$dΣґL8e_cׁ]v [Hq+uK玽{@�3GHZJhh}z%plK Ga)U+hIF3d3; -o6)PcE+vy,XL\5r3MVїed27IVsFL /%w!�DPiM[MaBNy r17[xh;{CdfNN,|sXb$oڻ!(tCˍO� T�)eVdZ 旜_}N3 _#'/N]PBVh^㿴ٻޫLOL%U4 `%j(ᓃS3?yNAom̎;T+[VOۖ,4S#%Bު63@0}bƇz~6r/с*@^uʟ<[ׁNM4V0<YxX?μpհxF!?nԚ "ִŎ6o}tx&%zY a(sX&~tӿt%meULYB�W$&1Me@DDG(HqMk ܾecVٺo=Q~jz� F:\vִ$+8)""I*Nw͛=Tjͧ-;i1; R fYquG<_o̠(j#-~ 2gS} Q9vhHB׽�Fh3~%vĴ|?e,z.' Е}>N/~|鰰'H D\2iEo1s+FBtV-XZum횊gA8*-6sT.%$-8٣I}3Rb<K@J`!&)1myI?vY(3`5\Lp$$RU4�߂1W3,s`>[ tt'UWsL,#co, ׭ @S%Rjv`RhT8&jj, 2ZBVTtn^. XaX'1r2%‹ gz˻f8v>w<sRrƧ˪exFN #1MB*|y@NXv*x/-!v�Df ȑu,ҷzɱ~==6v_֝6N)B#!=fsL�'ًz!Oa䩗~J7Yn( ȉ` 9˯]c 5Yĉ]Rtj(6; 3q!�]8g r(sAM" tOL0VR mCD^n5{%Odܡ#� jISfD$\ n &S/=u@Dgqtzk>1}&'Ul!0dI QbS}=x?!tt2w)Vڱ,VoMcU )X3Xynv- IR4]8Tu|Qrh޵ >\l4`ǚǒh7,sV/u5fApq< 'NSX,4|fve"y?`vUX0G ϳ!/] gvpVw6kx kjTMCq6A dȑ%[=tds\ankؗXKuFѣLY-H#OhQ a  (D!Y聅9)˗B_`?'zГ.^����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/right.png���������������������������������������������������������0000644�0002322�0002322�00000002721�12061426050�020673� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^[lUgvf.Kﴥ+m))ME#>H45M}E`0&`hx1P&Rl)ޯٙs\]ҵJ_sf73}gfEYdE[ syKO#{ε>V#`0'0"&kIeW՚77,0HNevɂ0C`-)ƺ]U]==Zi�cFho']-5k_ֶm%o)_(cI2$Z>PDExrS!%RsEPFmnh<VxKY# K,CL10h@ JnA<9zDcs`~i}�iG2I)`eV3ik:opˁ܇Qsgï_DdL4aEL;s3 URk,<p8B#8 B8\ k:Jdfv06aȑ d@oR<¢WQ([JD|5R9%xip`]2HT)44ԙ;W4m^bՓ9,ҀEJ2l\z5ulkSЊScMc2KI{[cg}=li,W� ѸlFwwGme#wmM,bEM<y(b]dgċӱ )@(|#,"bJaK(cPT12_B &b|'OW8S^2Gȁ2Lрkw{iA䀿W!фT2Sya|d:&YE11-PqQn&"A$b`W 00QBsx6W<3:qBm48SڊhYA3,y'N3閤P@V1$58ڰ4?>Q(Zρ*2>7?_|[r ,]@S^�EvH,ZjV?[UitEEuxrW_ȚJ"_#`N˹ Lac(X$ʂ>hʉ~<�iA< EsuaA�jO s&46;-~@& 7`嘛2hLdtdě8 Р1[ ꢡ7mfn@$8�*|qssrĉ zh&Q1$Iܮtkϙowŧ0<S̐ cCCQT.~߅>%۰% yw R: RUIΑa4ύpWLw#q5>SS)=(zdTksY`{LebXlü@ yY_$#{����IENDB`�����������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/file.png����������������������������������������������������������0000644�0002322�0002322�00000003471�12061426050�020500� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W���IDATx^͙Ms/t۞qb id."I "UH/YYt` E&@2�gBqJRK{R`bYU%x9\$x_{$|ű-͛ j(.XG;?'7Ak+p r4~i_}_ְnC AA'H0$ToS|-"7? ::kY8�6@=48xbqxKFܿGzWF8H �Ua) :zcڭQZ}`㺾q�+cֻ/׿jߥpj7nf*2Uͪg4D#q!` `"2 AUMz?~Ň߄~(S@V{J^U}?%1]'fD͊Y7f#g841SӺ  X@Xfeٮs�%[tOL&' !#F|1G!#/1)*2PE":`7 �p=!?/יbÙfӍ1Ĭy WlXZ @wfeC ǘ3H ^6"k -�Uh6@LJGڻwq sk!1cad0Dd`c tq^ǫ uZ6?,y/"X @i6FD4VB\st DBJcHuYUq(d@��.�b EHs#D)!U$�|sP Ơ؉AuZLNB,Rdx hA/L=TbʘLd(JZ4)4iGP}�p4 DO@Cm� v~RP` eUz`&8 (^C*`#t(zpa-<jv>$(fFU<j�X"" 1Y"�ez4Hhx}jGvh:( r2F5V] d"j-S ar/?~9@\|cL X.!,ZGYBXN.7` H68>9$x>'O�yPLҥK vsG"Im!sO q@hjӳh?pvu] H*o˙P B]4VP|TS.2u@vktNPD 4gB`Kt$U.3B-KwӋM, (&F*FY#{c~8 HsQ"`2XD¤Eut| ?uH{fPS"ۨ/yxj!HSdyQM큭-666}H}�Zd+++(e~-`iR<R-}-~.K \tqI/~X| ,@ 4EZ{kSʁtYUU-A(yHɗw<B Mk3h9.S$jKl5kY|Y;�+bV6|޹sk׮F*V6{w޽Ȼ=zك~nk%.'O9uZ.EhJvÊH`<@8O@J''Yv#�$3|`21ib6AY;����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/forward.png�������������������������������������������������������0000644�0002322�0002322�00000003434�12061426050�021224� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^mLSgssBR JB[euM#j/eeLpPdٓ<$'M(y> ulfh '"٨|aZsήd]A?99͡]zύ$H A $H*MZ�H%K:Ljz�s"C<#4ͪyur< \"s 0G/f�J%RPɾRUˊ ^sMMrJr/N,KP&Yh攖ǜ‚UzeM.pqIBW�߽AQYA__A_ R(P`0d2Yg=֮}|iJrIJjJ.1g q|b9.VY|p@o.tΖAUP9tNpmVWR813 C0qpkiEׯLU RosOsvA_WlJKK9/l(>s6' $H_eki ;vl4ʕȲLfD�~w$&9۷oߘYREfx, hFwOx=ІĎw8UVEa; 8dM0Ά8OD ]h*##RF'hg+D4T__)`b5)a6<$E`btxxp8f7|r*Z:tC$ą I@.tej;P#-bct<!0 dϋ L/\9F5.ԭK.3l}.D M cY<+V mmtvu8 9K 9'8r.vG*#%%%}&f4�e&hCǃ`q; M $BC"`9C82=#" ?yi_aQOO7g];:{zQL.·hQC&H$Y P1"Y9x/3Y»%`@hddY,-̝;?[jUybBmȘwzaN&|iqZg .5[ M|H()r8#:e^6;:Ώ>yݼy83'\ܹaGr=�{8 :nلxmk&Μ9lݺ&\u̙f�(Js0^w$Уccc/wΆ[fرo< ǘGN̩ <0 8c^/ޟl8QWw}2ڠ36?=rc?3qo)Lcvsooog>`eÏэ׆ݮZ.fy0i43H76tں~ji8yμ @P<9D.t5fEXxWSSt:C}<v(sbbrbqTVVb΂T<00}̵X:_[}ֳ[Z;Z'O̅344sNԙ[[.uuu8� �2 s5;+EIoܹs"!!\Si8 .8o ժ5=z4d޽dz!NOOq%Řp$H A ~����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/first.png���������������������������������������������������������0000644�0002322�0002322�00000004320�12061426050�020702� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^Wkl\W9+~fmo։48 4q%i ?j TOQ!'KO@?PTH* P#vb{> {c.mc@WM7͜=X:ֱut}SΙ8v;9ݛ(HDA8#gvkj͇GtN�xd& ͑p1nl aa᳾ߜ%]$1K`9ÀGG9<p6[@xHIEOcg5anZ&1`�|E+6t}GZc/vu}C=@_\W홓�KP >ӯA϶=l~tOa]@5!ߢ\xު~s`#?7;vmi^YH�kE�Pv@Fh8ӿIL+i{wS79t�r<u@@ȓ꣰qYH]z_o?x~{ xuzrEQU5T)%ъ䡗a3аTK)xkwE94^ V4$&Cg․jXL+-`5^q!uɦVN5N%'vn-,t3i A25XS"â9-?Vx/ a>t3ܘ֝݉C۷ugSEJe -wdFw2.(JD�"۰dvT1HF^Q˿+57> NR%ាh+wݑܿifJ-(A%8<,N0^J`eC ! GT� yjS~W޺ySKkE �d+9Z\ pv}Q1 3FwC`(hO}0=&)" { (s"Wbj7! ~ۻ@&2d(!#"PE=mL(!XKĮw7BGfn٬*Hc� F5B "Am-}w[d>c\:#Ʃι՗p_sa^c;" yZXdH`rM6Ĩ1z\S)(] fg.W2V,Bщ nM'N BLs˙޷54`ߴZv@6 *w\x&=]pĦ̤rdB5@ dT߃\+K 18/B,.dqn&k(D6֦҉X{6=1qǯ\֎Mf}&at­]u?-D T΀ oR9yq`nmRYyN _z~ '/YLF7(?27/뿻vbpS7濙/tu%# �rH8UC$):y;jN'y룧'9Y,}3"Hg 1 -*M�)s'4!߇@ KB@r$jxާ^?{:9K=>>L :aeqPC@8w,ӚVRJCV೺O5 q.ORek'/;q/}?^)mHƚAHgrkD6;Ry5B@g-޺jTJ6W�|/X S,KW8six$Ԑ{Ի%Te,M"W!&_خOd@ް#V@+;k peT]GBB@sih0o',~MkG5*g¬l! w?�ĢUyI-7ƻ>O>6ṪDNad}�` ]&H@"`% [c+Ѳu4qX4ow =/U H9o4ѪN"?yfZ sMUu 3i>D9Uh4śo<1oJ>m?Udl8?fD~y:̇$LR% UsGȌqS w !ԉ@ c{͕ ::I����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/play.png����������������������������������������������������������0000644�0002322�0002322�00000003273�12061426050�020526� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^W}LS~i !o.S#]1 -8˹dpa2aU-5 t N7nŏi!Zd(,X-smXI'9 }IFaAbJd"22tD=>4{qv\!W3 *#b %)iײeK?\0ع*�GJgKmR5dffcYv�"7 H + RU-kjWPVRSIz2Af%l�D#Ej2)))PSj?߸hšS�7T( yJpy!m[]Buu%O/i\DEd, �HQӰ٭0gNlP.9̲~,B �qH6 [knͭ(ߕږ13qAnPyKLaHR%EQ2"0 4(t߯-],J>rZپ_~9`4Lhfsb19'~n9EO<tߠ,bF 駞Knkk}\j~4 wm6ۄ^̘;K@/g̿f@Jrh媢}GF4111pMTifBhBgQ U ٛv3gN>>#z{{T)5E VF ^:I"X\\LE?vBwWj;&\t �9KJdYo"qD4y+>#<!+fA`p`�>klRӝQ(DihhpW;Qvt*;7H%Bhii4 ,+ 1=g4[ε+JhOid'HETG<^my~:z[ˍq3NZZZ,Sj� 2"/Io0pW,L&8v(`ccw/[elȎ; }rjPtt4_@+'o+؀\ D&&rR9Z]w\;w:)h% }fhd(I3]'^\G;|vVPZjՓ'O.^hnmm]@g{�P( GGGM7''ί[666? 8Jmh<pp]^{~kii_zzz K<ɷ@D(п zJ>gРfVzbٻ򟕕iNeesF$"�=s a#@J`xhK;~W.iV]3P[[kh4.|M�7@@v7EO*ÊAJaޮ5߾sj~Z'4lt Ż ?�.ds)=-DI񳧒naZvD 1 Dd݅;DWB.T*3H !굟1i͚5k?Qrd^%d3`0<5<y8?KssV>]ެ(JGr-aNLL�Auamz>mU<XH mH/vFa3����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/up.png������������������������������������������������������������0000644�0002322�0002322�00000002616�12061426050�020205� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��UIDATx^WoGfkǯرc#8!*mUjPJ P@c*CUB:w:864k'HY7߷Bb&6aoL oM^%& ^&XwYÇ.O}r%ySL>O%!nh Bߔr�[\<`.lm|A_=+�1Ʊ!oΉPA0TdHDmGޞ9Xr(P<H1Vm>SHX C;/ =%@WGf3=-@EƵ~YZt^%[eLF0okID~#eh*hYlZݻ�k0}s1y#RYP p(zႶ pFD<e?H䞹T>7 =9 pVw-ɯy~_#T "#W<Ͼp6` VFHthe%hE^*CAP+0L;HD.cjOSVTTn䖠4^wwGۏl $D5328zL Rڄ:v!#i59?^!rukd ̛MH9a l F9\6C*@g8ht岣iI | $xo ɣȜWK gTzT@Ԅ48<}AD:CzĉSW8Cȣ\ MAǀ^GAЀ cX,CW%`9؉  iy'x>#e i#%xCeMYRڊXx=P+Ō`r[o=>z5 пqi.- ?~ VǓ"ȯ%o$x�*+gqZoI�u^Q葛)̳O/>h9K(}<qZC=.6Eƕs[=P]-D|/|tv�]'@M`Y֭hpL Dn,ζoiFh 6J�wP?(KkC1LCUVĝ@S㵘kU!ji0>Ji<?*}s#h+^hU�znӱJF_&gZ7-ߏ%?]ZTĨ 岋ZPR@Kė9kP@|{z+^Z"TM3%<^}T$LhP/96ލ=����IENDB`������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/48/plus.png����������������������������������������������������������0000644�0002322�0002322�00000001770�12061426050�020544� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��IDATx^XMoU=wfMVMHd6bJ)l`HH], _bbAF$R4ň=~_fݹ| D%J(!(ggg]Q�! D(μ'�f3 a~_X �{J)H_ Ew?Z�a'xNtPE.3 q5U8)Ą 'OLZ>pR-DyPL8/sZHLmL__xsEQX@0fF$qXx7,��i[վ\�Ϝ|juL=bf")tP_ȺA:m(~#*w�X=G0n7V:SE/5G^ cT4=[$ N+NV@yˈ'TU5vϩO+T  NtbVbO>mټѮ1˭{$QҞv]ithVa}D4:ӬۍAe6Ѓ.P}D9Wd];I{& ^{yAYN|*"eKd2b X_;�8͹.]Y;Xvv;V`{8q3&%1|J`yKy{&:K,Ĝ&0G�QPrRJAGګ*$M�P]q !q#o5׋H`P_F�*v_`|Z.:B��] 2&poz4P IJcOI{ QDi#X�N̚'Cj uJ@0 q܄jr8㷐Z7ݍ_ׇԽH =H2[룾_ё 6GC$J(QĿYep����IENDB`��������anyremote-6.7.1/cfg-data/Icons/48/fit.png�����������������������������������������������������������0000644�0002322�0002322�00000010230�12061426050�020332� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���0���0���W��_IDATx^Zip\Uv>^ՒZԭlٖM^LH`jȏR)dJ% I*,UI&0 a1 ɲ-Yn~͹-duo߮}|N Fʕ+ Pas}~"]555+!v A4f25 ǎZ V{WlڴahZl mBs(55`Ws$3$;_L<580x:(CkzVo핻rBI/@4�` I6P (Igs008X<{`_rUު}8 >&3 M|x(K gM~½g;@/066Os3Rدuutt;6~D7J0;702SM%[�bjqH:@A%!D>-:;`#@+‹/bN<y1_;-uwGBK�&#c!Ks:f2 gh&ie K{HS5]�}~׆><<<t|n[oMD000�D5buJdP2 &m7VS6f:Z|ޞU@Q~T+ls5_UE;-"NN?6S,.&6B QLӔ(IJPidd0&!r)RsNna͚"X (WKhϛ]׻sEG\Lj96#ҁ|k#mM`-Kua,4]Ë@mceni|%eXu{{ăO{sB^O_fEp0LRQsŴ﻾NB.#?'T .@fD0_i3?r?8{nNn|/+<`p`~f&U1s W^MFFVH_jL- Y96Q+yj+I| a@,HE|4-n[]lڴq|h8fEP5m[La~s|;CmHL \tj +-9e5 "R*c6"kϜnuK= Ke3ᅅ6 b?33}8O,V&!͡`c Y!q%A�7x<SUyk{Ahl Ƙǩۃ nbCx#vN"Ы#h!ؘWP$ @3l߱}kWWwk?fEbM*3 M�lZSK�&0,qB �*P#xS7L'DD gn6ؙ4롳yM[|3q !̘u$lR4ݍ/JK@9.*�q@\�`bf-E:5!-�arEEpeɔljab6 �\ݹ,+h&Q%Q( GHWK\ VcK{"c. lv$&Ux! 䈬&3i ȵ58 Ɋr:4 ȫADGeWq1SsDD�A.Wgb w:[{ _t^"bTft.vې]Q?>Dt`iJ&N�C cPQYଡ଼B9 >H�O e0EZ 8/tmf0NEU5 CgC&I㪘�C ڻ##9e6GFy${CY2ZJO{ F#jřX1?4K/R2y\,SabT5a()8DFQr3QIYrINEYHOe+z2BhrL ^BwH6j):܊?YJb TL@&\?À|ydˤisj9ϧ mZXu +&xzayjb!E9Qx8l܏LcP@&kh;r)Ed7AV9ӹ< r}"jp�M5{@[d[OW%s)cf*&Sn۶U*-A,egeE%oE`cIJB v )`~=VM_}]- 019)TL`&8i=Sb"ˌ0A[Y I 陪]�S$eF.][worpclttl&:??P1丿W:;۠ؐm-7nAzrΕrDWN\E;v^tXZW}927|.Ea/#/ZŦ*&N"cFݾ?}O|:rC⥉4-WP'g6)k> 2TjoYg>?I8s᛻;Goin~BY@V`)eYp=]oppn.L7 uם=uvבNV)O%o|'t*r=#5EmJRO|@g̓" L8�cm̴*ЩvXkAx!\6X6^{𝾾{Og/L,?@E%"hr�Ci:U}=VV`1ۓǏ}*0~c:;=wEpC �[V(wwMZS (WY+Gk!kwOmkSc"|O{@&g&ǿCϿd:'4ak+tWgx]m;eh<U1xoWtLgb߾@!hQ)vqRWm"<w+۞{^h(V[ P(!LT&kd٤{rJ&ZbPb3[]n y "`3O=mKax"8raozK_`;MB怅($9 %4@SD"9mDqeʋLO<w8?K\n홝;P׃?P\򫓣F/"!g鱱x$gXH8XwWg=v:T\2BAuOp1x# 977wR)5r5!hh'n8�ߥ6I}#/\_hrl޼1G;lhSuJff`p$.>;5RAUP6a'tlj Gˍ֣w 葷J] S._e=Ufuy:r5 rjcqO:x\7N9hX6z[vU$R@<ªH^F9>rITB\g?ʄqP�vl6(y0H'Th|,P*74lnm\nxjqmll=ɦ؛ozr9ϴW6ܧ{ecSp?z׭6 ūP,wB+?,'\e $ol0;H7}k]χH�CðgٿNۢ?tKFa#K}%WtuX>džimX#h4sskȶZ̭N8ʌ],leWza2�fZwy$nP* >91u,t?]VL<[nnM]xPv~nĝG΍+\} 슾pu"w;3|lƷ'i637\/ B& =wDJǙ%//?//$vA����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/������������������������������������������������������������������0000755�0002322�0002322�00000000000�12100017560�017035� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/down.png����������������������������������������������������������0000644�0002322�0002322�00000000647�12061426047�020533� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��nIDATx^SMKQotbM0P~Ch;i@h* Q0 Hn"̢)gnŀ\Xf\λp;Qdh.xϳ||sϜJN| Z cm,@G7 ^ Ͷy%#Q ! if9+˃ ;'nE'c)ͧ(P0 0L3N.&Ccy\.xv4t}O\hReUՂV,}-ۆllNֲ/s[߬Tu]-jqgHJ{8A!o0<=v.D,8Nsm>$Ga r𣑫Y~JZ����IENDB`�����������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/fullscreen.png����������������������������������������������������0000644�0002322�0002322�00000000661�12061426047�021722� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��xIDATx^AH:AgÔ0+$lKGD A(עN ]WDuBEHR muKu"lxo@Cg2m(n@xh.}c3@�uh.I Q3�U[8.b+3 s`5v8,[I.2kr $#}S�$O<_sayHwwg:%Ϙkc1@e5M3�^Ov(4&;Y_+0@Q@FޗT{P( $@RP̮R,K(:H�AdN7pg|M \C>YkN&v.@<; Q<Y<o`G����IENDB`�������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/stop.png����������������������������������������������������������0000644�0002322�0002322�00000000417�12061426047�020544� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a���IDATx^Kn0@ǟIX9 D$\\+VP)abԑcYz~;{bAi*3Ȫz;l7/m@w$ɋb6{"n@kM@B&hQAJ-s)Xbs:!BDD0*2 J)AT$#֒dIƘϼ9qTT {!����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/launch.png��������������������������������������������������������0000644�0002322�0002322�00000001465�12061426047�021035� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^uS H[~oZ6Wb2fb]k? 5f-M [I]SR7pT\DoƖ S(ii$u?oJ>r<90^MVa2v7w> s8^rH )i)PBC bIRU>uFNɃ5i'򘮍P0R'a$&f6 6H/"bR>3 Z wU0B $8,&Xdg7g pyeH6W`m N! >>?ڒZw@5}5QRȑ>>ڈW.,6++OڦKe_zp=.܀ϕG`qZtbj:pf\sDŽ]E}}ozMQy(jU.W $ O`w?|lYNTմRշ e|"fsfL孺|_߉vM^Car긏P [ ]8߃façQL}~Oiæ6`$K';@b}ꓳ"b yP(Qjx|hd`c`oC-1a$!jS* 3Fu\gDxDbqc}!"2YtdTrtqAN͍}xʿv@R:<]4ܪII=$@=W՟%W͜����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/rewind.png��������������������������������������������������������0000644�0002322�0002322�00000000637�12061426047�021053� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��fIDATx^ϽNP+ `P,6LplaM0|�2c@ xMsp0$6a :+ 1ԶA>77MO|%VDsXJ$^O%ʭS>}y*Lj՛^/1 HhDfR^/"�Aȶe 9+l}̆]EV6A g*Y3@6 1P(dt:4Ep$XY X[$ ,o|P٫Qfdj�),OpQabV ׏^_vXiu֛yS޼|^w5����IENDB`�������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/question.png������������������������������������������������������0000644�0002322�0002322�00000001413�12061426047�021423� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^kLSg hRhK�D FCÒeTʐh˲/@1%FS+^\#QbW:T#-^xGIO}92Qշd5Sm#ڗuw3T[\*jY9_a/1j %<WЌN᜜w?\n>{KUqyQz]Ǝga'NåMM_n Gu WG%S#p$.SlߢFfM.;M 5RmVv!JŐ$oyS76T)uA(@m|1N됽5 C! vV}D"baMKUZ&0:ep"n_p#a449̿, WE tZc1oO(9龈 I7fjԴ)9\9=qcA,~kxXX -%.WSEd_ Wʇ=۲?Ž]2Uv-ZSf?V;>]T}V'n64khy3u?xy&콪ZdJyP<* MAD*ȏOȍd2@_^c2fzp����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/no.png������������������������������������������������������������0000644�0002322�0002322�00000001215�12061426047�020170� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��TIDATx^mK[Qo_YH7.-&XE .\[-%J7>(B⢥JMWHi%/cn&!?ܙ͹sFI%+DK V`-B>TM -t=|+51ĵ33m."nd&mDܭp} vyΙ.n@4 ~.-ll"{{[^9]9xgtȈH4*,Jݝ6g9kaArr+1`XJ& X zzp0 ۉ 8Q�S4ihlpQharin2iP�HL@�57^F^\GGcT˅C}=.s1QTK ~H&P( kpy@"SS(۫ZtNd/8mLT1>/^"ڗ*k>æKäFz<D&S<f#?`F5m= F0IqvTY qVC�c;%1?$BߩHx����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/default.png�������������������������������������������������������0000644�0002322�0002322�00000000570�12061426047�021203� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��?IDATx^͐1K@/Ni6noչ' H?n]dUwQP.V{tsd |1<~ 󴳮wpTO;]zP_47 cwI 0uw#%q[Q}F|e:V8!_�L ?%7m[_�p,"Scm>P50�U6I,L@$"&kTJX@B D(C^<@#}no%s)" W=<Fƹ@t����IENDB`����������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/none.png����������������������������������������������������������0000644�0002322�0002322�00000000150�12061426047�020510� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a���/IDATx^1 �0wQqrA C�@s"ܞ ֤c����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/eject.png���������������������������������������������������������0000644�0002322�0002322�00000000623�12061426047�020650� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��ZIDATx^ݏKPOGL))& V[S`[ۥ ]\".NY"TRE\5V`n9=9w;YQq�$uV.A7[jrX`{gk0H8RRBǍʪ:-@l^+B=B.M�avB@  RY,TU!0#%jtb68=6߷@&x>5=|Yz0<uci>7įV*eCC!w:�|i!31FgCnţBO,?߉Wbg����IENDB`�������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/transparent.png���������������������������������������������������0000644�0002322�0002322�00000000174�12061426047�022120� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a���bKGD������ pHYs�� �� ����IDAT8c?%B0j �c=A����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/next.png����������������������������������������������������������0000644�0002322�0002322�00000000745�12061426047�020541� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^MKAn&K E&5 ŠWBV^|ċXAۦA\jr6^r)Sqf||<7 ۅX081JAXp28v\$ueec Q=YϜ}\MB!N=>]Zz~5בy6!B q"̄u%Z7W_8pXjeAGx( 9essXR#с S!-x4#A`oX*EUH@.bE@N+}+p8ih4$.!7=Ui4CeuP 4~x./?׷|ֆ_VI^Xg^+/}egZ|c޷mOnMӑU����IENDB`���������������������������anyremote-6.7.1/cfg-data/Icons/16/last.png����������������������������������������������������������0000644�0002322�0002322�00000001051�12061426047�020515� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^͑KhQϝGB*I":Z1TAPvE|Њ]UE AM Ep/*6)3{=cs>΅BG΁;u=yW]#ѿiĞSK 6ml/9yszOMu.Q бnè0*aC7㵧٧ms$.:=F ?Wbb۪#'dQ leP1u ["'#ӹLdАbڠWL$J7LS(>f@",-ȭ a~|v8^楯Ȃoo?£ #|^wx6-ڷdH*|~y-RчéѦgFm0<n0ĉ@lǞq!k[‰#!de0!>kS6} Ow'oc`t(q5~9EK����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/ok.png������������������������������������������������������������0000644�0002322�0002322�00000000655�12061426047�020174� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��tIDATx^=kSa�؊ASI+:TB8Q2((RkQ\RpjQP,uPP[z^:=>7w ֲMq]݀NKqLl؉fð/:1d,|W֥�*vAA{U_̿IZtŒC�Ԕs#zm)~ `4|HIjȌd*; m'AKy ΚvƤg`VࠇJ͔]6) > RRw{&Ө GmC Hd$5﯊NFz)l-j'^ ]E"KKUt:ub˰S^ EѶs5 ;y ����IENDB`�����������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/record.png��������������������������������������������������������0000644�0002322�0002322�00000000677�12061426047�021045� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^1hQ{r8nz uqj[[sPTڀd2еS+""A.BkjJ!bH># b=.yπm1�ǎ_],J{wW깜|p,-3G)⯭I}}]U,BA'&^kl+7..�Zk+lnWCPQq5.JǯbA=;[S)eBƶQZcvAyeToZ-+ @D nyhJ?ƓL CޟO}cti9_XHO''w�ܙD㭭eȖu䏿z$c r\����IENDB`�����������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/left.png����������������������������������������������������������0000644�0002322�0002322�00000000700�12061426047�020504� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^RK2AYk]paSA,\jEC!^$AH o&xЩK=H@et }"ZmZM<0<k[t2Q�#s)�pX9|@6g؀Sٹ?AtХNZ%~ތ{WDZ0 '1`&w\ -ʔ-?u ֽV9wVjUXiLP]Oi/o2e_5Ip1}H0(Ah�no% B<w;uxIϕ3HQWK_wvL`uFfCM]!U5C5!6OD %֎\х%yTN [vU[y:ml)nf�{o5����IENDB`����������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/bottom.png��������������������������������������������������������0000644�0002322�0002322�00000001022�12061426047�021054� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^=hSQ&/}$Ը"hM%PtrT.A7X q nJD:MQr9ؗXsιhCl2+Gh‹6KCRU!,Zm+|)WPZP*[Z]NbFvepLHݗاu轜~4=w ־}_>>;"mkkxlƶW"KSi{uXUlG UB)B/[w?1�x.|xjj#RxˎCd,05 w>NaGnO6GPT6Nsv�s_+onl9y{${e] MZ&8Z* bThCLVzSq 1 +6 aV�! ~'9~QE(],����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/info.png����������������������������������������������������������0000644�0002322�0002322�00000001357�12061426047�020516� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^kHSaǟsv9E)t4D2(շ>eL~*tQ1t!5D$%/K&64#6足, ֧\1%g._"XL<8=Di58At&rVg yHYM;Lzř}prSd5O{ SNMςw.kww.kVDgisR*;>I=6rr=$Ad xN h,jvWF* H_B  d3m�A Ʀ^ I۵\ y:k d2(Tr0@@|س~1fo xEÀ\bÞR,ˀKl^EMKf20�(z)vQL;Z C$d zN0OQp-  :61#9Į|>q'5Q/AsHOc/W¢#_]0j,.zBrB$L8MCw`y)|&&Kf )k$+L[-GѢ ̞SWY>M}c?=$eޓGMd:C-s9Ņ(V3P 1\xbfvF뛷{8 K8- RG#8$Er/"%����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/prev.png����������������������������������������������������������0000644�0002322�0002322�00000000735�12061426047�020536� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^AkAqWC!*&)%ۋ9]WK>BrI )- m1h~FP<YbۂM<tf7 I?Cox3X�>O(is'.IL%(a'_F"VޔhGQ`spX. \YI?||pGx3D"=Oo+Jn}=0gY/9U�!r+ɼD)i ,/-Yx)"- 0z b r9@^`A�k>Lj<qqހ%kӏ Uoi%p(dVZy0 ƺ~>O5~^O/zG_%N|4ջ'BOSm{0 <݅{JdIkSm/����IENDB`�����������������������������������anyremote-6.7.1/cfg-data/Icons/16/mute.png����������������������������������������������������������0000644�0002322�0002322�00000001175�12061426047�020533� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��DIDATx^_HSQ;nWcשH/BѣFfcAC$ɴRB1\!Cj \s VͦsQ~~ͫw1A,,yv= &>޷Rtn|b OLMܜ-OX|nsfL"=Ȃ@78bE_}E8C*"[$I:$�hZ'G6k-vgge]l'PVTU2p$*@N %TBH5 JSM 8<!# "G(.,߃P1@Qdë:4e?$!Kۉ<`D"RUu `R4;iںj#nch4 ƀrn6-qF/�p^~`CYwbnnno?6N#�򰭤|g97Btg*��x rCcmGuQr˥;=]ӵ*~ua&Z����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/vol_down.png������������������������������������������������������0000644�0002322�0002322�00000001123�12061426047�021401� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^MkQܹI$LV&EUEAr!BJAE)UA5X1&ZqSI΋8q#:"u9bUa]ѩ;,Z$v??z`":ѱ01zܞFLJ.]I&y K򗖁PS#@`{!PUvEQ։4DalBQ$If([ 6 g֯mhO$qhR)BK�Z-6LcMesY,Ay M@8T Jr"Ypb,dY"N4LT 2! <G8kܧ9hD2!Jj,*T*�qܾbcJQAsfexff 9Z�g[sd͖yhB7ݸ~+ N�m۽3s;5&n3 }.= Z[?::Ϝ:|jo`V{-%����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/exit.png����������������������������������������������������������0000644�0002322�0002322�00000001452�12061426047�020530� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^]ohU?wm9" ըzQQ/K 6R1 L zR-*CVw՜RF7fm |s|ysxTL]j|("B@<Dx|:͝-^Ց瀽jij4Ɵ_C(h6 (Uxhs,J3PAުsr;+/.rcjDkqhkunldjZ#_>~|)Vѯe2F9.}O Gn˱My^;+GUfewdt}[UPN[w0~}=׶H/gw;KvuhA$ٞM޸3V_.e@n;ݦZN44p(kQƀRz3}jшGP! m l �.YvnA$K �\zϜB�PU,i8m|JRbdݤʍqd07멜=vq">b7_`杬b'Crks7<T87)XqFC@.'nmyQXJ4Nn,ʡEY&Lfl$WO>&̬~EJ"ZWi[ LP6ejh8K]ӥ�RWL|ٵȥ ཇꄴW4Dc p_`~����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/folder.png��������������������������������������������������������0000644�0002322�0002322�00000001363�12061426047�021033� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^Mu#3tmUh<HH,x/ҋ(ă'<J"hbAŏbREĪ!.,nwnYnv5|Of23? &&˯|ҽٕs`<aX&HIv`菂hw0 zݡUg}?ܕ[-m#l" d2Ƒ|_lȕ?}݋&ޘL5vD6g1:z^8$rtj4öD.Si7#3 uRQ ́3 KOxwmiZpMA8: w� p|Wh#,,Cw"*/ ÅLI;G�'Nlm?Ycg/3# Rk7'&<]i.r4tY &*U)Q@V#f08 Vq`Y(P @Ɉ_˭3 1: MV;et 3$jc™M !QZ3L6jQ]צMN|j~|y>,Os<o }~Fkozp4uCp\O,;VFw딊[ʕ/c5`gwj%k寔~eu\e O����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/pause.png���������������������������������������������������������0000644�0002322�0002322�00000000473�12061426047�020676� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^MN06'`G%`COs'mo5\!R[aJBE"Km'[r5帘'b~~g'ya6]=9Ίb Yv<\-A)Uw.RĠQZ.PF "kHDrv"Xi9"` cEB{JTZXo`.OR'BZݗe ,qzo;V ����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/favorites.png�����������������������������������������������������0000644�0002322�0002322�00000001066�12061426047�021562� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^KHa,ӼTExYXaE`XnD"*f!#R ݔYDV03d1X&defb Ѱ<lRM{wd9Z2|;*xJ{ jRG*kuF#*2W$J5t#WD0c2dIIdSR1\qGBA?5zﺙu'wٮ%XE<%5::ʆ\Rh3W;3KqNNUVF]B A N`M .ٝd62DP0OЧ[[io0}yG6'x  _~)+$'Vq !0c cM.Gf xQt¬ϛ|0oQ˰fv04(A݇Ugs捸=H؆TII8@_\@܋LZe&y[H?)B����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/vol_up.png��������������������������������������������������������0000644�0002322�0002322�00000001266�12061426047�021066� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��}IDATx^]HSa{٦RI0+"/)R2袛 ,i"}AE!}XAIFQ fn2]]>B7vXg]y}?/tvvW/ں{nAjN 42W`( Y7 }<شKnv)VW_zzA+lO�,K۠‹'&'Q󣴥yvX!�>=|Xbf!IF@( !dۤ@V# !.Xp kJ`fƃ D@deI�W@ht?Ǭw/@ʠ<& <89c\k=/z**4CLO{@)) �EQ9?cDU77d9 ׄ bɔ|B ""H�8޳>5ƜcCJJZdK 71RJ= (�t>�$IZf6m1??X,x"177 ?uYF"�bVk Я@ YN=l+bQ#D�6^r.`-r*1:jD&*+w G55:P Ǘ_x����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/click_icon.png����������������������������������������������������0000644�0002322�0002322�00000000162�12061426047�021651� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a���9IDATx^1� U bp]u!!5(({RX{�7rI 4 @ j`L����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/top.png�����������������������������������������������������������0000644�0002322�0002322�00000001015�12061426047�020354� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^?hQ3/IFbm1*ZC^BAЂP`@?"]D- NՄdpP#:D\/;I[ ?}y<ޑد> C[ֳl tPg ҉0 BB'שG[xu8d:[i -Zr)m ض]٦%F\pi.,iƓLA ^g&r؏kg2~#cןˋ/婫�˙cH0زQpnr~bςWpv vEfAemj}+1- Ȩ~OBR0efjG;rit_~U[]YdT1(>ޏ|\4 F]l-砒0<O TUR3*3W�=~{)`۫Ύϭ͢ +S͆)O {;|7(6?f����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/minus.png���������������������������������������������������������0000644�0002322�0002322�00000000330�12061426047�020704� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a���IDATx^팡@DD[0H _DBp|ǐzg 5؊dvAhq1Pf}-6b߉2eFdrcR쏗a1YC| H@Q@Ș 9D%fjRnh-aPƏ ����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/refresh.png�������������������������������������������������������0000644�0002322�0002322�00000001470�12061426047�021215� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^[LigTZZZSu`!!""X"%&\l h ōNidbb a.YHCB<"xPhfƿ cLKMM^6xCf#iNݮ+l*K̫W BBkY΄BuǚT7Y %! ) (Z,k>4j1Y^i8dy@E;xUw7𾍖 QT*3OfO!D�ZQʬ2i ;,)>Fqszjب#q/ ňav6hzRp~DLr5bs`񯮐Kav)nr/,yt4~ KWg9`,3Ay`qCF$@ &yKN$A`-aԥ[u=`|8ŷ{n?XRxEXܶ_A�B0 G}쥕 |P>, atǍ?Y%H`]7s//b!Z�x\(i; Ih_J&Qk|vv.Xr W p]mA_.+TK H8ZZ%W|>@)M{ +g7'GzjŇ{دtN,>V=a|j]33ѻ5أ EҾX�Pb`0:L:茘I=tވ &#y@_}`3($�����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/right.png���������������������������������������������������������0000644�0002322�0002322�00000000675�12061426047�020702� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^͒MKAgtWWe!DAx0ҹ" =,VD:tX*^(vu <&N {ggV.Fi -쌂j&0gR*6AԦ w路V@C*[iY9d &aPxlzl&.aAQ`.|p*i!xO"R�фu^�5qFuVOщeH,E!o|}.cD>o-pջB.7<]J[dD%H'tJ^K<{QSl36=hл}d)*Ʃæ6O1Gړ%¶܁q9@T++.߁qZ����IENDB`�������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/file.png����������������������������������������������������������0000644�0002322�0002322�00000001076�12061426047�020500� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^KTQs~c2Tp*VֲV""UDЦ ZkQhQREa%:-r|zőxv(t`s]+�<ײ ͖5X*N95[/A([(eNܪ48gb5[`imw`OOLjAǁtZo7O$J܃' p.u1]V3UfN-46^Aؒ,͙Zt_ =;ݥM(RZxkE@#PC8?|]i&o e�QV\2Q3|b4R7tG, 6B�{(?T$`4mCG6=xn,O"k׃ɉWzy.n zKA|J_5~-qWr\\di&1HPJhCrn�plJ@+?�;όB����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/forward.png�������������������������������������������������������0000644�0002322�0002322�00000000662�12061426047�021225� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��yIDATx^K2A;ZPCх:l7o]JoVP):tx=jС_/Tx 5 ,[AB&I gfeڬbVV=1k_:`4Qw] sdB|Izf  D"!legX�u=kv8K@7& wEY E32;7ʊ$}CmЖ _@$Ѐ190e AՂj* ¥Od;Mɽ\./OcM:9;򉢨5T*?~W*4JѠ2uj|Л&]DM߇3�%����IENDB`������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/first.png���������������������������������������������������������0000644�0002322�0002322�00000001060�12061426047�020701� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^QKLQ}oREbĠ!`Z ĆOM4OؐhuPSCF76`ؐqt{�SttkgS1${37%DM,ʦ*A,M?[mPhEy] w<6r ldg8BU;~:tnIA,ZodR< F•v_tTK@UWu{mwol@<9sW Hٽ/(dHW|7V՝C:aPeYK Q_M3?rLM% %#%WkBR;Hb;& D1!} u<. R3g61LDKPT~'~Z<i%zigHD8,–T͗ݍa] g_$X*zbK!M`�m]7`xT[ T 8摻C0'�:F> z1����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/play.png����������������������������������������������������������0000644�0002322�0002322�00000000616�12061426047�020525� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��UIDATx^ՎK2Q{g$Őj*a(f I)`Tclv!-[&Pqr!t:PIzs`kdh�E3>; u?iI< À׶D"Gť"bǷ$XE),v/g-4ȲY`A�l6Ly&]a5gԍ(/i,Q7ʝv}Cc<&rL&}]icվ8N\ ֪�rܭ^so8@CLsJ"q_)uYooh*RI_ӵ"`VOXowy%����IENDB`������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/up.png������������������������������������������������������������0000644�0002322�0002322�00000000662�12061426047�020205� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��yIDATx^͑=O@ƢX R񥄄7v.0AMqsŸIr^ -s=w{ȉWNd|� ȹ"Jr2(]Ox΄ cu,$iz١oC%\=ݞ� [~it՛^BEw:<KGݰ%U'z<'bK? ˁm�O=>Zڋ6|!46p{apx�TRNQiM7 =l1  ?]`f7`B0ZP @Z`0F�#�QVñ3XRiNH}lDkɒ ^&|0lɷH����IENDB`������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/plus.png����������������������������������������������������������0000644�0002322�0002322�00000000531�12061426047�020537� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a�� IDATx^Ւ=KA AlboD Ia+eaeo?4Z];‰gV[ԁ}agwX<PX"&F{Է!nѪ=@e9>[DenBhwcij*LOMrhT4,z@)@yWxxakRE"4H34q׋^c5Vk/ qJi/:apc3*b"1oev> ����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/16/fit.png�����������������������������������������������������������0000644�0002322�0002322�00000001404�12061426047�020336� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������a��IDATx^mHS{sv<#u7ًU'-14lKhMk })SvD (LA|heojs*X, |٦{s;紉F[B?ぢQ^qJzT=W>TSs~Vvi*ra3UY[/*ĥ'G &STJAQG *DryQkͱI8A �PH$-Pѯ.GB~R^$7x)ym rb )BdxcFcbAA 0Ilc8`$#sqx.D��<oY&pߎσF .{ʲv,H09N|;eVǝ%d(鈸`inؓCc9xs:_-؁cpLavź``f>mлQq`^w/)(7V_5?i~W7[r2943Wk4%e\P]Y0ޚ͟f\//h4z냻R- Ԍûʿ67>״/-}O(+}ȴܻoD�$_H?.3IS%`~TP:lB|~ 1R&pP| 87�辱 ����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/������������������������������������������������������������������0000755�0002322�0002322�00000000000�12100017560�017040� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/down.png����������������������������������������������������������0000644�0002322�0002322�00000003253�12061426047�020532� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��rIDATx^oƿ;3HQޔ5R'h_0ZKB@yH?!S�? (ERA6pvCj-KIqR$gD7=qhzkH grΌDSzѣG=z0̃CG~2|ܹl!»h!-�@}[@8"ʍ$$p9r2.NFP=D  ߾ɶ{7A�jdz,FRXh |]?D~G$�$u/ I�}v[}9u&HX3�>/{ u% |ܺ, J8 OBtU@~f>B-ش,�:U?.J�,;`Z-21JD[ H~8Vݵ_96m৏HQ.;JP`:4 ;n .q0#NbI1o&,_^E'Fw?^$?޽]6Gj2IU \'@t D.C$EiBI;9O$O}m? Xvs}BZTk5S!Ttbx%YO@x~jjR<F@SVH> z @2 J_]&{EPv#}u|. ;g[QAt܅i^3Lܵ1'"�tF�89B(yss nC;4>[T2�[bh+~Ǚ?53Ũ ZM8A 5tHЅH<hMJ]b4wBAV3`a~v8W&Y@z2y%vMȵ)𛠦@U2 7M:xR'0$S v-%2|M PQȨT;u8AOnrr9h*je TQ*�_t[#RypUP@Q"Fg&Fï NNFii`]_PeZXL9""Oq>4yDUmtʆG7B˩ɦqf2W@ȤR6q1]u_;D' }�%> =3TKxlk*lE;v_?>\[�`oz`67fY)vofE0Ly6މiיlEe~n>LVm-wT,R^y# Pꦺmñv;Ays^-<^,@oJPΌjrQd_x,MRV�6~a>}^+V3Pٍ(L|Nptb߯@ݶ5Gn7K7n߳C/Uvmܬ ð6rvmc�?:s%Ǭ];segR9ym+9vDnVͱS{v,U7K:qǙ^xY#ԯu#iq9s}7fS\sw:gz/2H4~F[0nǿ3@o>g~L gr. #T�oa xW~[ѶLx O7x_$C=D1����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/fullscreen.png����������������������������������������������������0000644�0002322�0002322�00000003073�12061426047�021725� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^klTEϙ{QHE[ݖVJciFLq]oD5(4<<Jn{MɆX\{wm3mrsrfY!"Dd  k"Fm3jeh-6*U ̂hESXW 7#G3'q!wfK{e72!>3S!>2NfaerQţ#ڀ+șAD$=# |8" 0nf֬)B\\ ;1ڣt*1uUקs'1q3_<Vj$0\qaJ"DEj|xP DX,!7j%ʈի.dVVZ8طoz=xijq�G@ф9l&@ ׃Pg6D1L IG.!$&B_4 I3�S b $׬?xo^)1Ca,ypr{X H*y/QCw !2 X<--378j|՗ V H U ?M͕ۜ7Ȁ- FN<oliSۯ}؀?rZN{1ٜZh[l4+R+((t1ABx 4=G$M&Ϝ:ݘRdBcV} H.+H)I6&*99LԈG3(̞;]hs\-ũMkN i�@)j5| bk4&A_xa95:1ݿ5Q~GG})vF4MC]�g]][D~±r3a].Ɠ RӒ)+;EQAB :Ik r`]7m/9n=*7/G� ?h;:n2"#:XVm"eNrj<zr>� a8�IKkˏP{|([H) 6 Qkֻ@{&{ pX^mmQV׋p�o\ùi�r, F%pEsJŅjeKT5gx1 ws fm%[v]&"J"�q)\3B 䯺fyLOOAQRos/D>)jїz hd2V{ӀZQ/pF/p)ToA#Y LB$޶HK2 " PI)|!L?a,܋$pt: n 7#KsrI  ȧD<wg?�m(˴݋Fs-5-f\�@}3*U{dS햷y;*=<v`a4۞S Vx- D!_yl_����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/stop.png����������������������������������������������������������0000644�0002322�0002322�00000002206�12061426047�020545� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��MIDATx^jdEƿ>'I,(+ ; #^^ygfQ< Du@wEWg.ӧ9XLlIwLM}]U]g?*JRT*JR! �2 %p�>�W>==}ӷ?g6`ÈȽg=o9ky�G4_cX>lK�3CydE۴X �  #/W%67ފK`f!l]�)�٠QaM"888cL PJD`"x`b)C=f(w"X-` p:L"/%�1A#d|.ޯOn)7"SAȑ\ @2w�L<ㅉA7A7~¦R GDbʢ@7 2K>DSc[_4 2A%鄮}4>�y87"#"$L3^ޫli'`fcmJcQjsr?e<+Njt=( Eo^ 6Ť`{x=Y q"+IGp։s uxgiYM `F\G;euО6FzPM|8O39ֹ�FFQ8rR9Paؼ4A׃Ѧ(!sqZh)A�= @߃`"0d<̃%m `MPA1X{#I `mlz^ aۧVXkei1qp(9/3$$p ZWCJq Xd6vz:28E1 9 LJ6} D#"(MӊMLYdVxLj,Cc[Bdt^(7@!%},Y:=(Bqka] s?ܤݼMMҀ__ΙrgK<y1s^\J?Ń/>~-^nJRT*JRT*�oS����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/launch.png��������������������������������������������������������0000644�0002322�0002322�00000013351�12061426047�021035� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^[ xTս{dI&{ł"Y$"gyU׊֥Z=kgEiUEEŲ�b�E@[ =d}yg17( ;7 . �AA!^;6=ߎ H˗]I@/�Rh"+nM 6tPHD�vlC>H�@0ӕو=I,π-?�it?,�d `m^{D6�f- &�?�w:e*;ND26� {-p"$\@ptR_d1> �9a A,+*4Jaw"T ޞsA�(_.M)|/,τ/HD% b1�K^`s,*tRm'ʪ(Y@ycyQ o'!1K_HjZp8� c1g..,k*̛EcTepUZ^w:lݳ,=tT0jxh{U =!e?X�6N@*d^ p\�x(h(juEfϾӠ'-R%zv]ru¸T9{Z~[3"vﺷJ٬p-܉mR[j(![*WoފEߜM!@jh,1wD)..B\V $�Kw㋲֎S'ooH9M"W*i+Aq3IɴchlaFшL;>P~ۦ2�LϚ{2C(g>ib-Kkp0ƩKy98|Ѹ?>_`gഛ#]V$}'%j L7Z;8͞pmV&ű#;`Av+�ɔhR/37l&lBӂ`(k6^siZw h,IkayNmiy?XI9QlI2:��_ٶiCӀBV]$'ۍn?Y|c??l0~SQT Lt:f0nMCA @`@g�fe1*?oQ;צ֮ɺ #)Lp*찛!*N(luf088a$ "IS5fI8t>خQ`/|8N{sU/,u.T)�ѣP{kC?2IWNr/ bbq<^ MՔnݴa-+*n֮(·jׂT_uSm]g3ʬ76Ʋ!Yp;5k֨`% ~硻 *0g@q_m1é�zt7nњO%r>![qtҫ3&NdSk/Z;PU':KwP11mǑ#'x\ 1?�|px_M`(l$b IF>$�Ih`19@Ѩ cR}NTזXUQXG-86��gHxZ[[w4a>PXtT&$#84'M;-(`w7kOGbRf It#@u&#f¡ w snC[G^f32D<iLS=8p$E|@q̿Xh<ِmڿ îYctK?U 7iOm/Yu'E4MI :&!фrvT^\BAP B1@6SjBL{{hld^mʰj&'Ne]"KFR% [viYcPSA#lZY-ml}MC%P"QgqYHDSw7 �X7lP^-ou)$ͭ}h8%$قIQ}Gj74�A^usA65L 9  l8Pnyev�ٞ!YMվeO>(  :l)7׿zVŊM˴zYݦ.n/�]ep +z+ iPy$<g*I2 !4 R.L+QްDd:ϙ >{ V\<OxkK[.MTMTzgfÞ` ʴp8΀׃'i@)%?雓%�ASNC+*(gu|6t3f07\ hjAgA^))BsK'Z *%9Xoキ 5Mβ0Y0=&1/$1pFB0ʊ op(ٶ}nj3@+�O/QF )( UGkKcm<da+lSýֿ>׈s$ Ovހ,'$3%c2J0Dd%z�P"1``}`(Ax6dzg;4jfʢ`ٖէ;sg̘=4a^%A@g:<3(78T3 d% nXEk+ \f jgA,& /c8�q> N AM346:ug( + j4 *KI�<kwlE38SC 2xc"yg73D (`l$3x p"$Jv`>,P'<(lVcBm8=A8f(d@<@3Ů!9"fKKݖ>D@xh`(o"UdEШO@O'r`L^4pf &Wi87X:|a1@WTT5k\Ȅ'ռ7/y8 \I-H<Ck<$vwFB�(0?_\<cvv6tÝ,wgwjZ^}!L2oNQi岩6:s zSF;ax a>㦘R(w ڠ8yJ}UBQ;5)PN~˲߳!Mx<Ӽ>GRU5�2yrՋ%Qo44̙U@|z�_h{_@w$�(tXz,+BKlѭo=8Z`o8̊)QxBo_ڳ54j efJuGiѢ[*1}P<vtcm`f�qHm|t|z0^y} ׬K1timD"6rEk'jv"g,ıc_?KB ܧ('5ts܏{`Y F9^fZ>`0+ˆ?VȶVV o?O+2kc*�^](JOiBCC3~ەJ,oS)IZg3~[& {nݢLߡ ?2hwgZ'~Ͱ%C+Q tuPC`<FR8zUU[&BznUn^Ue!Dj4) ]PM/D9yN)VJZ /t+�\0 W\fEho𐨋 ldm8x;<^?jǸ"iCB\lv T:G,V#=}}n\yyiU.{*l~2�`9d|-FddXbhI��C8|0lh m.RM:E\'<^zi<잏Dn5\w<< xxc9 _)%L-y=_S<o/?> z1N x ɬgwzpMY '?"Up__/y+\{^�( [oS1eHosX 5`sp L&Ojx TފW/h8u7_kugfL7r;Cݩ1�Mx{0dL~Mâ%KOX3 WZpxT%)pr|IAb5 R@Au�k*E,,ʅe9{qEvSƆ6D z&MJ[ȷV+z�ҵM<N3gv?88Y-.O1q[GO=)]= 4&2y8t>E +L&*Bd68O2:3,P*TAF qgʴ`뇻5@TqՑs2iѢ۳MѦL ޾0@)AH"&q㲌+eaT͇;{$G,}:M|xoJ8rLAGg7^z HCt*+n GEqkZLpn�q9.d !n7j7T+i �}Neqyt�}\ue6]g$A5O ;մ<JRY>'qawxq5T{|ۦ? y7ZL]ţ2MR&.3xf;}wD v>DbIs6m3JfO'ţ af�m@ȶq`=�kc@V%/̏|T�W.&cH_v;݃s]Wym�=\��T#}˄qclwzdN3zr[g=7l}bgd;Ǎw$fZANV}R)??}]_�˫!}kض3g)ych2֛,/ڲ}͑} @5.L;kic6ꮖO:R3zVFWk.f� It[?/9{7E�:Lô9~(Io$|U7?`gg*P�?a´(㻶*.}tΌٕܽLyó9Lnj>]o }ps ƴ{&^QN;Do"G?imopw�49�'G<iinkkI��p]>)W-0>[N*)k4> )@zzBlDkM`HbxB4%oGCu?8!`BYpG0{c3"ttuszd>{&Y rdS|v5�W:ζNJEsI Ш� 4@/=%z?xpM*.As`[_qgCKeBl3gYVb^{gCaK[iiШhTxL=pܠ^�BoA:H�5gXݞ=V"fJiTS5`�8: >D/?/VQa ����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/rewind.png��������������������������������������������������������0000644�0002322�0002322�00000004615�12061426047�021056� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� TIDATx^mpJ+ٲ,Ӗd"`pRZdhLKtMH!� L]L8дNhLv6ZgP <_AƖ-[ܻUcea9sGg{E$E)RH"E)RH'$TqY/ގ!'Wa0O4)~č*{ orxh4&9f^̜>gʕh%L&_ ggYjH0l6[juR\fMOY-k_++mI�btp~|ZzZ^3ل_[˥gs 0`C(&o7 oqQbVV> zzzFŏ1y&(p|öEL^)�p-qVd5Z?IMMJ֗"0Չp<?4Awo"w `jP[ rׯ_7]-QeR.{L V2X \a0ن۷oOFwhqл\VV6E># |$^O R;`Μ9gV$cRӸRdخnD bYIn? 1C7"ab*.)@LpQ}@Y"6l2Q?4�$۔aIapN0~__^dDˠHNK<(a)�d7B}ybE, 1(#,  ;;;pWE K|.3"[-[f.F&MYVGAȀ 5,/Sؽʧx8ix8;AXTK[f1ƾ~} YhB?4 \t *Xap(y5H.Duc _$[MGxaD^g |5 zMq9=$ˇq*v$C$1<A"!ѤZMZM(@|nEtcZ_z5Y/>|C&w{{\.aڟ!:% Diһb &'5/tm#P05ChAMπH%!fYX2CE-K0"TS i3DGN}֝;g֗?񁈓Yb.2:@NeIp$8*N5dTseuN_>> xH1j[_QQqqBѭrOr'sId$&Aݩ3Hy A%bAE͹?w^TT<f>?flB{ 0ݱc/㩬@ P}k'M^xag0 OÝ#R%I &OZc[/a_S=`֬Yӻ|fyҧMx-Sg*ElG wuIcY)ɶ-J(w`WOrR8-_G0xYbE'X91u##}zd\z'޺Yy+bYXӵ9Y@, t(');FJNN(`04akJJ>:z mKH|FX @=Hԓ8UҲ�xБ?'[dhr�OB޸ a?IpL<45-W79? >vb#,X[XXbZ[sf>n~kQuv΂ 'IG \d$M;Hޓ3 NO| i;s`pL}z7Wb,ŧo#FKO �& >2&)>Ս{O  @m;{6͓Y3m=~4 BQ:=4$z#;֤RS2 Ǽ =#[gϞ;VS'޻C_ LJD ݽ&/_xbhp oI'NDЧEJJJKfo}EѴʕ U閙>P7oL\=kE ˆ|(}�ի|SS1qޏ+?iw:G}}}XK.=9kI׮]{(Af~V[[X{7Nد{|m+Wg?\'0d͉z1]]]ѭ>W8YQ!'_  ,b�A|E)RH"E)RH;;نc+L����IENDB`�������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/question.png������������������������������������������������������0000644�0002322�0002322�00000011406�12061426047�021431� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^[ tUnU-/ !!2- ؠ[wO}Z{m#.=L2jێӌ=mqDdԠl d]^UwWSUф9߹Kޭ[އo7pӵ/Ʌc�iƁB �0 !Y->Ckӊu9&O~ܿu1#/;=VR:Tп2}@(GGW QТW6ϴtK 6?^G$ _@íc13IHS FQ~YVЊ}qQ}':z:(Zϙ�gH<1&*+#-zh~^z8k7:\4I+r.~` `k{p|/%A$34>de)Mw?ş^$Z�zkf#}d2vMـ.≄O*Q^шϪNp$Ƙ;3 i~}0?&c|�xt +l|xc z�C>)FW){٥/om}'J6avk7@Fhz) rL/obs<SrU_ .@5o~xEuc0$OM1w<Y6ed~h<J mƯ~3qKB@e{\ɠ'RLwbx}X#տ$I)D`&�ePrM8'A.x8}{Ӽ֎~uYcWGhShȂZI{-򇏟ocÐ$&$$țyQO!țn_Vh&ʊr-"h5uFE{;UJ]%֕ 6;GAS[,A2!KUSe%UVϔd;.u.Qn`6bׁzHcw-Q k͞B9oP聇23A2-Ã#/r\,p}r_ٓZ:qկj--p3+F~,%!Q.K\@6aZbo6n Nx n]藀ۇ]IIryEړmXfh: [#OpѨ|Z1=7ytffN\=IK I&!ȵ|fOwX<kP\`e'WLg2<1 E.0_dc(+신ANbG֬MEIlN393:E]QOh:x(+W3 �:67-b_كt"/yQX*m>rYoupi4!E}Ѧ@[8ޯ ס'sݞkF2x$póo3PO{g,h/6揳ȟhh[2flx\K "&p @zpܑm:pt%+4<yS1d@g]-�V>X!| W`(Y<J3i{f"O-W#`xr˴|wİ<9Z}$oe~eM\@i60B&X.~ 2uo/^U-W\",(khױ-S_*C/+:A:h6EABgh %&l- hh!N!Ē<Ȳu+7ŧ2K ƶ Z 색e$pS3/^&{ى y 0x<^T6w`ͺx}{^Zկ|Vg@c=nR1ղ3Je(ɭGxqҧ-_W5܀9#0&T -a<o<۠qؖq["Ĩ+ٱpGTMGy%-[r#}n^<ذf_&1{"n 2#/ۋFCZ34ʌF @KFQߦO? |I Z^"t5oK. E0qZ�艓$, 0lL�^&ן0 gfg$d 9Y%e16bpD ?fcSu W2Ҹ^BcުwE%loq s<0Kw Y'@4'qQd״d}lS(YHLEG(f4@p x0v[$�2"j0 e ӊI E5>f8EpR|V-w` "m{��E;bp.2>CtP" ' l?h\rqѿ"s:XN҃S%@ϯHD\@H'q܁2'Ï WR<w03a*rn@,wH.;SԳ�<{`Oᒺ+F E_tD"C2!SH\3:sw|^ו^ "L"6' TMe(utG?ia{G&B=AkSZ)@:B##_Я!ڡܾ6Q0Ae8l 8@A^ma:ְ51A�T}*DMfoK::=榃>8Vפs]8|ة$( W l&kʤxB3BH$Ml> M9>;z2&1E5+//J=[õ芪ETi"uFP5_N1ep?|[pbJ{|]^aym҈ t{F%w<"ͫ iӒvU0i唹@'I:vxmCX~{{Î l8@f٬~aRv%s #j#1,`֝*L*G7tuInb)hk۬3G�ܩ=HҊsNso|THpTS[\Nw`:q؉M`h{#L4ܧҔ DJ'ŠQ>pۢ| wV{܀ϯ$ ōCb2G_L" H_LI\@hWʽ7vb}Qc%/r֎P-4s%@DdL� ff <s)Efzc4w%Y 6"/vAA^N�@0D Ym@+g1(c~::˳5?_Ž?�q.ƽOn4p383Oq#KM`RfB7ӝhABhHTW+'Z+$yomO?C?8]fxQ.@*GOaq4 06Rm98}g*4U U85o߽Sױ'imB�rd!!\"a@ TNxJ 3g�n\8FtK(7"WdikkP릊 <D Rj׈EZ$!IK&`ȁ�/z]m 8,^~7e]_txcq%MTk3yD>tdgiMSK0"Le@"'A}ڋ0\ruUoKOz{\A/S֕qMn5W{'=�0dp~wl0>_o[s94+>z^R"(L_!|NՆ{\C/7 /{%aȆ67K:sv -#ŢiɳL @6oOI~P/��/�_襃 g <W\2$o+'_|cfe؏` <_-oh\ NzPR yӖݧx3oX:gXnvХnBQQlUOL@S { x`1-=G_}ѶWwee" F *�3/o卼'3=yg)WO:q81wn&ȸaێg흡P)i i'v.D\ eMn/swL,V3 ɥxjSkG6\<FD9�ν99eg^,+oRiR6i@qlhhBFlUnjpˉwڏlXm=c k`',?-Wzǟ=ye#(%8| Xb+TUm?TuRm8Ӯ�<[NWlmxoE"4n_01 qx0<@=Jc_v'-P}`_g̓zTWcHGm4USMKUwpCC dfnMh&T*]b.: Fte6S G5t "As AOg( Щ~a�evFd����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/no.png������������������������������������������������������������0000644�0002322�0002322�00000010060�12061426047�020171� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^ypƟ<6`ssI d6x#HⲓT\8[eW*@*Wf樵NRvB#;`Xd!"04:ftL$gد꭯x0?rpXr1F<x 4|oD7U̟UYW4hYUUF[k+oh{Qt'*+oYnܹDf~ЁmBhq8t ojn?=?EO*Xv7 8k9Sxv/mVs`zuukxWAw�ׁnX[oٹSQ;>s&t.TUMV8W)SC;z𠶷Af3*<?cѢq .^"ء"H4 G  "s~L?6wHw7: OwvGxw!{Dy=qTuzq$<=?OӬq>tucpgWOD\SdIGX=&<a?.wU`g':?�Ttc M׮"�&xq)X̮, p]T�Ņ EWKC.K:'0Pq׌WZZb"YPZhQU]"لwҥ9~tVy+,Ryi\g*镤}s-ˮ)5i@s{ cE>gغ7$�՛!e˲i]:0OWU<QQWpwveeuE�b_,vt}aR>oȣ�}IQ\`K{(?[p2*)̹sipKJ�fйތs_uߥG?"E1!qv(\ p!edDp+d;cΜ\?HV8 PY%|Պ Vmm_]kyŇ/9_{$so/>~ZQ.*\KaY \c?#"L3'd!I+w mthZrq&( &9*h ׊cj^^l=Ѹٸ$0 nif+&BR!ArOGy{N7|"DphVVKM/D(g^`Qy`�kj|"PkX3tmN`g:D(�o l-= lԩм^:<q#ܸ9<Yٚ5(aE\rT_Qa㑒9FCXT?"\lHܼEsP^^_: W^RRζ'A+DPy@=%%Л?1<륗u[g"t1|k("lJ(?Z1 ] <OO;8{-Q{>Zr-1{l$XX7&Dҗl̈颇 M`TP"fjYžE={JB~2zjr=A�4`ς܇"׭G\!Tvs/CŋL@Nh\>}^fe!D-p0KqcLdƎ"0I%'};? Mu:rʹњpu {c6,Ե5Bұ $Q!B6xT?y[fUEJklD+{6sao"Ah,~Kx8Zep|6Bh!^ׁ%8gU#P#a<X_owC/6{+L)MJ�x۵)OXG75zs,b"�Ϡp"qf uE*ІT+�4>pw c#ϘaRwy-APVO0dV%TlDL)HooRuΞw= 5Oh`x˧p!ddEy>E Ls # "HKJXJ<}@fsb{id,#ѷ߆<rh{H&hjkQ N} .J o�dewT^?n_44@Y\0-9>b cO=5 o9!r}Vx62{3@h�+>Kxfxd ?7A@�QDCXdM1đm۠D#7, fD{_ʺϣ'b{^x]Xxc)kj [*D̵ַk&WQafu&"Į;v*G ʣoGnЬ/m,$2ta�al|3{ΜA(Xy Ga HZ0JЮk(5+Fo f^~PE6k|]{D,g8m% Hd !4yAW =t`E3g=O.1`Ld$hS9Aa,ģv֭~H&vQKs_Liߌ :M[M),o%9y2w.S|ZźښM�6%7*!WWCn9Af L,TR؃7N:qKcoSTsݻ^DBgV>~®7ސ= .R2׏ޠof"$6s 2H?~r q6W;m>'�*awJ4qڴ>qں$e#EÉ").噿pb}hy>ϣm9 05ܹzz>ǹ;xOn^&I?U>yR�8ii"O4a4uP mh M>~ xÅMDI3+zFWaekj~X/yxFd97{p끶PLYYū)�?ǽ)sv{斳#\lFm)"0۸1)xgQ&'S^)^c$%/an!+ $IU7 o̢`rviNE"GU`wzO0A<!ҥ>0[wa79t e EF +B/JH(y{bs#GyfE* v ӯ}8�5p۶ݻ: n/C-- w~%\(BW={[d $Whc`VskҢ¯!|dL~(.奥=s˜Ai鱄bWxǩSꐢl|xl Ż>Zs@{`}�(_HD˜x\K�΃z'{^cE OJ�)k <"8 �&ci;<deU} |}�n"45D(?"8DAfvv^.·xz=sxh1v *],3<( cVvyɉ v9Ҵ�l2ߗ^>φAs |xgn< =>;7~ZIig'[[c @5^G)bbseSƍ3\ 08w`/5Eh=}q_W�'= ȣ^ G3#L]\-ת>|hqmFСٞxhƵטi}J3a-g�F p;qmA7w!hb `7�Uj@A1c/q^25sF[T����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/default.png�������������������������������������������������������0000644�0002322�0002322�00000003301�12061426047�021201� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^Z[lT{ϭԶX)!$& ăK<(�INƈӖ@->9Rb%&@<'hLd<(%(ҙ^k 3˞17w'ͬ[ ݫ**`TB  >1r�qF `vuu]S g&3޴hkR]]iFN'nN'F~ ac{8}e8 O/yBFogΜ挱p8|.48oM'!21R<"՗$K\i@bll{`wvvNT�;v5n~ 3D"Nȉn@n@sY~>2ϼZr@TC}>ku/"7&'(D&rڶMQ;BN:_ak;KO�=0{nO"@0Aip A5꯫c=(-ZV54f<To5kò|totȕ#He^FŢwRJ 2!s5 U�k-|̩*TAP3,:J x_:?!B9@ 7s�v2,XȆ.^X[v---\U{LjT� 3m޷.~t}[jGmM2⌡//.*xT m72"@-_)'\-ۦ'8˟LBJq h*��s"iYtwwJyAo,#FI @[ Qq�2Z oiPV,ş!hO1L1 T�PO�%N-~UIׂмQ��T:`VxN# HC9k@onB7to7qh]k$n1A@ܶHzzv/#N\,<qΝ.D(ګ!O(& t;2IhD 5tƘpzu~v7N4 t2|<$GL|QCuMEn)jjj@%S%�rQ{_-MNrXj.ܜ3I >%Cu4~cۺ͒F��JXl5i7>'E@JLX{3ͼN V]Qº_x*�F&@ @+Sng!sowPaϋ�CM~a~:"=N"dbv� oW�r&Y6.++!& � OkMY LiR@es<;�@W,4]/G� t.^oDrsmE>/:>ko&H=zA^�#iOCi'VV$,%Te:999k֬&D]881ή i iq#&Kmoޜ8x 3d4fӽBT466F_ !" &IҦIqe:>pW<:p Dc$'!W\ϭ# ͌UkV5~aιAew'N$O7BŹ V=^@g* HHgAUTQEUTQׇg؆����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/eject.png���������������������������������������������������������0000644�0002322�0002322�00000003756�12061426047�020665� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^XklS~s$vRID/@RC'ېnJh, EiYIaR!!kik ؔ%HB||=sbe&rby{X@0`  h4CphhKўD<fWUU5n޲)jճ{I4xl6[-/ڴYڲQ|A�Пu Z}0! Vw&Abb9} rSׯ[�hB%S[\R|yg4 B8NAGcjjjj@4OV.}[; BuҦM_v\nL<ZS(aj*2ĴXZ STT}oͺ h5v[acH@$0 gvrJ]-�P>)//n�k^ Lyee~hiy]x<Ŕvh`Eoo?tgq`/tco>;0�L<jh`6W/l(X!J;ű>;�ZQ",<ϺDyH3.) ~&#_o~gx|@5 p!X}kt4;]s5>$8WG_FFFH^nBWyaws13=yO9hM |?B߿WHiiiKE|If8#j<I6IQ- t_TTBGdǭ[;?$-v:O  +A  R6tI4#Ƚ&o}_�˫ Zq竪z]uk>Ƣ#ɭ}R%Nz1+%yAp8\Q;f3 <ct#o9+>d﷾~0>~yxh4*A,x>w54SMC4P Zʒ+ '025y>`08pqqz@ccd29wʕpu(u'ڞ(g,�ԧAҕ+W85>3`x^2`& |eXD $|iAGJ'$ҷtX l2COΤo߹E8ً0+J�s 4`=?8~9 `rrPR}/R?Cb"pHL&@$= |uդn%044TbXkںM*/_Lm6Y% ?n]B kf:ζ1,oѤ9'}2׭Xe*n-h (HRӂjhaC߈̑#GB9/VK92~` ^F֏9�\&Z{`s@[ܾ}; gl6 HqnWb(}Y|�W ^tɎ"tjjZ�0Qx >=[m~8S[YYet� ϲg^ui2ﵿwb|kfw.�o6˽E�A%&@T#ԃ{�]hI{ZQ 2 nI]4@DVRt͕ĸb; Hn7<K^+RR$%{zHD6x4V&ieYyP%Î ;B:MGpΥMT_htɧ+="H�3* NRܫ!Mڇ~С0%" BB{`Vi]@?ꎝ!A !X,Y�ytt<CBܸq#aÆO0` 0` XH]6@����IENDB`������������������anyremote-6.7.1/cfg-data/Icons/64/transparent.png���������������������������������������������������0000644�0002322�0002322�00000000302�12061426047�022114� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���bKGD������ pHYs�� �� ����bIDATx��0|="gS  @� @� @� @� @� @� @� @ U}a����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/next.png����������������������������������������������������������0000644�0002322�0002322�00000005721�12061426047�020543� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� IDATx^1 0�aL:K8%EBKc[:xoIUėA?4)"""""""ꢪ!wD1۟y1ˣb﴿GASks5Y[#XSf7ޟ)5}_kg X3&+ݻe$ْ-Ke-cdM!_d`Lh 0 !)`y^aiJL %@'ؖlY9wd ^s箵W?ν[,2b)]\W̙C,\n~-'O— 9bl ȟ={6iiYwmSL :Ή9cllO?4Yk)?p8 <G?$o~2irY鉆e^07770>ۚ|_a!ybɟTR|fC~QQQ85jIx(LuC4sRqәCXsfͫgjkkNY~ǃŌ=|LEŔSN�IIIݦFqS;s"QHzv9 mYRpN];czO4i]o /?n]Q9 !-PZZAʸk)@l$Lŏ?ݻTUU*,*.\z@�J|yD? 1+2b(m70r' ,?m4ܹsxd|,  !% L0O "Pdfm,\P(Y=yVUKk[ V>>z)|*p{9v,[̀@ r~7dv��L(;]QdaIue,[3'9s )0L|UA>?AR |UOl6/,~pC�]ؚ� p{$w:æ@Ǔq$ .߯_D׭{my4O)yz îÇe�N>| 2- uuˇ9*@A DQB1$ UrRJCpiwر0IR}<= ZLW-Z`rTÀG)ٽ=z~«'%_^ PTY�ؐFJ5>b8:LDQ -!7</+j+ Hb!pRN<U5x~` 7youL٩_00!!t؝5dgg!@j\5,ʛ*9f肇VN5o+mml<mEPug\g*Ѱ00gi!/7on}v8Abalm31 $Jz◍P UYE]a(pleʊ*Ҷe+c^JxB-EKՈN@`{oy~1ې<<1F/ 9j@45 Me )p&u7<Q`E LgnSL-9q# A@ywp4bF-,^%`\eA;wȉxpEſ�]vP`{%I oŇsD�DMEʳa.14C`NqAumk[ ͉EM 2󇆰۶oOo4E~�>EF�xPyA߰yZ@$bOtW^Yt]K7tS';N(j,b8E"Th{L/Z p.N< R $5\۳\_dW3?g//cxNzbŊ0u�7^�a"X7p'jA(89|dV BDIR"nVb2LUb" C|+IP|cYY">xc] @*1zUw@a=裱cǎ!X(dEҦ"WlUY`"gϝV:Ouf ?e7 ZdI8-ʩSihS*(!CMMM/W*ɂQxu8",.�$& B ;l/E;zXEcyyϕM9 JGBҥKea�WM�? |\}&.^N;zl* �p`9I̭JjEwH _;"CJSJ# X"D GL2P;g4d۴0 (js8�XQE�g+ϟ*t* vî;$ <3 |A(**Xt g|>\ dc'FMfǯ^!63|u3Kмydr D @ ?b|wچ3h .d%; 0 -,2f md<= Ύk7%Jnw\P2N0HQTגf{c6I=$ي:`U�EA<?W/BGQaP555C:`"Q2l%FV% {q%V6QϡKF} %/] ڃv{"BBX�<>lhy;5uE"ᮮ.f{`3|yrHCoo�uT�u7ѲƷa7/9Cqr CMxE��9afYQ&ݑ"qFL8a\~=v_{v t̲Ip4箩n{ޟ23s{${so���\Y ����IENDB`�����������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/last.png����������������������������������������������������������0000644�0002322�0002322�00000004116�12061426047�020525� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^[W؎^ n4 i4IiKR!VPB!ȥEC+!!*fҗ iB ^7ދ^3s>¬V㌽3hw3YG3Y>;Z, 4hРA 4;yxO/aXO\�>x}wda:I :28UXX �茆< ̃gmX˰yvt( ˗\b\Z�&Kxd}'wm )&2pc!6O<s7aD3W DY]ݎ}{wI6 `>!*D' "yRhn])EM*0XG]R�d\4d>]no]SW:^읯T#a ̢jOOX!qqf�Bu. A$2U<s|_oG3c_9džygfTsVL栨0R(W~/D^ H�DC }CzE]!'~teMGOj pG??{+<^J{�glܸ{Yx_yovD:seΗ oXފݏoe߿\W/|f';?)ԚTmn&6tECl"5!y|t},W|#zt8霂ŦaU[yP !v$34Oe֬^R8 L㛹Y 39{/!" ):=+ 1w}amzzTTlz-[zd;{sn \ fL+d eLNv <}d~qMb"]DKK v>/O pu.p_  $3EAcjRw:cVM+D2[mML?Ja]PTx\-A]rY �C.PCzU b| ^9G._踮5bRI`V4k$M$:ȹcnua; *9C%�܊\!wa`�"�B8Z(FFbH Г?IVp%�AW$frG LMF|^9uq AMAI% >i34�#_BvBL2FE=vU19_ ǵT*SFv)`z�DdvPB|'] J<)1oym*ggfW9v2鍑W舦C@:pD= ̦pghW~1h |2`̶� #c qO:;i75<qо|Ӈ>Rx5ڴNG6: 28pͼGW sFxKN^O1.A;WaZMHp7%بU~lZ4#e68 >`n Z�Vai𭘦(JFN|9Y*AL]B&AZ483^-ӫzhjOJ!*A{�B'q# #uʗ8�1b �U[|S�z!3 a:xbt;U &pfy,W3M�w&% ݕ%I$' 3#oʌXk9Qu54Axa7(G" %=r4+obe: vDj Ϲ,σ1*(:xW,}YVr ifgYhq|񫿍I&, qN2soL8?[L[mW8Q($BNbuG6ך̓/k R@ק����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/ok.png������������������������������������������������������������0000644�0002322�0002322�00000006656�12061426047�020206� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� uIDATx^[l\y[3$I(ɒ(˖țĮGIc'A  En �-ZEni@ ڠHZu]ǖ,P)nfff1�Q&UDy}яhV? �ىTW/Y/EàOAIP,1Q33O!Yh_>m~U!gE +$ȊOt#PxmA<'=Yn$$vL5IMZfC7>rL2gOBoX/C1B$x4ɐxxC"rYH1cŜẂW=iMDbѽr ,y!\Syt(e.jy􂣞3wh o/R0 [pPc! x([@D GvYb"Sać}v�SW>+ŤhW1ÎxwMhװYi\Ëf{%|;FL�n-mPdww㽥ރ@nv՜7氓yeu3KZ)؆-]>`+2 M~݂ohw}BɹI3K3M 1N:n\ZE jx()&[J 3R$f1xԌ65V|JS߂t+tv=Y.>}pm3;j˳\Z,xØpqrsh(r+z,߹_puqOZOيX#" u`x{ww^#;G-gGϚ0_W_ uSr 5-;+Q@raHk3ZYb" _'*_~G>۷mgCqefzs^Io8[N(cuy)2ķL\;ic߽=R#8d'}3>b;!~Kǻ]nwCz RnË'^WcfYvN3.X@U,jh"G=mZټ6JJwbGjpg^4$wނKmyPxғ,X`mwm8{H!F/ņKN:uʲ,*!H@jm+ss¬֦VkmI0>O378 m[ӂ}^ba_pCܦ0\0ϻt풓Vv^eR59ee,q}=y"m<kdcKKɖgsYo_o,-ٔm j#9LKf}YcDXG  3j*xJ,tP( t&+vm֬kc4KZ-8{9TQ鐯#^ HEW4l.4.V-4R`&+B}' a }'O-ٔ vw]=JKKEyon{YEEQcaxMjiwɿ;qֈ E8oiҰX[JA>IbB5D#*90%!)x.Oq;HJZV<ʗc c|I{N?RQ 9l\.WzѶ&1(QRp5lv(zg�htĪsDC6b>Hv'dz.N(72T&Ucs1\E|Sܘ<@5>1JDıȤLU5/wƜK.]z I*)g8C؃ݬzC(ŘG1(-srne:i#TQВ-hb%O,E"` FM'l(Q4C2i٪;ͪ%bN-W4&eLzu/u&@ E�-]6o]v# "D{ dFTڋYA%mP# }" mA@&1/%L̸9we:7d.HkCti"Gm�"GI)є2N0 4q.N̲)5']M1gunHx�R􌒏)y~;<@@+1}؉�|IRè̌)9{^4g m&otRI ״PA"1QD/=:B\UN;m544$.rYA%,J( "" G9 BNxAu䛢 ͪYvMyǜrC>SАwNtܜUYvTe,`+}#CD�MĎ[ jXp̜q6jr5n^x'EK)a?F0�`(rQC `^ݢ f6易F1\f( L̨vc!ߨ ka[ 9G].a HB&Ր3o@MDdo`Z"&Q?cfАtC/ JMZtE�&(b qhZpt5W_@G ֟*XFM|CP.LjYs^qՉN5kEx XRSp^{1C"I:^c5siMo'oo_ӔM"E[]( G܀4⤫^vI,|oE K;.&0yeϻ «&jtg+�iڢ!e]v!_3� `iMU']sN[Z|"HQ]ԨU~kwix5/UF5P}iLekbȃ+njܔS&ljב_;�nT4yp5PG71̘a « O 9z4]H5Z$sEQ㎸,h"Yq'-PF?LfPՒ79W3mMT [u ,z:&W-XP++wM6"ܚʍPâ=hbhj5yW0M}�AC4mLM<*ͻ┊{՘6 (J%LHb 2uSk^)heToP(35ݹ_t9U:?']ouo XPSuhZI;U̡ ֏\J~~?>|xKlE/ ~/>>ygxZcxPB1}/w]FE?BQ&jm G۷[x7MwtGw?Z=vX����IENDB`����������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/record.png��������������������������������������������������������0000644�0002322�0002322�00000005435�12061426047�021045� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� IDATx^Z}lTU?kNTi X@E4?6Hu]d7lLkH vc0$n\eD UtJm0L{aNw ~{ι_"("("^J-3>мh8 l�ciJ#Вhq4(20o��f"�>@(�з� pF d(yGE5h%�˘ t\0�ÀH%�I_qܾx+aA\.WtlllZzS83V}G2yO#!OqLiwyo*T0Ύ /Xgd9 Ͽ|0?%h4kM�& MŊV!mf],:: Z2 z& A� g>v(f^7tLQTUٹDq3nĻos@ A)a edʗx4::=rE׀4- q僿%[i,vJ4jf<XFtBExf"0mP _BQ'\UZZZ<(VxVgM1]Q�ű[%üz<0}=r$aE귯$ $I$�Lkkkmc*gԱ1|A+5f va=PlQ'Oϗ9C �n�/.X,#./nuPZnJ"^.Haz �mi1m,Qמ?,K b]]]1`.]ZYmNsOr @Tqfj!�pv8Xc@[$?;w9|)+Vx8ļZݻp!G3.IqX-Y"0ccM2H%]8߿?a�XVe)WZ<J$r<I\fy >'WyhEVZ%_~E[f8#�p{gh,7ȸw00ctyr apy={pa�=+{ʖ,q҇H7ɚ"d5f&bDpg!*(+@c3W+xAx]la;+.�Q' *-tFĸ8!*p"H -I8ƕ;}:GRpv�p 7*+AŨ[9۠!E AHGfBJ h8sT2KEl LLI"}>FO@# DXe?ADr�; 7�Ei<>H}\-֡i>$XWz{A=}(WYU̍f,LDXu Y"EPD*ΫɃ`(>AGF@_q[EQ}%k 1N:\²fd8蹀@G#&ι"r0f4?FF0;vT`PVV$jj€.__gvwsr%f6pNcn UU[c=2et}<DD@31)q\ $LeWPRd�>.gtpT�ӊ<Ld+e;$KLNDPTJa0BGk$ 1 cn" 2\FOqqU{DvxdG5MK99shs$P>on:N}]VV[[GI0C$@ ;C#tW&[E=�JJJ⣏%Iwu;6<$6);<rFܸqM~`0hkk`'bXy.r*[ y s0;@:yF>L#3fv⭷ޚ_�Kܛo}*MN+hYi|A> 2JwQY_\G>ϧ@,/�=_wioP5-ܿwJkU <>}ʕF[Fq~ߡwe˖ěH$lҤ^eխ^cx%bDplyFsY_b?~[tdO{ʤo '3^ nʖ-\hI2J_mr�\i)3fc,~7tuXx_ ˗'x544$A&߸3"f/xd ǽ8֣Q#A=LqΆB4wgv#(lMVlAGOnη%�}cIc:ȼzgl,�%>uUUaĿ,1~n`gzU㏟Nݻc۶m'!M.Ek.oSS(W_D1B~q6'EQTưJ&lݻ&sO{0qq=MO&�nkiy[&: ,md{{\a10?$ںufgUUɌ84J͕N7PD!2"?Ɔ'X|~O `\�-u=]>("("?$����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/left.png����������������������������������������������������������0000644�0002322�0002322�00000003501�12061426047�020511� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^mLƟ{Μy `0 /I8nbGU$/&F6ʩTITNTNUTrcrq35+ԱZ O5Y2eʔ)SL2eʴ>vg> Ed9qJ1B$='PL�ĠS{_$0ڽ!@odwgYѽc+AqY?uؔH~gY98*t 쀖'4%얿T+*,št ~PƺC{| ٠{K?llp]Lc<cl%6�n೔Пwl#;pIpE�mDqy^|"B d7`^j6>ܽ u5wѥ4r`�]Q�}C* uyt:yslV+"43(T �Z7\Ho:\w*kdT"Lzl\-c,6>\x}k30678SIt#t -B2M&TXu|NLԵMRIȨj^GvkwyLx0PT�@?+Kve}^H0f ;`}o,ftx�[Kx|[M%[,f\#P 0ܽCީTtFUBL;@§WG >t;l9ҽӔR)nN^`�-\=C'k)Hs@6b<=0^hmDv'%ڗ*Q(JHm5/66{#ȠQ  WBo7o{<Qzk"hoF]Pu~U=e+|7 soDcg p&:cBS'* B#E~uLhm,49yYCх%GS ̊T ك�WM$M'}teLO&4m͢l"(P5M+ᰙ[˗N|V8}sl!4QSiE`Xt{ɤ*M,K/$[M1~g>7~r٧�6y\SH29j;f ?el,Eg0>E];-߹qԺPmhNU (V@`l( #7_=w\2ُ|mTן \8}&hKjedgHens9J7CYoO59N^;[q@ rDGW'=vQM]QV0VJr�Y i> /; gTFEcc$I 0`ǵ}9R>@A,L7}kfU5 ӜK`5{ mHsܾaय़\J[ZZL'5lh ,8oW qbg"f57vX:W7e2P-�OV?8x%~їI'߿XH my\mwX+p@(8{H@)tTp : BisZVFRw߯/,1C ]pޮȚy z/(c=;Z`> !� 8yL,Sa�bы1&XCeʔ$ɝP����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/bottom.png��������������������������������������������������������0000644�0002322�0002322�00000003557�12061426047�021076� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��6IDATx^[]lGfwGBiq]EBBDJ</ qT@J  "NQ"Uũݙ9dvw+{U'Ι;sff F=C >عKg K05sto J!�N=7 *Bq֮s+ST7 t"u"]ʈhe/Ok#Q�z U`KmJq t|gRd넥$� \)8K !X@x-gX- Wn<� �"@R|-Ѻ?aPiˇx!}uG$ɦgo vfVol>( IaKxk~sp[s^Kk/|i:|aqxW;X cB`qaQZ؏ OTN></}^[kzF Ƴ{ѰnKd}/p;^dz6<t,@ 2v/B&rE_Oߕ(`zQC: ]C<BPBibxM 087:w{}bce<'4x@ZC>%$F'pۓh*K'WP/4J'Ɔ/F(q`"rL !8H.%-H\K ;煥[޷tp/n#1zĥӦ<X-!j4qg+| B 0tt2[Rc= =q:_(U? FMge05b/M/C3/LR/<H?ã1 TI/ώ OӠGyL2W_<~$lRTXd~?q#0ܟA\XxW1gk6*K.Ϗa_x, ܹ;%Mӎ׌Z$؅@\Lݽ;eIl?2("@6p/n0 T\V4[&g-HEmy|Ts!0/cy=Bui4%irhYs:F{bx( lxQR>OfUhC,#J�IJ*T24_-Q-IThD(nGBhet UNYF^CHQHu/EYGy 5#ˡ/%$ْx< ߝO׸_ ��5Rh405/9G>wlu~[߉Z[i:؈/ӧ^(W*&r%-^?fڼ˯Wp亂m92?-8gtrp@$oV&w�m=l[1^^}b[�P[u.Iw-Bl&6܁<Տ/18<jUyן1 B$E3CR[Yg?ܚxC;RT_837=Z/ƝJbSz^U=m8mpS7Ck%>?i)+F Z$HI>^R*ڮw֗ J!vbMԝ= ͗AD91oݠ0pMJ+R{iJҡPÚtxͻ+SM="m1w߾F.WڲB8 ror:uh[1N <ӷy>fҘB7} cbK u衇o9����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/info.png����������������������������������������������������������0000644�0002322�0002322�00000011060�12061426047�020511� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^[ ՙnUB7MC4K;+,A ELbHNDGx�uщq$jƌnjˉ@Emf馥Yz]^UwWUn3.ߵZo!8rri8Be4�c@h)"TGwBBQPRK�}%JP?GĉO{7":RDz$K "YA0ShHx+m6N6uaĐwA=5}Wv;!YSfM.&A%gҚAD3v?=Sǡ2N~9}yN4+p/!/s. ];c$ N6G̫;-m1P?q_9?pHV;wCNOh'y97;P�=rLb4^x3-x -,Y0h0"G)OgOJtҧgx:}QkX<B:13a%=07U`lE^9؁67?KAĒsx(Rd5GgF wB4TY ?! eܬ MyS*Pֿ^y "֧Iu?U5?YqkW*J{WnHA@&lO|عp (+S^px`XS6>XxR,w>e}Ly'Z.˶GxX%Ӿ$II f 'R B,rr-xEMV1�1ũ|<axVm_<_#Z I+$ 4/ <+@"΄cMy^Xi:i,_ԏ+ݩRj.M|`QKoY} -1ȲTY2v^L^1SXȋV7_mW, W)CK{hL\9g0hoz�&�ĴI 1S ϵ@mTϤ2cل^xfһJ>0ܵy.AϾASIOLEWI\9y+k>+IQ.}nXrŃ̍$BV]=s<2|,z=4- Pn@@ƀhD_\1 N~ìX0m("dHA$ "CX&ԝhqݜq2ɪB? </;X˿F,xzR)1�JŢhO.D"!YA)i [6w/NA 2F9x?7ۿP0M%|P50?=~N_|ٰ?AM} 񀗹:b> )�# uV^�V5↥`J663#[ܛ^P[N 3-666خh3^E$a ':%;ǯs`GNY'ʬe~D\u?fM*>//n 4x|Х7 }# /_'G'ϯ=t<Ҟ޲qa`)ʻMYHRt <%&iMdN ~xkI pǁdRYBxwݝ$䕸J fxH+u]>sAAL;f$$ n]߻LCI1:�s A>ώ v?lP$U=_f O%U L <Ka` $gRX`Jո�& NFgL<U2N'49sj@tTCa`Ž(E5]�221lp/?&1 r}^@"[VO�fD'6 W= BȴnA}8p%{h`:љӀDЩb}Vx8xpF Qd\Ym&ۛeƼ?>"6N|a?啢vdȘޒ֎b4 #NHnň΄k`@DL䧒ԜR31@7 Oh& I>nx�:N[7 u&`AoH[ Z)Yb/H7<ddR"A @:�gCtS"^8Iઓu$EYLod<!G@$ ^e_U#iPt2Дl)'N3h# )@ v=e7!p7 L$#Nwɼ) qTFN<ԧMM$ hG<g8@8Xue)GfB9(w@) lRvaX]H1�Ѯ ֒0"Cp2x&  4[㝺^7C3%_f0tV 9_ZX@\k8D-d8H'@۫:?oIqD\pnP[+Ł# :յ]{�/v8u*z�wh;eB@41K(|A@DȆE%vN)>, "�"ack{2\uXXjlyoNεFS|M UcxkFec/H[aJ. 0aR &0c?b\%W! K=/ Қ�<i[fjHM?/(vf t܉]蔐7m` <qa2&R҉(RZy,l5i˒ CK{~ݖ}a֑dUeQZ`0Y<ѝ(c**~Heq42XrDv>U><4).Z^c7UZNAA.Ohc*p}C|LNuJ?4n]-iX¶;Bqz6�� @58WN}[8k;: .FRrh b(흏SˁS;LuyͤTm{慃/-yu^4v }mywO%ܞ%7Ź00O��D"deeq ÖsB,nO¢Gڷ(WO:6cnpPG|~K$� '7@,·Iĺx-}$ik T3a(DvhK뚃PA >H|hmi4y0pSd:q@rq<b\MS>GcsB>v@"U %�?zH/kVG?UUk.rVjXU+$5sq}B^wՙ�Sƾ* ͐a湣\O4E񷏼,Ñ!ZZcn{pMږ:f�X8 $Yq,H<yZuc6S% q4/�P붇^QcEʖ7BŶv7&` 7dNkV')4N3/�{~x* /XsK~~p#Ʀ^Vy}e^]flY% 9Y�_u&915[xcYCI絘2\Z(,a<&tFe'C;dG޽ѻ W^Ema~-p2 `*b=1o2src-^U?nrN@=H��B#/rV$<׷ |a>:xJŘe5?g18ܺ>67[ck:�)�wj0O^E*_RTtT6ڄfopPA@ŀBC @4җz}E: ) =[WA@J'~Vvey9;xrNhLS0Kܼ :Voڋ=AmmE?{dH$WΆ�Y�>uD/\9) e&- Ն(MYXsXc�Oy�,,-*:pfNL eψ[u۪MT-k:fu-'>n~fO*<. B%e}"._ko?eh>=٪�4ƚvEOTmlz#MDžEc<�,� �Br trEVQ(%TP+P d;dc*V%6,hʛY/H]*;T2ە<}LUy*PEGFܭ&Oq'CPK'տ" % Z�*�Ih*PdѬ����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/prev.png����������������������������������������������������������0000644�0002322�0002322�00000005555�12061426047�020546� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� 4IDATx^ͱ@QxI0hc9H0{heahB˃XD!ŲDp3c1c1{MgV?3ߐaUMftͨF㌕^ıbʣ[` [D|Om|YEaauoHGJ7/s-ija?wdhRBFq];]zw^خc5 PQP!AP~a~LCAMJK(�-i"hRRD+HWX1cwfz]鑮fvfw{XVzyf{,g"$͖[PP0{qâ#5K.%�t3gDԔWYl2m�&;H|f/Q^QZkҒ?&$<<eP̪_9+ῼv=Ds<GD| Ct\ip*,,\XTTE=;w`%!tRSSӜNgٳu:Sى(j$iqNH01?? xvɔLul-i\ݨ|U#/J?|hJ v<O\^^MelΎ L0^ dtt4P(PUlK4˒Pܲ^h-{5$ xq#8x<? >&�dD qC+W ]]]M˲d6em*V`pܽ '-�߸q#Te`x 9 0z88K xbMIJ%Yخ(ʒ5%Q$?PyЈ8X( ***v=ې oiG{DW(mml|IS8n* >bPlm{? LNXѳr' nVI ySqQ$�<Xq p:�c!�DwIQ $Z2xsP^VN pXP2RL`rb퐃% NᓐizXm#q ~Ҭ%"3GG+jaݺu*t_A$$!B455YGFFAUv© 41|Tm'*~lj6YO!�V*@`BđQ1|e!T5)V!  @դZ||qA # E-V(@OyB2j0%Z3[[ۄ!Ѽ"RJ sk%(dbv[m;3g3oDp Dc� /*ؘK?E9>Y8Fd^?R`DOP__|u:<\E% --.Ɗ$D)Hgz8O0t췞0#k &S %<?D- A" �9}=sӦBqDڛғYO X?k*d2&ɐ`S{5>O Q1wD$ U!st^Qzž%0bpS)8Es:5Wo~=Y$�%Lqz �JOD++d{;ڶ9"QIV;M̨)+c41\`ФeDJJOr |,"1�)4XkXesn>�L6bWIg{UM`D,f+V#<%϶X55Kc{za_ߟYZRjK^EoMW1=�+&2ݘbŊgΜ9W{ѣ|=ߕ/]`el| pTJFp4_1D@Z ݃ ; o(K\v%I~L@i21G%':-` ˗/d233jdgv޻[4$EFбrOsc6l\</tu3E|H pN*Tوj$>B J:׸[)M/|ξ=o"F0R}`PlQ f/nw:>#87A fDTT$U{Q?[l=8WSzO?;ۏ2d6B�_G%�L(s k5 B5=K-;˵swБߜWeq} E!7.~mMyuCCc+�W6ahX%qŭ[JJ;-kq8M.}#JWmb2Ւ$jɅxbAkM 4Ş_=|>z(Hpl$j( *W!Ebmii}gaݒk"ϧ8H  0hQȍ_[[{S‚eDQ?�>!2%%C4 4Q\\<;00`5kց˗/qcK++~gmCW\1/mɁWuO~UxT@4xWݕ"�*4 'F*+<vۊ"? 0(++C?F^oK_] 3�n p;뭊= O{vϚL1D(o-عCA\~]ɱ޹s4z^Y(P$IY`q?L; 8yme|<Z)ځ���A_ai���E����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/mute.png����������������������������������������������������������0000644�0002322�0002322�00000010520�12061426047�020530� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^[ U^}W6 :*q XeM$12eI*bF1AmTTh9#t7@7-ۯPB+)}n;/� \ Ry{M޼u [omM_.|O�W6RBL3 ֿOzt+$pJ)fyy4 B@AtHX}:vmO�[~ä542 Äöm)ሤS8sҲX{7.>C`Æ XB+s<$xh ;vʕ?yX e4?�fff~MW.oYZZO 6GIh?؎"x>o XY’?p2CXJ\nlSndL>:1쳿#Rnå%˗�1ga%~]^Zb1 V0ee@ bR9fj<Ø>^w`_YS{c1gu,&_6rC۶g QUSMŃvzx<p ̟?#_v͛yC?/{`W]_jHΝ2u2 Ӏ& dffqբ==eߴkWZ]] 7'WR¶l݂3\?H0,,BJ\l*ݥdx5`� XS!UZ8Aoka:l.8\.Nnr[۫7mjJm^Ά?_C4E~ \S$ H/Xh4ysRN8lԲ+K׷dY~ߘ7hE~@# þ~\z|gܖ7߼�Rn5$kkTކC>^Wp> \JP(Ĺ#`- o]$(ԶVw@ e-./6rOqyvN6 HIЀLK)t]"f.\sHv�ME�e@'UTޜqc rmח\;\9^R*e ;6^.[ G aZԴae[O̸h^PPX=x䖇ٺ]A~>8Gi`wb\8eHniHdr.p]ph>Հ�@>RpnC i |RU`pp�x7ţn(.)i32I*[`8ey>֒@#ZjK-A5]c\~dyN_�X\dhn"4m)6N!`ժU332WsiR#{2PQ> FAq2K& � \F V*arO04<ҒEPSO=UlٲAtIy7�}يHt]²�x>Gj*9k00AӜa32:LVM`'#1F�b9 &t&ptt55\Zm$R.7X 6g% wL֚Wx-74dy<H-|I7i&C `чQȁA >BS4ְG9Ҙ� 52".C݇49 �LI'A<[1�4u )5u+C`~`gW'&'.5겆B&R5p_ܹspuע~ECL� xN|QD06]̥KaΝHƙ]sU TҦn^V-ř$+nq4l/1]v):;;:x`)zNdd>VJ�lq;zϦY> q "UcD�7=T%x!7e*a<42u[[ISzHcDPac؇#v-4Eo~$83-/>�Mj3  GHxTgŋaB&�/'XyyB Q-1R?] 3H'$XSO= ={>̗BtF$ L �n&_U`ou=59g3%%jϔĀ�@zIPq]p]{q0ݻ?_'H0x\uԩco DBY5&6F4'\I3yg2F� M?۱ϔ=RŪP$ m3il]gĥkDv{!A\YhGUY�sLʞ'maIi ҋ7ހvs8PNlC;T1klaMkL^8̟ &I駪V{+lO^c^-[ |+,+Regdda2 LJy~~rE{39Lce0 :IQ)&_˳8ǚs fLlii1<?!7|fظncAJA�h8ON~۲/Qq Y,!4np}}=J'#g%y@ZG>$|jb<8 >ht{@Xew6 @f/d^ݾ 0S;Iq|mq&' [囘!>uXb*aƖ%߻wv]:u>nvqTMb7A-t72u0ɒI ;yQu CcXҶM^\ϡ<XqpDX#^h2((`P8V~'{N9=;4OgRL6԰@~z,e}n8Yֶt54l%@:iI$c^z:%-GX_?E˗Hp- Fpb6P? `ir3stzRWC IH=[V* ;Rptxhpe,& ]]1bȦsY/7Qp%37LX=8)pp#8Z/$wH7$K-퍷1Z| SHL BpT <rgR*p<I CұJMT?p Ž@N|AI1yq o}PZx_<Bn}>ʦe2xjjj4$'C@ec4-;D<H|yO-R/W,z@kvՂd[h$H!?-;|CDVg?{@oOMe\q6vlbM}0y@{[֝z"ͱHs֮^.a٢ 9<s@STJg넃L^C8!lk9 L/2 9}井޳~z= P)ycID %%%FGD,z`\ !}zY488hKF#FǭOJ@2+o> uFJeݻwoUmg{uٹRY:pH E=W[�'ښ;ΙDO1E@R!E [J+jk.1 fTk~MЫ,m;={ tCНLV'UwGqaJ Z_拒l;ၡpgXXP4x0p$kj6 j*'*,Q==VZ\ȽKbG3孔=T]ULؾ} 1^{S4]9JC:}c-suMf^?JG S5gva`?_˥n77` ^K:Ɵm۶ٴ5R)t6z{"E+1o [:^(mkmFvdK%Kdv~]ݓXğK΋5v5Ѹ_h Ypa6n #=!5퍁7[x \  ����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/vol_down.png������������������������������������������������������0000644�0002322�0002322�00000010140�12061426047�021403� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��'IDATx^[ p\u{wWZVmY rmlZÐhZd04 -P<4 a&Dx&Nddc0@`be׽ӽbw+&uk<sq \+rEHGGGthmmo-ۿo_�xIǫmJ:'|Mwr�vdǫ3(3aϮZ s[%qTB޷j*'-q%kyLJqHR pHj^sهƍ})K ^dǣ[4v܅'O T Sbڴ@ Iqqx!�۶y?ކǏ͛pK vՕ5_K~i0c?F듭z}Xش�FY;o !S֤Č^au---.xP`0jkN022~U rssfuukqc޼Ɓ[4.�/"ʆ V@_o 8֧B,Ì3 �ο~c(Ν?˗#26j&r۲elw7eCi qtuvaY0=&IgNFccx̓mڏ\!~7( *m#uVL:"?Რ"paێ~D?R}~Fc83oAzAL A߅ hՈj104p_cm[[皀Fƞ`i)"v:$**�&`rQm;H&Xt -[9m?|c-DeK,H&PU]  Ҁ* .ǘx,^ʖ_߲BJe5}>JJJaYi||c(%1m RӀcSkVad s' js=W<imhIP)%vr�Ј|Jmtl{MUEgphHֆٍӚ:Ka&HRY1>8 PJBQݧzpӟ%$nЎě}fBmϧM7J ũSՆBe*+7ل?Z>g>K0\b Ⱥn(1ސ^6G0 'l5,(o\h;\ШF*ə3gƛ3 ^'R*NvH|<ӛ:vm7ƥ[3TPuJ&{sIǗ#Kiybs#u骶hXxknB�5Sj0oP! Y^<3ngA+{=^P� WF`;KPA xggO-Fb~;vJg E% OcB1π] y?nwen"X3DPO0<2$K%Aƀ%EE~b``>n\i/ ayѱ֖e!gNC:Md[I a0cccILy;�s F@n5 6#ls#H@JZZj"<44`JJ&`p}q4ڽW�"_#&<M*ɭT4 f, lh|61rk@`xlU~_p6$D-D0XkAב3΁0IҫKe6 $I 85%t(x@q 3 (1NwJ@Mnt(S4Bi*�y"JXd1Ztwwchx8cy&=S_*ͱJ)5 G~߽X +:22ck!NpӓJhCnu*i9Zvvv=D, PfAJ,9lˆ@" c'Q!@[i4 ''h,x,F5*r%"CPPR% B)R %i6OqɤdL��@5RQ˟ DN|<!LD?B�JH@˪tAJ*H�}F5Tމv:T +3yw 7kZsgy|5ea ˶<ܖEЂ ڒ~# 2)׶Dv{_"`"1"D .pJS(H[)GŐ%2 B0ХUQfYgyi+� 2II_tHץpxL<7PZJ&SYm.NY>]۶Tv2L?d$Y(lX:'E!n 㱬gaCV/9Pl2pA lK &uK�k2gض%P(s3H4! ?|ǸF~vZ9!@:F_ZaSGuUlT2řۛ$Ũ f@t9W\s2qcW/]LqOg9EFdts0Q\ظqSG2:ثe nlDq, 'N b:,�xկ~ .YRv7e'g`OH$t(CGP 91d:լch@?10H@--50\qtuu]g?{ٹKXx3nd7]JJJL~A(,LߺBy ]7ݶeut<aLM(;b :yI PxEuUfO@L `<DE/r³�P8_?s o|J5I|(I9tJD|6K4 9|VC9G.sfoo/Q�¥gSjil}厮;~k$5[hIF(RP{!x|)S9ó+%p5ńhuɠEa2%%TB馩r_6@IJ)X+ͦn]yN0'Jt*U7"dОD[]JVd"B!!X#KG&@e3� 믿U۶_|SܰF%V:V�in`(W#2#?ѻC8. H:W_7TtiOVOPY$  0,?PǏ걿c$7GP(�sWFϙߑ#{ X D@*]xLi^%{E|>㽽}0{Vc{{yEqY<U�lOH9s N2>atdck/. X:T PwCCC&SH&-m b=H R&YyWz8 @^ ju_]ݿe>(-+uGeyE'L7\辂, �!E'16̜;8<W_-)J[�՚�3D긤( s4i}޽[^-gm>D-(^DZ;v0Xr@fd%DcyNm~V,T:28ΰ:<"7R'8 <"ԑg<>,-&QwYԚ)}o*;r= 1~?cN[H_<{RtrO|[-xB!Hd 35x4]oqZwygX_fTʝ $tu펞%>~KG&Vm4|#W 0ż#*u<k8yDBJK/n=IU߾NsjeG|{ռ\"Yre3oP��SB9;6.\+rEo(kf y����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/exit.png����������������������������������������������������������0000644�0002322�0002322�00000012033�12061426047�020530� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^[Yg>3n{ؓx'B@E"H>!\+E3>\ 7$@,!E a $Ylx㞙^~SkrrtT]Ug_m'7)*aXHo}DTK:!9iOƖa@"k)>|/e+nǶ,*л0Apu0_! uDltB ۶=J0 |V66­[r)"&)(>@+\l&uG3E(7 .\2{@tOѶxd~:H͙jCuF8 X:FՉ>M>I 0&hųg7ߤA|eC7Ciztsm.\N+<phۑ)y�Hz, R]Xc9O.-ѭc.=�V/{nJz|< $JeK �50Uڸy55EUxD rnSu !.]qC{CN,O +AǸV>3k$3~o<b4o$\,J,/QP f$}_w:"P=O~ /h$ #sMo!'hO^红aE9:!X.%w" 1LmYJ%VZ% ʰP@h0 BHUc{y>6Ǝ"_"`r۱F/ij(]Jq`rL Ɉow/w,9N G�, LATG"(ec^8I k|ĭځTٷOn5Pdp7O&y*B1ˡ=g=3TlE X!QsV(cn.,FN!77GϜ%> �m,ΤPY  eHh*$yR՛M"p ^E8\�q' " a%1ì�ўvighZ`s7jzG�?:?t#!A2J2Z0CxD kfx|}�]eJU�_8E^wpv�^f�ͻiz;Y<rq+PC㺬�@�˦Qi%D\ʐV7ϣX|o;Gꪰ@dbO,=eQ E0~ ըAaz>]C\_Aiǀ0Xbq_@==Wsc2�7Py9 Q}sFew^>6E�|c(āy�?P0NAjCiMj<A$YYqoc:"b4:ӕWpNxd 酟pTEX&g4f['aQb{Ej<Τ"�S `M8I&^{jryN;S5?\?N/Wt@mf: cYsb f?u,ЪP<1`½�bt?%uD�|9[-u/IW^zZ`7,?Ë,V^'0dNjIe0C(cg^*GM)KBA<!T: |KcSl>R?~ Z_i[^ضc.EE(PEP \C0SU`@6C !-_ong50Xh0R , # ͦ1/SN!DEi쎯~uя_Sqt`tCf"(M۠y{yqmZ@ 002jp@i\[Pܾ*SQr ;y^xQ<n Ł2 qGvuJR>@'N M#\&C]N) ۷zi J I*�ja,q/3EH T3QX k1bKŲCYOS cF,[\aFn< ޳s#4$^AE᫦CF(7Qh7Bl [Q/%FzH^%'޳XpXx p^!{kA _o4uf=TmGP9.Jxy"MTVVMO5_Zc<g+2S=II�s!A {K& ZCm_e[ /n4$$&CkEYqRY ZLS `.GXX �ͅaӍFqDa4B <l0&^sB PswDyCdP_vQ}C 4;Lt��<%%:BQ3tG�϶M�KBX LI>żеY գw}>ҞVK%Jf! 0 lNGZ&*a 8d:D%�r43= !VE/jٍ"rr}.IvAxR` -gnULMZ4,vv(h Ú3MWK( u^jlk\K2ydτ95Y5!$z*,Z@~ Y8<klI rs:};9I{& Q/q~WN^ SkQ�blXғNoJ]&uT) geHYrDQG Z@!@ۖV?G(4J㱞xR66M4hM=C<�u=?^ ub(Zˎ#?vL ;\ d2YI Ь[gj Ku�(5I5ft.6xì�\yYZR #4`yHUSxbQr87; 4MZTCڵK7Rg̝xޓ (u"6cߌFA0=xb>aZbm^ 9�Mz&IZ>Qxǎ /L2x3B& d<t/!ސ9~ ;X2',2ai@ȕ@4) .� 1E&H=2Y@R�IChpif7PjbeoGVOg)"E F 4b@ՠcNSOza3k{TC6]A7*> ̷E+ba{EY^MS(aׂ4oS jбgS z'OȨ=F%47Wxu8(w!wfIBNn"\@1yYb<}<(7U(.t]8Xwۮ~xY[K!i_F"lߗztjU�๬<%bcΖ>)r�|y ^�>Xeҩ5&,.LL`65cn ;},l?K+M1j 9�X<[`y=?!]mØ"!stKLQXh"a'>A?N@n#mmR\Y ~'\'TY7#N{zP7Pޏ%X1Յ^ܑ#<xwdz(-�N DL3K$^Z5RJe嶍sH=?)U1]c>e0E #M"LÇ{6(E|Zʛ.%cZPVuڤuiNTE701{}n 3{Cm׿6 R &G>w1i$,Fx_*-b7yI]W,:$a/>dBo'~#zc}x._txOwy .I5}y\ҏy:D^E1Ak4|`qSq͊Q0 &�֮Jt0* O:�lI:pc_{U׿]4 YDJl;f/KT1 o.oՉ(ƒ5 B*,4<zT^iنMO`\:Y؜s~,f _7�Q>2o^*ryb0J_AQCj VKvJ2PkVVՇe; QL{yR-b>}?$Fdc"S“N*XPvi-~Wb܇b|ǑWhƜ)(˅l[^{k* ml& @8/}vE}Ttc"75- M{XQo{I?`�A ;6cuK#ҕpOW߶Ύ�L{dOt'ML7kWf}x`F:!͖)e” Yw$&V.2 <P[.p7. : K %juU+'< א޴{C[ݮs 儼X? u�,^Ѕ=H<6Y$ PVb౰"K[mYN=뎈t.D-,8ǭCtK,iӉ !y˲1]M0�.6pX;,D 7=nCq(?0 1nic m����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/folder.png��������������������������������������������������������0000644�0002322�0002322�00000004062�12061426047�021035� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^YK\I<OG$ #8dB( fBD&`a6ٚ,\Hdv.BJq q"qdMrowW/NA{}NNU_nU? + SpڵχaxK3`͛7 pƍ+nUUߺ}tє?gΜC'ך<x�ibmm I{y"u?eS"h/_~}֭[ @D,KhS{zZ�ӧePD�re4,xB֫p8�ڹ'|xCyL<#+7�0.d0)c`;W\yS)/O~}ΝwV^s}ٳFQ@s0(1ܨJ|vкZݻ˪qc}}Qd,M|E8vXԩSRmd''sw랾޻wO['KX�U,˦/hfI"<OId_f|.ʊ[PȦ[{6l "(#m.ZWvbPrYCD2ؓĒTIX>+[ecN(4^pgaEx? dV˗ .l*8{ф*^e'{ qXY0` Tuv;| |Bj�8.c^ܧЋ?1 kOb/a0EoCP Vw�e(P`�`] >{ ô v0�Y={|Tbm# 0?i#`hw=Փ>6uhʬMUf. dEwTEBCj'�31? JK,0TP+�3Hgb|>766 Bobb;15" yE#!̲%DIil&3!T7_+10^(-rOݥȴI O-͒]ZVCD.^`?`-:UnY,r):^qI?v1TK B33>l-@EZb_菟#ak|in)EqjeYbz8T_Ԏ]1ñ&(]$JhJ GSF3ܑ> �P"d̍F3!� ?;\C <`kkXrgA!'};'Q.b=KNj PH "m//:L*�P1aD1(HP{i?#v$)( [ Q2s!-m|b.Z4w "ZBp\TVU3Rd"FPJ޽4:L@ip]VBLJ=$J@aC vXBqb:5[(|q  TPO@)UhO٩ Cx^^a|Xq\"(~\)tli 5KxI[KP'( `U]�ea X,",\^h hWyȵ6!u2Y$5̜; tY l"+5\M=˾�(LE1t8*I%U>,,7B#"JٝǼ^Q.h]fY&M'9_o_V{[}|<= {p@|uP$K^f_|LSЕzU*{;y:O53K7%W3 j"tѥeEh@d25݆G5zD</#"�Tp�BhVXaV[z����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/pause.png���������������������������������������������������������0000644�0002322�0002322�00000003061�12061426047�020675� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^MoEY"`p!' $p↸3?gȇ(B\Ad'>؎ݝb=EXFK#'ꮮ^?2L&d2L&!7t)px�? Yp �p'ᄌwVW_xmf~=C\N7onnooǖ\~鏍#e<w]񋽽=j1LLM==K0+]�~Agw/cW^oe x/~`�"BNсg3 9sC`fRhoj|`;uMsxc ꤱ$C 0�Atn211d >pY1 `Dtѩ0�ď6v[_#, 2>nIrf$k-KC`nn.|EeߺH2cCGz�X'De!)o� fݵƠL卐O! Q e^ {2pu!= d89C]1>Ev1)tq5@ r ="SM c5d,0d2gu9&4P$(,k\tb %� mhuoCɥ.[� Y k=w1ݽV g_ZbϝUE-@�X봖u!)qy4б}V~;U׎FZζC +< D9hs>Qly0LDƂӢcC,:Ewt:gC~oeAYos?]#I1~hM{߶Uk & hW klmmưQ6NC0Dk�z/c 'n-X*ypAd41DD:@]y֘ڨz$]s{4xsS i4um@/5М8P@XbWn_c9AԚʉWg)w*館Vͯ,a`P!rZ20'9/cm9nse 5GXBF(Q8=hTSVǠmV; �yhN =J0@>3`,@맀ʊ&9\;5;DS$κ;ޜ I(:2&ҹoh@tOe!}oEQX,..3;@R*)ɳH9PrN1_\=9>7Cp�,c g̈sسȨN ̚vISa/{.*!c{\ % )afۯ^y " cƍOZ�_hN{�?w$d2L&d2L_Fɔu����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/favorites.png�����������������������������������������������������0000644�0002322�0002322�00000007306�12061426047�021570� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^i]}snX".99b`)/d<&m̀a*^=T\T0STH؀5l66zzv3ATۃ:U>ߺuW:o>HhHvn&_!KǸZ݅ ΋\@'ÔdxF �H|&5Po$(4)xcr5םBE07cF0ݕiKAnӇ$Dӧ6  Tf|!%s AexEB3Wn,Bt8vF=JcYwmV<;;�{YviO0 eʋNh07̥' amqx즫N˸X%RfE[r!wX�‚Y.2g_۱YW ͰyB�0GSs߉ӱ[Pw_,s/T >ޙȾ +i9Bc�GU<_!)s:AM Ce)gv 4! AAųW+sBKk7-流fȝs]@b^2 Pq!5Y w2+F! ðrS:xr[Ӭ ћ յs6]cclC3R@;Ѫtj t䭽&EI<�_){JN >ryR+Y2~hPJ]jx߉]"�@<Kq7̷sZ[n:]Zk=GƝ ?RKx7RFR(u+ź*Gg^k iABZ'$hˏ 7_:9|PRkT4$ Jd;ˉ&Ac(sdQ4m^h^7z>/[=5+5]CO8ވ kZ a*NĤ~5)i "iC^Rk?bٳoE/#X8u&myX\VǩN,ĨS R҄QL;6A*31Fr/A F Hd !)6J]bF,hAҦA.hD;DpcAdfT}6LI&Gm6g'˪GN G#̓iAy:'�^3858t7%,#-r @H�1*<zp. 6fQDr"8 >z9R}e}{OҘ%L#!BsaFG!J AS,,&01Lbcc( D�M!FЊtЎ"hB Jh8z_ښ-e/dޭ'Wjr>w8I?Ĵ4* �@ ;�) � iHB#h ibb*=;s~}C�ܗj"{1MT@E0)B�Hzc4@F&f.a4-'*{S;i_&|:c&w[Wv}$%,zfIE-}R@! 2];u¶ lOna/&!ppqtjY2}EFd .BH<E Ys#?3h32Mlo^u+b?ɿR'{-“?Fu"Fb C˜$`d| ߮/-Ȅ4upV7D?x%'y8QX#w ^L o]B!”JY:1@d[-�7/]6z,W]O? {z5 K7QL0[d@ ལz8o);Ї''.["[|N5LJ1m!ٚ&{4ֶqvEmB ~k�xjCt+;gfZBi cET+z6cYڻ[yOЋa �A`GSDkh|_Y 0"l2BAkT>or+ró!R�!2.M!B�-cߨ*O|| c؃ E>3k|Ovw_#8]<n|lS�w'm gaz` ez쒽{tW\%j%߂T B2V_a}%|vgCF+jp4u5ʅ˝GP%CҀ bɵR`Md�ibߦʎ^H�RGuZduZɅZ%`>/ C2m R$~$EF;~lX@q}{̈́ SH 2TF>Ɩ%(Yߩ>E~%&#AcQB y9t <&YNnv@t4sk'EԂq�Faedc5ǘ89ITYu{/CGBRǘJrhF @BThdhm9Gب}}K4뒑aiHX#b A&_ep92;:5@$A@tIB>|mَ%:|R2zPG\QG؇yV Vr lcc1B$B)ȗlhr �q/fJQGy`DF{Aͼ4y'wN[<;^i~A"$"@0OS2G78yD )7Uv(5#F!&s(`ѝ8%/ ^sy=kg{!m( FB*8 did $�$H}#bv׷26LKBv봇]<~ϾsGm|C>~#F~~;�,*4ǔ"kZ"K�м.#FX@?FQ+ӿ}}R lk>ы]Ę9w N)LWyi涢ȡNc A@ E&oGȴa7Ibz&{w؍L vpԟ~ڻ{\0^bve` (dihZSQE}!J"_ll&Mh1]1|0dzu>ͧsd#Vdh'b'߻͵FuQF`o4'(`lbDS{̇|<=؅>~߸޺u5>Z`yz.P(+f* mc||_j~7eVf TqC YO8j5sin t`q }g>^K?sϡb CI'7K{6.[M=}u?UV{+YfRuK)mޏD!ejkZ]E,p-@q`M-b! ow8HrSդ?����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/vol_up.png��������������������������������������������������������0000644�0002322�0002322�00000011440�12061426047�021064� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^[yp՝^wό4htZl+6I8qȆa6,+WE*d+Fll01[F6ؐp X_|˒ӺFsu^MfjU_Wӭ_˸`sO.֦aMMMvnigO;67a~.Z)%`[~, ߙNɍzUDkˇm]Ҹhll. 5 ڊD P6Tctɸo͚5[Qȗn$Դi`pWYӧ pl `0yWgj�V=I+= ,K&]M6xIr22-ة$^{X1cīd2*L:/l~!LY3=nu:Og pZ}[hSuk#__G֍1 R?=<E‘^p4cǏbck`|̩̭1<(m0>fzO$P$[ϼ[6iieE%*+sx≧PZVf@0~BB_41-s|aO9<Pfa1 Փ"sϭ_)W.\!Ӷmpα,Cjh&gzߵr8߼�: v^z^>0[ @H,*~pEavF{[;f͞ 4H0eJ9N@[qΡcPF\�~IH`7$ q*g̘(T(9vLE4`pᕝ²|0Ž@H&8OY�7ַF.�<p)Fn?::VzVtɚgJ:;ѮrC|jݺ_0WNvvjE`owP8\Ĉ{bU64 %0i;w] #*aXzQx7pzq:RT* (44y37]cLG0Z*~n/BXK<�B�V7[ a)=vR ܟbnogژ\p?qeKk}8gobL|m۽xqUVRa�ԩS( OdRcR&R@ h?ف$B)ƽxߌ�8qM÷/xaO k<P{7VU=skl ã*QuUc.TVTݍPa ԖYn$cヮNi9RkP x߿ 5Ӎa7-pCEؘ6u[棷;_݉#G 7pbCD2Ғ}ڧ$H;F+1mY2*C'>Yd^]3,!?q^wxy(LUUƈ"ׇv;;0B*b`p�RH-UD2[3|0D,J^";EO[kÞg#z꩚@ZK54W1$ =(* !?Dud* D\U?ρԄD8M a," )}ѲlFcY^ ˲8ն5'0Mv$;s!  D($`ˁN"Jf<0.y -yޖ<d8ȁvHC/ T`}c(ZTL&T >{xBpjiT&ϡ(B ۃ}{鳈b8~ ol`nFe 9B >'8�30d0$g@4fΚ‚V.訲(Ԗi"L5zuR F"8VhzUgu#uus a!V t"$1QeY;lzxc<W >3()N+ZOO.mt)O&S$5ު&oQ@*K,5\v; gl,& =Sp,D,0*&򣌡 |.>rqtŠGiP%HBa"N'J4 rS-�MLK1='R]ٳg9} mk/a@rEHqizVTU3cI6tlR�!41p"D5q;ޟBh`Y&^95GID0RD]cO* )DV<'"ha3Hdh%RHnsD�Zt&�92Q"i$Nl4HTt32<A8<�H&,oabr)&H! %*+`Z�MXBWGQ ҡuh$)FV\uOf}eBYަOm�^LɒM&7@8Hp(!oHc 86'2ʴZ$v{FFte"Jd<\p?Qp2 # QxVHB&SB ,蚉$8lj�w8F4"%IIjs,==*\rVݺ\rd 3>^",o &v9C aZ9%%Z�/AW] Eڄ&c:)2F6+>'h ςB'[<Cq L( 1-Ͻx7W$bq<ښZK(uSz@ ޞH>oʼyQUU cđE݁?'%YnE$Cw2,C4LU DRgn_FO&M1Mm-Ȩove4WcEGuNX_tq0!c3|N&irȞ,LT8BNt^Rc/4_lJAZY"D[76I�[ᶍ'O0Z?>sGMlE|)ܲJ 8wLjkc'!8e�k2yޘ CbD$+X*Zכ�50܍b8|Uu{ήܞ]`/^DIH7 .qW`0HOy6%_Oyҗw,d$s=�lݺ_;vv8J=еXs4ɶ6-Ѝ BX t%GNxgܱ Įemѵs?}NA*_::tcPlA:/MT<6JK4H95XK-sDή.H#�{7|;MR_ƁĨ �,6on:1[wDHIglr`z|)DVBP\1h#1 .C#L`R,*Hyo`#E5vM71c5To޿_aqIؠg3gi>$ܺ LhCF8Hq\(tr;d@! @V_G>-/= mG?zˎ< `k+ĊO"??J'7�r<@ r,;0$K1<4 .92;B=-bKi"Kr<۽ShPY$(0 @,<RÊa=mzxfLb|aO1-;o|I4sL;NM8\t@0D8Ӥ̬z;ѐF%b[pg{bL &)#Al5g�aY$LJG㝷ښky;n)m롨4�N_rLE:)Sbp`вu$�uRMx@?H'wkxAAk&SH$[L96{!JCL <@Uҙ|rC{ooڝ/p¡~x R" #x9[e;ΎyAA~(,*tGe9&!;/L_{i00_"C~ /! k9n2sW>{ʥ9@4CPd~iIN3@3zd ,cm4󜑹5+w4._]wu30[ 8wfbֲi6ĺ x { oLq\@߹on֝aYiMun2$M2zzH$bC3lEau<66noq، beUezf&@M^?;O~}}}8pEHnߡU"7,ב �rr8~�ۯ 7XϘ#:'H)tT\5 Gpl<Bf3/F]pa/>YKYB} ^رY?LWbV J{/ lذGy+*,R>D/MleK#S俊I�=Y-Ըͪr]_îRo?T-X}0xuZ⦛n*[u˪;լ'˪[W}fʕ&7m2˽SusŦME˸_ VF-X����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/click_icon.png����������������������������������������������������0000644�0002322�0002322�00000000306�12061426047�021654� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq���IDATx^1 0џA bpA. ) J*}vxS9-HǕdo�7?'K:N.���������������: ��������������������������������������������dm��7B a����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/top.png�����������������������������������������������������������0000644�0002322�0002322�00000003661�12061426047�020370� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��xIDATx^Z[l\W]x;xkNnbHyD(OEEU?#*?*W *E @iı6~%<l|r5#Ǯ8K5w/{g_j� lK�CTxU-#(T=^;�73VWWڔvٞz|yݧ܈6s(tG?Ojkm>#5ȤRAbCK!`e/lfO|[WzcHKK ȍYWJ2.>ڀF6k{mފ\N\f3 0Z;$)4?F{}ou.]g%W oM5._㌽kG٪ �ᗯ»z/5^<}܈6շ `JgBoׄ _29Tة+d`ڷt_z4+Ο4i\?տ%^]/ 螸 sT_^w~+uca~#g&| .< H|<h#HUsKS#$ݎ$YHgNLgG+bB}UM@d$lXN,tp1Qq8qM|֨J:\uxP3JsO2(1YxǪPko!fv䥳CV*&Fe'mT5ҟްk.\2$$C!{)dUsygA?aZ&=JusfC6bWcS?hˠ΍@N;︌/#IH"i@O }q$@_7όБC~D6bK)FqdMZ:^xo i׃Bj5'8.7EB}UN YcC=ƣC˩zz:ͺp Jh6/D;?}T/RX\_;sw̲mmB3 /mkؐϖҨ4W2/e*>T\lO)0:[4mxAzW PX] 'DM։+Y kl''c߯8~i7 "Ԡun#H]34jBKKDO*W�=9GǑ.$u~FПΡ" -i;؎9<:7ԡ ~A85LXXJjl pq.li=}wY͈ͮ5ՕQVcFq`4۞>,S`u !ۀ\O vut9p }Zn8+Sw ?Q/B}AH$Ҙ7-R&;";I+=-7 Zno ȁ+:߰#�nm#?<`w:z3 fNR9sj ��( ip@JyYI.Vm`9@D+Bk5E9TB?d%"KئӦ'%�e[n.Ys ~QPO _p/-Wg .\BN QʄAl7;ZK (:ب_ ztEshg/RŠi,Slo1϶P0m�ػsQ/%x2<[  Ra,87Cf�H>J $Di 7p l ɵLTz=M@D xj '�9@]h"Tb]hT"DOaJS� **ˁK qJU~f����IENDB`�������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/minus.png���������������������������������������������������������0000644�0002322�0002322�00000001207�12061426047�020713� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��NIDATx^j[_ b\wq )\s[qR@{W YL_)4L iP3U}4RJ)RJ)RJ)KtE\g/Ds/ �޿xrNOE4X)TAT#� C-C-V)p}_KP  ҆:��km-pco>9�T/YMr>{ HGeӦ5a,{$]yA/!w.{#G`Q }/Zr͖8~]P(Y4#.p'bȏvۭ8W+Tk̝c CŅR,bAqua`p8x v ^;CR!<W_cƚ`x!`&D:+XѻBѮ{zGw4{φ5Mkl0\d�x9>~Lv@ +̭4ڢzU]66hk*|`,RJ)RJ)RJ)}׬BZ����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/refresh.png�������������������������������������������������������0000644�0002322�0002322�00000011356�12061426047�021224� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^zyy~_;簰r-9EaؒKmDXHJR?UqŲe밤2*'a,;F qHF .݅7=]Sӵ;]wfjy{mj`NҬ,TQ%f&Y+n3O_-//Iv*$€YZ\_ }0R V})W$�DԤIKaSے,ܶ/*cU`ŝJM2R?͞ϘT"*#4 P{`X28zqÖTckHLEe?�F) f{tO\%w zhBya4eDHCe23]Ԃ\K/.}Ѭo҅3oۦs72/nॕ~&7_;ҥ lv/\,yϼ{z"HIХ�pojcbB'>εӒ5Ѵl˗"g:RQ׉s< xu|{lFҰ73Lճw|T\0Ś>Xc׍C=?yG4)Őb?5 ~*o284}d"T ǻ6-a;Oitܿy?c4Vxe=^moun`ܻk 0J6n'}>H,ԃ>#2$~y9BXBoDgpaܾa#ۧ޽kS'mߵu3i a% lۺ2R̔eE] 'HVFW ncs߼S|NL@=)48-`VJw[5K+)Ȓg;T[1,vMMYv63Ͱcʊ+w#k ,WM%E!R)kYUhL e)D H�!- uTETqgQԭzE2iAeTk(-*@uEĮ,˪qE ]R;f͌,<6ξL[6[-N]hu󪨭@sWe~ fc@ĽXV%eS״l׏ա/f34a[1b ӱK-H!ʞH?B͟QM,q"$R6Lo{D̰O덥0,L*/ '8])4tđAv&aBr4MR <8D>&[bN=wax#I?zi;J'h*QZpH)č.6@TfOw~7{`R4Air8x|4#Aҥ 70o}mȃ#ok'm+Mj˭󫴊0 *wg`�AOB %D�RkČ7o`<5e%aI ;-f>|<z{WL<%wZS 9yjdmryIÝT]mF8̽o_شhNPʊR|9Г}8Yy}8y䶏.yȩK( Pᓔ3VP`A@I8~yO,K!ɴ'FGoW0r!ںԎ~_s큛Wk;LW菺< 7wU�XҘMcdxx]_hzk_^3* h~04=t7޻$~= ȀI 1HZaF\~k<}/ %7�+TL,LڦNL,;IN6@H "C2))SSxAꃩkŸ0 8@�#AI I`h'c1ц1Ӈ%{IyO\BkKAMm2*/$'API"i3"HIcw6@p\JC6?`FA|�i.iRjuFu_'N'+<7﹗rYT]Q1$M CO{eyDP믭-NA15 *F RXUFwָS�ƕ0f$$8 {Aو{]QmE'�>[*‹ r9`~ ^dݍpsEw.Vʷ{t˯Ftd !A% D\�s9H.cMBP ||4"_LMX Z@ 3 �k>M-ӵ- BsF,qѭrWDʼU/wX�Aճ+VΟ" 8ϹO]C=l bd~yM3f l 5s�4蚶^bF~xZAhB_z?y;HS=9n?^.0$|\Ͱ{AyďOr}c71 vIOFِ'ב2B̌HPw߽42osξ1s7Te*aVR4Tk8.UJ�"WD>r9>Pc[^XXR.W);*8]YN|% zcu)ܺoh3 �}qo*Gu u$z|émSaG|eu�pHKYP" RQerv<zXP�PAarOf&֯[Vς~+C|G gZ;9 Q YBExqQ<a/.+֔R&At.�(aC1ҕDg L}E,_}/-MR쪊"pT(Q8jYv+o]xXӥ,, ö, ..d^Fleɏ jD_޵门FI  Q 7ҙ}ǫ㣒 R:ThH8ea"Zu/Օe,̒ƚڅd"�A˘i�vcݶJ D*5>!=4dJC#�"<<g 6w%nkC`)DuuZ YEw'njO�]xZ/ Al^=12�Po>{&TV )3菃ξ]#z&'n?#K̰М~Dm+w:b$C>,7L :7uKeY0j@hܴyp'!º}JY]u]En LV2)‘*�)[Xo�1yA=PQr'>DKw63p1UV4&a؈ 4ᾼ<Bͤٓ@kGoI[{ߧ| AD@BŽП~m"VDQIt]؊6LđR·{4z~yCZxl"`9rbY]Zzh6Xd BPqĘ:))1ñ$kRJ!~>]'i13::Mz[/z/*^�@f,HPCQȇ8uHGksw Y/wrj؉ hr> L/Q (׳,\¦EuJu�z&vƆ@�ތ8Lyocrw[ϼ-̮kfTԊSIDt?]CY]g�rg M)tw(+/'+@2sf| ݗ;]~֧8pv}ZeE+@{&CE 4c,\nje9(! r 2 ۙHξ_׽o NoHOKn�ok Z{&K 3oЌgLsG,È~z?|}@]{|Nk9La#„  BpdF:ٽEF'8M߈ dM/לSvA?y{o9exY^ӦݱtB/)) Y?<a)LaYo @h)t\nD]M|af&-7 ҼbF{/nv3y?rxk¢j}wOlEYY!Gu(rViPiPC  xRSfhكkx�kGroû>@sXB)NG攏w˚T-EsPZ0n{t `V0 )367$13Rt?dgd"1W#/zht9>X<`M FIh2A~XPfy0Qv%.j`{ 2PϽPL)הHد fxY9>/炆%;<arI|ߝ\!eXa;:ה/y>{Gdid*vG|iT)KyEJbzP>c C# 2zDSRQpW�͑r/&����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/right.png���������������������������������������������������������0000644�0002322�0002322�00000003502�12061426047�020675� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� IDATx^ml[gsK4Y_tIӸfiv:Z(J4BH_h:>Аn 4!M|ڤmkiETcf8c;{͕;ٽs:'Ǐ-EsjԩSN:uԩSgSPOɨ8�Fx|=~7O7,l:MHߴ@ĻV}VOXi�ţ{{垭k7;(�"]  !K㞭|9S�dKfa0 k} +{g \Z 4pp}3e^8}5-Meƾg XF$y]Ty𕽽Y7.u܍EBFyj;V.q%ADau#nu6|cSࣁT\�]T`xYkoĚUi`l<L}g�l|xU�w˻$]'"X ( O%>CXn|M}-?U@e00M؍ m-J0k2u@ޏ\EjP!l!Z;/Jo]zeՋ>.@Th@0$)سW^384SȪgRbBh&_rg77 �B-@D&Hz;;ZAoE/AZ!RLk28=k^O,)R<fsк;z1._g{k ` Kv.Ls~5}Wm`n%7{CC;U3MͣVɍm~y#kO޶�c>Er>Z떑Dt;a_ fi($D"F,Ax$p @m�� 8g24xhՁ @-8gf ]G08|sG&@B qrwӑ(%@UT PXd=6ʏżQحHVA<:+ leXehdZ$sF?4 7A% n )=ͪƆz/Bd�Z1=OE≂gV8h"͕3 aM$&S7dbc@ Ὧ9oMMM9٩jɐ.x  3bcZ^8*�V5 YVgiD* 0vnI�4[gGZKd$ ģ1l 02nVdpl `m :d0ꏅ{bWȪ&�-_P:ċᩐdu#kC/ہ5aE,/+:=<n$ fi63qtj� ſ�V@ž윳$$R$QczL/F c˳meay Xl&p3Hގ"W� 4`z[4E"(RsGd3/Mqv@Ucy��r NwQf!;�KB̞|?YUP=>㊐\tͅx楢!ީ˘gLz"ϊFMrLѣr”zgRlqGsq 4s I(DX[#vNT(̰82+I:u-H4DJ{����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/file.png����������������������������������������������������������0000644�0002322�0002322�00000004674�12061426047�020512� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� IDATx^ˊ$ythf4RC$`/w=6i2Z،.WfFg.OtV( 8DtfqDT oaSEsrR�*,(R&o2Hh`�P*fe͒<f 3O0:%C1U šı!+InDXbG 9%# q@,*[tY9NslsoiO?tR,%ch "�kӷ>D?!w>'bME:-~oeIR+q"sPZblS7>_ޟ}9"U6JfdgϞIڎ�f߸%:sNƴ cYqP Rpsfu߿y׿~Ufe*? `;σ/`{E8GX.2`H T�1=>_̻fN1/*`T5kf*;i]Fel+&Ɯļq^5Fjbq1�u Jj$GܛTwQ�PhP,Cbl ?XI';q'ϼa�f($`PA-@ d=yl ZX1^"#v !'k%H1pBDuxoL$%MT2Ÿ>"md5,1Q�t��@fe\0YPstf5c *h06WՎB8 ^M+/')bEd ?=N1f-#5l2 +9@�W,~8[ģ!K0<y Ix~xg0#$8GY;�-@JiP#u8�"1p�q7 d>"=0=\#&!U9yvȷ xD8DB_,H'Hr 1 r @I1>Ra )I�HvrtzKKx6_%xUb'*%0E-[K` )Am8,Yp8* p>"' +05y Л2 5#֕hxDw%آ(y(=E 9EI�]5x2Ea,P]n;5j2lbOw�=PP]#L�BX�9I*@3upS DĮ0J[@2 q5Р0E, V)VaIP- w@]dET k !?Ae6$)PJ 3s`(<a Y9 8^.8E٠qS 9b� H1c˹~^ʻs˜B> ]\\'O "-I0.XPA9Bas.4y  :>;`{e Q ֱEQf>E@ �!Lr}V?zHy (ӧOyizZrO # dsP�%R4wu ~�(x<W`EQ[ۄHq#M셙A�lp�@ʮkrP}3/zY; 5,Bݐ@sT\`E'Xҝw=y<e( % \^ |tܱ8/ġ}-d Q^!"?%^vV,F{.ʾ#ks@'ĻooiQu@T'@ܺ?NK:bƻ.uoc+h/sIG_bu{l k-^on;DwD`b /ott?s< ?h,lph݊/G]jupC EN;v[/Zq? Z:\H1S lj^e)8y;u D(]\! '#>_#~c;gm??.p�8>]�sΨj2>s@ 1N7*D{q@ N!p ˣ&:DU10KQsdYM< m|,�1HҀ(|gF퐩w쎷|jyd[|@�}�n _,'<-jƘ-8@~Y�>?"MlVD\*}2D&�@< L@›٪-@m�Y6yÛJ@U[^ ;Ch����IENDB`��������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/forward.png�������������������������������������������������������0000644�0002322�0002322�00000004416�12061426047�021231� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^mlSǏ-/vWRcJh)iT[7@buFQ!lK ʠV[-4F'f %fd($~wvs|cS7G'?9zDdɒ%K,Ydɒ%K,YE0*`a`TYxY�PJ/6MV,$�\/pD|پ};jt4]Rٳ=ЦVKsR$m۶evb+(( KhDzt޽{bO% �eUv~CC#:xe\^Rd8�*$Jx";]{ӭ-/[ \E՘|lw%--VNw¹n)+++Auh,&(QOK5KuXJ PՌQQ?B_:ҥMfjqիZ6şdE#hҲ0VZfﳕ^@xÆ Ym0}D|#‚,D<H�Il{nimw%.NWs2e yLz < 2,RyJ@ J> ?8RkFmmn 'N!![v\A)!hp(H>ı >:i="p|)q_7z߾}?z)DZsss�;ˣT*+/YtL>Y-lqD?GCBbH14TJ5N:#>}hz� �{{5HMǿOKԪ4>M,| =X3g� �Ptw1"KpEJNNm[x7z !`E `} #|#$gȇA3,$Z7B'OFrrgʢ,K%=˂yo(@/q>pg`/0a*J8R,򖮢x7 "b 4?֭[^v�X419>NҢ8IJC3e9R$|@AJ O l>IH\ ֐jT{ }(DȲ,<J g\!0D(TujݺuPG_"K%Ai\|I%p pd0cH�pV 42Xh$"c&G. lG�"lCSfŧIF_甌[�D%M3*5ӂ W!K.||^w&e7q}>VKnhnpg &,*(#oiKAIq< it_DGH,:f߰JbF0~UUUoލ7E.@3 T%El^x8?22SvUn Arcv ˺u.<;v ™w ,J@hAl}*\"d5[w{H}[l k@Z;~iiM6r> z\}< RUH$Lu{Lv5G8aS'X,>땕O\}?dZ1 /*(z=sl6�H*sI<=w;5:wY"y ;s?z *6 G۠ <㥣dIwUxteR?*߬:>qsO� 7A"B""6SkJ;_A?GcQ{NkUhpa+1kgw66RUiH On(ϱܡVp'vg‡:Vx S>H7& tE32@yi՛555�h6vZ;t?x zjϭ.< Ox<~vt:W\۷ogoGrWz !  軔Vf<!s#Ѯ߾`ihh˅?::?zn7Bz}r=!`XB(GAI/Y\p )hJٓ^82{<|O? Y1'=x_hAtp2~#Cu00$K,Ydɒ%K,Ydɒ%མO p����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/first.png���������������������������������������������������������0000644�0002322�0002322�00000005755�12061426047�020723� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq�� IDATx^ZkՕέ~N{{{1/{P l "هDh1 l0ؐ&Q"eVhaX%-fŲh#{ꪾ}եL=֔͜|s=j4+X V`+@ߎ}Z<+{^r)-7v�v xW�>wpKBv!I�ˈDZwy݂ظ+C/Ệ(Cjp�AGLti,;ۑM7_V^U ,_ØjWw!|hk<~( .nJ A ҌGذSy$ca}3R*~P7<ޖH%"z\ƦF�`f-=3])(AKPz<.} /E$㑇{3Yq\ ,� "Xϗɟg]͛!(I-Kri;ݼ{_۟l4&2pf@\!Tǩ;5vMmGJ@'ELΘx~~@˩ʣksЪd"#|x5Lqaܬpg@�P9LXӀxqU__DGaZ$P<+rX8gBh֯*IQ' %PпKO\(=Gc 8y=PO2ot7wwey[lVދ۞A@=L",p'~y#3K8U]7۳~F0>cr3P_Rϫ_>�" oZm/�# U�&F#l3hLKlmŢ8=2yKyApذn}G/L`T){!:_h1Xd*nyD;=]mH rS&-R %.*:?3P\ઉg I`Ƃ aQ;w z<N=| ߙMGיMm-Ez GZ411cr *ݵTiӳ<Td$Ư+A(p_wwA{c3d{up0ĉs\U<D r@=V ⒐홸;n ޖBf:3<d4\)�5U_ٷNwg;2m$fM,[1=;ufA%{U~_ё06mlv*4ߙJu[_c7iimM<NPuo:8 @U*gf;س-M&y𺁰N<{B@3$_M%k{:[teb$L͛, 悵0Te+S-1"�-e\@_JĢ@[k89sTL |^̺ ̛>D ARfym g_ ZfV"ӖNCŢ``@1WS`ZIy{ωo?HGj!܀Hb�;2gi\:mf{6-0}&X<f/%ܳ3'o:rB/X "4sHD.A5pQaj^ECkh<qz[f*5hK�A8RSI`\`gC-bI;g$vN9~VMT'4 ֶP5]ߧ`${sΝ[`%qtƨC*r uKy -rd*4(/5B�=DyɹF'7>19B"@KO%, TW:x{t!n?/4w?si]LK:$P  AUb yZC @P�e`�F>r=]Hk<sgia!*+*\ *c ˾|ghVn7'GҰT#H$x"NBE.*[/ YA�&Y7UP0MC4H {>�qos7g*J)TV"pG&IE9HJʏOB|D'W=B+/x�Ry�uQR17)Nݷ=i5j ;;;X0 1S,  ~5-B z+E@5rQ|} :{.J,t$SqNC41cBJFu':3o�ŽO)T_H?p]BcR/1)_( DjrQUp,``o%(9m�T!:;$J&x@my%`*$UG`��V^x�7Щ<U!)kP=wUo^ }*lj˶aS&_(YԬk0Үޱ>1I|ö_d{kkDn& 䇆GQ{A _ÐK&`!e DN>t7"W] t~QS;n3br�CDžy{km! "RQmmz%> H 8#ܸ@fGr w )V a�ҵ޸4D"hLL?WQ(ȹ/9)kn B �E�v X/Robт{BKkvE=iУ#ﲃQ 7iRq1D{ ]�?01g%R%`*{gxA"$�eܑAU5srb+Xnp�M����IENDB`�������������������anyremote-6.7.1/cfg-data/Icons/64/play.png����������������������������������������������������������0000644�0002322�0002322�00000004251�12061426047�020527� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��pIDATx^X{lS?^?۱c4/ ad<HPEJeSVAQGBVP0:(Ҧ!.eb-QDڕ'ޝzN@ɋ?W7_|9pWP@ (P@CAvކ F}}l~D F  se32O(TR �ј�2H2'US<G>�%>ضmtu`֮[gxe A�@d� C^~kk; vbUJhI6H`m�FF3Ԕ4p:S.MZZUťg*2÷H$C AB]`1';ƲYU%CeC0f;Δ=#1>B'''#cVԇIQ~ ZWٗ:ά\h`0Gp)�2Q/23@g;v$,Xҕ%?!Յ:̫�DCAGWʂۼiSbiZSį\i$085Y+ g a>7?tttBIqɊ99[7xn^�fd00;wN'Cc'ۘj5 �Tp?p/[V`\ɧ螑GF|bx Qu} ?p!%%Pmw½Rc8N7[LWlX_4j-(9G-<ye?T9<>pϟ??<2s*J @*B~r'KA>\[a/sAl#L cȴ�LI@cÄpa!F a2̇ {v׫wؽZwj):b>σঢ়555FB[713SFq$&$?>#߿ Ra1YzD08q]սA�ܼ%,1�I"X_q ׼!H2btjk>}'>ޱX,-[u:`ccg:% |�-qy/RtDA +u^} <Āl_x~^}"+nʹH�8mfO 'Yvh(}>NBCrr/xC,X֛R2hI�[1QTA'~g%GWiq|Vi{TpP_xB,O2_WW78]�GV9J}H0d9H̐\\ d˙) @!>ۥ jhQa}xpnnL�NKTf $ܑ8i-:&|p KtPiWee،@�IN<Ě| dyHOG#R .^+48b}ZɊ'D6( ڵkO;^/8e8ώ;/DHT rr7'w7{#l2%9~isF$jXّ h.i/]:t5gfʧv0�Fg $k٤Iӌ3 Rv` h;={#(A)*,ye/X <YYYq>ɤEA HٍJCĕcU8.þMb۞~1.((Ch Xtt7INM_}'[_RJ"zwq>[j�m0qQ%z-h<n͛6-+[㖎 &}c9�Ӄ^Hp\Zr7nshnZ$̙�&<aL%Eտep \�DC y:=n8k%)mks-6ml tASdDu~.u U~Y^d5s>ր/|&Nռeyo>GX\T~Twfdfm1B<477B(MFp}~1> ?X7St_qIxm3q>G J,t3P@ (P����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/up.png������������������������������������������������������������0000644�0002322�0002322�00000003305�12061426047�020205� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^KlYsnv:8N($ lFF ,"D84H #$4hfHla#ۉ~T݃oJڏj::W}ou]u9{O&M4iҤI&oޞL̾}D`g):nk&_0MCxHGڋOiHLr-!s'BY"W0yn�~k+BGk*l?71%^I8 L K7Oò%laO~&T_ፋcݝ4J.([=zX֪k�3$R/b7 ojhg%@e|t@|Z?>^a0uBE[lhHlxH Jⳍ5O2E~.iDZwj,^Bv|Knj\v[E-K5ew�Sxl1~ej¨،KY0c0>B016i5$X_:醎3]5K!# AdTbKmoslNXrC,v$qٙ)ֲ01BǏ,eE p'] Uj=P8[#q}(u>Z;y=(r땍찎hg4$V`ϻT>KjW NU#H&z[k8f v-mk[֟c}ϟ?+u6Ni߫?mk؜3jfem6R Ra߽<uVy;fTi"׈B�* _xh NcK^~kypkx/<N|g(b*xk*tz#Ha''b'wrtvDtBv-!9<51Ԧԓ `Y/˫Ԣԡ {EkXZ%΍4clw:bOj1ݠH zr!S 7_Db[0_wow-ʳ24_ x"dXx-`�xPW] 0ytkfjy#H1! 9rG Vv%{?m'tW@u&AWw(>0e %��hDe!%H|6@mM0NC 9p]D`(JG{=A>t J቟�v ZwMS�p,]{�((kZ{8藖+`W }K(ۭ�ߠS4.Wx?ۑ�jSTܻot`#&h.%_/o�Mcx @8ޅL0{8*Clݵm.Ihҳ'Azz7F~zAi="83:@3'YʼIϞuw"bX09`�q (B&^=TQp]R�A„@5|-I&MPKN����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/plus.png����������������������������������������������������������0000644�0002322�0002322�00000002140�12061426047�020540� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��'IDATx^k\UiLmMEKntw".tw)F/\>.lq%}AE;? Z~QIL=CCa΢7qyL}92b4;/q0" j4kfs_ouk x&6xdl^4̇N3#׉Lݎ^5pr 4M9=#1q4OE 1m( 1PLbJ:S OX0BTpap/]]7X3cGbl@h: Q׾kqic`74b=W.;30c( ÊN!R.qKlHa $Oks/,rbz)AJ-ڣIh�I]KO7oQ{|BVxI}~0H2N@1V)FO^"(l_S~|Z ʋڃ:u+P+`=3NYO*_q:f^)},=\AɆU7ŹdU0樦@-<r!1O54\(2CTm<xb_{{ߩ85'HasB%Լ?lc_Hx@Q]č͛DR o�o\?~.O ?ɟ?}՘'Mʅ0"UX6|/0O8ϧqL|@|):&�[9@fbdUsА8=|}:dMr\ 06� �C2 _;[OyJXP ve2B4o@;:/ PKxl(o)OǛ48"\aBgN)! 0)�.O29|Dw.)(1@C"(X,e mU϶~ x\gx_9'vCbgCѬ%6: r x[Oh<ѤM}h�gBtN9����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Icons/64/fit.png�����������������������������������������������������������0000644�0002322�0002322�00000013770�12061426047�020352� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���@���@���iq��IDATx^ \ywomV-j -l$0q`L2qM|8Ogp9A PkҭVuWuwo^ݪR4RdwzUw{OnP(46BlO:moܸq_տzFR|iǘVa},3g Cϻ"ySLUSNѣG:i$}8ՅS'O&h&3?_~<裼s{5#i?>-_-\bB.C6g<"u"(F@aAlzmپ})kG^:�_PI._Wr+57 D@LX'<9D&g HU &p(H`g/ʦwu߻nƎ�̏7_ƍD"X,|gzLw7l29CI,r|eemniQZ䢢2RH(Ǐ~tc[�jR$n;nL4R9GJ.%ՉN#Ȣ2GEƂ-�0, K_F7k;X<e M4EDUE5:ϭ_% Jn c) ,D//CNٽ_<klBZi<W&:Z,VD炒hα3!̙E "?{9ġ5>ܥ0$^n}/ L4OE?-n}OG{xP%R[@D�֊@E խ|hj-_ЀŋREU8z(3?'�G5kp0b1qKR]8Rpĉw>q+(B((+¨jHˮXJ5QTWCy^{/<C5|^xO]ſ'i^TVZ\"�kqZ;(A1^QV,3aד;+˖Q4ZCEǶoi|Z* ~| %K//އ@RR{fILM*AImkmj"I# $}骮DPZ"tw.i=W,_NČm/'7x㤗^z�PA[Z+/Sי.$Il!iSw =P٩_5D< Zi\|>8JGWҢ: {ptgŤm-[:W,l.F[:UuuuG�rr-sV|};d&;K:rZ߸t"4 ın�"V@J)ƥ ε lxc-͘9ZqwW+/�=4c 3g<u)]49h"AE<!I�Z+ 5,Xa�!9  %"\"CĭǎKZ)L: f4wy |a5v[Wq29l.={45rC*gNLC݃ش" b߈"b͊- �Lӯ�T֕S:u LLR7ӻwm]d1{[Vwy 7/ы|W]c4;oɮN$BP//:)+܁Ѷ#hr �Z_ʪH^i&-uʪT["ApJobkt@ &@)+&XTf3g@}}}6o_�`W]2<I=)Y1&SVDAD�&Rt.b[@Vւ�KFHDڔm țup1A ڪtV=z)ZWG"\}U4�= c̸ŋ}yb[O4S\HˉN(�4kŤ i0iEĬ(@*fb}ՂP*vdbrb'cX '~:b�yׄ¡ܤI Odtk,TssXJ)KZ3`P`MN*׺0 A3#Y:*�B+nP6D}}8q"p.{ 3Uwtu?V̚pBDM$qt;uPGIiV׎&7V 183g:"tE U%^9c $#֖mdJW&[q@DC*� )-d!$HWY%�?ye\@��"aCH سws9:㆔|LN8ֆIcZ5YCXQ!B`�f+.*Ě 뗵`D,xZ+FK;'JjԷTPb470VEBaX1y"+vJNQ1]K \t8AR`�ra&Qda,VÂ`#dA#=q/p"35hyXz~+P`q 0TC!v{V'Β6(9ܝ<ޛMxC wW1=\k8ʁtub cs;:?y3vo9dzpo 2VH{*�b@DYˇ�f,0p/ze{LКjZ MPFGj":�)R?s�("6`K$ֶ?˝ȧuLbWQ 1Xl-BA @�qb�H&\aX`~�~^]\;eRE̵U* j*kH3^:+ޙD.gxXZ4C|G[pŘ .B**WIADpzcuJ"p\pwj YS8OXSƥ�(3LB 0##ηV3R$$P@uXZ&\c "#NuMg߈4e+ɥU�i! 4qtzpTR)-L %ba 0��-,,ȴLq ⃽Tͬa aTF@VOm <r:j%K"bp$ cH( k`%Dl!IJ W&w}A`K�,Ә(Z2e<|$G"F �gƾ}l6_SS =2^+S{FHJECgdo(ApKJ3E5�p,,[G*q<5 mI7X/Ö(}�!RYmRDH Iy"Q)*3V"`ҮV=vEDeH4|bfjeeD"ttl3dG.ky߸^RJQMϜ 9 Zp+X3A%TLtxgEpirQz^7m+>HXs_:ӍJI!$�%�|)TEm!H #II 0sѷ[gͪUᖻ1}}غ-D/%_}㵫nss_djc]Sj:E2 " ,wV,[<7_6Aj(V=ϕPX\9!hY?ou07^E(rWz굁ʊj^u֩ /$+�н }+b5*Cb,i'rsJ1f-.-MN|�7l4|~YfÕLǓO=@es?󹃗v=@4z) W2F&1yo S8PKs{Qgbk-SᄏRl.wo+Wm!5;v,:slL}4m A.-�OlR9 :\>]ꖏMϝ5 )N/+r]{W;?'~A2X yqKtmLCRٽf]@Ϟg`^=6q)1z'lw`{F` ؘG|>硺֗]6 W-هWQE`r3ismgD:s5N< F&�͇lvqcK =O<nS5a<f֧=k7Xgr�X) ,6/{Ckg5gϚ1Z[F9x]8rJeSw!N@ M6rٷ#IeQ[EMM-Ḽp͝Sdz0*ބْ w ;G66|7|i3}~;Gkf'{=͙ljj}cݻ[~qkŋWL ZW M<Ly/b1ɤyJDם8m&0"d+zg̮KLRJ7f<ÔCG /ݹ5J-y"IbpɞlYsPs]_Vkn](frk\'?0h؂Lʄ̊@P6U*[m ЌbX /asߟ|k&V tAD 32TVU7ݻ. 3Cxǎ#{9�~[g \6dsYwIuș5B B0 GP"R[ÿQN"mwW ϯ0a P44csϙ}{?C _~4E cSLn_Z_|�*J T;q cӻgϮۯ9xזwdmK5meۨ/10{lB#6`=6ktKKDeKu{{̜QZ�ns=صg7>ܲUxmfawo2|A_tkkT`gWQT__hsFKk=߻%@3[tS&kp& MKSEJL@hYo{T>WTlL<ai[zm.O8B$|ͭxufy0r�T8򛚚B͗[�23Di&PUQ cQ"{NwvnMڿǖ.^cFx{ASs#֭[pg-X~tH(#ahl' s@Jd-.%*|I+_?W_mG\zj~ȁ_[sǚ?Y_X}9OoQ!grʶ},h[5kVu �g44L<xK0|ߛ5͇0~8\a,3ݶutXvϟ:xU/3 1}9gPī2:![a&x8R ]?X 7r/A0x�.$S2C`>.K *s;&Gܦ+LAmED]`dů,|)1:xxveE*cU+]dl|{]~as45@.HGD>GSNPÓ'O%2\ԭEoJy!|3 >2g4woȑ^*=M_կ#o"}O^2}Z}-Gl~|xw!5:o),Fo ����IENDB`��������anyremote-6.7.1/cfg-data/AT-mode/�������������������������������������������������������������������0000755�0002322�0002322�00000000000�12120355623�016771� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/audacious.cfg������������������������������������������������������0000644�0002322�0002322�00000003461�12061426047�021436� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Audacious management (AT-mode) % % STATUS stable % XTEST no % SOUND app % ENV no % DEF_PLAYER GuiAppName=Audacious GuiAppBinary=audacious GuiAppRun= P=`ps -ef|grep audacious|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=audacious.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Audacious is a fork of Beep Media Player (BMP) 0.9.7.1, which in itself was based on XMMS1. [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=\ Make(mode,audacious); [Mode]=audacious : default_player_at (EnterMode)=\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(RUN_IF_NEED);\ Make(var,au_volume,by_value,-1); (Disconnect)=\ Macro(STOP); %InCall($$)=\ % Macro(STOP);\ % Exec(notify-send -t 5000 "Call from $(Param)");\ % Make(remote,off); %EndCall($$)=\ % Make(remote,on);\ % Macro(PLAY); RUN_IF_NEED=\ Exec(P=`ps -ef|grep audacious|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then audacious& fi); RUN_OR_QUIT=\ Exec(P=`ps -ef|grep audacious|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then audacious& else audtool shutdown; fi); QUIT=\ Exec(audtool shutdown); % Override 1=Exec(V=`audtool get-volume`;audtool set-volume `expr $V - 5`) 2=Make(var,au_volume,if [ "x$(au_volume)" = "x-1" ]; then audtool get-volume;audtool set-volume 0; else audtool set-volume $(au_volume); echo "-1"; fi) 3=Exec(V=`audtool get-volume`;audtool set-volume `expr $V + 5`) PLAY=Exec(audacious -t); RWD=Exec(audtool playback-seek-relative -5); FF=Exec(audtool playback-seek-relative 5); PREV=Exec(audacious -r); NEXT=Exec(audacious -f); STOP=Exec(audacious -s); PAUSE=Exec(audacious -t); [ModeEnd] [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/example-kdialog.cfg������������������������������������������������0000644�0002322�0002322�00000002677�12073567675�022554� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for kdialog --msgbox management. % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Kdialog test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=AT GuiAppDesc=Simple example of configuration file. [Protocol]=AT % aliased keys Answer=\ SendCKPD(E);\ Make(disconnect); Cancel=\ SendCKPD(E);\ Make(exit); (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,true);\ Macro(CHECK_RFCOMM_DEVICE);\ Make(var,ToMainMenu,by_value,:R);\ Exec(kdialog --msgbox "Initialized");\ Make(alarm,/tmp/alarm1,ALARM1);\ Make(alarm,/tmp/alarm2,ALARM2); (Connect)=\ Exec(kdialog --msgbox Connected) (Disconnect)=\ Exec(kdialog --msgbox Disconnected) InCall($$)=\ Exec(kdialog --msgbox "A call from $(Param)"); EndCall($$)=\ Exec(kdialog --msgbox CALL_END); 1=Exec(kdialog --msgbox 1) 2=Exec(kdialog --msgbox 2) 3=Exec(kdialog --msgbox 3) 4=Exec(kdialog --msgbox 4) 5=Exec(kdialog --msgbox 5) 6=Exec(kdialog --msgbox 6) 7=Exec(kdialog --msgbox 7) 8=Exec(kdialog --msgbox 8) 9=Exec(kdialog --msgbox 9) 0=Exec(kdialog --msgbox 0) % Multikey commands * * =Exec(F="$(TmpDir)/anyrem.hlp";echo "Just press buttons and inspect results" > $F);\ Macro(SHOW_HELP); # 1=Exec(kdialog --msgbox Hash_1) # 2=Exec(kdialog --msgbox Hash_2) EMPTY=Exec(kdialog --msgbox EMPTY) ALARM1=SendCKPD(* 1 *);Exec(kdialog --msgbox "Alarm 1") ALARM2=SendCKPD(* 2 *);Exec(kdialog --msgbox "Alarm 2") [End] �����������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/example-lirc.cfg���������������������������������������������������0000644�0002322�0002322�00000036667�12120355623�022056� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for LIRC integration testing. % % see /usr/include/linux/input.h % STATUS unknown % XTEST no % SOUND no % ENV no GuiAppName=LIRC test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=AT GuiAppDesc=Configuration file for LIRC integration testing. [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ (Connect) =Exec(echo Connected) (Disconnect)=Exec(echo Disconnected) KEY_0 =Exec(echo KEY_0); KEY_102ND =Exec(echo KEY_102ND); KEY_1 =Exec(echo KEY_1); KEY_2 =Exec(echo KEY_2); KEY_3 =Exec(echo KEY_3); KEY_4 =Exec(echo KEY_4); KEY_5 =Exec(echo KEY_5); KEY_6 =Exec(echo KEY_6); KEY_7 =Exec(echo KEY_7); KEY_8 =Exec(echo KEY_8); KEY_9 =Exec(echo KEY_9); KEY_A =Exec(echo KEY_A); KEY_AB =Exec(echo KEY_AB); KEY_AGAIN =Exec(echo KEY_AGAIN); KEY_ALTERASE =Exec(echo KEY_ALTERASE); KEY_ANGLE =Exec(echo KEY_ANGLE); KEY_APOSTROPHE =Exec(echo KEY_APOSTROPHE); KEY_ARCHIVE =Exec(echo KEY_ARCHIVE); KEY_AUDIO =Exec(echo KEY_AUDIO); KEY_AUX =Exec(echo KEY_AUX); KEY_B =Exec(echo KEY_B); KEY_BACK =Exec(echo KEY_BACK); KEY_BACKSLASH =Exec(echo KEY_BACKSLASH); KEY_BACKSPACE =Exec(echo KEY_BACKSPACE); KEY_BASSBOOST =Exec(echo KEY_BASSBOOST); KEY_BATTERY =Exec(echo KEY_BATTERY); KEY_BLUE =Exec(echo KEY_BLUE); KEY_BOOKMARKS =Exec(echo KEY_BOOKMARKS); KEY_BREAK =Exec(echo KEY_BREAK); KEY_BRIGHTNESSDOWN =Exec(echo KEY_BRIGHTNESSDOWN); KEY_BRIGHTNESSUP =Exec(echo KEY_BRIGHTNESSUP); KEY_BRL_DOT1 =Exec(echo KEY_BRL_DOT1); KEY_BRL_DOT2 =Exec(echo KEY_BRL_DOT2); KEY_BRL_DOT3 =Exec(echo KEY_BRL_DOT3); KEY_BRL_DOT4 =Exec(echo KEY_BRL_DOT4); KEY_BRL_DOT5 =Exec(echo KEY_BRL_DOT5); KEY_BRL_DOT6 =Exec(echo KEY_BRL_DOT6); KEY_BRL_DOT7 =Exec(echo KEY_BRL_DOT7); KEY_BRL_DOT8 =Exec(echo KEY_BRL_DOT8); KEY_C =Exec(echo KEY_C); KEY_CALC =Exec(echo KEY_CALC); KEY_CALENDAR =Exec(echo KEY_CALENDAR); KEY_CAMERA =Exec(echo KEY_CAMERA); KEY_CANCEL =Exec(echo KEY_CANCEL); KEY_CAPSLOCK =Exec(echo KEY_CAPSLOCK); KEY_CD =Exec(echo KEY_CD); KEY_CHANNEL =Exec(echo KEY_CHANNEL); KEY_CHANNELDOWN =Exec(echo KEY_CHANNELDOWN); KEY_CHANNELUP =Exec(echo KEY_CHANNELUP); KEY_CHAT =Exec(echo KEY_CHAT); KEY_CLEAR =Exec(echo KEY_CLEAR); KEY_CLOSE =Exec(echo KEY_CLOSE); KEY_CLOSECD =Exec(echo KEY_CLOSECD); KEY_COFFEE =Exec(echo KEY_COFFEE); KEY_COMMA =Exec(echo KEY_COMMA); KEY_COMPOSE =Exec(echo KEY_COMPOSE); KEY_COMPUTER =Exec(echo KEY_COMPUTER); KEY_CONFIG =Exec(echo KEY_CONFIG); KEY_CONNECT =Exec(echo KEY_CONNECT); KEY_COPY =Exec(echo KEY_COPY); KEY_CUT =Exec(echo KEY_CUT); KEY_CYCLEWINDOWS =Exec(echo KEY_CYCLEWINDOWS); KEY_D =Exec(echo KEY_D); KEY_DEL_EOL =Exec(echo KEY_DEL_EOL); KEY_DEL_EOS =Exec(echo KEY_DEL_EOS); KEY_DELETE =Exec(echo KEY_DELETE); KEY_DELETEFILE =Exec(echo KEY_DELETEFILE); KEY_DEL_LINE =Exec(echo KEY_DEL_LINE); KEY_DIGITS =Exec(echo KEY_DIGITS); KEY_DIRECTION =Exec(echo KEY_DIRECTION); KEY_DIRECTORY =Exec(echo KEY_DIRECTORY); KEY_DOCUMENTS =Exec(echo KEY_DOCUMENTS); KEY_DOT =Exec(echo KEY_DOT); KEY_DOWN =Exec(echo KEY_DOWN); KEY_DVD =Exec(echo KEY_DVD); KEY_E =Exec(echo KEY_E); KEY_EDIT =Exec(echo KEY_EDIT); KEY_EJECTCD =Exec(echo KEY_EJECTCD); KEY_EJECTCLOSECD =Exec(echo KEY_EJECTCLOSECD); KEY_EMAIL =Exec(echo KEY_EMAIL); KEY_END =Exec(echo KEY_END); KEY_ENTER =Exec(echo KEY_ENTER); KEY_EPG =Exec(echo KEY_EPG); KEY_EQUAL =Exec(echo KEY_EQUAL); KEY_ESC =Exec(echo KEY_ESC); KEY_EXIT =Exec(echo KEY_EXIT); KEY_F10 =Exec(echo KEY_F10); KEY_F11 =Exec(echo KEY_F11); KEY_F12 =Exec(echo KEY_F12); KEY_F13 =Exec(echo KEY_F13); KEY_F14 =Exec(echo KEY_F14); KEY_F15 =Exec(echo KEY_F15); KEY_F1 =Exec(echo KEY_F1); KEY_F16 =Exec(echo KEY_F16); KEY_F17 =Exec(echo KEY_F17); KEY_F18 =Exec(echo KEY_F18); KEY_F19 =Exec(echo KEY_F19); KEY_F20 =Exec(echo KEY_F20); KEY_F21 =Exec(echo KEY_F21); KEY_F22 =Exec(echo KEY_F22); KEY_F23 =Exec(echo KEY_F23); KEY_F24 =Exec(echo KEY_F24); KEY_F2 =Exec(echo KEY_F2); KEY_F =Exec(echo KEY_F); KEY_F3 =Exec(echo KEY_F3); KEY_F4 =Exec(echo KEY_F4); KEY_F5 =Exec(echo KEY_F5); KEY_F6 =Exec(echo KEY_F6); KEY_F7 =Exec(echo KEY_F7); KEY_F8 =Exec(echo KEY_F8); KEY_F9 =Exec(echo KEY_F9); KEY_FASTFORWARD =Exec(echo KEY_FASTFORWARD); KEY_FAVORITES =Exec(echo KEY_FAVORITES); KEY_FILE =Exec(echo KEY_FILE); KEY_FINANCE =Exec(echo KEY_FINANCE); KEY_FIND =Exec(echo KEY_FIND); KEY_FIRST =Exec(echo KEY_FIRST); KEY_FN =Exec(echo KEY_FN); KEY_FN_1 =Exec(echo KEY_FN_1); KEY_FN_2 =Exec(echo KEY_FN_2); KEY_FN_B =Exec(echo KEY_FN_B); KEY_FN_D =Exec(echo KEY_FN_D); KEY_FN_E =Exec(echo KEY_FN_E); KEY_FN_ESC =Exec(echo KEY_FN_ESC); KEY_FN_F =Exec(echo KEY_FN_F); KEY_FN_F10 =Exec(echo KEY_FN_F10); KEY_FN_F1 =Exec(echo KEY_FN_F1); KEY_FN_F11 =Exec(echo KEY_FN_F11); KEY_FN_F12 =Exec(echo KEY_FN_F12); KEY_FN_F2 =Exec(echo KEY_FN_F2); KEY_FN_F3 =Exec(echo KEY_FN_F3); KEY_FN_F4 =Exec(echo KEY_FN_F4); KEY_FN_F5 =Exec(echo KEY_FN_F5); KEY_FN_F6 =Exec(echo KEY_FN_F6); KEY_FN_F7 =Exec(echo KEY_FN_F7); KEY_FN_F8 =Exec(echo KEY_FN_F8); KEY_FN_F9 =Exec(echo KEY_FN_F9); KEY_FN_S =Exec(echo KEY_FN_S); KEY_FORWARD =Exec(echo KEY_FORWARD); KEY_FORWARDMAIL =Exec(echo KEY_FORWARDMAIL); KEY_FRONT =Exec(echo KEY_FRONT); KEY_G =Exec(echo KEY_G); KEY_GOTO =Exec(echo KEY_GOTO); KEY_GRAVE =Exec(echo KEY_GRAVE); KEY_GREEN =Exec(echo KEY_GREEN); KEY_H =Exec(echo KEY_H); KEY_HANGEUL =Exec(echo KEY_HANGEUL); KEY_HANJA =Exec(echo KEY_HANJA); KEY_HELP =Exec(echo KEY_HELP); KEY_HENKAN =Exec(echo KEY_HENKAN); KEY_HIRAGANA =Exec(echo KEY_HIRAGANA); KEY_HOME =Exec(echo KEY_HOME); KEY_HOMEPAGE =Exec(echo KEY_HOMEPAGE); KEY_HP =Exec(echo KEY_HP); KEY_I =Exec(echo KEY_I); KEY_INFO =Exec(echo KEY_INFO); KEY_INSERT =Exec(echo KEY_INSERT); KEY_INS_LINE =Exec(echo KEY_INS_LINE); KEY_ISO =Exec(echo KEY_ISO); KEY_J =Exec(echo KEY_J); KEY_K =Exec(echo KEY_K); KEY_KATAKANA =Exec(echo KEY_KATAKANA); KEY_KATAKANAHIRAGANA =Exec(echo KEY_KATAKANAHIRAGANA); KEY_KBDILLUMDOWN =Exec(echo KEY_KBDILLUMDOWN); KEY_KBDILLUMTOGGLE =Exec(echo KEY_KBDILLUMTOGGLE); KEY_KBDILLUMUP =Exec(echo KEY_KBDILLUMUP); KEY_KEYBOARD =Exec(echo KEY_KEYBOARD); KEY_KP0 =Exec(echo KEY_KP0); KEY_KP1 =Exec(echo KEY_KP1); KEY_KP2 =Exec(echo KEY_KP2); KEY_KP3 =Exec(echo KEY_KP3); KEY_KP4 =Exec(echo KEY_KP4); KEY_KP5 =Exec(echo KEY_KP5); KEY_KP6 =Exec(echo KEY_KP6); KEY_KP7 =Exec(echo KEY_KP7); KEY_KP8 =Exec(echo KEY_KP8); KEY_KP9 =Exec(echo KEY_KP9); KEY_KPASTERISK =Exec(echo KEY_KPASTERISK); KEY_KPCOMMA =Exec(echo KEY_KPCOMMA); KEY_KPDOT =Exec(echo KEY_KPDOT); KEY_KPENTER =Exec(echo KEY_KPENTER); KEY_KPEQUAL =Exec(echo KEY_KPEQUAL); KEY_KPJPCOMMA =Exec(echo KEY_KPJPCOMMA); KEY_KPLEFTPAREN =Exec(echo KEY_KPLEFTPAREN); KEY_KPMINUS =Exec(echo KEY_KPMINUS); KEY_KPPLUS =Exec(echo KEY_KPPLUS); KEY_KPPLUSMINUS =Exec(echo KEY_KPPLUSMINUS); KEY_KPRIGHTPAREN =Exec(echo KEY_KPRIGHTPAREN); KEY_KPSLASH =Exec(echo KEY_KPSLASH); KEY_L =Exec(echo KEY_L); KEY_LANGUAGE =Exec(echo KEY_LANGUAGE); KEY_LAST =Exec(echo KEY_LAST); KEY_LEFT =Exec(echo KEY_LEFT); KEY_LEFTALT =Exec(echo KEY_LEFTALT); KEY_LEFTBRACE =Exec(echo KEY_LEFTBRACE); KEY_LEFTCTRL =Exec(echo KEY_LEFTCTRL); KEY_LEFTMETA =Exec(echo KEY_LEFTMETA); KEY_LEFTSHIFT =Exec(echo KEY_LEFTSHIFT); KEY_LINEFEED =Exec(echo KEY_LINEFEED); KEY_LIST =Exec(echo KEY_LIST); KEY_M =Exec(echo KEY_M); KEY_MACRO =Exec(echo KEY_MACRO); KEY_MAIL =Exec(echo KEY_MAIL); KEY_MAX =Exec(echo KEY_MAX); KEY_MEDIA =Exec(echo KEY_MEDIA); KEY_MEMO =Exec(echo KEY_MEMO); KEY_MENU =Exec(echo KEY_MENU); KEY_MHP =Exec(echo KEY_MHP); KEY_MINUS =Exec(echo KEY_MINUS); KEY_MODE =Exec(echo KEY_MODE); KEY_MOVE =Exec(echo KEY_MOVE); KEY_MP3 =Exec(echo KEY_MP3); KEY_MSDOS =Exec(echo KEY_MSDOS); KEY_MUHENKAN =Exec(echo KEY_MUHENKAN); KEY_MUTE =Exec(echo KEY_MUTE); KEY_N =Exec(echo KEY_N); KEY_NEW =Exec(echo KEY_NEW); KEY_NEXT =Exec(echo KEY_NEXT); KEY_NEXTSONG =Exec(echo KEY_NEXTSONG); KEY_NUMLOCK =Exec(echo KEY_NUMLOCK); KEY_O =Exec(echo KEY_O); KEY_OK =Exec(echo KEY_OK); KEY_OPEN =Exec(echo KEY_OPEN); KEY_OPTION =Exec(echo KEY_OPTION); KEY_P =Exec(echo KEY_P); KEY_PAGEDOWN =Exec(echo KEY_PAGEDOWN); KEY_PAGEUP =Exec(echo KEY_PAGEUP); KEY_PASTE =Exec(echo KEY_PASTE); KEY_PAUSE =Exec(echo KEY_PAUSE); KEY_PAUSECD =Exec(echo KEY_PAUSECD); KEY_PC =Exec(echo KEY_PC); KEY_PHONE =Exec(echo KEY_PHONE); KEY_PLAY =Exec(echo KEY_PLAY); KEY_PLAYCD =Exec(echo KEY_PLAYCD); KEY_PLAYER =Exec(echo KEY_PLAYER); KEY_PLAYPAUSE =Exec(echo KEY_PLAYPAUSE); KEY_POWER =Exec(echo KEY_POWER); KEY_POWER2 =Exec(echo KEY_POWER2); KEY_PREVIOUS =Exec(echo KEY_PREVIOUS); KEY_PREVIOUSSONG =Exec(echo KEY_PREVIOUSSONG); KEY_PRINT =Exec(echo KEY_PRINT); KEY_PROG1 =Exec(echo KEY_PROG1); KEY_PROG2 =Exec(echo KEY_PROG2); KEY_PROG3 =Exec(echo KEY_PROG3); KEY_PROG4 =Exec(echo KEY_PROG4); KEY_PROGRAM =Exec(echo KEY_PROGRAM); KEY_PROPS =Exec(echo KEY_PROPS); KEY_PVR =Exec(echo KEY_PVR); KEY_Q =Exec(echo KEY_Q); KEY_QUESTION =Exec(echo KEY_QUESTION); KEY_R =Exec(echo KEY_R); KEY_RADIO =Exec(echo KEY_RADIO); KEY_RECORD =Exec(echo KEY_RECORD); KEY_RED =Exec(echo KEY_RED); KEY_REDO =Exec(echo KEY_REDO); KEY_REFRESH =Exec(echo KEY_REFRESH); KEY_REPLY =Exec(echo KEY_REPLY); KEY_RESERVED =Exec(echo KEY_RESERVED); KEY_RESTART =Exec(echo KEY_RESTART); KEY_REWIND =Exec(echo KEY_REWIND); KEY_RIGHT =Exec(echo KEY_RIGHT); KEY_RIGHTALT =Exec(echo KEY_RIGHTALT); KEY_RIGHTBRACE =Exec(echo KEY_RIGHTBRACE); KEY_RIGHTCTRL =Exec(echo KEY_RIGHTCTRL); KEY_RIGHTMETA =Exec(echo KEY_RIGHTMETA); KEY_RIGHTSHIFT =Exec(echo KEY_RIGHTSHIFT); KEY_RO =Exec(echo KEY_RO); KEY_S =Exec(echo KEY_S); KEY_SAT =Exec(echo KEY_SAT); KEY_SAT2 =Exec(echo KEY_SAT2); KEY_SAVE =Exec(echo KEY_SAVE); KEY_SCREEN =Exec(echo KEY_SCREEN); KEY_SCROLLDOWN =Exec(echo KEY_SCROLLDOWN); KEY_SCROLLLOCK =Exec(echo KEY_SCROLLLOCK); KEY_SCROLLUP =Exec(echo KEY_SCROLLUP); KEY_SEARCH =Exec(echo KEY_SEARCH); KEY_SELECT =Exec(echo KEY_SELECT); KEY_SEMICOLON =Exec(echo KEY_SEMICOLON); KEY_SEND =Exec(echo KEY_SEND); KEY_SENDFILE =Exec(echo KEY_SENDFILE); KEY_SETUP =Exec(echo KEY_SETUP); KEY_SHOP =Exec(echo KEY_SHOP); KEY_SHUFFLE =Exec(echo KEY_SHUFFLE); KEY_SLASH =Exec(echo KEY_SLASH); KEY_SLEEP =Exec(echo KEY_SLEEP); KEY_SLOW =Exec(echo KEY_SLOW); KEY_SOUND =Exec(echo KEY_SOUND); KEY_SPACE =Exec(echo KEY_SPACE); KEY_SPORT =Exec(echo KEY_SPORT); KEY_STOP =Exec(echo KEY_STOP); KEY_STOPCD =Exec(echo KEY_STOPCD); KEY_SUBTITLE =Exec(echo KEY_SUBTITLE); KEY_SUSPEND =Exec(echo KEY_SUSPEND); KEY_SWITCHVIDEOMODE =Exec(echo KEY_SWITCHVIDEOMODE); KEY_SYSRQ =Exec(echo KEY_SYSRQ); KEY_T =Exec(echo KEY_T); KEY_TAB =Exec(echo KEY_TAB); KEY_TAPE =Exec(echo KEY_TAPE); KEY_TEEN =Exec(echo KEY_TEEN); KEY_TEXT =Exec(echo KEY_TEXT); KEY_TIME =Exec(echo KEY_TIME); KEY_TITLE =Exec(echo KEY_TITLE); KEY_TUNER =Exec(echo KEY_TUNER); KEY_TV =Exec(echo KEY_TV); KEY_TV2 =Exec(echo KEY_TV2); KEY_TWEN =Exec(echo KEY_TWEN); KEY_U =Exec(echo KEY_U); KEY_UNDO =Exec(echo KEY_UNDO); KEY_UNKNOWN =Exec(echo KEY_UNKNOWN); KEY_UP =Exec(echo KEY_UP); KEY_V =Exec(echo KEY_V); KEY_VCR =Exec(echo KEY_VCR); KEY_VCR2 =Exec(echo KEY_VCR2); KEY_VENDOR =Exec(echo KEY_VENDOR); KEY_VIDEO =Exec(echo KEY_VIDEO); KEY_VOLUMEDOWN =Exec(echo KEY_VOLUMEDOWN); KEY_VOLUMEUP =Exec(echo KEY_VOLUMEUP); KEY_W =Exec(echo KEY_W); KEY_WAKEUP =Exec(echo KEY_WAKEUP); KEY_WWW =Exec(echo KEY_WWW); KEY_X =Exec(echo KEY_X); KEY_XFER =Exec(echo KEY_XFER); KEY_Y =Exec(echo KEY_Y); KEY_YELLOW =Exec(echo KEY_YELLOW); KEY_YEN =Exec(echo KEY_YEN); KEY_Z =Exec(echo KEY_Z); KEY_ZENKAKUHANKAKU =Exec(echo KEY_ZENKAKUHANKAKU); KEY_ZOOM =Exec(echo KEY_ZOOM); BTN_0 =Exec(echo BTN_0); BTN_1 =Exec(echo BTN_1); BTN_2 =Exec(echo BTN_2); BTN_3 =Exec(echo BTN_3); BTN_4 =Exec(echo BTN_4); BTN_5 =Exec(echo BTN_5); BTN_6 =Exec(echo BTN_6); BTN_7 =Exec(echo BTN_7); BTN_8 =Exec(echo BTN_8); BTN_9 =Exec(echo BTN_9); BTN_A =Exec(echo BTN_A); BTN_B =Exec(echo BTN_B); BTN_BACK =Exec(echo BTN_BACK); BTN_BASE =Exec(echo BTN_BASE); BTN_BASE2 =Exec(echo BTN_BASE2); BTN_BASE3 =Exec(echo BTN_BASE3); BTN_BASE4 =Exec(echo BTN_BASE4); BTN_BASE5 =Exec(echo BTN_BASE5); BTN_BASE6 =Exec(echo BTN_BASE6); BTN_C =Exec(echo BTN_C); BTN_DEAD =Exec(echo BTN_DEAD); BTN_DIGI =Exec(echo BTN_DIGI); BTN_EXTRA =Exec(echo BTN_EXTRA); BTN_FORWARD =Exec(echo BTN_FORWARD); BTN_GAMEPAD =Exec(echo BTN_GAMEPAD); BTN_GEAR_DOWN =Exec(echo BTN_GEAR_DOWN); BTN_GEAR_UP =Exec(echo BTN_GEAR_UP); BTN_JOYSTICK =Exec(echo BTN_JOYSTICK); BTN_LEFT =Exec(echo BTN_LEFT); BTN_MIDDLE =Exec(echo BTN_MIDDLE); BTN_MISC =Exec(echo BTN_MISC); BTN_MODE =Exec(echo BTN_MODE); BTN_MOUSE =Exec(echo BTN_MOUSE); BTN_PINKIE =Exec(echo BTN_PINKIE); BTN_RIGHT =Exec(echo BTN_RIGHT); BTN_SELECT =Exec(echo BTN_SELECT); BTN_SIDE =Exec(echo BTN_SIDE); BTN_START =Exec(echo BTN_START); BTN_STYLUS =Exec(echo BTN_STYLUS); BTN_STYLUS2 =Exec(echo BTN_STYLUS2); BTN_TASK =Exec(echo BTN_TASK); BTN_THUMB =Exec(echo BTN_THUMB); BTN_THUMB2 =Exec(echo BTN_THUMB2); BTN_THUMBL =Exec(echo BTN_THUMBL); BTN_THUMBR =Exec(echo BTN_THUMBR); BTN_TL =Exec(echo BTN_TL); BTN_TL2 =Exec(echo BTN_TL2); BTN_TOOL_AIRBRUSH =Exec(echo BTN_TOOL_AIRBRUSH); BTN_TOOL_BRUSH =Exec(echo BTN_TOOL_BRUSH); BTN_TOOL_DOUBLETAP =Exec(echo BTN_TOOL_DOUBLETAP); BTN_TOOL_FINGER =Exec(echo BTN_TOOL_FINGER); BTN_TOOL_LENS =Exec(echo BTN_TOOL_LENS); BTN_TOOL_MOUSE =Exec(echo BTN_TOOL_MOUSE); BTN_TOOL_PEN =Exec(echo BTN_TOOL_PEN); BTN_TOOL_PENCIL =Exec(echo BTN_TOOL_PENCIL); BTN_TOOL_RUBBER =Exec(echo BTN_TOOL_RUBBER); BTN_TOOL_TRIPLETAP =Exec(echo BTN_TOOL_TRIPLETAP); BTN_TOP =Exec(echo BTN_TOP); BTN_TOP2 =Exec(echo BTN_TOP2); BTN_TOUCH =Exec(echo BTN_TOUCH); BTN_TR =Exec(echo BTN_TR); BTN_TR2 =Exec(echo BTN_TR2); BTN_TRIGGER =Exec(echo BTN_TRIGGER); BTN_WHEEL =Exec(echo BTN_WHEEL); BTN_X =Exec(echo BTN_X); BTN_Y =Exec(echo BTN_Y); BTN_Z =Exec(echo BTN_Z); % inputlirc can control modifiers CTRL_KEY_3 =Exec(echo CTRL_KEY_F3); ALT_KEY_F3 =Exec(echo ALT_KEY_F3); ALT_KEY_F4 =Exec(echo ALT_KEY_F4); ALT_KEY_ENTER =Exec(echo ALT_KEY_ENTER); ALT_KEY_TAB =Exec(echo ALT_KEY_TAB); CTRL_ALT_KEY_A =Exec(echo CTRL_ALT_KEY_A); CTRL_ALT_KEY_F1 =Exec(echo CTRL_ALT_KEY_F1); CTRL_ALT_KEY_F2 =Exec(echo CTRL_ALT_KEY_F2); CTRL_ALT_KEY_F3 =Exec(echo CTRL_ALT_KEY_F3); CTRL_ALT_KEY_F4 =Exec(echo CTRL_ALT_KEY_F4); META_KEY_E =Exec(echo META_KEY_E); META_KEY_D =Exec(echo META_KEY_D); SHIFT_KEY_A =Exec(echo SHIFT_KEY_A); SHIFT_KEY_D =Exec(echo SHIFT_KEY_D); SHIFT_KEY_G =Exec(echo SHIFT_KEY_G); SHIFT_KEY_J =Exec(echo SHIFT_KEY_J); SHIFT_KEY_M =Exec(echo SHIFT_KEY_M); SHIFT_KEY_P =Exec(echo SHIFT_KEY_P); SHIFT_KEY_T =Exec(echo SHIFT_KEY_T); SHIFT_KEY_W =Exec(echo SHIFT_KEY_W); SHIFT_KEY_BACKSPACE =Exec(echo SHIFT_KEY_BACKSPACE); CTRL_SHIFT_KEY_B =Exec(echo CTRL_SHIFT_KEY_B); CTRL_SHIFT_KEY_F =Exec(echo CTRL_SHIFT_KEY_F); % see /usr/include/linux/input.h KEY_MIN_INTERESTING =Macro(KEY_MUTE); [End] �������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/listen.cfg���������������������������������������������������������0000644�0002322�0002322�00000002311�12061426047�020750� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Listen management (AT-mode) % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER GuiAppName=Listen GuiAppBinary=listen GuiAppRun= P=`ps -ef|grep listen|grep -v grep|grep -v nolisten|grep -v listening|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=listen.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Listen is an audio player written in Python [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=\ Make(mode,listen); [Mode]=listen : default_player_at % (EnterMode) by Utils/aliases-at.cfg RUN_IF_NEED=\ Exec(P=`pgrep listen`; if [ "x$P" = "x" ]; then listen & fi); RUN_OR_QUIT=\ Exec(P=`pgrep listen`; if [ "x$P" = "x" ]; then listen & else qdbus org.gnome.Listen /org/gnome/listen quit; fi); QUIT=\ Exec(pkill listen) PREV=Exec(listen --previous); PLAY=Exec(listen --play-pause); NEXT=Exec(listen --next); PAUSE=Exec(listen --play-pause); STOP=Exec(listen --play-pause); % override * *=Macro(DEFAULT_HELP_NO_FF_RWD); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/example-sagem.cfg��������������������������������������������������0000644�0002322�0002322�00000003407�12100017671�022177� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file % This file was not tested on Sagem phones. Alfa version. Send Your feedbacks. % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Sagem test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=AT GuiAppDesc=Simple example of configuration file. Tuned for Sagem phones. [Protocol]=AT % Green button 83=Make(disconnect); % Red button 69=Make(exit); (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); InCall($$)=\ Exec($(CfgDir)/Utils/message.sh "A call from $(Param)");\ Make(remote,off) EndCall($$)=\ Make(remote,on);\ Exec($(CfgDir)/Utils/message.sh "Call finished") 42 42=Exec(F="$(TmpDir)/anyrem.hlp";echo "Just press buttons and inspect results" > $F);\ Macro(SHOW_HELP); * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "Seems Your phone is not Sagem. Use example-kdialog.cfg instead !" > $F);\ Macro(SHOW_HELP); % Keys 1-9,*,# 48=Exec($(CfgDir)/Utils/message.sh 0) 49=Exec($(CfgDir)/Utils/message.sh 1) 50=Exec($(CfgDir)/Utils/message.sh 2) 51=Exec($(CfgDir)/Utils/message.sh 3) 52=Exec($(CfgDir)/Utils/message.sh 4) 53=Exec($(CfgDir)/Utils/message.sh 5) 54=Exec($(CfgDir)/Utils/message.sh 6) 55=Exec($(CfgDir)/Utils/message.sh 7) 56=Exec($(CfgDir)/Utils/message.sh 8) 57=Exec($(CfgDir)/Utils/message.sh 9) %42=Exec($(CfgDir)/Utils/message.sh Star) 35=Exec($(CfgDir)/Utils/message.sh Hash) 85=Exec($(CfgDir)/Utils/message.sh Vol_Up) 68=Exec($(CfgDir)/Utils/message.sh Vol_Down) EMPTY=Exec($(CfgDir)/Utils/message.sh Play) 91=Exec($(CfgDir)/Utils/message.sh Mail) 32=Exec($(CfgDir)/Utils/message.sh IMode) 67=Exec($(CfgDir)/Utils/message.sh Left) 77=Exec($(CfgDir)/Utils/message.sh Right) 94=Exec($(CfgDir)/Utils/message.sh Up) 86=Exec($(CfgDir)/Utils/message.sh Down) [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/exaile.cfg���������������������������������������������������������0000644�0002322�0002322�00000002520�12061426047�020723� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Exaile management (AT-mode) % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER GuiAppName=Exaile GuiAppBinary=exaile GuiAppRun=P=`ps -ef|grep exaile |grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=exaile.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Exaile is a music player aiming to be similar to KDE's Amarok, but for GTK+ and written in Python. [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=\ Make(mode,exaile); [Mode]=exaile : default_player_at RUN_IF_NEED=\ Exec(P=`ps -ef|grep exaile|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then xterm -geometry "1x1+0+0" -e exaile& fi); RUN_OR_QUIT=\ Exec(P=`ps -ef|grep exaile|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then xterm -geometry "1x1+0+0" -e exaile& else pkill -f "python (.)*exaile"; fi); QUIT=\ Exec(pkill -f 'python (.)*exaile'); PREV=Exec(exaile --prev); PLAY=Exec(exaile --play-pause); NEXT=Exec(exaile --next); PAUSE=Exec(exaile --play-pause); STOP=Exec(exaile --play-pause); % override * *=Macro(DEFAULT_HELP_NO_FF_RWD); [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/example-siemens.cfg������������������������������������������������0000644�0002322�0002322�00000004620�12100017671�022544� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file % Version for Siemens S55/S65 and BenqSiemens EL71 % thanks to Artem Zolochevskiy % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Siemens test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=AT GuiAppDesc=Simple example of configuration file. Tuned for Siemens phones. [Protocol]=AT % Green button S=Make(disconnect); % Red button E=Make(exit); (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,true);\ Macro(CHECK_RFCOMM_DEVICE);\ Make(var,ToMainMenu,by_value,E); (Connect)=\ Exec($(CfgDir)/Utils/message.sh Connected) (Disconnect)=\ Exec($(CfgDir)/Utils/message.sh Disconnected) InCall($$)=\ Exec($(CfgDir)/Utils/message.sh "A call from $(Param)");\ Make(remote,off) EndCall($$)=\ Make(remote,on);\ Exec($(CfgDir)/Utils/message.sh "Call finished"); * * =Exec(F="$(TmpDir)/anyrem.hlp";echo "Just press buttons and inspect results" > $F);\ Macro(SHOW_HELP); 42 42=Exec(F="$(TmpDir)/anyrem.hlp";echo "Use example-sagem.cfg instead !" > $F);\ Macro(SHOW_HELP); 1=Exec($(CfgDir)/Utils/message.sh 1); 2=Exec($(CfgDir)/Utils/message.sh 2); 3=Exec($(CfgDir)/Utils/message.sh 3); 4=Exec($(CfgDir)/Utils/message.sh 4); 5=Exec($(CfgDir)/Utils/message.sh 5); 6=Exec($(CfgDir)/Utils/message.sh 6); 7=Exec($(CfgDir)/Utils/message.sh 7); 8=Exec($(CfgDir)/Utils/message.sh 8); 9=Exec($(CfgDir)/Utils/message.sh 9); 0=Exec($(CfgDir)/Utils/message.sh 0); *=Exec($(CfgDir)/Utils/message.sh Star); #=Exec($(CfgDir)/Utils/message.sh Hash); [=Exec($(CfgDir)/Utils/message.sh SoftLeft); ]=Exec($(CfgDir)/Utils/message.sh SoftRight); M=Exec($(CfgDir)/Utils/message.sh Record); :O=Exec($(CfgDir)/Utils/message.sh "MyMenu/Music"); +=Exec($(CfgDir)/Utils/message.sh VolUp); -=Exec($(CfgDir)/Utils/message.sh VolDown ); :+=Exec($(CfgDir)/Utils/message.sh VolUp); :-=Exec($(CfgDir)/Utils/message.sh VolDown ); F=Exec($(CfgDir)/Utils/message.sh JoystickPush); ^=Exec($(CfgDir)/Utils/message.sh JoystickUp); V=Exec($(CfgDir)/Utils/message.sh JoystickDown); <=Exec($(CfgDir)/Utils/message.sh JoystickLeft); >=Exec($(CfgDir)/Utils/message.sh JoystickRight); %BenqSiemens specific :X15=Exec($(CfgDir)/Utils/message.sh "Fast dialing key"); :P=Exec($(CfgDir)/Utils/message.sh "Camera key"); :X17=Exec($(CfgDir)/Utils/message.sh "Slider opened"); :X19=Exec($(CfgDir)/Utils/message.sh "Slider closed"); :X1D=Exec($(CfgDir)/Utils/message.sh "Play button"); [End] ����������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/banshee.cfg��������������������������������������������������������0000644�0002322�0002322�00000003400�12061426047�021057� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Banshee management (AT-mode) % prerequisites: amixer/pactl utility % % STATUS stable % XTEST yes % SOUND mixer % ENV no % DEF_PLAYER GuiAppName=Banshee GuiAppBinary= B=`which banshee 2> /dev/null`;if [ "x$B" = "x" ]; then echo banshee-1; else echo banshee; fi GuiAppRun= P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=media-player-banshee.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Music management and playback for Gnome [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE);\ Make(var, banshee_exec, which banshee 2> /dev/null);\ Make(var, banshee_exec, if [ "x$(banshee_exec)" = "x" ]; then which banshee-1; else echo $(banshee_exec); fi); (Connect)=\ Make(mode,banshee); [Mode]=banshee : default_player_at RUN_IF_NEED=\ Exec(P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then $(banshee_exec) > /dev/null& fi); RUN_OR_QUIT=\ Exec(P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then $(banshee_exec) > /dev/null& else killall -r "banshee.*" ; fi); QUIT=\ Exec(killall -r "banshee.*"); %InCall($$)=Exec($(banshee_exec) --pause);Make(remote,off); %EndCall($$)=Make(remote,on);Exec($(banshee_exec) --toggle-playing) PLAY=Exec($(banshee_exec) --toggle-playing); RWD=Emulate(keydown,Control_L,key,Left,keyup,Control_L); FF=Emulate(keydown,Control_L,key,Right,keyup,Control_L); PREV=Exec($(banshee_exec) --previous); NEXT=Exec($(banshee_exec) --next); STOP=Exec($(banshee_exec) --pause); PAUSE=Exec($(banshee_exec) --pause); [ModeEnd] [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/kaffeine.cfg�������������������������������������������������������0000644�0002322�0002322�00000005567�12100017671�021233� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Kaffeine management. % prerequisites: amixer/pactl utility % Kaffeine playlist should be already created % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Kaffeine GuiAppBinary=kaffeine GuiAppRun= A=`dcop 2> /dev/null|grep kaffeine`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=kaffeine.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=KDE media player. [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE);\ Make(var,kde-version,kaffeine -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."); (Connect)=\ Make(mode,kaffeine-kde$(kde-version)); % Kaffeine/KDE D-BUS support is VERY pure [Mode]=kaffeine-kde4 (EnterMode)=\ Exec(kaffeine) QUIT=\ Exec(qdbus org.kde.kaffeine /MainApplication org.kde.KApplication.quit;killall kaffeine) 1=Emulate(key,KP_Subtract); 2=Emulate(key,m); 3=Emulate(key,KP_Add); 4=Emulate(key,Left) 5=Emulate(key,space); 6=Emulate(key,Right) 7=Emulate(key,Page_Up) 8=Emulate(key,BackSpace); 9=Emulate(key,Page_Down) * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Rew 5 - Play/Pause 6 - FF" >> $F;echo "7 - Prew 8 - Stop 9 - Next" >> $F;echo "* 0 - Fullscreen # - Quit" >> $F);\ Macro(SHOW_HELP); * #=Exec(P=`pgrep kaffeine`; if [ "x$P" = "x" ]; then kaffeine; else qdbus org.kde.kaffeine /MainApplication org.kde.KApplication.quit;killall kaffeine; fi) 0=Emulate(key,f); #=Macro(QUIT); [ModeEnd] [Mode]=kaffeine-kde3 (EnterMode)=\ Exec(kaffeine) (Disconnect)=\ Exec(dcop kaffeine KaffeineIface pause);\ Exec($(CfgDir)/Utils/message.sh "Disconnected... Set to pause") %InCall($$)=\ % Exec(dcop kaffeine KaffeineIface pause);\ % Make(remote,off) %EndCall($$)=\ % Make(remote,on);\ % Exec(dcop kaffeine KaffeineIface pause) Answer=\ Make(disconnect); Cancel=\ Exec(dcop kaffeine KaffeineIface quit);\ Make(exit); 1=Macro(DEFAULT_VOLUME_DOWN) 2=Macro(DEFAULT_TOGGLE_MUTE) 3=Macro(DEFAULT_VOLUME_UP) 4=Exec(dcop kaffeine KaffeineIface posMinus) 5=Exec(dcop kaffeine KaffeineIface play;dcop kaffeine KaffeineIface fullscreen) 6=Exec(dcop kaffeine KaffeineIface posPlus) 7=Exec(dcop kaffeine KaffeineIface previous) 8=Exec(dcop kaffeine KaffeineIface stop;dcop kaffeine KaffeineIface fullscreen) 9=Exec(dcop kaffeine KaffeineIface next) * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Rew 5 - Play 6 - FF" >> $F;echo "7 - Prew 8 - Stop 9 - Next" >> $F;echo "* 0 - Pause # - Quit" >> $F);\ Macro(SHOW_HELP); * #=Exec(P=`dcop|grep kaffeine`; if [ "x$P" = "x" ]; then kaffeine;sleep 2;dcop kaffeine KaffeineIface setNumber 1; else dcop kaffeine KaffeineIface quit; fi) 0=Exec(dcop kaffeine KaffeineIface pause) #=Exec(dcop kaffeine KaffeineIface quit) [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/tvtime.cfg���������������������������������������������������������0000644�0002322�0002322�00000005466�12120355623�020775� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for tvtime management. % prerequisites: utility % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=TvTime GuiAppBinary=tvtime GuiAppRun= A=`ps -ef|grep tvtime|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=tvtime.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Tvtime is a high quality television application for use with video capture cards on Linux systems. [Protocol]=AT % aliased keys Answer=\ Make(disconnect); Cancel=\ Exec(tvtime-command QUIT);\ Make(exit); (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=\ Exec(P=`ps -ef|grep tvtime|grep -v grep|grep -v anyremote`; if [ "x$P" = "x" ]; then tvtime & fi); InCall($$)=\ Macro(DEFAULT_TOGGLE_MUTE);\ Make(remote,off); EndCall($$)=\ Make(remote,on);\ Macro(DEFAULT_TOGGLE_MUTE); TVTIME_CHDN=Exec(tvtime-command DOWN > /dev/null) TVTIME_ZOOM=Exec(tvtime-command TOGGLE_FULLSCREEN > /dev/null) TVTIME_CHUP=Exec(tvtime-command UP > /dev/null) TVTIME_VOLUP=Exec(tvtime-command MIXER_UP > /dev/null) TVTIME_MUTE =Exec(tvtime-command TOGGLE_MUTE > /dev/null) TVTIME_VOLDN=Exec(tvtime-command MIXER_DOWN > /dev/null) 0=Exec(tvtime-command CHANNEL_0 > /dev/null) 1=Exec(tvtime-command CHANNEL_1 > /dev/null) 2=Exec(tvtime-command CHANNEL_2 > /dev/null) 3=Exec(tvtime-command CHANNEL_3 > /dev/null) 4=Exec(tvtime-command CHANNEL_4 > /dev/null) 5=Exec(tvtime-command CHANNEL_5 > /dev/null) 6=Exec(tvtime-command CHANNEL_6 > /dev/null) 7=Exec(tvtime-command CHANNEL_7 > /dev/null) 8=Exec(tvtime-command CHANNEL_8 > /dev/null) 9=Exec(tvtime-command CHANNEL_9 > /dev/null) * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "Press numeric buttons to choose channel.">$F;echo "Use # to change mode.">>$F); Macro(SHOW_HELP); #=Make(mode,tvtime2) [Mode]=tvtime2 1=Macro(TVTIME_VOLDN) 2=Exec(tvtime-command TOGGLE_MUTE > /dev/null) 3=Macro(TVTIME_VOLUP) 4=Macro(TVTIME_CHDN) 5=Macro(TVTIME_ZOOM) 6=Macro(TVTIME_CHUP) 7=Make(none) 8=Make(none) 9=Make(none) * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Ch- 5 - Fullscreen 6 - Ch +" >> $F;echo "* * - Help 0 # - change mode" >> $F;echo "* # - Run/Quit">> $F);\ Macro(SHOW_HELP); * #=Exec(P=`pgrep tvtime|grep -v grep|grep -v nedit`; if [ "x$P" = "x" ]; then tvtime > /dev/null& else tvtime-command QUIT; fi) 0=Make(none) #=Make(mode,default) [ModeEnd] %%%%%%%%%%%%%% % % Key aliases % %%%%%%%%%%%%%% % Aliases for AverMedia IR remote KEY_VOLUMEDOWN=Macro(TVTIME_VOLDN) KEY_MIN_INTERESTING=Macro(TVTIME_MUTE) KEY_VOLUMEUP=Macro(TVTIME_VOLUP) KEY_CHANNELUP=Macro(TVTIME_CHUP) KEY_CHANNELDOWN=Macro(TVTIME_CHDN) KEY_ZOOM=Macro(TVTIME_ZOOM) [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/totem.cfg����������������������������������������������������������0000644�0002322�0002322�00000003640�12100017671�020601� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Totem management (AT-mode) % prerequisites: amixer/pactl utility % % STATUS stable % TODO load with playlist ready % XTEST no % SOUND mixer % ENV no GuiAppName=Totem GuiAppBinary=totem GuiAppRun= A=`ps -ef|grep totem|grep -v totem-plugin-viewer|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=totem.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Totem is the official movie player of the GNOME desktop environment based on xine-lib or GStreamer. [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=\ Exec(P=`ps -ef|grep totem|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then totem& fi) (Disconnect)=\ Exec(totem --pause);\ Exec($(CfgDir)/Utils/message.sh Disconnected) %InCall($$)=\ % Exec(totem --play-pause);\ % Make(remote,off); %EndCall($$)=\ % Make(remote,on);\ % Exec(totem --play-pause) Answer=\ Make(disconnect); Cancel=\ Exec(totem --quit);\ Make(exit); %1=Exec(totem --volume-down); %3=Exec(totem --volume-up); 1=Macro(DEFAULT_VOLUME_DOWN) 2=Macro(DEFAULT_TOGGLE_MUTE) 3=Macro(DEFAULT_VOLUME_UP) 4=Exec(totem --seek-bwd); 5=Exec(totem --play-pause;totem --fullscreen); 6=Exec(totem --seek-fwd); 7=Exec(totem --previous); 8=Exec(totem --pause); 9=Exec(totem --next); * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Rew 5 - Play/Stop 6 - FF" >> $F;echo "7 - Prev 8 - Pause 9 - Next" >> $F;echo "* * - Help 0 - Pause # - Quit" >> $F;echo "* # - Run/Quit Totem" >> $F);\ Macro(SHOW_HELP); * #=Exec(P=`ps -ef|grep totem|grep -v totem-plugin-viewer|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then totem& else totem --quit; fi) 0=Exec(totem --pause); #=Exec(totem --quit); [End] ������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/amixer.cfg���������������������������������������������������������0000644�0002322�0002322�00000002344�12100017671�020736� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for sound management with amixer. % prerequisites: amixer utility; example is for soundcard #0 % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Sound volume test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=AT GuiAppDesc=Sound volume control % 1 - increase sound volume % 2 - mute/unmute % 3 - increase sound volume [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(CHECK_RFCOMM_DEVICE);\ Exec(TEST=`amixer -c $(MixerCard) sget Master,0`;U=`echo $TEST|grep "Usage: amixer" |wc -l`;if [ "x$U" != "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: You have to correct example according to Your system configuration !"; fi); Answer=\ Make(disconnect); Cancel=\ Make(exit); % Auto-mute: InCall($$)=\ Macro(DEFAULT_TOGGLE_MUTE);\ Exec($(CfgDir)/Utils/message.sh "$(Param)");\ Make(remote,off); EndCall($$)=\ Make(remote,on);\ Macro(DEFAULT_TOGGLE_MUTE); * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "1 - Vol-" > $F;echo "2 - Mute/Unmute" >> $F;echo "3 - Vol+" >> $F;$(CfgDir)/Utils/message.sh "`cat $F`") 1=Macro(DEFAULT_VOLUME_DOWN) 2=Macro(DEFAULT_TOGGLE_MUTE) 3=Macro(DEFAULT_VOLUME_UP) [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/moc.cfg������������������������������������������������������������0000644�0002322�0002322�00000003035�12073567675�020254� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for moc (http://moc.daper.net) management. (AT-mode) % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=MOC GuiAppBinary=mocp GuiAppRun= P=`ps -ef|grep mocp|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Console audio player for Linux/UNIX [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=\ Make(mode,moc); [Mode]=moc (EnterMode)=\ Exec(mocp -S&); Cancel=\ Exec(mocp -x);\ Make(exit); MOC_TITLE=\ Make(var,message,mocp -i|grep Artist|sed "s/Artist: //"` `mocp -i|grep SongTitle|sed "s/SongTitle: //");\ Macro(SHOW_MSG); 1=Macro(DEFAULT_VOLUME_DOWN) 2=Macro(DEFAULT_TOGGLE_MUTE) 3=Macro(DEFAULT_VOLUME_UP) 4=Exec(mocp -k -10) 5=Exec(mocp -p);Macro(MOC_TITLE) 6=Exec(mocp -k 10) 7=Exec(mocp -r);Macro(MOC_TITLE) 8=Exec(mocp -s); 9=Exec(mocp -f);Macro(MOC_TITLE) * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Rew 5 - Play 6 - FF" >> $F;echo "7 - Prev 8 - Stop 9 - Next" >> $F;echo "* * - Help 0 - Pause # - Quit" >> $F;echo "* # - Run/Quit Moc" >> $F);\ Macro(SHOW_HELP); * #=Exec(P=`ps -ef | grep mocp | grep -v grep | grep -v anyremote | grep -v nedit`; if [ "x$P" = "x" ]; then mocp -S& else mocp -x; fi) 0=Exec(mocp -G); #=Exec(mocp -x) [ModeEnd] [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/autolock.cfg�������������������������������������������������������0000644�0002322�0002322�00000001224�12100017671�021266� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file. % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Autolock GuiAppType=Example GuiAppBinary=true GuiAppIcon=encrypted.png GuiAppProtocols=AT GuiAppDesc=Locks display if connection to the phone is lost. [Protocol]=AT Cancel=\ Make(exit); (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Make(var,AutoConnect,by_value,true);\ Macro(CHECK_RFCOMM_DEVICE);\ Exec($(CfgDir)/Utils/message.sh "Display will be locked if connection is lost") % Auto-lock example: (Connect)=\ Exec(killall kdesktop_lock); (Disconnect)=\ Exec(kdesktop_lock --forcelock) [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/keyboard.cfg�������������������������������������������������������0000644�0002322�0002322�00000002314�12073567675�021275� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for keyboard emulation. % % This configuration file emulates a few useful buttons. % % STATUS stable % XTEST yes % SOUND mixer % ENV no GuiAppName=Keyboard test GuiAppBinary=true GuiAppIcon=keyboard.png GuiAppType=Example GuiAppProtocols=AT GuiAppDesc=Simple keyboard emulation example. [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); Answer=\ Make(disconnect); Cancel=\ Make(exit); 1=Emulate(keydown,Alt_L,key,F4,keyup,Alt_L) 2=Emulate(key,Up) 3=Emulate(key,Page_Up) 4=Emulate(key,Left) 5=Emulate(key,Return) 6=Emulate(key,Right) 7=Emulate(key,Tab) 8=Emulate(key,Down) 9=Emulate(key,Page_Down) * 1=Emulate(key,Escape) * 2=Macro(DEFAULT_VOLUME_DOWN) * 3=Macro(DEFAULT_VOLUME_UP) * 7=Emulate(keydown,Alt_L,key,Tab,keyup,Alt_L) * 9=Macro(DEFAULT_TOGGLE_MUTE) * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "1 - AltF4/Esc 2 - UpArr/Vol- 3 - PgUp/Vol+" > $F;echo "4 - L.Arrow 5 - Enter 6 - R.Arrow " >> $F;echo "7 - Tab/AltTAb 8 - DownArr 9 - PgDn/Mute" >> $F;echo "* - Modif/Help 0 - Space" >> $F);\ Macro(SHOW_HELP); 0 =Emulate(key,space) [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/amarok.cfg���������������������������������������������������������0000644�0002322�0002322�00000005634�12100017671�020730� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for amarok management. % % STATUS stable % XTEST no % SOUND app % ENV no % DEF_PLAYER GuiAppName=Amarok GuiAppBinary=amarok GuiAppVersion= V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi GuiAppRun= A=`pgrep amarok`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=amarok.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration file is for Amarok/KDE4 [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE);\ Make(var,kde4_app,by_value,amarok);\ Macro(TEST_KDE4_APP); (Connect)=\ Make(mode,amarok); [Mode]=amarok : default_player_at %InCall($$)=Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.Pause;$(CfgDir)/Utils/message.sh "$(CallId)");Make(remote,off); %EndCall($$)=Make(remote,on);Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.Play) GETVOL=\ Make(var,am_volume,qdbus org.kde.amarok /Player VolumeGet); GETPOS=\ Make(var,am_pos,qdbus org.kde.amarok /Player PositionGet); RUN_IF_NEED=\ Exec(A=`qdbus|grep amarok`; if [ "x$A" = "x" ]; then amarok 2> /dev/null; fi);\ Macro(GETVOL);\ Make(var,am_mute,by_value,$(am_volume));\ SendCKPD(E); RUN_OR_QUIT=\ Exec(P=`qdbus|grep amarok`; if [ "x$P" = "x" ]; then amarok 2> /dev/null; else dbus-send --type=method_call --dest=org.kde.amarok / org.freedesktop.MediaPlayer.Quit; fi); QUIT=\ Exec(dbus-send --type=method_call --dest=org.kde.amarok / org.freedesktop.MediaPlayer.Quit);\ SendCKPD(E); % Override 1=Macro(GETVOL);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:`expr $(am_volume) - 5`); 2=Make(var,am_mute,if [ "x$(am_mute)" = "x-1" ]; then qdbus org.kde.amarok /Player VolumeGet; dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:0; else dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:$(am_volume); echo "-1"; fi) 3=Macro(GETVOL);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:`expr $(am_volume) + 5`); PLAY=Exec(amarok --play-pause); RWD=Macro(GETPOS);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.PositionSet int32:`expr $(am_pos) - 10000`); FF=Macro(GETPOS);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.PositionSet int32:`expr $(am_pos) + 10000`); PREV=Exec(amarok --previous); NEXT=Exec(amarok --next); PAUSE=Exec(amarok --pause); STOP=Exec(amarok --stop); [ModeEnd] [End] ����������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/gmusicbrowser.cfg��������������������������������������������������0000644�0002322�0002322�00000003351�12061426047�022352� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Gmusicbrowser (http://squentin.free.fr/gmusicbrowser/gmusicbrowser.html) % management (AT-mode) % % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER GuiAppName=Gmusicbrowser GuiAppBinary=gmusicbrowser GuiAppRun= P=`ps -ef|grep gmusicbrowser|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=gmusicbrowser.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=An open-source jukebox for large collections of mp3/ogg/flac/mpc files, written in perl. [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=\ Make(mode,gmusicbrowser); [Mode]=gmusicbrowser : default_player_at RUN_IF_NEED=\ Exec(P=`ps -ef|grep gmusicbrowser|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then gmusicbrowser& fi); RUN_OR_QUIT=\ Exec(P=`ps -ef|grep gmusicbrowser|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then gmusicbrowser& else gmusicbrowser -cmd Quit; fi) QUIT=\ Exec(P=`ps -ef|grep gmusicbrowser|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" != "x" ]; then gmusicbrowser -cmd Quit; fi); %1=Exec(gmusicbrowser -cmd DecVolume); %2=Exec(gmusicbrowser -cmd TogMute); -- this do not works %3=Exec(gmusicbrowser -cmd IncVolume); PLAY=Exec(gmusicbrowser -cmd PlayPause); RWD=Exec(gmusicbrowser -cmd "Rewind 10"); FF=Exec(gmusicbrowser -cmd "Forward 10"); PREV=Exec(gmusicbrowser -cmd PrevSongInPlaylist); NEXT=Exec(gmusicbrowser -cmd NextSongInPlaylist); PAUSE=Exec(gmusicbrowser -cmd PlayPause); STOP=Exec(gmusicbrowser -cmd Stop); [ModeEnd] [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/rhythmbox.cfg������������������������������������������������������0000644�0002322�0002322�00000007613�12100017671�021501� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Rhythmbox. (AT-mode) % % STATUS stable % XTEST no % SOUND app % ENV no % DEF_PLAYER % https://bugs.launchpad.net/ubuntu/+source/rhythmbox/+bug/875064 rhythmbox-client is missing GuiAppName=Rhythmbox GuiAppBinary=rhythmbox GuiAppRun= A=`ps -ef|grep rhythmbox|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=rhythmbox.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Rhythmbox - The music management application for GNOME [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=\ Make(mode,rhythmbox); [Mode]=rhythmbox : default_player_at (EnterMode)=\ Make(var,rhythmbox_exec,by_value,dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.rhythmbox /org/mpris/MediaPlayer2); RUN_IF_NEED=\ Exec(ID=`id -u`;P=`ps -fu $ID|grep rhythmbox|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then rhythmbox & fi); RUN_OR_QUIT=\ Exec(ID=`id -u`;P=`ps -fu $ID|grep rhythmbox|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then rhythmbox & else dbus-send --type=method_call --dest=org.gnome.Rhythmbox /org/gnome/Rhythmbox/Shell org.gnome.Rhythmbox.Shell.quit; fi) QUIT=\ Exec(dbus-send --type=method_call --dest=org.gnome.Rhythmbox /org/gnome/Rhythmbox/Shell org.gnome.Rhythmbox.Shell.quit); PLAY=Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.PlayPause); PREV=Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.Previous); NEXT=Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.Next); STOP=Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.Stop); PAUSE=Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.Pause); % override * *=Macro(DEFAULT_HELP_NO_FF_RWD); % https://bugs.launchpad.net/ubuntu/+source/rhythmbox/+bug/875064 rhythmbox-client is missing %InCall($$)=\ % Exec(rhythmbox-client --no-start --play-pause;$(CfgDir)/Utils/message.sh "Call from $(Param)");\ % Make(remote,off); %EndCall($$)=\ % Make(remote,on);\ % Exec(rhythmbox-client --no-start --play-pause) %1=Exec(python -c "import dbus;import sys;import os;session_bus = dbus.SessionBus();pp = session_bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player');player = dbus.Interface(pp, 'org.gnome.Rhythmbox.Player');ts=player.getElapsed();player.setVolumeRelative(-.10)") %3=Exec(python -c "import dbus;import sys;import os;session_bus = dbus.SessionBus();pp = session_bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player');player = dbus.Interface(pp, 'org.gnome.Rhythmbox.Player');ts=player.getElapsed();player.setVolumeRelative(.10)") %1=Exec(rhythmbox-client --no-start --volume-down) %2=Exec(M=`rhythmbox-client --no-start --print-volume|grep muted|wc -l`;if [ "x$M" = "x0" ]; then rhythmbox-client --no-start --mute; else rhythmbox-client --no-start --unmute; fi); %3=Exec(rhythmbox-client --no-start --volume-up) %4=Exec(python -c "import dbus;import sys;import os;session_bus = dbus.SessionBus();pp = session_bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player');player = dbus.Interface(pp, 'org.gnome.Rhythmbox.Player');ts=player.getElapsed()-10;player.setElapsed(ts)") %5=Exec(rhythmbox-client --no-start --play-pause); %6=Exec(python -c "import dbus;import sys;import os;session_bus = dbus.SessionBus();pp = session_bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player');player = dbus.Interface(pp, 'org.gnome.Rhythmbox.Player');ts=player.getElapsed()+10;player.setElapsed(ts)") %7=Exec(rhythmbox-client --no-start --previous); %8=Exec(rhythmbox-client --no-start --play-pause) %9=Exec(rhythmbox-client --no-start --next); %* #=Exec(P=`ps -ef|grep rhythmbox|grep -v grep|grep -v anyremote`; if [ "x$P" = "x" ]; then rhythmbox & else rhythmbox-client --no-start --quit; fi) %0=Exec(rhythmbox-client --no-start --play-pause) %#=Exec(rhythmbox-client --no-start --quit) [ModeEnd] [End] ���������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/example-motorola.cfg�����������������������������������������������0000644�0002322�0002322�00000005715�12100017671�022743� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file % Version for Motorola V500 & L6. % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Motorola test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=AT GuiAppDesc=Simple example of configuration file. Tuned for Motorola phones. [Protocol]=AT % Green button S=Make(disconnect); % Red button E=Make(exit); (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,true);\ Macro(CHECK_RFCOMM_DEVICE);\ Exec(echo "Connect to $(Device)");\ Make(var,ToMainMenu,by_value,E); (Connect)=\ Exec(echo Connected);\ Make(var,message,by_value,Connected);\ Macro(SHOW_MSG); (Disconnect)=\ Exec(echo Disconnected);\ Make(var,message,by_value,Disconnected);\ Macro(SHOW_MSG); InCall($$)=\ Make(var,message,by_value,A call from $(Param));\ Macro(SHOW_MSG);\ Make(remote,off); EndCall($$)=\ Make(remote,on);\ Make(var,message,by_value,"Call finished");\ Macro(SHOW_MSG); * * =Exec(echo "Just press buttons and inspect results" > $(TmpDir)/anyrem.hlp);\ Macro(SHOW_HELP); 42 42=Exec(echo "Use example-sagem.cfg instead !" > $(TmpDir)/anyrem.hlp);\ Macro(SHOW_HELP); 1=Exec(echo 1);Make(var,message,by_value,1);Macro(SHOW_MSG); 2=Exec(echo 2);Make(var,message,by_value,2);Macro(SHOW_MSG); 3=Exec(echo 3);Make(var,message,by_value,3);Macro(SHOW_MSG); 4=Exec(echo 4);Make(var,message,by_value,4);Macro(SHOW_MSG); 5=Exec(echo 5);Make(var,message,by_value,5);Macro(SHOW_MSG); 6=Exec(echo 6);Make(var,message,by_value,6);Macro(SHOW_MSG); 7=Exec(echo 7);Make(var,message,by_value,7);Macro(SHOW_MSG); 8=Exec(echo 8);Make(var,message,by_value,8);Macro(SHOW_MSG); 9=Exec(echo 9);Make(var,message,by_value,9);Macro(SHOW_MSG); 0=Exec(echo 0);Make(var,message,by_value,0);Macro(SHOW_MSG); %*=Exec(echo Star); #=Exec(echo "#");\ Make(var,message,by_value,Hash);\ Macro(SHOW_MSG); [=Exec(echo SoftLeft);\ Make(var,message,by_value,SoftLeft);\ Macro(SHOW_MSG); ]=Exec(echo SoftRight);\ Make(var,message,by_value,SoftRight);\ Macro(SHOW_MSG); M=Exec(echo Menu);\ Make(var,message,by_value,Menu);\ Macro(SHOW_MSG); U=Exec(echo VolUp);\ Make(var,message,by_value,VolUp);\ Macro(SHOW_MSG); D=Exec(echo VolDown);\ Make(var,message,by_value,VolDown);\ Macro(SHOW_MSG); :X=Exec(echo JoystickU);\ Make(var,message,by_value,JoystickU);\ Macro(SHOW_MSG); :C=Exec(echo JoystickD);\ Make(var,message,by_value,JoystickD);\ Macro(SHOW_MSG); :L=Exec(echo JoystickL);\ Make(var,message,by_value,JoystickL);\ Macro(SHOW_MSG); :R=Exec(echo JoystickR);\ Make(var,message,by_value,JoystickR);\ Macro(SHOW_MSG); :0=Exec(echo JoystickPush);\ Make(var,message,by_value,JoystickPush);\ Macro(SHOW_MSG); :S=Exec(echo SoftKey);\ Make(var,message,by_value,SoftKey);\ Macro(SHOW_MSG); :2=Exec(echo PTT);\ Make(var,message,by_value,PTT);\ Macro(SHOW_MSG); :1=Exec(echo Photo);\ Make(var,message,by_value,Photo);\ Macro(SHOW_MSG); :T=Exec(echo "button on right side");\ Make(var,message,by_value,button on right side);\ Macro(SHOW_MSG); [End] ���������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/kdetv.cfg����������������������������������������������������������0000644�0002322�0002322�00000006637�12120355623�020603� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for kdetv management. (AT-mode) % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=KdeTV GuiAppBinary=kdetv GuiAppRun=A=`dcop 2> /dev/null|grep kdetv`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=kdetv.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=kdetv is a KDE application to watch TV on the desktop. [Protocol]=AT (Init)=\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=\ Exec(A=`dcop|grep kdetv`;if [ "x$A" = "x" ]; then kdetv 2> /dev/null; fi); %InCall($$)=\ % Make(remote,off); %EndCall($$)=\ % Make(remote,on); % aliased keys Answer=\ Make(disconnect); Cancel=\ Exec(D=`dcop|grep kdetv`;dcop $D MainApplication-Interface quit;);\ SendCKPD(E);\ Make(exit); KDETV_VOLUP=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface volumeDown) KDETV_MUTE=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface toggleMute) KDETV_VOLDN=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface volumeUp) KDETV_CHUP=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface channelDown); KDETV_ZOOM=Exec(D=`dcop|grep kdetv`;dcop $D KdetvViewIface toggleFullScreen) KDETV_CHDN=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface channelUp); 0=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 0); 1=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 1); 2=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 2); 3=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 3); 4=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 4); 5=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 5); 6=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 6); 7=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 7); 8=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 8); 9=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 9); * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "Press numeric buttons to choose channel.">$F;echo "Use # to change mode.">>$F;echo "* # Run/Quit kdetv">>$F);\ Macro(SHOW_HELP); * #=Exec(D=`dcop|grep kdetv`; if [ "x$D" = "x" ]; then kdetv 2> /dev/null; else dcop $D MainApplication-Interface quit; fi) #=Make(mode,kdetv2); [Mode]=kdetv2 1=Macro(KDETV_VOLUP) 2=Macro(KDETV_MUTE) 3=Macro(KDETV_VOLDN) 4=Macro(KDETV_CHUP) 5=Macro(KDETV_ZOOM) 6=Macro(KDETV_CHDN) 7=Make(none) 8=Make(none) 9=Make(none) * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "1 - Vol-">$F;echo "2 - Mute">>$F;echo "3 - Vol+">>$F;echo "4 - Ch-">>$F;echo "5 - Fullscreen">>$F;echo "6 - Ch +">>$F;echo "** - Help">>$F;echo "0 - Kill">>$F;echo "# - Direct">>$F;$(CfgDir)/Utils/message.sh "`cat $F`") 0=Exec(D=`dcop|grep kdetv`;dcop $D MainApplication-Interface quit) #=Make(mode,default) [ModeEnd] %%%%%%%%%%%%%% % % Key aliases % %%%%%%%%%%%%%% % Motorola - Red and Green buttons S=Macro(Answer); E=Macro(Cancel); % SE's - SwitchOff and C buttons c=Macro(Answer); L=Macro(Cancel); p=Macro(Cancel); % Sagem - Red and Green buttons 83=Macro(Answer); 69=Macro(Cancel); % Sockets & Sagem 42=Macro(*) 35=Macro(#) 48=Macro(0) 49=Macro(1) 50=Macro(2) 51=Macro(3) 52=Macro(4) 53=Macro(5) 54=Macro(6) 55=Macro(7) 56=Macro(8) 57=Macro(9) % Aliases for AverMedia IR remote KEY_TEXT=Macro(*) KEY_POWER=Macro(#) KEY_VOLUMEDOWN=Macro(KDETV_VOLUP) KEY_MIN_INTERESTING=Macro(KDETV_MUTE) KEY_VOLUMEUP=Macro(KDETV_VOLDN) KEY_CHANNELUP=Macro(KDETV_CHUP) KEY_CHANNELDOWN=Macro(KDETV_CHDN) KEY_ZOOM=Macro(KDETV_ZOOM) [End] �������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/mouse.cfg����������������������������������������������������������0000644�0002322�0002322�00000002032�12073567675�020622� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for mouse emulation % % STATUS stable % XTEST yes % SOUND no % ENV no GuiAppName=Mouse test GuiAppBinary=true GuiAppIcon=mouse.png GuiAppType=Custom GuiAppProtocols=AT GuiAppDesc=Mouse emulation [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE);\ Make(var,AutoRepeat,by_value,true); Answer=\ Make(disconnect); Cancel=\ Make(exit); 1=Emulate(mouse,1) 2=Emulate(mouse,2) 3=Emulate(mouse,3) 4=Emulate(mousermove,-10,0) 5=Emulate(mousermove,0,-10) 6=Emulate(mousermove,10,0) 7=Emulate(mouse,4) 8=Emulate(mousermove,0,10) 9=Emulate(mouse,5) * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "1 - Left Click 2 - CenterClick 3 - RightClick" > $F;echo "4 - Move Left 5 - MoveUp 6 - MoveRight" >> $F;echo "7 - Wheel Up 8 - Move Down 9 - Wheel Down" >> $F;echo " 0 - Space # - Left DblClick" >> $F);\ Macro(SHOW_HELP); 0=Emulate(key,space) #=Emulate(mouse,1,sleep,1000,mouse,1) [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/example-se.cfg�����������������������������������������������������0000644�0002322�0002322�00000004407�12100017671�021513� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for echo management. % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=SonyEricsson test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=AT GuiAppDesc=Simple example of configuration file. Tuned for Sony Ericsson phones. [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,true);\ Macro(CHECK_RFCOMM_DEVICE);\ Make(var,ToMainMenu,by_value,:R);\ Make(alarm,/tmp/alarm1,ALARM1);\ Make(alarm,/tmp/alarm2,ALARM2); (Connect)=\ Exec(echo Connected) (Disconnect)=\ Exec(echo Disconnected) c=Make(disconnect); Cancel=Make(exit); InCall($$)=\ Exec(echo "A call from $(Param)");\ Make(remote,off) EndCall($$)=\ Make(remote,on);\ Exec(echo "Call finished") * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "Just press buttons and inspect results" > $F);\ Macro(SHOW_HELP); 42 42=Exec(F="$(TmpDir)/anyrem.hlp";echo "Use example-sagem.cfg instead !" > $F);\ Macro(SHOW_HELP); 1=Exec(echo 1);Make(var,message,by_value,1);Macro(SHOW_MSG); 2=Exec(echo 2);Make(var,message,by_value,2);Macro(SHOW_MSG); 3=Exec(echo 3);Make(var,message,by_value,3);Macro(SHOW_MSG); 4=Exec(echo 4);Make(var,message,by_value,4);Macro(SHOW_MSG); 5=Exec(echo 5);Make(var,message,by_value,5);Macro(SHOW_MSG); 6=Exec(echo 6);Make(var,message,by_value,6);Macro(SHOW_MSG); 7=Exec(echo 7);Make(var,message,by_value,7);Macro(SHOW_MSG); 8=Exec(echo 8);Make(var,message,by_value,8);Macro(SHOW_MSG); 9=Exec(echo 9);Make(var,message,by_value,9);Macro(SHOW_MSG); 0=Exec(echo 0);Make(var,message,by_value,0);Macro(SHOW_MSG); %*=Exec(echo Star); #=Exec(echo "#");\ Make(var,message,by_value,Hash);\ Macro(SHOW_MSG); :J=Exec(echo J_Push) <=Exec(echo J_Left) >=Exec(echo J_Right) ^=Exec(echo J_Up) v=Exec(echo J_Down) :O=Exec(echo Online) :C=Exec(echo FhotoK700) u=Exec(echo LeftSidePlus) d=Exec(echo LeftSideMinus) :R=Exec(echo Return) %c=Exec(echo C) ---used as disconnect key [=Exec(echo Soft_Left) ]=Exec(echo Soft_Right) %L=Exec(echo SwitchOff) ---used as Exit key % Several keys from K750 %p=Exec(echo SwitchOff) ---used as Exit key :F=Exec(echo PhotoFokusK750) %:C :F=Exec(echo "PhotoK750") :G=Exec(echo "Play/Stop") :D=Exec(echo "MyLinks") ALARM1=SendCKPD(* 1 *);Exec(echo "Alarm 1") ALARM2=SendCKPD(* 2 *);Exec(echo "Alarm 2") [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/quodlibet.cfg������������������������������������������������������0000644�0002322�0002322�00000003454�12061426047�021453� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for quodlibet. (AT-mode) From cfg for rhythmbox % % Thanks to Van Wout Heeswijk for this cfg.file % % STATUS stable % XTEST no % SOUND app % ENV no % DEF_PLAYER GuiAppName=Quodlibet GuiAppBinary=quodlibet GuiAppRun=A=`ps -ef|grep quodlibet|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=quodlibet.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Quod Libet is a GTK+-based audio player written in Python. It's designed around the idea that you know how to organize your music better than we do [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=\ Make(mode,quodlibet); [Mode]=quodlibet : default_player_at (EnterMode)=\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(RUN_IF_NEED);\ Make(var,quodlibet_volume,by_value,-1); RUN_IF_NEED=\ Exec(P=`ps -ef|grep quodlibet|grep -v grep|grep -v quodlibet.cfg`; if [ "x$P" = "x" ]; then quodlibet > /dev/null & fi); RUN_OR_QUIT=\ Exec(P=`ps -ef|grep quodlibet|grep -v grep|grep -v quodlibet.cfg`; if [ "x$P" = "x" ]; then quodlibet > /dev/null & else quodlibet --quit; fi) QUIT=\ Exec(quodlibet --quit); % Override 1=Exec(quodlibet --volume-down) 2=Make(var,quodlibet_volume,\ if [ "x$(quodlibet_volume)" = "x-1" ]; then \ V=`quodlibet --status|cut -f 3 -d ' '|grep '.'`;echo "$V * 100"|bc|cut -f 1 -d '.';quodlibet --volume=0; \ else \ quodlibet --volume=$(quodlibet_volume);echo "-1"; \ fi) 3=Exec(quodlibet --volume-up) PLAY=Exec(quodlibet --play); RWD=Exec(quodlibet --seek=-10) FF=Exec(quodlibet --seek=+10) PREV=Exec(quodlibet --previous); NEXT=Exec(quodlibet --next); STOP=Exec(quodlibet --play-pause) PAUSE=Exec(quodlibet --play-pause) [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/AT-mode/aqualung.cfg�������������������������������������������������������0000644�0002322�0002322�00000003000�12061426047�021263� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Aqualung management (AT-mode) % prerequisites: amixer/pactl utility % % STATUS unknown % TODO aqualung do not save playlists % XTEST no % SOUND mixer % ENV no % DEF_PLAYER GuiAppName=Aqualung GuiAppBinary=aqualung GuiAppRun= P=`ps -ef|grep aqualung|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=aqualung.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Aqualung is an advanced music player. It plays audio CDs, internet radio streams and podcasts as well as soundfiles in just about any audio format and has the feature of inserting no gaps between adjacent tracks. [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)=\ Make(mode,aqualung); [Mode]=aqualung: default_player_at % (EnterMode) by Utils/aliases-at.cfg RUN_IF_NEED=\ Exec(P=`ps auxc|grep aqualung`; if [ "x$P" = "x" ]; then aqualung -s3 -o alsa -R -r 48000 & fi); RUN_OR_QUIT=\ Exec(P=`ps auxc|grep aqualung`; if [ "x$P" = "x" ]; then aqualung -s3 -o alsa -R -r 48000 & else aqualung -Q; fi); QUIT=\ Exec(aqualung -Q); % Volume control by Utils/aliases-at.cfg %1=Exec(aqualung -V -2) %2=Exec(aqualung -V m) %3=Exec(aqualung -V 2) PLAY=Exec(aqualung --play -N 0); PREV=Exec(aqualung -B) NEXT=Exec(aqualung -F) STOP=Exec(aqualung -T); PAUSE=Exec(aqualung -U); % override * *=Macro(DEFAULT_HELP_NO_FF_RWD); [ModeEnd] [End] anyremote-6.7.1/cfg-data/AT-mode/all-in-one.cfg�����������������������������������������������������0000644�0002322�0002322�00000003754�12100017671�021412� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file. A kind of "mega-example". % % STATUS unknown % XTEST no % SOUND no % ENV no GuiAppName=All-in-1 GuiAppType=Custom GuiAppBinary=true GuiAppIcon=configure.png GuiAppProtocols=AT GuiAppDesc=Manage Amarok, Xmms, KPlayer, TVtime, keyboard and mouse emulation at once [Protocol]=AT (Init)=Include($(CfgDir)/Utils/aliases-at.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE); (Connect)= Make(mode,all-in-1); Cancel=\ SendCKPD(E);\ Make(exit); * 0=Exec($(CfgDir)/Utils/message.sh "Application chooser" 7);\ Make(flush);\ Include($(CfgDir)/AT-mode/all-in-one.cfg); [Mode]=all-in-1 (EnterMode)=Exec($(CfgDir)/Utils/message.sh "Application chooser" 7); 1=Exec($(CfgDir)/Utils/message.sh "Set mode to Amarok" 7);\ Make(flush);Include($(CfgDir)/AT-mode/amarok.cfg);\ Include($(CfgDir)/AT-mode/all-in-one.cfg); 2=Exec($(CfgDir)/Utils/message.sh "Set mode to KPlayer" 7);\ Make(flush);\ Include($(CfgDir)/AT-mode/kplayer.cfg);\ Include($(CfgDir)/AT-mode/all-in-one.cfg); 3=Exec($(CfgDir)/Utils/message.sh "Set mode to TvTime" 7);\ Make(flush);\ Include($(CfgDir)/AT-mode/tvtime.cfg);\ Include($(CfgDir)/AT-mode/all-in-one.cfg); 4=Exec($(CfgDir)/Utils/message.sh "Set mode to XMMS" 7);\ Make(flush);\ Include($(CfgDir)/AT-mode/xmms.cfg);\ Include($(CfgDir)/AT-mode/all-in-one.cfg); 5=Exec($(CfgDir)/Utils/message.sh "Set mode to Keyboard emulation" 7);\ Make(flush);\ Include($(CfgDir)/AT-mode/keyboard.cfg);\ Include($(CfgDir)/AT-mode/all-in-one.cfg); 6=Exec($(CfgDir)/Utils/message.sh "Set mode to Mouse emulation" 7);\ Make(flush);\ Include($(CfgDir)/AT-mode/mouse.cfg);\ Include($(CfgDir)/AT-mode/all-in-one.cfg); * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "Choose mode:" > $F;echo "* 0 - Chooser" >> $F;echo "1 - Amarok" >> $F;echo "2 - KPlayer" >> $F;echo "3 - TvTime" >> $F;echo "4 - XMMS" >> $F;echo "5 - Keyboard Emulation" >> $F;echo "6 - Mouse Emulation" >> $F);\ Macro(SHOW_HELP); [ModeEnd] [End] ��������������������anyremote-6.7.1/cfg-data/AT-mode/mpd.cfg������������������������������������������������������������0000644�0002322�0002322�00000003616�12073567675�020263� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for MPD management (AT-mode) % prerequisites: mpc client % % STATUS unknown % XTEST no % SOUND app % ENV no GuiAppName=MPD GuiAppBinary=mpc GuiAppRun=P=`ps -ef|grep mpd|grep -v grep|grep -v anyremote|grep -v nedit|grep -v mpd.cfg`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=mpd.png GuiAppType=Application GuiAppProtocols=AT GuiAppDesc=Music Player Daemon (MPD) allows remote access for playing music. [Protocol]=AT (Init)=\ Include($(CfgDir)/Utils/aliases-at.cfg);\ Make(var,TwoWayComm,by_value,false);\ Macro(CHECK_RFCOMM_DEVICE);\ Macro(CheckMPC);\ Macro(CheckMPD);\ Macro(CheckPL);\ Make(var,mpd_volume,by_value,-1);\ Exec(mpd); CheckMPC=\ Exec(P=`which mpc 2> /dev/null|grep mpc|grep -v no|wc -l|tr -d " "`; if [ "x$P" = "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: mpc client is not installed"; fi); CheckMPD=\ Exec(P=`ps -ef|grep mpd|grep -v grep|grep -v mpd.cfg|wc -l|tr -d " "`; if [ "x$P" = "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: mpd is not run"; fi); CheckPL=\ Exec(P=`mpc playlist 2> /dev/null|wc -l|tr -d " "`; if [ "x$P" = "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: mpd playlist is empty"; fi); Cancel=\ Exec(killall mpd);\ Make(exit); 1=Exec(mpc volume -5) 2=Make(var,mpd_volume,\ if [ "x$(mpd_volume)" = "x-1" ]; then \ mpc volume|tr -s " "|cut -f 2 -d " "|sed "s/%//";mpc volume 0 > /dev/null; \ else \ mpc volume $(mpd_volume) > /dev/null;echo "-1"; \ fi); 3=Exec(mpc volume +5) 4=Exec(mpc seek -00:00:05) 5=Exec(mpc play); 6=Exec(mpc seek +00:00:05) 7=Exec(mpc prev); 8=Exec(mpc stop); 9=Exec(mpc next); * *=Exec(F="$(TmpDir)/anyrem.hlp";echo "1 - Vol- 2 - Mute 3 - Vol+" > $F;echo "4 - Rew 5 - Play 6 - FF" >> $F;echo "7 - Prew 8 - Stop 9 - Next" >> $F;echo "* 0 - Pause # - Quit" >> $F);\ Macro(SHOW_HELP); 0=Exec(mpc toggle); #=Exec(killall mpd) [End] ������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Bemused-emulation/���������������������������������������������������������0000755�0002322�0002322�00000000000�12100017560�021113� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Bemused-emulation/exaile.cfg�����������������������������������������������0000644�0002322�0002322�00000003376�12061426046�023065� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Exaile management (Server-mode Bemused emulation) % Prerequisites: amixer/pactl utility, Bemused client installed on cell phone % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Exaile GuiAppBinary=exaile GuiAppRun= P=`ps -ef|grep exaile |grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=exaile.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=Exaile is a music player aiming to be similar to KDE's Amarok, but for GTK+ and written in Python. [Protocol]=Bemused (Init)=\ Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Macro(BEMUSED_SETUP);\ Macro(SETUP_DEFAULT_MIXER); (Connect)=\ Exec(P=`ps -ef|grep exaile|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then xterm -geometry "1x1+0+0" -e exaile& fi); EXAILE_ARTIST=\ Make(var,exaile_artist,exaile --get-artist); EXAILE_TITLE=\ Make(var,exaile_title,exaile --get-title); EXIT=Exec(pkill -f 'python (.)*exaile') FFWD=Exec(exaile --next) INF2=Send(string,INF2ACK);\ Send(bytes,128,0,0,0,128,0,0,0,1,0,0);\ Macro(EXAILE_ARTIST);\ Macro(EXAILE_TITLE);\ Send(string,$(exaile_artist) $(exaile_title));\ Send(bytes,0,0) INFO=Send(string,INFOACK);\ Send(bytes,128,0,0,0,128,0,0,0,1,0,0);\ Macro(EXAILE_ARTIST);\ Macro(EXAILE_TITLE);\ Send(string,$(exaile_artist) $(exaile_title)); NEXT=Exec(exaile --next) PAUS=Exec(exaile --play-pause) PLAY=Exec(exaile --play) PREV=Exec(exaile --prev) RWND=Exec(exaile --prev) STOP=Exec(exaile --stop) VOLM($$)=Make(var,default_mixer_value,by_value,$(Param)%);Macro(DEFAULT_VOLUME_SET) GVOL=Macro(DEFAULT_GVOL); FADE=Macro(DEFAULT_FADE); PLEN=Macro(DEFAULT_PLEN); PLST=Macro(DEFAULT_PLST); %REPT=Exec() %SHFL=Exec() %SEEK= %SLCT= [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Bemused-emulation/tvtime.cfg�����������������������������������������������0000644�0002322�0002322�00000003014�12061426046�023113� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for tvtime management. (Server-mode Bemused emulation) % Prerequisites amixer/pactl utility, Bemused client installed on cell phone % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=TvTime GuiAppBinary=tvtime GuiAppRun= P=`ps -ef | grep tvtime | grep -v grep | grep -v anyremote | grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=tvtime.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=Tvtime is a high quality television application for use with video capture cards on Linux systems. [Protocol]=Bemused (Init)=\ Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Macro(BEMUSED_SETUP);\ Macro(SETUP_DEFAULT_MIXER); (Connect)=\ Exec(tvtime); EXIT=Exec(tvtime-command QUIT > /dev/null) FFWD=Exec(tvtime-command UP > /dev/null) INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);Send(string,TvTime);Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);Send(string,TvTime) NEXT=Exec(tvtime-command UP) %PAUS PLAY=Exec(tvtime-command TOGGLE_FULLSCREEN > /dev/null) PREV=Exec(tvtime-command DOWN > /dev/null) RWND=Exec(tvtime-command DOWN > /dev/null) STOP=Exec(tvtime-command TOGGLE_FULLSCREEN > /dev/null) VOLM($$)=Make(var,default_mixer_value,by_value,$(Param)%);Macro(DEFAULT_VOLUME_SET) %GVOL=Send(string,GVOLNAK) %FADE=Exec(tvtime-command TOGGLE_MUTE > /dev/null) GVOL=Macro(DEFAULT_GVOL); FADE=Macro(DEFAULT_FADE); PLEN=Macro(DEFAULT_PLEN); PLST=Macro(DEFAULT_PLST); %REPT %SHFL %SEEK= %SLCT= [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Bemused-emulation/totem.cfg������������������������������������������������0000644�0002322�0002322�00000003022�12061426046�022732� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Totem management (Server-mode Bemused emulation) % Prerequisites: amixer/pactl utility, Bemused client installed on cell phone % % STATUS need_improvement % TODO load totem with playlist ready % XTEST no % SOUND mixer % ENV no GuiAppName=Totem GuiAppBinary=totem GuiAppRun= A=`ps -ef|grep totem|grep -v totem-plugin-viewer|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=totem.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=Totem is the official movie player of the GNOME desktop environment based on xine-lib or GStreamer. [Protocol]=Bemused (Init)=\ Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Macro(BEMUSED_SETUP);\ Macro(SETUP_DEFAULT_MIXER); (Connect)=\ Exec(P=`ps -ef|grep totem|grep -v totem-plugin-viewer|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then totem& fi); EXIT=Exec(totem --quit) FFWD=Exec(totem --seek-fwd) INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);Send(string,Totem);Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);Send(string,Totem) NEXT=Exec(totem --next) PAUS=Exec(totem --pause) PLAY=Exec(totem --play-pause) PREV=Exec(totem --previous) RWND=Exec(totem --seek-bwd) STOP=Exec(totem --pause) VOLM($$)=Make(var,default_mixer_value,by_value,$(Param)%);Macro(DEFAULT_VOLUME_SET) GVOL=Macro(DEFAULT_GVOL); FADE=Macro(DEFAULT_FADE); PLEN=Macro(DEFAULT_PLEN); PLST=Macro(DEFAULT_PLST); %REPT=Exec() %SHFL=Exec() %SEEK= %SLCT= [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Bemused-emulation/template.cfg���������������������������������������������0000644�0002322�0002322�00000002006�12061426046�023416� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for ..... management. (Server-mode Bemused emulation) % Prerequisites amixer/pactl utility, Bemused client installed on cell phone % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Bemused Template GuiAppType=Example GuiAppProtocols=Bemused GuiAppDesc=Template configuration file for Bemused emulation. [Protocol]=Bemused (Init)=\ Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Macro(SETUP_DEFAULT_MIXER); (Connect)=Exec(echo "run app") EXIT=Exec() FFWD=Exec() INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);Send(string,NoName);Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);Send(string,NoName) NEXT=Exec() PAUS=Exec() PLAY=Exec() PREV=Exec() RWND=Exec() STOP=Exec() VOLM($$)=Make(var,default_mixer_value,by_value,$(Param)%);Macro(DEFAULT_VOLUME_SET) %GVOL=Send(string,GVOLNAK) GVOL=Macro(DEFAULT_GVOL); FADE=Macro(DEFAULT_FADE); PLEN=Macro(DEFAULT_PLEN); PLST=Macro(DEFAULT_PLST); %REPT %SHFL %SEEK= %SLCT= [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Bemused-emulation/amarok.cfg�����������������������������������������������0000644�0002322�0002322�00000010160�12061426046�023055� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for amarok management. (Server-mode Bemused emulation) % Prerequisites: Bemused client installed on cell phone % tested with Jam SE 1.3 RC1 % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=Amarok GuiAppBinary=amarok GuiAppVersion= V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi GuiAppRun= A=`pgrep amarok`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=amarok.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration file is for Amarok/KDE4 [Protocol]=Bemused GETPOS=\ Make(var,am_pos,qdbus org.kde.amarok /Player PositionGet); GETVOL1=\ Make(var,am_volume,qdbus org.kde.amarok /Player VolumeGet); AMAROK_TITLE=\ Make(var,art,qdbus org.kde.amarok /Player GetMetadata|grep artist:|sed 's/artist://');\ Make(var,tit,qdbus org.kde.amarok /Player GetMetadata|grep title:|sed 's/title://');\ Make(var,am_title,echo "$(art) - $(tit)"); (Init)=\ Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Macro(BEMUSED_SETUP);\ Exec(V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" = "x3" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE4"; fi); (Connect)=\ Exec(amarok 2> /dev/null);\ Macro(GETVOL1);\ Make(var,am_mute,by_value,$(am_volume)); EXIT=Exec(dbus-send --type=method_call --dest=org.kde.amarok / org.freedesktop.MediaPlayer.Quit) FADE=Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:0) FFWD=Macro(GETPOS);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.PositionSet int32:`expr $(am_pos) + 10000`); INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1);\ ExecAndSend(bytes,qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle|awk '{if($0=="true") {print "1"} else {print "0"}; }');\ ExecAndSend(bytes,qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.LoopStatus|awk '{if($0=="None") {print "0"} else {print "1"}; }');\ Macro(AMAROK_TITLE);\ Send(string,$(am_title));\ Send(bytes,0,0) INFO=Send(string,INFOACK);\ Send(bytes,128,0,0,0,128,0,0,0,1);\ ExecAndSend(bytes,qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle|awk '{if($0=="true") {print "1"} else {print "0"}; }');\ ExecAndSend(bytes,qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.LoopStatus|awk '{if($0=="None") {print "0"} else {print "1"}; }');\ Macro(AMAROK_TITLE);\ Send(string,$(am_title)); NEXT=Exec(amarok --next); PAUS=Exec(amarok --pause); PLAY($$)=Macro(STRT) STRT=Exec(amarok --play); PREV=Exec(amarok --previous); RWND=Macro(GETPOS);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.PositionSet int32:`expr $(am_pos) - 10000`); STOP=Exec(amarok --stop); VOLM($$)=Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:$(Param)) GVOL=Send(string,GVOLACK);\ Make(var,am_volume,V=`qdbus org.kde.amarok /Player VolumeGet`;echo "$V*255/100"|bc);\ Send(bytes,$(am_volume)) PLEN=Macro(DEFAULT_PLEN); PLST=Macro(DEFAULT_PLST); SHFL=\ Make(var,shuffle_val,P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle`; if [ "x$P" = "xtrue" ]; then echo 0; else echo 1; fi);\ Exec(qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle $(shuffle_val)); REPT=\ Make(var,repeat_val,P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.LoopStatus`; if [ "x$P" = "xNone" ]; then echo 1; else echo 0; fi);\ Exec(qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.Repeat $(repeat_val)); SHFL($$)=Exec(qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle $(Param)); REPT($$)=Exec(qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.Repeat $(Param)); %SEEK= %SLCT($$)= [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Bemused-emulation/rhythmbox.cfg��������������������������������������������0000644�0002322�0002322�00000004200�12061426046�023625� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for rhythmbox management (Server-mode Bemused emulation) % Prerequisites: amixer/pactl utility, Bemused client installed on cell phone % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Rhythmbox GuiAppBinary=rhythmbox GuiAppRun= A=`ps -ef|grep rhythmbox|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=rhythmbox.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=Rhythmbox - The music management application for GNOME [Protocol]=Bemused (Init)=\ Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Macro(BEMUSED_SETUP);\ Macro(SETUP_DEFAULT_MIXER); (Connect)=\ Make(mode,rhythmbox); [Mode]=rhythmbox (EnterMode)=\ Exec(P=`ps -ef|grep rhythmbox|grep -v grep`; if [ "x$P" = "x" ]; then rhythmbox & fi); EXIT=Exec(rhythmbox-client --no-start --quit) FFWD=Exec(python -c "import dbus;import sys;import os;session_bus = dbus.SessionBus();pp = session_bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player');player = dbus.Interface(pp, 'org.gnome.Rhythmbox.Player');ts=player.getElapsed()+10;player.setElapsed(ts)") INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);\ ExecAndSend(string,rhythmbox-client --no-start --print-playing);Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);\ ExecAndSend(string,rhythmbox-client --no-start --print-playing) NEXT=Exec(rhythmbox-client --no-start --next) PAUS=Exec(rhythmbox-client --no-start --play-pause) PLAY=Exec(rhythmbox-client --no-start --play-pause) PREV=Exec(rhythmbox-client --no-start --previous) RWND=Exec(python -c "import dbus;import sys;import os;session_bus = dbus.SessionBus();pp = session_bus.get_object('org.gnome.Rhythmbox', '/org/gnome/Rhythmbox/Player');player = dbus.Interface(pp, 'org.gnome.Rhythmbox.Player');ts=player.getElapsed()-10;player.setElapsed(ts)") STOP=Exec(rhythmbox-client --no-start --play-pause) VOLM($$)=Make(var,default_mixer_value,by_value,$(Param)%);Macro(DEFAULT_VOLUME_SET) GVOL=Macro(DEFAULT_GVOL); FADE=Macro(DEFAULT_FADE); PLEN=Macro(DEFAULT_PLEN); PLST=Macro(DEFAULT_PLST); %REPT=Exec() %SHFL=Exec() %SEEK= %SLCT= [ModeEnd] [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Bemused-emulation/kdetv.cfg������������������������������������������������0000644�0002322�0002322�00000003245�12061426046�022726� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for kdetv management (Server-mode Bemused emulation) % Prerequisites: Bemused client installed on cell phone % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=KdeTV GuiAppBinary=kdetv GuiAppRun= A=`dcop 2> /dev/null|grep kdetv`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=kdetv.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=kdetv is a KDE application to watch TV on the desktop. [Protocol]=Bemused (Init)=\ Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Macro(BEMUSED_SETUP); (Connect)=\ Make(mode,kdetv); [Mode]=kdetv (EnterMode)=\ Exec(A=`dcop|grep kdetv`;if [ "x$A" = "x" ]; then kdetv; fi); EXIT=Exec(D=`dcop|grep kdetv`;dcop $D MainApplication-Interface quit) FADE=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface setVolume 0) FFWD=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface channelUp) INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,D=`dcop|grep kdetv`;dcop $D KdetvIface channelNumber;dcop $D KdetvIface channelName);Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,D=`dcop|grep kdetv`;dcop $D KdetvIface channelNumber;dcop $D KdetvIface channelName) NEXT=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface channelUp) PLAY=Exec(D=`dcop|grep kdetv`;dcop $D KdetvViewIface toggleFullScreen) PREV=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface channelDown) RWND=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface channelDown) VOLM($$)=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface setVolume $(Param)); %PAUS=Exec() %REPT=Exec() %SHFL=Exec() %STOP=Exec() PLEN=Macro(DEFAULT_PLEN); PLST=Macro(DEFAULT_PLST); %SEEK= %SLCT= [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Bemused-emulation/quodlibet.cfg��������������������������������������������0000644�0002322�0002322�00000003200�12061426046�023570� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for quodlibet management (Server-mode Bemused emulation) % Prerequisites: amixer/pactl utility, Bemused client installed on cell phone % % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Quodlibet GuiAppBinary=quodlibet GuiAppRun= A=`ps -ef|grep quodlibet|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=quodlibet.png GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=Quod Libet is a GTK+-based audio player written in Python. It's designed around the idea that you know how to organize your music better than we do [Protocol]=Bemused (Init)=\ Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Macro(BEMUSED_SETUP);\ Macro(SETUP_DEFAULT_MIXER); (Connect)=\ Make(mode,quodlibet); [Mode]=quodlibet (EnterMode)=\ Exec(P=`ps -ef|grep quodlibet|grep -v grep|grep -v quodlibet.cfg`; if [ "x$P" = "x" ]; then quodlibet & fi); EXIT=Exec(quodlibet --quit) FFWD=Exec(quodlibet --seek=+10) INF2=Send(string,INF2ACK);\ Send(bytes,128,0,0,0,128,0,0,0,1,0,0);\ ExecAndSend(string,quodlibet --print-playing);\ Send(bytes,0,0) INFO=Send(string,INFOACK);\ Send(bytes,128,0,0,0,128,0,0,0,1,0,0);\ ExecAndSend(string,quodlibet --print-playing) NEXT=Exec(quodlibet --next) PAUS=Exec(quodlibet --play-pause) PLAY=Exec(quodlibet --play) PREV=Exec(quodlibet --previous) RWND=Exec(quodlibet --seek=-10) STOP=Exec(quodlibet --play-pause) VOLM($$)=Make(var,default_mixer_value,by_value,$(Param)%);Macro(DEFAULT_VOLUME_SET) GVOL=Macro(DEFAULT_GVOL); FADE=Macro(DEFAULT_FADE); PLEN=Macro(DEFAULT_PLEN); PLST=Macro(DEFAULT_PLST); %REPT=Exec() %SHFL=Exec() %SEEK= %SLCT= [ModeEnd] [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Bemused-emulation/mpd.cfg��������������������������������������������������0000644�0002322�0002322�00000004447�12061426046�022376� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for MPD management. (Server-mode Bemused emulation) % Prerequisites: Bemused client installed on cell phone % tested with Jam SE 1.3 RC1 % % STATUS stable % XTEST no % SOUND app % ENV no GuiAppName=MPD GuiAppBinary=mpc GuiAppRun= P=`ps -ef|grep mpd|grep -v grep|grep -v anyremote|grep -v nedit|grep -v mpd.cfg`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppType=Application GuiAppProtocols=Bemused GuiAppDesc=Music Player Daemon (MPD) allows remote access for playing music. [Protocol]=Bemused (Init)=\ Include($(CfgDir)/Utils/aliases-bemused.cfg);\ Macro(BEMUSED_SETUP);\ Macro(CheckMPC);\ Macro(CheckMPD);\ Macro(Check PL); CheckMPC=\ Exec(P=`which mpc 2> /dev/null|grep mpc|grep -v no|wc -l|tr -d " "`; if [ "x$P" = "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: mpc client is not installed"; fi); CheckMPD=\ Exec(P=`ps -ef|grep mpd|grep -v grep|grep -v mpd.cfg|wc -l|tr -d " "`; if [ "x$P" = "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: mpd is not run"; fi); CheckPL=\ Exec(P=`mpc playlist 2> /dev/null|wc -l|tr -d " "`; if [ "x$P" = "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: mpd playlist is empty"; fi); EXIT=Exec(mpd --kill) FADE=Exec(mpc volume 0) FFWD=Exec(mpc seek +00:00:05) INF2=Send(string,INF2ACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,mpc|head -1|sed "s/.*\///;s/(/-/g;s/)/-/g");Send(bytes,0,0) INFO=Send(string,INFOACK);Send(bytes,128,0,0,0,128,0,0,0,1,0,0);ExecAndSend(string,mpc|head -1|sed "s/.*\///;s/(/-/g;s/)/-/g") NEXT=Exec(mpc next) PAUS=Exec(mpc toggle) PLAY=Exec(mpc play) PREV=Exec(mpc prev) RWND=Exec(mpc seek -00:00:05) STOP=Exec(mpc stop) VOLM($$)=Exec(mpc volume $(Param)) GVOL=Send(string,GVOLACK);Make(var,mpd_volume,V=`mpc volume|tr -s " "|cut -f 2 -d " "|sed "s/%//"`;echo "$V*255/100"|bc);Send(bytes,$(mpd_volume)) %GVOL=Send(string,GVOLNAK); %REPT %SHFL %SEEK= PLEN=ExecAndSend(bytes,mpc playlist|wc -l|awk '{if($0>255) {b=int($0/256);a=$0-b;} else {b=$0;a=0};s=sprintf("%s,%s",a,b);print s; }'); PLST=Send(string,PLSTACK);\ ExecAndSend(bytes,mpc playlist|grep '^>'|cut -f 1 -d "`echo -e '\0051'`"|sed 's/>//'|awk '{if($0>255) {b=int($0/256);a=$0-b;} else {b=$0;a=0};s=sprintf("%s,%s",a,b);print s; }');\ ExecAndSend(string,mpc playlist);\ Send(bytes,0); SLCT($$)=Exec(mpc play `echo "$(Param)+1"|bc`); [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/���������������������������������������������������������������������0000755�0002322�0002322�00000000000�13126472435�016653� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/weather.sh�����������������������������������������������������������0000755�0002322�0002322�00000004563�12304553030�020645� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # Params # 1. -current|-forecast # 2. location if [ "x$1" = "x" ] || [ "x$2" = "x" ]; then exit 1; fi if [ "x$1" = "x-current" ]; then curl -m 5 -s "http://m.wund.com/cgi-bin/findweather/getForecast?brand=mobile&query=$2"| \ sed -n '/Updated:/,/<\/table>/p'|grep -v "Moon Phase"|grep -v "Raw METAR"| \ sed 's/<\/td><td>/ /g;s/<tr>//g;s/<td>//g;s/<\/span>//g;s/<span class="nowrap">//g;s/<b>//g;s/<\/b>//g;s/<.*table>//g;s/<\/td>//g'| \ tr '\n' ' '|sed 's/<\/tr>/\n/g;s/<br \/>/\n/g;s/°//g;s/ //g'| \ sed -e '/^[ \t]$/d'|tr -s ' \t'|tr -d '\t'|sed 's/<\/tr>/\n/g;s/<br \/>/\n/g;s/°//g;s/ //g'| \ sed -e 's/^[ \t]*//g'|sed '/^$/d' fi if [ "x$1" = "x-forecast" ]; then curl -m 5 -s "http://m.wund.com/cgi-bin/findweather/getForecast?brand=mobile&query=$2"| \ sed -n '/name="forecast"/,/<\/table>/p'| \ sed 's/<td align="right"//g;s/<img src.*>//g;s/<td align="left">//g;s/<.*center>//g;s/<table.*>//g;s/<\/a>//g;s/<\/div>//g;s/<br>//g;s/<a name.*>//g;'|\ sed 's/<\/td><td>/ /g;s/<tr>//g;s/<td>//g;s/<\/span>//g;s/<span class="nowrap">//g;s/<b>//g;s/<\/b>//g;s/<.*table>//g;s/<\/td>//g'| \ tr '\n' ' '|sed 's/<\/tr>/\n/g;s/<br \/>/\n/g;s/°//g;s/ //g;s/ >//g'| \ sed -e '/^[ \t]$/d'|tr -s ' \t'|tr -d '\t'|sed 's/<\/tr>/\n/g;s/<br \/>/\n/g;s/°//g;s/ //g'| \ sed -e 's/^[ \t]*//g'|sed '/^$/d' fi if [ "x$1" = "x-temperature" ]; then curl -m 2 -s "http://m.wund.com/cgi-bin/findweather/getForecast?brand=mobile&query=$2"| \ sed -n '/Updated:/,/<\/table>/p'|grep -v "Moon Phase"|grep -v "Raw METAR"| \ sed 's/<\/td><td>/ /g;s/<tr>//g;s/<td>//g;s/<\/span>//g;s/<span class="nowrap">//g;s/<b>//g;s/<\/b>//g;s/<.*table>//g;s/<\/td>//g'| \ tr '\n' ' '|sed 's/<\/tr>/\n/g;s/<br \/>/\n/g;s/°//g;s/ //g'| \ sed -e '/^[ \t]$/d'|tr -s ' \t'|tr -d '\t'|sed 's/<\/tr>/\n/g;s/<br \/>/\n/g;s/°//g;s/ //g'| \ sed -e 's/^[ \t]*//g;/^$/d'|grep Temperature|sed 's/Temperature//g' fi #ID=`id -u` #curl -s "http://m.wund.com/cgi-bin/findweather/getForecast?brand=mobile&query=$2" > /tmp/weather.${ID}.html #WHERE=`grep "Observed at" /tmp/weather.${ID}.html|sed 's/<br \/>/\n/g'|td -s ' '` #cat /tmp/weather.${ID}.html |grep 'td class'|grep taR|grep -v "img src"|sed 's/<tr class=[^>]*>//g;s/<td class=[^>]*>//g;s/<\/td>//g;s/<td>//g;s/<b>//g;s/<\/b>//g;s/<\/tr>//g'|tr -s ' '|tr -d \\t exit 1; ���������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/get-installed.sh�����������������������������������������������������0000755�0002322�0002322�00000001011�12362007406�021730� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # Params # 1. Search pattern # 2. $(CfgDir) value if [ "x$1" = "x" ]; then exit 0; fi; if [ "x$2" = "x" ]; then exit 0; fi; CANDIDATES=`find $2/Server-mode/ -type f -exec grep -l "$1" {} \;|grep -v template|grep -v svn|grep -v mediacenter` for CFGFILE in $CANDIDATES; do BINARY=`grep "GuiAppBinary=" $CFGFILE|sed 's/GuiAppBinary=//'` LOC=`which $BINARY 2> /dev/null` if [ "x$LOC" != "x" ]; then APP=`echo $CFGFILE|xargs -i basename {}|sed 's/.cfg//'` echo $APP fi; done �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/getPlayList.sh�������������������������������������������������������0000755�0002322�0002322�00000001016�12304553030�021435� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh if [ "x$1" = "x" ]; then APP=org.kde.amarok else APP=$1 fi; LENGTH=`dbus-send --type=method_call --print-reply --dest=$APP /TrackList org.freedesktop.MediaPlayer.GetLength|tail -1|grep int|tr -s ' '|cut -f 3 -d ' '` I=0 while [ $I -lt $LENGTH ] do T=`dbus-send --type=method_call --print-reply --dest=$APP /TrackList org.freedesktop.MediaPlayer.GetMetadata int32:$I |awk '/.*string "title".*/{getline;print}'|grep string|cut -f 2 -d '"'` ni=`expr $I + 1` echo "$ni.$T," I=`expr $I + 1` done ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/�������������������������������������������������������������0000755�0002322�0002322�00000000000�12100017561�020247� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/img_coverart-300.png�����������������������������������������0000644�0002322�0002322�00000064760�12061426046�023763� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��,��,���y}u��iIDATx^ � �S_Ycb �� @X� ,�a�a @X� ,@X� ,�a�a @X� ,@X� ,�a � @X� ,�a+;g۶CaR{aږ8MY%;%HQR ؇#6s!.L&B"]b&Zĸ[&bL\1=δOGqwDHGއs{^l}?EVYQkAC/gh$TgpݙVGJʀ⭗ @pd�\s@'�,(ISrFTM{9C)`X{r>Δ3D]ʭ2^Xp]8N)4`s17JzGڡqiEU=Wq< VxyG(_##,OGPTGsӺ.N XWUݹ.t$[촞HT h )N;.뱘BϕU*ӑ1ANM(ĢN KSo:\X3t2s �+ 04L2(0[ol}.$Xs\WUks6:"N<dAlB?.=;Iyj^G_�kyH>5:-=N7oBbqU@Yͥ|ءdVڧb*xݣʼn;+=hEֶZ͡ko  rKwO83k3;z ;D|vU Cwp1dV'B}}~�,l{hPbbRP5;r18#pp;Za٤zOή5ix듖y6AH"`0Nd 6,nyzehĕ5A..!FDw39z~KiP {kn@=AkYf뽁 8,Tٝ@=Uu K9- PȎ# v<-NV6~aApXn4S#wJޯu]lM~Pn�QL.#2Bb+aT:okt1 ' ?Bw}maAEňRW7C8! )૛P* � cq#"ic^TAT4AXA�A�AÂ~Pw\Ǚ`u#ҏ3A� `DY)$S%f<M8;Ϭ=9{ve{c<ȲhAEIbc�"$ҟsz{=O%~T[9l5kʕ+aŊ8%KE EyaȴD9,_N�pRb% L0[RF2y~{"\"?xԧXI<tv+=g6tilGj='{/�ɄIDE8Go o: +[XE>v ɿX~}.mh $p?uh?q `qL�`a'VeMr.$-2`wt1 RYvs<e;A}鲥G98稖]|rXv <Ώ/ aҥ' SS</hcCלjà\NkïY}�%NHtϠs'7cZBtˬNj5Ҵno?* ZXE{̞㐢."+Zy9IݝWsΝ" &<S9T+F�BA9loK3'Vc>z/:~RG{'ٟmEޖV?ԩS jyuGj\PM(`h.CԀ]8f!e>cN3TJr>aOh *Y*r2e |BwW7*LVhXE?fQ4,8x�Nޞލ/KoSegǭ'ϰORe 2bIL.`qqyy FҦ*p H5a`0ol7>,A7 SMVv{I *͛~M-u�*8ѻ{ k:(MNvrO?YRJGS rPoo'$z$_ѹVm'Hoϓ:)iHSꫠ/gktt nħa}0)[XE_F P/`ҋC@EU$Muj  y@*y", ńTOFs`NJ㦥nͦ/ Ae@+NY�ES_y,*ki3қ`c Us#$2`SOq41{SM5A3(#9c^Cʹj9(�|? ^{ ~&1lfrC-N5<�E� MX $NÒ5.L~{'?#$O ?t�LVau6#z$ }y`C0Մ2߮ U }Pu bRvCgBG6Iec#EV'$f;?" �r Eќ.'&) z<v"=7ux/X`mF{{Dq*P �G3Ie⎪9>H_hd !1 ݏj-LF^�C3BQuTWc)Sl osT5Bww+`i.8n~.�3x:gѼX&󩰅Yyb~+.zڲe`ҵb򺵫o*5$sQ`D4WP]Z(  6݈pU yZ~TBA�Vv0lznN6^8/x*MT~,X40Xi4G^o*(3s:DA:k0ZXE[p!zrn gC(pVLP%#6"xݽ @VB `@(Pz, K]Y-e\1�Tch9VDh98 @Ѽ,c'4ե@)eP]Dو&j bؽ{7*SZ`LV�VAEL# +ꯢ`UOA4ƌnuВ_& l/-˲yIh2fkm8hy 'd )V 5 eVQ-'0{l(W*P/_)0x0lcH"">t9c�@iM@Qk 8_xG~ N-X8&U+�hśF=v]&R[V(G)HCAÙgKq�[DR:#hФ:#1Bl ` sR2ٝ`0~2Ьqz9n͙=N0Ȳ]A*#EKҝƬhtQ Q 1CA C=$ndlyeV<zlS`hh&C+�h;^)-Yv͉a@->pൽ uL9 6%uG5x Qnni%iӦtC*MM02: C#0<<L "eaN^xZz&3foϴ7X5Ҽg)e~&̘> 4H |C000�> (FamLm ªݝI9uwh`mPgɒFF+V ---ДMІ\L;nQCP0W „Lܕ2 Tټi3\tܬZ(ԡ;Ơ.\�- ̾^O<�Ahq314 +X}W >O¹7Bvu޾~zaaِmǎ`0`�<PLjc�]]=u,w4U�Vі,kè$d^ʹAEiao9|Vi59 z S7g5kl+r+=5 JFOGкAC)Du­pCpGE-EfϚ '::HT`pB7TLB| whBǮ]Tn=$ Tp6*XpT ZA�R�PکNl]pǝCGs]*P-ZIV-K(|W ($`tx @VڎhG_Uaw}C Mù4<r+_Eh0lI7YmaJk LAs9* ՎW^}On~dȁ@Oo&L;u k$rUŋA=_�J}&,3<qqUdu\ְrw� P"3C4mB!D"䰊 ,͛ gv0Zel:u#]>=QNHuunr"R J%E~ وfCcʦe߫NBw`+�R 棈x^1q2RL D9~#DŕXc eU[r@>b3mhҘ-ݤMk '`s *lG84t3z<LIgǟgM// s1?gLtC?ח9Z]sCU}XV�VX}5 +RMHɻ<ArKCrM`TA~eIЄt`ex|j7á7ÉmK6AR-35m/>$+(ulٴfLSĶpyjVw�EQDqX mHTh\`#o 9MIbQ5d@@jhnã0 }H֭MJH.Y ?4~Жp BZi o'|\]];>Lgh>̛E!Yk坻h,XTv hį5)ZXE[hV-vKQ Jc "6R9g< ǒ)H 3 =8#C0 bfoz1@&UgwE F(*_cȡW0 }]m3Λ=+=@k�```~޾>x7Ly WQAi*:M¦&3U4*9Uo}Ihe,ʡ-Pg-! 's߯4Ar,fd%,)F5s^ZBygj`cc �?Xڗj[�655@95)m-w9O�\I2Ӽvl=iT@K%:wf tg>`li�@X}b \JG?:eLG|d<(e8FQG=w` ->lintC]e%s�diT:f}>>�n??GwW{ {XE $ EٰG\몝?UPIBzLr�D%Y>)xejE<H&s>>u2@O</w@*�+ʝr1lqx*=5|+98-m e pGM  ՔdQ̓o"%KT],v-*!S~@R=Uc9N-`UgZNnd<X4%o#R Zz&OK KQQt I`"yQ$"ȖS٨zCڽlKY(E̮FhCX'U�VJ>>6o4\@G  C S{rhN\ȷ&&mBǬVpW0c@'UZ4jy0Gk@=c I]tTۢI�X*ad `2(2'0{, @͛3V.WMOYM‰)VAiYySm=ǒcڲQYGEהdy1Uu #"gN _lk+6d64I'chĀH2r)7}� ƁƎQugn3gάE~$.Wp@O@ "6 .ܲV.;㿫ۏChB0Jʶf-B׮Y[7o�Vg6[Lkfal⽺+ 5gV :@;mVheGbENd3I]](XT]:B?C[X RI7KD�A>8u[} ]|X2!?8<Rl\':WLYGry{䗏Bo3ԙ O8C1uX\F _\I˔KcєQtٰrB-ab85CKlhrF#aܹ ?[*FW?=&)32'#]|p-gr O=~pp cg2Du2r|0}#K̓s%[q-n5j98XdsHƱ2HX k˯Ž%bY+a-\uwwGz~ixOs/[a }l}a^ �ӊrJΙ© sk M6g\^ =F 6*kC-Lh `LlM3~S.89w_4NIdMiD7@_OWM^IH!ʏV[bTs^H<4 &9= c�~ad_qjX /;U0B 2n!HO<mTҖ^4_˩+AhcME0<B)* ]S| 2^ݷPV+%ntbp7&B?m>jZ�%,}JXr9~74EkF0R_SsӄÇx)m66sTpeys?~]9yw�"htl|/~%`9G L}ue$!l\oMe*HŕgѤ ![^c2w`zv24Ι{k‘7_w05='�%7P#bl%۱)Lx ۻcJa�_C~o~%'i50,,w!LXE \F8qCEg,S˒ѽ̚U&/$_W=T0"7dяJhO2כ ?20Db<hol3v1HX6m0 a'zXj%0^\2>Z^١475 Bغi]_&MRYp p2kw UrXL, ̄ ##qC)!\LZ|ф]TfV.%eN"$G ChnC,U`ʥ*2J1Sӧ ߇aObI,D9tZćI^Wu4s֯Cg Ҭnxߕ* !j:p~ĆibtDk:;G\�V4;pOP[L Kcl|憾Axa>?JB@T"uVD5 jt/}iֆ0-Gv48T#'xO_.w@Gg4x 5ʢ s`xEaM, 4}}VV\IBMT#Qzcp!$>,Oy# =;'ywOW 'U�V(  ,*VPe'J>I<(^YNp->eNT4e@�Xy]t.lHıˆ st52g iP .6fB!_<aWqbIDӳJgNReci$yJVӐsifJcϨVamXDH\Q,˪Yud egIVr"\@n-h嘞0Ps%f>|ϊlDV Dr?>f _#ۢY*HHPߕU."fjY`1XW{} J"ײ\A"[WE zsYV31�Nd Ԭq-a>vwvF&Tx) *ҥKF<Zf45^Yjni.%PalS|Ϛpm%*9㸢=[lOv߉9%ULw!hXӨV-1Ehq@㵪rPk j(X nyw +ljM_d;9~*!k}NNTX 5 e;pS,e*9Isw�"(ճru L,2$4ǬܾE$Z2@˲ҁGؒ.$Yܱ��s¿Ya"&{9L']@+r#sbFWwU5?!IhebNJe+`9JV}9>* DA1 aWv18ː7CUPrsS3NMҕ)c80 `OKبфB$`B, eSm-׌ĐF\ٳfR B씪c (tv@{GV�+8PGZY1L1?ZQ~.S]…^*�reZ6곂TޝeU64=ٵe3G9s4T6NBL)H[ +.4qhE J9E*A}� N -ZLGF>JK@p ̮%z)--5ʫ{'ǎ cnUOL;= `Ab^F`7DÒGj!g6$T47Ƶٽg7<3Z : Y4c7݈!Gzz,nW_ZZYbio�k(`0` 0g*TEwt3g&R̙5v^J=CJ]|l=\wKBݣIf)JXsrhinnV&:``4}%7nw‰nhGGpGW/wuԋr7B=W\j Mg{o~+J3I,@Y sk CC#ӘmC`H(AjMgRQxdtdOo-Ϳy&+m0/c 3|~ȶ&g>i=3\W!JuRI *e|0.(eNRYYH|Y+?&I~f7|n?~z9b�Z܅`O+M}Cn<Za}O~:+{{{/f84]?ޡ%$(<ԃ*"5'(4/<oT5N/b+HȢaV *m- NVKs: Gj+�g#@}5+<q^'j^w^x'Q+S XRfdL\ԸjR\�X աLT.D326NZQ`!\xͯXT.K@7sn\ Ԫst5 HiO}np 7O:3sf4DLD/QwY,V*b=Qz> �*UOd-@hT GO1I2>N@ehHf2b5C|Mq~ܒ##^ݯڊV}&˷mJH\w*=۶·]w|| 0.|FWBb\B+ӦLdb}d^}G+8xȇ&#I9h Qmʌm0ZA9$tt(.z>R B iCVe.؈fV%`ec0lmh7wU9.T0&Oc>OV^i#I;<pjY f-Olv{^;LlcRJxsz邹ɕpw稟OY skX`! {D0iP'Jo0o<ZÏ> 2iVJ0)XQg9cW3&H'޳"SY7J8o  PiEih }8$ LJB9?bTj}K׽4]G0͛Mq! \NLXoj[Pr`t}A0i�ѡA!I >Ѳxil\kÁCӇia0ߕ'd&,HS Bشq#\;{b^f1buvv%sV2@c,K'CK�\XY]zE`|0ꊋ΃4~(l9x$=c%3V}N i!(Μ6`@5G,([څ2%0 S ! E2O&`H#+ҹG$ɀ$CKKDh.d-/I% tJłJ 0c hll@~JlprҪfW RYF!O?K<XA;aI5 kiuV\S2 J)U:T{^`-:SG *ZdҠ4(/KGu* %FDF!}̔ژhN"+U*s2Q^K| bu0گ jlaC49J¦)\ѯH8Ȥ$(E2q"ݚ�@}XyhV5NW+9"skςSm$=ZP4VKRQʣ؜BsE'~(?uLJ?J޲1GJZLRԜG_V-tI<BMۺB'wn`Y ܍k<k-@u|?p'8ZXֲ%S'+ e)@\ �`R@/ȟ1B=geOO_q J(}}@VUd:e2ֲTyfׄ4Iݚ�"h/O\K<q-tWZ{i"=iLz-r>| ,~I T:ɖgp H=@ ޒ]P�V4ʫx �H-TH׆TÛ Z" +X%["eHiDImXO'OS6k=LDcRǐz_y8?Ce"H;$U~@AMޏuZX ']ɯ ҠѬVZK! P#cY*" 29+$+%NTmGZ~�?C$b' xk"9w@lep jLzi՞H�M^:F*! *a*e$'aFsUg] \ڪDr,_uepo[>rmN##b^֩I} 0<FQ`-7emA|Vd 睻RqfȂܗW8OXjRư{uJ}C7r;,^xV<7s7ls92`UQQiկ5* Qm gNr`ʕKG`ph%hv̞=SjD0IM)U{;'kP'<=!̝?^*/WGc9~Vn؃;t"f;iK4=;CDaQ)Ft&쭷`>ÝwhfH \}Ep4"۱L1+1`8jG{NyW.�PQ@IYG"uU1v`t㇈UK3ID`dx|<<Jnײg-0U+{˯Kb0r\z,UΦqZwA{q*+[F:˙a5BؐW:6z--s`uqìA}|?@(%O5LC#KUG,?uZێv/�h ̙34x*/9� uЀA4:|玗!0q=lv($$:p BT+.dniRsEp^ǒ>B;A{ǿx>}]_gYJ!@LC2 GpUWõW_u hg? r سc~5_wj@a&v[ZkQbp1[ V ;@e,#eAs@ !)h  #< _7G۾mxG�L*"8Vb01&@53!1-W{5 1j)z�kEV縬 /8:_BS坯ŽWY^xnxe!ꇏ< ϼ//%*LQUMH<!uFs$jUW +V:I`q 8qɩWBsgNM&.sQVbnsL5 B5,_ⶨ&[95"=QC1ѧv VCT4T_j!F:NfakT<K}>kk.ߵ� N5Q(AJFUêG~K�"aiT{@Y!A`#X+2 6E>I=M5$1kYiI$֓oL9ca) }Jl34/}0d|(K8}=,hmiT $ry-9Ž x5;w@b41ZqR(\Z]~0ZXEy(w 64GKu!Ns!Y�x<L-㻦0Xa]w~85iTOv\–?<n-kV҈=ױ$<[?upF[@Jj_|p*�Jdw_XE V)9% T(@(-OԔRA`4F qDA3`64+arMU+" 1 .67a:XlIec+tGI<ly2?ώ~qm6>ɏʾۡAkRp:;q-,j[5R9Y�O5,+Y~ ]MzP8s182Q6͜f%`I`!Yc nbhB؏>ǰ 6cQ)-H1vl(xu^7^? 6. 8' d&}9s13oGG_m<]ٳWJǡ=cǸ]XY.Z;ր`1X$5,V X > Zeeqvҳ0hq4.r-Faz烘pr ߷vuh尵ZZ[plCTo�y;;i%c`EA ƈى$΂~5W|{ ~t)5ĺu\+(#8YѮ wSK5-!N<{gѰX#D my1UD !Ijeul낤]R3l&bL] Xe=C0w*&+$Bj>nؾ)YvSyy<_h5`ep$I>a9};S(?"sDR|.j!?<;,ϫqY;&5VXEkAM>1kB"@~+bVn+}/`d=xYTGxA `}43 yk 1FJq>4CEkZ;˚F�8ߑ0*gf#2iQ60Jssȃ )�jI8@U1/3`OG+ɤQRY`͞=+H3;s[XEg iPsʺ/E]N琜N8&QZ*՟H+W5&*lxR0h�LCNuL34 U�X{ "Ebae(F@\qϸNDdٔH8RxP6RXWL,<8[XEho_>\ 3,"}ЉhPM4ԢVAB+} pOG.Y*c51c|c D#`Mа"(F"#\aQq ,sX\$9o�VQY'H9І`UKU V:V$ )bȪF& fx,XħR[md1@S%+ #drxMO#VVZ,ZP=J(cbKr?5Cs5Fc|1TNj G/Lf�-==>s6]}We9B5J[ @lv;I�Vd@l@h; fM}Xr"|tjX$d6Lr;^Z,aҹ$I&$lG *bzOVDN;] h!̲@rWȚ�IDdbho11)`@<8br7 %wD\OixSYu-7>hiizrR -hX`mQQT4[˪yw}?uǞ% @Ð B<hSHA@gGjV/=t2WmfC&* 2 ( &$+Be9Y48\THSolX~ �"hB{UU,5@%-':@.[߅>xdllI$@K(gϜK$~gP4T* p/eY{'$UI&L~;Ii#�X`^~pp�LL˪chIi �{1gmz_$l|L̩\BQ&͑LDhYۊ% x5RALSXCA=JA-Xi56-?YqU*OPr%֌Ugӽ�͘1(!9}BRsqlJ||t;�6X̟ZaBW wEbEWZ>KLE[xc%SF Z TjJzo0UQK&'hlɁ.1c:[ *btֹlM^35,a.A +_V*/s�iPD XPqVؠZ!TS0ehXk^lMZ}_¬r@)uN/ZH`%,B-`<zѠ䄝nc<gl+�rGӡV"KE,C|o^xÙCz契^ɬ#hV!q0PV#G3<hbMDVj"D1vOaht(7ƓzLWUC gr6y,WSho?ֆ3 *=*XLJ.B"28.u7OP҂ '2ĉNG!~':)uF ܶ+ԃ4̚Z 2&"n IH&%vNw5B\ K62cS,db۬"sL+ qkS+ɲ$(g( J~>Y=SQMn5~S^$WlC`3:^/KKTjQ+JN{\z6x⩧?�#CC@z_V>fG:K BB B*GN!ݵ4/ a!(֔dob0ha (NV @:bać[W!$🌵bP|)i+ٲ^d.YܒD:_b\ ߏF7g?{z@G P56AS3\⳿g98V\^r1؄U3-"Px0+�3A\䊢J4K,#GwGA|v3g 7~iGzWB*U{t�$zc#@4ռ^^hCJv,� TZ\d+`L�acVa&j[‡>;Tk0߸nMX:/v/Vyppl 0bM &,2Nú"{Ab k�ž8(^moF!�uw hXq&> `H<XPW4ԝA&Iĉ{[D^2̈́GZ|,spw BY,\n=̙;y%7w.l=o#T5<2tuwcXE_MpU"1uh SϤWCoLr  �D`5" ݻp$YgF-`eb#?Ku)c gbhXE?bllXaSo}C8R^&V>ZUEj>3yqiU1$Rc3Q)]lr8 ڰ~̈́ ܻ5f�%hE2'rTb Q kyH0\ `u[,៮€@BZǂ1UyD<<<)uskX`MKS ,-2xD `K DW.6"Cl6=H P ԧ L#V-\# i PG'hsf]X2 L姒XHa"cRAS~'ebH|*.CP *f$AF6CthX&U+`mNy)[l`Axf՚sNu�6g78_ ^TZW`J�0Px%T!pG84< v%xBB@{GǨ|Ks#LiiASx|^ 8^oP*6Ka%03wx $9X[U kVTc@5VKFl[sPCV~U�VQ<tF{81 \ܐ_S*LkT>k<.t! r+҉J;AZH? �fL+rgzwp?ݿL �lܒ_ILXh-BG]q*HlT`8XKV^(5MHPbˆ415c| 7*2В9y ~fu݃%ΰV�VQ6=paU0,^;3,AJSgbCCpQxᅗ73*bH~ 'qDZj5\{o|%#,A 7eiSb78>vxW፣ǁ,_g p>WK^??O`=2oYIE_v(�>| hgk ֬Y 3ڠMJ%&}Ï-uv)2TjƢY%#p; *=I t-Ƞ1X6] Zn> ~9`,q18$ #Z1" #\w5C5`8V6%~-gJ/^׬F5m:Y??/'.ēߛV錯< #vz~#9GLGr`X&_ki ElRҋ^ð!4b>jܛj $kGQ%U0J5xFZ->yK86lI.49[%qko`M@H hiKlN>Zش\__ 6F~r")?_'_o>?g&,[4.ۺ4 kV­7u=5cA9TO#$pٟ;Dxݿ�_M18x 8rΛG%r5-ÿ/%%Z =Bډgl,VXV%EE!^Je5B+i<s3;ch \w5`CSn̙=}*G Ԅ yU+G746W^ ]vYM"mJ>x{',`%GW\:^{1fR;wQ ys眔�+/]�{/잟I0Lj.| +i?ٗ%?o=}}[os6kb뚬Om5 ׊(nu0w$'&JewVuyu'aZxqƚk4Yh5=cSS3=p'iBS62U2MNNe-|gU4r4EG=-ceMD i;fC՗_۶lB3p46p\s+/͑8~3u+`+/ wj>~{{;X39z;sDmh^~pf>aPc8v8U_9__ÝwrYzc_QdK`?]hZopU?z։s>|I]e_Cj# &a]-"Hꢕ$ Y$V?:cw4@nw\U;r_5 B "C믇6Ks߯w?G$텞8�펻 0cTk.9~AY�WJ[WI}W_~tͯ{.B& /Y0tNkё%?kaϗ@r 'fʔwuVi$3wS־I3g6]wB*z{ N@JϮǯ>kExam@~|=e$Y6t%Ɣ6322w}7qaxx6q9M^A8<_w|[w/==Mh}?woѯc:G<F] #FZRk*,x/E 1{ 瑒/[u+lFe&"ImV+Yb^'AÀbJ ۷ó> M-1uJF&|q 0$b2T;ЂJP{I޽W|VFhӸDɚ#(<Nm7po�>(k 28,+0uC PqA(,D �0ut#N>27ML98uCTh~Xf{~,֎;៩U�Ruh@X,qt嬰JP@(fKBGVV6aEcl)vZIsFlD{D"+0>2EEݞjr,O_F`l|1FiAфLA'&Pngl q9�ޯe A[6>W0,o| [FkRPRpQiWҰ *F5K˞g-%bprp,熖M6=p0y X=}\G1G]8lLChxh\(c#`JO/,SO|:Xd! f5::FTӦo;~Kz S.bYo p4SQs+Cy)+h6QŠ$xC@]LqIm"牝A? |&iR%A `y ?"$Wx5/J (@QO _83l Z" am|чH5gcZR^ij !yKQP϶Ɔh2_^lEeJ lGjh&ۋR+!$ēE]١@ɾ: )h`ZE:EikX 9VXE T"w\@"4ZQc<")c�g*+oqnhu+5u_RJ\'20B0M T4*RN'J3ǧ2*NUQs/&�,(&'kn ={H䇋с2 T5%fuѶd۰ J6hT kRGU0%�`#2X0L˚U)t �i _4^:�@uULRj_8` I{3874j! Q0575R[ oGeWi(S^8ȖسHb$0ch `ϩ=9,2e} o;_XEhk穣.V_Wd*�vW!CUq4BH82koV%!b7ؘĔH0+166s/5sު-C֟~|׿Mvp9f'X(y+Y#3W qpa@1G,'a'9j$tHSm̢x8n`+YW!i%Ƣ"Khrm22^1dV(Qa4@!%21]k(>~oOwCCY9žN<חzd./%f$\VIi/?~8}̟�|ru/NļU0.3A\6,NB_`%Meg,@d7Ϋ#\%I?r84<�2;w}wꦪQZҷwLq]@]c J5d $)zXg/<_  ɄYND+w'+ĉvzڂ3 *F`Ş|;W,"-1);\m(ౡD�F3 E@u7<.$9wz/Lk-7En^|y|{w`/6}75ީBn v}f~հD�Er2AK뢅?P T'+mڰ3ڽ�sww&+_A]ࡑk?r˟[%[,CY<)=O$i6vpG? {<iJC$A] $_%D&!['},`-�V`Q`kzoW T9ډ\�iGADdA||eEުeN>a/AHUrERqqiX] ?E73H`K`%Vbr.�*u6 :V{R9nP'PiT`EDk*P�jf[?JM6_�k]Tx<fRbkb5}T\l*3"eF9DSMF3+O<!jgN !Sj�+՚|j}^ystTy"K3d$YI *8G e@QdDW\H}\i'NCI\0*`|#va_9:wj*QᴛjXgIX�V4~t֡~rYLV,[ s+%!L!Wi6<|@hӁ$7[ V3U\kYέn^U4%>}:6l؀oY>"UgpT'2z.m˘W?:_}sB%2'B/G܇( mA l3pɘ趎ثȶ"~"̝=sh? .ٻ aVHaqPQ{bDAS$&_2&T+1O6#UhOTm&k1"0 80K˽'7O>oMJs޳Ϝway4jCX&p_?wuNUyKiy]C8g@F)J7ɳ("Kw4lCYv]a gen.L|g9|-2\.HJ) SNo3{һ"nvB xIdBT~% xgLN< 7Lje_K O P%W;=Vm q9 vޫ/pX"#lX-2de2=XW+@n˘4|LIvP-'VWJȊ.1VZƱBfzJh`VU<C%* q4ْ񺭔8Y&0eQ G˴ì HEuGQ&#|FHuA%@Ce/ >%ŕFǀr@HTj*QXIj %s-XVD $.ȫ&"dEB "̖*x N:? J(qS:?{9\XtsGVQ!i q}<>_!,c4ʌ>гePK9LU#zId38)mNp=q\Zaq UFSCBzJڹ([z3UϫlZح a1МWI^RHCG{ (+VD'&0Lay#62AssɬkE(�ɧPxf&΢j@LjGm0ePQñ\_ a}'x߃I wo>qecl9zwf_~ z^PWj&OL⩧3C`hhȍ ~ؾ};8;vs;ũ)�`Ԇm={1{&yvž{ɤq`wN5 ? {i!,c�Cy}󰤿]Ze]bC V] XjcLMMgcKknFܰ,tӺ:;^7m7mEw;00fvC*lKP[nŭ܆aɒplشqj,][?lq CVc͚5֭[ϟ`b_*d3Y&zcnw=JT s;)OÁ%L6y XC chmm�3Sq$ o? (,]tH:y$z{zՍl>^IEil)0M2Ibd( aż2F6%HN>ǹrCb^|<Yv-1Ñ+/#Ls$SЇ$kN[;ⳳ8770OB>&-ڿp<!L`c4:w_ a0UXd ʼnI -c3՜6LNNB?k 1dЋٸKH(_%aXl)w7Uذ2\~hjit[+sNww24ҙ'^-!^&h5. w׶ck?5!,A%3ĕI�xg�|K[+J&`ie ;Ҋy73WJ_X^ߊz4(P)>d%ٶ1wqBXQ؜S4hIl WxT CXzğ5|cE8r) 6cͷAb.yP74[p#Q[Z[1=3M)bl|=g޻=OoyKrGbpp�.&A^f!1^zE ƛo:_u!,~ $Sdy>X } 1 /H+'K`pp%`/[Rd-^\;΅k0|6^ [6LrnF5qŗZ4_ԏz6ހ6`6>1-]]]]DX|�^{nܼ_Bgj׹KXv<,,(6ay:ƆuW*)|`jИZ2#5``BYleA0e6 J>}2)( a/$u5H(ˊ`P۰`.J2<-$=#87< a  Q˲ΦL'Sg2P6<헸r,$R ` ,ψ40`N|lP4 KΤ(G$ ZfAĪ7`F$Okc7eT:.+yHI^l ,@E6[9:y n(sQ�?dE,˲BXt&e9>cIEC-^MEXvUp�%9, 8Cl.{1Tc0)/wYE"hlh,O{hꜢG빔)k/sԡ'鶤$d0|vM *5%u">V$(d} 8lmJa|nWP a<KՀJSEbD I#2BCY*i !HbR |]I"Ra +:P*J[D]TY W^=_ZZ>C I D#1Nx|뻨 ~tpo!QDc1rҊe2V<<ZRDIU B0peI jB$+L*+W*$ g_:()AHJd%cB# G8AOvXb݁Ҕ764P0sg?GU0T v&aQu/0@4AR8pEU&2kTUDHg8>)j8/\/9rG{a^YƳu00}F,0�LQ5 a(ַ<Gknj_8 &0eCpúmۉXCT>*}\ 9ʊ86~ =8j2 ч lS2LTB``;;ʐuQ9qKs+ޕgDpOr?Ü;pD N|Z`\&|!^9mT,,QrGg["p~@E'l}kPnY#-Kd΀[}ls,Eī"'kS5q\E&-Dc n=jN�,v>G}Ƣ v˞ >ϴ!"_ރP)]% U)^<`r?bS,&eC>ң:{)B{n=>t?$ci9P{q۱ePfL_?<}>r2܆{m4555!,F/O<ve0Ev3]<u]QZ/\[.5*^Mmac":vᩳ4>|\DWX Y[]Q~r%>~~Z2>ƗKQ}^oX_Z [E#\*Eas;I,l5wC1v |oH$4yF?::E݉Vf3N*'ggK @� ,� @� ,�,@� @�,� @� ,�,@� @�,� @� ,� @� ,�,@� @�,� @� ,�,@� @�,� @�numu����IENDB`����������������anyremote-6.7.1/cfg-data/Utils/iViewer/stop.png�����������������������������������������������������0000644�0002322�0002322�00000004310�12061426046�021750� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���(���(���m��IDATx^}lCCn,dPnXlf p1-Q⦢(qas~ Vd`.լ!-sIs ɕ}7羮~ce/120F 4 &q �h'.w~1SO&&_ڗ\R  Kf �mU81P M7;^hfX"n]*fV!\)qLh@Av/(ikM{Ɵ9 Δ|O{ 5 D�KD 'T`H2Vpyf.X~sdk�e -%[[*ʶ&omiWe^ CH1O-d&54uW׿z&okY�7sVLں'ݫ?OnhNZ8[}^9l\bcҸ~o~ICS]iC^^,oiZi}/K�k�?«noGs%u䑿ÅW[[_GZ rPiWYeW̫vבQ� MɖdOCz-۽odxKo~.n:@=|3{O=KO?݇7_xs>,ւ?<ÇKozk$00~'ρvf0(z3}00g%P.o7;.}sЫ2..!AΚ7kjv,7@Ae]Ӟ S^zY3L+0pGWmoc[0zyd.Pao-ى!L`� ,T+&I^ %pfarcֿ`!�f"0IdZ~Lۃ5ȉ9wfD-@og 3SV3 � L "94:i*%)_?5!ɑyɁDLxeڐ;@o#:&%C" Bd9?e⚿vQ`|F 98e,0$z ;a`,@$@YbH.}$,Gq�A91F?/.zDDxr#! NqH"\:\`8b<$Ypd�Kĉ<`0򈶈#$?R ag΃�@. +pR``H"rn'0Gb|dA>`_# Lvҁ~'^]p9@vF̹atk0 x{ Ҿ&,0L2_]�,sXL[QlM88踙94e C}cd K$Y30R ?0@Wns0NF,[s FJ<N&z{pi#R Q::f$�e0 ,_D�*w}hSáo 8zH ^ Ґ1+%cWswb.�wC tfL%rkyE!tޓ8=NSaX5-i{̲5|SYL>P3{vy{C~}i]<!b^>(@ђ \h@HYZsLf? @u^^EKֿ[T0i.U�~K6txu /[M "8`0f 9, ćw\7]:CW=00HVV/\S\kWWtEp-W-ZE |^EUk ֶGvZ7|Ά1KG(\:ם~EO\5?~LD=yQ"ߣ+}* }1̸ #bI4bڌԆ%\YNB� #AF!q-0 8 "cPCs_! 1?se|0V=>LbJ,&0N r ,aX>0._cK4^>k8u*fq>|w�^h`@5a 0�@:a]G\y*|0΃T<p#1F˘ L0 � amȎ~b^�tT#;����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/gauge_vol_on.png���������������������������������������������0000644�0002322�0002322�00000000717�12061426046�023436� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR�������� ��IDATx^۱jA| X `X$Mlv%IZ0oYlmXID{Qv#p/L``I 33s\&ffsdx, af._>8{~5@/,�("@{y8mZ,Ub;[ff+(Q_O۳MkH=E=EH帞$"!J!"EIHliZ(`̢)PTP9Bݮ[MOTANeefi(!;3Z[ǻ~Ѣf�P�-33 B@5,Mr$C.ffHvr 6i@;| #*qffH{W @h3313L�;rf����IENDB`�������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/gauge_v_off.png����������������������������������������������0000644�0002322�0002322�00000000510�12061426046�023230� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���(������{e���tEXtSoftware�Adobe ImageReadyqe<���IDATx1QP)!LI3lAUI,l@m=DBk(-n~i\wIs>b^fˑ5);^#rQL',ǣaQL˵`0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0/8rFUU=ރ~/ �edl����IENDB`����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/btn_shuffle_on.png�������������������������������������������0000644�0002322�0002322�00000003017�12061426046�023761� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������U\��IDATx^VklTE>(""LQ1AS"Ĩ~T!I451 <K˶n{񻷻uII̜9,K(�`"KJBa7I5Ma-*ˀ (TvEKP4X 0 E@d*#Zcz*5)Xz"ޥR ꒃQv U^ZxzDZ[>S.W3p,\^Ӫ4>&"z/QaقDd gF5)J-n꿱| cta&|xY*9":nnQ*jXh6̌12zXO6Yi/X.=F2ƇNrfdun-n)w-(Uzc,n43m:l%$qΜ60ˍ=y"azn튟ڿY5:3-MG& ᦉI}ԗz5˦lH4z-RRԕ\-j]OW 74u=>z{>NGegiS \~*Hҹw\EB#jH ᛢvrm^ *Hi{72A\s/:횽 lZw,{q:-l9㾟U`�of MD[�]n#d3\*8ht�Y _\]|rA8s-kulh |0, �z F.GxLR*JȤHUkL\w(]f.}|K}W \7l)FB:X՚5B<>C2]C40[Ct<#(gͱ츙i'd3'ES&*$b%F- t_Xt 1AF+~=чI+B08D*4h0RI~DD<sr}WK0֘+ n9 㷧7mL}L ܡ'.ӖIO~0#DJJ2ix٢u9tr//YGU$婳G }Ͼ.hhv%{{acd]-Дt؍  "'?|x/XE]>-5{"N虫R{HNNQ^dȿ昉чȅㆻަGwT7<K%n-r؎"JTP\2\2iHe8w�)('/G{tQ49ԩ%y|s,^9ꡑPS2x]1aҘ4�'7|&p6�DpVx1 \q'[w5; >G՜s{gL#V P']޸6pSo~;[8K'O D)`mLVn)>-ܥ�(@%gF?c08mh`) R8S[p7} ;g ����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/next.png�����������������������������������������������������0000644�0002322�0002322�00000005643�12061426046�021753� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���(���(���m�� jIDATx^ipוEd6; 4F+28LG5IeەxK\ㅀA�&E b$!#f&U0`%ƻb u߹Jh" LSt99W]q R;2�z( ɰ~=PP`� ? ;h>Dqfߔ ^0->$7MZϴ6CW�a9 H�B   jLxۯ : ;M`d0 PYA3}DY�Do` p`ޘ%_dF;}ͿޕuIj�{݈QmltE0&A2kbF�2p1_ܕ s>NνP}o6yx`$KTٖhU;õ7?q]fct2I]Z/ @sVk[cvվy "F\*9U :r9?(X`dn;VMVUsyNUmUl1n~ "ǭްonmX{ү˲jsqU˩iήi̪yj2̪|wCT@GՍ7{?'coGQ9{>!{C뽸15:j 9|mqv!N<IГ~|C-@vk@G t+AN8DfŞ�u?,^x暝' 0j�m="F:_#mJ�dUk{;mկ��$9҅&9)@]�}3֍q5S2bBs^xW_B< ydW2�ȕcIQw<[sf�WM׮~Crx(q~8Q gAĘ /,/{~+ pVfoM~A�$&J`PC+Ȇ~Or65f6#vo?m;~0;At38Cr7\RH~ n6\/S{DV'LZ_Y#9ք&uHuH ",} 514znۈ0mS71݈&D2Lf}6a$ mRm[`�SYChftrIl  wIÝ@q�mBAgVìL XcOQ_#`D{o>C:SĜn`,{&`piHMBf�$y`D+yVն49D+H=ĵh("htR =`fg ѩ�d3 0# 11r{i0#p q"!-=p;G !,:E|hݎ] h1 eD- bFO7vk@n`rJ OL Pș;,HYak7!ݧ}x8qv7QO8A퉈dTdf$]dp^`" 8 VR�Y8�'W>!}Okk K ,$ d|dfKP5ߥ_δ3  9  _\rṫ �Gi,�6(�;E` $(vY/Xv7Xfbah[b+Y\~ƿƻ Z\r`#ԀMXPT]5�lHk[`&z,) tı)v�7Ǖ^ 82n� B^upZ  q)6Ek8O\/F7gE]7#I=r`@M6X&�cXѢ?A?&`т>$Ƙ_oi�]�+rw%NL:oEzZqM{U `S%S*7j=o5�)O-KI|E=\dH-B,=mBʬeհ_5C_ɸT0z` �F �#g,  +f<0jƦb #g. ٰˣ^pL]atcL[6:ץ+=en'~ݘ6wm=BmW|RJ$m|y埤-=Z^9e$,Sώ[|xU@8@~Mt%e~yxk6.*}�2d,*|v|jѳ{:j6{C26*MN-XU7q^?3Oh9> Vgm+R V6z;l򅮔f5箉-\o*I5DMf//5koKڬxljA` `ESJo~]V?5_óeeI^HAEӗ#/|ב|!qD L|�(,~gC-K_`*]h3Ms 00{r6cZ0 rRlOp6G  'qߙh͕ZFh=?\ b?�}@-'@5� cmp K|id-{E%v%zJRޞ�c)u7"n6A "@X`(!5b)xÑ=s)o?…0.QӗGc%[1Cl� dh1qſt�#|w}΋Fjy]����IENDB`���������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/gauge_progress_off.png���������������������������������������0000644�0002322�0002322�00000001104�12061426046�024627� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������v$�� IDATx^=Ag6\%D҄J bag)vi iRI/HeM@ X&ApYxΆ\],,n>2aˇCJ_�` P�ȿN# �(, K(J5RȴK>,eJSnQr3U PtAM̝gQ@v<mR\�0 ]qNw;rhz+˲EQTL@D$O>×HK#  u5 )8�}8l6;O&RrMͦr" �<P*-{$`H sEQTD�v;#&o|zj,|>qKl'DXdaFC?f6P�`O29${=:'nZd2'k� pdu]F.wQa\l*J+, )6͐ x)~(O~( 2,2?n&Manv�C~uO����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/gauge_vol_off.png��������������������������������������������0000644�0002322�0002322�00000001010�12061426046�023557� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR�������� ��IDATx^ܱQ33wPaXI\*BA46V@S_V*vc)Ğ; ( `bnĐ,|_qv;+��s;]�+ٟf_  �8%gcO[y}̓s �qd-sv}h4J'a�lp8ZD2t:j,*r�/5_nk6[֫v{X,j%Z(r�hH>bc>qzo(z^ϴPX�`\.#IwP(<β,*y �l6G.U* @�i2o(̞u9�F#;?Y$Irc{֦^ jV�5D7�v?j�WZZ o:vu{?�XO5uC<A�'N�4ADW����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/prev-active.png����������������������������������������������0000644�0002322�0002322�00000013066�12061426046�023220� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���<���<���:r��IDATx^͛yT嵷}h#&WQ 85Aq!xD0 2b8T4 N( BQ@hs;VA׻OPm|G™o�g-a6kQ6<e (;zm%/yɽ̥Di hs-g7JHWsɱ8꡷.ȋv[T*S~a6f„a((r.b\r!$LB@fR ,?"moN"S%q<he.M&GY2؛(!Ȅ (DB&$DI:pC(\AKAvϑB6Gb޼~SJ\iƻC0AjiوIu6Q7 '0I,:I*zJ%89&-@Z)R=@1&9P8 K7w=Ef՞<[zfnmU%ַ8#-VUXu%IUgHgR3켸RةeGޮvNB~@"A *}Z |)uĽ//3<-USf`)3UIVmgEUޭN7:"#fV,yιwDj eHµtg gS:Ly±$͈�.w.웕< *msk{i:1hjG|LQH~.- Iݙ~Ӷt8cׅu )i300&.)D*xxԱׯ1N [桟pԃo2jW9:I)(B2I_z>ccgL�x<Sw_J_,}OJT(冯7Gxi/7xC:N}çv&^a_>=�:L|2 ;E1iᳱl,oy]{פ(a;iIJM:N}[)/̏EĢpw܇h�8l3P`HJ3B)c%̷Kjha u2X\YХS^|+�7oP}lyC" goI]$Nj7y6/!OU7 RĄ B%yr;ot=.ݝ}(+-WS `ٲeg׮p΂3x 6o*ˁ)D֦ux843�IP-",k^B> iD'WMj@ޥDu9NUQaeY<(6R,!89޻�Nzy6}-LR I_Yٷ׭[>sԜJi?~Vvw>1ݸ'6vc[~̣sۏ~t/CG?L_*y?6W|^cIgϓ[qH|Cj8|?vr<ه^ (nS�yncٵF?Q<dIp*U N]Gtmk29t5cdܓu/{=Н]{b޺=5%Tjm/!`aYk( )^e7 #b;@p쥖M/f2MT:Y]]"]]}m;M_:�YhoB}v %�=`Nlj '/3u54tLM+/u#=h3w\ߋᚅ¤1_p-Q�WH%<x}~ݲi�V̺ U| }VqO)UU{z<FtD c�>o_vBhDsh>s5GAKp@ Q(0(I'ҙL5\kjY-hfM|}{?,@Ozc eI@IJ8෯r̹J] �)Rڏ~$/o҆^R$?(adGj7){Rކp,v23n)-/۸utN`D{ �y:J\hpI-@I H) J ћ2P|W2sCA,-f~�gRmJ2 ]fQqw,?Vd6cd` ̎,2Eu9- c˅�I 2DĎ7]2<IBRd~df lϡC0I5qZ#qaPg7ڊuÚY]3R+ Sdv.&wI@H`&$7 /w RB:(:3P(+[7CUU5QX7'f#۝�XJ#:lB2pHY(# Q̑?CS^߂>BT"aͻjGm Jqٺ5Un�T�ttlM]Fɠ0v'$!!d $ X<U&}j+JJG 2 ̻8jLBa0 Ջ�YINzgթ$fe"AY:y&-jZOd;[ɗ!I") $YNžHd#<UEQisu9-]IYY^2aHFbLVTXXi<Ks$. _@Ȓh|b'D,DQCf~H$;LE32K&$,03 Ƣ\Daʸy;5TqH!\ pC�[ a6GfA<#l"xT"Hy H£X:l.0ģ8XmcEnlZ�&m 兕D1GN ̂bO -ďq(&9(#(^hTܠD\�%Uv]QI z !% M䱘Q�fE ǽ&"bᢨd Ž�T$;:I wIdbgl.&37S 0@9e�CfPRB ʅDQA$Ua(<K xUP2+17V4Ĭ(i�B!00P.Jy4͛?�\IɿA f'x,V"? ()5D8*Jc y]@&HyrkLɣ � ,>#(+t*sZ �JwUpQV +8*4雄 .`$Bg# @v_F) 5}^s0k!J~&)Jb(WC1rT,Cmf٘�Pi-�j3<l-L0 D�A7/>+t.M$U#.7�v؄P JrDe[U!E@"fGPPa a knw{OYRG0�7H �q RS$Pq]hiNxÒPRak nѩFah`jPE{<9#FXtå| Kvj'XyHg FoNyT%UYPPD倱#=� PZ 2CH:ݰ"U* լaR dX0�ڍ]8 w{" %:!H% HJ/mo0Y/D: Q dHQuS~PBRRC $DNa�p0j8x}, 鶱m-rt6gO(]$;zWs[ (`buQڑ,?� S $ d<DDž#%#qxUY�eC%d8%zD6?@o#DҹHZT憱,՗c~;f:#]Z8IFmryQPxBb& wt;YPY`.A&dhOe{-IJ'G^DzL9C\.E H ]mg4]ϊ;o -{Hݑ~!D)Ίn@ t��!( 64P#ɐ(Ъ?A:hxEұ�hk+' KMx] @|zQ;nZ #0ZtZyI�AAXtE:~c]2�Bky�Ȏ`N-z x69 !4}J%F.J^3Ѫ0t$)f w{L\wƱ)ТVϿ~j Joq!-[P˫ljֵշު'fV0> : 0?!Mʾk Wq,Ӈj�Zʚ+ c暽rrbki{ÁA cWI7=rr^MaD \ h f ~:e47Ofm=[0t@zle󿁃z'eZ)!cV @@ j�VVHX)ZI^-Em%Fg+[g3Um?@+̏2{ S6%/ոz]7c>ȸ$+nH{DB ˅zr7:4v 1M/7E6�ؽ6}}êZ^5x צM߱,7Cҥ@c@r:LLO$U( 5^5OfW Z(9/aMVMy$ /sH>#Cp!RS3$"V5h%G+&ZMv;4zKCL'\dɈP$�K̘ޑw'jڈ]p,{;DNsJ~C2`.i篺k@VMƮ7}U75\ĉ6Z`%xөW6?_eG|�Z~ H +37WNCn7 :"Z a-BkfQլk<iM[h}f/VM[qB0 i"iy,UWԿqIH`!"�Q OoV|XFV3{\t d@hvILZ&5H mu,B5 A#I@D!@2XO�4e?~a{t%o7& [} 0#@PB.�BPdu@I^.H 1Q-gNn4K6gP+͆Uo``#ɕ `$LBy υ\Bf2 ,m4rM`|GJϸn6IhyZK� Up2cQ4ƖKz ~Df@yf1����IENDB`��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/prev.png�����������������������������������������������������0000644�0002322�0002322�00000005640�12061426046�021746� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���(���(���m�� gIDATx^ pU幆oepUA d�B.2svlVzꌣrxP$ n=3g9* Db@($@V:xI�!\v 3l0j!ssb&0Pp,DAO43E4s{�6ޛwT;k28v- @ NA* UX#Nл;w<�n>Ⱦ{F\Yo{n?xʰ@W&a灓:�N\-dXSaoF�}#_{90q�o@<O�|$,"+k 4nf\'1Mp1~S}_Vyb~y8͝?8�1�Helˋof] T'A 4$X ,?옒H풽akwSQ#|܊XUS ݸ˨k6~p5ۚ^uQ2jþ�#Jv}.!g]"\vyUZn>\Q~}(wYZC~k+ 9v[-!nsTyA/Q}ʫ$ it99w缱' *Kzۺ=�|[;{x\.!w]^'rW嬫<·Ƿ^߫'}7YYe9Ox5UN ${{Z*ڟU^?5;}zkv.T֚w O}$ˈM&oa6֑ 5+{$2,� �0Ȕ4+:\1@.Wpqסx޻ 5)WE.d0:lla|(7:̌i�=/N wvd&W=*DvF Fo}kG;dW $M*wFoW6Iok-'WཟZѫɬA:c]%b!Ag8p+нڎ1.Æ@A=(jX> W pfC7[<dUI!m�RSS33$ ۋmb3@3o97fD0 A !{`7ഇn{9}v�.b~GC$KdftKX#d 1ɠ+HDۆ>v;7Ybͽ"OFD9!aB" @.�KNnf3 ˂�a2{@300K̚i ~SFݗN"%tc|&X jwqf@ @ 0#fF�,n1ſqf#IC# .`Ɲ!ذ4 aH C Re2S@ DN=IB9c@IO5 bL 5a$;3p@`Y`h55IkD8cSADDZ D܌@)NLJLIr1"u 0;1)b�78Eki& H/  3J^PR.,|݁p4^fD$Y9w�W`;9!"! ]84/*=$Y}1�ܥr? hD'9=[Ǫ�@-a@U�_7r[63Pw0ъuB[ -<�qG_YO"e| `N 7 J]Tw�o#7XՌHfkqn_65 HjbN@=7fnт}/&hcµ0*h)5(M #G::{=AqnF:1 7\)G$.vNfJKХ{Ƈc+8)xX-Z?4 H86-@YtvnSI} �r DvSN�Ȝ_1l_Ƃ~/cA�g.Koz"}>epٖ>k-3KK;X6reS�+ caY]3Y2 a2/]9nSC-oVAӗW0hʫ\!{YiWSH'AӖD�L{yC畞|!J| M\0%'4f]=!sVq% J됰fT3VOE%'sKu_ H"sN$ } } 9%y!~�j1㹣VNuB9^~C2Zh 3xR^,# �1zq^bI#-xmU`)hʚ•W2{9Wʠe {4 yzS^ �2Rf3p�2 X^ѫί\Q-h]4ӧ^\?xxoΫbUF�֐^ڈ]J4)#X*@p4LKӓ.#)5`b<� 5$DEΝ|vP3yԕ|㥓p`F?0>S+i3,h@J5,MͰ%&Z`c  8�~}l䊄k�8h))iS�OYWA 0*dA'> v�4 , 8#c/=k?4DN_±/smޙ5c6̮bb 0uE%؁ձH횢DKShMSK0x+]f@w`DOLH3t\i3p3.Qg1�SՄ;W����IENDB`������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/play-active.png����������������������������������������������0000644�0002322�0002322�00000016415�12061426046�023212� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���<���<���:r��IDATx^ %Uw}^KwU.nd$0x3 Cڲdf�c [XA$KHZZ]]Kw**J-)¿7#92+^$`<' /e٘"7;jĄ 4=/8(`<txfYp Io 8{UbxTm5oG47sAH<'pm~H_;brt(|2~P߅Y-`W#"ah>.E~PA7} Pe9FN4o\/DDjfI:sTnNy*SEcA9iI)( Ip�#,65b HvlH^z#;[㧧.׼&:DɟR?O/)>#+є^].ͪ9mL8TJ'$NφcӈHؕ`�Fl�k5U Ilve`Kp<L MӲz"D,[b~/O=D,?{`#<Omb<WAk[OҜ샐J8lI4@b @{=DfZi,R�HR))hKt�z ++=`M!K{#M}ʧ3[ǞۅH`sDJS*wR멊8P 鸬ڞAjJ�ciSbSfˤm{ve9�&L˨s4e<c= BtHA m/?k"F^ptܹ㙸w�J_f_=JןV63mb& ['>9�!9}M"@$b/OJJ[ �ͲzTAQ΍gť=)``XY�0#׍aޚxtkxg0/<J=~MEvbViݲ"OW«p<.ħ8CU4vkEu^+f{;vvi٨SmyF9cͭJ.ʫE'|JI[7*Q{,N't-3퍗X.HMʛ^BZ.r& ӆL'\nBPcDYW~l_Xyk5�aoe_{Ϊ7kv~!uRcOECo f2Ǒ`' )T>^_ݛwq֌wy?Rv+F3t.Iw�s A$CפdF)G|~閷~̿n n``!x/3oTHv'"ԠE+E5(|D#)7l." ZnZ>Wd�`ۼ?VvfZQy*t6>%�hSA͈ytΟX݋S?�/|Y|cZ/=KˣaQJiY)�' L:&< 6O:dvګ~ =DZ t]"kt 9.ҵ\[`x}tiߋ =m?b^ۏοv?K[ҋW^co)r=rA :}b C,DuV{g^Vò럺Pjc=t^kq/p ?S)!6KX=59@ޗʙMfUHا1wNU'pY\lu ?/5 M噆ZGS=X Գ+SJ~ZQ\4'=o]}SN�ߋ~=}l{/ݪ5:c:#q L/]~2\kGz=t*+'OEϤ\%{dY#@@q>h/zz/[ݔ}(;SU4[pD{S">C13?zc9")ii;!K+: G[OG/yѾܜk˙t1z^(h|SGby\�o/pGOFYS*AaGPũ!~n=.b>5qSN`ӉEE?}`zwz<l,sPf.ZtUc1+[`Yxۿ~Q^OiX2 aRD@#"aq[cEys'p 8 *BR:G{;pg7b`zɍ^u=_Ҋ?URu\Q&*ĹU\e)xIf5/, U>peFԑc7,N~$a+sؗi6?<7�ַx?̅pܘ7'q@1#U:F9ʋW ǖβ җ73 VsU IXi; 3Hs'!^!RN>? %�6d5Fք`i Ԏ:9s:՝Ã㹉bvoI6y^$�~bQ`&kw L؞1_'C!:N0ms seώTƽ؈Bs;w߅h!:f8Y=]z:lo Nv?<*u L�S&Zxװc&̬MXx 픝rz;m T+r-!-"=zT$Ut\gعѝܫwkvzM'zFٝbD*vț@ {͐L 4'{M8[I8G~J `MvG N[z)a*^.GnO,6Xz�y tCQGU܉7qx&IE:=wϠ?.5ct+ ae$* M0/ts"~`J~GIPzYwm6⻼G\�gI(1=EԶ<2DW{UVX{π<7 l@"Y6fR�Ѓ<փ{t⠆tzb_n>VCyt~Qv^"E%Oxp%f8=c 1<KIK/³1FG c0 MD39$q'pyar=8^4b.&vk_T-~_F-�#c\7za $;&p!RQfy4tڽbAA4B MA46bR,� AeVrYnݹ'o~ﰍĭ^wwskE !< kcjFV/[ynIWQ m� )  4htAEI׆?c#~?f<l,|.UVNNc)dj ژv UƲ ; 9:%p�`\4iALLc!q UQw{Wuk4.Ud9; pQ:G9�B&"1ku +P V [uxVl:v@aȩ`4:ƣ< V5.$'0�. % �cP #xr UY @5vD@TU7M �`#)eWd JԤ;ʍI8"2`)&#U` Rv@3n}t6 EZU,+'(ץ� d) SI(nZA`�n! dP $[+XW/ٺ~&j?o;â:>.>Wp+DcfJ* ҐŽ 4.7̢)n@<&䜕l$Xxs@ % V뒮K.9j3ۯ6 2J~<](ꢒδ$7�$k8fQݖD# mLTcd!l ƈhҚ2+$]29Xj˛TR/�nbBNͲsZ" %fP(gh;9rι]-S[#0ε$n%cdp GElHi*JVTkC(x/3ROws+_BUer4#uMY'T*|< H]LTꨙ4Z}-Du@YDfi2hdKD]u "獂rWvۭϮ/k]|!yKh1ƥk: a\Ki[K$ؔ=̔ pf^uAkr36Q3%T> Z#kBĵz-64Vᝇ7cr৞˾=[ʻ;et[-=)䞥RmX)yC fRv4eآ%Ps+Ի#)ِFF:,J$,yjV쩓*<>To~ 6O#)ݑf&aOV[86q]Yvˍ_x- (kGe+}M'F5KWĥ u[m ͩ_<$>G Q_ёei%b,,ԷJʔΤM@ =+bB{rԑL\�h4g] 91hin-+zLUۥAAuqW~{oR(~ݷ<vg:w]0kXEnY7e ņEĢ셐ۣQŝoF|6x>�P@qiH9;ciJ.uU1fd3Kb3W{܈�ύ}ץ659bE`V7 vSIyib +{櫁&cͯj5>%�H0뻴qU'義| L:?znto^ln]=D�o{T_ZHn8({ܕj7s0HTMc{Gfm8\4՞±?`F�lv={*<U9v>?|pV Nh+FW'cE7E%xfO+6DYƞ%] +jaj5nWH^Iw&#?*�=7wH=W5ý<Vq"W=;O~9|__ P]07<_*#?LBtbX^19zKIpl5Giݬ[Q :%mۊY"M93*qC 3?ګOxy%7;9F14v 6W;O|i[eߙ刪S9ԡ#5co8p-Olf " t &0IM rR1nPWcy'׽w(swkOz/ ۝|??mfny5|qmY()3BG6⪉Lkus*m^_۩#н|Te ~JO9|kC77j_Sտ .L �A ~|4K�{?}zcQlU#>- 8 F~"'H1>yu%XfGQfe˂˲lj)[8:t|b;^5.~B_|^�_ll[�<r&Mi;Wn\Ƶ1SťCݨ>k *YuNP4ۈc5lLIx _->GfΘZo>nV>P.\;=мq)q6%T^OOWMS#P?#ǝU9BF2i\.AU(*:tYˌ  io {d/<cgNa9k͝z -fɄOF:.i`g0甸+ܙ쎪w>A yeۍjqN39Aii*"N h(<rw x/կ5ݐw)Z^tVTE 1J-PWEZ0%Ӑ#E*|/=,(:HUQY Fq̝ <aikY%%(mcW~(hefG]7!F;TɲRJN yԨT6CE#b)8dtX"H#>N\tQ.UulWV?U׿n>|LNV@M%a-ܕIA�McVۨ,jhQ:e۹莨'-MG9E`xJ%y,Uu Wמ\֯Y {?,|{G[D5 cV KVv!&φʹiLL)\x S\V,-6!$0fN4o`]A:o8KXN8-=q2׿0Op"ncĿ|PgSk^QjGFl F��!DiRh]CtVJҞ5KUڱ:m4s_W=]]{6oA^X؀x 7wݕ6iP xv!LkP+ڐ%XPJK L�@BXIlAqZZAv~6./\[ p՗>y.zs4Ŕ҂EBsVOmJĭR�lFPi4'/x8V[_4-]y]qJj9YY9,b3#3m1aMh4 lG@_cc-mboHl&kKTiHg[5shq/[(1nzh~X藭f.ZiBISg$Y,1dM[L �Zз-i .b{Tl-rh<-'Gs5m)ahX"����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/gauge_progress_indicator.png���������������������������������0000644�0002322�0002322�00000001453�12061426046�026040� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������rP6��IDATx^KHQd25!u!]R[ҥmr*mD -օ4JqQpBRWڅp5ј@×;9ܹ]X؀ H@wH?mpT PRE\52 gӫ333cccᮮO555 x&1:[1 D"7662鎎/=`Uz###o~_P`D>g\_ }uj2Jf2p#Ӟע(%l62i \:Z3OD_^^d2...X*R)84< $jhhhh{ LHHXLIá___N53>@$ vvvNOO5Lef4dbEy6-@*)\#h4JUh&Vf<l62pPIHL3": R F>:!rbTmDi> iH sdVp8 OzfǕDXX,jP򵵵 d53{aa!vNsNBZIGdTEDB^7LiFi(^y6 E䳳|jj*F[[&`uuJ<ڭQ&D`<A>Mkr76QO'����IENDB`���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/gauge_indicator_on.png���������������������������������������0000644�0002322�0002322�00000004316�12061426046�024611� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���<���>���w4xy��IDATx^ś]h̙sN>iC?B\TRbr1\"p}AЇR}>h1c%EQs XK nԯ&`M4隰u{3gxY3<qXZ\!*3[+�Ú-Y'q͠D:4B;ZXj>?f.##(sX(^Ӏ NEXAH ,WDDHآQR9UCKcvvHxPlr< oC|~VCV*>B.<9la/Q<u*(eakX)ۘT͜FţRH&MF976.:ei٦ӭӧ ([偖d[-H}^)@eym[@82wg( iK.ޘQ,o8S2'5܀K6FXr5333{2Ly˲!%{p sl~SYYӪUigy)DɶtR8\L&Lu�,\+yُ.566'.:B.OOO®GV^^ڵk|8"<̳4_�>JK#DD_<}^Geb06a8ErYLNNO{\EG?vV1�CxY˞і".Dlys `" "w9B?%,<5o-A8Y9AvpFQhs zX&&E!�Nh[t *wT;8GUd"W)d _.AK 4 },G \ ]'.;셬 J|(ȡp֔GxaR$R(l@5%e !C4$Ζ,\YR9lJ;?SY:@L �]S :w4lZVQ_z%<yڵkDFY W粣aRcT4eYMPXla}m֭6�\>TFa}AgϞMPE\b@6]{nٳ= 4/{)YiH 6tv~͛7e7o'Nܹs�AI #�kKɍ4ɫ#jjj>]WW'۶mHpWE(۷obárX(&-;a<XԈg?Ǐ~gtMDEEEPn߿SNHT�36&yQ`Wvv]|B_^B>… [[['�`a599ƍgd|zǎqΝIuae<_Μ9󓄜ZZ$afi FXK2O7n5(d92?tZT¢Z3"Pa?W^<HK -+Ν۽{w0 'ΒpN]u8eO^,84(MѣG/]r勱F۷ƍŋ---o$Lͻ7�W6I%a}p_uwwwL9:}YdÙaӼwhY+WWW':mOO?r=`'!*($*r7g8dWx5[$(f͚ڵk_ݿjtttŋ B~FKφF|ؗ LX~B{{7?O<u[[ nPs8\ U6U50ejbϞ=ٻws [".wd\!͝82Hs-[+&9 .*TkKBjBk YNkަࠑF6"\ " ߒ�x?L\�Z [ c[0ܜ5kV*e6qXPtJ SØA�_MH k˴ef`z \v�jڊ�����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/pause.png����������������������������������������������������0000644�0002322�0002322�00000004763�12061426046�022114� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���(���(���m�� IDATx^{p?/'$U +Ԃ%!Aܸ쌠LwwvtgnAnwƩwTtZLEPuV, H^(Ƅ$}dž2$n?3ϼof<}gNPa7MwԽ}O$,集ۅ06Mw�׿O]�?rE{K!05BӀK,CBp1mt6\ow �(ݰZ3@=ox͏f�.n7: N`!F .3 7|f4; @ٺdGb&v*`kͳ ?F"@F Rŗ[! ]*qfa� 6?m{$'a=ӘXA<\@a/PkV=I_LSմ`.ǾSw%6,^hĔ-!#�5)m)k:-ZKj's{RVnUqyg{j)_d�OnxvzCpŵ pG[ҵgr +09cCpmebGc%KkPf H]dMxm-%npվǟKQ�8ۻ8}ZKckAOWJWώutM}K]%paz*]%==w(ZU?xU}s-b[4bۋW׷N\rH 7I lԪ7xG1i`m}{^ Dwh0f]3[L<y~8NC=cw �A@Wt=AolU,9 C@B6Y0G3E  _G7%[u;5h3 - X*ۅr M_6c/kԢ(A9A\b;2δ K(FB1XmL_ @73p`xUBK+j0UoddBR @:pK$na|ȩ6m[,'B#+ρ7$f ;Ʉ1a!�sAv=0Vԙ+b8fd>J1_MD 1 O`!]8vv)ħ1Kf`A3(Npv $DFl!. t!K8xq0:?`H!E8"e.vDp`p©`藮ӆ!(R :f1X&7 9-0u�~"aBqt,!ffy: ҆c b`\Е ;Hv2 H3g4 ۗG 4'P >ixrN_Wu.4 a '=!5i ୄBWك 9$ӢLtut!UND26_c~-;l&.}1r%{+pŧ#�A� ?SHYXtq<[{9dc ޵^[~Td|[ H�YBeB€d>�Gc'7س  OS_) v}^}fV lqR YB?�T)zcu٠°;HD+`/XΝ{JͯJ6-H[<\`̞SV�7o "bY}uqd V-{U%/H6�q6{ Tܿ ɉekﯸͯI2խ_ϯxyϭaSeLb W{L;zKWX=~:I/97|YM~ңZ+ɫXs>IH_ecXGcUTTdh0W�PPdH~K5y/<Ry~=&yOk>W<>x[|XAT4`t ʓa/`ރyrqQ`.::zm=鋫,S,q9.l`L@ -xčO=O0l)?/�^HB|"cRh:r ]m3KF g\{�~?3? E#E?akv1"8 �  "6K>y�? {Lċ|C� W\9Pfi[�!$@ PMM`E�y/۪b�\">~#"rli$62C9t�-F$hCwE|k\T3 ����IENDB`�������������anyremote-6.7.1/cfg-data/Utils/iViewer/bg_portrait.png����������������������������������������������0000644�0002322�0002322�00000003113�12061426046�023277� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR��@�����ԌD��IDATx^1n"1Q\ (hh2Jnp9�eWPVdې< CK�nTqLZNӔ7� `@�=}9�&@�@�@�@�0� ?(�@�@�@�@�@�@�@�@�@�@�y] z �kI� �ؿ/`W?A@ˋ?@fiOw0=] _YZ[hJy�:O?=N�2^{�Sgݶ24 ~?nxbL+0}}@��p'C("tS �d^xlcb-�{t:9~B8YV1|n`?ƌ ˥ 1 _x *C!Gz"L@I� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � @�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@@�@�@� @�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@@�@�@�@�@�@�@�@�@�@�@�@�@�@�ÐLuW`ZK � =@� � � @)%� � �80 W`� � �80 � � � @I�� Y@= Sw����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/btn_repeat_off.png�������������������������������������������0000644�0002322�0002322�00000002523�12061426046�023744� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR�����������IDATx^iL\U:,ofXVE V0u)>Rih5iFm5)iM5&&AkԸFZԚLK,4va6NJ[Os߽{,Za  &񐚌 @WRnl6Zm6˲za883dI(p�qxIKJJ*s9GhGBL]BXE^h4"01cHc`9;^0: דWzve]j<4<T;zq"ƥ໭-Ʀ&Ps7%I2Bѩ񮹾o##=U=sssK`Ƣs d~rixʒD#ml]|X^^>Q㊊ VVb P<5q\BWVVxS9R'y)QPc^g2h*VRNdy> I@h2&ՑHd#˰"JsC0T$'H,ֆ|-xbb১yx3^]](�LŢ�eT*^Ӛ `&9_\\/\طo_By˖-Roo|1,`̙36yӦM"E34z;&MXZnmʕ+|(\LL&h$^d}SymhhZ|X],#^9�#eVX\\YW[VR__LIy۷7] \ qp (#YSh\._vMގ鯾Y*8晙 #o"K."޾0>.\ ; X.964<N75>I N֧6ySqtDZ^QΞ>6C0#I0X�N@ gwǧ~tQYuO46i+yLUVVl<P&'m\ Rijg] @IŵE ~M7*Er(�xVCs*6G-tߤ F2U0BD.ʉCh7k j2DW`XxN}ybWNy~~=H?K0r4D �٠P TCCZȎ {?ޯ]}(ҡDI:@:}d9 ��<ɋqEKi>OحD4.����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/gauge_indicator_off.png��������������������������������������0000644�0002322�0002322�00000002201�12061426046�024736� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������JL��HIDATx^VK+WL2OS"xB+}*VܕJTҕMnl(y<"PQjh/M2]0k7399结;`8 D(Jw)vL܄gK1Q?\�)ϟ`+Lb[GV֘ss c񥥥1:̣ع7|Ah&|4&HdkH777̛p8<Q~sJr{YAC?$ϥR sECC˩םq,rs huu$/P('|'юz0jb7X,rV)(rf* փ|tZbBXUUh fL&#!$*T788 ye|V!O( F"vsDR@JݝH&Fl\h&BQM $SbH3j 7@D2+++^WZWWW3WQ-ipfC pqq!h &cg\ ~F^4f7prss#ɉ 7G�ת'et:DhԀtpvvf##2ml N�bH�?YU  ǃ(_s_Å򲟘קcޒtT,OOOQ� 2/|@/yMBi*L.//A.nFw2vBy Q)DAWImllCx`ޢbwRQ߷}MN bKBQE< IBP;au0Ig---ʹ}54C2;ت[[[RlR9;Jst%yYϣڱ:9}vvVF>>>c;4;aÄ/M'ϴc?㭭1;ab>gzWVB-z=Q(bnhw=!H|r!:}*/jaX٥����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/gauge_progress_on.png����������������������������������������0000644�0002322�0002322�00000000651�12061426046�024477� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������v$��pIDATx^رjTAo&XR o v.">m ^hcRA9/ .B"lF2sPA»3D9$P?˖[}~Hr7KC) H"ZB 1?[އbɤl$"D x_e)h=$vHWOnu}9)L!BVP|C]߽^ ml/)CfL�ʟ %W^db j"&g;j>c^a @;H$ hkʓ׷GdN÷@,(%eV77f9(đl����IENDB`���������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/next-active.png����������������������������������������������0000644�0002322�0002322�00000013001�12061426046�023207� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���<���<���:r��IDATx^Ř tUչ߹' !PPD" VHAqDp@) Pd : >+D! :{uWbVO{ݿ7ڹ4�FL:2鴥i3&G=.:XR[[^<# I>Fz8}b@_/#N_!NߘްNj**Jd㤈% -\.I ?&.X� 9<xe"uK/G1wBZ}хE5+Dǩ= L!aaA b!ѠP(T,)DB(PW׽/=8+(X>4M`OţG󨴏 '%8nȃct.Ԋ$|'||ILZ.inr d#JM Uy#_8͌'ܭĬR#"+te{-Q*x- mQl?蜦pËKnH ?8@Ƞ) Iͫ79c+a|ϺsVG2Ao#.VA"c*+ʞrWGE%ǃ~PG)ָ|Rhӫ3}> ?&q[OR}\i(ޭ0TaO+-h(YKߠ)WYѐ#g/*2 R5vU;{Utݹ$xTjS" .M ,JPA1o9~w/,󑾏2%3OzL7ݸXwFV0~\j]bE<m = yƻ3,"uϟX?󬤨E;P_s U#.L[9S䭡?c\�#/,]$!OI /v_uM#K&IE @ݳoLw=ARv[eݦ<)�9nHs{W7m&yZfaUl6]O�D/lV\�z|]}r y[D;z޾\zNz~5�SUW԰MWkuiK ;#~AW~q_R A(�w7�.zk23mԶѕVϔ?j%<K%*z$p'~t>in~ԝ&m pߴ~ɥJJKUVO 64�t ;S @9/'52IABPiIϽ}݅1�n �?^/sc/m;5?o: +#I$ھ<b£vȶ#?=IvI8b [$E{\I;fiT{Twj[ia+ m1R\ùr󋿔kB [WS'P`qk#, `z/ LY$ny/ -3�n7 ^GZֽ�IgFVU6c[񯰢kesn+*W~IDo LKvߛl(ʶ3L&̤k6?9u@@GWM1K '[8�p\Dެ9|RB*# F\ GR~apm\:�9߾> {qף(e#e3 T&~nU_Uilq揫E�Ł()QTps`L G?zqþ'{NҖ >*MPK7�LjI%@IǖԷa8JqvGeyò�g>. ]l؍zTH쑦IK;80dDL3a@e�{=EB~$eG{%NI)IH]B1H8f8nlmVRr?.87q"〬A tϚ{ͳ\'' w4>f &yEG�G߷e}Oޛ/ 9_GDKH0d <H=£BQ �4/#*+6ve<͊QJѧF_wrT"F`̾cך3?rdA5$H4`͍uW%ʳm$0#Qe/,=Q3QH6(4QlhA,-"5k$!pX2c;{_zJ&!^?u׋X1,ꐄrj GŸ~BG""&~FH(bl ٨زLQ 0ں8;QM&meQG% (J@z9{ A\v)k֋H ɫw$V0&@@%KH9*Ք3.] ҪJۧZ5 l(pkŽN[! \^&!eM!]G`*I2Iq(e ֑cSɱ{$eQDrSR\dEaHJ v'Hk,9[J#%!B:TPwzK+H#֎@t 7BL&V"LD8"MkB°DRA;qզt%8Fr2$TG^q03c@D# 3\>0Pm T |$ XA "( L T@P+l qLTmKg3-okX.�H/tH4 qo)�$948L$Q`A~4FUtצTd DZ3RI.�ԘpPP�I™ fAqNV4_!IǵɈGw&!PQH3T&y|[#L,/DZ"�)FcN.΍.GKpD3$!$0\P J$CaO,MBrP=@B,Y\C2@wDӐL"jbkI(5TRARTO Yo Qh,h v4a2y 0P?R S[L( kH_g P/]!bP9 P� k~Hߤ x6JVH@,/SV>- iIVXJ`,gf)K: 8Q Bo2쿗0vX0,! V'* "!Tll/}t861</T\8Dwy`u"y-XN +¯߾O|(xx`_G_Re|PĒRa ˉ�̂n6i@2 )aH"3oH*l_ ^0!O V`<-l[9�5jkF @q�;$eURͦ?-$z煻8G-m@_Bx),x܏zy R`=,x& ^�]nIINds[0NƆi7O $@b@0ç7[?nHM^!,h 0V7]O (< X1?%G맲v ;2Pl/ N.)Dz!$^ ppP:X3Aِ!v-ØC,]?vN ݐO8R٣ }äa1@SX7n(k\NCjS8x4w3�LH@ %W8ମ#veٜlCaCJẑm8ڨnғI_Q֔FifÞR;&KtpuP¹J 0re;ҙbk!nGdAE@/cW1w&Q$e1f3̂wO&M<Φ�0vaVRtHtf\lccG*vJTIbQDAϜKeVi^7JaV*A{Hk: "`!Ɠfi#eCrSiD)x}q w t ѻB�䕈; EB+wpuIm].IYmvH&=yDA�/7v7,6Ikipw<2)͈rU_k� Ԧ˰Itv%iHP 4lM|t8<HKGvl%ݴ-wxod>F.WOH)L1X YHjL I$*9tlu+�GU sF |DONWOhm0qv6̋iޘe; XѾbh_?Hܴy֘oཻn+$ym:]5h&p8B@3&D9 wr _=Xjw+3+@5!m}ۦCd[ǡ %�4+ OvMjwkgdާÍSs-~�9w~ ,ܜOR l<pCZ?i퇎k 9Rii7~D{wxx�8}CYzs~ A`G<޿l!Gu؆:^1iȘV2 h (m<tRMAzױe텟} ~;3 { җiz|t)$qR@,s1-zw+ lyۿ>\5%7M~.߀f|O Ӹ07ޔȏn%B} XTegܚ^r=CS85lg" 9ft p5`^[K-6M-I#I2$\Wt !@lXlu3С8 z :DCB0X{{-4{hn9(+W ~*0 D�;^Zdz{h:22&dþt�@2� 0M7ظiC''4"D麏g7I&u�Pa}J*PX/G@%(6HI�l?@AK2-3d փ&-s&8WI4D0[ϋ݀)ZR�D ` BAF8"0LBb 4AHCEx&!l.-e[0Ny=[fK߈P9@AWCd1I` H�Bu(B+EJ!9'#hwUlSHKlΝq]gItmƩHT'[�:Q]206 xXg٭NV#(nly����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/btn_repeat_on.png��������������������������������������������0000644�0002322�0002322�00000002425�12061426046�023607� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR�����������IDATx^[hUmn;{fĴ R[ F*ؗ">"} ⃗')C,ƶm4ls;ɬm<ggv|;gK) QA_0�@L0p5R`:5aL`Bp,'/JB<l,։f$dG? '�`+<f -yxaakLUZY1iKKG}|(fvo"Dv |sF+Yf'Juop|h%z(&+ၝ1-3ͪX%uwQDHr̫F$,,'<s|g^< *oT;յT.m6ҽ1=5c=I13l" #^ M <mӘP?3Ae#Ƕ=N=%0mqdڤ50s{LXj nH,GÔ*0tp8|03RxW '5waB#`{uYsbPlHKtxpܹvΛe@'B}E1\8eTvD! FVfraBƊ *"tIlx~4^A蝧"f8DN؊/AC:y';Bu& ?SsG%8"[JX݅/XKgHm!b ߹+Y8R}^v&:@ľ jźU-LDX ŷ?'|B6(YGR,:DоuoEy^L~Zm} +pe[K/p8!$,|r̐m溍8ݳYyM}rް-ӽܝ^5~ IDR@WΟ- P84  `\{ J)PݔX@[Mzmqn)("RDyit3P, 3TP70'w8?T퀍PNotCoF|M<.<QGP�\h~p%3(X M#P L*l={s?}1,Ҷ^{]W'B L r  W"zD `QXp*hռ|/81Si�R]ʩmqʿkpo_v͂Ϣ:T�Be(y����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/btn_shuffle_off.png������������������������������������������0000644�0002322�0002322�00000003133�12061426046�024116� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���������U\��"IDATx^{lT}n]ݾ-*lP,"@|ڲĈè呆@SɏFX#R ic{w%KH$̽3gΙ9ga(DFHiii˲Paxua> qFF�,PϮ,<Hffh4BQ&### yyyYIII Gsssfat H981LTs|||&$O MܼiK9<gNAأd ײ2uLLLvQSI DJ#Kn$ 3=ՔJ ` deeva'''ODq^fz[vР3 yͧivjj*2& ;vx٠i:v2S(*)mY ˰$)))iNx v%̝;A NȮ`E6yNc5FU[tߞz悾Z&b "m!8SZZr\099*Js5kV'^`XZ,E?Wp�n/+q\?0FM8$G dg޽/"J2*כu7Mxoii9|R#ig9 ctlݸiC࣪m7[[[cnΕo6;Ϟm ;Ű QoZ֎�yhnj++*,ϓ_~=C߷l~N>c^&c~ڍkj]j4A)whpx�VՕB*J-围mgV,o$vm1[`Nsb B7P!Ǵ0CAM3Qsx܄:l}u%P4 ;ČONg=`2M{{{÷dezz1)) PA3n^M::ږx===6ʶyC#)"<ӠCd?T+_tNY%_$''bc_D.;;sQJJJl1}ÆNohg!C!IO(HLѼhe*)/y"l'k׮&3( }hcQ@.4S:Swbbb|\UO\~8k}ӠNf^'O"<^a8X&#A.RP}Vq9.#LxO4Z:ZX(3NUI0I7NON_(t6,ZTrWa DR*%qzՊ+Tì|Cb|vgmH"qq'-+]ӌ3+�{r;ٶ e ;}0kVAӺ75N/N# mu|要=0&:g >OJT.\ڎ:~ӄ@L < A4P@�p:%WVܫ `5,RCX@F1`"4@ sEӰ{*D:俅 z@@ ƿz$j%����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/play.png�����������������������������������������������������0000644�0002322�0002322�00000005222�12061426046�021733� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���(���(���m�� YIDATx^}pVDt FPwٺVevתPHX%|@B4` P IXuZ]Ԇ4@>xߙ2\g<}>wc�TdOx�65z6SAi�'0>`?!:e>dnld q 2$y$wݧSlk�+6jm׷w�gL<?8Ƭ _bp .ӂvD+i�`z`_jFɞG3=`fu߹l�0 O0jͼ뒩 x]mM7 m G _w?/YRf՞q\$bdE7^X3]k"e0 ff|3>p7% �dwXfU}0_[}eTްd@{onվ\rϽ|u�ƭAZ.#ɪv_YUՑUU1󵺩DsKSe뛜X~k{eV9-s}]WX'|qƫ3*wW~߿4ط%j/^8;\6mׅ>\dfeV<꯭v6f9W\-nk溝G}ͤH+5ʉ'8zjCdT[�!VX1r‰_U �ÿXXښٰ;"&H5}Z2q{��BS$<G)3p1 ]7G܄$ꦏr uDkȕ J҂y~0{R7vrV:oF=8໿4XH0OʃPrwKnN>1zxEٖ-%oi zC[w�81|nrw\M,}&�FId߷!MɧщydU> ҭH.xC!ۄUo/19𳇸;m3 $<I NZ(MG1(F�r2 "�p f=7s6I榫7?͞ }ԁSȜ ȹti&d 9@Q@DI&Yfo::]w3{`BrÈhD.f,I!`“t1(fж8G)5�wDʹ>F)c@8 5!!E]Q96ɼ]WR.C`X02"a@zE/vA5Gu5c`GT� L P],`�lfaĎqfVrũCza1 "x�}jfHB@'n�a�Eca �x y�wl9׌� w 1|A?4�\d>4[lxo5<2 |; ?os@XnAb0pr, GS\ឹ3�ʼ+;G;"涝7w)rVs2Fl�ޱn2F NByO英! \ �Y̶Ya�{4>BʒJbbb <:kbB�w5ǵRT2gV#>k <A [2jq.,y΃.} nj8 (:Y Pf�ˤ#X8G0[+죂_Y<1ҜS(�~ $Ht*ފԔ⊽K*WLYZ1 x#72畬J_9D!yI95QkJ=ǩDa $/I]\~llQyGjQy>@c3+T ) WD-[..oM.._2�$/ L* O\<m)VO#J QO_J҂RRz_=0x4iQpқ}oF/,,)<X,G>,]_e9`@#=RzAzlv ے9�$,ro^fJFN҂WvTPk!QRM'*߸@biD/An+(N-X͏rZRʃI+|uDj+EE_Ta2?IV?1珙F$]67)d'?),`0ku+}+|3fL02fzư8Pϟ{/E%?Cbl0Ӣoُ�gVG�Hl_c<S28)ԅY'+yCqΦgpNj!Rs_;aexG#OK#c<~b=`KiX+ zþ6\ 6a[͹= .濗_EEF|6N=fvoBӂ HmJh;rbu1�s_濊/0 xo= lҽf6@?cgqg (?����IENDB`������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/pause-active.png���������������������������������������������0000644�0002322�0002322�00000011231�12061426046�023351� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���<���<���:r��`IDATx^y\y=3Օ hE,p9&p!5D"#fvI, 0p],fǬ_뢍]lHf>{nWuu1SH!.zS>:2�xJ5˫(UHu^{ҘT]5m)5%Qu>B_SӦj%C>}xߢ/M4HL/C_eSG;ؼRݭLEA*jI5IJ$h`fb=TEK$ТuɏIݏMQ*Kk*lST.ńr-EBEd R.搄BƨXFղJh D5WŜOV1YӸ%z&>+u\ECZH40RmdU& ?%tr?F }]#L54飯v4nc{/KAuiijo#ۣn^gJV/<tN6>%1Kr'pC3ă47ղ3ƽ}n߃Iòu`'P*:#6-om=|{,ڟyU8~$>HcС@S=@%2xYǸmsCimzԢ�Ic ء$mwŒE8yAo|_}M&FGZlGQ3=OZ;yv5%2ԭ:1a$5R6x-5O.~R'7e _7=SG}ůlzz %@C0vW?{\s-6:ޙSza]hJ~p_Jݡ;%'}G _c}dw,x=y=͔/o =V�St>zXmJkЧOi5]O?=NWm,|=<T-tm-==Z=3`+:wL4E.T"mAe:n; bupR= @,46YAJb[urt{\~ e1� M9 H0>:{h-�ϟ}.RSDaa�vPObݫҥK%>8[[iUFvSKNgĵ E�/Km ףO=ƺ1]RJhBF<;lj3FϹUW-phsW Mr�vKwd32Ϟt(�r?k>ȷUOF� zsRec_a ;u6938_oS⿋=CW/k~}㨹^3zs۪ѳoKok�,;ijKKK޿_SXٯ Rb|\) :O5vmnbdyi4)TDBQP]r|Q?1TCBr54K\OW^h߬T*RQ ˋw-YZ@='B_ , WG撈X $>%p +H�|Z,�KN>=7 ;Վ#vՎ*w_C8E `|Yg4GLSgz2{K3ezb*_SOS8Vk�#[Iޅ.-Hi;R:b or* 8VSrISQIE-MOQEelHU3"))hZ~J-x77$"6 " dls!%H  )<&ƬZT#/+RgJG}ؼ p1tj A&RsG *PDD4%}-33^I%PuWMS^#0+>I7ӪfER}(gPng`%�M�l@#<[_FH!e)幵ߚW+|{{t|W荵FVr dYF�@.1aZڪw˵W",EHQ+&~@YrHԈFҀ�4| X�^D$ uDk#ȄT:j0 H&d$$H_OEJE^7>�j1z}bu|*U*F*"&xyʿSD(kڅB`)u,Ѿ'kTkS*ID`j%jARU DFKGȷ~*eS1@J-udYMMeʥS@"jWYEqR�H FTl ~H~JDRR)# ESzbF,Aߘ( �Mi�)}jDPKYxVIEAQh$$ } Hԃ-$6"0˂,D}CJj v[晨P6!eұȀ>#` W>lDw&$ʢ&�A`}Tzu@> ʤS?>W:h@@.=PA�>2 ٨/k�[p'@@R�(Q  M۠u52);Z dt ЍF4 U /´#RnI&4#^<hz#9HW:*" b)F~)Kg@3�Jٔ37 xcz `",T`sʫH#Q 6A#v #e�JeRzF@AA&Hy5JjЈϢ7 ]wD}64l^8 !Dhm"^27[2zڽ*w A�7MW r@@%.+Cd&#a3uQ3oc;j?1AZzRU 0hш>fH , M(;?(nSlEt"z0!h`cr!ˮ8 �/,v A ) p{ݦ,|'T6 ` H`�0Ҁ@�*QZ%0?)Q_}$,B/F`:&{]^+3&ғTED3C 00Q!�BAdlȰSfs_{@jim;��:T<|䴫}uFlRJD|H;YA&e>I zw6GH@ixHl@#vؤYC< wV̛j@R+r 8 , Q]O}+OgWzZ6#A2` -rσ󀭔m`I3X>*N!\XA+�#\]?3nW<{;YSw9!tհ\Ho ?ي 'GÐ'M:t⌛8}ͰS;zyO 8+O'h}y W ͠! JWBm.KgO4d4V. PDv$�:N+(�` Oa]e, B0xzɗl|NƊk#&ΤHVQX w S^_0!㧲r.+|5vj[v],� \wYTP +|Z3�hfb]]4dJX]՘I7�0' [yJ8iEe+DM#vMosѲW?˲K&BTnPeuwl5<>|jN?ׯU=u>|v?8T!M)mCOJ݈ti[('? ;CJWN:<ڽ6y}4|Ȋbp\Hk_\ >~JC� |1/vBwv#vS[vK`UE w&+vw HI,n`k/\3x\탺^{KI<qW�NV;2q +IogBO8%## xX%nz}E;{&ɣ{.?!'? 30`74hOfZ_Ï?n0* !/!opqεF}gljp㼜Ŋy2{'S n)MF�!ʫfm鬁ה} Ȑ6O9o^OWOk<m#S0 Wׁo.5-OQ m;l6� A`)2'ťkvžQ�;NNg3)DlG(D�2b 0!0@@@w*k߼ۧ^+ǻ&2a*+A}M)q :0IJ(5~ BP P Jb Ki}s7]¦=nMQD �A(~ZPeȽJ/g g ņq:����IENDB`�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/iViewer/stop-active.png����������������������������������������������0000644�0002322�0002322�00000011411�12061426046�023221� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PNG  ��� IHDR���<���<���:r��IDATx^͛yUՙsň+2BQ;ڍYvlmMѴ_l4qFDD8ujc:hbt�8L81Ey^޻O)$oNUwkp^.ZPbby!-왤!H!y7v{֥f zCbVɋ%"$++0rXovZxrLɔDGnP6צX( O 0I(MS<M݃%W;.I$TL"K_݊>)mY#o.yÏ`gi' %VS̘ $9nTH3UY\L/pA*$*P$!P\@HCv7oR%lY9şFM{8ӌLa5c)7vF\2 1Z$mk?+Gu>J< !2V! rD�RItF{>|LO$~`w�} ڌc-/ok,nkS!V _Ƚ](k{a}-}I: ԀTy9>;ǚGbv\!wN"0yZx[%Xڪr<l*;i4gÇ"%qp >a?YO;/$9ь ;p Oay un5^oIm6=V^Ŷ=wyr=ϏE=pft"K�jCBRVwӨc8}lv(~iX0n.)LVx:سm箯5E8XquYa! ?H&cCdz8tA8vb {CgwOJvW槤q>iV\Ksm|cS.zjЅOOl.x!{e_NGv2a>eRc^|8wYi3#y9x3d ]! _DwCnz :vȼ�D1FnV0KbB$l{m,j�DmV V_4�-({>+0B*%iQ<m{Ye�Uj\} A3e ߚU#ǟ ٜv~L&H:?ׁիWWkU"s&K<7[lf�,S$}Xњ =|1 #7޴+g[J2Р,۴+xrmwQėysਥd/I"�$ƙ �7j>8ޛ7];Ios5_1h/6 }{fݳa̻;x{|}1YqEYlvRcccҹS6w/H ]]+O%xѼ@KK myB$IH\H !LBI�iiG=0h7>hb8IzH$EOZ7r]3i*O I7QfYP+=R#f "B,$3Aa dXy:h=$CHG0 ްb.gicvpG5?Gج)QtpYDH!C6)d2d�AݬQJIg_¸' no)A.gI!y8#yZ.|Y(Eue$4@'dQ4d#$jjSkDS sT0c'>&N7#*EKגB!rm,9h"i6#K" 3" BHld:L&T];b%~7%e@/'E�YH֠(s{#Z$4DZg HĐF%Y30DNrDF J2P8+'B-IwP{OF{J�m@H�"b%Y 1jTS*�= LܤIHߍmm_13En̗QڟɌ x' 03(H �X9TkUn%?\ˀSvJ~`\@s&}dRN fD Vv iܑTUY!5LF/!mGDJ$vX?_N{ٸF16Jl6j"h-@.' &Qj*  !@;ah5M'\i,� )i/[6L~ 03X09 IørJ6jBV gRAՈo$˽8>mEfqƂ<$#MEr<!i+5Pۘ :w t/@!}Lh3l68 &pw`SA4)ˑOm�2:\8X]�P�> L! •3$<ib. qWZZy�)+ +F>aȈ, rU.KOGPu\;;$ �)(0 mAE!T ǽ \-Uy6H#s;q!0XH@:DT:Ahϲ$:!OAtp!G P9T+@ [`t },GH^&˵Q/Xj!$@&:ݐ"Ēcb0"ڏŢ VXwTb( A#"Ǹ:рԟ2^4ڃ' ȨR|U* os�$v`̋�'h�|ZXWݶhm,�@͔#*^lSNPwuMB1(21K@6=;'E3Hճ/F}':*B^ vD U;+)n(B*_&gG()"*|&s4ErYYjQثX;w<� .$К, !UaʼngladuSO DZmu* Y"oU .+ eO@!##WPZ:a!C`fu[TUjnVsKYse�(#LiHx(FH}L\*H@"*ݫd #TUk'1A,~]'tGIoĆ` ҵ"(4t(['kSYxAdfOd@^fT31תL{t0�-`�$th�LZBK4)cZ]bQt(f*Tc%BBf2Jkh�VfvhMM0GЇu7NoAM`1HK/k3/d~jq =Bڱ }z~f(6~9SY;o}ϝf2qPlHX`F �'\370pl kes{SÀPKߟ^ߊ V/zT}ΙҧϘw9{ʦcx/ }ξپc&S0*"dP}`$f3ǯx^63e{d/@їZ;08@ 3cNM `e719] ?�!�s6y^egd/3=S@" H\0uKQ Zƕ S/t@NYcDMͫ3BZ]}`ȁ I- {T�"*�xsn̒ !&y[$?Gǩؼб+<T. >Kjլfwq-�]<5׍ "w! D X#}{Wnkk\444>;_T>[nK޾eZk&Zz_0ճ.%E: Y~K2t'2}ΝJgͅWQٓ-J*-N?Ԇ0&7_|^#'4Z6,H{-!Rw3dR+_aR 5-7]KYj9bBLGlwT�G`7nCճ/%<9 t&b_@oA:bW䩇c&iq)orϺѤCF o&P, w^#. WKA*Os%`H FJuBsOšK;' qC}1(AA wwnpӪ3rzx.'{qc,bLJ#EzqM[wnq uÀH{cd)H@h=oI~p,;޾/O8ɕ#\WqU@ Z IjejOKQpn4MR+%RL `5b}g3 ov\ǘow 7`bƱ`hoR!!L�!a(+K!�L0(6Y 0OBY}B%}ی;-YzSob I`# *u0/da\V0G&!RE&^CZ< 3/%ױ3v=rYVbI'' R$LP d%hL[#If3xtz@/]����IENDB`�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/aliases-server-pix-viewer.cfg����������������������������������������0000644�0002322�0002322�00000005275�12664332725�024372� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Key aliases for default picture viewer handling in server mode % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % In inherited modes configuration files it needs to load: %(Init)=\ % Include($(CfgDir)/Utils/aliases-server.cfg);\ % Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ [Protocol]=Server % % In inherited modes: % - APP_IS_RUN macro must define $(app_run) variable (1== app is run, 0 == app does not run) % - it needs to define $(app_manage_mode) variable % [Mode]=default_pixviewer_init (EnterMode)=\ Set(popup,show,Loading...);\ Make(var,app_run,by_value,0);\ Make(var,open_file,by_value,);\ Macro(APP_IS_RUN);\ Macro(APP_MANAGE,expr 1 - $(app_run));\ Macro(APP_CHOOSE_FILE,echo $(app_run));\ Set(popup,hide); APP_CHOOSE_FILE=\ Make(mode,simple_file_manager); APP_MANAGE=\ Make(mode,$(app_manage_mode)); [ModeEnd] % Variable $(open_file) should be defined in simple_file_manager mode [Mode]=default_pixviewer (EnterMode)=\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(APP_SETUP);\ Macro(APP_START_IF);\ Macro(APP_RAISE);\ Macro(SETUP_DEFAULT_PIXVIEWER);\ Macro(APP_MENU); SETUP_DEFAULT_PIXVIEWER=\ Set(layout,default);\ Set(icons,$(app_name),\ 1,folder,\ 2,plus,\ 3,refresh,\ 4,rewind,\ 5,fit,\ 6,forward,\ 7,prev,\ 8,minus,\ 9,next,\ *,question,\ 0,fullscreen,\ #,no);\ Set(hints,\ 1,file manager,\ 2,zoom in,\ 3,rotate,\ 4,previous,\ 5,fit,\ 6,next,\ 7,first,\ 8,zoom out,\ 9,last,\ *,help (press twice),\ 0,fullscreen,\ #,quit viewer);\ Set(status,$(app_name));\ Set(title,); % Default menu APP_MENU=\ Set(menu,replace,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Back=Set(text,close);\ Macro(APP_MENU); Back($$)=Set(list,close);\ Macro(APP_MENU); 1=Macro(PIX_FILE_BROWSER) 2=Macro(PIX_ZOOM_IN) 3=Macro(PIX_ROTATE) 4=Macro(PIX_PREV); 5=Macro(PIX_FIT); 6=Macro(PIX_NEXT); 7=Macro(PIX_FIRST) 8=Macro(PIX_ZOOM_OUT) 9=Macro(PIX_LAST) * *=Set(text,replace,Help,1 File Browser\n2 Zoom In\n3 Rotate\n4 Previous\n5 Fit\n6 Next\n7 First\n8 Zoom Out\n9 Last\n ** Help\n0 Fullscreen\n# Quit $(app_name)\n); 0=Macro(APP_FULLSCREEN) #=Macro(APP_QUIT);\ Make(mode,simple_file_manager); % Android support VOL-=Macro(PIX_PREV); VOL+=Macro(PIX_NEXT); SlideLeft =Macro(PIX_NEXT); SlideRight=Macro(PIX_PREV); SlideDown =Macro(PIX_ZOOM_OUT); SlideUp =Macro(PIX_ZOOM_IN); % Rarely used Cancel=\ Macro(APP_QUIT);\ Make(exit); PIX_FILE_BROWSER=\ Macro(APP_QUIT);\ Make(mode,simple_file_manager); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/run-or-switch-to.sh��������������������������������������������������0000755�0002322�0002322�00000001634�12664332725�022362� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh if [ "x$1" = "x" ]; then exit 0; else if [ "x$1" = "x-switch" ]; then if [ "x$2" = "x" ]; then exit 0; fi; APP=$2 RUN=NO else APP=$1 RUN=YES fi; fi; WMCTRL=`which wmctrl 2> /dev/null` if [ "x$WMCTRL" = "x" ]; then # wmctrl not installed if [ "x$RUN" = "xYES" ]; then killall $APP $APP 2> /dev/null & exit 0; fi; fi; IAM=`id -u` IS_RUN=`pgrep -u $IAM $APP|head -1` if [ "x$IS_RUN" = "x" ]; then # app not run yet if [ "x$RUN" = "xYES" ]; then $APP 2> /dev/null & exit 0; fi; else if [ "x$WMCTRL" != "x" ]; then WIN_ID=`wmctrl -l -p|grep $IS_RUN|cut -d ' ' -f 1` if [ "x$WIN_ID" = "x" ]; then # can not find app window, start it again if [ "x$RUN" = "xYES" ]; then killall $APP $APP 2> /dev/null & fi; exit 0; fi; wmctrl -i -a $WIN_ID fi; fi; ����������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/all-in-1.py����������������������������������������������������������0000755�0002322�0002322�00000011144�12123520167�020533� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python # # Utility script for # anyRemote - a bluetooth remote for your PC. # # Copyright (C) 2007-2013 Mikhail Fedotov <anyremote@mail.ru> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # import os import re import sys import threading class AllInOne: def __init__(self, dirToParse): self.rdr = CfgFileReader(dirToParse+os.sep+'Server-mode'); self.rdr.run() class CfgFileReader(threading.Thread): def __init__(self, cfgDir): threading.Thread.__init__(self) self.cfgDir = cfgDir def run(self): cfg = os.environ.get("HOME")+os.sep+'.anyRemote'+os.sep+'AllInOneTmp.cfg' f=open(cfg, 'w') if f: f.write('[Protocol]=Server\n') f.write('[Mode]=_ALL_IN_ONE_\n') self.regExpIcon = re.compile("^[^a-zA-Z0-9]*GuiAppIcon") self.regExpExec = re.compile("^[^a-zA-Z0-9]*GuiAppBinary") self.regExpAll1 = re.compile(".*ALL_IN_ONE.*") fillCMD='FILL_LIST=Set(iconlist,replace,Applications'; try: files = os.listdir(self.cfgDir) except OSError: print "Error: directory not exists "+self.cfgDir f.close() return files.sort() i = 0; iconsList = [] for cfgFile in files: icon = self.processOneFile(self.cfgDir + os.sep + cfgFile) if icon != []: fillCMD = fillCMD+','+icon[0]+':'+icon[1] if icon[0] not in iconsList: i2 = i + 1 f.write('UPLOAD'+str(i)+'=Get(is_exists,16,'+icon[0]+');\n') f.write('IconNotExists('+icon[0]+')=Set(text,replace,SAME,uploading '+icon[0]+'\\n);ExecAndSet(image,icon,echo \'F=`find /usr/share/icons -name '+icon[0]+'.png|grep 16|head -1`;if [ "x$F" == "x" ]; then F=`find /usr/share/pixmaps -name "'+icon[0]+'.*"|head -1`;F2=/tmp/'+icon[0]+'.png;cat $F|convert - -resize 16x16 -depth 8 $F2; F=$F2; fi;echo "'+icon[0]+',$F"\'|bash -f -s);Macro(UPLOAD'+str(i2)+');\n') f.write('IconExists('+icon[0]+')=Set(text,replace,SAME,'+icon[0]+' OK);Macro(UPLOAD'+str(i2)+');\n') i = i2 iconsList.append(icon[0]) f.write('UPLOAD'+str(i)+'=Macro(FILL_LIST);\n') f.write('[ModeEnd]\n') f.write(fillCMD+');Macro(REGEN_MENU);\n') f.write('[End]\n') f.close() def processOneFile(self,cfgFile): ret = [] if not os.path.isfile(cfgFile): return ret fd = open(cfgFile,'r') n = os.path.basename(cfgFile) n = n[:len(n)-4] if fd and n != '' and n != 'all-in-one': i = None a = None e = None for line in fd: if i == None and self.regExpIcon.match(line): p = re.search("^[^a-zA-Z0-9]*GuiAppIcon[^=]*=(.+)\.(.+)$", line) if p != None: i = p.group(1) if e == None and self.regExpExec.match(line): x = re.search("^[^a-zA-Z0-9]*GuiAppBinary[^=]*=(.+)$", line) if x != None: e = x.group(1) if a == None and self.regExpAll1.match(line): a = 1 if a == 1 and i != None and e != None: break ex = 1 if e != None: cnt = e.count(' ') if cnt > 0: # treat this like a command to execute e = getResult(e, 'util') isInst = isInstalled(e) if isInst == "NOK": #print 'Skip ',e ex = 0 if a == 1 and i != None and ex == 1: ret = [i,n] if fd: fd.close() return ret def isInstalled(app): dirs = os.getenv('PATH').split(':') for d in dirs: if os.path.exists(d+os.sep+app): return 'OK' return 'NOK' def getResult(cmd, suffix): toFile = os.environ.get("HOME") + os.sep + '.anyRemote' + os.sep + 'anyremote-' + suffix + '.tmp' os.system(cmd + '> ' + toFile) line = getLineTmpFile(toFile) return line.replace('\n','') def getLineTmpFile(toFile): fd = open(toFile,'r') ln = '' if fd: ln=fd.readline() fd.close() return ln def main(): a = AllInOne(sys.argv[1]) return 0 if __name__ == "__main__": main() ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/pulse-audio-ctl.sh���������������������������������������������������0000755�0002322�0002322�00000002457�12061426046�022223� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # Must be called from anyremote configuration file as $(CfgDir)/Utils/pulse-audio-ctl.sh up|down|mute|set|get <sink name> [<volume>] # if [ "x$1" = "xup" ]; then HEXVOL=`pacmd dump | grep "set-sink-volume $2" | cut -d " " -f 3` VOL=`printf "%d" $HEXVOL` # about 5% NEWVOL=`expr $VOL + 3270` if [ $(($NEWVOL)) -gt $((0x10000)) ] then NEWVOL=65536 fi pactl set-sink-volume $2 $NEWVOL fi if [ "x$1" = "xdown" ]; then HEXVOL=`pacmd dump | grep "set-sink-volume $2" | cut -d " " -f 3` VOL=`printf "%d" $HEXVOL` # about 5% NEWVOL=`expr $VOL - 3270` if [ $(($NEWVOL)) -lt $((0x00000)) ] then NEWVOL=0 fi pactl set-sink-volume $2 $NEWVOL fi if [ "x$1" = "xmute" ]; then A=`pacmd dump | grep "set-sink-mute $2" | cut -d " " -f 3` if [ $A = "no" ] then pactl set-sink-mute $2 yes else pactl set-sink-mute $2 no fi fi if [ "x$1" = "xset" ]; then VOL=`echo $3|tr -d '%'` NEWVOL=`echo "$VOL*65536/100"|bc` if [ $(($NEWVOL)) -lt $((0x00000)) ] then NEWVOL=0 fi if [ $(($NEWVOL)) -gt $((0x10000)) ] then NEWVOL=65536 fi pactl set-sink-volume $2 $NEWVOL; fi; if [ "x$1" = "xget" ]; then HEXVOL=`pacmd dump | grep "set-sink-volume $2" | cut -d " " -f 3` VOL65=`printf "%d" $HEXVOL` VOL=`echo "$VOL65*100/65536"|bc` echo $VOL fi; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/generate_cover.sh����������������������������������������������������0000755�0002322�0002322�00000002323�12130533121�022162� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # Params # 1. full media file path # 2. dir to save # 3. number of image # 4. scale to size # 5. optional -force if [ "x$1" = "x" ] || [ "x$2" = "x" ] || [ "x$3" = "x" ] || [ "x$4" = "x" ]; then exit 1; fi if [ ! -d "$2" ]; then mkdir "$2"; fi; if [ -d "$1" ]; then DIR="$1"; else DIR=`dirname "$1"`; fi; # do not search in $HOME or / (it can be wrong input) if [ "x$DIR" = "x$HOME" ] || [ "x$DIR" = "x/" ]; then exit 1; fi IMAGE=`find "$DIR" -maxdepth 2 -type f -name "*[jpg|JPG|png|PNG]"|head -$3|tail -1` if [ "x$IMAGE" = "x" ]; then # use default CONF_FIR=`dirname $0` DEF_COVER="$2"/default"-${4}.png" convert -resize $4x$4 -depth 8 -background transparent $CONF_FIR/../Icons/common/cover-audio.png $DEF_COVER 2> /dev/null; if [ -s $DEF_COVER ]; then echo "$2"/default"-${4}.png" else exit 1; fi; else IFILE=`echo "$IMAGE"|md5sum|cut -f 1 -d ' '`"-${4}.png" if [ "x$5" = "x-force" ]; then rm -f "$2"/"$IFILE" fi if [ ! -f "$2"/"$IFILE" ]; then convert -resize $4x$4 -depth 8 -background transparent "$IMAGE" "$2"/"$IFILE" 2> /dev/null; fi; if [ -s "$2"/"$IFILE" ]; then echo "$2"/"$IFILE" else exit 1; fi; fi exit 0; �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/aliases-at.cfg�������������������������������������������������������0000644�0002322�0002322�00000011703�13126472435�021361� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Key aliases for AT mode % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [Protocol]=AT % not the only variant - also possible to use stdin, ilirc, IR or cable connection %CHECK_RFCOMM_DEVICE=Exec(DD=`echo $(Device)|cut -f 1 -d ':'`;\ % if [ "x$DD" != "xrfcomm" ]; then \ % $(CfgDir)/Utils/message.sh "ERROR: It needs to set Device parameter properly to /dev/rfcomm* !"; \ fi); % Motorola - Red and Green buttons S=Macro(Answer); E=Macro(Cancel); % SE's - SwitchOff and C buttons c=Macro(Answer); L=Macro(Cancel); p=Macro(Cancel); % Sagem - Red and Green buttons 83=Macro(Answer); 69=Macro(Cancel); % Sockets & Sagem 42=Macro(*) 35=Macro(#) 48=Macro(0) 49=Macro(1) 50=Macro(2) 51=Macro(3) 52=Macro(4) 53=Macro(5) 54=Macro(6) 55=Macro(7) 56=Macro(8) 57=Macro(9) % Vol+/- for Motorola U=Macro(3) D=Macro(1) % Aliases for AverMedia IR remote KEY_VOLUMEDOWN=Macro(1) KEY_MIN_INTERESTING=Macro(2) KEY_VOLUMEUP=Macro(3) KEY_CHANNELUP=Macro(9) KEY_CHANNELDOWN=Macro(7) KEY_ZOOM=Macro(5) KEY_RED=Macro(4) KEY_PLAY=Macro(5) KEY_YELLOW=Macro(6) KEY_GREEN=Macro(7) KEY_STOP=Macro(8) KEY_BLUE=Macro(9) KEY_TEXT=Macro(*) KEY_PAUSE=Macro(0) KEY_POWER=Macro(#) SHOW_HELP=\ Exec(notify-send -t 5000 "`cat $(TmpDir)/anyrem.hlp`"); SHOW_MSG=\ Exec(notify-send -t 100 "$(message)"); % SETUP_PACTL will be executed only if SETUP_AMIXER not executed SETUP_DEFAULT_MIXER=\ Make(var,audio_setup,P=`pacmd dump 2> /dev/null | grep set-sink-volume|wc -l`; if [ "x$P" = "x0" ]; then echo SETUP_AMIXER; else echo SETUP_PACTL; fi);\ Macro($(audio_setup)); SETUP_AMIXER=\ Make(var,default_mixer_up,by_value,amixer sset Master,0 5%+ -q);\ Make(var,default_mixer_down,by_value,amixer sset Master,0 5%- -q);\ Make(var,default_mixer_mute,by_value,amixer sset Master,0 toggle -q);\ Make(var,default_mixer_get,by_value,amixer sget Master,0|grep '\['|head -1|cut -f 2 -d "["|cut -f 1 -d "]"|sed "s/%//");\ Make(var,default_mixer_set,by_value,amixer -q sset Master,0 ); SETUP_PACTL=\ Make(var,default_sink,LANG=C;pacmd dump|grep set-default-sink|cut -f 2 -d ' '|tr -d ' ');\ Make(var,default_mixer_down,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh down $(default_sink));\ Make(var,default_mixer_up,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh up $(default_sink));\ Make(var,default_mixer_mute,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh mute $(default_sink));\ Make(var,default_mixer_get,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh get $(default_sink));\ Make(var,default_mixer_set,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh set $(default_sink) ); DEFAULT_VOLUME_UP=\ Exec($(default_mixer_up)); DEFAULT_VOLUME_DOWN=\ Exec($(default_mixer_down)); DEFAULT_TOGGLE_MUTE=\ Exec($(default_mixer_mute)); % default_mixer_value in range 1-100 DEFAULT_VOLUME_GET=\ Make(var,default_mixer_value,$(default_mixer_get)); DEFAULT_VOLUME_SET=\ Exec($(default_mixer_set) $(default_mixer_value)); % set $(kde4_app) before use TEST_KDE4_APP=\ Exec(V=`$(kde4_app) -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; \ if [ "x$V" = "x3" ]; then \ $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE4"; \ fi); SETUP_DEFAULT_POWER_MANAGEMENT=\ Make(var,default_switch_off,by_value,poweroff);\ Make(var,default_suspend,by_value,dbus-send --system --print-reply --dest="org.freedesktop.login1" /org/freedesktop/login1 org.freedesktop.login1.Manager.Suspend true);\ Make(var,default_hibernate,by_value,dbus-send --system --print-reply --dest="org.freedesktop.login1" /org/freedesktop/login1 org.freedesktop.login1.Manager.Hibernate true); % Use sleep 3 to get some time to receive disconnect response from client DEFAULT_PC_SWITCHOFF=\ Set(disconnect);\ Exec(sleep 3;$(default_switch_off)); DEFAULT_PC_SUSPEND=\ Set(disconnect);\ Exec(sleep 3;$(default_suspend)); DEFAULT_PC_HIBERNATE=\ Set(disconnect);\ Exec(sleep 3;$(default_hibernate)); [Mode]=default_player_at (EnterMode)=\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(RUN_IF_NEED); Answer=\ Make(disconnect); Cancel=\ Macro(QUIT);\ Make(exit); 1=Macro(DEFAULT_VOLUME_DOWN); 2=Macro(DEFAULT_TOGGLE_MUTE); 3=Macro(DEFAULT_VOLUME_UP); 4=Macro(RWD); 5=Macro(PLAY); 6=Macro(FF); 7=Macro(PREV); 8=Macro(STOP); 9=Macro(NEXT); * *=Macro(DEFAULT_HELP); * #=Macro(RUN_OR_QUIT); * 0=Macro(DEFAULT_PC_SUSPEND) * 8=Macro(DEFAULT_PC_SWITCHOFF) * 9=Macro(DEFAULT_PC_HIBERNATE) 0=Macro(PAUSE); #=Macro(QUIT); DEFAULT_HELP=\ Exec(notify-send -t 5000 "1 Vol- 2 Mute 3 Vol+ 4 Rew 5 Play 6 FF 7 Prew 8 Stop 9 Next * * Help 0 Pause # Quit * 0 Suspend * 8 Switch Off * 9 Hibernate"); DEFAULT_HELP_NO_FF_RWD=\ Exec(notify-send -t 5000 "1 Vol- 2 Mute 3 Vol+ 4 Not used 5 Play 6 Not used 7 Prew 8 Stop 9 Next * * Help 0 Pause # Quit * 0 Suspend * 8 Switch Off * 9 Hibernate"); InCall($$)=\ Macro(PAUSE); EndCall($$)=\ Macro(PLAY); [ModeEnd] [End] �������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/aliases-server-fbrowser-v3i.cfg��������������������������������������0000644�0002322�0002322�00000004247�12664332725�024621� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Key aliases for file browser (v3i) in server mode % % v3i = v3 with icons % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % FBROWSER v.3i [Protocol]=Server FBROWSER_IC_INIT=\ Make(var,fbrowser_dir,cat $(TmpDir)/ar_storedir.tmp); FBROWSER_IC_EXIT=\ Exec(echo "$(fbrowser_dir)" > $(TmpDir)/ar_storedir.tmp); FBROWSER_IC_FILL_LIST=\ Set(popup,show,Please wait);\ Set(iconlist,replace,Files,folder:..);\ ExecAndSet(iconlist,add,SAME,\ cd "$(fbrowser_dir)";\ ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/'| xargs -d '\n' -i echo "folder:"{});\ ExecAndSet(iconlist,add,SAME,\ cd "$(fbrowser_dir)";\ ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/'| xargs -d '\n' -i echo "file:"{});\ Set(popup,hide); FBROWSER_IC_GO_TO=\ Make(var,goto,by_value,$(Param));\ Make(var,fbrowser_dir,cd "$(fbrowser_dir)";if [ -d "$(goto)" ]; then cd "$(goto)";fi;pwd);\ Macro(FBROWSER_IC_FILL_LIST); FBROWSER_IC_GO_HOME=\ Make(var,fbrowser_dir,cd;pwd);\ Macro(FBROWSER_IC_FILL_LIST); %Push($$)=\ % Macro(FBROWSER_IC_GO_TO); Push($$)=\ Macro(Open,cd "$(fbrowser_dir)";if [ -f "$(Param)" ]; then echo 0; else echo 1; fi;);\ Macro(FBROWSER_IC_GO_TO, cd "$(fbrowser_dir)";if [ -d "$(Param)" ]; then echo 0; else echo 1; fi;); % % It needs to define $(app_manage_mode) variable before, like this: % ... % Make(var,app_manage_mode,by_value,amarok); % [Mode]=simple_file_manager (EnterMode)=\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); % Use clear+add to remove Back menu item UpdateMenu=\ Set(menu,clear);\ Set(menu,add,GoTo,Open,Go Home,Disconnect,Exit);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Open=\ Set(list,close);\ Make(var,open_file,by_value,$(Param));\ Make(mode,$(app_manage_mode)); Open($$)=\ Set(list,close);\ Make(var,open_file,by_value,$(Param));\ Make(mode,$(app_manage_mode)); Exit($$)=\ Macro(FBROWSER_IC_EXIT);\ Make(exit); Disconnect($$)=\ Set(disconnect); [ModeEnd] [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/aliases-server-fbrowser-v3.cfg���������������������������������������0000644�0002322�0002322�00000002025�12664332725�024440� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Key aliases for file browser (v3) in server mode % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % FBROWSER v.3 [Protocol]=Server FBROWSER_INIT=\ Make(var,fbrowser_dir,cat $(TmpDir)/ar_storedir.tmp); FBROWSER_EXIT=\ Exec(echo "$(fbrowser_dir)" > $(TmpDir)/ar_storedir.tmp); FBROWSER_FILL_LIST=\ Set(popup,show,Please wait);\ Set(list,replace,Files,..);\ ExecAndSet(list,add,SAME,cd "$(fbrowser_dir)";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/');\ ExecAndSet(list,add,SAME,cd "$(fbrowser_dir)";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/');\ Set(popup,hide); FBROWSER_GO_TO=\ Make(var,goto,by_value,$(Param));\ Make(var,fbrowser_dir,cd "$(fbrowser_dir)";if [ -d "$(goto)" ]; then cd "$(goto)";fi;pwd);\ Macro(FBROWSER_FILL_LIST); FBROWSER_GO_HOME=\ Make(var,fbrowser_dir,cd;pwd);\ Macro(FBROWSER_FILL_LIST); Push($$)=\ Macro(FBROWSER_GO_TO); [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/message.sh�����������������������������������������������������������0000755�0002322�0002322�00000001147�12061426046�020633� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh NS=`which notify-send 2> /dev/null|grep notify-send|grep -v no|wc -l|tr -d " "` if [ "x$KD" = "x1" ]; then notify-send -t 2000 "$1"; exit 0; fi; KD=`which kdialog 2> /dev/null|grep kdialog|grep -v no|wc -l|tr -d " "` if [ "x$KD" = "x1" ]; then kdialog --msgbox "$1"; exit 0; fi; ZN=`which zenity 2> /dev/null|grep zenity|grep -v no|wc -l|tr -d " "` if [ "x$ZN" = "x1" ]; then zenity --info --text="$1" exit 0; fi; XM=`which xmessage 2> /dev/null|grep xmessage|grep -v no|wc -l|tr -d " "` if [ "x$XM" = "x1" ]; then xmessage "$1" exit 0; fi; xterm -T anyRemote -e "echo \"$1\";read" �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/generate_poster.sh���������������������������������������������������0000755�0002322�0002322�00000005126�12664332725�022407� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # Params # 1. -poster|-force_poster|-hash # 2. full media file path # 3. scale to size # 4. dir to save # 5. cfg dir # 6. optional: movie title if [ "x$1" = "x" ] || [ "x$2" = "x" ]; then exit 1; fi OPERATION=$1 MOVIE_FILE="$2" MOVIE_HASH=`echo "$MOVIE_FILE"|md5sum|cut -f 1 -d ' '` if [ "x$OPERATION" = "x-hash" ]; then echo $MOVIE_HASH exit 0; fi if [ "x$3" = "x" ] || [ "x$4" = "x" ] || [ "x$5" = "x" ]; then exit 1; fi SCALE=$3 SAVE_DIR="$4" CONF_DIR="$5" if [ ! -d "$SAVE_DIR" ]; then mkdir "$SAVE_DIR"; fi; if [ ! -d "$SAVE_DIR/posters" ]; then mkdir "$SAVE_DIR/posters"; fi; if [ ! -f $HOME/.anyRemote/imdb-mf.sh ]; then curl -k -g https://raw.githubusercontent.com/velnix/imdb-movie-fetcher/master/imdbmoviefetcher/imdb-mf.sh > $HOME/.anyRemote/imdb-mf.sh chmod u+x $HOME/.anyRemote/imdb-mf.sh fi; if [ ! -f $HOME/.anyRemote/imdb-mf.sh ]; then exit 1; fi POSTER_HASH=${MOVIE_HASH}".jpg" POSTER_SCALED_HASH=${MOVIE_HASH}"-${SCALE}.png" if [ "x$OPERATION" = "x-force_poster" ]; then rm -f $SAVE_DIR/$MOVIE_HASH rm -f $SAVE_DIR/posters/$POSTER_HASH rm -f $SAVE_DIR/posters/$POSTER_SCALED_HASH fi if [ ! -f $SAVE_DIR/$MOVIE_HASH ]; then if [ "x$6" = "x" ]; then SEARCH_TITLE=`basename "$MOVIE_FILE"|sed "s/.avi//g;s/.mkv//g;s/.mp4//g"` else SEARCH_TITLE="$6" fi; $HOME/.anyRemote/imdb-mf.sh -m -t "$SEARCH_TITLE" > $SAVE_DIR/${MOVIE_HASH}.tmp GOT=`grep "imdb.com" $SAVE_DIR/${MOVIE_HASH}.tmp|grep "Poster URL" | wc -l` if [ $GOT -eq 0 ]; then rm -f $SAVE_DIR/${MOVIE_HASH}.tmp; else mv $SAVE_DIR/${MOVIE_HASH}.tmp $SAVE_DIR/$MOVIE_HASH; fi; fi; if [ -f $SAVE_DIR/$MOVIE_HASH ] && [ ! -s $SAVE_DIR/posters/$POSTER_HASH ]; then POSTER=`grep "Poster URL :" $SAVE_DIR/$MOVIE_HASH| sed "s/Poster URL : //"` curl -s $POSTER > $SAVE_DIR/posters/$POSTER_HASH fi; if [ -f $SAVE_DIR/posters/$POSTER_HASH ] && [ ! -s $SAVE_DIR/posters/$POSTER_SCALED_HASH ]; then convert -resize $SCALEx$SCALE -depth 8 -background transparent $SAVE_DIR/posters/$POSTER_HASH $SAVE_DIR/posters/$POSTER_SCALED_HASH 2> /dev/null; fi; #if [ -f $SAVE_DIR/posters/$POSTER_SCALED_HASH ]; then # echo $SAVE_DIR/posters/$POSTER_SCALED_HASH # exit 0; #else # # use default poster # # DEF_SCALED_POSTER=$SAVE_DIR/posters/default"-${SCALE}.png" # # if [ ! -s $DEF_SCALED_POSTER ]; then # convert -resize $SCALEx$SCALE -depth 8 -background transparent $CONF_DIR/Icons/common/cover-video.png $DEF_SCALED_POSTER 2> /dev/null; # fi; # # if [ -f $DEF_SCALED_POSTER ]; then # echo $DEF_SCALED_POSTER # exit 0; # fi; # #fi; exit 1; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/registry.sh����������������������������������������������������������0000755�0002322�0002322�00000001570�12120355622�021054� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # Params # 1. $(TmpDir) # 2. get/set/rm/keys # 3. key # 4. (optional) value REGISTRY=anyremote.registry if [ "x$1" = "x" ] || [ "x$2" = "x" ] || [ "x$3" = "x" ]; then exit 1; fi if [ ! -d "$1" ]; then mkdir "$1"; fi; if [ ! -f "$1/$REGISTRY" ]; then touch "$1/$REGISTRY"; fi; if [ "x$2" = "xset" ] && [ "x$4" = "x" ]; then exit 1; fi; if [ "x$2" = "xset" ]; then grep -v "^$3=" $1/$REGISTRY > $1/$REGISTRY.tmp mv $1/$REGISTRY.tmp $1/$REGISTRY echo "$3=$4" >> $1/$REGISTRY exit 0; fi; if [ "x$2" = "xget" ]; then VALUE=`grep "^$3=" $1/$REGISTRY|cut -f 2 -d '=' 2> /dev/null` echo $VALUE exit 0; fi; if [ "x$2" = "xrm" ]; then grep -v "^$3=" $1/$REGISTRY > $1/$REGISTRY.tmp mv $1/$REGISTRY.tmp $1/$REGISTRY exit 0; fi; if [ "x$2" = "xkeys" ]; then cat $1/$REGISTRY|cut -f 2 -d '=' exit 0; fi; exit 1; ����������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/aliases-server-player.cfg��������������������������������������������0000644�0002322�0002322�00000023566�12664332725�023572� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Key aliases for default player handling in server mode % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [Protocol]=Server % Funny aliases %>=Macro(PLAY); %>>=Macro(FF); %<<=Macro(RWD); %||=Macro(PAUSE) %>|=Macro(NEXT) %|<=Macro(PREV) %[]=Macro(STOP) %{}=Macro(PLAYLIST) % % Screen setup % % It needs to define $(player_name) variable before, like this: % ... % Make(var, player_name, by_value, Amarok);\ % Macro(SETUP_DEFAULT_PLAYER);\ % ... % It is good ides to define $(player_name) variable in (Init) % [Mode]=default_player_base (EnterMode)=\ Macro(APP_PRE_SETUP);\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(RUN_IF_NEED);\ Macro(SETUP_DEFAULT_PLAYER);\ Macro(APP_MENU);\ Macro(APP_POST_SETUP); VOL-=Macro(DEFAULT_VOLUME_DOWN); VOL+=Macro(DEFAULT_VOLUME_UP); SlideLeft =Macro(NEXT); SlideRight=Macro(PREV); SlideDown =Macro(DEFAULT_VOLUME_DOWN); SlideUp =Macro(DEFAULT_VOLUME_UP); COVER =Macro(PLAY); InCall($$)=Macro(PAUSE); EndCall($$)=Macro(PLAY); % Default action on text screen closing Back=\ Set(text,close);\ Macro(APP_MENU); % Default action on list screen closing Back($$)=\ Set(list,close);\ Macro(APP_MENU); % Rarely used Cancel=\ Macro(APP_QUIT);\ Make(exit); [ModeEnd] [Mode]=default_player : default_player_base SETUP_DEFAULT_PLAYER=\ Set(layout,default);\ Set(status,);\ Set(title,);\ Set(icons,$(player_name),\ 1,vol_down,\ 2,mute,\ 3,vol_up,\ 4,rewind,\ 5,play,\ 6,forward,\ 7,prev,\ 8,stop,\ 9,next,\ *,question,\ 0,pause,\ #,no);\ Set(hints,\ 1,volume down,\ 2,mute,\ 3,volume up,\ 4,rewind,\ 5,play,\ 6,forward,\ 7,previous track,\ 8,stop,\ 9,next track,\ *,help (press twice),\ 0,pause,\ #,quit player); % Some players does not supports FF/RWD SETUP_DEFAULT_PLAYER_NO_FF_FWD=\ Set(layout,default);\ Set(status,);\ Set(title,);\ Set(icons,$(player_name),\ 1,vol_down,\ 2,mute,\ 3,vol_up,\ 4,none,\ 5,play,\ 6,none,\ 7,prev,\ 8,stop,\ 9,next,\ *,question,\ 0,pause,\ #,no);\ Set(hints,\ 1,volume down,\ 2,mute,\ 3,volume up,\ 4,,\ 5,play,\ 6,,\ 7,previous track,\ 8,stop,\ 9,next track,\ *,help (press twice),\ 0,pause,\ #,quit player); 1=Macro(DEFAULT_VOLUME_DOWN); 2=Macro(DEFAULT_TOGGLE_MUTE); 3=Macro(DEFAULT_VOLUME_UP); 4=Macro(RWD); 5=Macro(PLAY); 6=Macro(FF); 7=Macro(PREV); 8=Macro(STOP); 9=Macro(NEXT); % Default menu APP_MENU=\ Set(menu,replace,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); DEFAULT_HELP=Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n4 Rwd\n5 Play\n6 FF\n7 Prew\n8 Stop\n9 Next\n* * Help\n* # Run/Quit $(player_name)\n0 Pause\n# Quit $(player_name)) % Some players does not supports FF/RWD DEFAULT_HELP_NO_FF_FWD=Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n5 Play\n7 Prew\n8 Stop\n9 Next\n* * Help\n* # Run/Quit $(player_name)\n0 Pause\n# Quit $(player_name)) * *=Macro(DEFAULT_HELP); * #=Macro(RUN_OR_QUIT); 0=Macro(PAUSE); #=Macro(APP_QUIT); SETUP_DEFAULT_CALL_HANDLER=\ Make(var,incoming_call_handler,by_value,);\ Make(var,end_call_handler,by_value,); % Must set variables: % incoming_call_handler to PAUSE or empty value % end_call_handler: to PLAY or empty value DEFAULT_INCOMING_CALL=\ Macro(CHECK_PLAY_STATUS);\ Macro($(incoming_call_handler)); DEFAULT_END_CALL=\ Macro($(end_call_handler)); [ModeEnd] [Mode]=default_cover_player CoverSize($$)=\ Make(var,cover_size,by_value,$(Index)); % % Rely on $(media_file) variable % APP_COVER must be defined in child modes (and it must set $(media_file) variable) % Next Cover=\ Make(var,cover_index, expr $(cover_index) + 1);\ Macro(APP_COVER); Previous Cover=\ Make(var,cover_index, I=`expr $(cover_index) - 1`;if [ "x$I" = "x0" ]; then echo 1; else echo $I; fi);\ Macro(APP_COVER); Update Cover=\ Make(var,cover_force,by_value,-force);\ Macro(APP_COVER);\ Make(var,cover_force,by_value, ); %DEFAULT_METADATA_COVER=\ % Make(var,coverfile,echo "$(media_file)"|md5sum|cut -f 1 -d ' ');\ % Make(var,dummy,\ % if [ "x$(media_file)" != "x" ] && [ -f "$(media_file)" ]; then \ % convert -resize $(cover_size)x$(cover_size) -depth 8 -background transparent \ % "$(media_file)" $(TmpDir)/album_covers/$(coverfile)-$(cover_size).png;\ % echo "$(TmpDir)/album_covers/$(coverfile)-$(cover_size).png";\ % fi);\ % Set(cover,noname,$(TmpDir)/album_covers/$(coverfile)-$(cover_size).png); DEFAULT_METADATA_COVER=\ Make(var,coverfile,echo "$(media_file)"|md5sum|cut -f 1 -d ' ');\ Make(var,coverimage,\ if [ "x$(media_file)" != "x" ] && [ -f "$(media_file)" ]; then \ convert -depth 8 -background transparent \ "$(media_file)" $(TmpDir)/album_covers/$(coverfile).png;\ else\ convert -depth 8 -background transparent \ "$(CfgDir)/Icons/common/cover-audio.png" $(TmpDir)/album_covers/$(coverfile).png;\ fi;\ echo "$(TmpDir)/album_covers/$(coverfile).png";);\ Set(cover,noname,$(coverimage)); DEFAULT_COVER=\ Make(var,coverconverted,$(CfgDir)/Utils/generate_cover.sh "$(media_file)" $(TmpDir)/album_covers $(cover_index) $(cover_size) $(cover_force));\ Set(cover,noname,$(coverconverted)); Help=\ Macro(DEFAULT_HELP); Run/Quit=\ Macro(RUN_OR_QUIT); Mute=\ Macro(DEFAULT_TOGGLE_MUTE); [ModeEnd] [Mode]=default_player_7x1 : default_player_base, default_cover_player SETUP_DEFAULT_PLAYER=\ Macro(TEST_IMAGEMAGIC);\ Set(layout,7x1,choose,3,ticker,up,VOL+,down,VOL-);\ Set(status,);\ Set(title,);\ Set(icons,$(player_name),\ 1,prev,\ 2,rewind,\ 3,play,\ 4,pause,\ 5,stop,\ 6,forward,\ 7,next,\ 8,none,9,none,*,none,0,none,#,none);\ Set(hints,\ 1,previous track,\ 2,rewind,\ 3,play,\ 4,pause,\ 5,stop,\ 6,forward,\ 7,next track,\ 8,,9,,*,,0,,#,);\ Exec(if [ ! -d $(TmpDir)/album_covers ]; then mkdir $(TmpDir)/album_covers; fi);\ Make(var,cover_force,by_value,);\ Make(var,cover_index,by_value,1);\ Get(cover_size); 1=Macro(PREV); 2=Macro(RWD); 3=Macro(PLAY); 4=Macro(PAUSE); 5=Macro(STOP); 6=Macro(FF); 7=Macro(NEXT); % Default menu APP_MENU=\ Set(menu,replace,Help,Mute,Run/Quit,PowerMgmt);\ Macro(ALLIN1MENU); DEFAULT_HELP=\ Set(text,replace,Help,Joystick Down Vol-\nJoystick Up Vol+\n1 Prew\n2 Rwd\n3 Play\n4 Pause\n5 Stop\n6 FF\n7 Next); % Some players does not supports FF/RWD DEFAULT_HELP_NO_FF_FWD=\ Set(text,replace,Help,1 Prew\n2 Play\n3 Pause\n4 Stop\n5 Next); [ModeEnd] [Mode]=default_status_player %APP_PLAY_STATUS must update $(app_status) to playing/paused/stopped PLAY_STATUS=\ Macro(APP_PLAY_STATUS);\ Make(var,app_play_icon_new,if [ "x$(app_status)" = "xplaying" ]; \ then echo pause; else echo play; fi);\ Macro(PLAY_PAUSE_ICON,if [ "x$(app_play_icon)" = "x$(app_play_icon_new)" ]; \ then echo 1; else echo 0; fi);\ Make(var,status_action,if [ "x$(app_status)" = "xplaying" ]; \ then echo PLAYING; else echo PAUSED; fi);\ Macro($(status_action)); COVER=\ Macro(PLAY_PAUSE); PLAYING=\ Macro(APP_TITLE); PAUSED=\ Set(title,);\ Set(status,); PLAY_PAUSE=\ Make(var,play_action,if [ "x$(app_play_icon)" = "xplay" ]; \ then echo PLAY; else echo PAUSE; fi);\ Macro($(play_action));\ Make(var,app_play_icon_new,if [ "x$(app_play_icon)" = "xplay" ]; \ then echo pause; else echo play; fi);\ Macro(PLAY_PAUSE_ICON);\ PLAY_PAUSE_ICON=\ Make(var,app_play_icon,by_value,$(app_play_icon_new));\ Set(icons,$(player_name),3,$(app_play_icon)); [ModeEnd] [Mode]=default_player_6x1 : default_player_base, default_cover_player, default_status_player SETUP_DEFAULT_PLAYER=\ Macro(TEST_IMAGEMAGIC);\ Set(layout,7x1,choose,3,ticker,up,VOL+,down,VOL-);\ Set(status,);\ Set(title,);\ Make(var,app_play_icon,by_value,play);\ Set(icons,$(player_name),\ 1,prev,\ 2,rewind,\ 3,$(app_play_icon),\ 4,stop,\ 5,forward,\ 6,next,\ 7,none,8,none,9,none,*,none,0,none,#,none);\ Set(hints,\ 1,previous track,\ 2,rewind,\ 3,play/pause,\ 4,stop,\ 5,forward,\ 6,next track,\ 7,,8,,9,,*,,0,,#,);\ Exec(if [ ! -d $(TmpDir)/album_covers ]; then mkdir $(TmpDir)/album_covers; fi);\ Make(var,cover_force,by_value,);\ Make(var,cover_index,by_value,1);\ Make(var,app_status,by_value,playing);\ Get(cover_size);\ Macro(PLAY_STATUS);\ Timer(PLAY_STATUS,$(UpdateTimeout),0);\ 1=Macro(PREV); 2=Macro(RWD); 3=Macro(PLAY_PAUSE); 4=Macro(STOP_6x1); 5=Macro(FF); 6=Macro(NEXT); 7=Make(none); STOP_6x1=\ Macro(STOP);\ Make(var,app_play_icon_new,by_value,play);\ Macro(PLAY_PAUSE_ICON); % Default menu APP_MENU=\ Set(menu,replace,Help,Mute,Run/Quit,PowerMgmt);\ Macro(ALLIN1MENU); DEFAULT_HELP=\ Set(text,replace,Help,Joystick Down Vol-\nJoystick Up Vol+\n1 Prew\n2 Rwd\n3 Play/Pause\n4 Stop\n5 FF\n6 Next); [ModeEnd] [Mode]=default_player_5x1 : default_player_base, default_cover_player, default_status_player SETUP_DEFAULT_PLAYER=\ Macro(TEST_IMAGEMAGIC);\ Set(layout,7x1,choose,3,ticker,up,VOL+,down,VOL-);\ Set(status,);\ Set(title,);\ Make(var,app_play_icon,by_value,play);\ Set(icons,$(player_name),\ 1,prev,\ 2,rewind,\ 3,$(app_play_icon),\ 4,forward,\ 5,next,\ 6,none,7,none,8,none,9,none,*,none,0,none,#,none);\ Set(hints,\ 1,previous track,\ 2,rewind,\ 3,play/pause,\ 4,forward,\ 5,next track,\ 6,,7,,8,,9,,*,,0,,#,);\ Exec(if [ ! -d $(TmpDir)/album_covers ]; then mkdir $(TmpDir)/album_covers; fi);\ Make(var,cover_force,by_value,);\ Make(var,cover_index,by_value,1);\ Make(var,app_status,by_value,playing);\ Get(cover_size);\ Macro(PLAY_STATUS);\ Timer(PLAY_STATUS,$(UpdateTimeout),0);\ 1=Macro(PREV); 2=Macro(RWD); 3=Macro(PLAY_PAUSE); 4=Macro(FF); 5=Macro(NEXT); 6=Make(none); 7=Make(none); % Default menu APP_MENU=\ Set(menu,replace,Help,Mute,Run/Quit,PowerMgmt);\ Macro(ALLIN1MENU); DEFAULT_HELP=\ Set(text,replace,Help,Joystick Down Vol-\nJoystick Up Vol+\n1 Prew\n2 Rwd\n3 Play/Pause\n4 FF\n5 Next); [ModeEnd] [End] ������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/aliases-iviewer.cfg��������������������������������������������������0000644�0002322�0002322�00000003727�13126472435�022436� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Key aliases for iViewer mode % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [Protocol]=iViewer % SETUP_PACTL will be executed only if SETUP_AMIXER not executed SETUP_DEFAULT_MIXER=\ Make(var,audio_setup,P=`pacmd dump 2> /dev/null | grep set-sink-volume|wc -l`; if [ "x$P" = "x0" ]; then echo SETUP_AMIXER; else echo SETUP_PACTL; fi);\ Macro($(audio_setup)); SETUP_AMIXER=\ Make(var,default_mixer_up,by_value,amixer sset Master,0 5%+ -q);\ Make(var,default_mixer_down,by_value,amixer sset Master,0 5%- -q);\ Make(var,default_mixer_mute,by_value,amixer sset Master,0 toggle -q);\ Make(var,default_mixer_get,by_value,amixer sget Master,0|grep '\['|head -1|cut -f 2 -d "["|cut -f 1 -d "]"|sed "s/%//");\ Make(var,default_mixer_set,by_value,amixer -q sset Master,0 ); SETUP_PACTL=\ Make(var,default_sink,LANG=C;pacmd dump|grep set-default-sink|cut -f 2 -d ' '|tr -d ' ');\ Make(var,default_mixer_down,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh down $(default_sink));\ Make(var,default_mixer_up,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh up $(default_sink));\ Make(var,default_mixer_mute,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh mute $(default_sink));\ Make(var,default_mixer_get,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh get $(default_sink));\ Make(var,default_mixer_set,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh set $(default_sink) ); DEFAULT_VOLUME_UP=\ Exec($(default_mixer_up)); DEFAULT_VOLUME_DOWN=\ Exec($(default_mixer_down)); DEFAULT_TOGGLE_MUTE=\ Exec($(default_mixer_mute)); % default_mixer_value in range 0 - 65535 DEFAULT_VOLUME_GET=\ Make(var,mixer_value,$(default_mixer_get));\ Make(var,default_mixer_value,echo "$(mixer_value)*65535/100"|bc); DEFAULT_VOLUME_SET=\ Make(var,mixer_value,echo "$(default_mixer_value)*100/65535"|bc);\ Exec($(default_mixer_set) $(mixer_value)); % Password p(PASSWORD)" p($$)=Send(string,p=ok);Send(bytes,3); [End] �����������������������������������������anyremote-6.7.1/cfg-data/Utils/anyremote.gui��������������������������������������������������������0000644�0002322�0002322�00000030056�12061426046�021362� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� <themes> <theme type="background" name=".portrait"><![CDATA[background-color: #000000; background-image: url(bg_portrait.png); background-repeat: no-repeat;]]></theme> <theme type="button" name=".btn_play[state='0']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(play.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_play[state='1']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(play-active.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_pause[state='0']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(pause.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_pause[state='1']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(pause-active.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_stop[state='0']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(stop.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_stop[state='1']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(stop-active.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_prev[state='0']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(prev.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_prev[state='1']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(prev-active.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_next[state='0']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(next.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_next[state='1']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(next-active.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="gauge" name=".vol_h[state='0']"><![CDATA[ background-image: url(gauge_vol_off.png);]]></theme> <theme type="gauge" name=".vol_h[state='1']"><![CDATA[ background-image: url(gauge_vol_on.png);]]></theme> <theme type="text" name=".vol_indicator"><![CDATA[ color: Black; font-size: 12px; font-family: 'Verdana'; text-align: center; vertical-align: middle; font-weight: normal; font-style: none; text-decoration: none; display: table-cell;]]></theme> <theme type="text" name=".album"><![CDATA[ text-shadow: rgba(0,0,0,0.39) 1px 1px 1px; color: White; font-size: 11px; font-family: 'Verdana'; text-align: center; vertical-align: middle; font-weight: normal; font-style: none; text-decoration: none; display: table-cell;]]></theme> <theme type="text" name=".artist"><![CDATA[ text-shadow: rgba(0,0,0,0.39) 1px 1px 1px; color: #BEBEBE; font-size: 11px; font-family: 'Verdana'; text-align: center; vertical-align: middle; font-weight: normal; font-style: none; text-decoration: none; display: table-cell;]]></theme> <theme type="text" name=".track"><![CDATA[ text-shadow: rgba(0,0,0,0.39) 1px 1px 1px; color: White; font-size: 11px; font-family: 'Verdana'; text-align: center; vertical-align: middle; font-weight: normal; font-style: none; text-decoration: none; display: table-cell;]]></theme> <theme type="button" name=".btn_shuffle[state='0']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(btn_shuffle_off.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_shuffle[state='1']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(btn_shuffle_on.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_repeat[state='0']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(btn_repeat_off.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".btn_repeat[state='1']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(btn_repeat_on.png); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="gauge" name=".progress_h[state='0']"><![CDATA[ background-image: url(gauge_progress_off.png);]]></theme> <theme type="gauge" name=".progress_h[state='1']"><![CDATA[ background-image: url(gauge_progress_on.png);]]></theme> <theme type="text" name=".info"><![CDATA[ text-shadow: rgba(0,0,0,0.39) 1px 1px 1px; color: White; font-size: 12px; font-family: 'Verdana'; text-align: center; vertical-align: middle; font-weight: normal; font-style: none; text-decoration: none; display: table-cell;]]></theme> <theme type="button" name=".blank[state='0']"><![CDATA[padding: 0px 0px 0px 0px; background-image: url(); color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="button" name=".blank[state='1']"><![CDATA[padding: 0px 0px 0px 0px; color: White; font-size: 12px; font-family: 'Verdana'; font-weight: normal; font-style: none; text-decoration: none; text-align: center; vertical-align: middle; display: table-cell; box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-tap-highlight-color:rgba(0,0,0,0);]]></theme> <theme type="text" name=".title"><![CDATA[ text-shadow: rgba(0,0,0,0.39) 1px 1px 1px; color: White; font-size: 14px; font-family: 'Verdana'; text-align: center; vertical-align: middle; font-weight: bold; font-style: none; text-decoration: none; display: table-cell;]]></theme> <theme type="gauge" name=".list_v[state='0']"><![CDATA[ background-image: url(gauge_v_off.png);]]></theme> <theme type="gauge" name=".list_v[state='1']"><![CDATA[ background-image: url(gauge_v_off.png);]]></theme> <theme type="text" name=".info_small_left"><![CDATA[ text-shadow: rgba(0,0,0,0.39) 1px 1px 1px; color: White; font-size: 10px; font-family: 'Verdana'; text-align: left; vertical-align: middle; font-weight: normal; font-style: none; text-decoration: none; display: table-cell;]]></theme> </themes> <page name="Player" j="0" transition="fade" subtype="None" time="0.5" ease="easeInEaseOut"> <portrait t="portrait"> <slider j="2" d="0" x="89" y="53" w="148" h="19" min="0" max="100" decimals="0" t="progress_h" sim="0" l="0"> <indicator state="0" offsetX="0" offsetY="1" x="0" y="0" w="0" h="0" t="">gauge_progress_indicator.png</indicator> <indicator state="1" offsetX="0" offsetY="1" zoom="100" /> </slider> <btn j="6" x="20" y="395" w="40" h="40" t="btn_prev" flip="None" sim="0" l="0" s="1"> <inactive s="0"> </inactive> <active s="0"> </active> </btn> <btn j="1" x="80" y="395" w="40" h="40" t="btn_play" flip="None" sim="0" l="0" s="1"> <inactive s="0"> </inactive> <active s="0"> </active> </btn> <btn j="31" x="140" y="395" w="40" h="40" t="btn_pause" flip="None" sim="0" l="0" s="1"> <inactive s="0"> </inactive> <active s="0"> </active> </btn> <btn j="30" x="200" y="395" w="40" h="40" t="btn_stop" flip="None" sim="0" l="0" s="1"> <inactive s="0"> </inactive> <active s="0"> </active> </btn> <btn j="5" x="260" y="395" w="40" h="40" t="btn_next" flip="None" sim="0" l="0" s="1"> <inactive s="0"> </inactive> <active s="0"> </active> </btn> <slider j="1" d="0" x="22" y="451" w="275" h="19" min="0" max="100" decimals="0" t="vol_h" sim="0" l="0"> <indicator state="0" offsetX="0" offsetY="1" x="0" y="0" w="0" h="0" t="">gauge_indicator_off.png</indicator> <indicator state="1" offsetX="0" offsetY="-20" x="11" y="16" w="36" h="20" t="vol_indicator">gauge_indicator_on.png</indicator> </slider> <img x="10" y="93" w="300" h="300" j="4" l="0">img_coverart-300.png</img> <txt j="1" x="0" y="0" w="320" h="17" t="artist" wrap="False" l="0">Artist</txt> <txt j="2" x="0" y="13" w="320" h="17" t="track" wrap="False" l="0">Track Title</txt> <txt j="3" x="0" y="26" w="320" h="17" t="album" wrap="False" l="0">Album</txt> <btn j="9" x="285" y="55" w="35" h="27" t="btn_shuffle" flip="None" sim="0" l="0" s="1"> <inactive s="0"> </inactive> <active s="0"> </active> </btn> <btn j="12" x="8" y="55" w="36" h="27" t="btn_repeat" flip="None" sim="0" l="0" s="1"> <inactive s="0"> </inactive> <active s="0"> </active> </btn> <txt j="5" x="34" y="54" w="56" h="17" t="info" wrap="False" l="0">00:00</txt> <txt j="6" x="234" y="54" w="56" h="17" t="info" wrap="False" l="0">00:00</txt> </portrait> <landscape t="landscape"> </landscape> </page> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/aliases-bemused.cfg��������������������������������������������������0000644�0002322�0002322�00000005211�13126472435�022376� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Key aliases for Bemused emulation mode % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [Protocol]=Bemused % Use Bemused quirks BEMUSED_SETUP=\ Make(var,Bemused,by_value,true); STRT=Macro(PLAY) LADD=Macro(PLAY) STEN=Macro(STOP) % SETUP_PACTL will be executed only if SETUP_AMIXER not executed SETUP_DEFAULT_MIXER=\ Make(var,audio_setup,P=`pacmd dump 2> /dev/null | grep set-sink-volume|wc -l`; if [ "x$P" = "x0" ]; then echo SETUP_AMIXER; else echo SETUP_PACTL; fi);\ Macro($(audio_setup)); SETUP_AMIXER=\ Make(var,default_mixer_up,by_value,amixer sset Master,0 5%+ -q);\ Make(var,default_mixer_down,by_value,amixer sset Master,0 5%- -q);\ Make(var,default_mixer_mute,by_value,amixer sset Master,0 toggle -q);\ Make(var,default_mixer_get,by_value,amixer sget Master,0|grep '\['|head -1|cut -f 2 -d "["|cut -f 1 -d "]"|sed "s/%//");\ Make(var,default_mixer_set,by_value,amixer -q sset Master,0 ); SETUP_PACTL=\ Make(var,default_sink,LANG=C;pacmd dump|grep set-default-sink|cut -f 2 -d ' '|tr -d ' ');\ Make(var,default_mixer_down,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh down $(default_sink));\ Make(var,default_mixer_up,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh up $(default_sink));\ Make(var,default_mixer_mute,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh mute $(default_sink));\ Make(var,default_mixer_get,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh get $(default_sink));\ Make(var,default_mixer_set,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh set $(default_sink) ); DEFAULT_VOLUME_UP=\ Exec($(default_mixer_up)); DEFAULT_VOLUME_DOWN=\ Exec($(default_mixer_down)); DEFAULT_TOGGLE_MUTE=\ Exec($(default_mixer_mute)); % default_mixer_value in range 1-100 DEFAULT_VOLUME_GET=\ Make(var,default_mixer_value,$(default_mixer_get)); DEFAULT_VOLUME_SET=\ Exec($(default_mixer_set) $(default_mixer_value)); DEFAULT_GVOL=\ Macro(DEFAULT_VOLUME_GET);\ Make(var,tt_volume,echo "$(default_mixer_value)*255/100"|bc);\ Send(string,GVOLACK);\ Send(bytes,$(tt_volume)) DEFAULT_FADE=\ Make(var,default_mixer_value,by_value,0);\ Macro(DEFAULT_VOLUME_SET) % The following is a trick. Replays are not real, just to satisfy client. DEFAULT_PLEN=\ Send(bytes,0,100); DEFAULT_PLST=\ Send(string,PLSTACK);\ Send(bytes,0,1,35,10);\ Send(string,NoName);\ Send(bytes,10,0) CHCK=Send(string,Y); DINF=Send(string,DINFACK);Send(bytes,0,0,0,244,0,0,32,0,0,0,0,2); DLST=Send(bytes,255,0,0) DOWN=Send(bytes,0,100);Send(string,NoName) FINF=Send(string,FINFACK);Send(bytes,0,0,0,100); LIST=Send(bytes,255,0,0) VERS=Send(string,VERSACK);Send(bytes,1,73); [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/aliases-server.cfg���������������������������������������������������0000644�0002322�0002322�00000007772�13126472435�022276� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Key aliases for Server mode % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [Protocol]=Server % Cancel buttons on different phones -11=Macro(Cancel) -8=Macro(Cancel) 69=Macro(Cancel) Cancel=\ Macro(QUIT);\ Make(exit); % SETUP_PACTL will be executed only if SETUP_AMIXER not executed SETUP_DEFAULT_MIXER=\ Make(var,audio_setup,P=`pacmd dump 2> /dev/null | grep set-sink-volume|wc -l`; if [ "x$P" = "x0" ]; then echo SETUP_AMIXER; else echo SETUP_PACTL; fi);\ Macro($(audio_setup)); SETUP_AMIXER=\ Make(var,default_mixer_up,by_value,amixer sset Master,0 5%+ -q);\ Make(var,default_mixer_down,by_value,amixer sset Master,0 5%- -q);\ Make(var,default_mixer_mute,by_value,amixer sset Master,0 toggle -q);\ Make(var,default_mixer_get,by_value,amixer sget Master,0|grep '\['|head -1|cut -f 2 -d "["|cut -f 1 -d "]"|sed "s/%//");\ Make(var,default_mixer_set,by_value,amixer -q sset Master,0 ); SETUP_PACTL=\ Make(var,default_sink,LANG=C;pacmd dump|grep set-default-sink|cut -f 2 -d ' '|tr -d ' ');\ Make(var,default_mixer_down,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh down $(default_sink));\ Make(var,default_mixer_up,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh up $(default_sink));\ Make(var,default_mixer_mute,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh mute $(default_sink));\ Make(var,default_mixer_get,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh get $(default_sink));\ Make(var,default_mixer_set,by_value,$(CfgDir)/Utils/pulse-audio-ctl.sh set $(default_sink) ); DEFAULT_VOLUME_UP=\ Exec($(default_mixer_up)); DEFAULT_VOLUME_DOWN=\ Exec($(default_mixer_down)); DEFAULT_TOGGLE_MUTE=\ Exec($(default_mixer_mute)); % default_mixer_value in range 1-100 DEFAULT_VOLUME_GET=\ Make(var,default_mixer_value,$(default_mixer_get)); DEFAULT_VOLUME_SET=\ Exec($(default_mixer_set) $(default_mixer_value)); % Aliases for AverMedia IR remote KEY_TEXT=Macro(*) KEY_POWER=Macro(#) % Android support SEARCH=Macro(FIRE); TEST_DBUS_SEND=\ Exec(P=`which dbus-send|grep dbus-send|grep -v no|wc -l|tr -d " "`; \ if [ "x$P" != "x1" ]; then \ $(CfgDir)/Utils/message.sh "ERROR: dbus-send not found"; \ fi); TEST_QDBUS=\ Exec(P=`which qdbus|grep qdbus|grep -v no|wc -l|tr -d " "`; \ if [ "x$P" != "x1" ]; then \ $(CfgDir)/Utils/message.sh "ERROR: qdbus not found"; \ fi); TEST_IMAGEMAGIC=\ Exec(P=`which convert 2> /dev/null|grep convert|grep -v no|wc -l|tr -d " "`; \ if [ "x$P" = "x0" ]; then \ $(CfgDir)/Utils/message.sh "ERROR: ImageMagic is not installed"; \ fi); % set $(kde4_app) before use TEST_KDE4_APP=\ Exec(V=`$(kde4_app) -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; \ if [ "x$V" = "x3" ]; then \ $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE4"; \ fi); % % Power management (switch off/suspend) stuff % PowerMgmt=\ Make(var,return_mode,by_value,$(Mode));\ Make(mode,power_manager); SETUP_DEFAULT_POWER_MANAGEMENT=\ Make(var,default_switch_off,by_value,systemctl poweroff);\ Make(var,default_suspend,by_value,systemctl suspend);\ Make(var,default_hibernate,by_value,systemctl hibernate); % Use sleep 3 to get some time to receive disconnect response from client DEFAULT_PC_SWITCHOFF=\ Set(disconnect);\ Exec(sleep 3;$(default_switch_off)); DEFAULT_PC_SUSPEND=\ Set(disconnect);\ Exec(sleep 3;$(default_suspend)); DEFAULT_PC_HIBERNATE=\ Set(disconnect);\ Exec(sleep 3;$(default_hibernate)); % % rely on $(return_mode) variable % [Mode]=power_manager (EnterMode)=\ Set(list,replace,PowerMgmt,Power Off, Suspend, Hibernate);\ Set(menu,replace,Choose); (ExitMode)=\ Set(list,close); Back($$)=\ Make(mode,$(return_mode)); Push($$)=\ Macro(Choose($$)); Choose($$)=\ Macro($(Param)); Power Off=\ Macro(DEFAULT_PC_SWITCHOFF);\ Make(mode,$(return_mode)); Suspend=\ Macro(DEFAULT_PC_SUSPEND);\ Make(mode,$(return_mode)); Hibernate=\ Macro(DEFAULT_PC_HIBERNATE);\ Make(mode,$(return_mode)); [ModeEnd] [End] ������anyremote-6.7.1/cfg-data/Utils/aliases-server-video-player.cfg��������������������������������������0000644�0002322�0002322�00000023146�12664332725�024670� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Key aliases for default video player handling in server mode % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % In inherited modes configuration files it needs to load: %(Init)=\ % Include($(CfgDir)/Utils/aliases-server.cfg);\ % Include($(CfgDir)/Utils/aliases-server-fbrowser-v3i.cfg);\ [Protocol]=Server % % It needs to define $(app_manage_mode) variable before % In inherited modes APP_IS_RUN macro must define $(app_run) variable (1== app is run, 0 == app does not run) % [Mode]=default_video_player_init (EnterMode)=\ Set(popup,show,Loading...);\ Make(var,app_run,by_value,0);\ Make(var,open_file,by_value,);\ Macro(APP_IS_RUN);\ Macro(APP_MANAGE,expr 1 - $(app_run));\ Macro(APP_CHOOSE_FILE,echo $(app_run));\ Set(popup,hide); APP_CHOOSE_FILE=\ Make(mode,simple_file_manager); APP_MANAGE=\ Make(mode,$(app_manage_mode)); [ModeEnd] % Variable $(open_file) should be defined in simple_file_manager mode % % Screen setup % % It needs to define $(app_name) variable before, like this: % ... % Make(var,app_name,by_value,Totem);\ % Macro(SETUP_DEFAULT_PLAYER);\ % ... % It is good ides to define $(app_name) variable in (Init) % [Mode]=default_video_player_base % Android support VOL-=Macro(DEFAULT_VOLUME_DOWN); VOL+=Macro(DEFAULT_VOLUME_UP); SlideDown =Macro(DEFAULT_VOLUME_DOWN); SlideUp =Macro(DEFAULT_VOLUME_UP); COVER =Macro(PLAY); InCall($$)=Macro(PAUSE); EndCall($$)=Macro(PLAY); % Default action on text screen closing Back=\ Set(text,close);\ Macro(APP_MENU); % Default action on list screen closing Back($$)=\ Set(list,close);\ Macro(APP_MENU); % Rarely used Cancel=\ Macro(QUIT);\ Make(exit); [ModeEnd] [Mode]=default_video_player : default_video_player_base (EnterMode)=\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(APP_SETUP);\ Macro(APP_START_IF);\ Macro(APP_RAISE);\ Macro(SETUP_DEFAULT_PLAYER);\ Macro(APP_MENU);\ Macro(APP_POST_SETUP); SETUP_DEFAULT_PLAYER=\ Set(layout,default);\ Set(status,);\ Set(title,$(open_file));\ Set(icons,$(app_name),\ 1,vol_down,\ 2,mute,\ 3,vol_up,\ 4,rewind,\ 5,play,\ 6,forward,\ 7,folder,\ 8,stop,\ 9,fullscreen,\ *,question,\ 0,pause,\ #,no);\ Set(hints,\ 1,volume down,\ 2,mute,\ 3,volume up,\ 4,rewind,\ 5,play,\ 6,forward,\ 7,file manager,\ 8,stop,\ 9,fullscreen,\ *,help (press twice),\ 0,pause,\ #,quit player); 1=Macro(DEFAULT_VOLUME_DOWN); 2=Macro(DEFAULT_TOGGLE_MUTE); 3=Macro(DEFAULT_VOLUME_UP); 4=Macro(RWD); 5=Macro(PLAY); 6=Macro(FF); 7=Macro(APP_QUIT);\ Make(mode,simple_file_manager); 8=Macro(STOP); 9=Macro(APP_FULLSCREEN); * *=Macro(DEFAULT_HELP); 0=Macro(PAUSE); #=Macro(APP_QUIT);\ Make(mode,simple_file_manager); % Default menu APP_MENU=\ Set(menu,replace,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); DEFAULT_HELP=\ Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n4 Rewind\n5 Play\n6 FF\n7 File Browser\n8 Stop\n9 Fullscreen\n* * Help\n0 Pause\n# Quit $(app_name)) % Android support SlideLeft =Macro(NEXT); SlideRight=Macro(PREV); [ModeEnd] [Mode]=default_video_player_5x1 : default_video_player_base (EnterMode)=\ Make(var,enter_action,if [ "x$(do_app_init)" = "x1" ]; \ then echo DO_ENTER_ACTION; \ else echo DO_REFRESH_ACTION; \ fi);\ Macro($(enter_action)); DO_ENTER_ACTION=\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(TEST_LYNX);\ Macro(TEST_CURL);\ Macro(APP_SETUP);\ Macro(APP_START_IF);\ Macro(APP_RAISE);\ Macro(SETUP_DEFAULT_PLAYER);\ Macro(APP_MENU);\ Macro(APP_POST_SETUP); DO_REFRESH_ACTION=\ Make(var,do_app_init,by_value,1);\ Macro(APP_MENU);\ Macro(APP_POST_SETUP); SETUP_DEFAULT_PLAYER_LAYOUT=\ Set(layout,7x1,choose,2,ticker,up,VOL+,down,VOL-);\ Set(status,);\ Set(title,$(open_file));\ Set(icons,$(app_name),\ 1,rewind,\ 2,play,\ 3,forward,\ 4,pause,\ 5,stop,\ 6,none,\ 7,none,\ 8,none,\ 9,none,\ *,none,\ 0,none,\ #,none);\ Set(hints,\ 1,rewind,\ 2,play,\ 3,forward,\ 4,pause,\ 5,stop,\ 6,,\ 7,,\ 8,,\ 9,,\ *,,\ 0,,\ #,); SETUP_DEFAULT_PLAYER=\ Macro(SETUP_DEFAULT_PLAYER_LAYOUT);\ Exec(if [ ! -d $(TmpDir)/imdb ]; then mkdir $(TmpDir)/imdb; fi);\ Exec(if [ ! -d $(TmpDir)/imdb/posters ]; then mkdir $(TmpDir)/imdb/posters; fi);\ Make(var,cover_force,by_value,);\ Make(var,cover_index,by_value,1);\ Get(cover_size); 1=Macro(RWD); 2=Macro(PLAY); 3=Macro(FF); 4=Macro(PAUSE); 5=Macro(STOP);\ Macro(APP_QUIT);\ Make(mode,simple_file_manager); % Default menu APP_MENU=\ Set(menu,replace,Help,Mute,Files,Quit,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); DEFAULT_HELP=\ Set(text,replace,Help,Joystick Down Vol-\nJoystick Up Vol+\n1 Rewind\n2 Play\n3 FastForward\n4 Pause\n5 Stop and quit $(app_name)); % Some players does not supports FF/RWD DEFAULT_HELP_NO_FF_FWD=\ Set(text,replace,Help,Joystick Down Vol-\nJoystick Up Vol+\n1 \n2 Play\n3 \n4 Pause\n5 Stop and quit $(app_name)); Help=\ Macro(DEFAULT_HELP); Quit=\ Macro(APP_QUIT); Mute=\ Macro(DEFAULT_TOGGLE_MUTE); Files=\ Macro(STOP);\ Macro(APP_QUIT);\ Make(mode,simple_file_manager); IMDB=\ Make(mode,imdb_browser); % Android support SlideLeft =Macro(FF); SlideRight=Macro(RWD); CoverSize($$)=\ Make(var,cover_size,by_value,$(Index));\ Macro(CHECK_IMDB_POSTER); % % Retrieve poster from IMDB % % Rely on $(open_file) variable CHECK_IMDB_POSTER=\ Make(var,movie_file_hash,$(CfgDir)/Utils/generate_poster.sh -hash "$(fbrowser_dir)/$(open_file)");\ Make(var,scaled_poster_hash,by_value,$(movie_file_hash)-$(cover_size).png);\ Make(var,poster_action,if [ -s $(TmpDir)/imdb/posters/$(scaled_poster_hash) ]; \ then echo SET_IMDB_POSTER; else echo LOAD_IMDB_POSTER; fi);\ Macro($(poster_action)); SET_IMDB_POSTER=\ Set(cover,noname,$(TmpDir)/imdb/posters/$(scaled_poster_hash)); LOAD_IMDB_POSTER=\ Exec($(CfgDir)/Utils/generate_poster.sh -poster "$(fbrowser_dir)/$(open_file)" $(cover_size) "$(TmpDir)/imdb" "$(CfgDir)");\ Timer(WAIT_IMDB_POSTER,2,15); % timeout time is 30 = 2*15 WAIT_IMDB_POSTER=\ Make(var,poster_wait_action,if [ -s $(TmpDir)/imdb/posters/$(scaled_poster_hash) ]; \ then echo SET_IMDB_POSTER; else echo DUMMY_IMDB_POSTER; fi);\ Macro($(poster_wait_action)); DUMMY_IMDB_POSTER=\ Make(var,default_scaled_poster,by_value,default-$(cover_size).png);\ Make(var,dummy,\ if [ ! -s $(TmpDir)/imdb/posters/$(scaled_poster_hash) ];\ then \ convert -resize $(cover_size)x$(cover_size) -depth 8 -background transparent \ $(CfgDir)/Icons/common/cover-video.png $(TmpDir)/imdb/posters/$(default_scaled_poster) 2> /dev/null; \ fi);\ Set(cover,noname,$(TmpDir)/imdb/posters/$(default_scaled_poster)); TEST_LYNX=\ Exec(P=`which lynx|grep lynx|grep -v no|wc -l|tr -d " "`; \ if [ "x$P" != "x1" ]; then \ $(CfgDir)/Utils/message.sh "ERROR: lynx not found"; \ fi); TEST_CURL=\ Exec(P=`which curl|grep curl|grep -v no|wc -l|tr -d " "`; \ if [ "x$P" != "x1" ]; then \ $(CfgDir)/Utils/message.sh "ERROR: curl not found"; \ fi); [ModeEnd] [Mode]=imdb_browser % It needs to define $(app_manage_mode) and $(open_file) variables before % Rely on $(open_file) variable (EnterMode)=\ Make(var,movie_file_hash,$(CfgDir)/Utils/generate_poster.sh -hash "$(fbrowser_dir)/$(open_file)");\ Macro(IMDB_SETUP); IMDB_SETUP=\ Set(list,replace,IMDB,IMDB data,Reload Scrapper Script,Change Poster,Delete IMDB data,Delete all IMDB data);\ Set(menu,replace,Choose); Choose(IMDB data)=\ ExecAndSet(text,replace,IMDB,cat $(TmpDir)/imdb/$(movie_file_hash)|grep -v 'Poster URL'|grep -v 'IMDB movie URL'); Choose(Reload Scrapper Script)=\ Exec(rm -f $(Home)/.anyRemote/imdb-mf.sh); Choose(Change Poster)=\ Make(mode,imdb_choose_name); Choose(Delete IMDB data)=\ Make(mode,imdb_remove_one); Choose(Delete all IMDB data)=\ Make(mode,imdb_remove_all); Push(IMDB data)=\ Macro(Choose(IMDB data)); Push(Change Poster)=\ Macro(Choose(Change Poster)); Push(Delete IMDB data)=\ Macro(Choose(Delete IMDB data)); Push(Delete all IMDB data)=\ Macro(Choose(Delete all IMDB data)); Back=\ Macro(IMDB_SETUP); % Rely on $(app_manage_mode) variable Back($$)=\ Set(list,close);\ Make(mode,$(app_manage_mode)); (ExitMode)=\ Make(var,do_app_init,by_value,0); [ModeEnd] [Mode]=imdb_choose_name : default_video_player_5x1 (EnterMode)=\ Make(var,def_title,echo "$(open_file)"|sed "s/.avi//g;s/.mkv//g;s/.mp4//g");\ Set(editfield,Enter Movie Title,Movie,$(def_title)); Ok($$)=\ Exec($(CfgDir)/Utils/generate_poster.sh -force_poster "$(fbrowser_dir)/$(open_file)" $(cover_size) "$(TmpDir)/imdb" "$(CfgDir)" "$(Param)");\ Set(list,close);\ Set(cover,clear);\ Timer(WAIT_IMDB_POSTER,2,15);\ Make(mode,$(app_manage_mode)); Back($$)=\ Make(mode,imdb_browser); (ExitMode)=\ Make(var,do_app_init,by_value,0); [ModeEnd] [Mode]=imdb_remove_one (EnterMode)=\ Set(list,replace,Remove,Yes,No);\ Set(menu,replace,Choose); Back($$)=\ Make(mode,imdb_browser); Push($$)=\ Macro(Choose($$)); Choose($$)=\ Exec(if [ "x$(Param)" = "xYes" ];\ then \ rm -f $(TmpDir)/imdb/$(movie_file_hash);\ ls $(TmpDir)/imdb/posters|grep $(movie_file_hash)|xargs -i rm -f $(TmpDir)/imdb/posters/{}; \ fi);\ Make(mode,imdb_browser); [ModeEnd] [Mode]=imdb_remove_all (EnterMode)=\ Set(list,replace,Remove,Yes,No);\ Set(menu,replace,Choose); Back($$)=\ Make(mode,imdb_browser); Push($$)=\ Macro(Choose($$)); Choose($$)=\ Exec(if [ "x$(Param)" = "xYes" ];\ then \ rm -rf $(TmpDir)/imdb; \ fi);\ Make(mode,imdb_browser); [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Utils/aliases-server-fbrowser-v4i.cfg��������������������������������������0000644�0002322�0002322�00000003752�12673224605�024617� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Key aliases for file browser (v4i) in server mode % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % FBROWSER v.4i [Protocol]=Server FBROWSER_IC_INIT=\ Make(var,fbrowser_dir,cat $(TmpDir)/ar_storedir.tmp); FBROWSER_IC_EXIT=\ Exec(echo "$(fbrowser_dir)" > $(TmpDir)/ar_storedir.tmp); FBROWSER_IC_FILL_LIST=\ Set(popup,show,Please wait);\ Set(iconlist,replace,Files,folder:..);\ Set(iconlist,dir,SAME,$(fbrowser_dir));\ Set(popup,hide); FBROWSER_IC_GO_TO=\ Make(var,goto,by_value,$(Param));\ Make(var,fbrowser_dir,cd "$(fbrowser_dir)";if [ -d "$(goto)" ]; then cd "$(goto)";fi;pwd);\ Macro(FBROWSER_IC_FILL_LIST); FBROWSER_IC_GO_HOME=\ Make(var,fbrowser_dir,cd;pwd);\ Macro(FBROWSER_IC_FILL_LIST); FBROWSER_IC_GO_UP=\ Make(var,fbrowser_dir,dirname $(fbrowser_dir));\ Macro(FBROWSER_IC_FILL_LIST); %Push($$)=\ % Macro(FBROWSER_IC_GO_TO); Push($$)=\ Macro(Open,cd "$(fbrowser_dir)";if [ -f "$(Param)" ]; then echo 0; else echo 1; fi;);\ Macro(FBROWSER_IC_GO_TO, cd "$(fbrowser_dir)";if [ -d "$(Param)" ]; then echo 0; else echo 1; fi;); % % It needs to define $(app_manage_mode) variable before, like this: % ... % Make(var,app_manage_mode,by_value,amarok); % [Mode]=simple_file_manager (EnterMode)=\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); % Use clear+add to remove Back menu item UpdateMenu=\ Set(menu,clear);\ Set(menu,add,GoTo,Open,Go Home,Disconnect,Exit);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Open=\ Macro(FBROWSER_IC_EXIT);\ Set(list,close);\ Make(var,open_file,by_value,$(Param));\ Make(mode,$(app_manage_mode)); Open($$)=\ Macro(FBROWSER_IC_EXIT);\ Set(list,close);\ Make(var,open_file,by_value,$(Param));\ Make(mode,$(app_manage_mode)); Exit($$)=\ Macro(FBROWSER_IC_EXIT);\ Make(exit); Disconnect($$)=\ Set(disconnect); [ModeEnd] [End] ����������������������anyremote-6.7.1/cfg-data/Utils/aliases-server-presentation.cfg��������������������������������������0000644�0002322�0002322�00000005402�12664332725�024776� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Key aliases for default presentation / document viewer handling in server mode % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % In inherited modes configuration files it needs to load: %(Init)=\ % Include($(CfgDir)/Utils/aliases-server.cfg);\ % Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ [Protocol]=Server % % In inherited modes: % - APP_IS_RUN macro must define $(app_run) variable (1== app is run, 0 == app does not run) % - it needs to define $(app_manage_mode) variable % [Mode]=default_presentation_init (EnterMode)=\ Set(popup,show,Loading...);\ Make(var,app_run,by_value,0);\ Make(var,open_file,by_value,);\ Macro(APP_IS_RUN);\ Macro(APP_MANAGE,expr 1 - $(app_run));\ Macro(APP_CHOOSE_FILE,echo $(app_run));\ Set(popup,hide); APP_CHOOSE_FILE=\ Make(mode,simple_file_manager); APP_MANAGE=\ Make(mode,$(app_manage_mode)); [ModeEnd] % Variable $(open_file) should be defined in simple_file_manager mode [Mode]=default_presentation (EnterMode)=\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(APP_SETUP);\ Macro(APP_START_IF);\ Macro(APP_RAISE);\ Macro(SETUP_DEFAULT_PRESENTATION);\ Macro(APP_MENU); SETUP_DEFAULT_PRESENTATION=\ Set(layout,default);\ Set(icons,$(app_name),\ 1,folder,\ 2,plus,\ 3,play,\ 4,rewind,\ 5,fullscreen,\ 6,forward,\ 7,prev,\ 8,minus,\ 9,next,\ *,question,\ 0,refresh,\ #,no);\ Set(hints,\ 1,fila manager,\ 2,zoom in,\ 3,slideshow,\ 4,previous page,\ 5,fullscreen,\ 6,next page,\ 7,first page,\ 8,zoom out,\ 9,last page,\ *,help (press twice),\ 0,refresh,\ #,no);\ Set(status,$(app_name));\ Set(title,$(open_file)); % Default menu APP_MENU=\ Set(menu,replace,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Back=Set(text,close);\ Macro(APP_MENU); Back($$)=Set(list,close);\ Macro(APP_MENU); 1=Macro(PRES_FILE_BROWSER) 2=Macro(PRES_ZOOM_IN) 3=Macro(PRES_START) 4=Macro(PRES_PREV_PAGE); 5=Macro(PRES_TOGGLE_FULLSCREEN); 6=Macro(PRES_NEXT_PAGE); 7=Macro(PRES_FIRST_PAGE) 8=Macro(PRES_ZOOM_OUT) 9=Macro(PRES_LAST_PAGE) * *=Set(text,replace,Help,1 File Browser\n2 Zoom In\n3 Start Presentation\n4 Previous Page\n5 Fullscreen\n6 Next Page\n7 First Page\n8 Zoom Out\n9 Last Page\n ** Help\n0 Refresh\n# Quit $(app_name)\n); 0=Macro(PRES_REFRESH) #=Macro(APP_QUIT);\ Make(mode,simple_file_manager); % Android support VOL-=Macro(PRES_PREV_PAGE); VOL+=Macro(PRES_NEXT_PAGE); SlideLeft =Macro(NEXT); SlideRight=Macro(PREV); % Rarely used Cancel=\ Macro(APP_QUIT);\ Make(exit); PRES_FILE_BROWSER=\ Macro(APP_QUIT);\ Make(mode,simple_file_manager); [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/���������������������������������������������������������������0000755�0002322�0002322�00000000000�13226200116�017725� 5����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/audacious.cfg��������������������������������������������������0000644�0002322�0002322�00000017102�12664332726�022406� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Audacious management (Server-mode) % % Thanks to Eugeny Tereshkov for corrections and advices % % STATUS stable % XTEST no % SOUND app % ENV no % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio % FBROWSER v.4i GuiAppName=Audacious GuiAppBinary=audacious GuiAppRun=echo 'P=`ps -ef|grep audacious|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=audacious.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Audacious is a fork of Beep Media Player (BMP) 0.9.7.1, which in itself was based on XMMS1. %audtool current-song-filename [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Exec(P=`which audtool 2> /dev/null|grep audtool|grep -v no|wc -l|tr -d " "`;\ if [ "x$P" = "x1" ]; then true; else $(CfgDir)/Utils/message.sh "ERROR: audtool package is not installed"; fi);\ Make(var,player_name,by_value,Audacious);\ Make(var,cover_size,by_value,);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,audacious_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get audacious_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set audacious_layout $(audacious_layout)); (Connect)=\ Make(mode,audacious_$(audacious_layout)); [Mode]=audacious_general PLAY_ONLY=\ ExecAndSet(title,audacious -t;audtool current-song|sed 's/%20/ /g'); PLAY=\ Macro(PLAY_ONLY);\ Timer(AUDACIOUS_TITLE,$(UpdateTimeout),0) RWD=\ Exec(audtool playback-seek-relative -5); FF=\ Exec(audtool playback-seek-relative 5); PREV=\ ExecAndSet(title,audacious -r;audtool current-song|sed 's/%20/ /g');\ Macro(AUDACIOUS_TITLE); STOP=\ Macro(AUDACIOUS_TITLE_CANCEL);\ Exec(audacious -s);\ Set(title,);\ Set(status,); NEXT=\ ExecAndSet(title,audacious -f;audtool current-song|sed 's/%20/ /g');\ Macro(AUDACIOUS_TITLE); PAUSE=\ Exec(audacious -t); APP_QUIT=\ Macro(AUDACIOUS_TITLE_CANCEL);\ Exec(audtool shutdown); (ExitMode)=\ Macro(AUDACIOUS_TITLE_CANCEL); % custom volume control AUDACIOUS_VOL-=\ Exec(V=`audtool get-volume`;audtool set-volume `expr $V - 5`) AUDACIOUS_MUTE=\ Make(var,au_volume,\ if [ "x$(au_volume)" = "x-1" ]; then \ audtool get-volume;audtool set-volume 0; \ else \ audtool set-volume $(au_volume); echo "-1"; \ fi); AUDACIOUS_VOL+=\ Exec(V=`audtool get-volume`;audtool set-volume `expr $V + 5`) VOL-=Macro(AUDACIOUS_VOL-) VOL+=Macro(AUDACIOUS_VOL+) Shuffle=\ Exec(audtool playlist-shuffle-toggle); Repeat=\ Exec(audtool playlist-repeat-toggle); Files=\ Make(mode,audacious_filebrowser); Playlist=\ Make(mode,audacious_playlist); RUN_IF_NEED=\ Exec(P=`ps auxc|grep audacious`; if [ "x$P" = "x" ]; then audacious -e& fi);\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch audacious);\ Macro(AUDACIOUS_TITLE_CHECK); RUN_OR_QUIT=\ Exec(P=`ps auxc|grep audacious`;if [ "x$P" = "x" ]; then audacious -e& else audtool shutdown; fi); AUDACIOUS_TITLE_GENERAL=\ ExecAndSet(title,audtool current-song|sed 's/%20/ /g'); AUDACIOUS_TITLE_CHECK=\ Macro(AUDACIOUS_START_TIMER,audtool playback-playing;echo $?);\ % AUDACIOUS_TITLE must be defined in child modes AUDACIOUS_START_TIMER=\ Timer(AUDACIOUS_TITLE,$(UpdateTimeout),0) AUDACIOUS_TITLE_CANCEL=\ Timer(AUDACIOUS_TITLE,cancel); APP_PLAY_STATUS=\ Make(var,audacious_status,audtool playback-status);\ Make(var,app_status,if [ "x$(audacious_status)" = "xplaying" ]; then echo playing; else echo paused; fi); Layout 3x4=\ Make(mode,audacious_3x4); Layout 7x1=\ Make(mode,audacious_7x1); Layout 5x1=\ Make(mode,audacious_5x1); [ModeEnd] [Mode]=audacious_3x4 : audacious_general,default_player % (EnterMode) by Utils/aliases-server-player.cfg APP_POST_SETUP=\ Make(var,au_volume,by_value,-1);\ Make(var,audacious_layout,by_value,3x4); APP_MENU=\ Set(menu,replace,Files,Playlist,Shuffle,Repeat,Layout 7x1,Layout 5x1,Run/Quit,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % custom volume control 1=Macro(AUDACIOUS_VOL-) 2=Macro(AUDACIOUS_MUTE) 3=Macro(AUDACIOUS_VOL+) AUDACIOUS_TITLE=\ Macro(AUDACIOUS_TITLE_GENERAL); [ModeEnd] [Mode]=audacious_cover % Next Cover,Previous Cover,Update Cover by Utils/aliases-server-player.cfg % PowerMgmt by Utils/aliases-server.cfg Mute=\ Macro(AUDACIOUS_MUTE); AUDACIOUS_TITLE=\ Macro(AUDACIOUS_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file,\ audtool current-song-tuple-data file-path|\ sed "s/file:\/\///;s/'/'\\\''/g;s/\//\'\/\'/g;s/\/'$/\//g;s/^'\//\//");\ Macro(DEFAULT_COVER); Help=\ Macro(DEFAULT_HELP); [ModeEnd] [Mode]=audacious_7x1 : audacious_general,default_player_7x1,audacious_cover % (EnterMode) by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Files,Playlist,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,au_volume,by_value,-1);\ Make(var,audacious_layout,by_value,7x1); [ModeEnd] [Mode]=audacious_5x1 : audacious_general,default_player_5x1,audacious_cover PLAY=\ Macro(PLAY_ONLY); % (EnterMode) by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Files,Playlist,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,au_volume,by_value,-1);\ Make(var,audacious_layout,by_value,5x1); APP_TITLE=\ Macro(AUDACIOUS_TITLE); [ModeEnd] [Mode]=audacious_playlist (EnterMode)=\ ExecAndSet(list,replace,Playlist,\ audtool playlist-display|tr -s ' '|cut -f 2 -d "|"|grep -v " tracks."|grep -v "Total length"|\ sed 's/%20/ /g;s/,/\r/g;s/$/,/;s/(/-/g;s/)/-/g');\ Set(menu,replace,Choose,Remove,Remove All); (ExitMode)=\ Set(list,close);\ Macro(AUDACIOUS_TITLE_CHECK); Back($$)=\ Make(mode,audacious_$(audacious_layout)); Choose($$)=\ Exec(audtool playlist-jump $(Index)); Push($$)=\ Macro(Choose($$)); Remove($$)=\ Exec(audtool playlist-delete $(Index));\ ExecAndSet(list,replace,Playlist,\ sleep 1;audtool playlist-display|tr -s ' '|cut -f 2 -d "|"|grep -v " tracks."|grep -v "Total length"|\ sed 's/%20/ /g;s/,/\r/g;s/$/,/;s/(/-/g;s/)/-/g');\ Remove All($$)=\ ExecAndSet(list,clear);\ Exec(audtool playlist-clear); [ModeEnd] [Mode]=audacious_nobutton % bug-prone :) 1=Make(mode,audacious_$(audacious_layout)); 2=Make(mode,audacious_$(audacious_layout)); 3=Make(mode,audacious_$(audacious_layout)); 4=Make(mode,audacious_$(audacious_layout)); 5=Make(mode,audacious_$(audacious_layout)); 6=Make(mode,audacious_$(audacious_layout)); 7=Make(mode,audacious_$(audacious_layout)); 8=Make(mode,audacious_$(audacious_layout)); 9=Make(mode,audacious_$(audacious_layout)); *=Make(mode,audacious_$(audacious_layout)); 0=Make(mode,audacious_$(audacious_layout)); #=Make(mode,audacious_$(audacious_layout)); [ModeEnd] % rely on $(audacious_layout) variable [Mode]=audacious_filebrowser:audacious_nobutton (EnterMode)=\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); (ExitMode)=\ Set(list,close);\ Macro(AUDACIOUS_TITLE_CHECK); UpdateMenu=\ Set(menu,replace,GoTo,Add,Go Home); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v4i.cfg Add($$)=\ Exec(audtool playlist-addurl "$(fbrowser_dir)"/$(Param)); Back($$)=\ Make(mode,audacious_$(audacious_layout)); [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/mediacenter.cfg������������������������������������������������0000644�0002322�0002322�00000046024�12664332726�022716� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % mediacenter, anyremote configuration file. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Mediacenter GuiAppType=Application GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Configuration file with basic mediacenter functionality. [Protocol]=Server % Make(var,mediacenter_audio_backend,by_value,);\ % Make(var,mediacenter_video_backend,by_value,);\ % Make(var,mediacenter_pix_backend,by_value,);\ % Make(var,mediacenter_presentation_backend,by_value,);\ % (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(TEST_IMAGEMAGIC);\ Make(var,cover_force,by_value,);\ Make(var,cover_index,by_value,1);\ Make(var,cover_size,by_value,64);\ Make(var,mediacenter_weather_location,by_value,);\ Make(var,mediacenter_audio_backend,$(CfgDir)/Utils/registry.sh $(TmpDir) get mediacenter_audio_backend);\ Make(var,mediacenter_video_backend,$(CfgDir)/Utils/registry.sh $(TmpDir) get mediacenter_video_backend);\ Make(var,mediacenter_pix_backend,$(CfgDir)/Utils/registry.sh $(TmpDir) get mediacenter_pix_backend);\ Make(var,mediacenter_presentation_backend,$(CfgDir)/Utils/registry.sh $(TmpDir) get mediacenter_presentation_backend);\ Make(var,mediacenter_activity,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get mediacenter_activity`;\ if [ "x$V" = "x" ]; then echo "setup"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set mediacenter_activity $(mediacenter_activity)); (Connect)=\ Make(mode,mediacenter_chooser); MEDIACENTER_MENU=\ Set(menu,add,Mediacenter); MEDIACENTER_CALLBACK=\ Set(popup,show,Loading...);\ Macro(APP_QUIT);\ Make(flush);\ Include($(CfgDir)/Server-mode/mediacenter.cfg);\ Macro((Init));\ Macro((Connect));\ Set(popup,hide);\ Make(mode,mediacenter_chooser) Mediacenter=\ Macro(MEDIACENTER_CALLBACK); Mediacenter($$)=\ Macro(MEDIACENTER_CALLBACK); SET_WEATHER_LOCATION=\ Make(var,mediacenter_weather_location,$(CfgDir)/Utils/registry.sh $(TmpDir) get mediacenter_weather_location); [Mode]=mediacenter_chooser (EnterMode)=\ Set(status,);\ Set(layout,7x1,choose,3,ticker);\ Set(icons,Mediacenter,\ 1,rewind,2,stop,3,forward,4,none,5,none,6,none,7,none);\ Get(cover_size);\ Get(is_exists,cover,cover-audio);\ Get(is_exists,cover,cover-computer);\ Get(is_exists,cover,cover-files);\ Get(is_exists,cover,cover-pix);\ Get(is_exists,cover,cover-presentation);\ Get(is_exists,cover,cover-setup);\ Get(is_exists,cover,cover-video);\ Get(is_exists,cover,cover-weather);\ Macro(MEDIA_LAYOUT);\ Macro(SET_MENU); % Get(is_exists,cover,cover-audio);\ % Set(layout,7x1,choose,3,ticker,up,NEXT_ACTIVITY,down,PREV_ACTIVITY);\ SET_MENU=\ Set(menu,replace,Help); Help=Set(text,replace,Help,Choose what You want); Back=\ Set(text,close); CoverExists($$)=\ Make(none); CoverSize($$)=\ Make(var,cover_size,by_value,$(Index)); CoverNotExists(cover-audio)=\ Set(popup,show,Loading cover (1) ...);\ Make(var,cover_name,by_value,cover-audio);\ Macro(MEDIA_COVER_GEN);\ Set(popup,hide); CoverNotExists(cover-computer)=\ Set(popup,show,Loading cover (2) ... );\ Make(var,cover_name,by_value,cover-computer);\ Macro(MEDIA_COVER_GEN);\ Set(popup,hide); CoverNotExists(cover-files)=\ Set(popup,show,Loading cover (3) ...);\ Make(var,cover_name,by_value,cover-files);\ Macro(MEDIA_COVER_GEN);\ Set(popup,hide); CoverNotExists(cover-pix)=\ Set(popup,show,Loading cover (4) ...);\ Make(var,cover_name,by_value,cover-pix);\ Macro(MEDIA_COVER_GEN);\ Set(popup,hide); CoverNotExists(cover-presentation)=\ Set(popup,show,Loading cover (5) ...);\ Make(var,cover_name,by_value,cover-presentation);\ Macro(MEDIA_COVER_GEN);\ Set(popup,hide); CoverNotExists(cover-setup)=\ Set(popup,show,Loading cover (6) ...);\ Make(var,cover_name,by_value,cover-setup);\ Macro(MEDIA_COVER_GEN);\ Set(popup,hide); CoverNotExists(cover-video)=\ Set(popup,show,Loading cover (7) ...);\ Make(var,cover_name,by_value,cover-video);\ Macro(MEDIA_COVER_GEN);\ Set(popup,hide); CoverNotExists(cover-weather)=\ Set(popup,show,Loading cover (8) ...);\ Make(var,cover_name,by_value,cover-weather);\ Macro(MEDIA_COVER_GEN);\ Set(popup,hide); MEDIA_TITLE=\ ExecAndSet(title,\ if [ x$(mediacenter_activity) = "xsetup" ]; then echo "Setup"; fi;\ if [ x$(mediacenter_activity) = "xaudio" ]; then echo "Audio"; fi;\ if [ x$(mediacenter_activity) = "xvideo" ]; then echo "Video"; fi;\ if [ x$(mediacenter_activity) = "xpix" ]; then echo "Photo"; fi;\ if [ x$(mediacenter_activity) = "xpresentation" ]; then echo "Presentation"; fi;\ if [ x$(mediacenter_activity) = "xweather" ]; then echo "Weather"; fi;\ if [ x$(mediacenter_activity) = "xfiles" ]; then echo "Files"; fi;\ if [ x$(mediacenter_activity) = "xcomputer" ]; then echo "Computer"; fi;); MEDIA_STATUS=\ Make(var,mediacenter_status_action,\ if [ "x$(mediacenter_activity)" = "xweather" ]; then echo "WEATHER_STATUS"; else echo "DO_MEDIA_STATUS"; fi);\ Macro($(mediacenter_status_action)); MEDIA_COVER=\ Set(cover,by_name,cover-$(mediacenter_activity)); MEDIA_COVER_GEN=\ Make(var,coverconverted,convert -resize $(cover_size)x$(cover_size) -depth 8 -background transparent \ "$(CfgDir)/Icons/common/$(cover_name).png" "$(TmpDir)"/$(cover_name).png 2> /dev/null;\ echo "$(TmpDir)"/$(cover_name).png);\ Set(image,cover,$(cover_name),$(coverconverted)); WEATHER_STATUS=\ Macro(SET_WEATHER_LOCATION,if [ "x$(mediacenter_weather_location)" = "x" ]; then echo 0; else echo 1; fi);\ ExecAndSet(status,$(CfgDir)/Utils/weather.sh -temperature $(mediacenter_weather_location)); DO_MEDIA_STATUS=\ ExecAndSet(status,\ if [ x$(mediacenter_activity) = "xaudio" ]; then echo "$(mediacenter_audio_backend)"; fi;\ if [ x$(mediacenter_activity) = "xvideo" ]; then echo "$(mediacenter_video_backend)"; fi;\ if [ x$(mediacenter_activity) = "xpix" ]; then echo "$(mediacenter_pix_backend)"; fi;\ if [ x$(mediacenter_activity) = "xpresentation" ]; then echo "$(mediacenter_presentation_backend)"; fi;); MEDIA_LAYOUT=\ Macro(MEDIA_TITLE);\ Macro(MEDIA_COVER);\ Macro(MEDIA_STATUS); VOL+=Macro(NEXT_ACTIVITY); VOL-=Macro(PREV_ACTIVITY); SlideLeft =Macro(NEXT_ACTIVITY); SlideRight=Macro(PREV_ACTIVITY); 1=Macro(PREV_ACTIVITY); 2=Macro(CHOOSE_ACTIVITY); 3=Macro(NEXT_ACTIVITY); 4=Make(none); 5=Make(none); 6=Make(none); 7=Make(none); 8=Make(none); 9=Make(none); *=Make(none); 0 0=Set(image,remove,covers); #=Make(none); COVER=\ Macro(CHOOSE_ACTIVITY); CHOOSE_ACTIVITY=\ Make(mode,mediacenter_$(mediacenter_activity)); NEXT_ACTIVITY=\ Make(var,mediacenter_activity,\ if [ x$(mediacenter_activity) = "xsetup" ]; then echo "audio"; fi;\ if [ x$(mediacenter_activity) = "xaudio" ]; then echo "video"; fi;\ if [ x$(mediacenter_activity) = "xvideo" ]; then echo "pix"; fi;\ if [ x$(mediacenter_activity) = "xpix" ]; then echo "presentation"; fi;\ if [ x$(mediacenter_activity) = "xpresentation" ]; then echo "weather"; fi;\ if [ x$(mediacenter_activity) = "xweather" ]; then echo "files"; fi;\ if [ x$(mediacenter_activity) = "xfiles" ]; then echo "computer"; fi;\ if [ x$(mediacenter_activity) = "xcomputer" ]; then echo "setup"; fi;);\ Macro(MEDIA_LAYOUT); PREV_ACTIVITY=\ Make(var,mediacenter_activity,\ if [ x$(mediacenter_activity) = "xsetup" ]; then echo "computer"; fi;\ if [ x$(mediacenter_activity) = "xaudio" ]; then echo "setup"; fi;\ if [ x$(mediacenter_activity) = "xvideo" ]; then echo "audio"; fi;\ if [ x$(mediacenter_activity) = "xpix" ]; then echo "video"; fi;\ if [ x$(mediacenter_activity) = "xpresentation" ]; then echo "pix"; fi;\ if [ x$(mediacenter_activity) = "xweather" ]; then echo "presentation"; fi;\ if [ x$(mediacenter_activity) = "xfiles" ]; then echo "weather"; fi;\ if [ x$(mediacenter_activity) = "xcomputer" ]; then echo "files"; fi;);\ Macro(MEDIA_LAYOUT); [ModeEnd] [Mode]=mediacenter_setup_general SET_MENU=\ Set(menu,replace,Back,Help); Back=\ Set(text,close);\ Make(mode,mediacenter_chooser); Back($$)=\ Set(list,close);\ Make(mode,mediacenter_chooser); Push($$)=\ Macro(CHOOSE); Choose($$)=\ Macro(CHOOSE); [ModeEnd] [Mode]=mediacenter_setup (EnterMode)=\ Macro(SETUP_LIST);\ Get(is_exists,cover,cover-audio); SETUP_LIST=\ Set(list,replace,Choose,Audio,Video,Photo,Presentation,Weather,Client,Disconnect);\ Set(menu,replace,Choose,Help); Help($$)=\ Set(text,replace,Help,Choose subcategory); Back=\ Macro(SETUP_LIST); Back($$)=\ Set(list,close);\ Make(mode,mediacenter_chooser); Push($$)=\ Macro(CHOOSE); Choose($$)=\ Macro(CHOOSE); CHOOSE=\ Make(var,mediacenter_mode,by_value,mediacenter_setup);\ Make(var,mediacenter_setup_activity,\ if [ "x$(Param)" = "xAudio" ]; then echo "audio"; fi;\ if [ "x$(Param)" = "xVideo" ]; then echo "video"; fi;\ if [ "x$(Param)" = "xPhoto" ]; then echo "pix"; fi;\ if [ "x$(Param)" = "xPresentation" ]; then echo "presentation"; fi;\ if [ "x$(Param)" = "xWeather" ]; then echo "weather"; fi;\ if [ "x$(Param)" = "xDisconnect" ]; then echo "disconnect"; fi;\ if [ "x$(Param)" = "xClient" ]; then echo "client"; fi;);\ Make(mode,mediacenter_setup_$(mediacenter_setup_activity)); [ModeEnd] [Mode]=mediacenter_setup_disconnect (EnterMode)=\ Make(disconnect);\ Make(mode,default); [ModeEnd] % rely on $(mediacenter_mode) [Mode]=mediacenter_setup_audio : mediacenter_setup_general (EnterMode)=\ ExecAndSet(list,replace,Choose Backend,$(CfgDir)/Utils/get-installed.sh 'MEDIACENTER audio' cfg-data);\ Set(menu,replace,Choose,Help); Help($$)=\ Set(text,replace,Help,Choose audio backend); Push($$)=\ Macro(CHOOSE); Choose($$)=\ Macro(CHOOSE); CHOOSE=\ Make(var,mediacenter_audio_backend,by_value,$(Param));\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set mediacenter_audio_backend $(mediacenter_audio_backend));\ Make(mode,$(mediacenter_mode)); [ModeEnd] % rely on $(mediacenter_mode) [Mode]=mediacenter_setup_video : mediacenter_setup_general (EnterMode)=\ ExecAndSet(list,replace,Choose Backend,$(CfgDir)/Utils/get-installed.sh 'MEDIACENTER video' cfg-data);\ Set(menu,replace,Choose,Help); Help($$)=\ Set(text,replace,Help,Choose video backend); Push($$)=\ Macro(CHOOSE); Choose($$)=\ Macro(CHOOSE); CHOOSE=\ Make(var,mediacenter_video_backend,by_value,$(Param));\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set mediacenter_video_backend $(mediacenter_video_backend));\ Make(mode,$(mediacenter_mode)); [ModeEnd] % rely on $(mediacenter_mode) [Mode]=mediacenter_setup_pix : mediacenter_setup_general (EnterMode)=\ ExecAndSet(list,replace,Choose Backend,$(CfgDir)/Utils/get-installed.sh 'MEDIACENTER photo' cfg-data);\ Set(menu,replace,Choose,Help); Help($$)=\ Set(text,replace,Help,Choose photo viewer backend); Push($$)=\ Macro(CHOOSE); Choose($$)=\ Macro(CHOOSE); CHOOSE=\ Make(var,mediacenter_pix_backend,by_value,$(Param));\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set mediacenter_pix_backend $(mediacenter_pix_backend));\ Make(mode,$(mediacenter_mode)); [ModeEnd] % rely on $(mediacenter_mode) [Mode]=mediacenter_setup_presentation : mediacenter_setup_general (EnterMode)=\ ExecAndSet(list,replace,Choose Backend,$(CfgDir)/Utils/get-installed.sh 'MEDIACENTER presentation' cfg-data);\ Set(menu,replace,Choose,Help); Help($$)=\ Set(text,replace,Help,Choose presentation viewer backend); Push($$)=\ Macro(CHOOSE); Choose($$)=\ Macro(CHOOSE); CHOOSE=\ Make(var,mediacenter_presentation_backend,by_value,$(Param));\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set mediacenter_presentation_backend $(mediacenter_presentation_backend));\ Make(mode,$(mediacenter_mode)); [ModeEnd] % rely on $(mediacenter_mode) [Mode]=mediacenter_setup_weather : mediacenter_setup_general (EnterMode)=\ Set(editfield,Enter location or METAR code,Location,); Ok($$)=\ Make(var,mediacenter_weather_location,echo "$(Param)"|sed 's/ /%20/g');\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set mediacenter_weather_location $(mediacenter_weather_location));\ Make(mode,$(mediacenter_mode)); [ModeEnd] % rely on $(mediacenter_mode) [Mode]=mediacenter_setup_client : mediacenter_setup_general (EnterMode)=\ Set(list,replace,Choose,Layout Setup, Clear Covers,Clear Icons,Clear Cache);\ Set(menu,replace,Choose,Help); Help($$)=\ Set(text,replace,Help,Choose subcategory); Back($$)=\ Make(mode,mediacenter_setup); MEDIACENTER_SETUP_LAYOUT=\ Set(popup,show,Loading...);\ Make(flush);\ Include($(CfgDir)/Server-mode/layoutSetup.cfg);\ Macro((Init));\ Macro((Connect));\ Include($(CfgDir)/Server-mode/mediacenter.cfg);\ Macro(MEDIACENTER_MENU);\ Set(popup,hide); MEDIACENTER_CLEAR_COVERS=\ Set(image,remove,covers);\ Make(mode,mediacenter_setup); MEDIACENTER_CLEAR_ICONS=\ Set(image,remove,icons);\ Make(mode,mediacenter_setup); MEDIACENTER_CLEAR_CACHE=\ Set(image,clear_cache);\ Make(mode,mediacenter_setup); Push($$)=\ Macro(CHOOSE); Choose($$)=\ Macro(CHOOSE); CHOOSE=\ Make(var,mediacenter_setup_client_activity,\ if [ "x$(Param)" = "xLayout Setup" ]; then echo "MEDIACENTER_SETUP_LAYOUT"; fi;\ if [ "x$(Param)" = "xClear Covers" ]; then echo "MEDIACENTER_CLEAR_COVERS"; fi;\ if [ "x$(Param)" = "xClear Icons" ]; then echo "MEDIACENTER_CLEAR_ICONS"; fi;\ if [ "x$(Param)" = "xClear Cache" ]; then echo "MEDIACENTER_CLEAR_CACHE"; fi;);\ Macro($(mediacenter_setup_client_activity)); [ModeEnd] [Mode]=mediacenter_general SELECT_GENERAL=\ Set(popup,show,Loading...);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set mediacenter_activity $(mediacenter_activity));\ Make(flush);\ Include($(CfgDir)/Server-mode/$(mediacenter_backend).cfg);\ Macro((Init));\ Macro((Connect));\ Include($(CfgDir)/Server-mode/mediacenter.cfg);\ Macro(MEDIACENTER_MENU);\ Set(popup,hide); [ModeEnd] [Mode]=mediacenter_audio : mediacenter_general (EnterMode)=\ Macro(LOAD_VAR,if [ "x$(mediacenter_audio_backend)" = "x" ]; then echo 0; else echo 1; fi);\ Make(var,mediacenter_audio_action,if [ "x$(mediacenter_audio_backend)" = "x" ]; then echo NONE; else echo SELECT; fi);\ Macro($(mediacenter_audio_action)); LOAD_VAR=\ Make(var,mediacenter_audio_backend,$(CfgDir)/Utils/registry.sh $(TmpDir) get mediacenter_audio_backend); NONE=\ Make(var,mediacenter_mode,by_value,mediacenter_audio);\ Make(mode,mediacenter_setup_audio); SELECT=\ Make(var,mediacenter_backend,by_value,$(mediacenter_audio_backend));\ Macro(SELECT_GENERAL); [ModeEnd] [Mode]=mediacenter_video : mediacenter_general (EnterMode)=\ Macro(LOAD_VAR,if [ "x$(mediacenter_video_backend)" = "x" ]; then echo 0; else echo 1; fi);\ Make(var,mediacenter_video_action,if [ "x$(mediacenter_video_backend)" = "x" ]; then echo NONE; else echo SELECT; fi);\ Macro($(mediacenter_video_action)); LOAD_VAR=\ Make(var,mediacenter_video_backend,$(CfgDir)/Utils/registry.sh $(TmpDir) get mediacenter_video_backend); NONE=\ Make(var,mediacenter_mode,by_value,mediacenter_video);\ Make(mode,mediacenter_setup_video); SELECT=\ Make(var,mediacenter_backend,by_value,$(mediacenter_video_backend));\ Macro(SELECT_GENERAL); [ModeEnd] [Mode]=mediacenter_presentation : mediacenter_general (EnterMode)=\ Macro(LOAD_VAR,if [ "x$(mediacenter_presentation_backend)" = "x" ]; then echo 0; else echo 1; fi);\ Make(var,mediacenter_presentation_action,if [ "x$(mediacenter_presentation_backend)" = "x" ]; then echo NONE; else echo SELECT; fi);\ Macro($(mediacenter_presentation_action)); LOAD_VAR=\ Make(var,mediacenter_presentation_backend,$(CfgDir)/Utils/registry.sh $(TmpDir) get mediacenter_presentation_backend); NONE=\ Make(var,mediacenter_mode,by_value,mediacenter_presentation);\ Make(mode,mediacenter_setup_presentation); SELECT=\ Make(var,mediacenter_backend,by_value,$(mediacenter_presentation_backend));\ Macro(SELECT_GENERAL); [ModeEnd] [Mode]=mediacenter_pix : mediacenter_general (EnterMode)=\ Macro(LOAD_VAR,if [ "x$(mediacenter_pix_backend)" = "x" ]; then echo 0; else echo 1; fi);\ Make(var,mediacenter_pix_action,if [ "x$(mediacenter_pix_backend)" = "x" ]; then echo NONE; else echo SELECT; fi);\ Macro($(mediacenter_pix_action)); LOAD_VAR=\ Make(var,mediacenter_pix_backend,$(CfgDir)/Utils/registry.sh $(TmpDir) get mediacenter_pix_backend); NONE=\ Make(var,mediacenter_mode,by_value,mediacenter_pix);\ Make(mode,mediacenter_setup_pix); SELECT=\ Make(var,mediacenter_backend,by_value,$(mediacenter_pix_backend));\ Macro(SELECT_GENERAL); [ModeEnd] [Mode]=mediacenter_weather : mediacenter_general (EnterMode)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set mediacenter_activity $(mediacenter_activity));\ Macro(LOAD_VAR,if [ "x$(mediacenter_weather_location)" = "x" ]; then echo 0; else echo 1; fi);\ Make(var,mediacenter_weather_action,if [ "x$(mediacenter_weather_location)" = "x" ]; then echo NONE; else echo Current; fi);\ Macro($(mediacenter_weather_action)); %TEST_WEATHER=\ % Exec(P=`which weather|grep weather|grep -v no|wc -l|tr -d " "`; \ % if [ "x$P" != "x1" ]; then \ % $(CfgDir)/Utils/message.sh "ERROR: weather 2.0 (from weather-util package) not found"; \ % else \ % V=`weather --version 2> /dev/null|grep 2.0|wc -l|tr -d " "`; \ % if [ "x$V" != "x1" ]; then \ % $(CfgDir)/Utils/message.sh "ERROR: weather 2.0 (from weather-util package) not found"; \ % fi; \ % fi); LOAD_VAR=\ Macro(SET_WEATHER_LOCATION); NONE=\ Make(var,mediacenter_mode,by_value,mediacenter_weather);\ Make(mode,mediacenter_setup_weather); Current=\ ExecAndSet(text,replace,Weather,$(CfgDir)/Utils/weather.sh -current $(mediacenter_weather_location));\ Set(menu,replace,Forecast); Forecast=\ ExecAndSet(text,replace,Weather,$(CfgDir)/Utils/weather.sh -forecast $(mediacenter_weather_location));\ Set(menu,replace,Current); Back=\ Set(text,close);\ Make(mode,mediacenter_chooser); [ModeEnd] [Mode]=mediacenter_files (EnterMode)=\ Set(popup,show,Loading...);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set mediacenter_activity $(mediacenter_activity));\ Make(flush);\ Include($(CfgDir)/Server-mode/fileManager3.cfg);\ Macro((Init));\ Macro((Connect));\ Include($(CfgDir)/Server-mode/mediacenter.cfg);\ Macro(MEDIACENTER_MENU);\ Set(popup,hide); [ModeEnd] [Mode]=mediacenter_computer (EnterMode)=\ Make(var,return_mode,by_value,mediacenter_chooser);\ Make(mode,power_manager); [ModeEnd] [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/pingTest.cfg���������������������������������������������������0000644�0002322�0002322�00000003170�12073567677�022237� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for anyRemote performancs testing. (Server-mode) % % STATUS unknown % XTEST no % SOUND no % ENV no GuiAppName=parser test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Test of anyRemote performance. [Protocol]=Server (Init)=\ Exec(echo Inited); (Connect)=\ Set(parameter,debug,on);\ Exec(echo Connected);\ Set(status,0);\ Set(title,choose number of pings);\ Set(icons,List Example,\ 1,fit,2,fit,3,fit,\ 4,default,5,default,6,default,\ 7,default,8,default,9,default,\ *,question,0,no,#,default); (Disconnect)=\ Exec(echo Disconnected) (Exit)=\ Exec(echo "hello from exit handler"); InCall($$)=\ Exec(echo "Incoming call from $(Param)"); EndCall($$)=\ Exec(echo "Call finished"); * *=Set(text,replace,Help,Choose number of pings\n1 - 10\n2 - 100\n3 - 1000); Back=Set(text,close); 0=Make(exit); 1=Make(var,ping_number,by_value,10);\ Macro(STARTPING); 2=Make(var,ping_number,by_value,100);\ Macro(STARTPING); 3=Make(var,ping_number,by_value,1000);\ Macro(STARTPING); STARTPING=\ Make(var,ping_done,by_value,0);\ Make(var,starttime,date "+%s");\ Set(status,0);\ Exec(echo "start $(starttime)");\ Macro(ONE_MORE); Ping=\ Make(var,ping_done,expr $(ping_done) + 1);\ Exec(echo "ping $(ping_done) "`date "+%s"`);\ Set(status,$(ping_done));\ Make(var,is_done,if [ "x$(ping_done)" = "x$(ping_number)" ]; then echo DONE; else echo ONE_MORE; fi);\ Macro($(is_done)); ONE_MORE=\ Get(ping); DONE=\ Make(var,endtime,date "+%s");\ Make(var,elapsed,expr $(endtime) - $(starttime));\ Exec(echo "end $(endtime)");\ Exec(echo "elapsed $(elapsed)"); [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/template-player.cfg��������������������������������������������0000644�0002322�0002322�00000003712�12130537242�023524� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyRemote template configuration file for an player management (Server-mode) % prerequisites: amixer/pactl utility % % STATUS testing % XTEST no % SOUND mixer % ENV no % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio GuiAppName=Some player GuiAppBinary=player.exe GuiAppRun= P=`ps -ef|grep player.exe|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=some_player.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=anyRemote template configuration file for an player management [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,player_name,by_value,Some player);\ Include($(CfgDir)/Utils/aliases-server-player.cfg); (Connect)=\ Make(mode,some_player); [Mode]=some_player : default_player % (EnterMode) by Utils/aliases-server-player.cfg APP_PRE_SETUP=\ Exec(echo "add some specific actions, if needed"); APP_POST_SETUP=\ Exec(echo "add some specific actions, if needed"); APP_MENU=\ Set(menu,replace,Add,Some,Custom,Items,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % PowerMgmt by Utils/aliases-server.cfg Add=Exec(echo "Custom Action 1"); Some=Exec(echo "Custom Action 2"); Custom=Exec(echo "Custom Action 3"); Items=Exec(echo "Custom Action 4"); % Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg PLAY =Exec(echo play); RWD =Exec(echo rewind) FF =Exec(echo fastforward) PREV =Exec(echo previous) STOP =Exec(echo stop); NEXT =Exec(echo next) PAUSE=Exec(echo pause); RUN_OR_QUIT=\ Make(var,player_exec_cmd,\ P=`ps -ef|grep player.exe|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" = "x" ]; then echo RUN_IF_NEED else echo APP_QUIT; fi);\ Macro($(player_exec_cmd)); RUN_IF_NEED=\ Exec(P=`ps -ef|grep player.exe|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo "run player"; fi); APP_QUIT=\ Exec(echo "quit player"); [ModeEnd] [End] ������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/dragon.cfg�����������������������������������������������������0000644�0002322�0002322�00000010001�12673224605�021666� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for dragon management. (Server-mode) % % STATUS stable % XTEST no % SOUND mixer % ENV no % FBROWSER v.4i % DEF_VIDEO_PLAYER % ALL_IN_ONE % MEDIACENTER video GuiAppName=Dragon GuiAppBinary=dragon GuiAppRun=echo 'A=`qdbus 2> /dev/null|grep dragon`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=dragon.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Dragon Player is a simple video player. GuiAppVersion=echo 'V=`dragon -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi'|sh -s [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-video-player.cfg);\ Make(var,kde4_app,by_value,dragon);\ Macro(TEST_KDE4_APP);\ Make(var,app_name,by_value,Dragon);\ Make(var,do_app_init,by_value,1);\ Make(var,open_file,by_value,);\ Make(var,dragon_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get dragon_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi);\ Make(var,app_manage_mode,by_value,dragon_$(dragon_layout)); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set dragon_layout $(dragon_layout)); (Connect)=\ Make(mode,dragon_init); [Mode]=dragon_init : default_video_player_init APP_IS_RUN=\ Make(var,app_run,A=`qdbus 2> /dev/null|grep dragon`; if [ "x$A" = "x" ]; then echo 0; else echo 1; fi); [ModeEnd] [Mode]=dragon_general APP_START_IF=\ Exec(P=`qdbus|grep dragon`;\ if [ "x$P" = "x" ]; then cd "$(fbrowser_dir)";dragon $(open_file) 2> /dev/null & fi); % Application window should be present in output of "wmctrl -l" APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch dragon); APP_QUIT=\ Exec(qdbus org.mpris.dragonplayer-`qdbus 2> /dev/null|grep dragon|cut -f 2 -d '-'` /MainApplication org.kde.KApplication.quit > /dev/null); APP_FULLSCREEN=\ Exec(qdbus org.mpris.dragonplayer-`qdbus 2> /dev/null|grep dragon|cut -f 2 -d '-'` /dragonplayer/MainWindow_1 activateAction fullscreen > /dev/null); PLAY=\ Exec(qdbus org.mpris.dragonplayer-`qdbus|grep dragon|cut -f 2 -d '-'` /Player org.freedesktop.MediaPlayer.Play > /dev/null); RWD=\ Exec(qdbus org.mpris.dragonplayer-`qdbus 2> /dev/null|grep dragon|cut -f 2 -d '-'` /dragonplayer/MainWindow_1 activateAction ten_seconds_back > /dev/null) FF=\ Exec(qdbus org.mpris.dragonplayer-`qdbus 2> /dev/null|grep dragon|cut -f 2 -d '-'` /dragonplayer/MainWindow_1 activateAction ten_seconds_forward > /dev/null) STOP=\ Exec(qdbus org.mpris.dragonplayer-`qdbus|grep dragon|cut -f 2 -d '-'` /Player org.freedesktop.MediaPlayer.Stop > /dev/null) PAUSE=\ Exec(qdbus org.mpris.dragonplayer-`qdbus|grep dragon|cut -f 2 -d '-'` /Player org.freedesktop.MediaPlayer.Pause > /dev/null) Layout 3x4=\ Make(mode,dragon_3x4); Layout 5x1=\ Make(mode,dragon_5x1); [ModeEnd] [Mode]=dragon_3x4 : dragon_general,default_video_player APP_POST_SETUP=\ Make(var,dragon_layout,by_value,3x4);\ Make(var,app_manage_mode,by_value,dragon_$(dragon_layout)); APP_MENU=\ Set(menu,replace,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); * *=Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n4 Rewind\n5 Play\n6 FF\n7 File Browser\n8 Stop\n9 Fullscreen\n** Help\n0 Pause\n# Exit\nIf Rewind/FF does not work properly \nthen it is Dragon bug.) [ModeEnd] [Mode]=dragon_5x1 : dragon_general,default_video_player_5x1 APP_POST_SETUP=\ Make(var,dragon_layout,by_value,5x1);\ Make(var,app_manage_mode,by_value,dragon_$(dragon_layout)); APP_MENU=\ Set(menu,replace,Help,Mute,Quit,Fullscreen,Files,Layout 3x4,IMDB,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Fullscreen=\ Macro(APP_FULLSCREEN); DEFAULT_HELP=\ Set(text,replace,Help,Joystick Down Vol-\nJoystick Up Vol+\n1 Rewind\n2 Play\n3 FastForward\n4 Pause\n5 Stop and quit $(app_name)\nIf Rewind/FF does not work properly \nthen it is Dragon bug.); [ModeEnd] [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/exampleText.cfg������������������������������������������������0000644�0002322�0002322�00000003343�12061426047�022722� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Text example GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of anyRemote Android/J2ME clients text screen customization. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Set(parameter,debug,on);\ Set(status,);\ Set(title,Use menu or buttons);\ Set(icons,Text Example,\ 1,fit,2,fit,3,fit,\ 4,fit,5,fit,6,fit,\ 7,fit,8,fit,9,fit,\ *,question,0,fit,#,fit);\ Macro(SET_MENU); * *=Set(text,replace,Help,1 Text add\n2 Text replace\n3 Text clear\n4 Small font\n5 Medium font\n6 Large font\n7 White On Black\n8 Yellow On Blue\n9 Black On White) SET_MENU=\ Set(menu,replace,Add text,Replace text,Clear text,Small font,Medium font,Large font,White On Black, Yellow On Blue, Black On White); Back=\ Set(text,close);\ Macro(SET_MENU); 1=Macro(Add text) 2=Macro(Replace text) 3=Macro(Clear text) 4=Macro(Small font) 5=Macro(Medium font) 6=Macro(Large font) 7=Macro(White On Black) 8=Macro(Yellow On Blue) 9=Macro(Black On White) Add text =Set(text,add,Example,An example of text. );Macro(SET_MENU); Replace text =Set(text,replace,Example,Another example of text. );Macro(SET_MENU); Clear text =Set(text,clear);Macro(SET_MENU); Small font =Set(text,font,small);Macro(SET_MENU); Medium font =Set(text,font,medium);Macro(SET_MENU); Large font =Set(text,font,large);Macro(SET_MENU); White On Black=Set(text,bg,0,0,0);Set(text,fg,255,255,255);Macro(SET_MENU); Black On White=Set(text,bg,255,255,255);Set(text,fg,0,0,0);Macro(SET_MENU); Yellow On Blue=Set(text,bg,0,128,255);Set(text,fg,255,255,0);Macro(SET_MENU); [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/tomahawk.cfg���������������������������������������������������0000644�0002322�0002322�00000015502�12130537720�022233� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for tomahawk (http://www.tomahawk-player.org/) (Server-mode) % % STATUS non-stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER % ALL_IN_ONE % TODO https://bugs.tomahawk-player.org/browse/TWK-1161 % Initial playlist creation % Shuffle do not works with playing queue GuiAppName=Tomahawk GuiAppBinary=tomahawk GuiAppVersion= GuiAppRun=echo 'A=`pgrep tomahawk`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=tomahawk.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Tomahawk is a music player that fundamentally changes the way music is consumed and shared. It decouples the name of the song from the source it was shared from - and fulfills the request using all of your available sources. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(TEST_QDBUS);\ Make(var,player_name,by_value,Tomahawk);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,tomahahk_dbus,if [ "x$(Dbus)" = "xyes" ]; then echo DBUS; else echo NODBUS; fi);\ Make(var,tomahahk_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get tomahahk_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set tomahahk_layout $(tomahahk_layout)); (Connect)=\ Make(mode,tomahahk_$(tomahahk_layout)); (Disconnect)=\ Timer(TOMAHAWK_TITLE,cancel); [Mode]=tomahahk_general TOMAHAWK_TITLE_GENERAL=\ Make(var,alb,qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Metadata|grep xesam:album:|sed 's/xesam:album: //');\ Make(var,art,qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Metadata|grep xesam:artist:|sed 's/xesam:artist: //');\ Make(var,tit,qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Metadata|grep xesam:title:|sed 's/xesam:title: //');\ Set(title,$(alb) - $(tit));\ Set(status,$(art)); TOMAHAWK_SET_VOL=\ Make(var,dummy,sleep 1;echo 0);\ Macro(DEFAULT_VOLUME_GET);\ Set(volume,$(default_mixer_value)); % TOMAHAWK_TITLE should be defined in child modes TOMAHAWK_TIMER=\ Macro(TOMAHAWK_TITLE);\ Timer(TOMAHAWK_TITLE,$(UpdateTimeout),0); TOMAHAWK_TIMER_CANCEL=\ Timer(TOMAHAWK_TITLE,cancel);\ Set(title,);\ Set(status,); TOMAHAWK_CHECK_TIMER=\ Make(var,tomahawk_status,qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus);\ Make(var,timer_action,if [ "x$(tomahawk_status)" = "xPlaying" ]; \ then echo TOMAHAWK_TIMER; else echo TOMAHAWK_TIMER_CANCEL; fi);\ Macro($(timer_action)); RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh tomahawk); RUN_OR_QUIT=\ Exec(ID=`id -u`;P=`pgrep -u $ID tomahawk`; \ if [ "x$P" = "x" ]; then \ tomahawk 2> /dev/null&; \ else \ qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Quit; \ fi);\ Set(title,);\ Set(status,); PLAY_ONLY=\ Exec(qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause); PLAY=\ Macro(PLAY_ONLY);\ Macro(TOMAHAWK_TIMER); RWD=\ Exec(qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Seek -5000000); FF=\ Exec(qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Seek 5000000); PREV=\ Exec(qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous);\ Macro(TOMAHAWK_TITLE); NEXT=\ Exec(qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next);\ Macro(TOMAHAWK_TITLE); STOP=\ Macro(TOMAHAWK_TIMER_CANCEL);\ Exec(qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop); PAUSE=\ Exec(qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause); APP_QUIT=\ Macro(TOMAHAWK_TIMER_CANCEL);\ Exec(qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Quit); APP_PLAY_STATUS=\ Make(var,tomahawk_status,qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus);\ Make(var,app_status,if [ "x$(tomahawk_status)" = "xPlaying" ]; then echo playing; else echo paused; fi); Shuffle=\ Exec(P=`qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle`; \ if [ "x$P" = "xtrue" ]; \ then \ qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle false & \ else \ qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle true & \ fi); % Repeat does not works https://bugs.tomahawk-player.org/browse/TWK-1161 Layout 3x4=\ Make(mode,tomahahk_3x4); Layout 7x1=\ Make(mode,tomahahk_7x1); Layout 5x1=\ Make(mode,tomahahk_5x1); [ModeEnd] [Mode]=tomahahk_3x4 : tomahahk_general, default_player % (EnterMode) by Utils/aliases-server-player.cfg % PowerMgmt by Utils/aliases-server.cfg APP_MENU=\ Set(menu,replace,Shuffle,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU); APP_POST_SETUP=\ Make(var,tomahahk_layout,by_value,3x4);\ Macro(TOMAHAWK_CHECK_TIMER); TOMAHAWK_TITLE=\ Macro(TOMAHAWK_TITLE_GENERAL); [ModeEnd] [Mode]=tomahahk_cover TOMAHAWK_TITLE=\ Macro(TOMAHAWK_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,tomahawk_cover_file,qdbus org.mpris.MediaPlayer2.tomahawk /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Metadata|\ grep mpris:artUrl:|sed "s/mpris:artUrl: file:\/\///"|\ sed "s/.*\/\/\//\//;s/'/'\\\''/g;s/\//\'\/\'/g;s/$/\'/g;s/^'\//\//;s/%20/ /g");\ Make(var,coverfile,echo "$(tomahawk_cover_file)"|md5sum|cut -f 1 -d ' ');\ Make(var,dummy,\ if [ "x$(tomahawk_cover_file)" != "x" ]; then \ convert -resize $(cover_size)x$(cover_size) -depth -background transparent \ $(tomahawk_cover_file) $(TmpDir)/album_covers/$(coverfile)-$(cover_size).png;\ echo "$(TmpDir)/album_covers/$(coverfile)-$(cover_size).png";\ fi);\ Set(cover,noname,$(TmpDir)/album_covers/$(coverfile)-$(cover_size).png); [ModeEnd] [Mode]=tomahahk_7x1 : tomahahk_general, tomahahk_cover, default_player_7x1 APP_MENU=\ Set(menu,replace,Shuffle,Mute,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU); APP_POST_SETUP=\ Make(var,tomahahk_layout,by_value,7x1); [ModeEnd] [Mode]=tomahahk_5x1 : tomahahk_general, tomahahk_cover, default_player_5x1 APP_MENU=\ Set(menu,replace,Shuffle,Mute,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU); APP_POST_SETUP=\ Make(var,tomahahk_layout,by_value,5x1); APP_TITLE=\ Macro(TOMAHAWK_TITLE); PLAY=\ Macro(PLAY_ONLY); [ModeEnd] [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/comix.cfg������������������������������������������������������0000644�0002322�0002322�00000003763�12664332726�021560� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Comix (http://comix.sourceforge.net) management. (Server-mode) % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.4i % DEF_PIX_VIEWER % ALL_IN_ONE % MEDIACENTER photo GuiAppName=Comix GuiAppBinary=comix GuiAppRun=echo 'ID=`id -u`;A=`ps -fu $ID|grep comix|grep python|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=comix.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Comix is a user-friendly, customizable image viewer. It is specifically designed to handle comic books, but also serves as a generic viewer. It reads images in ZIP, RAR or tar archives (also gzip or bzip2 compressed) as well as plain image files. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-pix-viewer.cfg);\ Make(var,app_name,by_value,Comix);\ Make(var,open_file,by_value,);\ Make(var,app_manage_mode,by_value,comix_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=Make(mode,comix_init); [Mode]=comix_init: default_pixviewer_init APP_IS_RUN=\ Make(var,app_run,ps -fu `id -u`|grep comix|grep python|grep -v grep|head -1|wc -l); [ModeEnd] [Mode]=comix_manage : default_pixviewer % (EnterMode) by Utils/aliases-server-pix-viewer.cfg APP_START_IF=\ Make(var,app_run,ps -fu `id -u`|grep comix|grep python|grep -v grep|head -1|wc -l);\ Exec(if [ "x$(app_run)" = "x0" ]; then \ cd "$(fbrowser_dir)";comix $(open_file)& \ fi 2> /dev/null); APP_RAISE=\ Exec(wmctrl -i -a `wmctrl -l -p|grep Comix|cut -d ' ' -f 1` 2> /dev/null); APP_QUIT=\ Exec(pkill -f "python.*comix"); APP_FULLSCREEN=Emulate(key,f) PIX_PREV=Emulate(key,Page_Up) PIX_NEXT=Emulate(key,Page_Down) PIX_FIRST=Emulate(key,Home); PIX_LAST=Emulate(key,End); PIX_ZOOM_IN=Emulate(key,a,key,KP_Add) PIX_ZOOM_OUT=Emulate(key,a,key,minus) PIX_FIT=Emulate(key,a,key,b) PIX_ROTATE=Emulate(key,r) [ModeEnd] [End] �������������anyremote-6.7.1/cfg-data/Server-mode/exampleFont.cfg������������������������������������������������0000644�0002322�0002322�00000004233�12061426047�022703� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Main screen font configuration example GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of anyRemote Android/J2ME clients main screen font customization. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Set(parameter,debug,on);\ Set(title,Example of anyRemote client main screen font customization);\ Set(icons,Icons Example,\ 1,minus,2,fit,3,plus,\ 4,prev,5,play,6,next,\ 7,fit,8,stop,9,fit,\ *,question,0,fit,#,no);\ Set(layout,default,ticker);\ Macro(Default);\ Macro(SET_MENU); * *=Set(text,replace,Help,Use menu or buttons,\n 0 - set defaults: Medium-Plain-Proportional,\n1-3 -set size,\n4-6 - set style,\n 7-9 - set face.\n\nFont customization depends on device. \nAndroid client supports only set font size.); SET_MENU=\ Set(menu,replace,Small,Medium,Large,Plain,Bold,Italic,Underlined,Proportional,System,Monospace); Back=\ Set(text,close);\ Macro(SET_MENU); SET_FONT=\ Set(font,$(fsize),$(fstyle),$(fface));\ Set(status,$(fsize) - $(fstyle) - $(fface)); Default=\ Make(var,fsize,by_value,medium);\ Make(var,fstyle,by_value,plain);\ Make(var,fface,by_value,proportional);\ Macro(SET_FONT); Small= Make(var,fsize,by_value,small);Macro(SET_FONT); Medium= Make(var,fsize,by_value,medium);Macro(SET_FONT); Large= Make(var,fsize,by_value,large);Macro(SET_FONT); Plain= Make(var,fstyle,by_value,plain);Macro(SET_FONT); Bold= Make(var,fstyle,by_value,bold);Macro(SET_FONT); Italic= Make(var,fstyle,by_value,italic);Macro(SET_FONT); Underlined= Make(var,fstyle,by_value,underlined);Macro(SET_FONT); Proportional=Make(var,fface,by_value,proportional);Macro(SET_FONT); System= Make(var,fface,by_value,system);Macro(SET_FONT); Monospace= Make(var,fface,by_value,monospace);Macro(SET_FONT); 0=Macro(Default); 1=Macro(Small); 2=Macro(Medium); 3=Macro(Large); 4=Macro(Bold); 5=Macro(Italic); 6=Macro(Underlined); 7=Macro(Proportional); 8=Macro(System); 9=Macro(Monospace); #=Set(layout,default,noticker); [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/exampleEditField.cfg�������������������������������������������0000644�0002322�0002322�00000001601�12061426047�023622� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=List example GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of anyRemote Android/J2ME clients list screen customization. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Set(parameter,debug,on);\ Set(status,);\ Set(title,Use menu);\ Set(icons,Edit Field Example,\ 1,plus,2,fit,3,fit,\ 4,fit,5,fit,6,fit,\ 7,fit,8,fit,9,fit,\ *,question,0,fit,#,fit);\ Macro(SET_MENU); * *=Set(text,replace,Help,1 Enter Name); SET_MENU=Set(menu,replace,Enter Name); 1=Macro(Enter Name); Enter Name=Set(editfield,Enter Name,Name,i_do_not_know); Ok($$)=Set(title,$(Param));Macro(SET_MENU); Back($$)=Set(title,unknown);Macro(SET_MENU); Back=Set(text,close);Macro(SET_MENU); [End] �������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/impressive.cfg�������������������������������������������������0000644�0002322�0002322�00000005500�12664332726�022616� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for impressive (former keyjnote) management (Server-mode) % % Thanks Cedric Barboiron for this configuration file. % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.4i % DEF_PRESENTATION % ALL_IN_ONE % MEDIACENTER presentation GuiAppName=Impressive GuiAppBinary=impressive.py GuiAppIcon=impressive.png GuiAppRun=echo 'ID=`id -u`;P=`ps -fu $ID|grep impressive.py|grep -v grep|grep python`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Impressive is a program that displays PDF presentation slides with style. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-presentation.cfg);\ Make(var,app_name,by_value,Impressive);\ Make(var,open_file,by_value,);\ Make(var,exec_app_name, which impressive 2> /dev/null);\ Make(var,exec_app_name,if [ "x$(exec_app_name)" = "x" ]; then echo "xterm -e `which impressive.py`"; else echo $(exec_app_name); fi);\ Make(var,app_manage_mode,by_value,impressive_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,impressive); [Mode]=impressive : default_presentation_init APP_IS_RUN=\ Make(var,app_run,ps -fu `id -u`|grep impressive.py|grep -v grep|grep python|head -1|wc -l); % Can not switch to APP_MANAGE=\ Exec(pkill -f 'python (.)*impressive');\ Set(title, );\ Macro(APP_CHOOSE_FILE); [ModeEnd] [Mode]=impressive_manage : default_presentation SETUP_DEFAULT_PRESENTATION=\ Set(layout,default);\ Set(icons,$(app_name),\ 1,folder,2,up,3,none,\ 4,rewind,5,fullscreen,6,forward,\ 7,prev,8,down,9,next,\ *,question,0,none,#,no);\ Set(status,$(app_name));\ Set(title,$(open_file)); % Overrides 2=Emulate(key,Up); 8=Emulate(key,Down); 0=Make(none); * *=Set(text,replace,Help,1\n2 Up\n3\n4 Previous Page/Left\n5 Fullscreen\n6 Next Page/Right\n7 First Page\n8 Down\n9 Last Page\n ** Help\n0\n# Quit $(app_name)\n); APP_SETUP=\ Make(none); APP_START_IF=\ Exec(cd "$(fbrowser_dir)";$(exec_app_name) $(open_file)); % Can not switch to APP_RAISE=\ Make(none); APP_QUIT=\ Emulate(key,Q);\ Exec(pkill -f 'python (.)*impressive');\ Set(title, ); APP_MENU=\ Set(menu,replace,Overview,Fade To Back,Fade To White,Page Toggle,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Fade To Black=\ Emulate(key,B) Fade To White=\ Emulate(key,W) Page Toggle=\ Emulate(key,L) Overview=\ Emulate(key,Tab) PRES_PREV_PAGE=\ Emulate(key,Left); PRES_NEXT_PAGE=\ Emulate(key,Right); PRES_ZOOM_IN=\ Make(none); PRES_ZOOM_OUT=\ Make(none); PRES_FIRST_PAGE=\ Emulate(key,Home); PRES_LAST_PAGE=\ Emulate(key,End); PRES_TOGGLE_FULLSCREEN=\ Emulate(key,F); PRES_REFRESH=\ Make(none); [ModeEnd] [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/nokia-e70.cfg��������������������������������������������������0000644�0002322�0002322�00000005110�12073567677�022130� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Nokia-E70 management. (Server-mode) % % Thanks to Andreas Benzing for this configuration file % % key definitions is from /usr/include/X11/keysymdef.h % % STATUS unknown % XTEST yes % SOUND no % ENV no GuiAppName=Nokia E70 test GuiAppType=Example GuiAppProtocols=Server GuiAppDesc=Example of keypad handling for Nokia-E70 [Protocol]=Server (Connect)=\ Set(layout,default,keypad_only); Cancel=Make(exit); K8=Emulate(key,BackSpace) K9=Emulate(key,Tab) 10=Emulate(key,Return) 27=Emulate(key,Escape) 32=Emulate(key,space) 33=Emulate(key,exclam) 34=Emulate(key,quotedbl ) 35=Emulate(key,numbersign) 36=Emulate(key,dollar) 37=Emulate(key,percent) 38=Emulate(key,ampersand) 39=Emulate(key,apostrophe) 40=Emulate(key,braceleft) 41=Emulate(key,braceright) 42=Emulate(key,asterisk) 43=Emulate(key,plus) 44=Emulate(key,comma) 45=Emulate(key,minus) 46=Emulate(key,period) 47=Emulate(key,slash) 48=Emulate(key,0) 49=Emulate(key,1) 50=Emulate(key,2) 51=Emulate(key,3) 52=Emulate(key,4) 53=Emulate(key,5) 54=Emulate(key,6) 55=Emulate(key,7) 56=Emulate(key,8) 57=Emulate(key,9) 58=Emulate(key,colon) 59=Emulate(key,semicolon) 60=Emulate(key,less) 61=Emulate(key,equal) 62=Emulate(key,greater) 63=Emulate(key,question) 64=Emulate(key,at) 65=Emulate(key,A) 66=Emulate(key,B) 67=Emulate(key,C) 68=Emulate(key,D) 69=Emulate(key,E) 70=Emulate(key,F) 71=Emulate(key,G) 72=Emulate(key,H) 73=Emulate(key,I) 74=Emulate(key,J) 75=Emulate(key,K) 76=Emulate(key,L) 77=Emulate(key,M) 78=Emulate(key,N) 79=Emulate(key,O) 80=Emulate(key,P) 81=Emulate(key,Q) 82=Emulate(key,R) 83=Emulate(key,S) 84=Emulate(key,T) 85=Emulate(key,U) 86=Emulate(key,V) 87=Emulate(key,W) 88=Emulate(key,X) 89=Emulate(key,Y) 90=Emulate(key,Z) 91=Emulate(key,bracketleft) 92=Emulate(key,backslash) 93=Emulate(key,bracketright) 94=Emulate(key,asciicircum) 95=Emulate(key,underscore) %96=Emulate(key,) 97=Emulate(key,a) 98=Emulate(key,b) 99=Emulate(key,c) 100=Emulate(key,d) 101=Emulate(key,e) 102=Emulate(key,f) 103=Emulate(key,g) 104=Emulate(key,h) 105=Emulate(key,i) 106=Emulate(key,j) 107=Emulate(key,k) 108=Emulate(key,l) 109=Emulate(key,m) 110=Emulate(key,n) 111=Emulate(key,o) 112=Emulate(key,p) 113=Emulate(key,q) 114=Emulate(key,r) 115=Emulate(key,s) 116=Emulate(key,t) 117=Emulate(key,u) 118=Emulate(key,v) 119=Emulate(key,w) 120=Emulate(key,x) 121=Emulate(key,y) 122=Emulate(key,z) 123=Emulate(key,braceleft) 124=Emulate(key,bar) 125=Emulate(key,braceright) 126=Emulate(key,asciitilde) %127 DEL (delete) FIRE=Emulate(key,Return) LEFT=Emulate(key,Left) UP=Emulate(key,Up) RIGHT=Emulate(key,Right) DOWN=Emulate(key,Down) [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/nokia-e61.cfg��������������������������������������������������0000644�0002322�0002322�00000005501�12073567677�022134� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Nokia-E61 management. (Server-mode) % % STATUS unknown % XTEST no % SOUND no % ENV no GuiAppName=Nokia E61 test GuiAppType=Example GuiAppProtocols=Server GuiAppDesc=Example of keypad handling for Nokia-E61 [Protocol]=Server (Init)=\ Exec($(CfgDir)/Utils/message.sh "Press buttons, Shift+buttons, Ctrl+buttons"); (Connect)=\ Set(parameter,debug,on);\ Set(icons,Keypad tester,1,default,2,default,3,default,4,default,5,default,6,default,7,default,8,default,9,default,0,default,*,default,#,default); Cancel=Make(exit); %* *=Set(text,replace,Help,Press buttons, Shift+buttons, Ctrl+buttons) Back=Set(text,close); 113=Set(title,Q); 81=Set(title,Shift-Q); 17=Set(title,Ctrl-Q); 119=Set(title,W); 87=Set(title,Shift-W); 23=Set(title,Ctrl-W); 101=Set(title,E); 69=Set(title,Shift-E); K5=Set(title,Ctrl-E); 1=Set(title,1); 33=Set(title,Shift-1); 2=Set(title,2) 34=Set(title,Shift-2); 3=Set(title,3); 163=Set(title,Shift-3); *=Set(title,Star or Shift-8); 105=Set(title,I); 73=Set(title,Shift-I); K9=Set(title,Ctrl-I); 111=Set(title,O); 79=Set(title,Shift-O); 15=Set(title,Ctrl-O); 112=Set(title,P); 80=Set(title,Shift-P); 16=Set(title,Ctrl-P); 97=Set(title,A); 65=Set(title,Shift-A); K1=Set(title,Ctrl-A); 115=Set(title,S); 83=Set(title,Shift-S); 19=Set(title,Ctrl-S); 100=Set(title,D); 68=Set(title,Shift-D); K4=Set(title,Ctrl-D); %LEFT=Set(title,D); 4=Set(title,4); 36=Set(title,Shift-4); 5=Set(title,5); 8364=Set(title,Shift-5); 6=Set(title,6); 37=Set(title,Shift-6); #=Set(title,Hash); 126=Set(title,Shift-Hash); 107=Set(title,K); 75=Set(title,Shift-K); %11=Set(title,Ctrl-K); %RIGHT=Set(title,K); 108=Set(title,L); 76=Set(title,Shift-L); 12=Set(title,Ctrl-L); K8=Set(title,<-); 122=Set(title,Z); 90=Set(title,Shift-Z); 26=Set(title,Ctrl-Z); 120=Set(title,X); 88=Set(title,Shift-X); 24=Set(title,Ctrl-X); 99=Set(title,C); 67=Set(title,Shift-C); K3=Set(title,Ctrl-C); 7=Set(title,7); 38=Set(title,Shift-7); 8=Set(title,8); %42=Set(title,Shift-8); 9=Set(title,9); 40=Set(title,Shift-9); 0=Set(title,0); 41=Set(title,Shift-0); 59=Set(title,Dot or Ctrl-Dot); 58=Set(title,Shift-Dot); 39=Set(title,Dot or Ctrl-Comma); 64=Set(title,Shift-Comma); 10=Set(title,Return); %-50=Set(title,Shift); 44=Set(title,3rd from left bottom row or Ctrl-3rd from left bottom row); 60=Set(title,Shift-3rd from left bottom row); 46=Set(title,4rd from left bottom row or Ctrl-4rd from left bottom row); 62=Set(title,Shift-4rd from left bottom row); 32=Set(title,Space); 47=Set(title,4rd from right bottom row or Ctrl-4rd from right bottom row); 63=Set(title,Shift-4rd from right bottom row); -10=Set(title,Green button); %-1=Set(title,Joystick up); %-2=Set(title,Joystick down); %-3=Set(title,Joystick left); %-4=Set(title,Joystick right); %-5=Set(title,Joystick push); [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/cmus.cfg�������������������������������������������������������0000644�0002322�0002322�00000013503�12664332726�021401� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % cmus configuration file for cmus (Server-mode) % % cfg by Arthus Belliqueux % % STATUS nonstable % XTEST no % ENV no % SOUND mixer % FBROWSER v.4i % DEF_PLAYER % ALL_IN_ONE % GuiAppName=cmus GuiAppBinary=cmus-remote GuiAppRun=echo 'A=`ps -ef|grep cmus|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=gnome-mime-audio.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=C* Music Player. Note: this configuration file is not stable. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(TEST_XTERM);\ Make(var,player_name,by_value,CMUS);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,cmus_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get cmus_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set cmus_layout $(cmus_layout)); (Connect)=\ Make(mode,cmus_$(cmus_layout)); TEST_XTERM=\ Exec(P=`which xterm|grep xterm|grep -v no|wc -l|tr -d " "`; \ if [ "x$P" != "x1" ]; then \ $(CfgDir)/Utils/message.sh "ERROR: xterm not found"; \ fi); [Mode]=cmus_general % Do not work on Fedora 14, use defaults %1=Exec(cmus-remote -v -10%); %2=Exec(cmus-remote -v -100%); %3=Exec(cmus-remote -v +10%); PLAY=\ Exec(cmus-remote -p);\ Macro(CMUS_SETTITLE);\ Timer(CMUS_SETTITLE,$(UpdateTimeout),0); FF=\ Exec(cmus-remote -k +10); RWD=\ Exec(cmus-remote -k -10); PREV=\ Exec(cmus-remote -r);\ Macro(CMUS_SETTITLE); STOP=\ Exec(cmus-remote -s);\ Macro(CMUS_DELTIMER); NEXT=\ Exec(cmus-remote -n);\ Macro(CMUS_SETTITLE); PAUSE=\ Exec(cmus-remote -u); CMUS_DELTIMER=\ Set(title, );\ Set(status, );\ Timer(CMUS_SETTITLE,cancel); CMUS_SETTITLE_GENERAL=\ Make(var,cmus_title,cmus-remote -Q|grep "tag title"|sed "s/tag title //");\ Make(var,cmus_album,cmus-remote -Q|grep "tag album"|grep -v albumartist|sed "s/tag album //");\ Make(var,cmus_artist,cmus-remote -Q|grep "tag albumartist"|sed "s/tag albumartist //");\ Set(title,$(cmus_album) - $(cmus_title));\ Set(status,$(cmus_artist));\ RUN_IF_NEED=\ Exec(P=`ps -ef|grep cmus|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" = "x" ]; then xterm -e cmus& fi); RUN_OR_QUIT=\ Exec(P=`ps -ef|grep cmus|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" = "x" ]; then xterm -e cmus; else cmus-remote -C quit; fi);\ Macro(CMUS_DELTIMER); APP_QUIT=\ Exec(P=`ps -ef|grep cmus|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" = "x" ]; then true; else cmus-remote -C quit; fi);\ Macro(CMUS_DELTIMER); % PowerMgmt by Utils/aliases-server.cfg Shuffle=\ Exec(cmus-remote -S); Repeat=\ Exec(cmus-remote -R); File Browser=\ Make(mode,cmus_filebrowser); Layout 3x4=\ Make(mode,cmus_3x4); Layout 7x1=\ Make(mode,cmus_7x1); Layout 5x1=\ Make(mode,cmus_5x1); APP_PLAY_STATUS=\ Make(var,cmus_status,cmus-remote -Q|grep status|grep playing|wc -l);\ Make(var,app_status,if [ "x$(cmus_status)" = "x0" ]; then echo paused; else echo playing; fi); [ModeEnd] [Mode]=cmus_3x4 : cmus_general , default_player % (EnterMode) by Utils/aliases-server-player.cfg APP_POST_SETUP=\ Make(var,cmus_layout,by_value,3x4); APP_MENU=\ Set(menu,replace,File Browser,Shuffle,Repeat,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU); % Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg % Do not work on Fedora 14, use defaults %1=Exec(cmus-remote -v -10%); %2=Exec(cmus-remote -v -100%); %3=Exec(cmus-remote -v +10%); CMUS_SETTITLE=\ Macro(CMUS_SETTITLE_GENERAL); [ModeEnd] [Mode]=cmus_cover CMUS_SETTITLE=\ Macro(CMUS_SETTITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); % Will fail if file name is relative path APP_COVER=\ Make(var,media_file,cmus-remote -Q|grep file|sed "s/^file //");\ Macro(DEFAULT_COVER); [ModeEnd] [Mode]=cmus_7x1 : cmus_general , default_player_7x1, cmus_cover % (EnterMode) by Utils/aliases-server-player.cfg APP_POST_SETUP=\ Make(var,cmus_layout,by_value,7x1); APP_MENU=\ Set(menu,replace,File Browser,Shuffle,Repeat,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU); % Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg [ModeEnd] [Mode]=cmus_5x1 : cmus_general , default_player_5x1, cmus_cover % (EnterMode) by Utils/aliases-server-player.cfg PLAY=\ Exec(cmus-remote -p);\ Macro(CMUS_SETTITLE); APP_POST_SETUP=\ Make(var,cmus_layout,by_value,5x1); APP_MENU=\ Set(menu,replace,File Browser,Shuffle,Repeat,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU); % Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg APP_TITLE=\ Macro(CMUS_SETTITLE); [ModeEnd] [Mode]=cmus_nobutton % bug-prone :) 1=Make(mode,cmus_$(cmus_layout)); 2=Make(mode,cmus_$(cmus_layout)); 3=Make(mode,cmus_$(cmus_layout)); 4=Make(mode,cmus_$(cmus_layout)); 5=Make(mode,cmus_$(cmus_layout)); 6=Make(mode,cmus_$(cmus_layout)); 7=Make(mode,cmus_$(cmus_layout)); 8=Make(mode,cmus_$(cmus_layout)); 9=Make(mode,cmus_$(cmus_layout)); *=Make(mode,cmus_$(cmus_layout)); 0=Make(mode,cmus_$(cmus_layout)); #=Make(mode,cmus_$(cmus_layout)); [ModeEnd] [Mode]=cmus_filebrowser : cmus_nobutton (EnterMode)=\ Macro(FBROWSER_IC_FILL_LIST);\ Set(menu,replace,GoTo,Queue,Go Home); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v4i.cfg Queue($$)=\ Exec(cd "$(fbrowser_dir)";cmus-remote -q "$(Param)" > /dev/null); Back($$)=\ Set(list,close);\ Make(mode,cmus_$(cmus_layout)); [ModeEnd] [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/layoutSetup.cfg������������������������������������������������0000644�0002322�0002322�00000013135�12125550120�022747� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no % MEDIACENTER setup GuiAppName=Main screen layout setup example GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of anyRemote Android/J2ME clients main screen layout setup. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Set(title,Layout Setup);\ Set(parameter,debug,on);\ Get(screen_size);\ Set(layout,3x4,);\ Set(icons,Layout Setup,\ 1,vol_down,2,mute,3,vol_up,\ 4,rewind,5,play,6,forward,\ 7,prev,8,stop,9,next,\ *,question,0,pause,#,no);\ Make(mode,init_setup); [Mode]=init_setup * *=Set(text,replace,Help,With this configuration file it is possible to setup icon size and distance beetween icons.\nPlease choose Android or J2ME); Back=\ Set(text,close);\ Macro(M_MENU); (EnterMode)=\ Set(status,Please choose Android or J2ME);\ Macro(M_MENU); M_MENU=\ Set(menu,replace,Android,J2ME);\ Macro(MEDIACENTER_MENU); Android=Make(mode,a_setup); J2ME=Make(mode,j_setup); [ModeEnd] [Mode]=j_setup (EnterMode)=\ Make(var,isize,by_value,32);\ Make(var,space,by_value,0);\ Get(icon_size);\ Get(icon_padding);\ Macro(J_MENU); J_MENU=\ Set(menu,replace,Main,Default,16,32,48,64,96,128,Padding+,Padding-,Save Setup,Clear Setup);\ Macro(MEDIACENTER_MENU); Main=Make(mode,init_setup); 0=Macro(Default); 1=Macro(Padding-); 3=Macro(Padding+); Default=\ Make(var,isize,by_value,32);\ Make(var,space,by_value,0);\ Set(parameter,icon_size,$(isize));\ Get(icon_size);\ Set(parameter,icon_padding,$(space));\ Get(icon_padding); 16=Make(var,isize,by_value,16);Set(parameter,icon_size,$(isize));Get(icon_size); 32=Make(var,isize,by_value,32);Set(parameter,icon_size,$(isize));Get(icon_size); 48=Make(var,isize,by_value,48);Set(parameter,icon_size,$(isize));Get(icon_size); 64=Make(var,isize,by_value,64);Set(parameter,icon_size,$(isize));Get(icon_size); 96=Make(var,isize,by_value,96);Set(parameter,icon_size,$(isize));Get(icon_size); 128=Make(var,isize,by_value,128);Set(parameter,icon_size,$(isize));Get(icon_size); Padding+=\ Make(var,space,expr $(space) + 1);\ Set(parameter,icon_padding,$(space));\ Get(icon_padding); Padding-=\ Make(var,space,expr $(space) - 1);\ Set(parameter,icon_padding,$(space));\ Get(icon_padding); IconSize($$)=\ Make(var,isize,by_value,$(Index));\ Set(status,$(isize) / $(space)); IconPadding($$)=\ Make(var,space,by_value,$(Index));\ Set(status,$(isize) / $(space)); Save Setup=\ Make(var,dummy,touch $(TmpDir)/hook_connect;mv $(TmpDir)/hook_connect $(TmpDir)/hook_connect.old;cat $(TmpDir)/hook_connect.old|grep -v icon_size|grep -v icon_padding > $(TmpDir)/hook_connect;echo "");\ Exec(echo "Set(parameter,icon_size,$(isize))" >> $(TmpDir)/hook_connect;echo "Set(parameter,icon_padding,$(space))" >> $(TmpDir)/hook_connect); Clear Setup=\ Exec(touch $(TmpDir)/hook_connect;mv $(TmpDir)/hook_connect $(TmpDir)/hook_connect.old;cat $(TmpDir)/hook_connect.old|grep -v icon_size|grep -v icon_padding > $(TmpDir)/hook_connect); * *=Set(text,replace,Help,With this configuration file it is possible to setup icon size and distance beetween icons.\n0 - Defaults\n1 - Decrease Padding\n3 - Increase Padding\nTo be able to select icon size in J2ME client it needs to use J2ME client with full icons sets); Back=\ Set(text,close);\ Macro(J_MENU); [ModeEnd] [Mode]=a_setup (EnterMode)=\ Make(var,isize,by_value,32);\ Make(var,space,by_value,0);\ Get(icon_size);\ Get(icon_padding);\ Macro(A_MENU); A_MENU=\ Set(menu,replace,Main,Default,Size+,Size-,Padding+,Padding-,Save Setup,Clear Setup);\ Macro(MEDIACENTER_MENU); Main=Make(mode,init_setup); 0=Macro(Default); 1=Macro(Padding-); 3=Macro(Padding+); 4=Macro(Size-); 6=Macro(Size+); Default=\ Make(var,isize,by_value,-1);\ Make(var,space,by_value,0);\ Set(parameter,icon_size,$(isize));\ Get(icon_size);\ Set(parameter,icon_padding,$(space));\ Get(icon_padding); Size+=\ Make(var,isize,expr $(isize) + 1);\ Set(parameter,icon_size,$(isize));\ Get(icon_size); Size-=\ Make(var,isize,expr $(isize) - 1);\ Set(parameter,icon_size,$(isize));\ Get(icon_size); Padding+=\ Make(var,space,expr $(space) + 1);\ Set(parameter,icon_padding,$(space));\ Get(icon_padding); Padding-=\ Make(var,space,expr $(space) - 1);\ Set(parameter,icon_padding,$(space));\ Get(icon_padding); IconSize($$)=\ Make(var,isize,by_value,$(Index));\ Set(status,$(isize) / $(space)); IconPadding($$)=\ Make(var,space,by_value,$(Index));\ Set(status,$(isize) / $(space)); Save Setup=\ Make(var,dummy,touch $(TmpDir)/hook_connect;mv $(TmpDir)/hook_connect $(TmpDir)/hook_connect.old;cat $(TmpDir)/hook_connect.old|grep -v icon_size|grep -v icon_padding > $(TmpDir)/hook_connect;echo "");\ Exec(echo "Set(parameter,icon_size,$(isize))" >> $(TmpDir)/hook_connect;echo "Set(parameter,icon_padding,$(space))" >> $(TmpDir)/hook_connect); Clear Setup=\ Exec(touch $(TmpDir)/hook_connect;mv $(TmpDir)/hook_connect $(TmpDir)/hook_connect.old;cat $(TmpDir)/hook_connect.old|grep -v icon_size|grep -v icon_padding > $(TmpDir)/hook_connect); * *=Set(text,replace,Help,With this configuration file it is possible to setup icon size and distance beetween icons.\n 0 - Defaults\n1 - Decrease Padding\n3 - Increase Padding\n4 - Decrease Icon Size\n6 - Increase Icon Size); Back=\ Set(text,close);\ Macro(A_MENU) [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/alsaplayer.cfg�������������������������������������������������0000644�0002322�0002322�00000015710�12664332726�022571� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for AlsaPlayer (http://www.alsaplayer.org/) (Server-mode) % % STATUS stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER % ALL_IN_ONE % FBROWSER v.4i % MEDIACENTER audio GuiAppName=AlsaPlayer GuiAppBinary=alsaplayer GuiAppRun=echo 'A=`pgrep alsaplayer`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=alsaplayer.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=AlsaPlayer is a new type of PCM player. It has some very interesting features unique to Linux/Unix players. The goal is to create a fully pluggable framework for playback of all sorts of media with the focus on PCM audio data. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(FBROWSER_IC_INIT);\ Make(var,player_name,by_value,AlsaPlayer);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,alsaplayer_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get alsaplayer_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set alsaplayer_layout $(alsaplayer_layout)); (Connect)=\ Make(mode,alsaplayer_$(alsaplayer_layout)); [Mode]=alsaplayer_general PLAY=\ Exec(alsaplayer --start);\ Macro(APLAYER_TITLE);\ Timer(APLAYER_TITLE,$(UpdateTimeout),0); RWD=\ Exec(alsaplayer --relative -5) FF=\ Exec(alsaplayer --relative 5) PREV=\ Exec(alsaplayer --prev);\ Macro(APLAYER_TITLE); STOP=\ Timer(APLAYER_TITLE,cancel);\ Exec(alsaplayer --stop);\ Set(title,);\ Set(status,); NEXT=\ Exec(alsaplayer --next);\ Macro(APLAYER_TITLE); PAUSE=\ Exec(alsaplayer --pause); RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh alsaplayer); RUN_OR_QUIT=\ Make(var,aplayer_cmd,\ P=`pgrep alsaplayer`;\ if [ "x$P" = "x" ]; then echo RUN_IF_NEED else echo APP_QUIT; fi);\ Macro($(aplayer_cmd)); APP_QUIT=\ Timer(APLAYER_TITLE,cancel);\ Exec(alsaplayer --quit); % Repeat commands does not works Repeat 1=\ Exec(alsaplayer --loopsong); Repeat List=\ Exec(alsaplayer --looplist); Files=\ Make(mode,alsaplayer_filebrowser); Playlist=\ Make(mode,alsaplayer_playlist); Play reversely=\ Exec(alsaplayer --speed -1.0); Play normal=\ Exec(alsaplayer --speed 1.0); Layout 3x4=\ Make(mode,alsaplayer_3x4); Layout 7x1=\ Make(mode,alsaplayer_7x1); Layout 5x1=\ Make(mode,alsaplayer_5x1); [ModeEnd] [Mode]=alsaplayer_3x4 : alsaplayer_general,default_player % (EnterMode) by Utils/aliases-server-player.cfg % PowerMgmt by Utils/aliases-server.cfg APP_MENU=\ Set(menu,replace,Files,Playlist,Layout 7x1,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,alsaplayer_layout,by_value,3x4); %APLAYER_GETVOL=\ % Make(var,aplayer_volume,alsaplayer --status|grep 'volume:'|sed 's/^volume: //'); APLAYER_TITLE=\ ExecAndSet(title,alsaplayer --status|grep 'path:'|sed "s/^path: //"); * 4=Exec(alsaplayer --speed -1.0); * 6=Exec(alsaplayer --speed 1.0); * *=Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n4 RWD\n5 Play\n6 Next\n7 FF\n8 Stop\n9 Next\n* 4 Play reversely\n * 6 Play normal speed\n ** Help\n0 Pause\n# Quit\n* # - Run/Quit) [ModeEnd] [Mode]=alsaplayer_cover APLAYER_TITLE=\ ExecAndSet(title,alsaplayer --status|grep 'path:'|sed "s/^path: //");\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file,alsaplayer --status|grep 'path:'|sed "s/^path: //;s/'/'\\\''/g;s/\//\'\/\'/g;s/$/\'/g;s/^'\//\//");\ Macro(DEFAULT_COVER); [ModeEnd] [Mode]=alsaplayer_7x1 : alsaplayer_general,default_player_7x1,alsaplayer_cover % (EnterMode) by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Files,Playlist,Mute,Next Cover,Previous Cover,Update Cover,Play reversely,Play normal,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,alsaplayer_layout,by_value,7x1); % Mute, Next Cover,Previous Cover,Update Cover by Utils/aliases-server-player.cfg % PowerMgmt by Utils/aliases-server.cfg [ModeEnd] [Mode]=alsaplayer_5x1 : alsaplayer_general,default_player_5x1,alsaplayer_cover % no timer PLAY=\ Exec(alsaplayer --start);\ Macro(APLAYER_TITLE); % (EnterMode) by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Files,Playlist,Mute,Next Cover,Previous Cover,Update Cover,Play reversely,Play normal,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,alsaplayer_layout,by_value,5x1); % Mute, Next Cover,Previous Cover,Update Cover by Utils/aliases-server-player.cfg % PowerMgmt by Utils/aliases-server.cfg APP_PLAY_STATUS=\ Make(var,app_status,\ OUT=`alsaplayer --status|grep "speed: 0%\|^length:"`;\ L0=`echo $OUT|grep 'length: 0 seconds'|wc -l`;\ if [ "x$L0" = "x1" ]; then echo stopped;\ else \ S0=`echo $OUT|grep speed|wc -l`;\ if [ "x$S0" = "x1" ]; then echo paused;\ else echo playing; fi;\ fi); APP_TITLE=\ Macro(APLAYER_TITLE); [ModeEnd] [Mode]=alsaplayer_nobutton % bug-prone :) 1=Make(mode,alsaplayer_$(alsaplayer_layout)); 2=Make(mode,alsaplayer_$(alsaplayer_layout)); 3=Make(mode,alsaplayer_$(alsaplayer_layout)); 4=Make(mode,alsaplayer_$(alsaplayer_layout)); 5=Make(mode,alsaplayer_$(alsaplayer_layout)); 6=Make(mode,alsaplayer_$(alsaplayer_layout)); 7=Make(mode,alsaplayer_$(alsaplayer_layout)); 8=Make(mode,alsaplayer_$(alsaplayer_layout)); 9=Make(mode,alsaplayer_$(alsaplayer_layout)); *=Make(mode,alsaplayer_$(alsaplayer_layout)); 0=Make(mode,alsaplayer_$(alsaplayer_layout)); #=Make(mode,alsaplayer_$(alsaplayer_layout)); [ModeEnd] % rely on $(alsaplayer_layout) variable [Mode]=alsaplayer_playlist : alsaplayer_nobutton (EnterMode)=\ ExecAndSet(list,replace,Playlist,\ cd;cat .alsaplayer/alsaplayer.m3u|sed "s/'//g"|xargs -i basename {}|sed 's/\*//;s/@//;s/,/ /g;s/$/,/');\ Set(menu,replace,Jump,Clear); Push($$)=\ Macro(JUMP); Jump($$)=\ Macro(JUMP); JUMP=\ Set(list,close);\ Exec(alsaplayer --jump $(Index));\ Make(mode,alsaplayer_$(alsaplayer_layout); Clear($$)=\ Set(list,clear);\ Exec(alsaplayer --clear);\ Exec(rm -f $(Home)/.alsaplayer/alsaplayer.m3u; touch $(Home)/.alsaplayer/alsaplayer.m3u); Back($$)=\ Set(list,close);\ Make(mode,alsaplayer_$(alsaplayer_layout)); [ModeEnd] % rely on $(alsaplayer_layout) variable [Mode]=alsaplayer_filebrowser : alsaplayer_nobutton (EnterMode)=\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); UpdateMenu=\ Set(menu,replace,GoTo,Add,Go Home); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v4i.cfg Add($$)=\ Exec(alsaplayer -e "$(fbrowser_dir)"/$(Param));\ Exec(echo "$(fbrowser_dir)"/$(Param) >> $(Home)/.alsaplayer/alsaplayer.m3u); Back($$)=\ Set(list,close);\ Make(mode,alsaplayer_$(alsaplayer_layout)); [ModeEnd] [End] ��������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/exampleIcons.cfg�����������������������������������������������0000644�0002322�0002322�00000004021�12120355624�023041� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Main screen configuration example GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of anyRemote Android/J2ME clients main screen customization. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(echo Initialized); (Connect)=\ Set(popup,show,Please wait);\ Set(parameter,debug,on);\ Exec(echo Connected);\ Set(status,);\ Set(title,Use menu or buttons);\ Set(icons,Icons Example,\ 1,fit,2,fit,3,fit,\ 4,fit,5,fit,6,fit,\ 7,fit,8,fit,9,fit,\ *,question,0,fit,#,fit);\ Set(layout,default);\ Macro(SET_MENU);\ ExecAndSet(caption,sleep 1;echo "Icons Example...");\ Set(popup,hide); (Disconnect)=\ Exec(echo Disconnected); * *=Set(popup,show,Please wait);Set(text,replace,Help,Use menu or buttons);Set(popup,hide); SET_MENU=\ Set(menu,replace,Player Icons,Player Icons 2,Picture Viewer Icons,White On Black,Black On White); Back=Set(popup,show,Please wait);Set(text,close);Macro(SET_MENU);Set(popup,hide); % Menu handlers White On Black=Set(bg,#000000);Set(fg,#FFFFFF); Black On White=Set(bg,#FFFFFF);Set(fg,#000000); Player Icons=\ Set(icons,Icons Example,\ 1,vol_down,2,mute,3,vol_up,\ 4,rewind,5,play,6,forward,\ 7,prev,8,stop,9,next,\ *,question,0,pause,#,no);\ Set(layout,default); Player Icons 2=\ Set(icons,Icons Example,\ 1,prev,2,rewind,3,play,\ 4,pause,5,forward,6,next,\ 7,stop,8,none,9,none,\ *,none,0,none,#,none);\ Set(layout,7x1); Picture Viewer Icons=\ Set(icons,Icons Example,\ 1,none,2,plus,3,none,\ 4,rewind,5,fit,6,forward,\ 7,none,8,minus,9,none,\ *,question,0,fullscreen,#,no);\ Set(layout,default); 1=Set(status,button 1); 2=Set(status,button 2); 3=Set(status,button 3); 4=Set(status,button 4) 5=Set(status,button 5) 6=Set(status,button 6) 7=Set(status,button 7) 8=Set(status,button 8) 9=Set(status,button 9) 0=Set(status,button 0) #=Set(status,button #) [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/all-in-one2.cfg������������������������������������������������0000644�0002322�0002322�00000004564�12130542625�022443� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=All-in-1_v2 GuiAppType=Application GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Manage a set of applications at once (version 2) [Protocol]=Server % % Need to include all possible stuff % (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT); (Connect)=\ Set(parameter,debug,on);\ Make(mode,_ALL_IN_ONE_); ALLIN1MENU=\ Set(menu,add,All-in-1); All-in-1=\ Macro(ALLIN1_CALLBACK); All-in-1($$)=\ Macro(ALLIN1_CALLBACK); ALLIN1_CALLBACK=\ Set(popup,show,Loading...);\ Macro(APP_QUIT);\ Make(flush);\ Include($(CfgDir)/Server-mode/all-in-one2.cfg);\ Macro((Init));\ Macro((Connect));\ Set(popup,hide);\ Make(mode,_ALL_IN_ONE_); [Mode]=_ALL_IN_ONE_ (EnterMode)=\ Macro(ALL_IN_ONE_SETUP);\ Macro(SHOWSW); ALL_IN_ONE_SETUP=\ Set(layout,default);\ Set(icons,All-in-one,1,plus,2,default,3,default,4,default,5,default,6,default,7,default,8,default,9,default,*,question,0,no,#,default);\ Set(title,press 1 to select application);\ Set(status,);\ Set(menu,replace,PowerMgmt); SHOWSW=Macro(GEN_FILE_IF); GEN_FILE_IF=\ Set(popup,show,Please wait ...);\ Make(var,init_op,if [ -f $(TmpDir)/AllInOneTmp.cfg ]; then echo LOAD_FILE; else echo GEN_FILE; fi);\ Macro($(init_op)); GEN_FILE=\ Make(var,wait_exec,$(CfgDir)/Utils/all-in-1.py $(CfgDir);echo "ready");\ Include($(TmpDir)/AllInOneTmp.cfg);\ Macro(UPLOAD0); LOAD_FILE=\ Include($(TmpDir)/AllInOneTmp.cfg);\ Set(list,replace,Applications,);\ Macro(FILL_LIST);\ Set(popup,hide); Regenerate($$)=\ Macro(REGEN_FILE); Regenerate=\ Macro(REGEN_FILE); REGEN_FILE=\ Set(popup,show,Please wait ...);\ Macro(GEN_FILE); REGEN_MENU=\ Set(menu,replace,Select,Regenerate,PowerMgmt); Cancel=\ Make(exit); Back=\ Set(text,close);\ Macro(ALL_IN_ONE_SETUP); Back($$)=\ Set(list,close);\ Macro(ALL_IN_ONE_SETUP); Push($$) =Macro(SELECT); Select($$)=Macro(SELECT); Shutdown =Exec(poweroff) SELECT=\ Set(popup,show,Loading...);\ Make(flush);\ Include($(CfgDir)/Server-mode/$(Param).cfg);\ Macro((Init));\ Macro((Connect));\ Include($(CfgDir)/Server-mode/all-in-one2.cfg);\ Macro(ALLIN1MENU);\ Set(popup,hide); 0=Macro(Cancel); 1=Macro(SHOWSW) * *=Set(text,replace,Help,Press 1, then\n choose application to manage) [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/listen.cfg�����������������������������������������������������0000644�0002322�0002322�00000010765�12256755311�021733� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Listen management (Server-mode) % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio % TODO It looks like listen does not process next/previous D-BUS commands properly GuiAppName=Listen GuiAppBinary=listen GuiAppRun=P=`pgrep listen`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=listen.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Listen is an audio player written in Python [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(TEST_DBUS_SEND);\ Make(var,player_name,by_value,Listen);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,listen_cmd,by_value,dbus-send --type=method_call --dest=org.gnome.Listen /org/gnome/listen);\ Make(var,listen_retcmd,by_value,dbus-send --type=method_call --print-reply --dest=org.gnome.Listen /org/gnome/listen);\ Make(var,listen_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get listen_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set listen_layout $(listen_layout)); (Connect)=\ Make(mode,listen_$(listen_layout)); [Mode]=listen_general % Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg PLAY=\ Exec($(listen_cmd) org.gnome.Listen.play_pause);\ Macro(LISTEN_SETTITLE);\ Timer(LISTEN_SETTITLE,$(UpdateTimeout),0); RWD=\ Exec($(listen_cmd) org.gnome.Listen.rewind); FF=\ Exec($(listen_cmd) org.gnome.Listen.forward); PREV=\ Exec($(listen_cmd) org.gnome.Listen.previous);\ Macro(LISTEN_SETTITLE); STOP=\ Timer(LISTEN_SETTITLE,cancel);\ Exec($(listen_cmd) org.gnome.Listen.play_pause); NEXT=\ Exec($(listen_cmd) org.gnome.Listen.next);\ Macro(LISTEN_SETTITLE); PAUSE=\ Exec($(listen_cmd) org.gnome.Listen.play_pause);\ Timer(LISTEN_SETTITLE,cancel) RUN_IF_NEED=\ Exec(P=`pgrep listen`; if [ "x$P" = "x" ]; then listen > /dev/null & fi); RUN_OR_QUIT=\ Exec(P=`pgrep listen`; \ if [ "x$P" = "x" ]; then \ listen > /dev/null & \ else \ $(listen_cmd) org.gnome.Listen.quit; \ fi); APP_QUIT=\ Timer(LISTEN_SETTITLE,cancel);\ Exec($(listen_cmd) org.gnome.Listen.quit); % LISTEN_DO_SETTITLE must be defined in child modes LISTEN_SETTITLE=\ Macro(LISTEN_DO_SETTITLE,P=`pgrep listen`; if [ "x$P" = "x" ]; then echo 1; else echo 0; fi); LISTEN_TITLE_GENERAL=\ Make(var,listen_album,$(listen_retcmd) org.gnome.Listen.get_album|tail -1|grep string|cut -d '"' -f 2);\ Make(var,listen_song,$(listen_retcmd) org.gnome.Listen.get_title|tail -1|grep string|cut -d '"' -f 2);\ ExecAndSet(title,echo "$(listen_album) - $(listen_song)");\ ExecAndSet(status,$(listen_retcmd) org.gnome.Listen.get_artist|tail -1|grep string|cut -d '"' -f 2); APP_PLAY_STATUS=\ Make(var,listen_status,$(listen_retcmd) org.gnome.Listen.playing|tail -1|grep boolean|tr -s ' '|cut -f3 -d ' ');\ Make(var,app_status,if [ "x$(listen_status)" = "xtrue" ]; then echo playing; else echo paused; fi); Layout 3x4=\ Make(mode,listen_3x4); Layout 7x1=\ Make(mode,listen_7x1); Layout 5x1=\ Make(mode,listen_5x1); [ModeEnd] [Mode]=listen_3x4 : listen_general, default_player % (EnterMode) by Utils/aliases-server-player.cfg % PowerMgmt by Utils/aliases-server.cfg APP_MENU=\ Set(menu,replace,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,listen_layout,by_value,3x4); LISTEN_DO_SETTITLE=\ Macro(LISTEN_TITLE_GENERAL); [ModeEnd] [Mode]=listen_cover LISTEN_DO_SETTITLE=\ Macro(LISTEN_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file, $(listen_retcmd) org.gnome.Listen.get_cover_path|tail -1|grep string|cut -d '"' -f 2);\ Macro(DEFAULT_METADATA_COVER); [ModeEnd] [Mode]=listen_7x1 : listen_general, default_player_7x1, listen_cover APP_MENU=\ Set(menu,replace,Mute,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,listen_layout,by_value,7x1); [ModeEnd] [Mode]=listen_5x1 : listen_general, default_player_5x1, listen_cover APP_MENU=\ Set(menu,replace,Mute,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,listen_layout,by_value,5x1); APP_TITLE=\ Macro(LISTEN_SETTITLE); PLAY=\ Exec($(listen_cmd) org.gnome.Listen.play_pause); [ModeEnd] [End] �����������anyremote-6.7.1/cfg-data/Server-mode/fileManager4.cfg�����������������������������������������������0000644�0002322�0002322�00000013525�12664332726�022734� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for to make basic file operations with help of % GUI of Android/J2ME client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no % FBROWSER v.4i % ALL_IN_ONE % MEDIACENTER files GuiAppName=FileManager4 GuiAppBinary=true GuiAppIcon=fileopen.png GuiAppType=Custom GuiAppProtocols=Server GuiAppDesc=Simple file manager. Browsing directory structure with basic file operations. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Set(parameter,debug,on); (Connect)=\ Make(var,fm_v4i_list_index,by_value,1);\ Make(var,fm_v4i_layout_done,by_value,0);\ Macro(FBROWSER_IC_INIT);\ Make(mode,file_manager_v4i_init); (Exit)=\ Macro(FBROWSER_IC_EXIT); % ----------------------------------------------------------------------- [Mode]=file_manager_v4i_general %InCall($$)=\ % Make(remote,off); %EndCall($$)=\ % Make(remote,on); UPDATE_MENU=\ Set(menu,replace,GoTo,File info,Copy,Move,Delete,Make Dir,View,Exec,Go Home);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); SET_INDEX=\ Set(iconlist,select,$(fm_v4i_list_index)); [ModeEnd] % ----------------------------------------------------------------------- [Mode]= file_manager_v4i_general_operation : file_manager_v4i_general FMAN_IC_FILL_LIST2=\ Set(iconlist,dir,SAME,$(fbrowser_dir2)); Go To($$)=\ Make(var,tmpdir,by_value,$(Param));\ Make(var,fbrowser_dir2,cd "$(fbrowser_dir2)";if [ -d "$(tmpdir)" ]; then cd "$(tmpdir)";fi;pwd);\ Set(iconlist,replace,SAME,folder:..);\ Macro(FMAN_IC_FILL_LIST2); Back=\ Make(mode,file_manager_v4i_init); Back($$)=\ Make(mode,file_manager_v4i_init); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v4i_init : file_manager_v4i_general (EnterMode)=\ Set(popup,show,Please wait);\ Macro(FM4I_SET_LAYOUT,echo $(fm_v4i_layout_done));\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UPDATE_MENU); FM4I_SET_LAYOUT=\ Set(layout,3x4);\ Set(icons,File manager,\ 1,folder,2,fullscreen,3,default,\ 4,default,5,default,6,default,\ 7,default,8,default,9,default,\ *,question,0,no,#,default);\ Set(hints,\ 1,file browser,\ *,help (press twice));\ Set(title,Press 1 to enter file browser);\ Set(status,);\ Make(var,fm_v4i_layout_done,by_value,1); STORE_INDEX=\ Make(var,fm_v4i_list_index,by_value,$(Index)); Back($$)=\ Set(list,close);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Back=\ Set(text,close);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v4i.cfg Cancel=Make(exit); 0=Make(exit); 1=Macro(FBROWSER_IC_FILL_LIST);\ Macro(UPDATE_MENU); 2=Set(fullscreen,toggle); * *=Set(text,replace,Help, Menu-driven basic\nfile operations.\n1 - enter file manager screen\n2 - toggle fullscreen); % ----------------------------------------------------------------------- FM4I_DO_OPERATION=\ Macro(STORE_INDEX);\ Make(var,fm_v4i_file,by_value,$(Param));\ Make(mode,file_manager_v4i_$(fm_v4i_operation)); Exec($$)=\ Make(var,fm_v4i_operation,by_value,exec);\ Macro(FM4I_DO_OPERATION); Make Dir($$)=\ Make(var,fm_v4i_operation,by_value,mkdir);\ Macro(FM4I_DO_OPERATION); File info($$)=\ Make(var,fm_v4i_operation,by_value,info);\ Macro(FM4I_DO_OPERATION); View($$)=\ Make(var,fm_v4i_operation,by_value,view);\ Macro(FM4I_DO_OPERATION); Copy($$)=\ Make(var,fm_v4i_operation,by_value,copy);\ Macro(FM4I_DO_OPERATION); Move($$)=\ Make(var,fm_v4i_operation,by_value,move);\ Macro(FM4I_DO_OPERATION); Delete($$)=\ Macro(STORE_INDEX);\ Make(var,dummy,cd "$(fbrowser_dir)";rm -rf "$(Param)";echo DONE;);\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(SET_INDEX); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v4i_exec : file_manager_v4i_general_operation (EnterMode)=\ Set(editfield,Enter parameters,Parameters,); Ok($$)=\ ExecAndSet(text,replace,Results,cd "$(fbrowser_dir)";"$(fbrowser_dir)"/$(fm_v4i_file) $(Param)); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v4i_mkdir : file_manager_v4i_general_operation (EnterMode)=\ Set(editfield,Enter name,New Directory,); Ok($$)=\ Make(var,dummy,cd "$(fbrowser_dir)";mkdir $(Param);echo DONE;);\ Make(mode,file_manager_v4i_init); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v4i_info : file_manager_v4i_general_operation (EnterMode)=\ ExecAndSet(text,replace,File info,file "$(fbrowser_dir)"/$(fm_v4i_file));\ ExecAndSet(text,add,SAME,ls -l "$(fbrowser_dir)"/$(fm_v4i_file)); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v4i_view : file_manager_v4i_general_operation (EnterMode)=\ Set(text,file,File View,$(fbrowser_dir)/$(fm_v4i_file)); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v4i_copy : file_manager_v4i_general_operation (EnterMode)=\ Make(var,fbrowser_dir2,by_value,$(fbrowser_dir));\ Set(iconlist,replace,Copy To,folder:..);\ Macro(FMAN_IC_FILL_LIST2);\ Set(menu,replace,Go To,Copy To); Copy To($$)=\ Make(var,dummy,cp "$(fbrowser_dir)"/$(fm_v4i_file) "$(fbrowser_dir2)"/$(Param);echo DONE;);\ Make(mode,file_manager_v4i_init); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v4i_move : file_manager_v4i_general_operation (EnterMode)=\ Make(var,fbrowser_dir2,by_value,$(fbrowser_dir));\ Set(iconlist,replace,Move To,folder:..);\ Macro(FMAN_IC_FILL_LIST2);\ Set(menu,replace,Go To,Move To); Move To($$)=\ Make(var,dummy,mv "$(fbrowser_dir)"/$(fm_v4i_file) "$(fbrowser_dir2)"/$(Param);echo DONE;);\ Make(mode,file_manager_v4i_init); [ModeEnd] [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/template-presentation.cfg��������������������������������������0000644�0002322�0002322�00000005055�12664332726�024761� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyRemote template configuration file for an presentation / document viewer management (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no % FBROWSER v.4i % DEF_PRESENTATION % ALL_IN_ONE % MEDIACENTER presentation GuiAppName=Some Presentation GuiAppBinary=presentation.exe GuiAppRun= U=`id -u`;P=`pgrep -l -u $U presentation.exe`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=anyRemote template configuration file for an presentation / document viewer management [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-presentation.cfg);\ Make(var,app_name,by_value,Some Presentation);\ Make(var,open_file,by_value,);\ Make(var,app_manage_mode,by_value,some_presentation_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,some_presentation_init); [Mode]=some_presentation_init : default_presentation_init APP_IS_RUN=\ Make(var,app_run,pgrep -l -u `id -u` presentation.exe|head -1|wc -l); [ModeEnd] [Mode]=some_presentation_manage : default_presentation % 0-9,*,# assignments by Utils/aliases-server-presentaion.cfg APP_SETUP=\ Make(none); % Application window should be present in output of "wmctrl -l" APP_RAISE=\ Exec(echo "Raise Application Window");\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch presentation.exe); APP_START_IF=\ Exec(echo "Start Application If It Not Yet Run");\ Make(var,app_run,pgrep -l -u `id -u` presentation.exe|head -1|wc -l);\ Exec(if [ "x$(app_run)" = "x0" ]; then cd "$(fbrowser_dir)";presentation.exe $(open_file)& fi 2> /dev/null); APP_QUIT=\ Exec(echo "Close Application");\ Set(title, ); APP_MENU=\ Set(menu,replace,Add,Some,Custom,Items,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); PRES_START=\ Exec(echo "Start Presentation"); PRES_PREV_PAGE=\ Exec(echo "Previous Page"); PRES_NEXT_PAGE=\ Exec(echo "Next Page"); PRES_ZOOM_IN=\ Exec(echo "Zoom In"); PRES_ZOOM_OUT=\ Exec(echo "Zoom Out"); PRES_FIRST_PAGE=\ Exec(echo "First Page"); PRES_LAST_PAGE=\ Exec(echo "Last Page"); PRES_TOGGLE_FULLSCREEN=\ Exec(echo "Toggle Fullscreen"); PRES_REFRESH=\ Exec(echo "Refresh Page"); % File Browser by Utils/aliases-server-presentation.cfg % PowerMgmt by Utils/aliases-server.cfg Add=\ Exec(echo "Custom Action 1"); Some=\ Exec(echo "Custom Action 2"); Custom=\ Exec(echo "Custom Action 3"); Items=\ Exec(echo "Custom Action 4"); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/autoUpload.cfg�������������������������������������������������0000644�0002322�0002322�00000002464�12123520170�022531� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for testing of icon auto-upload feature % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=AutoUpload GuiAppIcon=redo.png GuiAppType=Custom GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Tests icon auto-upload feature [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Set(parameter,debug,on);\ Set(icons,Icon auto-upload,1,plus,2,default,3,default,4,down,5,fullscreen,6,up,7,default,8,default,9,default,*,question,0,no,#,default);\ Set(title,);\ Set(status,);\ Macro(MainMenu); MainMenu =Set(menu,replace,RemoveAll); Back($$) =Set(list,close); Back =Set(text,close); RemoveAll =Set(image,remove,icons); Cancel=\ Make(exit); 1=Set(icons,Icon auto-upload,1,launch,2,eject,3,favorites,4,bottom,5,fullscreen,6,top,7,first,8,ok,9,last,*,question,0,exit,#,record);\ Macro(UpdateMenu); * 1=Set(icons,Icon auto-upload,1,launch);\ Macro(UpdateMenu); 4=Set(parameter,icon_size,16); 5=Set(parameter,icon_size,32); 6=Set(parameter,icon_size,64) 0=Macro(Cancel); * *=Set(text,replace,Help, J2ME client only!\nTests for icon auto-upload feature.\n Select icon size and press 1\n to start upoad.\n Icons must be \n 16x16,32x32 or 64x64 PNG.\n Press 4 to see 16x16 icons\n Press 5 to see 32x32 icons\n Press 6 to see 64x64 icons); [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/iconUpload.cfg�������������������������������������������������0000644�0002322�0002322�00000003551�12664332726�022531� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for icon uploading % % STATUS stable % XTEST no % SOUND no % ENV no % FBROWSER v.3 GuiAppName=IconUploader GuiAppIcon=redo.png GuiAppType=Custom GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Allows to upload additional icons to the J2ME Client [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v3.cfg);\ Macro(FBROWSER_INIT); (Exit)=\ Macro(FBROWSER_EXIT); (Connect)=\ Set(parameter,debug,on);\ Set(icons,Icon upload,1,folder,2,default,3,default,4,fit,5,fit,6,fit,7,fit,8,default,9,fit,*,question,0,no,#,default);\ Set(hints,1,file manager);\ Set(title,);\ Set(status,);\ Macro(MainMenu); MainMenu =Set(menu,replace,RemoveAll); UpdateMenu=Set(menu,replace,Go To,Go Home,Upload); Back($$) =Set(list,close); Back =Set(text,close); Convert =ExecAndSet(image,icon,UF="$(fbrowser_dir)"/"$(Param)";D=`echo $(Param)|cut -f 1 -d '.'`;echo "$D,$UF"); Go To($$) =Macro(FBROWSER_GO_TO); Go Home($$)=Macro(FBROWSER_GO_HOME); %Push($$) use from aliases-server-fbrowser-v3.cfg Upload($$)=\ Set(popup,show,Please wait);\ Set(list,close);\ Macro(Convert);\ ExecAndSet(icons, sleep 2;D=`echo $(Param)|cut -f 1 -d '.'`;echo "UPLOAD,5,$D");\ Set(popup,hide);\ Macro(MainMenu); RemoveAll =Set(image,remove,icons); Cancel=Make(exit); 1=Macro(FBROWSER_FILL_LIST);Macro(UpdateMenu); 4=Set(parameter,icon_size,16); 5=Set(parameter,icon_size,32); 6=Set(parameter,icon_size,48); 7=Set(parameter,icon_size,64) 9=Set(parameter,icon_size,128); 0=Make(exit); * *=Set(text,replace,Help, Upload icons. Select an icon and then choose Upload menu item.\nFor J2ME client icons must be \n16x16,32x32, 48x48, 64x64 or 128x128 PNG.\nPress 4 to see 16x16 icons\nPress 5 to see 32x32 icons\nPress 6 to see 48x48 icons\nPress 7 to see 64x64 icons\nPress 8 to see 128x128 icons); [End] �������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/keyboard-mouse.cfg���������������������������������������������0000644�0002322�0002322�00000036354�12073567677�023402� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for mouse & keyboard emulation % by Dmitry Ashkadov % STATUS stable % XTEST yes % SOUND no % ENV no % ALL_IN_ONE GuiAppName=Mouse and Keyboard GuiAppBinary=true GuiAppIcon=mouse.png GuiAppType=Example GuiAppProtocols=Server GuiAppDesc=Mouse and Keyboard emulation [Protocol]=Server % redefine joystick keys UP=Emulate(mousermove,0,-10); DOWN=Emulate(mousermove,0,10); LEFT=Emulate(mousermove,-10,0); RIGHT=Emulate(mousermove,10,0); FIRE=Make(var,AutoRepeat,by_value,false);Emulate(mouse,1);Make(var,AutoRepeat,by_value,true); (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var,kbd_alt,by_value,);\ Make(var,kbd_ctrl,by_value,);\ Make(var,kbd_shift,by_value,);\ Make(var,kbd_super,by_value,);\ Make(var,mouse_lb,by_value,);\ Make(var,help_text,by_value,\nThere are two modes: keyboard mode and mouse mode. Press # twice to change mode. Press 0 to show/hide a menu.\n);\ Make(var,help_text_menu,by_value,\nMenu:\n 0 - hide menu\n 1 - toggle Alt\n 2 - toggle Super\n 3 - volume up\n 4 - toggle Ctrl\n 6 - volume down\n 7 - toggle Shift\n 9 - mute\n * - toggle Left Mouse Button\n # - show Menu [#]\n \nMenu [#]:\n 0 - hide menu\n 1 - suspend\n 2 - shutdown\n 3 - brightness up\n 6 - brightness down\n # - toggle fullscreen);\ Macro(MacroContinueHelp); % Parser skips too long strings. MacroContinueHelp=\ Make(var,help_text_kbd,by_value,\nKeyboard mode:\n 1 - menu\n 2 - up arrow\n 3 - Page Up\n 4 - left arrow\n 5 - Enter\n 6 - right arrow\n 7 - Escape\n 8 - down arrow\n 9 - Page Down\n * 0 - Space\n * 1 - Ins\n * 2 - Alt+up\n * 3 - Home\n * 4 - Alt+left\n * 5 - Tab\n * 6 - Alt+right\n * 7 - Del\n * 8 - Alt+down\n * 9 - End\n * * - Help\n * # - BackSpace);\ Make(var,help_text_sharp,by_value,\n[#]:\n # 0 - Pause\n # 1 - HomePage \n # 2 - Plus\n # 3 - PrintScreen\n # 4 - Back\n # 5 - Refresh\n # 6 - Forward\n # 7 - Alt+Enter\n # 8 - Minus\n # 9 - Alt+Tab\n # * - Alt+F4\n # # - Change mode);\ Make(var,help_text_mouse,by_value,\nMouse mode:\n 1 - Right click\n 2 - Move Up\n 3 - Scroll Up\n 4 - Move Left\n 5 - Left Click\n 6 - Move Right\n 7 - Esc\n 8 - Move Down\n 9 - Scroll Down\n * 4 - Scroll Left\n * 5 - Middle button\n * 6 - Scroll Right); (Connect)=\ Set(layout,default,keypad_only,ticker);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); % Remote keyboard emulates mouse ====================================================== [Mode]=Mouse (EnterMode)=\ Set(icons,$(Mode),1,info,2,up,3,top,4,left,5,ok,6,right,7,no,8,down,9,bottom,*,question,0,favorites,#,refresh);\ ExecAndSet(title,echo "$(Mode) [$(kbd_alt) $(kbd_ctrl) $(kbd_shift) $(kbd_super) $(mouse_lb)]");\ Make(var,AutoRepeat,by_value,true);\ Macro(KBDMOU_CFG_MENU); (ExitMode)=Make(var,AutoRepeat,by_value,false); KBDMOU_CFG_MENU=Set(menu,replace,);Macro(ALLIN1MENU) Cancel=Make(exit); Back=Set(text,close);Macro(KBDMOU_CFG_MENU); 2=Emulate(mousermove,0,-10); 4=Emulate(mousermove,-10,0); 6=Emulate(mousermove,10,0); 8=Emulate(mousermove,0,10); 1=Make(var,AutoRepeat,by_value,false);Emulate(mouse,3);Make(var,AutoRepeat,by_value,true); 5=Make(var,AutoRepeat,by_value,false);Emulate(mouse,1);Make(var,AutoRepeat,by_value,true); 3=Emulate(mouse,4); 9=Emulate(mouse,5); 7=Make(var,AutoRepeat,by_value,false);Emulate(key,Escape);Make(var,AutoRepeat,by_value,true); 0=Make(var,prev_mode,echo "$(Mode)");Make(mode,Menu); *=Make(var,prev_mode,echo "$(Mode)");Make(mode,Mouse [*]); #=Make(var,prev_mode,echo "$(Mode)");Make(var,next_mode,by_value,Keyboard);Make(mode,[#]); [ModeEnd] % Remote keyboard emulates keyboard ================================================================= [Mode]=Keyboard (EnterMode)=\ Set(icons,$(Mode),1,info,2,up,3,top,4,left,5,ok,6,right,7,no,8,down,9,bottom,*,question,0,favorites,#,refresh);\ ExecAndSet(title,echo "$(Mode) [$(kbd_alt) $(kbd_ctrl) $(kbd_shift) $(kbd_super) $(mouse_lb)]");\ Make(var,AutoRepeat,by_value,true);\ Macro(KBDMOU_CFG_MENU); (ExitMode)=Make(var,AutoRepeat,by_value,false); KBDMOU_CFG_MENU=Set(menu,replace,);Macro(ALLIN1MENU) Cancel=Make(exit); Back=Set(text,close);Macro(KBDMOU_CFG_MENU); 1=Make(var,AutoRepeat,by_value,false);Emulate(key,Menu);Make(var,AutoRepeat,by_value,true); 2=Make(var,AutoRepeat,by_value,false);Emulate(key,Up);Make(var,AutoRepeat,by_value,true); 4=Make(var,AutoRepeat,by_value,false);Emulate(key,Left);Make(var,AutoRepeat,by_value,true); 6=Make(var,AutoRepeat,by_value,false);Emulate(key,Right);Make(var,AutoRepeat,by_value,true); 8=Make(var,AutoRepeat,by_value,false);Emulate(key,Down);Make(var,AutoRepeat,by_value,true); 5=Make(var,AutoRepeat,by_value,false);Emulate(key,Return);Make(var,AutoRepeat,by_value,true); 7=Make(var,AutoRepeat,by_value,false);Emulate(key,Escape);Make(var,AutoRepeat,by_value,true); 3=Make(var,AutoRepeat,by_value,false);Emulate(key,Page_Up);Make(var,AutoRepeat,by_value,true); 9=Make(var,AutoRepeat,by_value,false);Emulate(key,Page_Down);Make(var,AutoRepeat,by_value,true); 0=Make(var,prev_mode,echo "$(Mode)");Make(mode,Menu); *=Make(var,prev_mode,echo "$(Mode)");Make(mode,Keyboard [*]); #=Make(var,prev_mode,echo "$(Mode)");Make(var,next_mode,by_value,Mouse);Make(mode,[#]); [ModeEnd] % Menu ======================================================================================= [Mode]=Menu (EnterMode)=\ Set(icons,$(Mode),1,default,2,default,3,vol_up,4,default,5,default,6,vol_down,7,default,8,default,9,mute,*,default,0,no,#,favorites);\ ExecAndSet(title,echo "$(Mode) [$(kbd_alt) $(kbd_ctrl) $(kbd_shift) $(kbd_super) $(mouse_lb)]");\ Make(var,AutoRepeat,by_value,true);\ Macro(KBDMOU_CFG_MENU); (ExitMode)=Make(var,AutoRepeat,by_value,false); KBDMOU_CFG_MENU=Set(menu,replace,);Macro(ALLIN1MENU) Cancel=Make(exit);; Back=Set(text,close);Macro(KBDMOU_CFG_MENU); 1=Make(var,AutoRepeat,by_value,false);\ Make(var,result,echo "$(kbd_alt)");\ Macro(MacroAltDown, if [ $(result) = "" ]; then true; else false; fi; echo $?);\ Macro(MacroAltUp, if [ $(result) = "" ]; then false; else true; fi; echo $?);\ Make(var,AutoRepeat,by_value,true);\ Make(mode,Menu); MacroAltDown=Emulate(keydown,Alt_L);Make(var,kbd_alt,by_value,Alt); MacroAltUp=Emulate(keyup,Alt_L);Make(var,kbd_alt,by_value,); 2=Make(var,AutoRepeat,by_value,false);\ Make(var,result,echo "$(kbd_super)");\ Macro(MacroSuperDown, if [ $(result) = ""]; then true; else false; fi; echo $?);\ Macro(MacroSuperUp, if [ $(result) = "" ]; then false; else true; fi; echo $?);\ Make(var,AutoRepeat,by_value,true);\ Make(mode,Menu); MacroSuperDown=Emulate(keydown,Super_L);Make(var,kbd_super,by_value,Sup); MacroSuperUp=Emulate(keyup,Super_L);Make(var,kbd_super,by_value,); 4=Make(var,AutoRepeat,by_value,false);\ Make(var,result,echo "$(kbd_ctrl)");\ Macro(MacroCtrlDown, if [ $(result) = "" ]; then true; else false; fi; echo $?);\ Macro(MacroCtrlUp, if [ $(result) = "" ]; then false; else true; fi; echo $?);\ Make(var,AutoRepeat,by_value,true);\ Make(mode,Menu); MacroCtrlDown=Emulate(keydown,Control_L);Make(var,kbd_ctrl,by_value,Ctl); MacroCtrlUp=Emulate(keyup,Control_L);Make(var,kbd_ctrl,by_value,); 7=Make(var,AutoRepeat,by_value,false);\ Make(var,result,echo "$(kbd_shift)");\ Macro(MacroShiftDown, if [ $(result) = "" ]; then true; else false; fi; echo $?);\ Macro(MacroShiftUp, if [ $(result) = "" ]; then false; else true; fi; echo $?);\ Make(var,AutoRepeat,by_value,true);\ Make(mode,Menu); MacroShiftDown=Emulate(keydown,Shift_L);Make(var,kbd_shift,by_value,Sh); MacroShiftUp=Emulate(keyup,Shift_L);Make(var,kbd_shift,by_value,); *=Make(var,AutoRepeat,by_value,false);\ Make(var,result,echo "$(mouse_lb)");\ Macro(MacroMouseLBDown, if [ $(result) = "" ]; then true; else false; fi; echo $?);\ Macro(MacroMouseLBUp, if [ $(result) = "" ]; then false; else true; fi; echo $?);\ Make(var,AutoRepeat,by_value,true);\ Make(mode,Menu); MacroMouseLBDown=Emulate(mousedown,1);Make(var,mouse_lb,by_value,LB); MacroMouseLBUp=Emulate(mouseup,1);Make(var,mouse_lb,by_value,); 0=Make(mode,$(prev_mode)); 3=Make(var,AutoRepeat,by_value,false);Emulate(key,AudioRaiseVolume);Make(var,AutoRepeat,by_value,true); 6=Make(var,AutoRepeat,by_value,false);Emulate(key,AudioLowerVolume);Make(var,AutoRepeat,by_value,true); 9=Make(var,AutoRepeat,by_value,false);Emulate(key,AudioMute);Make(var,AutoRepeat,by_value,true); #=Make(mode,Menu [#]); [ModeEnd] % Menu + # ============================================================================ [Mode]=Menu [#] (EnterMode)=\ Set(icons,$(Mode),1,exit,2,default,3,plus,4,exit,5,default,6,minus,7,default,8,default,9,default,*,default,0,no,#,fullscreen);\ ExecAndSet(title,echo "$(Mode) [$(kbd_alt) $(kbd_ctrl) $(kbd_shift) $(kbd_super) $(mouse_lb)]");\ Make(var,AutoRepeat,by_value,true);\ Macro(KBDMOU_CFG_MENU); (ExitMode)=Make(var,AutoRepeat,by_value,false); KBDMOU_CFG_MENU=Set(menu,replace,);Macro(ALLIN1MENU) Cancel=Make(exit); Back=Set(text,close);Macro(KBDMOU_CFG_MENU); 0=Make(mode,$(prev_mode)); 3=Make(var,AutoRepeat,by_value,false);Emulate(key,MonBrightnessUp);Make(var,AutoRepeat,by_value,true); 6=Make(var,AutoRepeat,by_value,false);Emulate(key,MonBrightnessDown);Make(var,AutoRepeat,by_value,true); #=Make(var,AutoRepeat,by_value,false);Set(fullscreen,toggle);Make(var,AutoRepeat,by_value,true);Make(mode,Menu); 1=Make(var,AutoRepeat,by_value,false);Emulate(key,by_value,0x1008ffa7);Make(var,AutoRepeat,by_value,true); % 4=Exec(poweroff); 4=Make(var,AutoRepeat,by_value,false);Emulate(key,PowerOff);Make(var,AutoRepeat,by_value,true); [ModeEnd] % Keyboard mode + * =================================================================== [Mode]=Keyboard [*] (EnterMode)=\ Set(icons,$(Mode),1,pause,2,up,3,top,4,left,5,last,6,right,7,first,8,down,9,bottom,*,question,0,minus,#,first);\ ExecAndSet(title,echo "$(Mode) [$(kbd_alt) $(kbd_ctrl) $(kbd_shift) $(kbd_super) $(mouse_lb)]");\ Make(var,AutoRepeat,by_value,true);\ Macro(KBDMOU_CFG_MENU); (ExitMode)=Make(var,AutoRepeat,by_value,false); KBDMOU_CFG_MENU=Set(menu,replace,);Macro(ALLIN1MENU) Cancel=Make(exit); Back=Set(text,close);Macro(KBDMOU_CFG_MENU);Make(mode,Keyboard); *=Make(mode,Help); 2=Make(var,AutoRepeat,by_value,false);Emulate(keydown,Alt_L,key,Up,keyup,Alt_L);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); 4=Make(var,AutoRepeat,by_value,false);Emulate(keydown,Alt_L,key,Left,keyup,Alt_L);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); 6=Make(var,AutoRepeat,by_value,false);Emulate(keydown,Alt_L,key,Right,keyup,Alt_L);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); 8=Make(var,AutoRepeat,by_value,false);Emulate(keydown,Alt_L,key,Down,keyup,Alt_L);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); 3=Make(var,AutoRepeat,by_value,false);Emulate(key,Home);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); 9=Make(var,AutoRepeat,by_value,false);Emulate(key,End);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); 1=Make(var,AutoRepeat,by_value,false);Emulate(key,Insert);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); 7=Make(var,AutoRepeat,by_value,false);Emulate(key,Delete);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); 5=Make(var,AutoRepeat,by_value,false);Emulate(key,Tab);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); 0=Make(var,AutoRepeat,by_value,false);Emulate(key,Space);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); #=Make(var,AutoRepeat,by_value,false);Emulate(key,BackSpace);Make(var,AutoRepeat,by_value,true);Make(mode,Keyboard); [ModeEnd] % Mouse mode + * =================================================================== [Mode]=Mouse [*] (EnterMode)=\ Set(icons,$(Mode),1,default,2,up,3,default,4,left,5,ok,6,right,7,default,8,down,9,default,*,question,0,default,#,default);\ ExecAndSet(title,echo "$(Mode) [$(kbd_alt) $(kbd_ctrl) $(kbd_shift) $(kbd_super) $(mouse_lb)]");\ Make(var,AutoRepeat,by_value,true);\ Macro(KBDMOU_CFG_MENU); (ExitMode)=Make(var,AutoRepeat,by_value,false); KBDMOU_CFG_MENU=Set(menu,replace,);Macro(ALLIN1MENU) Cancel=Make(exit); Back=Set(text,close);Macro(KBDMOU_CFG_MENU);Make(mode,Mouse); *=Make(mode,Help); 2=Make(var,AutoRepeat,by_value,false);Emulate(mouse,4);Make(var,AutoRepeat,by_value,true);Make(mode,Mouse); 8=Make(var,AutoRepeat,by_value,false);Emulate(mouse,5);Make(var,AutoRepeat,by_value,true);Make(mode,Mouse); 5=Make(var,AutoRepeat,by_value,false);Emulate(mouse,2);Make(var,AutoRepeat,by_value,true);Make(mode,Mouse); 4=Make(var,AutoRepeat,by_value,false);Emulate(mouse,6);Make(var,AutoRepeat,by_value,true);Make(mode,Mouse); 6=Make(var,AutoRepeat,by_value,false);Emulate(mouse,7);Make(var,AutoRepeat,by_value,true);Make(mode,Mouse); 1=Make(mode,Mouse); 3=Make(mode,Mouse); 7=Make(mode,Mouse); 9=Make(mode,Mouse); 0=Make(mode,Mouse); #=Make(mode,Mouse); [ModeEnd] % Keyboard or mouse mode + # =================================================================== [Mode]=[#] (EnterMode)=\ Set(icons,$(prev_mode) $(Mode),1,file,2,plus,3,fit,4,left,5,refresh,6,right,7,info,8,minus,9,launch,*,no,0,pause,#,refresh);\ ExecAndSet(title,echo "$(prev_mode) $(Mode) [$(kbd_alt) $(kbd_ctrl) $(kbd_shift) $(kbd_super) $(mouse_lb)]");\ Make(var,AutoRepeat,by_value,true);\ Macro(KBDMOU_CFG_MENU); (ExitMode)=Make(var,AutoRepeat,by_value,false); KBDMOU_CFG_MENU=Set(menu,replace,);Macro(ALLIN1MENU) Cancel=Make(exit); Back=Set(text,close);Macro(KBDMOU_CFG_MENU); 1=Make(var,AutoRepeat,by_value,false);Emulate(key,by_value,0x1008FF18);Make(var,AutoRepeat,by_value,true);Make(mode,$(prev_mode)); 2=Make(var,AutoRepeat,by_value,false);Emulate(key,KP_Add);Make(var,AutoRepeat,by_value,true);Make(mode,$(prev_mode)); 8=Make(var,AutoRepeat,by_value,false);Emulate(key,KP_Subtract);Make(var,AutoRepeat,by_value,true);Make(mode,$(prev_mode)); 4=Make(var,AutoRepeat,by_value,false);Emulate(key,Back);Make(var,AutoRepeat,by_value,true);Make(mode,$(prev_mode)); 6=Make(var,AutoRepeat,by_value,false);Emulate(key,Forward);Make(var,AutoRepeat,by_value,true);Make(mode,$(prev_mode)); 3=Make(var,AutoRepeat,by_value,false);Emulate(key,Print);Make(var,AutoRepeat,by_value,true);Make(mode,$(prev_mode)); 5=Make(var,AutoRepeat,by_value,false);Emulate(key,by_value,0x1008FF29);Make(var,AutoRepeat,by_value,true);Make(mode,$(prev_mode)); 7=Make(var,AutoRepeat,by_value,false);Emulate(keydown,Alt_L,key,Return,keyup,Alt_L);Make(var,AutoRepeat,by_value,true);Make(mode,$(prev_mode)); 9=Make(var,AutoRepeat,by_value,false);Emulate(keydown,Alt_L,key,Tab,keyup,Alt_L);Make(var,AutoRepeat,by_value,true);Make(mode,$(prev_mode)); *=Make(var,AutoRepeat,by_value,false);Emulate(keydown,Alt_L,key,F4,keyup,Alt_L);Make(var,AutoRepeat,by_value,true);Make(mode,$(prev_mode)); 0=Make(var,AutoRepeat,by_value,false);Emulate(key,Pause);Make(var,AutoRepeat,by_value,true);Make(mode,$(prev_mode)); #=Make(mode,$(next_mode)); [ModeEnd] % Help ==================================================================== [Mode]=Help (EnterMode)=\ Set(icons,$(Mode),1,file,2,file,3,file,4,file,5,file,6,default,7,default,8,default,9,default,*,default,0,no,#,default);\ ExecAndSet(title,echo "$(Mode)");\ Make(var,AutoRepeat,by_value,true);\ Macro(KBDMOU_CFG_MENU); (ExitMode)=Make(var,AutoRepeat,by_value,false) KBDMOU_CFG_MENU=Set(menu,replace,);Macro(ALLIN1MENU) Cancel=Make(exit); Back=Set(text,close);Macro(KBDMOU_CFG_MENU); 1=Set(text,replace,Help,$(help_text)); 2=Set(text,replace,Help,$(help_text_menu)); 3=Set(text,replace,Help,$(help_text_kbd)); 4=Set(text,replace,Help,$(help_text_mouse)); 5=Set(text,replace,Help,$(help_text_sharp)); 0=Make(mode,$(prev_mode)); [ModeEnd] [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/exaile.cfg�����������������������������������������������������0000644�0002322�0002322�00000013217�12664332726�021703� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Exaile management (Server-mode) % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio % FBROWSER v.4i GuiAppName=Exaile GuiAppBinary=exaile GuiAppRun=echo 'P=`ps -ef|grep exaile |grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=exaile.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Exaile is a music player aiming to be similar to KDE's Amarok, but for GTK+ and written in Python. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(TEST_DBUS_SEND);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Make(var,cover_size,by_value,);\ Make(var,player_name,by_value,Exaile);\ Make(var,exaile_cmd,by_value,dbus-send --type=method_call --dest=org.exaile.Exaile /org/exaile/Exaile);\ Make(var,exaile_get,by_value,dbus-send --type=method_call --print-reply --dest=org.exaile.Exaile /org/exaile/Exaile);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,exaile_layout,by_value,5x1); (Connect)=\ Make(mode,exaile_$(exaile_layout)); (Exit)=\ Macro(FBROWSER_IC_EXIT); [Mode]=exaile_general EXAILE_SETTITLE_GENERAL=\ Make(var,exaile_artist,$(exaile_get) org.exaile.Exaile.GetTrackAttr string:artist|tail -1|grep string|cut -d '"' -f 2);\ Make(var,exaile_album, $(exaile_get) org.exaile.Exaile.GetTrackAttr string:album |tail -1|grep string|cut -d '"' -f 2);\ Make(var,exaile_title, $(exaile_get) org.exaile.Exaile.GetTrackAttr string:title |tail -1|grep string|cut -d '"' -f 2);\ Set(title,$(exaile_artist) - $(exaile_album));\ Set(status,$(exaile_title)); Play CD=\ Exec(exaile --play-cd);\ Timer(EXAILE_SETTITLE,$(UpdateTimeout),0); Files=\ Timer(EXAILE_SETTITLE,cancel);\ Make(mode,exaile_filebrowser); EXAILE_SETPOS=\ Exec($(exaile_cmd) org.exaile.Exaile.Seek double:$(exaile_pos)); EXAILE_GETPOS=\ Make(var,exaile_curpos,$(exaile_get) org.exaile.Exaile.CurrentProgress|tail -1|grep string|cut -d '"' -f 2); PLAY_ONLY=\ Exec($(exaile_cmd) org.exaile.Exaile.Play);\ Macro(EXAILE_SETTITLE); PLAY=\ Macro(PLAY_ONLY);\ Timer(EXAILE_SETTITLE,5,0); RWD=\ Macro(EXAILE_GETPOS);\ Make(var,exaile_pos,echo "$(exaile_curpos) * 3 - 3"|bc);\ Macro(EXAILE_SETPOS);\ Macro(EXAILE_SETTITLE); FF=\ Macro(EXAILE_GETPOS);\ Make(var,exaile_pos,echo "$(exaile_curpos) * 3 + 8"|bc);\ Macro(EXAILE_SETPOS);\ Macro(EXAILE_SETTITLE); PREV=\ Exec($(exaile_cmd) org.exaile.Exaile.Prev);\ Macro(EXAILE_SETTITLE); STOP=\ Timer(EXAILE_SETTITLE,cancel);\ Exec($(exaile_cmd) org.exaile.Exaile.Stop); NEXT=\ Exec($(exaile_cmd) org.exaile.Exaile.Next);\ Macro(EXAILE_SETTITLE); PAUSE=\ Exec($(exaile_cmd) org.exaile.Exaile.PlayPause);\ Timer(EXAILE_SETTITLE,cancel); % Exec(P=`ps -ef|grep exaile|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then exaile 2> /dev/null & fi); RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh exaile); RUN_OR_QUIT=\ Timer(EXAILE_SETTITLE,cancel);\ Exec(P=`ps -ef|grep exaile|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then exaile 2> /dev/null & else pkill -f "python (.)*exaile"; fi); APP_QUIT=\ Timer(EXAILE_SETTITLE,cancel);Exec(pkill -f 'python (.)*exaile'); APP_PLAY_STATUS=\ Make(var,exaile_status,$(exaile_get) org.exaile.Exaile.GetState|tail -1|grep string|cut -d '"' -f 2);\ Make(var,app_status,if [ "x$(exaile_status)" = "xplaying" ]; then echo playing; else echo paused; fi); Layout 3x4=\ Make(mode,exaile_3x4); Layout 5x1=\ Make(mode,exaile_5x1); [ModeEnd] [Mode]=exaile_3x4 : exaile_general, default_player EXAILE_SETTITLE=\ Macro(EXAILE_SETTITLE_GENERAL); APP_MENU=\ Set(menu,replace,Play CD,Files,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,exaile_layout,by_value,3x4); [ModeEnd] [Mode]=exaile_cover EXAILE_SETTITLE=\ Macro(EXAILE_SETTITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file,$(exaile_get) org.exaile.Exaile.GetTrackAttr string:__basedir|tail -1|grep string|cut -d '"' -f 2);\ Macro(DEFAULT_COVER); [ModeEnd] [Mode]=exaile_5x1 : exaile_general, default_player_5x1, exaile_cover APP_MENU=\ Set(menu,replace,Mute,Play CD,Files,Layout 3x4,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,exaile_layout,by_value,3x4); APP_TITLE=\ Macro(EXAILE_SETTITLE); PLAY=\ Macro(PLAY_ONLY); [ModeEnd] [Mode]=exaile_nobutton % bug-prone :) 1=Make(mode,exaile_$(exaile_layout)); 2=Make(mode,exaile_$(exaile_layout)); 3=Make(mode,exaile_$(exaile_layout)); 4=Make(mode,exaile_$(exaile_layout)); 5=Make(mode,exaile_$(exaile_layout)); 6=Make(mode,exaile_$(exaile_layout)); 7=Make(mode,exaile_$(exaile_layout)); 8=Make(mode,exaile_$(exaile_layout)); 9=Make(mode,exaile_$(exaile_layout)); *=Make(mode,exaile_$(exaile_layout)); 0=Make(mode,exaile_$(exaile_layout)); #=Make(mode,exaile_$(exaile_layout)); [ModeEnd] % rely on $(exaile_layout) variable [Mode]=exaile_filebrowser : exaile_nobutton (EnterMode)=\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); UpdateMenu=\ Set(menu,replace,GoTo,Add,Go Home); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v4i.cfg Add($$)=\ Exec($(exaile_cmd) org.exaile.Exaile.Enqueue array:string:"$(fbrowser_dir)"/$(Param)); Back($$)=\ Set(list,close);\ Make(mode,exaile_$(exaile_layout)); [ModeEnd] [End] %qdbus org.exaile.Exaile /org/exaile/Exaile org.exaile.Exaile.GetTrackAttr __loc ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/gnomeShortcuts.cfg���������������������������������������������0000644�0002322�0002322�00000007436�12073567677�023477� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% Anyremote configuration file for emulation of some GNOME keyboard shortcuts, % and some basic launch functions by menu. % % Supported for server-mode. Works with all-in-one configuration files. % % The choice of icons is supposed to have a mnemonic effect: % Some cribs help to remember the key settings. See comments below. % % Buttons and Icons: % % 1: Open the main applicatons menu. (F10) % * 1: Close menu or other objects. (Esc) % Icon "plus" means the access to additional features. % % 2: Up. % * 2: Page up. % % 3: Maximise window to fullscreen. (F11) % * 3: Open window menu, includes minimising and maximising. (Alt-Space) % Icon "fullscreen" means the switch to fullscreen, % and alludes to the menu window containing other window actions. % % 4: Left. % * 4: Home. % % 5: Open file. (Ctrl-Q). % * 5: Locate file. (Ctrl-L) % Icon "folder" depicts the open or locate action. % % 6: Right. % * 6: End. % % 7: Focus on previous object. (Shift-Tab) % * 7: Switch to previous window. (Alt-Shift-Tab) % Icon "rewind" indicates backward switching. % % 8: Down. % * 8: Page down. % % 9: Focus on next object. % * 9: Switch to next window. % Icon "fast forward" indicates forward switching. % % *: Modifier for other buttons to reach alternative assignment. % * *: Help. % Icon "?" marks help. % % 0: Select object. (Space) % * 0: Return, often same effect achieved by space. (Return) % Icon "empty rectangle" is associated with space. % % #: Quit application. (Ctrl-Q) % * #: Exit window. (Alt-F4) % % Menu: % % - Panel: Switch to GNOME panel. (Alt-F1) % - Execute: Execute application given by name. % - Text: Send text to remote host, "typewriter". % - Backspace: Same effect as backspace-key. GuiAppName=GNOME keyboard shortcuts GuiAppBinary=true GuiAppIcon=keyboard.png GuiAppType=Emulation GuiAppProtocols=Server GuiAppDesc=Some useful GNOME keyboard shortcuts for application control. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Make(mode,GNOME); SHORTCUTS=Set(menu,replace,Panel,Execute,Text,Backspace);Macro(ALLIN1MENU) Panel=Emulate(keydown,Alt_L,key,F1,keyup,Alt_L) Execute=Set(editfield,Execute,Enter application name,);Make(mode,exec) Text=Set(editfield,Show text,Enter text,);Make(mode,text) Backspace=Emulate(key,BackSpace) [Mode]=GNOME Cancel=Make(exit); (EnterMode)=\ Set(status,keyboard emulation);\ Set(title,GNOME keyboard shortcuts);\ Set(skin,default);\ Set(icons,GNOME,1,plus,2,up,3,fullscreen,4,left,5,folder,6,right,7,rewind,8,down,9,forward,*,question,0,click_icon,#,no);\ Macro(SHORTCUTS); Back=Set(text,close);Macro(SHORTCUTS); 1=Emulate(key,F10) * 1=Emulate(key,Escape) 2=Emulate(key,Up) * 2=Emulate(key,Page_Up) 3=Emulate(key,F11) * 3=Emulate(keydown,Alt_L,key,space,keyup,Alt_L) 4=Emulate(key,Left) * 4=Emulate(key,Home) 5=Emulate(keydown,Control_L,key,o,keyup,Control_L) * 5=Emulate(keydown,Control_L,key,l,keyup,Control_L) 6=Emulate(key,Right) * 6=Emulate(key,End) 7=Emulate(keydown,Shift_L,key,Tab,keyup,Shift_L) * 7=Emulate(keydown,Alt_L,keydown,Shift_L,key,Tab,keyup,Shift_L,keyup,Alt_L) 8=Emulate(key,Down) * 8=Emulate(key,Page_Down) 9=Emulate(key,Tab) * 9=Emulate(keydown,Alt_L,key,Tab,keyup,Alt_L) 0=Emulate(key,space) * 0=Emulate(key,Return) #=Emulate(keydown,Control_L,key,q,keyup,Control_L) * #=Emulate(keydown,Alt_L,key,F4,keyup,Alt_L) * *=Set(text,replace,Help,1 - AppMenu/Esc\n2 - Up/PgUp\n3 - FullScreen/WinMenu\n4 - Left/Home\n5 - Open/Locate\n6 - Right/End\n7 - PrevFocus/PrevWin\n8 - Down/PgDn\n9 - NextFocus/NextWin\n* - Modifier/Help\n0 - Space/Return\n# - Quit/Exit\n\nPanel - focus on panel\nExecute - execute app\nText - text typewriter\nBackspace - backspace) [ModeEnd] [Mode]=exec Ok($$)=Exec($(Param));Make(mode,GNOME) Back=Make(mode,GNOME) [ModeEnd] [Mode]=text Ok($$)=Exec(xte "str $(Param)");Make(mode,GNOME) Back=Make(mode,GNOME) [ModeEnd] [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/noise.cfg������������������������������������������������������0000644�0002322�0002322�00000014677�13126472435�021560� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote Server-mode configuration file for Noise (the official audio player of elementary OS) management. % https://launchpad.net/noise % % STATUS stable % SOUND mixer % ENV no % IPC app % DEF_PLAYER % ALL_IN_ONE % (Fixed) Quit issue https://bugs.launchpad.net/noise/+bug/1081493 % (Fixed) Stop/Play issue https://bugs.launchpad.net/noise/+bug/1081497 GuiAppName=Noise GuiAppBinary=noise GuiAppRun= P=`ps -ef|grep noise|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=noise.svg GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Noise is the official audio player of elementary OS [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(TEST_DBUS_SEND);\ Make(var,player_name,by_value,noise);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,noise_cmd,by_value,dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.Noise /org/mpris/MediaPlayer2);\ Make(var,noise_cmd_get_prop,by_value,dbus-send --type=method_call --print-reply --dest=org.mpris.MediaPlayer2.Noise /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get);\ Make(var,noise_cmd_set_prop,by_value,dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.Noise /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Set);\ Make(var,cover_size,by_value,);\ Make(var,noise_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get noise_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set noise_layout $(noise_layout)); (Connect)=\ Make(mode,noise_$(noise_layout)); [Mode]=noise_general PLAY=\ Exec($(noise_cmd) org.mpris.MediaPlayer2.Player.Play);\ Macro(NOISE_CHECK_TIMER); NOISE_CHECK_TIMER=\ Macro(NOISE_STATUS);\ Make(var,timer_action,if [ "x$(noise_status)" = "xPlaying" ]; then echo NOISE_START; else echo NOISE_CANCEL; fi);\ Macro($(timer_action)); PLAYPAUSE=\ Make(var,dummy,$(noise_cmd) org.mpris.MediaPlayer2.Player.PlayPause); %qdbus org.mpris.MediaPlayer2.Noise /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.SetPosition a `expr $(noise_pos) - 5000000` %qdbus org.mpris.MediaPlayer2.Noise /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.SetPosition a `expr $(noise_pos) + 5000000` RWD=\ Macro(NOISE_GETPOS);\ Exec($(noise_cmd) org.mpris.MediaPlayer2.Player.SetPosition string:'a' int64:`expr $(noise_pos) - 5000000`); FF=\ Macro(NOISE_GETPOS);\ Exec($(noise_cmd) org.mpris.MediaPlayer2.Player.SetPosition string:'a' int64:`expr $(noise_pos) + 5000000`); PREV=\ Exec($(noise_cmd) org.mpris.MediaPlayer2.Player.Previous);\ Macro(NOISE_TITLE); STOP=\ Timer(NOISE_TITLE,cancel);\ Exec($(noise_cmd) org.mpris.MediaPlayer2.Player.Stop);\ Set(title,);\ Set(status,); NEXT=\ Exec($(noise_cmd) org.mpris.MediaPlayer2.Player.Next);\ Macro(NOISE_TITLE); PAUSE=\ Exec($(noise_cmd) org.mpris.MediaPlayer2.Player.Pause); RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh noise); RUN_OR_QUIT=\ Make(var,noise_run_or_quit,\ P=`pgrep noise`;\ if [ "x$P" = "x" ]; then echo NOISE_TITLE; noise & else pkill noise; echo NOISE_CANCEL; fi);\ Macro($(noise_run_or_quit)); NOISE_CANCEL=\ Timer(NOISE_TITLE,cancel); NOISE_START=\ Macro(NOISE_TITLE);\ Timer(NOISE_TITLE,$(UpdateTimeout),0); APP_QUIT=\ Timer(NOISE_TITLE,cancel);\ Exec($(noise_cmd) org.mpris.MediaPlayer2.Quit);\ Exec(pkill noise); NOISE_TITLE_GENERAL=\ Make(var,art,$(noise_cmd_get_prop) string:org.mpris.MediaPlayer2.Player string:Metadata|awk '/.*xesam.albumArtist.*/{getline;getline;print}'|cut -f 2 -d '"');\ Make(var,tit,$(noise_cmd_get_prop) string:org.mpris.MediaPlayer2.Player string:Metadata|awk '/.*xesam.title.*/{getline;print}'|cut -f 2 -d '"');\ Set(title,$(art) - $(tit)); NOISE_STATUS=\ Make(var,noise_status,$(noise_cmd_get_prop) string:org.mpris.MediaPlayer2.Player string:PlaybackStatus|grep variant|cut -f 2 -d '"'); NOISE_GETPOS=\ Make(var,noise_pos,$(noise_cmd_get_prop) string:org.mpris.MediaPlayer2.Player string:Position|grep variant|tr -s ' '|cut -f 4 -d ' '); %qdbus org.mpris.MediaPlayer2.Noise /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus APP_PLAY_STATUS=\ Make(var,noise_status,$(noise_cmd_get_prop) string:org.mpris.MediaPlayer2.Player string:PlaybackStatus|tail -1|cut -d '"' -f 2);\ Make(var,app_status,if [ "x$(noise_status)" = "xPlaying" ]; then echo playing; else echo paused; fi); Shuffle=\ Make(var,shuffle_val,\ P=`$(noise_cmd_get_prop) string:org.mpris.MediaPlayer2.Player string:Shuffle|grep variant|tr -s ' '|cut -f 4 -d ' '`;\ if [ "x$P" = "xtrue" ]; then echo false; else echo true; fi);\ Exec($(noise_cmd_set_prop) string:org.mpris.MediaPlayer2.Player string:Shuffle variant:boolean:$(shuffle_val)); Repeat=\ Make(var,repeat_val,\ P=`$(noise_cmd_get_prop) string:org.mpris.MediaPlayer2.Player string:LoopStatus|grep variant|cut -f 2 -d '"'`;\ if [ "x$P" = "xNone" ]; then echo Playlist; else echo None; fi);\ Exec($(noise_cmd_set_prop) string:org.mpris.MediaPlayer2.Player string:LoopStatus variant:string:$(repeat_val)); Layout 3x4=\ Make(mode,noise_3x4); Layout 7x1=\ Make(mode,noise_7x1); Layout 5x1=\ Make(mode,noise_5x1); [ModeEnd] [Mode]=noise_3x4 : noise_general,default_player APP_MENU=\ Set(menu,replace,Shuffle,Repeat,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU); APP_POST_SETUP=\ Make(var,noise_layout,by_value,3x4);\ Macro(NOISE_CHECK_TIMER); NOISE_TITLE=\ Macro(NOISE_TITLE_GENERAL); [ModeEnd] [Mode]=noise_cover NOISE_TITLE=\ Macro(NOISE_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file,$(noise_cmd_get_prop) string:org.mpris.MediaPlayer2.Player string:Metadata|awk '/.*artUrl.*/{getline;print}'|cut -f 2 -d '"'|cut -f 2 -d ':'|sed 's/"$//;s/^\/\/\//\//');\ Macro(DEFAULT_METADATA_COVER); [ModeEnd] [Mode]=noise_7x1 : noise_general,default_player_7x1,noise_cover APP_MENU=\ Set(menu,replace,Shuffle,Repeat,Mute,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU); APP_POST_SETUP=\ Make(var,noise_layout,by_value,7x1);\ Macro(NOISE_CHECK_TIMER); [ModeEnd] [Mode]=noise_5x1 : noise_general,default_player_5x1,noise_cover APP_MENU=\ Set(menu,replace,Shuffle,Repeat,Mute,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU); APP_POST_SETUP=\ Make(var,noise_layout,by_value,5x1); APP_TITLE=\ Macro(NOISE_TITLE); PLAY=\ Macro(PLAYPAUSE); [ModeEnd] [End] �����������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/coverViewer.cfg������������������������������������������������0000644�0002322�0002322�00000005177�12664332726�022742� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for image viewing on the screen of cellphone (Server-mode) % prerequisites: ImageMagic % % STATUS stable % XTEST no % SOUND no % ENV no % FBROWSER v.4i GuiAppName=CoverViewer GuiAppIcon=redo.png GuiAppType=Custom GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example how to show cower images [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Macro(TEST_IMAGEMAGIC); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Set(parameter,debug,on);\ Set(icons,CoverViewer,\ 1,folder,2,plus,3,default,\ 4,default,5,default,6,default,\ 7,default,8,default,9,default,\ *,question,0,no,#,default);\ Set(hints,\ 1,file manager,\ *,help (press twice));\ Set(title,Cover viewer);\ Set(status,Press 1 to choose file);\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); Cancel=\ Make(exit); Back=\ Set(text,close);\ Set(image,close);\ Set(menu,replace,); Back($$)=\ Set(list,close); UpdateMenu=\ Set(menu,replace,GoTo,Open,Go Home); Open($$)=\ Make(var,view_idx,echo $(Index));\ Make(var,view_file,by_value,$(Param));\ Make(mode,cover_viewer); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v4i.cfg 1=\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); 2=\ Set(fullscreen,toggle); * *=\ Set(text,replace,Help, Image viewer.\n1 - File browser\n2 - Toggle Fullscreen);\ Set(menu,replace,); 0=\ Make(exit); [Mode]=cover_viewer (EnterMode)=\ Macro(SHOW); 1=\ Macro(Previous); 2=\ Macro(Next); % Android gestures support SlideLeft=\ Macro(Next); SlideRight=\ Macro(Previous); VOL-=\ Macro(Previous); VOL+=\ Macro(Next); WINMENU=\ Set(menu,replace,Next,Previous,Update,List); SHOW=\ Set(popup,show,Loading...);\ Set(layout,7x1,choose,2,ticker,up,VOL+,down,VOL-);\ Set(icons,Viewer,\ 1,prev,\ 2,next,\ 3,none,4,none,5,none,6,none,7,none,8,none,9,none,*,none,0,none,#,none);\ Exec(echo $(fbrowser_dir)/$(view_file));\ Set(cover,noname,$(fbrowser_dir)/$(view_file));\ Set(status,$(view_file));\ Set(popup,hide);\ Macro(WINMENU); Update=Macro(SHOW); Next=\ Make(var,view_idx,expr $(view_idx) + 1);\ Make(var,view_file,ls -1 "$(fbrowser_dir)"|head -$(view_idx)|tail -1);\ Macro(SHOW); Previous=\ Make(var,view_idx,J=`expr $(view_idx) - 1`;echo $J);\ Make(var,view_file,ls -1 "$(fbrowser_dir)"|head -$(view_idx)|tail -1);\ Macro(SHOW); List=\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu);\ Make(mode,default); [ModeEnd] [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/banshee.cfg����������������������������������������������������0000644�0002322�0002322�00000016302�12304553030�022017� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Banshee management (Server-mode) % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no % TODO FF/RWD do not works % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio GuiAppName=Banshee GuiAppBinary=echo 'B=`which banshee 2> /dev/null`;if [ "x$B" = "x" ]; then echo banshee-1; else echo banshee; fi'|sh -s GuiAppRun=echo 'P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=media-player-banshee.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Music management and playback for Gnome [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(TEST_DBUS_SEND);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,banshee_exec,which banshee 2> /dev/null);\ Make(var,banshee_exec,if [ "x$(banshee_exec)" = "x" ]; then which banshee-1; else echo $(banshee_exec); fi);\ Make(var,player_name,by_value,Banshee);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,banshee_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get banshee_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set banshee_layout $(banshee_layout)); (Connect)=\ Make(mode,banshee_$(banshee_layout)); [Mode]= banshee_general % BANSHEE_SETTITLE must be defined in child modes BANSHEE_DELTIMER=\ Set(title, );\ Set(status, );\ Timer(BANSHEE_SETTITLE,cancel); BANSHEE_SETTITLE_GENERAL=\ Macro(BANSHEE_DO_SETTITLE_GENERAL,\ B=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$B" != "x" ]; then echo 0; else echo 1; fi); BANSHEE_DO_SETTITLE_GENERAL=\ Make(var,banshee_title,$(banshee_exec) --query-title|cut -f 2 -d ":");\ Make(var,banshee_album,$(banshee_exec) --query-album|cut -f 2 -d ":");\ Make(var,banshee_artist,$(banshee_exec) --query-artist|cut -f 2 -d ":");\ Set(title,$(banshee_album) - $(banshee_title));\ Set(status,$(banshee_artist)); BANSHEE_CMD=\ Exec(P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" != "x" ]; then $(banshee_cmd); fi); BANSHEE_POS=\ Make(var,banshee_pos,banshee --query-position|cut -f 2 -d ' '|cut -f 1 -d ','); % Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg PLAY=\ Make(var,banshee_cmd,by_value,$(banshee_exec) --toggle-playing);\ Macro(BANSHEE_CMD);\ Macro(BANSHEE_SETTITLE);\ Timer(BANSHEE_SETTITLE,$(UpdateTimeout),0); RWD=\ Macro(BANSHEE_POS);\ Make(var,banshee_pos,echo "$(banshee_pos) - 10"|bc);\ Make(var,banshee_cmd,by_value,$(banshee_exec) --set-position=$(banshee_pos));\ Macro(BANSHEE_CMD); FF=\ Macro(BANSHEE_POS);\ Make(var,banshee_pos,echo "$(banshee_pos) + 10"|bc);\ Make(var,banshee_cmd,by_value,$(banshee_exec) --set-position=$(banshee_pos));\ Macro(BANSHEE_CMD); PREV=\ Make(var,banshee_cmd,by_value,$(banshee_exec) --previous);\ Macro(BANSHEE_CMD);\ Macro(BANSHEE_SETTITLE); STOP=\ Macro(BANSHEE_DELTIMER);\ Make(var,banshee_cmd,by_value,$(banshee_exec) --pause);\ Macro(BANSHEE_CMD);\ Set(title,);\ Set(status,); NEXT=\ Make(var,banshee_cmd,by_value,$(banshee_exec) --next);\ Macro(BANSHEE_CMD);\ Macro(BANSHEE_SETTITLE); PAUSE=\ Make(var,banshee_cmd,by_value,$(banshee_exec) --pause);\ Macro(BANSHEE_CMD);\ Macro(BANSHEE_DELTIMER); Shuffle=\ Exec(dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.banshee /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle); RUN_IF_NEED=\ Exec(P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" = "x" ]; then $(banshee_exec) > /dev/null & fi);\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch banshee); RUN_OR_QUIT=\ Macro(BANSHEE_DELTIMER);\ Exec(P=`ps -ef|grep banshee|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" = "x" ]; then $(banshee_exec) > /dev/null & else killall -r "banshee.*"; fi); APP_QUIT=\ Macro(BANSHEE_DELTIMER);\ Exec(killall -r "banshee.*"); APP_PLAY_STATUS=\ Make(var,banshee_status,banshee --query-current-state|grep playing|wc -l);\ Make(var,app_status,if [ "x$(banshee_status)" = "x0" ]; then echo paused; else echo playing; fi); Layout 3x4=\ Make(mode,banshee_3x4); Layout 7x1=\ Make(mode,banshee_7x1); Layout 5x1=\ Make(mode,banshee_5x1); [ModeEnd] [Mode]= banshee_3x4: banshee_general,default_player % (EnterMode) by Utils/aliases-server-player.cfg BANSHEE_SETTITLE=\ Macro(BANSHEE_SETTITLE_GENERAL); APP_MENU=\ Set(menu,replace,Shuffle,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,banshee_layout,by_value,3x4); % PowerMgmt by Utils/aliases-server.cfg [ModeEnd] [Mode]= banshee_cover BANSHEE_SETTITLE=\ Macro(BANSHEE_SETTITLE_GENERAL);\ Macro(APP_COVER); % too simple % Make(var,media_file,banshee --query-uri|sed "s/^uri: file:\/\///;s/'/'\\\''/g;s/\//\'\/\'/g;s/$/\'/g;s/^'\//\//");\ % APP_COVER=\ Make(var,coverencode,banshee --query-uri|sed "s/^uri: file:\/\///");\ Make(var,coverdecode,echo 'arg="$(coverencode)";i="0";\ while [ "$i" -lt ${#arg} ]; do c0=${arg:$i:1}; \ if [ "x$c0" = "x%" ]; then c1=${arg:$((i+1)):1}; c2=${arg:$((i+2)):1}; printf "\x$c1$c2"; i=$((i+3)); \ else echo -n "$c0"; i=$((i+1)); fi \ done'|bash -s);\ Make(var,media_file,echo $(coverdecode)|sed "s/'/'\\\''/g;s/\//\'\/\'/g;s/$/\'/g;s/^'\//\//")\;\ Macro(DEFAULT_COVER); [ModeEnd] [Mode]= banshee_7x1: banshee_general,default_player_7x1,banshee_cover % (EnterMode) by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Mute,Shuffle,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 5x1,Help,Run/Quit,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,banshee_layout,by_value,7x1); % PowerMgmt by Utils/aliases-server.cfg [ModeEnd] [Mode]= banshee_5x1: banshee_general,default_player_5x1,banshee_cover % (EnterMode) by Utils/aliases-server-player.cfg PLAY=\ Make(var,banshee_cmd,by_value,$(banshee_exec) --toggle-playing);\ Macro(BANSHEE_CMD); APP_MENU=\ Set(menu,replace,Mute,Shuffle,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 7x1,Help,Run/Quit,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,banshee_layout,by_value,5x1); APP_TITLE=\ Macro(BANSHEE_SETTITLE); % PowerMgmt by Utils/aliases-server.cfg [ModeEnd] %gdbus introspect --session --dest org.mpris.MediaPlayer2.banshee --object-path /org/mpris/MediaPlayer2 %qdbus org.mpris.MediaPlayer2.banshee /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle %dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.banshee /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next %qdbus org.mpris.MediaPlayer2.banshee /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get org.mpris.MediaPlayer2.Player Metadata %gdbus call --session --dest org.mpris.MediaPlayer2.banshee --object-path /org/mpris/MediaPlayer2 --method org.freedesktop.DBus.Properties.Get org.mpris.MediaPlayer2.Player Metadata %dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.banshee --print-reply /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:org.mpris.MediaPlayer2.Player string:Metadata [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/vlc.cfg��������������������������������������������������������0000644�0002322�0002322�00000010056�12673224605�021212� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for VLC (http://www.videolan.org/doc/play-howto/en/apb.html) % management. (Server-mode) % % Thanks to Eric (petesahat at sf.net) for the patch % % prerequisites: amixer/pactl utility % % STATUS stable % TODO open DVD works strange % XTEST yes % SOUND mixer % ENV no % FBROWSER v.4i % IPC app % DEF_VIDEO_PLAYER % ALL_IN_ONE % MEDIACENTER video GuiAppName=VLC GuiAppBinary=vlc GuiAppRun= P=`ps -ef|grep vlc|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=vlc.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=VLC media player is a highly portable multimedia player for various audio and video formats (MPEG-1, MPEG-2, MPEG-4, DivX, mp3, ogg, ...) as well as DVDs, VCDs, and various streaming protocols. Control it through http interface. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(TEST_QDBUS);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-video-player.cfg);\ Make(var,app_name,by_value,VLC);\ Make(var,open_file,by_value,);\ Make(var,vlc_dbus,by_value,qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2);\ Make(var,do_app_init,by_value,1);\ Make(var,vlc_dbus_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get vlc_dbus_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi);\ Make(var,app_manage_mode,by_value,vlc_dbus_$(vlc_dbus_layout)); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set vlc_dbus_layout $(vlc_dbus_layout)); (Connect)=\ Make(mode,vlc_dbus_init); [Mode]=vlc_dbus_init : default_video_player_init APP_IS_RUN=\ Make(var,app_run,\ ID=`id -u`;P=`ps -fu $ID|grep vlc|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" = "x" ]; then echo 0; else echo 1; fi); [ModeEnd] [Mode]=vlc_dbus_general APP_START_IF=\ Set(title,$(open_file));\ Exec(ID=`id -u`;\ P=`ps -fu $ID|grep vlc|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" = "x" ]; then \ cd "$(fbrowser_dir)"; vlc --control dbus $(open_file) 2> /dev/null& \ fi); % Application window should be present in output of "wmctrl -l" APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch vlc); APP_QUIT=\ Exec($(vlc_dbus) org.mpris.MediaPlayer2.Quit;sleep 1;V=`pgrep vlc`;if [ "x$V" != "x" ]; then pkill vlc; fi); APP_FULLSCREEN=\ Emulate(key,f); PLAY =Exec($(vlc_dbus) org.mpris.MediaPlayer2.Player.Play); PREV =Exec($(vlc_dbus) org.mpris.MediaPlayer2.Player.Previous); NEXT =Exec($(vlc_dbus) org.mpris.MediaPlayer2.Player.Next); RWD =Emulate(keydown,Alt_L,key,Left,keyup,Alt_L); FF =Emulate(keydown,Alt_L,key,Right,keyup,Alt_L); STOP =Exec($(vlc_dbus) org.mpris.MediaPlayer2.Player.Stop); PAUSE=Exec($(vlc_dbus) org.mpris.MediaPlayer2.Player.Pause) Open DVD=\ Macro(APP_QUIT);\ Exec(vlc --control dbus dvdsimple://); Alt-F4=\ Emulate(keydown,Alt_L,key,F4,keyup,Alt_L); % no working setpos method %VLC_GET_POS=\ % Make(var,vlc_pos,qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Position); Layout 3x4=\ Make(mode,vlc_dbus_3x4); Layout 5x1=\ Make(mode,vlc_dbus_5x1); [ModeEnd] [Mode]=vlc_dbus_3x4 : vlc_dbus_general, default_video_player APP_POST_SETUP=\ Make(var,vlc_dbus_layout,by_value,3x4);\ Make(var,app_manage_mode,by_value,vlc_dbus_$(vlc_dbus_layout)); APP_MENU=\ Set(menu,replace,Open DVD,Alt-F4,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % PowerMgmt by Utils/aliases-server.cfg % Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg [ModeEnd] [Mode]=vlc_dbus_5x1 : vlc_dbus_general,default_video_player_5x1 APP_POST_SETUP=\ Make(var,vlc_dbus_layout,by_value,5x1);\ Make(var,app_manage_mode,by_value,vlc_dbus_$(vlc_dbus_layout)); APP_MENU=\ Set(menu,replace,Help,Mute,Quit,Fullscreen,Files,Open DVD,Alt-F4,Layout 3x4,IMDB,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Fullscreen=\ Macro(APP_FULLSCREEN); [ModeEnd] [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/kaffeine.cfg���������������������������������������������������0000644�0002322�0002322�00000015465�12664332726�022213� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Kaffeine management. (Server-mode) % Kaffeine playlist should be already created % % Thanks to Gabriele Flammia for the patch. % % STATUS stable % XTEST no % SOUND app % ENV no % XTEST no % FBROWSER v.4i % ALL_IN_ONE GuiAppName=Kaffeine GuiAppBinary=kaffeine GuiAppRun=echo 'A=`pgrep kaffeine`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=kaffeine.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KDE media player [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Make(var,kde-version,kaffeine -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d ".");\ Macro(FBROWSER_IC_INIT); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,kaffeine-kde$(kde-version)); [Mode]=kaffeine-kde % Dummy mode (EnterMode)=\ Set(layout,default);\ Set(icons,Kaffeine,1,none,2,none,3,none,4,none,5,no,6,none,7,none,8,none,9,none,*,none,0,none,#,none);\ Set(title,It seems Kaffeine is not installed);\ Set(menu,replace,);\ Macro(ALLIN1MENU); [ModeEnd] [Mode]=kaffeine-kde4 (EnterMode)=\ Macro(RUN_IF_NEED);\ Set(layout,default);\ Set(title,);\ Set(status,);\ Set(icons,Kaffeine,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,pause,9,next,*,question,0,stop,#,no);\ Macro(K_MENU);\ Macro(ALLIN1MENU); Cancel=\ Macro(QUIT);\ Make(exit); Back=\ Set(text,close);\ Macro(K_MENU);\ Macro(ALLIN1MENU); Back($$)=\ Set(list,close);\ Macro(K_MENU);\ Macro(ALLIN1MENU); UpdateMenu=\ Set(menu,replace,GoTo,Open,Go Home); Browse files=\ Macro(QUIT);Set(title,);Macro(FBROWSER_IC_FILL_LIST);Macro(UpdateMenu); Fullscreen=\ Exec(qdbus org.mpris.kaffeine /Player ToggleFullScreen); QUIT=\ Exec(qdbus org.mpris.kaffeine /MainApplication quit) K_MENU=\ Set(menu,replace,Browse files,Fullscreen,PowerMgmt); MPRIS_POS=\ Make(var,mpris_pos,qdbus org.mpris.kaffeine /Player PositionGet 2> /dev/null); Open($$)=Set(list,close);\ ExecAndSet(title,$(Param));\ Set(menu,clear);\ Exec(P=`qdbus|grep kaffeine`; if [ "x$P" = "x" ]; then cd "$(fbrowser_dir)";kaffeine "$(Param)"& fi);\ Macro(K_MENU);\ Macro(ALLIN1MENU); GoTo($$) =Macro(FBROWSER_IC_GO_TO); Go Home($$)=Macro(FBROWSER_IC_GO_HOME); Push($$) =Macro(FBROWSER_IC_GO_TO); 1=Exec(qdbus org.mpris.kaffeine /Player DecreaseVolume); 2=Exec(qdbus org.mpris.kaffeine /Player ToggleMuted); 3=Exec(qdbus org.mpris.kaffeine /Player IncreaseVolume); 4=Macro(MPRIS_POS);\ Make(var,mpris_pos,echo "$(mpris_pos)-10000"|bc);\ Exec(qdbus org.mpris.kaffeine /Player PositionSet $(mpris_pos) 2> /dev/null); 5=Exec(qdbus org.mpris.kaffeine /Player Play); 6=Macro(MPRIS_POS);\ Make(var,mpris_pos,echo "$(mpris_pos)+10000"|bc);\ Exec(qdbus org.mpris.kaffeine /Player PositionSet $(mpris_pos) 2> /dev/null); 7=Exec(qdbus org.mpris.kaffeine /Player Prev); 8=Exec(qdbus org.mpris.kaffeine /Player Pause); 9=Exec(qdbus org.mpris.kaffeine /Player Next); * *=Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n4 Rew\n5 Play\n6 FF\n7 Prew\n8 Pause\n9 Next\n* * Help\n0 Stop\n* 0 Toggle Fullscreen\n# Exit\n) 0=Exec(qdbus org.mpris.kaffeine /Player Stop); * 0=Macro(Fullscreen); #=Macro(QUIT); RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh kaffeine); [ModeEnd] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % legacy support for KDE3, to be removed % % [Mode]=kaffeine-kde3 KAFFEINE_SETTITLE=\ ExecAndSet(title,basename "`dcop kaffeine KaffeineIface getFileName`") (EnterMode)=\ Exec(A=`dcop|grep kaffeine`; if [ "x$A" = "x" ]; then kaffeine;sleep 2;dcop kaffeine KaffeineIface setNumber 1;fi);\ Set(layout,default);\ Set(icons,Kaffeine,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Set(menu,replace,Playlist,Toggle Fullscreen,Close and exit);\ Macro(ALLIN1MENU); Cancel=\ Exec(dcop kaffeine KaffeineIface quit);\ Make(exit); Back=\ Set(text,close);\ Set(menu,replace,Playlist,Toggle Fullscreen,Close and exit);\ Macro(ALLIN1MENU) 1=Exec(dcop kaffeine KaffeineIface volDown) 2=Exec(dcop kaffeine KaffeineIface mute) 3=Exec(dcop kaffeine KaffeineIface volUp) 4=Exec(dcop kaffeine KaffeineIface posMinus) 5=Exec(dcop kaffeine KaffeineIface play);\ Set(status,Playing);\ Macro(KAFFEINE_SETTITLE);\ Timer(KAFFEINE_SETTITLE,$(UpdateTimeout),0); 6=Exec(dcop kaffeine KaffeineIface posPlus) 7=ExecAndSet(title,dcop kaffeine KaffeineIface previous;basename "`dcop kaffeine KaffeineIface getFileName`") 8=Exec(dcop kaffeine KaffeineIface stop);\ Set(status,Stopped);\ Timer(KAFFEINE_SETTITLE,cancel); 9=ExecAndSet(title,dcop kaffeine KaffeineIface next;basename "`dcop kaffeine KaffeineIface getFileName`") * 1=Exec(dcop kaffeine XinePartIface zoomOut); * 3=Exec(dcop kaffeine XinePartIface zoomIn); * *=Set(text,replace,Help,1 Vol- 2 Mute 3 Vol+\n4 Rew 5 Play 6 FF\n7 Prew 8 Stop 9 Next\n* Help 0 Pause # Exit\n* 1 - Zoom In\n* 3 - Zoom Out\n* # - Run/Quit) * #=Exec(P=`dcop|grep kaffeine`; if [ "x$P" = "x" ]; then kaffeine;sleep 2;dcop kaffeine KaffeineIface setNumber 1; else dcop kaffeine KaffeineIface quit; fi) 0=Exec(dcop kaffeine KaffeineIface pause);\ Make(mode,kaffeine_pause); #=Exec(dcop kaffeine KaffeineIface quit) Playlist=Make(mode,kaffeine_playlist) Toggle Fullscreen=Exec(dcop kaffeine KaffeineIface fullscreen); Close and exit=Macro(Cancel); [ModeEnd] [Mode]=kaffeine_pause Back=\ Set(text,close);\ Set(menu,replace,Playlist,Toggle Fullscreen);\ Macro(ALLIN1MENU) (EnterMode)=\ Set(status,Paused);\ Timer(KAFFEINE_SETTITLE,cancel); 0=Exec(dcop kaffeine KaffeineIface pause);\ Set(status,Playing);\ Make(mode,kaffeine);\ Macro(KAFFEINE_SETTITLE);\ Timer(KAFFEINE_SETTITLE,$(UpdateTimeout),0); 5=Exec(dcop kaffeine KaffeineIface play;dcop kaffeine KaffeineIface fullscreen);\ Make(mode,kaffeine);\ Set(status,Playing);\ ExecAndSet(title,basename "`dcop kaffeine KaffeineIface getFileName`") * *=Set(text,replace,Help,1 Vol- 2 Mute 3 Vol+\n4 Rew 5 Play 6 FF\n7 Prew 8 Stop 9 Next\n* Help 0 Pause # Exit\n* # - Run/Quit) [ModeEnd] [Mode]=kaffeine_playlist (EnterMode)=\ Timer(KAFFEINE_SETTITLE,cancel);\ Set(list,font,medium);\ ExecAndSet(list,replace,Playlist,grep url $HOME/.kde/share/apps/kaffeine/playlists/`grep Playlists $HOME/.kde/share/config/kaffeinerc|head -1|sed 's/Playlists=//'`.kaffeine|sed 's/<entry.*url=\"\(.*\)\" album\(.\)*$/\1/'|xargs -i basename {}|sed 's/$/,/');\ Set(menu,add,Choose); (ExitMode)=\ Set(list,close);\ Set(status,Playing);\ Set(menu,replace,Playlist,Toggle Fullscreen,Close and exit);\ ExecAndSet(title,basename `dcop kaffeine KaffeineIface getFileName`);\ Macro(KAFFEINE_SETTITLE);\ Timer(KAFFEINE_SETTITLE,10,0); Back($$)=Make(mode,kaffeine); Choose($$)=Exec(dcop kaffeine KaffeineIface setNumber `expr $(Index)`); Push($$)=Macro(Choose($$)); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/tvtime.cfg�����������������������������������������������������0000644�0002322�0002322�00000006435�12120355624�021735� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for tvtime management. (Server-mode) % % STATUS stable % XTEST no % SOUND app % ENV no % ALL_IN_ONE GuiAppName=TvTime GuiAppBinary=tvtime GuiAppRun= A=`ps -ef|grep tvtime|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=tvtime.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Tvtime is a high quality television application for use with video capture cards on Linux systems. [Protocol]=Server % Aliases for AverMedia IR remote KEY_VOLUMEDOWN=Macro(TVTIME_VOLDOWN) KEY_MIN_INTERESTING=Macro(TVTIME_MUTE) KEY_VOLUMEUP=Macro(TVTIME_VOLUP) KEY_CHANNELUP=Macro(TVTIME_CHUP) KEY_CHANNELDOWN=Macro(TVTIME_CHDN) KEY_ZOOM=Macro(TVTIME_ZOOM) (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Make(mode,tvtime); Cancel=\ Make(exit); TVTIME_CHDN =Exec(tvtime-command DOWN > /dev/null) TVTIME_ZOOM =Exec(tvtime-command TOGGLE_FULLSCREEN > /dev/null) TVTIME_CHUP =Exec(tvtime-command UP > /dev/null) TVTIME_VOLDOWN=Exec(tvtime-command MIXER_DOWN > /dev/null) TVTIME_MUTE =Exec(tvtime-command TOGGLE_MUTE > /dev/null) TVTIME_VOLUP =Exec(tvtime-command MIXER_UP > /dev/null) [Mode]=tvtime (EnterMode)=\ Exec(P=`ps -ef|grep tvtime|grep -v grep|grep -v anyremote`; if [ "x$P" = "x" ]; then tvtime & fi);\ Set(status,Type channel number);\ Set(title,);\ Set(layout,default);\ Set(icons,SAME,0,default,1,default,2,default,3,default,4,default,5,default,6,default,7,default,8,default,9,default,#,refresh,*,question);\ Set(menu,replace,Launch,Quit);\ Macro(ALLIN1MENU) (ExitMode)=\ Set(status,---); Cancel=\ Exec(tvtime-command QUIT);Make(exit); Quit=\ Exec(tvtime-command QUIT) Launch=\ Exec(P=`ps -ef|grep tvtime|grep -v grep|grep -v anyremote`; if [ "x$P" = "x" ]; then tvtime & fi) Back=Set(text,close);Macro(ALLIN1MENU) 0=Exec(tvtime-command CHANNEL_0 > /dev/null) 1=Exec(tvtime-command CHANNEL_1 > /dev/null) 2=Exec(tvtime-command CHANNEL_2 > /dev/null) 3=Exec(tvtime-command CHANNEL_3 > /dev/null) 4=Exec(tvtime-command CHANNEL_4 > /dev/null) 5=Exec(tvtime-command CHANNEL_5 > /dev/null) 6=Exec(tvtime-command CHANNEL_6 > /dev/null) 7=Exec(tvtime-command CHANNEL_7 > /dev/null) 8=Exec(tvtime-command CHANNEL_8 > /dev/null) 9=Exec(tvtime-command CHANNEL_9 > /dev/null) * *=Set(text,replace,Help,Press numeric buttons to choose channel\n# - switch mode\n* # - Run/Quit) * #=Exec(P=`pgrep tvtime|grep -v grep|grep -v edit`; if [ "x$P" = "x" ]; then tvtime; else tvtime-command QUIT; fi) #=Make(mode,tvtime2); [ModeEnd] [Mode]=tvtime2 (EnterMode)=\ Set(icons,TVtime,1,vol_down,2,mute,3,vol_up,4,prev,5,fullscreen,6,next,7,default,8,default,9,default,0,default,#,refresh,*,question);\ Set(menu,replace,Launch,Quit);\ Macro(ALLIN1MENU) (ExitMode)=\ Set(status,---); Back=\ Set(text,close);\ Set(menu,replace,Launch,Quit);\ Macro(ALLIN1MENU) Quit=\ Exec(tvtime-command QUIT) Launch=\ Exec(P=`ps -ef|grep tvtime|grep -v grep|grep -v anyremote`; if [ "x$P" = "x" ]; then tvtime & fi) 1=Macro(TVTIME_VOLDOWN) 2=Macro(TVTIME_MUTE) 3=Macro(TVTIME_VOLUP) 4=Macro(TVTIME_CHDN) 5=Macro(TVTIME_ZOOM) 6=Macro(TVTIME_CHUP) 7=Make(none) 8=Make(none) 9=Make(none) * *=Set(text,replace,Help,1 - Vol-\n2 - Mute\n3 - Vol+\n4 - Ch-\n5 - Fullscreen\n6 - Ch +\n** - Help\n# - switch mode) 0=Make(none) #=Make(mode,tvtime) [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/boxee.cfg������������������������������������������������������0000644�0002322�0002322�00000003354�12073567677�021550� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Boxee (http://www.boxee.tv/) % % STATUS unknown % XTEST no % SOUND app % ENV no % ALL_IN_ONE GuiAppName=Boxee GuiAppBinary=/opt/boxee/run-boxee-desktop GuiAppRun=echo 'A=`ps -ef|grep Boxee|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=boxee.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Boxee is a free, open-source software platform that integrates personal media with Internet media along with social networking. [Protocol]=Server BOXEE_RUN=\ Exec(P=`ps -ef|grep Boxee|grep -v grep|grep -v edit|grep -v anyremote`; if [ "x$P" = "x" ]; then /opt/boxee/run-boxee-desktop& fi); BOXEE_RUN_STOP=\ Exec(P=`ps -ef|grep Boxee|grep -v grep|grep -v edit|grep -v anyremote`; if [ "x$P" = "x" ]; then /opt/boxee/run-boxee-desktop& else pkill Boxee; fi); % redefine joystick keys UP =Emulate(key,Up); DOWN =Emulate(key,Down); LEFT =Emulate(key,Left); RIGHT =Emulate(key,Right); FIRE =Emulate(key,Return); (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Set(icons,Boxee,1,vol_down,2,up,3,vol_up,4,left,5,play,6,right,7,no,8,down,9,stop,*,question,0,refresh,#,default);\ Set(layout,default,keypad_only);\ Macro(BOXEE_MENU);\ Macro(BOXEE_RUN); BOXEE_MENU=\ Set(menu,replace,);\ Macro(ALLIN1MENU) Cancel=\ Make(exit); Back=Set(text,close);Macro(BOXEE_MENU) 1=Emulate(key,minus); 2=Emulate(key,Up); 3=Emulate(key,plus); 4=Emulate(key,Left); 5=Emulate(key,Return); 6=Emulate(key,Right); 7=Emulate(key,Escape) 8=Emulate(key,Down); 9=Emulate(key,X) 0=Emulate(key,H); * *=Set(text,replace,Help, 1 Volume+\n2 Up\n3 Volume-\n4 Left\n5 OK\n6 Right\n7 Back\n8 Down\n9 Stop\n0 Home menu\n* * Show help\n* # Run/Quit); * #=Macro(BOXEE_RUN_STOP) [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/exampleModes.cfg�����������������������������������������������0000644�0002322�0002322�00000005550�12073567677�023071� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file. Multi-mode example (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Multimode test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Simple example of how to use multiple modes. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Set(title,);\ Set(status,);\ Set(icons,Multimode Example,\ 1,default,2,default,3,default,\ 4,default,5,default,6,default,\ 7,default,8,default,9,default,\ *,question,0,default,#,default);\ Set(menu,replace,Default,Mode1,Mode2,Mode3); Cancel=\ Make(exit); Back=Set(text,close); Default=Make(mode,default); Mode1=Make(mode,1); Mode2=Make(mode,2); Mode3=Make(mode,3); % Default mode 1=Exec($(CfgDir)/Utils/message.sh Default_1) 2=Exec($(CfgDir)/Utils/message.sh Default_2) 3=Exec($(CfgDir)/Utils/message.sh Default_3) 4=Exec($(CfgDir)/Utils/message.sh Default_4) 5=Exec($(CfgDir)/Utils/message.sh Default_5) 6=Exec($(CfgDir)/Utils/message.sh Default_6) 7=Exec($(CfgDir)/Utils/message.sh Default_7) 8=Exec($(CfgDir)/Utils/message.sh Default_8) 9=Exec($(CfgDir)/Utils/message.sh Default_9) 0=Exec($(CfgDir)/Utils/message.sh Default_0) * * =Set(text,replace,Help,Just press buttons and inspect results\nUse menu to switch between modes) [Mode]=1 (EnterMode)=Exec($(CfgDir)/Utils/message.sh "New mode is $(Mode)");Set(status, Mode 1); 1=Exec($(CfgDir)/Utils/message.sh Mode1_1) 2=Exec($(CfgDir)/Utils/message.sh Mode1_2) 3=Exec($(CfgDir)/Utils/message.sh Mode1_3) 4=Exec($(CfgDir)/Utils/message.sh Mode1_4) 5=Exec($(CfgDir)/Utils/message.sh Mode1_5) 6=Exec($(CfgDir)/Utils/message.sh Mode1_6) 7=Exec($(CfgDir)/Utils/message.sh Mode1_7) 8=Exec($(CfgDir)/Utils/message.sh Mode1_8) 9=Exec($(CfgDir)/Utils/message.sh Mode1_9) 0=Exec($(CfgDir)/Utils/message.sh Mode1_0) [ModeEnd] [Mode]=2 (EnterMode)=Exec($(CfgDir)/Utils/message.sh "New mode is $(Mode)");Set(status, Mode 2); 1=Exec($(CfgDir)/Utils/message.sh Mode2_1) 2=Exec($(CfgDir)/Utils/message.sh Mode2_2) 3=Exec($(CfgDir)/Utils/message.sh Mode2_3) 4=Exec($(CfgDir)/Utils/message.sh Mode2_4) 5=Exec($(CfgDir)/Utils/message.sh Mode2_5) 6=Exec($(CfgDir)/Utils/message.sh Mode2_6) 7=Exec($(CfgDir)/Utils/message.sh Mode2_7) 8=Exec($(CfgDir)/Utils/message.sh Mode2_8) 9=Exec($(CfgDir)/Utils/message.sh Mode2_9) 0=Exec($(CfgDir)/Utils/message.sh Mode2_0) [ModeEnd] [Mode]=3 (EnterMode)=Exec($(CfgDir)/Utils/message.sh "New mode is $(Mode)");Set(status, Mode 3); 1=Exec($(CfgDir)/Utils/message.sh Mode3_1) 2=Exec($(CfgDir)/Utils/message.sh Mode3_2) 3=Exec($(CfgDir)/Utils/message.sh Mode3_3) 4=Exec($(CfgDir)/Utils/message.sh Mode3_4) 5=Exec($(CfgDir)/Utils/message.sh Mode3_5) 6=Exec($(CfgDir)/Utils/message.sh Mode3_6) 7=Exec($(CfgDir)/Utils/message.sh Mode3_7) 8=Exec($(CfgDir)/Utils/message.sh Mode3_8) 9=Exec($(CfgDir)/Utils/message.sh Mode3_9) 0=Exec($(CfgDir)/Utils/message.sh Mode3_0) [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/decibel.cfg����������������������������������������������������0000644�0002322�0002322�00000017740�12664332726�022030� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for decibel-audio-player (http://decibel.silent-blade.org/) (Server-mode) % % STATUS nonstable % TODO shuffle works strange;repeat do not works,RWD&FF works badly,playlist-add do not works,choose item from playlist do not works (seems these are decibel bugs) % XTEST no % SOUND mixer % ENV no % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio % FBROWSER v.4i GuiAppName=Decibel GuiAppBinary=decibel-audio-player GuiAppRun=echo 'A=`ps -ef|grep decibel-audio-player|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=decibel-audio-player.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Decibel Audio Player is a GTK+ open-source (GPL license) audio player designed for GNU/Linux, which aims at being very straightforward to use by mean of a very clean and user friendly interface. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(TEST_DBUS_SEND);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(FBROWSER_IC_INIT);\ Make(var,player_name,by_value,Decibel);\ Make(var,decibel_get,by_value,\ dbus-send --type=method_call --print-reply --dest=org.mpris.dap /Player);\ Make(var,decibel_metadata,by_value,\ $(decibel_get) org.freedesktop.MediaPlayer.GetMetadata);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,decibel_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get decibel_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set decibel_layout $(decibel_layout)); (Connect)=\ Make(mode,decibel_$(decibel_layout)); [Mode]=decibel_general % Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg %decibel-audio-player-remote volume 100 GETPOS=\ Make(var,dap_pos,$(decibel_get) org.freedesktop.MediaPlayer.PositionGet|tail -1|grep int|tr -s ' '|cut -f 3 -d ' '); SETPOS=\ Exec(dbus-send --type=method_call --dest=org.mpris.dap /Player org.freedesktop.MediaPlayer.PositionSet uint32:$(dap_pos_set)); % 'decibel-audio-player-remote play' does not resume playing after pause PLAY=\ Exec(decibel-audio-player-remote pause);\ Macro(DECIBEL_TITLE);\ Timer(DECIBEL_TITLE,$(UpdateTimeout),0); %RWD=Emulate(key,Left); %FF=Emulate(key,Right); RWD=\ Macro(GETPOS);\ Make(var,dap_pos_set,expr $(dap_pos) - 5000);\ Macro(SETPOS); FF=\ Macro(GETPOS);\ Make(var,dap_pos_set,expr $(dap_pos) + 5000);\ Macro(SETPOS); PREV=\ Exec(decibel-audio-player-remote prev);\ Macro(DECIBEL_TITLE); STOP=\ Timer(DECIBEL_TITLE,cancel);\ Exec(decibel-audio-player-remote stop); NEXT=\ Exec(decibel-audio-player-remote next);\ Macro(DECIBEL_TITLE); PAUSE=\ Exec(decibel-audio-player-remote pause); RUN_IF_NEED=\ Exec(P=`ps -ef|grep decibel-audio-player|grep -v grep`;\ if [ "x$P" = "x" ]; then decibel-audio-player 2> /dev/null & fi); RUN_OR_QUIT=\ Exec(P=`ps -ef|grep decibel-audio-player|grep -v grep`; \ if [ "x$P" = "x" ]; then \ decibel-audio-player 2> /dev/null & \ else \ pkill -f "python.*decibel-audio-player"; \ fi); APP_QUIT=\ Timer(APLAYER_TITLE,cancel);\ Exec(pkill -f "python.*decibel-audio-player"); DECIBEL_TITLE_GENERAL=\ Make(var,dap_artist,$(decibel_metadata)|awk '/.*string "artist".*/{getline;print}'|grep string|cut -f 2 -d '"');\ Make(var,dap_album,$(decibel_metadata)|awk '/.*string "album".*/{getline;print}'|grep string|cut -f 2 -d '"');\ Make(var,dap_title,$(decibel_metadata)|awk '/.*string "title".*/{getline;print}'|grep string|cut -f 2 -d '"');\ Set(title,$(dap_artist) - $(dap_album));\ Set(status,$(dap_title)); Shuffle=\ Exec(decibel-audio-player-remote shuffle); Repeat=\ Exec(P=`$(decibel_get) org.freedesktop.MediaPlayer.GetStatus|awk '/.*struct.*/{getline;getline;getline;getline;print}'|grep int|tr -s ' '|cut -f 3 -d ' '`; \ if [ "x$P" != "x1" ]; \ then \ dbus-send --type=method_call --dest=org.mpris.dap /TrackList org.freedesktop.MediaPlayer.SetLoop boolean:true & \ else \ dbus-send --type=method_call --dest=org.mpris.dap /TrackList org.freedesktop.MediaPlayer.SetLoop boolean:false & \ fi); Playlist=\ Make(mode,decibel_playlist); APP_PLAY_STATUS=\ Make(var,decibel_status,$(decibel_get) org.freedesktop.MediaPlayer.GetStatus|awk '/.*struct.*/{getline;print}'|grep int|tr -s ' '|cut -f 3 -d ' ');\ Make(var,app_status,if [ "x$(decibel_status)" = "x0" ]; then echo playing; else echo paused; fi); Layout 3x4=\ Make(mode,decibel_3x4); Layout 7x1=\ Make(mode,decibel_7x1); Layout 5x1=\ Make(mode,decibel_5x1); [ModeEnd] [Mode]=decibel_3x4 : decibel_general, default_player % (EnterMode) by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Playlist,Shuffle,Repeat,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,decibel_layout,by_value,3x4); DECIBEL_TITLE=\ Macro(DECIBEL_TITLE_GENERAL); [ModeEnd] [Mode]=decibel_cover DECIBEL_TITLE=\ Macro(DECIBEL_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file,\ $(decibel_metadata)|awk '/.*string "location".*/{getline;print}'|grep string|cut -f 2 -d '"'|cut -f 2 -d ':'|sed 's/"$//;s/^\/\/\//\//');\ Macro(DEFAULT_COVER); [ModeEnd] [Mode]=decibel_7x1 : decibel_general, default_player_7x1, decibel_cover % (EnterMode) by Utils/aliases-server-player.cfg % Mute, Next Cover,Previous Cover,Update Cover, PowerMgmt by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Playlist,Shuffle,Repeat,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,decibel_layout,by_value,7x1); [ModeEnd] [Mode]=decibel_5x1 : decibel_general, default_player_5x1, decibel_cover % (EnterMode) by Utils/aliases-server-player.cfg % Mute, Next Cover,Previous Cover,Update Cover, PowerMgmt by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Playlist,Shuffle,Repeat,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,decibel_layout,by_value,5x1); % not timer PLAY=\ Exec(decibel-audio-player-remote pause);\ Macro(DECIBEL_TITLE); APP_TITLE=\ Macro(DECIBEL_TITLE); [ModeEnd] [Mode]=decibel_nobutton % bug-prone :) 1=Make(mode,decibel_$(decibel_layout)); 2=Make(mode,decibel_$(decibel_layout)); 3=Make(mode,decibel_$(decibel_layout)); 4=Make(mode,decibel_$(decibel_layout)); 5=Make(mode,decibel_$(decibel_layout)); 6=Make(mode,decibel_$(decibel_layout)); 7=Make(mode,decibel_$(decibel_layout)); 8=Make(mode,decibel_$(decibel_layout)); 9=Make(mode,decibel_$(decibel_layout)); *=Make(mode,decibel_$(decibel_layout)); 0=Make(mode,decibel_$(decibel_layout)); #=Make(mode,decibel_$(decibel_layout)); [ModeEnd] [Mode]=decibel_playlist : decibel_nobutton %playlist-add do not works in Decibel v0.09 (EnterMode)=\ ExecAndSet(list,replace,Playlist,$(CfgDir)/Utils/getPlayList.sh org.mpris.dap);\ ExecAndSet(list,select,expr 1 + `dbus-send --type=method_call --print-reply --dest=org.mpris.dap /TrackList org.freedesktop.MediaPlayer.GetCurrentTrack|tail -1|grep int|tr -s ' '|cut -f 3 -d ' '`);\ Set(menu,replace,Choose,Delete); Push($$)=\ Macro(Choose($$)) % no such method %Choose($$)=\ % Exec(); Delete($$)=\ Exec(dbus-send --type=method_call --dest=org.mpris.dap /TrackList org.freedesktop.MediaPlayer.DelTrack `expr $(Index) - 1`); Back($$)=\ Set(list,close);\ Make(mode,decibel_$(decibel_layout)); [ModeEnd] %UpdateMenu=Set(menu,replace,GoTo,Add,Go Home); %Add to playlist=Macro(FBROWSER_IC_FILL_LIST);Macro(UpdateMenu); %GoTo =Macro(FBROWSER_IC_GO_TO); %Go Home =Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v4i.cfg %Add($$)=Set(list,close);\ % Exec(decibel-audio-player-remote pl-add "$(fbrowser_dir)/$(Param)");\ % Macro(APP_MENU); [End] ��������������������������������anyremote-6.7.1/cfg-data/Server-mode/nokia-e71.cfg��������������������������������������������������0000644�0002322�0002322�00000046461�10736301564�022130� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for getting device key codes. (Server-mode) % % tests for key codes in range -10 to 999, K0 to K9, *, #, 8364, LEFT, RIGHT, UP, DOWN, FIRE % % Hugo Raguet 2014 % STATUS unknown % XTEST yes % SOUND no % ENV no GuiAppName=Nokia E71-1 test GuiAppType=Example GuiAppProtocols=Server GuiAppDesc=Example of keypad handling for Nokia-E71-1 [Protocol]=Server (Connect)=\ Set(layout,default,keypad_only); Cancel=Make(exit); K0=Set(title,K0) K1=Set(title,K1) K2=Set(title,K2) K3=Set(title,K3) K4=Set(title,K4) K5=Set(title,K5) K6=Set(title,K6) K7=Set(title,K7) K8=Set(title,K8) K9=Set(title,K9) -1=Set(title,-1) -2=Set(title,-2) -3=Set(title,-3) -4=Set(title,-4) -5=Set(title,-5) -6=Set(title,-6) -7=Set(title,-7) -8=Set(title,-8) -9=Set(title,-9) -10=Set(title,-10) 0=Set(title,0) 1=Set(title,1) 2=Set(title,2) 3=Set(title,3) 4=Set(title,4) 5=Set(title,5) 6=Set(title,6) 7=Set(title,7) 8=Set(title,8) 9=Set(title,9) 10=Set(title,10) 11=Set(title,11) 12=Set(title,12) 13=Set(title,13) 14=Set(title,14) 15=Set(title,15) 16=Set(title,16) 17=Set(title,17) 18=Set(title,18) 19=Set(title,19) 20=Set(title,20) 21=Set(title,21) 22=Set(title,22) 23=Set(title,23) 24=Set(title,24) 25=Set(title,25) 26=Set(title,26) 27=Set(title,27) 28=Set(title,28) 29=Set(title,29) 30=Set(title,30) 31=Set(title,31) 32=Set(title,32) 33=Set(title,33) 34=Set(title,34) 35=Set(title,35) 36=Set(title,36) 37=Set(title,37) 38=Set(title,38) 39=Set(title,39) 40=Set(title,40) 41=Set(title,41) 42=Set(title,42) 43=Set(title,43) 44=Set(title,44) 45=Set(title,45) 46=Set(title,46) 47=Set(title,47) 48=Set(title,48) 49=Set(title,49) 50=Set(title,50) 51=Set(title,51) 52=Set(title,52) 53=Set(title,53) 54=Set(title,54) 55=Set(title,55) 56=Set(title,56) 57=Set(title,57) 58=Set(title,58) 59=Set(title,59) 60=Set(title,60) 61=Set(title,61) 62=Set(title,62) 63=Set(title,63) 64=Set(title,64) 65=Set(title,65) 66=Set(title,66) 67=Set(title,67) 68=Set(title,68) 69=Set(title,69) 70=Set(title,70) 71=Set(title,71) 72=Set(title,72) 73=Set(title,73) 74=Set(title,74) 75=Set(title,75) 76=Set(title,76) 77=Set(title,77) 78=Set(title,78) 79=Set(title,79) 80=Set(title,80) 81=Set(title,81) 82=Set(title,82) 83=Set(title,83) 84=Set(title,84) 85=Set(title,85) 86=Set(title,86) 87=Set(title,87) 88=Set(title,88) 89=Set(title,89) 90=Set(title,90) 91=Set(title,91) 92=Set(title,92) 93=Set(title,93) 94=Set(title,94) 95=Set(title,95) 96=Set(title,96) 97=Set(title,97) 98=Set(title,98) 99=Set(title,99) 100=Set(title,100) 101=Set(title,101) 102=Set(title,102) 103=Set(title,103) 104=Set(title,104) 105=Set(title,105) 106=Set(title,106) 107=Set(title,107) 108=Set(title,108) 109=Set(title,109) 110=Set(title,110) 111=Set(title,111) 112=Set(title,112) 113=Set(title,113) 114=Set(title,114) 115=Set(title,115) 116=Set(title,116) 117=Set(title,117) 118=Set(title,118) 119=Set(title,119) 120=Set(title,120) 121=Set(title,121) 122=Set(title,122) 123=Set(title,123) 124=Set(title,124) 125=Set(title,125) 126=Set(title,126) 127=Set(title,127) 128=Set(title,128) 129=Set(title,129) 130=Set(title,130) 131=Set(title,131) 132=Set(title,132) 133=Set(title,133) 134=Set(title,134) 135=Set(title,135) 136=Set(title,136) 137=Set(title,137) 138=Set(title,138) 139=Set(title,139) 140=Set(title,140) 141=Set(title,141) 142=Set(title,142) 143=Set(title,143) 144=Set(title,144) 145=Set(title,145) 146=Set(title,146) 147=Set(title,147) 148=Set(title,148) 149=Set(title,149) 150=Set(title,150) 151=Set(title,151) 152=Set(title,152) 153=Set(title,153) 154=Set(title,154) 155=Set(title,155) 156=Set(title,156) 157=Set(title,157) 158=Set(title,158) 159=Set(title,159) 160=Set(title,160) 161=Set(title,161) 162=Set(title,162) 163=Set(title,163) 164=Set(title,164) 165=Set(title,165) 166=Set(title,166) 167=Set(title,167) 168=Set(title,168) 169=Set(title,169) 170=Set(title,170) 171=Set(title,171) 172=Set(title,172) 173=Set(title,173) 174=Set(title,174) 175=Set(title,175) 176=Set(title,176) 177=Set(title,177) 178=Set(title,178) 179=Set(title,179) 180=Set(title,180) 181=Set(title,181) 182=Set(title,182) 183=Set(title,183) 184=Set(title,184) 185=Set(title,185) 186=Set(title,186) 187=Set(title,187) 188=Set(title,188) 189=Set(title,189) 190=Set(title,190) 191=Set(title,191) 192=Set(title,192) 193=Set(title,193) 194=Set(title,194) 195=Set(title,195) 196=Set(title,196) 197=Set(title,197) 198=Set(title,198) 199=Set(title,199) 200=Set(title,200) 201=Set(title,201) 202=Set(title,202) 203=Set(title,203) 204=Set(title,204) 205=Set(title,205) 206=Set(title,206) 207=Set(title,207) 208=Set(title,208) 209=Set(title,209) 210=Set(title,210) 211=Set(title,211) 212=Set(title,212) 213=Set(title,213) 214=Set(title,214) 215=Set(title,215) 216=Set(title,216) 217=Set(title,217) 218=Set(title,218) 219=Set(title,219) 220=Set(title,220) 221=Set(title,221) 222=Set(title,222) 223=Set(title,223) 224=Set(title,224) 225=Set(title,225) 226=Set(title,226) 227=Set(title,227) 228=Set(title,228) 229=Set(title,229) 230=Set(title,230) 231=Set(title,231) 232=Set(title,232) 233=Set(title,233) 234=Set(title,234) 235=Set(title,235) 236=Set(title,236) 237=Set(title,237) 238=Set(title,238) 239=Set(title,239) 240=Set(title,240) 241=Set(title,241) 242=Set(title,242) 243=Set(title,243) 244=Set(title,244) 245=Set(title,245) 246=Set(title,246) 247=Set(title,247) 248=Set(title,248) 249=Set(title,249) 250=Set(title,250) 251=Set(title,251) 252=Set(title,252) 253=Set(title,253) 254=Set(title,254) 255=Set(title,255) 256=Set(title,256) 257=Set(title,257) 258=Set(title,258) 259=Set(title,259) 260=Set(title,260) 261=Set(title,261) 262=Set(title,262) 263=Set(title,263) 264=Set(title,264) 265=Set(title,265) 266=Set(title,266) 267=Set(title,267) 268=Set(title,268) 269=Set(title,269) 270=Set(title,270) 271=Set(title,271) 272=Set(title,272) 273=Set(title,273) 274=Set(title,274) 275=Set(title,275) 276=Set(title,276) 277=Set(title,277) 278=Set(title,278) 279=Set(title,279) 280=Set(title,280) 281=Set(title,281) 282=Set(title,282) 283=Set(title,283) 284=Set(title,284) 285=Set(title,285) 286=Set(title,286) 287=Set(title,287) 288=Set(title,288) 289=Set(title,289) 290=Set(title,290) 291=Set(title,291) 292=Set(title,292) 293=Set(title,293) 294=Set(title,294) 295=Set(title,295) 296=Set(title,296) 297=Set(title,297) 298=Set(title,298) 299=Set(title,299) 300=Set(title,300) 301=Set(title,301) 302=Set(title,302) 303=Set(title,303) 304=Set(title,304) 305=Set(title,305) 306=Set(title,306) 307=Set(title,307) 308=Set(title,308) 309=Set(title,309) 310=Set(title,310) 311=Set(title,311) 312=Set(title,312) 313=Set(title,313) 314=Set(title,314) 315=Set(title,315) 316=Set(title,316) 317=Set(title,317) 318=Set(title,318) 319=Set(title,319) 320=Set(title,320) 321=Set(title,321) 322=Set(title,322) 323=Set(title,323) 324=Set(title,324) 325=Set(title,325) 326=Set(title,326) 327=Set(title,327) 328=Set(title,328) 329=Set(title,329) 330=Set(title,330) 331=Set(title,331) 332=Set(title,332) 333=Set(title,333) 334=Set(title,334) 335=Set(title,335) 336=Set(title,336) 337=Set(title,337) 338=Set(title,338) 339=Set(title,339) 340=Set(title,340) 341=Set(title,341) 342=Set(title,342) 343=Set(title,343) 344=Set(title,344) 345=Set(title,345) 346=Set(title,346) 347=Set(title,347) 348=Set(title,348) 349=Set(title,349) 350=Set(title,350) 351=Set(title,351) 352=Set(title,352) 353=Set(title,353) 354=Set(title,354) 355=Set(title,355) 356=Set(title,356) 357=Set(title,357) 358=Set(title,358) 359=Set(title,359) 360=Set(title,360) 361=Set(title,361) 362=Set(title,362) 363=Set(title,363) 364=Set(title,364) 365=Set(title,365) 366=Set(title,366) 367=Set(title,367) 368=Set(title,368) 369=Set(title,369) 370=Set(title,370) 371=Set(title,371) 372=Set(title,372) 373=Set(title,373) 374=Set(title,374) 375=Set(title,375) 376=Set(title,376) 377=Set(title,377) 378=Set(title,378) 379=Set(title,379) 380=Set(title,380) 381=Set(title,381) 382=Set(title,382) 383=Set(title,383) 384=Set(title,384) 385=Set(title,385) 386=Set(title,386) 387=Set(title,387) 388=Set(title,388) 389=Set(title,389) 390=Set(title,390) 391=Set(title,391) 392=Set(title,392) 393=Set(title,393) 394=Set(title,394) 395=Set(title,395) 396=Set(title,396) 397=Set(title,397) 398=Set(title,398) 399=Set(title,399) 400=Set(title,400) 401=Set(title,401) 402=Set(title,402) 403=Set(title,403) 404=Set(title,404) 405=Set(title,405) 406=Set(title,406) 407=Set(title,407) 408=Set(title,408) 409=Set(title,409) 410=Set(title,410) 411=Set(title,411) 412=Set(title,412) 413=Set(title,413) 414=Set(title,414) 415=Set(title,415) 416=Set(title,416) 417=Set(title,417) 418=Set(title,418) 419=Set(title,419) 420=Set(title,420) 421=Set(title,421) 422=Set(title,422) 423=Set(title,423) 424=Set(title,424) 425=Set(title,425) 426=Set(title,426) 427=Set(title,427) 428=Set(title,428) 429=Set(title,429) 430=Set(title,430) 431=Set(title,431) 432=Set(title,432) 433=Set(title,433) 434=Set(title,434) 435=Set(title,435) 436=Set(title,436) 437=Set(title,437) 438=Set(title,438) 439=Set(title,439) 440=Set(title,440) 441=Set(title,441) 442=Set(title,442) 443=Set(title,443) 444=Set(title,444) 445=Set(title,445) 446=Set(title,446) 447=Set(title,447) 448=Set(title,448) 449=Set(title,449) 450=Set(title,450) 451=Set(title,451) 452=Set(title,452) 453=Set(title,453) 454=Set(title,454) 455=Set(title,455) 456=Set(title,456) 457=Set(title,457) 458=Set(title,458) 459=Set(title,459) 460=Set(title,460) 461=Set(title,461) 462=Set(title,462) 463=Set(title,463) 464=Set(title,464) 465=Set(title,465) 466=Set(title,466) 467=Set(title,467) 468=Set(title,468) 469=Set(title,469) 470=Set(title,470) 471=Set(title,471) 472=Set(title,472) 473=Set(title,473) 474=Set(title,474) 475=Set(title,475) 476=Set(title,476) 477=Set(title,477) 478=Set(title,478) 479=Set(title,479) 480=Set(title,480) 481=Set(title,481) 482=Set(title,482) 483=Set(title,483) 484=Set(title,484) 485=Set(title,485) 486=Set(title,486) 487=Set(title,487) 488=Set(title,488) 489=Set(title,489) 490=Set(title,490) 491=Set(title,491) 492=Set(title,492) 493=Set(title,493) 494=Set(title,494) 495=Set(title,495) 496=Set(title,496) 497=Set(title,497) 498=Set(title,498) 499=Set(title,499) 500=Set(title,500) 501=Set(title,501) 502=Set(title,502) 503=Set(title,503) 504=Set(title,504) 505=Set(title,505) 506=Set(title,506) 507=Set(title,507) 508=Set(title,508) 509=Set(title,509) 510=Set(title,510) 511=Set(title,511) 512=Set(title,512) 513=Set(title,513) 514=Set(title,514) 515=Set(title,515) 516=Set(title,516) 517=Set(title,517) 518=Set(title,518) 519=Set(title,519) 520=Set(title,520) 521=Set(title,521) 522=Set(title,522) 523=Set(title,523) 524=Set(title,524) 525=Set(title,525) 526=Set(title,526) 527=Set(title,527) 528=Set(title,528) 529=Set(title,529) 530=Set(title,530) 531=Set(title,531) 532=Set(title,532) 533=Set(title,533) 534=Set(title,534) 535=Set(title,535) 536=Set(title,536) 537=Set(title,537) 538=Set(title,538) 539=Set(title,539) 540=Set(title,540) 541=Set(title,541) 542=Set(title,542) 543=Set(title,543) 544=Set(title,544) 545=Set(title,545) 546=Set(title,546) 547=Set(title,547) 548=Set(title,548) 549=Set(title,549) 550=Set(title,550) 551=Set(title,551) 552=Set(title,552) 553=Set(title,553) 554=Set(title,554) 555=Set(title,555) 556=Set(title,556) 557=Set(title,557) 558=Set(title,558) 559=Set(title,559) 560=Set(title,560) 561=Set(title,561) 562=Set(title,562) 563=Set(title,563) 564=Set(title,564) 565=Set(title,565) 566=Set(title,566) 567=Set(title,567) 568=Set(title,568) 569=Set(title,569) 570=Set(title,570) 571=Set(title,571) 572=Set(title,572) 573=Set(title,573) 574=Set(title,574) 575=Set(title,575) 576=Set(title,576) 577=Set(title,577) 578=Set(title,578) 579=Set(title,579) 580=Set(title,580) 581=Set(title,581) 582=Set(title,582) 583=Set(title,583) 584=Set(title,584) 585=Set(title,585) 586=Set(title,586) 587=Set(title,587) 588=Set(title,588) 589=Set(title,589) 590=Set(title,590) 591=Set(title,591) 592=Set(title,592) 593=Set(title,593) 594=Set(title,594) 595=Set(title,595) 596=Set(title,596) 597=Set(title,597) 598=Set(title,598) 599=Set(title,599) 600=Set(title,600) 601=Set(title,601) 602=Set(title,602) 603=Set(title,603) 604=Set(title,604) 605=Set(title,605) 606=Set(title,606) 607=Set(title,607) 608=Set(title,608) 609=Set(title,609) 610=Set(title,610) 611=Set(title,611) 612=Set(title,612) 613=Set(title,613) 614=Set(title,614) 615=Set(title,615) 616=Set(title,616) 617=Set(title,617) 618=Set(title,618) 619=Set(title,619) 620=Set(title,620) 621=Set(title,621) 622=Set(title,622) 623=Set(title,623) 624=Set(title,624) 625=Set(title,625) 626=Set(title,626) 627=Set(title,627) 628=Set(title,628) 629=Set(title,629) 630=Set(title,630) 631=Set(title,631) 632=Set(title,632) 633=Set(title,633) 634=Set(title,634) 635=Set(title,635) 636=Set(title,636) 637=Set(title,637) 638=Set(title,638) 639=Set(title,639) 640=Set(title,640) 641=Set(title,641) 642=Set(title,642) 643=Set(title,643) 644=Set(title,644) 645=Set(title,645) 646=Set(title,646) 647=Set(title,647) 648=Set(title,648) 649=Set(title,649) 650=Set(title,650) 651=Set(title,651) 652=Set(title,652) 653=Set(title,653) 654=Set(title,654) 655=Set(title,655) 656=Set(title,656) 657=Set(title,657) 658=Set(title,658) 659=Set(title,659) 660=Set(title,660) 661=Set(title,661) 662=Set(title,662) 663=Set(title,663) 664=Set(title,664) 665=Set(title,665) 666=Set(title,666) 667=Set(title,667) 668=Set(title,668) 669=Set(title,669) 670=Set(title,670) 671=Set(title,671) 672=Set(title,672) 673=Set(title,673) 674=Set(title,674) 675=Set(title,675) 676=Set(title,676) 677=Set(title,677) 678=Set(title,678) 679=Set(title,679) 680=Set(title,680) 681=Set(title,681) 682=Set(title,682) 683=Set(title,683) 684=Set(title,684) 685=Set(title,685) 686=Set(title,686) 687=Set(title,687) 688=Set(title,688) 689=Set(title,689) 690=Set(title,690) 691=Set(title,691) 692=Set(title,692) 693=Set(title,693) 694=Set(title,694) 695=Set(title,695) 696=Set(title,696) 697=Set(title,697) 698=Set(title,698) 699=Set(title,699) 700=Set(title,700) 701=Set(title,701) 702=Set(title,702) 703=Set(title,703) 704=Set(title,704) 705=Set(title,705) 706=Set(title,706) 707=Set(title,707) 708=Set(title,708) 709=Set(title,709) 710=Set(title,710) 711=Set(title,711) 712=Set(title,712) 713=Set(title,713) 714=Set(title,714) 715=Set(title,715) 716=Set(title,716) 717=Set(title,717) 718=Set(title,718) 719=Set(title,719) 720=Set(title,720) 721=Set(title,721) 722=Set(title,722) 723=Set(title,723) 724=Set(title,724) 725=Set(title,725) 726=Set(title,726) 727=Set(title,727) 728=Set(title,728) 729=Set(title,729) 730=Set(title,730) 731=Set(title,731) 732=Set(title,732) 733=Set(title,733) 734=Set(title,734) 735=Set(title,735) 736=Set(title,736) 737=Set(title,737) 738=Set(title,738) 739=Set(title,739) 740=Set(title,740) 741=Set(title,741) 742=Set(title,742) 743=Set(title,743) 744=Set(title,744) 745=Set(title,745) 746=Set(title,746) 747=Set(title,747) 748=Set(title,748) 749=Set(title,749) 750=Set(title,750) 751=Set(title,751) 752=Set(title,752) 753=Set(title,753) 754=Set(title,754) 755=Set(title,755) 756=Set(title,756) 757=Set(title,757) 758=Set(title,758) 759=Set(title,759) 760=Set(title,760) 761=Set(title,761) 762=Set(title,762) 763=Set(title,763) 764=Set(title,764) 765=Set(title,765) 766=Set(title,766) 767=Set(title,767) 768=Set(title,768) 769=Set(title,769) 770=Set(title,770) 771=Set(title,771) 772=Set(title,772) 773=Set(title,773) 774=Set(title,774) 775=Set(title,775) 776=Set(title,776) 777=Set(title,777) 778=Set(title,778) 779=Set(title,779) 780=Set(title,780) 781=Set(title,781) 782=Set(title,782) 783=Set(title,783) 784=Set(title,784) 785=Set(title,785) 786=Set(title,786) 787=Set(title,787) 788=Set(title,788) 789=Set(title,789) 790=Set(title,790) 791=Set(title,791) 792=Set(title,792) 793=Set(title,793) 794=Set(title,794) 795=Set(title,795) 796=Set(title,796) 797=Set(title,797) 798=Set(title,798) 799=Set(title,799) 800=Set(title,800) 801=Set(title,801) 802=Set(title,802) 803=Set(title,803) 804=Set(title,804) 805=Set(title,805) 806=Set(title,806) 807=Set(title,807) 808=Set(title,808) 809=Set(title,809) 810=Set(title,810) 811=Set(title,811) 812=Set(title,812) 813=Set(title,813) 814=Set(title,814) 815=Set(title,815) 816=Set(title,816) 817=Set(title,817) 818=Set(title,818) 819=Set(title,819) 820=Set(title,820) 821=Set(title,821) 822=Set(title,822) 823=Set(title,823) 824=Set(title,824) 825=Set(title,825) 826=Set(title,826) 827=Set(title,827) 828=Set(title,828) 829=Set(title,829) 830=Set(title,830) 831=Set(title,831) 832=Set(title,832) 833=Set(title,833) 834=Set(title,834) 835=Set(title,835) 836=Set(title,836) 837=Set(title,837) 838=Set(title,838) 839=Set(title,839) 840=Set(title,840) 841=Set(title,841) 842=Set(title,842) 843=Set(title,843) 844=Set(title,844) 845=Set(title,845) 846=Set(title,846) 847=Set(title,847) 848=Set(title,848) 849=Set(title,849) 850=Set(title,850) 851=Set(title,851) 852=Set(title,852) 853=Set(title,853) 854=Set(title,854) 855=Set(title,855) 856=Set(title,856) 857=Set(title,857) 858=Set(title,858) 859=Set(title,859) 860=Set(title,860) 861=Set(title,861) 862=Set(title,862) 863=Set(title,863) 864=Set(title,864) 865=Set(title,865) 866=Set(title,866) 867=Set(title,867) 868=Set(title,868) 869=Set(title,869) 870=Set(title,870) 871=Set(title,871) 872=Set(title,872) 873=Set(title,873) 874=Set(title,874) 875=Set(title,875) 876=Set(title,876) 877=Set(title,877) 878=Set(title,878) 879=Set(title,879) 880=Set(title,880) 881=Set(title,881) 882=Set(title,882) 883=Set(title,883) 884=Set(title,884) 885=Set(title,885) 886=Set(title,886) 887=Set(title,887) 888=Set(title,888) 889=Set(title,889) 890=Set(title,890) 891=Set(title,891) 892=Set(title,892) 893=Set(title,893) 894=Set(title,894) 895=Set(title,895) 896=Set(title,896) 897=Set(title,897) 898=Set(title,898) 899=Set(title,899) 900=Set(title,900) 901=Set(title,901) 902=Set(title,902) 903=Set(title,903) 904=Set(title,904) 905=Set(title,905) 906=Set(title,906) 907=Set(title,907) 908=Set(title,908) 909=Set(title,909) 910=Set(title,910) 911=Set(title,911) 912=Set(title,912) 913=Set(title,913) 914=Set(title,914) 915=Set(title,915) 916=Set(title,916) 917=Set(title,917) 918=Set(title,918) 919=Set(title,919) 920=Set(title,920) 921=Set(title,921) 922=Set(title,922) 923=Set(title,923) 924=Set(title,924) 925=Set(title,925) 926=Set(title,926) 927=Set(title,927) 928=Set(title,928) 929=Set(title,929) 930=Set(title,930) 931=Set(title,931) 932=Set(title,932) 933=Set(title,933) 934=Set(title,934) 935=Set(title,935) 936=Set(title,936) 937=Set(title,937) 938=Set(title,938) 939=Set(title,939) 940=Set(title,940) 941=Set(title,941) 942=Set(title,942) 943=Set(title,943) 944=Set(title,944) 945=Set(title,945) 946=Set(title,946) 947=Set(title,947) 948=Set(title,948) 949=Set(title,949) 950=Set(title,950) 951=Set(title,951) 952=Set(title,952) 953=Set(title,953) 954=Set(title,954) 955=Set(title,955) 956=Set(title,956) 957=Set(title,957) 958=Set(title,958) 959=Set(title,959) 960=Set(title,960) 961=Set(title,961) 962=Set(title,962) 963=Set(title,963) 964=Set(title,964) 965=Set(title,965) 966=Set(title,966) 967=Set(title,967) 968=Set(title,968) 969=Set(title,969) 970=Set(title,970) 971=Set(title,971) 972=Set(title,972) 973=Set(title,973) 974=Set(title,974) 975=Set(title,975) 976=Set(title,976) 977=Set(title,977) 978=Set(title,978) 979=Set(title,979) 980=Set(title,980) 981=Set(title,981) 982=Set(title,982) 983=Set(title,983) 984=Set(title,984) 985=Set(title,985) 986=Set(title,986) 987=Set(title,987) 988=Set(title,988) 989=Set(title,989) 990=Set(title,990) 991=Set(title,991) 992=Set(title,992) 993=Set(title,993) 994=Set(title,994) 995=Set(title,995) 996=Set(title,996) 997=Set(title,997) 998=Set(title,998) 999=Set(title,999) *=Set(title,*) #=Set(title,#) 8364=Set(title,8364) % euro sign LEFT=Set(title,LEFT) RIGHT=Set(title,RIGHT) UP=Set(title,UP) DOWN=Set(title,DOWN) FIRE=Set(title,FIRE) [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/totem.cfg������������������������������������������������������0000644�0002322�0002322�00000006554�12673224605�021566� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Totem management (Server-mode) % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no % FBROWSER v.4i % DEF_VIDEO_PLAYER % ALL_IN_ONE % MEDIACENTER video GuiAppName=Totem GuiAppBinary=totem GuiAppRun= A=`ps -ef|grep totem|grep -v totem-plugin-viewer|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=totem.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Totem is the official movie player of the GNOME desktop environment based on xine-lib or GStreamer. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-video-player.cfg);\ Make(var,app_name,by_value,Totem);\ Make(var,do_app_init,by_value,1);\ Make(var,open_file,by_value,);\ Make(var,totem_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get totem_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi);\ Make(var,app_manage_mode,by_value,totem_$(totem_layout)); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set totem_layout $(totem_layout)); (Connect)=\ Make(mode,totem_init); [Mode]=totem_init : default_video_player_init APP_IS_RUN=\ Make(var,app_run,\ ID=`id -u`;P=`ps -fu $ID|grep totem|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" = "x" ]; then echo 0; else echo 1; fi); [ModeEnd] [Mode]=totem_general APP_START_IF=\ Exec(ID=`id -u`;\ P=`ps -fu $ID|grep totem|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" = "x" ]; then cd "$(fbrowser_dir)"; totem $(open_file)& fi); % Application window should be present in output of "wmctrl -l" APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch totem); APP_QUIT=\ Exec(P=`ps -ef|grep totem|grep -v totem-plugin-viewer|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" != "x" ]; then totem --quit; killall totem; fi); APP_FULLSCREEN=\ Exec(totem --fullscreen); PLAY =Exec(totem --play-pause); RWD =Exec(totem --seek-bwd); FF =Exec(totem --seek-fwd); STOP =Exec(totem --pause) PAUSE=Exec(totem --pause); Layout 5x1=\ Make(mode,totem_5x1); Layout 3x4=\ Make(mode,totem_3x4); [ModeEnd] [Mode]=totem_3x4 : totem_general,default_video_player % (EnterMode), volume control and 0-9,*,# assignment sby Utils/aliases-server-video-player.cfg %1=Exec(totem --volume-down); %3=Exec(totem --volume-up); APP_POST_SETUP=\ Make(var,totem_layout,by_value,3x4);\ Make(var,app_manage_mode,by_value,totem_$(totem_layout)); APP_MENU=\ Set(menu,replace,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % PowerMgmt by Utils/aliases-server.cfg [ModeEnd] [Mode]=totem_5x1 : totem_general,default_video_player_5x1 % (EnterMode), volume control and 0-9,*,# assignmentsby Utils/aliases-server-video-player.cfg APP_POST_SETUP=\ Make(var,totem_layout,by_value,5x1);\ Make(var,app_manage_mode,by_value,totem_$(totem_layout)); APP_MENU=\ Set(menu,replace,Help,Mute,Quit,Fullscreen,Files,Layout 3x4,IMDB,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % Help,Mute,Run/Quit by Utils/aliases-server-video-player.cfg % PowerMgmt by Utils/aliases-server.cfg Fullscreen=\ Macro(APP_FULLSCREEN); [ModeEnd] [End] ����������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/impress.cfg����������������������������������������������������0000644�0002322�0002322�00000007025�12664332726�022116� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for LibreOffice/OpenOffice Impress management (Server-mode) % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.4i % DEF_PRESENTATION % ALL_IN_ONE % MEDIACENTER presentation GuiAppName=Open Office Impress GuiAppBinary=ooimpress GuiAppRun=echo 'LO=`which libreoffice 2> /dev/null`; EXEC=`if [ "x$LO" = "x" ]; then echo simpress.bin; else echo "soffice.bin --impress"; fi`;A=`ps -ef|grep "$EXEC"|grep -v grep|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Impress is a truly outstanding tool for creating effective multimedia presentations. Your presentations can be enhanced with 2D and 3D clip art, special effects and transition styles, animations, and high-impact drawing tools. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-presentation.cfg);\ Make(var,open_file,by_value,);\ Make(var,app_name,by_value,Impress);\ Make(var,app_manage_mode,by_value,impress_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,impress); [Mode]=impress : default_presentation_init APP_IS_RUN=\ Make(var,impress_isrun,LO=`which libreoffice 2> /dev/null`; if [ "x$LO" = "x" ]; then echo simpress.bin; else echo "soffice.bin --impress"; fi);\ Make(var,app_run,ps -fu `id -u`|grep '$(impress_isrun)'|grep -v grep|grep -v edit|head -1|wc -l); [ModeEnd] [Mode]=impress_manage : default_presentation SETUP_DEFAULT_PRESENTATION=\ Set(layout,default);\ Set(icons,$(app_name),\ 1,none,2,none,3,none,\ 4,rewind,5,fullscreen,6,forward,\ 7,prev,8,none,9,next,\ *,question,0,none,#,no);\ Set(status,$(app_name));\ Set(title,$(open_file)); * *=Set(text,replace,Help,1\n2\n3\n4 Previous Page\n5 Fullscreen\n6 Next Page\n7 First Page\n8\n9 Last Page\n ** Help\n0\n# Quit $(app_name)\n); APP_MENU=\ Set(menu,replace,File Browser,Press Enter,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_SETUP=\ Macro(SETUP_APP_EXEC);\ Make(var,impress_fs,by_value,F5);\ % Search for Libre Office or for Open Office SETUP_APP_EXEC=\ Make(var,impress_exec,LO=`which libreoffice 2> /dev/null`; if [ "x$LO" = "x" ]; then echo simpress.bin; else echo "libreoffice --impress"; fi);\ Make(var,impress_isrun,LO=`which libreoffice 2> /dev/null`; if [ "x$LO" = "x" ]; then echo simpress.bin; else echo "soffice.bin --impress"; fi);\ Make(var,impress_switch,LO=`which libreoffice 2> /dev/null`; if [ "x$LO" = "x" ]; then echo simpress.bin; else echo soffice.bin; fi); APP_START_IF=\ Make(var,app_run,ps -fu `id -u`|grep '$(impress_isrun)'|grep -v grep|grep -v edit|head -1|wc -l);\ Exec(if [ "x$(app_run)" = "x0" ]; then cd "$(fbrowser_dir)";$(impress_exec) $(open_file)& fi 2> /dev/null); APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch $(impress_switch)); APP_QUIT=\ Set(title, );\ Set(status, );\ Emulate(key,Escape);\ Emulate(keydown,Control_L,key,q,keyup,Control_L);\ Exec(sleep 3;pkill -fu `id -u` "$(impress_isrun)"); PRES_PREV_PAGE=\ Emulate(key,Page_Up); PRES_NEXT_PAGE=\ Emulate(key,Page_Down); PRES_ZOOM_IN=\ Make(none); PRES_ZOOM_OUT=\ Make(none); PRES_FIRST_PAGE=\ Emulate(key,Home); PRES_LAST_PAGE=\ Emulate(key,End); PRES_TOGGLE_FULLSCREEN=\ Emulate(key,$(impress_fs));\ Make(var,impress_fs,if [ "x$(impress_fs)" = "xF5" ]; then echo Escape; else echo F5; fi); PRES_REFRESH=\ Make(none); Press Enter=\ Emulate(key,Enter); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/eom.cfg��������������������������������������������������������0000644�0002322�0002322�00000003735�12664332726�021220� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Eye-of-mate (http://mate-desktop.org/) management. (Server-mode) % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.4i % DEF_PIX_VIEWER % ALL_IN_ONE % MEDIACENTER photo GuiAppName=Eye of mate GuiAppBinary=eom GuiAppRun=echo 'A=`ps -ef|grep eom|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=eom.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=eom or the Eye of MATE is a simple graphics viewer for the MATE desktop which uses the gdk-pixbuf library. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-pix-viewer.cfg);\ Make(var,app_name,by_value,Eye Of Mate);\ Make(var,open_file,by_value,);\ Make(var,app_manage_mode,by_value,eom_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,eom_init); [Mode]=eom_init : default_pixviewer_init APP_IS_RUN=\ Make(var,app_run,pgrep -u `id -u` eom|head -1|wc -l); [ModeEnd] [Mode]=eom_manage : default_pixviewer % (EnterMode) by Utils/aliases-server-pix-viewer.cfg APP_START_IF=\ Make(var,app_run,pgrep -u `id -u` eom|head -1|wc -l));\ Exec(if [ "x$(app_run)" = "x0" ]; then cd "$(fbrowser_dir)";eom $(open_file)& fi 2> /dev/null); APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch eom); APP_QUIT=\ Exec(pkill -u `id -u` eom); APP_FULLSCREEN=Emulate(key,F11) PIX_PREV=Emulate(keydown,Alt_L,key,Left,keyup,Alt_L) PIX_NEXT=Emulate(keydown,Alt_L,key,Right,keyup,Alt_L) PIX_FIRST=Emulate(keydown,Alt_L,key,Home,keyup,Alt_L) PIX_LAST=Emulate(keydown,Alt_L,key,End,keyup,Alt_L) PIX_ZOOM_IN=Emulate(keydown,Control_L,key,KP_Add,keyup,Control_L) PIX_ZOOM_OUT=Emulate(keydown,Control_L,key,minus,keyup,Control_L) PIX_FIT=Emulate(keydown,Control_L,key,0,keyup,Control_L) PIX_ROTATE=Emulate(keydown,Control_L,key,R,keyup,Control_L) [ModeEnd] [End] �����������������������������������anyremote-6.7.1/cfg-data/Server-mode/gpicview.cfg���������������������������������������������������0000644�0002322�0002322�00000004774�12664332726�022261� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Gpicview (http://lxde.sourceforge.net/gpicview/) management. (Server-mode) % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.4i % DEF_PIX_VIEWER % ALL_IN_ONE % MEDIACENTER photo GuiAppName=GPicView GuiAppBinary=gpicview GuiAppRun=echo 'ID=`id -u`;A=`ps -fu $ID|grep gpicview|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=gpicview.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=GPicView - A Simple and Fast Image Viewer for X [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-pix-viewer.cfg);\ Make(var,app_name,by_value,GPicView);\ Make(var,open_file,by_value,);\ Make(var,app_manage_mode,by_value,gpicview_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,gpicview_init); [Mode]= gpicview_init : default_pixviewer_init APP_IS_RUN=\ Make(var,app_run,ps -fu `id -u`|grep gpicview|grep -v grep|grep -v anyremote|grep -v edit|head -1|wc -l); [ModeEnd] [Mode]=gpicview_manage : default_pixviewer % (EnterMode) by Utils/aliases-server-pix-viewer.cfg % Override SETUP_DEFAULT_PIXVIEWER=\ Set(layout,default);\ Set(icons,$(app_name),\ 1,folder,2,plus,3,refresh,\ 4,rewind,5,fit,6,forward,\ 7,none,8,minus,9,none,\ *,question,0,fullscreen,#,no);\ Set(status,$(app_name));\ Set(title,); % Override * *=Set(text,replace,Help,1 File Browser\n2 Zoom In\n3 Rotate Right\n4 Previous\n5 Fit\n6 Next\n7\n8 Zoom Out\n9\n ** Help\n0 Fullscreen\n# Quit $(app_name)\n); APP_START_IF=\ Make(var,app_run,ps -fu `id -u`|grep gpicview|grep -v grep|grep -v anyremote|grep -v edit|head -1|wc -l);\ Exec(if [ "x$(app_run)" = "x0" ]; then cd "$(fbrowser_dir)";gpicview $(open_file)& fi 2> /dev/null); APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch gpicview); APP_QUIT=\ Emulate(key,Q);\ Exec(pkill gpicview); APP_MENU=\ Set(menu,replace,Slideshow,Rotate Left,Rotate Right,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_FULLSCREEN=Emulate(key,F11) % PowerMgmt by Utils/aliases-server.cfg Slideshow=Emulate(key,W) Rotate Left=Emulate(key,L) Rotate Right=Macro(PIX_ROTATE) PIX_PREV=Emulate(key,Page_Up) PIX_NEXT=Emulate(key,Page_Down) PIX_FIRST=Make(none) PIX_LAST=Make(none) PIX_ZOOM_IN=Emulate(key,KP_Add) PIX_ZOOM_OUT=Emulate(key,minus) PIX_FIT=Emulate(key,f) PIX_ROTATE=Emulate(key,R) [ModeEnd] [End] ����anyremote-6.7.1/cfg-data/Server-mode/amixer.cfg�����������������������������������������������������0000644�0002322�0002322�00000004115�12664332726�021716� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for sound management. (Server-mode) % prerequisites: amixer utility % % STATUS stable % XTEST no % SOUND mixer % ENV no GuiAppName=Sound volume test GuiAppIcon=sound.png GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Control sound volume with amixer utility % 1 - increase sound volume % 2 - mute/unmute % 3 - increase sound volume % 5 - show list of available controls [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(INIT_CONTROL);\ Macro(TEST_MIXER); (Connect)=\ Set(parameter,debug,on);\ Set(icons,SoundControl,1,minus,2,mute,3,plus,4,default,5,file,6,default,7,default,8,default,9,default,0,default,*,question,#,default);\ Set(hints,1,voulume down,2,mute,3,volume up,*,help (press twice));\ Macro(SET_VIEW); TEST_MIXER=\ Exec(TEST=`amixer -c $(MixerCard) sget Master,0`;U=`echo $TEST|grep "Usage: amixer" |wc -l`;if [ "x$U" != "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: You have to correct example according to Your system configuration !"; fi); INIT_CONTROL=\ Exec(if [ -f $(TmpDir)/amixer.control ]; then true; else echo "Master@0" > $(TmpDir)/amixer.control; fi) SET_VIEW=\ Set(menu,replace,Controls);\ ExecAndSet(title,cat $(TmpDir)/amixer.control|sed "s/@/,/"); Cancel=\ Make(exit); Controls=\ ExecAndSet(list,replace,Mixer Controls,amixer scontrols|sed 's/Simple mixer control //;s/,/@/;s/$/,/');\ Set(menu,replace,Choose); Choose($$)=\ Exec(echo $(Param) > $(TmpDir)/amixer.control);\ Set(list,close);\ Macro(SET_VIEW); Push($$)=Macro(Choose($$)); Back=Set(text,close);Macro(SET_VIEW); Back($$)=Set(list,close);Macro(SET_VIEW); 1=Exec(amixer -c $(MixerCard) sset `cat $(TmpDir)/amixer.control|sed "s/@/,/"` 5%- -q) 2=Exec(amixer -c $(MixerCard) sset `cat $(TmpDir)/amixer.control|sed "s/@/,/"` toggle -q) 3=Exec(amixer -c $(MixerCard) sset `cat $(TmpDir)/amixer.control|sed "s/@/,/"` 5%+ -q) 5=Macro(Controls); * *=Set(text,replace,Help,1 - Vol-\n2 - Mute/Unmute\n3 - Vol+\n5 - Choose mixer control\nKnown problem: mute/unmute can work incorrectly with PulseAudio) [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/nokia-e75.cfg��������������������������������������������������0000644�0002322�0002322�00000006346�12073567677�022151� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Nokia-E75 management. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Nokia E75 GuiAppType=Example GuiAppProtocols=Server GuiAppDesc=Example of keypad handling for Nokia-E75 [Protocol]=Server (Connect)=\ Set(layout,default,keypad_only);\ Set(status,);\ Set(title,Nokia-E75); K8=Emulate(key,BackSpace) 0=Emulate(key,0) 1=Emulate(key,1) 2=Emulate(key,2) 3=Emulate(key,3) 4=Emulate(key,4) 5=Emulate(key,5) 6=Emulate(key,6) 7=Emulate(key,7) 8=Emulate(key,8) 9=Emulate(key,9) #=Emulate(keydown,Shift_L,key,numbersign,keyup,Shift_L) *=Emulate(keydown,Shift_L,key,asterisk,keyup,Shift_L) 10=Emulate(key,Return) 32=Emulate(key,space) 33=Emulate(keydown,Shift_L,key,exclam,keyup,Shift_L) 36=Emulate(keydown,Shift_L,key,dollar,keyup,Shift_L) 38=Emulate(keydown,Shift_L,key,ampersand,keyup,Shift_L) 40=Emulate(key,braceleft) 41=Emulate(key,braceright) 43=Emulate(keydown,Shift_L,key,plus,keyup,Shift_L) 44=Emulate(key,comma) 45=Emulate(key,minus) 46=Emulate(key,period) 58=Emulate(keydown,Shift_L,key,colon,keyup,Shift_L) 59=Emulate(key,semicolon) 63=Emulate(keydown,Shift_L,key,question,keyup,Shift_L) 64=Emulate(keydown,Shift_L,key,at,keyup,Shift_L) 65=Emulate(keydown,Shift_L,key,A,keyup,Shift_L) 66=Emulate(keydown,Shift_L,key,B,keyup,Shift_L) 67=Emulate(keydown,Shift_L,key,C,keyup,Shift_L) 68=Emulate(keydown,Shift_L,key,D,keyup,Shift_L) 69=Emulate(keydown,Shift_L,key,E,keyup,Shift_L) 70=Emulate(keydown,Shift_L,key,F,keyup,Shift_L) 71=Emulate(keydown,Shift_L,key,G,keyup,Shift_L) 72=Emulate(keydown,Shift_L,key,H,keyup,Shift_L) 73=Emulate(keydown,Shift_L,key,I,keyup,Shift_L) 74=Emulate(keydown,Shift_L,key,J,keyup,Shift_L) 75=Emulate(keydown,Shift_L,key,K,keyup,Shift_L) 76=Emulate(keydown,Shift_L,key,L,keyup,Shift_L) 77=Emulate(keydown,Shift_L,key,M,keyup,Shift_L) 78=Emulate(keydown,Shift_L,key,N,keyup,Shift_L) 79=Emulate(keydown,Shift_L,key,O,keyup,Shift_L) 80=Emulate(keydown,Shift_L,key,P,keyup,Shift_L) 81=Emulate(keydown,Shift_L,key,Q,keyup,Shift_L) 82=Emulate(keydown,Shift_L,key,R,keyup,Shift_L) 83=Emulate(keydown,Shift_L,key,S,keyup,Shift_L) 84=Emulate(keydown,Shift_L,key,T,keyup,Shift_L) 85=Emulate(keydown,Shift_L,key,U,keyup,Shift_L) 86=Emulate(keydown,Shift_L,key,V,keyup,Shift_L) 87=Emulate(keydown,Shift_L,key,W,keyup,Shift_L) 88=Emulate(keydown,Shift_L,key,X,keyup,Shift_L) 89=Emulate(keydown,Shift_L,key,Y,keyup,Shift_L) 90=Emulate(keydown,Shift_L,key,Z,keyup,Shift_L) 97=Emulate(key,a) 98=Emulate(key,b) 99=Emulate(key,c) 100=Emulate(key,d) 101=Emulate(key,e) 102=Emulate(key,f) 103=Emulate(key,g) 104=Emulate(key,h) 105=Emulate(key,i) 106=Emulate(key,j) 107=Emulate(key,k) 108=Emulate(key,l) 109=Emulate(key,m) 110=Emulate(key,n) 111=Emulate(key,o) 112=Emulate(key,p) 113=Emulate(key,q) 114=Emulate(key,r) 115=Emulate(key,s) 116=Emulate(key,t) 117=Emulate(key,u) 118=Emulate(key,v) 119=Emulate(key,w) 120=Emulate(key,x) 121=Emulate(key,y) 122=Emulate(key,z) 123=Emulate(key,braceleft) 124=Emulate(key,bar) 125=Emulate(key,braceright) 126=Emulate(key,asciitilde) 163=Emulate(keydown,Shift_L,key,bar,keyup,Shift_L) 8364=Emulate(keydown,Shift_L,key,euro,keyup,Shift_L) FIRE=Emulate(key,Return) LEFT=Emulate(key,Left) UP=Emulate(key,Up) RIGHT=Emulate(key,Right) DOWN=Emulate(key,Down) [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/moovida.cfg����������������������������������������������������0000644�0002322�0002322�00000004367�12073567677�022111� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Moovida (former Elisa) media center. (Server-mode) % % STATUS unknown % XTEST yes % SOUND app % ENV no % ALL_IN_ONE GuiAppName=Moovida/Elisa GuiAppBinary=B=`which moovida 2> /dev/null`;if [ "x$B" = "x" ]; then echo elisa; else echo moovida; fi GuiAppRun=A=`ps -ef|grep -e "moovida\|elisa"|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=elisa.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=The Moovida (former Elisa) Media Center has many advanced features that will make your media center experience unique. It features an intuitive interface with a professional look and feel which can be easily used with a standard TV remote control. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var,exec_name,B=`which moovida 2> /dev/null`;if [ "x$B" = "x" ]; then echo elisa; else echo moovida; fi) (Connect)=\ Make(mode,elisa); Cancel=Make(exit); [Mode]=elisa (EnterMode)=\ Set(status,);\ Set(title,);\ Set(layout,default,keypad_only);\ Set(icons,Moovida,1,fullscreen,2,up,3,none,4,left,5,plus,6,right,7,prev,8,down,9,next,*,question,0,minus,#,no);\ Macro(ELISA_MENU);\ Macro(ELISA_RUN) (ExitMode)=\ Set(layout,default); ELISA_MENU=\ Set(menu,replace,);Macro(ALLIN1MENU) ELISA_RUN=\ Exec(P=`ps -ef|grep $(exec_name)|grep -v grep|grep -v edit|grep -v anyremote`; if [ "x$P" = "x" ]; then xterm -e $(exec_name)& fi); ELISA_RUN_STOP=\ Exec(P=`ps -ef|grep $(exec_name)|grep -v grep|grep -v edit|grep -v anyremote`; if [ "x$P" = "x" ]; then xterm -e $(exec_name)& else killall $(exec_name); fi); UP =Emulate(key,Up); DOWN =Emulate(key,Down); LEFT =Emulate(key,Left); RIGHT=Emulate(key,Right); FIRE =Emulate(key,Return); 1=Emulate(key,Escape); 2=Emulate(key,Up); 3=Exec() 4=Emulate(key,Left); 5=Emulate(key,Return); 6=Emulate(key,Right); 7=Emulate(key,x); 8=Emulate(key,Down); 9=Emulate(key,c); * *=Set(text,replace,Help, Move cursor by 2,4,6,8\nor joystick\nVolume up/down by 2,8\nor joystick\n1 - toggle fullscreen\n5 action - play/pause etc.\n7 - Previous\n9 - Next\n0 - Show/hide menu\n# - exit\n* # - Run/Quit Moovida/Elisa) * #=Macro(ELISA_RUN_STOP) 0=Emulate(key,BackSpace); #=Emulate(key,q); Back=Set(text,close);Macro(ELISA_MENU) [ModeEnd] [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/qwerty-device-test.cfg�����������������������������������������0000644�0002322�0002322�00000002512�12100017671�024155� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for qwerty device testing. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Qwerty test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Simple example of configuration file [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Set(parameter,debug,on);\ Set(status,qwerty test);\ Set(icons,QWERTY,1,question,2,question,3,question,4,question,5,question,6,question,7,question,8,question,9,question,0,question,*,default,#,default);\ Set(menu,replace,layout-keypad,layout-joystick,layout-default);\ Set(menu,add,joystick-auto,joystick-off,joystick-values); layout-keypad=\ Set(layout,default,keypad_only);Set(title,layout-keypad); layout-joystick=\ Set(layout,default,joystick_only);Set(title,layout-joystick); layout-default=\ Set(layout,default);Set(title,layout-default); joystick-auto=\ Set(parameter,fix_joystick,auto);Set(title,joystick-auto); joystick-off=\ Set(parameter,fix_joystick,off);Set(title,joystick-off); joystick-values=\ Set(parameter,joystick_up,-1);\ Set(parameter,joystick_down,-2);\ Set(parameter,joystick_left,-3);\ Set(parameter,joystick_right,-4);\ Set(parameter,joystick_push,-5);\ Set(title,joystick-values); [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/digikam.cfg����������������������������������������������������0000644�0002322�0002322�00000006634�12120355624�022033� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� % % anyremote configuration file for digikam/KDE4 (http://www.digikam.org/) management (Server-mode) % % STATUS nonstable % XTEST yes % SOUND no % ENV no % IPC DBUS GuiAppName=Digikam/KDE4 GuiAppBinary=digikam GuiAppVersion=V=`digikam -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi GuiAppRun=A=`qdbus|grep digikam`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=digikam.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=digiKam is an advanced digital photo management application for KDE [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(V=`digikam -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`;if [ "x$V" = "x3" ]; then $(CfgDir)/Utils/message.sh "ERROR: this configuration file is for KDE4"; fi); (Connect)=\ Macro(DIGIKAM_SETUP);\ Exec(D=`qdbus|grep digikam`; if [ "x$D" = "x" ]; then digikam 2> /dev/null & fi);\ Exec(sleep 3;qdbus `qdbus|grep digikam` /digikam/Digikam com.trolltech.Qt.QWidget.showFullScreen 2> /dev/null);\ Emulate(sleep,15000,mousemove,200,300,mouse,1); DIGIKAM_SETUP=\ Set(status,Normal);\ Set(icons,Digikam,1,prev,2,up,3,next,4,left,5,default,6,right,7,default,8,down,9,default,0,folder,*,question,#,pause); (EnterMode)=\ Macro(DIGIKAM_SETUP); Cancel=\ Exec(D=`qdbus|grep digikam`; if [ "x$D" != "x" ]; then qdbus $D /MainApplication quit; fi);\ Make(exit); Back=Set(text,close); 1=Emulate(key,Page_Up) 2=Emulate(key,Up) 3=Emulate(key,Page_Down) 4=Emulate(key,Left) 6=Emulate(key,Right) 8=Emulate(key,Down) * *=Set(text,replace,Help,2 Up\n 4 Left\n 6 Right\n 7 Previous\n 8 Down\n 9 Next\n 0 Detailed view\n * # Run/Quit\n * * - Help\n # Mouse mode) * #=Exec(D=`qdbus|grep digikam`; if [ "x$D" = "x" ]; then digikam 2> /dev/null & else qdbus $D /MainApplication quit; fi);\ Exec(sleep 3;qdbus `qdbus|grep digikam` /digikam/Digikam com.trolltech.Qt.QWidget.showFullScreen 2> /dev/null);\ Emulate(sleep,15000,mousemove,200,300,mouse,1); 0=Make(mode,Viewer); #=Make(mode,Mouse); [Mode]=Viewer (EnterMode)=\ Set(status,Viewer);\ Set(icons,SAME,1,prev,2,default,3,next,4,default,5,default,6,default,7,minus,8,default,9,plus,0,folder,*,question,#,pause);\ Emulate(sleep,1000,mousemove,500,300,mouse,1,key,Return); 1=Emulate(key,Page_Up) 2=Make(none) 3=Emulate(key,Page_Down) 4=Make(none) 5=Make(none) 6=Make(none) % Size - / Size + 7=Exec(qdbus `qdbus|grep digikam` /digikam/Digikam/actions/album_zoomout com.trolltech.Qt.QAction.trigger) 8=Make(none) 9=Exec(qdbus `qdbus|grep digikam` /digikam/Digikam/actions/album_zoomin com.trolltech.Qt.QAction.trigger) * *=Set(text,replace,Help,1 Previous\n 3 Next\n 7 Size -\n 9 Size +\n 0 Album mode\n * * Help\n # Mouse mode) 0=Emulate(key,Escape);\ Emulate(sleep,1000,mousemove,200,300,mouse,1);\ Make(mode,default); #=Make(mode,Mouse); [ModeEnd] [Mode]=Mouse (EnterMode)=Set(status,Mouse);\ Set(icons,SAME,1,stop,2,up,3,stop,4,left,5,default,6,right,7,default,8,down,9,default,0,folder,*,question,#,pause); 1=Emulate(mousedown,1,sleep,100,mouseup,1) 2=Emulate(mousermove,0,-18) 3=Emulate(mousedown,3,sleep,100,mouseup,3) 4=Emulate(mousermove,-18,0) 5=Make(none) 6=Emulate(mousermove,18,0) 7=Make(none) 8=Emulate(mousermove,0,18) 9=Make(none) * *=Set(text,replace,Help,1 LMB\n 2 Move up\n 3 RMB\n 4 Move left\n 6 Move right\n 8 Move down\n 0 Detailed view\n * * Help\n # Album view); 0=Make(mode,Viewer); #=Make(mode,default); [ModeEnd] [End] ����������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/smplayer.cfg���������������������������������������������������0000644�0002322�0002322�00000005664�12673224605�022273� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for smplayer management. (Server-mode) % (tested with v0.2.37) % % STATUS stable % XTEST yes % SOUND app % ENV no % FBROWSER v.4i % DEF_VIDEO_PLAYER % ALL_IN_ONE % MEDIACENTER video GuiAppName=Smplayer GuiAppBinary=smplayer GuiAppRun=A=`ps -ef|grep smplayer|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=smplayer.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=SMPlayer intends to be a complete front-end for MPlayer [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-video-player.cfg);\ Make(var,app_name,by_value,Smplayer);\ Make(var,open_file,by_value,);\ Make(var,do_app_init,by_value,1);\ Make(var,smplayer_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get smplayer_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi);\ Make(var,app_manage_mode,by_value,smplayer_$(smplayer_layout)); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set smplayer_layout $(smplayer_layout)); (Connect)=\ Make(mode,smplayer_init); [Mode]=smplayer_init : default_video_player_init APP_IS_RUN=\ Make(var,app_run,\ ID=`id -u`;A=`pgrep -u $ID smplayer`;\ if [ "x$A" = "x" ]; then echo 0; else echo 1; fi); [ModeEnd] [Mode]=smplayer_general APP_START_IF=\ Set(title,$(open_file));\ Exec(ID=`id -u`;P=`pgrep -u $ID smplayer`;\ if [ "x$P" = "x" ]; then cd "$(fbrowser_dir)";smplayer $(open_file) 2> /dev/null & fi); % Application window should be present in output of "wmctrl -l" APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch smplayer); APP_QUIT=\ Emulate(keydown,Control_L,key,x,keyup,Control_L);\ Exec(pkill -u `id -u` smplayer); APP_FULLSCREEN=\ Emulate(key,f) PLAY=Emulate(key,Space) RWD=Emulate(key,Left) FF=Emulate(key,Right) STOP=Emulate(key,Space) PAUSE=Emulate(key,Space) Layout 3x4=\ Make(mode,smplayer_3x4); Layout 5x1=\ Make(mode,smplayer_5x1); [ModeEnd] [Mode]=smplayer_3x4 : smplayer_general,default_video_player % (EnterMode) by Utils/aliases-server-video-player.cfg % Override 1=Emulate(key,9) 2=Emulate(key,m) 3=Emulate(key,0) APP_POST_SETUP=\ Make(var,smplayer_layout,by_value,3x4);\ Make(var,app_manage_mode,by_value,smplayer_$(smplayer_layout)); APP_MENU=\ Set(menu,replace,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); [ModeEnd] [Mode]=smplayer_5x1 : smplayer_general,default_video_player_5x1 APP_POST_SETUP=\ Make(var,smplayer_layout,by_value,5x1);\ Make(var,app_manage_mode,by_value,smplayer_$(smplayer_layout)); APP_MENU=\ Set(menu,replace,Help,Mute,Quit,Files,Fullscreen,Layout 3x4,IMDB,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % Override VOL-=\ Emulate(key,9); Mute=\ Emulate(key,m); VOL+=\ Emulate(key,0); Fullscreen=\ Macro(APP_FULLSCREEN); [ModeEnd] [End] ����������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/exampleVibrate.cfg���������������������������������������������0000644�0002322�0002322�00000002201�12061426047�023362� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Text example GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of anyRemote Android/J2ME clients text screen customization. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var,vibrotime,by_value,2); (Connect)=\ Set(parameter,debug,on);\ Set(status,$(vibrotime));\ Set(title,Use buttons 1 and 3);\ Set(icons,Viration Example,\ 1,minus,2,fit,3,plus,\ 4,fit,5,fit,6,fit,\ 7,fit,8,fit,9,fit,\ *,question,0,fit,#,fit);\ Macro(SET_MENU); Back=Set(text,close); DO_VIBRATE=\ Set(vibrate,$(vibrotime));\ Set(status,$(vibrotime)); 1=Make(var,vibrotime,expr $(vibrotime) - 1);Macro(DO_VIBRATE); 2=Macro(DO_VIBRATE); 3=Make(var,vibrotime,expr $(vibrotime) + 1);Macro(DO_VIBRATE); 4=Macro(DO_VIBRATE); 5=Macro(DO_VIBRATE); 6=Macro(DO_VIBRATE); 7=Macro(DO_VIBRATE); 8=Macro(DO_VIBRATE); 9=Macro(DO_VIBRATE); * *=Set(text,replace,Help,1 Longer vibration\n3 Shorter vibration\n* * Help) 0=Macro(DO_VIBRATE); #=Macro(DO_VIBRATE); [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/qmmp.cfg�������������������������������������������������������0000644�0002322�0002322�00000023423�12130537706�021377� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for qmmp/KDE4 management. (Server-mode) % % STATUS nonstable % XTEST no % SOUND app/amixer % ENV no % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio % TODO Wait MPRIS v2.0 to support playlist operations (v1 do not allow to select track in playlist) GuiAppName=QMMP GuiAppBinary=qmmp GuiAppRun= A=`ps -ef|grep qmmp|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=qmmp.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=QMMP is an audio-player, written with help of Qt library. The user interface is similar to winamp or xmms. It is suggested to activate MPRIS module for more comprehensive control. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,player_name,by_value,QMMP);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,qmmp_mpris,by_value,NOMPRIS);\ Make(var,qmmp_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get qmmp_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set qmmp_layout $(qmmp_layout)); (Connect)=\ Make(mode,qmmp_$(qmmp_layout)); [Mode]=qmmp_general VOL_DOWN=\ Exec(qmmp --volume-dec) TOGGLE_MUTE=\ Macro(TOGGLE_MUTE_$(qmmp_mpris)); VOL_UP=\ Exec(qmmp --volume-inc) RWD=\ Macro(RWD_$(qmmp_mpris)); PLAY=\ Macro(PLAY_$(qmmp_mpris)); FF=\ Macro(FF_$(qmmp_mpris)); PREV=\ Macro(PREV_$(qmmp_mpris)); NEXT=\ Macro(NEXT_$(qmmp_mpris)); STOP=\ Macro(STOP_$(qmmp_mpris)); PAUSE=\ Macro(PAUSE_$(qmmp_mpris)); APP_QUIT=\ Macro(QUIT_$(qmmp_mpris)); QMMP_TIMER_START=\ Macro(QMMP_TITLE);\ Timer(QMMP_TITLE,$(UpdateTimeout),0); QMMP_TIMER_CANCEL=\ Timer(QMMP_TITLE,cancel);\ Set(title,);\ Set(status,); % % MPRIS versions % % VolumeGet add \n to value. Use some tricks to strip it TOGGLE_MUTE_MPRIS=\ Make(var,qmmp_volume,\ if [ "x$(qmmp_volume)" = "x-1" ] || [ "x$(qmmp_volume)" = "x" ]; \ then \ qdbus org.mpris.qmmp /Player VolumeGet;qdbus org.mpris.qmmp /Player VolumeSet 0; \ else \ qdbus org.mpris.qmmp /Player VolumeSet $(qmmp_volume); echo "-1"; fi);\ Make(var,qmmp_volume,echo "$(qmmp_volume) an-trick-to-strip-new-line"|tr -d '\n'|cut -f 1 -d ' '); RWD_MPRIS=\ Macro(QMMP_POS);\ Make(var,qmmp_pos,echo "$(qmmp_pos)-10000"|bc);\ Exec(qdbus org.mpris.qmmp /Player PositionSet $(qmmp_pos) 2> /dev/null);\ Macro(QMMP_SETTITLE); PLAY_ONLY_MPRIS=\ Exec(qdbus org.mpris.MediaPlayer2.qmmp /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause); PLAY_MPRIS=\ Macro(PLAY_ONLY_MPRIS);\ Macro(QMMP_TIMER_START); FF_MPRIS=\ Macro(QMMP_POS);\ Make(var,qmmp_pos,echo "$(qmmp_pos)+10000"|bc);\ Exec(qdbus org.mpris.qmmp /Player PositionSet $(qmmp_pos) 2> /dev/null);\ Macro(QMMP_SETTITLE); PREV_MPRIS=\ Exec(qdbus org.mpris.MediaPlayer2.qmmp /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous);\ Macro(QMMP_SETTITLE); PAUSE_MPRIS=\ Exec(qdbus org.mpris.MediaPlayer2.qmmp /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause);\ Macro(QMMP_SETTITLE); NEXT_MPRIS=\ Exec(qdbus org.mpris.MediaPlayer2.qmmp /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next);\ Macro(QMMP_SETTITLE); STOP_MPRIS=\ Macro(QMMP_TIMER_CANCEL);\ Exec(qdbus org.mpris.MediaPlayer2.qmmp /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop); QUIT_MPRIS=\ Macro(QMMP_TIMER_CANCEL);\ Exec(qdbus org.mpris.MediaPlayer2.qmmp /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Quit); % % NO-MPRIS versions % TOGGLE_MUTE_NOMPRIS=\ Macro(DEFAULT_TOGGLE_MUTE) RWD_NOMPRIS=\ Exec(qmmp --previous > /dev/null); PLAY_NOMPRIS=\ Exec(qmmp --play-pause > /dev/null); FF_NOMPRIS=\ Exec(qmmp --next > /dev/null); PREV_NOMPRIS=\ Exec(qmmp --previous > /dev/null); PAUSE_NOMPRIS=\ Exec(qmmp --pause > /dev/null); NEXT_NOMPRIS=\ Exec(qmmp --next > /dev/null); STOP_NOMPRIS=\ Exec(qmmp --stop > /dev/null); QUIT_NOMPRIS=\ Macro(QMMP_TIMER_CANCEL);\ Exec(killall qmmp > /dev/null); % % % QMMP_POS=\ Make(var,qmmp_pos,qdbus org.mpris.qmmp /Player PositionGet 2> /dev/null); QMMP_TITLE_GENERAL=\ Make(var,artist,TN=`qdbus org.mpris.qmmp /TrackList GetCurrentTrack 2> /dev/null`; \ if [ "x$TN" != "x" ]; then qdbus org.mpris.qmmp /TrackList GetMetadata $TN|grep artist|cut -f 2 -d ":"; fi);\ Make(var,title,TN=`qdbus org.mpris.qmmp /TrackList GetCurrentTrack 2> /dev/null`; \ if [ "x$TN" != "x" ]; then qdbus org.mpris.qmmp /TrackList GetMetadata $TN|grep title|cut -f 2 -d ":"; fi);\ Set(title,$(artist) - $(title)); % Make(var,album,TN=`qdbus org.mpris.qmmp /TrackList GetCurrentTrack`; \ % if [ "x$P" != "x" ]; then qdbus org.mpris.qmmp /TrackList GetMetadata $TN|grep album|cut -f 2 -d ":"; fi);\ % RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh qmmp); RUN_OR_QUIT=\ Exec(A=`ps -ef|grep qmmp|grep -v grep|grep -v edit`; \ if [ "x$A" = "x" ]; then qmmp& else killall qmmp; fi);\ Macro(QMMP_TIMER_CANCEL); Playlist=\ Make(mode,qmmp_playlist); Repeat=\ Make(mode,qmmp_repeat); Random=\ Make(mode,qmmp_random); APP_PLAY_STATUS=\ Make(var,qmmp_status,qdbus --literal org.mpris.MediaPlayer2.qmmp /Player org.freedesktop.MediaPlayer.GetStatus|tr -d ','|tr -s ' '|cut -f 3 -d ' ');\ Make(var,app_status,if [ "x$(qmmp_status)" = "x0" ]; then echo playing; else echo paused; fi); Layout 3x4=\ Make(mode,qmmp_3x4); Layout 7x1=\ Make(mode,qmmp_7x1); Layout 5x1=\ Make(mode,qmmp_5x1); [ModeEnd] [Mode]=qmmp_3x4 : qmmp_general,default_player (EnterMode)=\ Macro(APP_PRE_SETUP);\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(RUN_IF_NEED);\ Macro(SETUP_QMMP_PLAYER_$(qmmp_mpris));\ Macro(APP_MENU);\ Macro(APP_POST_SETUP); SETUP_QMMP_PLAYER_MPRIS=\ Macro(SETUP_DEFAULT_PLAYER); SETUP_QMMP_PLAYER_NOMPRIS=\ Macro(SETUP_DEFAULT_PLAYER_NO_FF_FWD); * *=Macro(QMMP_HELP_$(qmmp_mpris)); QMMP_HELP_MPRIS=\ Macro(DEFAULT_HELP); QMMP_HELP_NOMPRIS=\ Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n5 Play\n7 Prew\n8 Stop\n9 Next\n* * Help\n* # Run/Quit $(player_name)\n0 Pause\n# Quit $(player_name)\nPlease enable MPRIS plugin to support advanced features) % PowerMgmt by Utils/aliases-server.cfg APP_MENU=\ Macro(APP_MENU_$(qmmp_mpris)); APP_MENU_NOMPRIS=\ Set(menu,replace,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_MENU_MPRIS=\ Set(menu,replace,Playlist,Repeat,Random,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,qmmp_layout,by_value,3x4);\ Make(var,qmmp_volume,by_value,-1);\ Timer(QMMP_CHECK_MPRIS,5,6);\ Macro(QMMP_CHECK_MPRIS); % Run check every 5 seconds for 6 times QMMP_CHECK_MPRIS=\ Make(var,qmmp_use_mpris,Q=`qdbus|grep org.mpris.qmmp`;if [ "x$Q" = "x" ]; then echo QMMP_DONTUSE_MPRIS; else echo QMMP_USE_MPRIS; fi);\ Macro($(qmmp_use_mpris)); % % Switch to use MPRIS version % QMMP_USE_MPRIS=\ Make(var,qmmp_mpris,by_value,MPRIS);\ Timer(QMMP_CHECK_MPRIS,cancel);\ Macro(SETUP_QMMP_PLAYER_MPRIS);\ Macro(APP_MENU_MPRIS); QMMP_DONTUSE_MPRIS=\ Make(none); QMMP_TITLE=\ Macro(QMMP_TITLE_GENERAL); [ModeEnd] [Mode]=qmmp_cover QMMP_TITLE=\ Macro(QMMP_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file,qdbus org.mpris.MediaPlayer2.qmmp /Player org.freedesktop.MediaPlayer.GetMetadata|grep 'location: file'|sed "s/.*\/\/\//\//;s/'/'\\\''/g;s/\//\'\/\'/g;s/$/\'/g;s/^'\//\//");\ Macro(DEFAULT_COVER); Mute=\ Macro(TOGGLE_MUTE_MPRIS); [ModeEnd] % Use this layout only if MPRIS plugin is on in QMMP [Mode]=qmmp_7x1 : qmmp_general,qmmp_cover,default_player_7x1 APP_MENU=\ Set(menu,replace,Playlist,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,qmmp_layout,by_value,7x1); [ModeEnd] % Use this layout only if MPRIS plugin is on in QMMP [Mode]=qmmp_5x1 : qmmp_general,qmmp_cover,default_player_5x1 APP_MENU=\ Set(menu,replace,Playlist,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,qmmp_layout,by_value,5x1); APP_TITLE=\ Macro(QMMP_TITLE); PLAY=\ Macro(PLAY_ONLY_MPRIS); [ModeEnd] [Mode]=qmmp_playlist % Found no way to choose track from playlist -- MPRIS support seems to be incompete (EnterMode)=\ ExecAndSet(list,replace,Playlist,$(CfgDir)/Utils/getPlayList.sh org.mpris.qmmp);\ ExecAndSet(list,select,expr 1 + `qdbus org.mpris.qmmp /TrackList GetCurrentTrack`); % Set(menu,replace,Choose); Push($$)=\ Macro(Choose($$)); Choose($$)=\ Exec(dbus-send --type=signal --dest=org.mpris.MediaPlayer2.qmmp /TrackList org.freedesktop.MediaPlayer.TrackListChange int32:$(Index));\ Macro(APP_MENU); Back($$)=\ Set(list,close);\ Make(mode,qmmp_$(qmmp_layout)); [ModeEnd] [Mode]=qmmp_repeat (EnterMode)=\ Set(list,replace,Repeat,Yes,No);\ Set(menu,replace,Choose); Back($$)=\ Set(list,close);\ Make(mode,qmmp_$(qmmp_layout)); Push($$)=\ Macro(Choose($$)); Choose($$)=\ Exec(qdbus org.mpris.qmmp /TrackList SetLoop `echo $(Param)|sed 's/Yes/true/;s/No/false/'`);\ Set(list,close);\ Make(mode,qmmp_$(qmmp_layout)); [ModeEnd] [Mode]=qmmp_random (EnterMode)=\ Set(list,replace,Random,Yes,No);\ Set(menu,replace,Choose); Back($$)=\ Set(list,close);\ Make(mode,qmmp_$(qmmp_layout)); Push($$)=\ Macro(Choose($$)); Choose($$)=\ Exec(qdbus org.mpris.qmmp /TrackList SetRandom `echo $(Param)|sed 's/Yes/true/;s/No/false/'`);\ Set(list,close);\ Make(mode,qmmp_$(qmmp_layout)); [ModeEnd] % %qdbus --literal org.mpris.MediaPlayer2.qmmp /Player org.freedesktop.MediaPlayer.GetStatus %dbus-send --type=signal --dest=org.mpris.MediaPlayer2.qmmp /TrackList org.freedesktop.MediaPlayer.TrackListChange int32:1 [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/gthumb.cfg�����������������������������������������������������0000644�0002322�0002322�00000005004�12664332726�021715� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for gthumb management. (Server-mode) % thanks Adriaan van Kekem for this configuration file % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.4i % DEF_PIX_VIEWER % ALL_IN_ONE % MEDIACENTER photo GuiAppName=gthumb GuiAppBinary=gthumb GuiAppRun=echo 'ID=`id -u`;A=`ps -fu $ID|grep gthumb|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=gthumb.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=gThumb is an image viewer and browser for the GNOME Desktop. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-pix-viewer.cfg);\ Make(var,app_name,by_value,gThumb);\ Make(var,open_file,by_value,);\ Make(var,app_manage_mode,by_value,gthumb_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,gthumb_init); [Mode]=gthumb_init : default_pixviewer_init APP_IS_RUN=\ Make(var,app_run,ps -fu `id -u`|grep gthumb|grep -v grep|grep -v anyremote|grep -v edit|head -1|wc -l); [ModeEnd] [Mode]=gthumb_manage : default_pixviewer % (EnterMode) by Utils/aliases-server-pix-viewer.cfg % PowerMgmt by Utils/aliases-server.cfg APP_MENU=\ Set(menu,replace,Page Up,Page Down,Rotate Left,Rotate Right,Toggle preview,Slideshow,Stop slideshow,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % PowerMgmt by Utils/aliases-server.cfg Rotate Left=\ Emulate(key,bracketleft); Rotate Right=\ Macro(PIX_ROTATE); Toggle preview=\ Emulate(key,F8); Slideshow=\ Emulate(key,F5); Stop slideshow=\ Emulate(key,Escape); Page Up=\ Emulate(key,Page_Up); Page Down=\ Emulate(key,Page_Down); APP_START_IF=\ Make(var,app_run,ps -fu `id -u`|grep gthumb|grep -v grep|grep -v anyremote|grep -v edit|head -1|wc -l);\ Exec(if [ "x$(app_run)" = "x0" ]; then \ cd "$(fbrowser_dir)";gthumb -f $(open_file)& \ fi 2> /dev/null); APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch gthumb); APP_QUIT=\ Exec(pkill gthumb); APP_FULLSCREEN=\ Emulate(key,F11) PIX_PREV=\ Emulate(key,BackSpace); PIX_NEXT=\ Emulate(key,Space) PIX_FIRST=\ Emulate(key,Home); PIX_LAST=\ Emulate(key,End); PIX_ZOOM_IN=\ Emulate(key,plus) PIX_ZOOM_OUT=\ Emulate(key,minus) PIX_FIT=\ Emulate(keydown,Control_L);\ Emulate(key,e);\ Emulate(keyup,Control_L); PIX_ROTATE=\ Emulate(key,bracketright) [ModeEnd] [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/kscd.cfg�������������������������������������������������������0000644�0002322�0002322�00000007662�12130536643�021357� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for kscd/KDE4 management. (Server-mode) % % STATUS nonstable % XTEST no % SOUND app % TODO Play does not works properly % ENV no % DEF_PLAYER % ALL_IN_ONE GuiAppName=Kscd GuiAppBinary=kscd GuiAppVersion=echo 'V=`kscd -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi'|sh -s GuiAppRun=echo 'A=`qdbus|grep kscd`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=kscd.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KsCD is a small, fast, CDDB enabled audio CD player for UNIX platforms. This configuration file is for KsCD/KDE4. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var,kde4_app,by_value,kscd);\ Macro(TEST_KDE4_APP);\ Make(var,player_name,by_value,KsCD);\ Include($(CfgDir)/Utils/aliases-server-player.cfg); (Connect)=\ Make(mode,kscd); [Mode]=kscd : default_player % (EnterMode) by Utils/aliases-server-player.cfg SETUP_DEFAULT_PLAYER=\ Set(layout,default);\ Set(status,);\ Set(title,);\ Set(icons,$(player_name),\ 1,vol_down,\ 2,mute,\ 3,vol_up,\ 4,rewind,\ 5,play,\ 6,forward,\ 7,prev,\ 8,stop,\ 9,next,\ *,question,\ 0,none,\ #,no);\ Make(var,kscd_volume,by_value,-1); APP_MENU=\ Set(menu,replace,Playlist,Toggle Loop,Toggle Shuffle,PowerMgmt);\ Macro(ALLIN1MENU) kscd_t1=\ ExecAndSet(title,A=`qdbus|grep kscd`; if [ "x$A" != "x" ]; then qdbus org.kde.kscd /CDPlayer org.kde.KSCD.currentTrackTitle; fi) Playlist=\ Make(mode,kscd_playlist); Toggle Loop=\ Exec(qdbus org.kde.kscd /CDPlayer org.kde.KSCD.toggleLoop > /dev/null) Toggle Shuffle=\ Exec(qdbus org.kde.kscd /CDPlayer org.kde.KSCD.toggleShuffle > /dev/null) %Eject=Exec(qdbus org.kde.kscd /CDPlayer org.kde.KSCD.eject) % Override 0=Make(none) 1=Exec(qdbus org.kde.kscd /CDPlayer org.kde.KSCD.volumeDown > /dev/null) 2=Make(var,kscd_volume,if [ "x$(kscd_volume)" = "x-1" ]; then qdbus org.kde.kscd /CDPlayer org.kde.KSCD.getVolume; qdbus org.kde.kscd /CDPlayer org.kde.KSCD.setVolume 0 > /dev/null; else qdbus org.kde.kscd /CDPlayer org.kde.KSCD.setVolume $(kscd_volume) > /dev/null;echo "-1"; fi;); 3=Exec(qdbus org.kde.kscd /CDPlayer org.kde.KSCD.volumeUp > /dev/null) * *=Set(text,replace,Help,1 - Vol-\n2 - Mute\n3 - Vol+\n4 - Rew\n5 - Play\n6 - FF\n7 - Prew\n8 - Stop\n9 - Next\n* * - Help\n# - Quit\n* # - Run/Quit\n If Play do not works, use FF) PLAY=\ Exec(qdbus org.kde.kscd /CDPlayer org.kde.KSCD.play);\ Macro(kscd_t1);\ Timer(kscd_t1,$(UpdateTimeout),0); RWD=\ Exec(POS=`qdbus org.kde.kscd /CDPlayer org.kde.KSCD.currentPosition`;NEWPOS=`expr $POS - 5`;qdbus org.kde.kscd /CDPlayer org.kde.KSCD.jumpTo $NEWPOS > /dev/null); FF=\ Exec(POS=`qdbus org.kde.kscd /CDPlayer org.kde.KSCD.currentPosition`;NEWPOS=`expr $POS + 5`;qdbus org.kde.kscd /CDPlayer org.kde.KSCD.jumpTo $NEWPOS > /dev/null); PREV=\ Exec(qdbus org.kde.kscd /CDPlayer org.kde.KSCD.previous > /dev/null);\ Macro(kscd_t1); NEXT=\ Exec(qdbus org.kde.kscd /CDPlayer org.kde.KSCD.next > /dev/null);\ Macro(kscd_t1); STOP=\ Exec(qdbus org.kde.kscd /CDPlayer org.kde.KSCD.stop > /dev/null);\ Timer(kscd_t1,cancel); RUN_IF_NEED=\ Exec(A=`qdbus|grep kscd`; if [ "x$A" = "x" ]; then kscd --nocrashhandler; fi); RUN_OR_QUIT=\ Timer(kscd_t1,cancel);Exec(P=`qdbus|grep kscd`; if [ "x$P" = "x" ]; then kscd --nocrashhandler; else qdbus org.kde.kscd /CDPlayer org.kde.KSCD.quit > /dev/null; fi;) APP_QUIT=\ Exec(qdbus org.kde.kscd /CDPlayer org.kde.KSCD.quit > /dev/null) [ModeEnd] [Mode]=kscd_playlist (EnterMode)=Set(list,font,medium);\ Timer(kscd_t1,cancel);\ ExecAndSet(list,replace,Playlist,qdbus org.kde.kscd /CDPlayer org.kde.KSCD.trackList|sed 's/,/ /g;s/$/,/');\ Set(menu,replace,Choose); (ExitMode)=Set(list,close);\ Macro(kscd_t1);\ Timer(kscd_t1,$(UpdateTimeout),0); Back($$)=Make(mode,kscd); Choose($$)=Exec(qdbus org.kde.kscd /CDPlayer org.kde.KSCD.setTrack $(Index)); Push($$)=Macro(Choose($$)); [ModeEnd] [End] ������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/foobnix.cfg����������������������������������������������������0000644�0002322�0002322�00000004347�12256755311�022100� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for foobnix management (Server-mode) % % STATUS stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER % ALL_IN_ONE % TODO http://code.google.com/p/foobnix/issues/detail?id=422 GuiAppName=foobnix GuiAppBinary=foobnix GuiAppRun=echo 'P=`ps -ef|grep foobnix|grep python|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=foobnix.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc= [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(TEST_DBUS_SEND);\ Make(var,player_name,by_value,Foobnix);\ Make(var,foobnix_cmd,by_value,dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.foobnix /Player);\ Include($(CfgDir)/Utils/aliases-server-player.cfg); (Connect)=Make(mode,foobnix); [Mode]=foobnix : default_player % EnterMode, Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg PLAY=\ Exec($(foobnix_cmd) org.freedesktop.MediaPlayer.Play);\ Macro(FOOBNIX_START_TIMER): RWD=\ Exec($(foobnix_cmd) org.freedesktop.MediaPlayer.SeekDown); FF=\ Exec($(foobnix_cmd) org.freedesktop.MediaPlayer.SeekUp); PREV=\ Exec($(foobnix_cmd) org.freedesktop.MediaPlayer.Prev); STOP=\ Macro(FOOBNIX_TIMER_CANCEL);\ Exec($(foobnix_cmd) org.freedesktop.MediaPlayer.Pause); NEXT=\ Exec($(foobnix_cmd) org.freedesktop.MediaPlayer.Next); PAUSE=\ Exec($(foobnix_cmd) org.freedesktop.MediaPlayer.PlayPause); RUN_IF_NEED=\ Exec(P=`ps -ef|grep foobnix|grep python|grep -v grep|grep -v anyremote|grep -v edit`; \ if [ "x$P" = "x" ]; then foobnix & fi);\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch foobnix); RUN_OR_QUIT=\ Macro(FOOBNIX_TIMER_CANCEL);\ Exec(P=`ps -ef|grep foobnix|grep python|grep -v grep|grep -v anyremote|grep -v edit`;\ if [ "x$P" = "x" ]; then foobnix & else pkill foobnix; fi); APP_QUIT=\ Macro(FOOBNIX_TIMER_CANCEL);\ Exec(pkill foobnix) FOOBNIX_TITLE=\ ExecAndSet(title,foobnix --now-playing 2> /dev/null | grep -v "Other copy of player is run"); FOOBNIX_START_TIMER=\ Macro(FOOBNIX_TITLE);\ Timer(FOOBNIX_TITLE,$(UpdateTimeout),0); FOOBNIX_TIMER_CANCEL=\ Timer(FOOBNIX_TITLE,cancel);\ Set(title,);\ Set(status,); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/juk.cfg��������������������������������������������������������0000644�0002322�0002322�00000016401�12130536653�021214� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Juk/KDE4 management (Server-mode) % % Thanks to Calve (calvinh34 at gmail.com) for enhancing this configuration file % % STATUS stable % XTEST no % SOUND app % ENV no % IPC DBUS % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio % TODO Volume control by Juk is a bit buggy: no min/max values check inside Juk GuiAppName=Juk/KDE4 GuiAppBinary=juk GuiAppVersion=echo 'V=`juk -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi'|sh -s GuiAppRun=echo 'A=`pgrep juk`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=juk.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=JuK is a free software audio player for KDE, part of the kdemultimedia package. JuK supports collections of MP3, Ogg Vorbis, and FLAC audio files. This configuration file is for Juk/KDE4. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var,player_name,by_value,Juk);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,kde4_app,by_value,juk);\ Macro(TEST_KDE4_APP);\ Make(var,cover_size,by_value,);\ Make(var,juk_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get juk_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set juk_layout $(juk_layout)); (Connect)=\ Make(mode,juk_$(juk_layout)); [Mode]=juk_general % Custom volume control JUK_VOL-=\ Exec(dbus-send --type=method_call --dest=org.kde.juk /Player org.kde.juk.player.volumeDown);\ Macro(JUK_VOLUME); JUK_MUTE=\ Exec(dbus-send --type=method_call --dest=org.kde.juk /Player org.kde.juk.player.mute); JUK_VOL+=\ Exec(dbus-send --type=method_call --dest=org.kde.juk /Player org.kde.juk.player.volumeUp);\ Macro(JUK_VOLUME); SlideDown=\ Macro(JUK_VOL-); SlideUp=\ Macro(JUK_VOL+); VOL-=\ Macro(JUK_VOL-); VOL+=\ Macro(JUK_VOL+); % JUK_TITLE should be defined in child modes PLAY_ONLY=\ Exec(qdbus org.kde.juk /Player org.kde.juk.player.playPause); PLAY=\ Macro(PLAY_ONLY);\ Macro(JUK_START); RWD=\ Exec(qdbus org.kde.juk /Player org.kde.juk.player.seekBack); FF=\ Exec(qdbus org.kde.juk /Player org.kde.juk.player.seekForward); PREV=\ Exec(qdbus org.kde.juk /Player org.kde.juk.player.back);\ Macro(JUK_TITLE); STOP=\ Timer(JUK_TITLE,cancel);\ Exec(qdbus org.kde.juk /Player org.kde.juk.player.stop); NEXT=\ Exec(qdbus org.kde.juk /Player org.kde.juk.player.forward);\ Macro(JUK_TITLE); PAUSE=\ Exec(qdbus org.kde.juk /Player org.kde.juk.player.pause); RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh juk); RUN_OR_QUIT=\ Exec(P=`pgrep juk`; \ if [ "x$P" = "x" ]; then \ juk; \ else \ dbus-send --type=method_call --dest=org.kde.juk /MainApplication org.kde.KApplication.quit; \ fi); APP_QUIT=\ Timer(JUK_TITLE,cancel);\ Exec(dbus-send --type=method_call --dest=org.kde.juk /MainApplication org.kde.KApplication.quit); JUK_TITLE_GENERAL=\ ExecAndSet(title,qdbus org.kde.juk /Player playingString|sed 's/<i>//;s/<\/i>//') Random=\ Exec(P=`qdbus org.kde.juk /Player org.kde.juk.player.randomPlayMode`;\ if [ "x$P" = "xRandom" ]; then \ qdbus org.kde.juk /Player org.kde.juk.player.setRandomPlayMode NoRandom; \ else \ qdbus org.kde.juk /Player org.kde.juk.player.setRandomPlayMode Random;\ fi); JUK_CHECK_TIMER=\ Make(var,juk_status,qdbus org.kde.juk /Player org.kde.juk.player.status);\ Make(var,timer_action,if [ "x$(juk_status)" = "x2" ]; \ then echo JUK_START; else echo JUK_CANCEL; fi);\ Macro($(timer_action)); JUK_CANCEL=\ Timer(JUK_TITLE,cancel); JUK_START=\ Macro(JUK_TITLE);\ Timer(JUK_TITLE,$(UpdateTimeout),0); Layout 3x4=\ Make(mode,juk_3x4); Layout 7x1=\ Make(mode,juk_7x1); Layout 5x1=\ Make(mode,juk_5x1); [ModeEnd] [Mode]= juk_3x4: juk_general, default_player % (EnterMode) by Utils/aliases-server-player.cfg % Custom volume control 1=Macro(JUK_VOL-); 2=Macro(JUK_MUTE); 3=Macro(JUK_VOL+); % PowerMgmt by Utils/aliases-server.cfg APP_MENU=\ Set(menu,replace,Search,Random,Layout 7x1,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,juk_layout,by_value,3x4);\ Macro(JUK_CHECK_TIMER); JUK_TITLE=\ Macro(JUK_TITLE_GENERAL); JUK_VOLUME=\ ExecAndSet(status,echo `qdbus org.kde.juk /Player volume`|awk '{min=int($0*100);print min;}'); Search=\ Make(mode,juk_search); [ModeEnd] [Mode]= juk_cover APP_COVER=\ Make(var,media_file,qdbus org.kde.juk /Player org.kde.juk.player.trackProperty Path|\ sed "s/'/'\\\''/g;s/\//\'\/\'/g;s/$/\'/g;s/^'\//\//");\ Make(var,juk_cover_file,qdbus org.kde.juk /Collection org.kde.juk.collection.trackCover $(media_file));\ Make(var,coverfile,echo "$(juk_cover_file)"|md5sum|cut -f 1 -d ' ');\ Make(var,dummy,\ if [ "x$(juk_cover_file)" != "x" ]; then \ convert -resize $(cover_size)x$(cover_size) -depth -background transparent \ "$(juk_cover_file)" $(TmpDir)/album_covers/$(coverfile)-$(cover_size).png;\ echo "$(TmpDir)/album_covers/$(coverfile)-$(cover_size).png";\ fi);\ Set(cover,noname,$(TmpDir)/album_covers/$(coverfile)-$(cover_size).png); JUK_TITLE=\ Macro(JUK_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); % Custom volume control Mute=\ Macro(JUK_MUTE); JUK_VOLUME=\ Make(none); [ModeEnd] [Mode]= juk_7x1: juk_general, juk_cover, default_player_7x1 % Help, PowerMgmt by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Mute,Random,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,juk_layout,by_value,7x1);\ Macro(JUK_CHECK_TIMER); [ModeEnd] [Mode]= juk_5x1: juk_general, juk_cover, default_player_5x1 % Help, PowerMgmt by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Mute,Random,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,juk_layout,by_value,5x1); PLAY=\ Macro(PLAY_ONLY); APP_PLAY_STATUS=\ Make(var,juk_status,qdbus org.kde.juk /Player org.kde.juk.player.status);\ Make(var,app_status,if [ "x$(juk_status)" = "x2" ]; then echo playing; else echo paused; fi); APP_TITLE=\ Macro(JUK_TITLE); [ModeEnd] [Mode]=juk_search (EnterMode)=\ Make(var,searchval,qdbus org.kde.juk /Search org.kde.juk.search.searchText);\ ExecAndSet(editfield,echo "Search...,Search,$(searchval)"); Ok($$)=\ Set(text,close);\ Exec(qdbus org.kde.juk /Search org.kde.juk.search.setSearchText "$(Param)" );\ Set(vibrate,1);\ Make(mode,juk_$(juk_layout)); Back($$)=\ Make(mode,juk_$(juk_layout)); Back=\ Make(mode,juk_$(juk_layout)); [ModeEnd] % % NOT USED % [Mode]=juk_playlist % Found no way to choose track Playlist=\ Make(var,juk_playlist,qdbus org.kde.juk /Collection org.kde.juk.collection.playingPlaylist);\ ExecAndSet(list,replace,Playlist,qdbus org.kde.juk /Collection org.kde.juk.collection.playlistTracks $(juk_playlist)|sed "s/'//"|xargs -i basename {}|sed "s/$/,/");\ ExecAndSet(list,select,expr 1 + `......`);\ Set(menu,replace,Choose); Push($$)=\ Macro(Choose($$)) %Choose($$)=\ % Exec(.... `expr $(Index) - 1`); Back($$)=\ Set(list,close);\ Make(mode,juk_$(juk_layout)); [ModeEnd] [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/winManager.cfg�������������������������������������������������0000644�0002322�0002322�00000013746�12664332726�022533� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for basic window manager operations (Server-mode) % prerequisites: xwd, ImageMagic % % STATUS stable % TODO handle FIRE joystick button on Nokia's % XTEST yes % SOUND no % ENV no GuiAppName=Window manager GuiAppBinary=true GuiAppType=Custom GuiAppDesc=Shows screen of PC on screen of the phone. Beware: Can cause java crash on some Nokia's and Samsung's GuiAppProtocols=Server [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(TEST_IMAGEMAGIC);\ Macro(TEST_XWD);\ Macro(DISPLAYSIZE);\ Make(var,wm_scale,by_value,15);\ Make(var,wm_cx,by_value,120);\ Make(var,wm_cy,by_value,160);\ Make(var,wm_px,by_value,120);\ Make(var,wm_py,by_value,160);\ Make(var,wm_rotate,by_value,); (Connect)=\ Set(parameter,debug,on);\ Set(status,Press 1 to see screenshot);\ Set(icons,WinManager,\ 1,folder,2,fullscreen,3,default,\ 4,default,5,default,6,default,\ 7,default,8,default,9,default,\ *,question,0,no,#,default);\ Get(screen_size); TEST_XWD=\ Exec(P=`which xwd 2> /dev/null|grep xwd|grep -v no|wc -l|tr -d " "`;\ if [ "x$P" = "x1" ]; then true; \ else $(CfgDir)/Utils/message.sh "ERROR: xwd is not installed"; fi); DISPLAYSIZE=\ Make(var,dpy_tmp,xdpyinfo|grep dimensions|tr -s ' '|cut -f 3 -d ' ');\ Make(var,wm_dx,echo $(dpy_tmp)|cut -f 1 -d 'x');\ Make(var,wm_dy,echo $(dpy_tmp)|cut -f 2 -d 'x'); Cancel=\ Make(exit); * *=Set(text,replace,Help, Window manager.\n 1 - to show screenshot\nthen use joystick to move a cursor); Back=\ Set(list,close);Set(text,close);Set(image,close);Set(menu,replace,) 0=Make(exit); 1=Macro(SHOW); 2=Set(fullscreen,toggle);Get(screen_size); % sure that SizeY will be second one SizeX($$)=\ Make(var,wm_cx,by_value,$(Index));\ Make(var,wm_px,by_value,$(Index)); SizeY($$)=\ Make(var,wm_cy,by_value,$(Index));\ Make(var,wm_py,by_value,$(Index));\ Macro(SWAP,if [ "x$(wm_rotate)" = "x-rotate 90" ]; then echo 0; else echo 1; fi;);\ Macro(SETSCALE); % sure that PressedY will be second one PressedX($$)=\ Make(var,pr_x,echo "$(Index) $(wm_scale)"|awk '{n=split($0,a);print int(a[1]*a[2]) }'); PressedY($$)=\ Make(var,pr_y,echo "$(Index) $(wm_scale)"|awk '{n=split($0,a);print int(a[1]*a[2]) }');\ Make(var,pos_x,X=$(pr_x);if [ "x$(wm_rotate)" = "x-rotate 90" ]; then X=$(pr_y);fi;echo $X);\ Make(var,pos_y,Y=$(pr_y);if [ "x$(wm_rotate)" = "x-rotate 90" ]; then Y=`expr $(wm_dy) - $(pr_x)`;fi;echo $Y);\ Emulate(mousemove,$(pos_x),$(pos_y),sleep,200000,mouse,1);\ Macro(SHOW2); PosX($$)=\ Make(var,pp_x,echo "$(Index) $(wm_scale)"|awk '{n=split($0,a);print int(a[1]*a[2]) }'); PosY($$)=\ Make(var,pp_y,echo "$(Index) $(wm_scale)"|awk '{n=split($0,a);print int(a[1]*a[2]) }');\ Make(var,pos_x,X=$(pp_x);if [ "x$(wm_rotate)" = "x-rotate 90" ]; then X=$(pp_y);fi;echo $X);\ Make(var,pos_y,Y=$(pp_y);if [ "x$(wm_rotate)" = "x-rotate 90" ]; then Y=`expr $(wm_dy) - $(pp_x)`; fi;echo $Y);\ Emulate(mousemove,$(pos_x),$(pos_y)); SWAP=\ Make(var,tmp,by_value,$(wm_cx));\ Make(var,wm_cx,by_value,$(wm_cy));\ Make(var,wm_cy,by_value,$(tmp)); WINMENU=\ Set(menu,replace,Zoom,Close Window,Update,Rotate,Center Cursor,Cursor to UL,Dynamic); %GETIMAGEPROPS=\ % Make(var,im_x,file -b $(TmpDir)/scr.png|cut -d ',' -f 2|tr -d ' '|cut -d 'x' -f 1);\ % Make(var,im_y,file -b $(TmpDir)/scr.png|cut -d ',' -f 2|tr -d ' '|cut -d 'x' -f 2); SETSCALE=\ Make(var,wm_scale,echo "$(wm_cx) $(wm_cy) $(wm_dx) $(wm_dy)"|\ awk '{n=split($0,a);r1=a[3]/a[1];r2=a[4]/a[2];if(r2>r1) r1=r2; z=sprintf("%f",r1);print z;}'); SHOW=\ ExecAndSet(image,window,xwd -silent -root|\ convert xwd:- -resize $(wm_cx)x$(wm_cy) $(wm_rotate) -depth 8 $(TmpDir)/scr.png;echo $(TmpDir)/scr.png);\ Macro(WINMENU); SHOW2=\ ExecAndSet(image,window,sleep 1;xwd -silent -root|\ convert xwd:- -resize $(wm_cx)x$(wm_cy) $(wm_rotate) -depth 8 $(TmpDir)/scr.png;echo $(TmpDir)/scr.png);\ Macro(WINMENU); Close Window=\ Emulate(keydown,Alt_L,key,F4,keyup,Alt_L);\ Macro(SHOW2); Update=\ Macro(SHOW); Rotate=\ Make(var,wm_rotate,if [ "x$(wm_rotate)" = "x" ]; then echo "-rotate 90"; else echo ""; fi);\ Macro(SWAP);\ Macro(SETSCALE);\ Macro(SHOW2); Cursor to UL=\ Emulate(mousemove,0,0);\ Make(var,cur_tmp,echo "$(wm_dy) $(wm_scale)"|awk '{n=split($0,a);print int(a[1]/a[2]);}');\ ExecAndSet(image,set_cursor,XM=$(cur_tmp);OUT='0,0';\ if [ "x$(wm_rotate)" = "x-rotate 90" ]; then OUT="$XM,0"; fi;echo $OUT); Center Cursor=\ Make(var,ccx,echo $(wm_dx)|awk '{print $0/2;}');\ Make(var,ccy,echo $(wm_dy)|awk '{print $0/2;}');\ Emulate(mousemove,$(ccx),$(ccy));\ ExecAndSet(image,set_cursor,echo "$(ccx) $(ccy) `echo $(wm_scale)|cut -f 3 -d ' '`"|\ awk '{n=split($0,a);z=sprintf("%d,%d",a[1]/a[3],a[2]/a[3]);print z;}'); Dynamic=\ Set(image,dynamic_cursor);\ Set(menu,replace,Zoom,Close Window,Update,Rotate,Center Cursor,Cursor to UL,NonDynamic); NonDynamic=\ Set(image,cursor);\ Set(menu,replace,Zoom,Close Window,Update,Rotate,Center Cursor,Cursor to UL,Dynamic); Zoom=\ Make(mode,Zoom); [Mode]=Zoom (EnterMode)=\ Macro(WINSIZE);\ Macro(SETSCALE);\ Macro(SHOWWIN);\ Set(menu,replace,Update,Close);\ Set(image,nocursor); (ExitMode)=\ Macro(DISPLAYSIZE);\ Macro(SETSCALE);\ Macro(SHOW2);\ Macro(WINMENU);\ Set(image,cursor); WINSIZE=\ Exec(cd $(TmpDir);xwininfo > xwi.tmp);Emulate(sleep,100000,mouse,1);\ Make(var,wm_dx,sleep 1;cat $(TmpDir)/xwi.tmp|grep "\-geometry"|tr -s ' '|cut -d ' ' -f 3|cut -d 'x' -f 1);\ Make(var,wm_dy,cat $(TmpDir)/xwi.tmp|grep "\-geometry"|tr -s ' '|cut -d ' ' -f 3|cut -d 'x' -f 2|cut -d '-' -f 1); SHOWWIN=\ ExecAndSet(image,window,sleep 1;\ cd $(TmpDir);xwd -id `grep "Window id" xwi.tmp|\ cut -d ' ' -f 4` -silent|convert xwd:- -resize $(wm_cx)x$(wm_cy) $(wm_rotate) -depth 8 scr.png;\ echo $(TmpDir)/scr.png);\ Macro(GETIMAGEPROPS); Update=\ Macro(SHOWWIN); Close=\ Make(mode,default); Back=\ Make(mode,default); [ModeEnd] [End] ��������������������������anyremote-6.7.1/cfg-data/Server-mode/moc.cfg��������������������������������������������������������0000644�0002322�0002322�00000014007�12664332726�021210� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for moc (http://moc.daper.net) management. (Server-mode) % % STATUS nonstable % TODO work with playlists % XTEST no % SOUND mixer % ENV no % FBROWSER v.4i % DEF_PLAYER % ALL_IN_ONE GuiAppName=MOC GuiAppBinary=mocp GuiAppRun= P=`ps -ef|grep mocp|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Console audio player for Linux/UNIX [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_INIT);\ Make(var,player_name,by_value,MOC);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,moc_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get moc_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Macro(FBROWSER_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set moc_layout $(moc_layout)); (Connect)=\ Make(mode,moc_$(moc_layout)); [Mode]=moc_general (Disconnect)=\ Macro(MOC_TIMER_CANCEL); MOC_TITLE_GENERAL=\ ExecAndSet(title,mocp -Q "%album - %song");\ ExecAndSet(status,mocp -Q "%artist"); MOC_CHECK_TIMER=\ Make(var,moc_status,mocp -Q "%state");\ Make(var,timer_action,if [ "x$(moc_status)" = "xPLAY" ]; \ then echo MOC_TIMER_START; else echo MOC_TIMER_CANCEL; fi);\ Macro($(timer_action)); % MOC_TITLE should be defined on child modes MOC_TIMER_START=\ Macro(MOC_TITLE);\ Timer(MOC_TITLE,$(UpdateTimeout),0); MOC_TIMER_CANCEL=\ Timer(MOC_TITLE,cancel);\ Set(title,);\ Set(status,); File Browser=\ Make(mode,moc_file_browser) Play Dir=\ Make(mode,moc_play_dir) PLAY_ONLY=\ Exec(mocp -p); PLAY=\ Macro(PLAY_ONLY);\ Macro(MOC_TIMER_START); RWD=\ Exec(mocp -k -10); FF=\ Exec(mocp -k 10) ; PREV=\ Exec(mocp -r);\ Macro(MOC_TITLE); NEXT=\ Exec(mocp -f);\ Macro(MOC_TITLE); STOP=\ Macro(MOC_TIMER_CANCEL);\ Exec(mocp -s); PAUSE=\ Exec(mocp -G); RUN_IF_NEED=\ Exec(ID=`id -u`;P=`ps -fu $ID|grep mocp|grep -v grep|grep -v anyremote|grep -v edit`; \ if [ "x$P" = "x" ]; then mocp -S; fi); RUN_OR_QUIT=\ Exec(ID=`id -u`;P=`ps -fu $ID|grep mocp|grep -v grep|grep -v anyremote|grep -v edit`; \ if [ "x$P" = "x" ]; then mocp -S; else mocp -x; fi); APP_QUIT=\ Macro(MOC_TIMER_CANCEL);\ Exec(mocp -x); APP_PLAY_STATUS=\ Make(var,moc_status,mocp -i|grep State|tr -d " "|cut -f 2 -d ":");\ Make(var,app_status,if [ "x$(moc_status)" = "xPLAY" ]; then echo playing; else if [ "x$(moc_status)" = "xSTOP" ]; then echo stopped; else echo paused; fi; fi); Layout 3x4=\ Make(mode,moc_3x4); Layout 7x1=\ Make(mode,moc_7x1); Layout 5x1=\ Make(mode,moc_5x1); [ModeEnd] [Mode]=moc_3x4 : moc_general, default_player APP_POST_SETUP=\ Make(var,moc_layout,by_value,3x4);\ Macro(MOC_CHECK_TIMER); % PowerMgmt by Utils/aliases-server.cfg APP_MENU=\ Set(menu,replace,File Browser,Play Dir,Shuffle,Repeat,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU); MOC_TITLE=\ Macro(MOC_TITLE_GENERAL); [ModeEnd] [Mode]=moc_cover MOC_TITLE=\ Macro(MOC_TITLE_GENERAL);\ Macro(APP_COVER); APP_COVER=\ Make(var,media_file,mocp -i|grep File:|sed "s/File: //;s/'/'\\\''/g;s/\//\'\/\'/g;s/$/\'/g;s/^'\//\//;s/%20/ /g");\ Macro(DEFAULT_COVER); [ModeEnd] [Mode]=moc_7x1 : moc_general, default_player_7x1, moc_cover APP_POST_SETUP=\ Make(var,moc_layout,by_value,7x1);\ Macro(MOC_CHECK_TIMER); APP_MENU=\ Set(menu,replace,File Browser,Play Dir,Shuffle,Repeat,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU); [ModeEnd] [Mode]=moc_5x1 : moc_general, default_player_5x1, moc_cover APP_POST_SETUP=\ Make(var,moc_layout,by_value,5x1); APP_MENU=\ Set(menu,replace,File Browser,Play Dir,Shuffle,Repeat,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU); APP_TITLE=\ Macro(MOC_TITLE); PLAY=\ Macro(APP_PLAY_STATUS);\ Make(var,moc_play_action,if [ "x$(app_status)" = "xstopped" ]; \ then echo PLAY_ONLY; else echo PAUSE; fi);\ Macro($(moc_play_action)); [ModeEnd] [Mode]=moc_file_browser (EnterMode)=\ Timer(MOC_TITLE,cancel);\ Set(list,font,small);\ Macro(FBROWSER_FILL_LIST);\ Macro(UPDATEMENU); (ExitMode)=\ Set(list,close);\ Macro(MOC_TITLE);\ Macro(MOC_TIMER); UPDATEMENU=\ Set(menu,replace,Go To,Go Home,Play it,Enqueue); Go To($$)=\ Macro(FBROWSER_GO_TO); Go Home($$)=\ Macro(FBROWSER_GO_HOME); Back($$)=\ Make(mode,moc_$(moc_layout)); Play it($$)=\ Exec(mocp -l "$(fbrowser_dir)"/"$(Param)"); Enqueue($$)=\ Exec(mocp -q "$(fbrowser_dir)"/"$(Param)"); %Push($$) use from aliases-server-fbrowser-v4i.cfg [ModeEnd] [Mode]=moc_play_dir : moc_general (EnterMode)=\ Timer(MOC_TITLE,cancel);\ Set(list,font,small);\ Macro(FBROWSER_FILL_LIST);\ Macro(UPDATEMENU); (ExitMode)=\ Set(list,close); UPDATEMENU=\ Set(menu,replace,Go To,Go Home,Play Dir); Go To($$)=\ Macro(FBROWSER_GO_TO); Go Home($$)=\ Macro(FBROWSER_GO_HOME); Back($$)=\ Make(mode,moc_$(moc_layout)); Play Dir($$)=\ Exec(mocp -c;\ if [ -d "$(fbrowser_dir)"/"$(Param)" ]; then \ mocp -a "$(fbrowser_dir)"/"$(Param)"; \ else \ mocp -a "$(fbrowser_dir)"; \ fi; \ mocp -p);\ Make(mode,moc_$(moc_layout)); %Push($$) use from aliases-server-fbrowser-v4i.cfg [ModeEnd] [Mode]=moc_repeat (EnterMode)=\ Set(list,replace,Repeat,Yes,No);\ Set(menu,replace,Choose); Back($$)=\ Set(list,close);\ Make(mode,moc_$(moc_layout)); Push($$)=\ Macro(Choose($$)); Choose($$)=\ Exec(moc `echo $(Param)|sed 's/Yes/-o/;s/No/-u/' repeat`);\ Set(list,close);\ Make(mode,moc_$(moc_layout)); [ModeEnd] [Mode]=moc_shuffle (EnterMode)=\ Set(list,replace,Shuffle,Yes,No);\ Set(menu,replace,Choose); Back($$)=\ Set(list,close);\ Make(mode,moc_$(moc_layout)); Push($$)=\ Macro(Choose($$)); Choose($$)=\ Exec(moc `echo $(Param)|sed 's/Yes/-o/;s/No/-u/' shuffle`);\ Set(list,close);\ Make(mode,moc_$(moc_layout)); [ModeEnd] [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/djview.cfg�����������������������������������������������������0000644�0002322�0002322�00000004553�12664332726�021727� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for DjView management (Server-mode) % http://djvu.sourceforge.net/djview4.html package % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.4i % DEF_PRESENTATION % ALL_IN_ONE % MEDIACENTER presentation GuiAppName=DjVuLibre GuiAppBinary=djview GuiAppRun=echo 'U=`id -u`;P=`pgrep -l -u $U djview`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=A standalone DjVu viewer for Unix under X11 (based on the Qt library). [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-presentation.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Make(var,open_file,by_value,);\ Make(var,app_name,by_value,DjVuLibre);\ Make(var,app_manage_mode,by_value,djview_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,djview); [Mode]=djview : default_presentation_init APP_IS_RUN=\ Make(var,app_run,pgrep -l -u `id -u` djview|head -1|wc -l); [ModeEnd] [Mode]=djview_manage : default_presentation SETUP_DEFAULT_PRESENTATION=\ Set(layout,default);\ Set(icons,$(app_name),\ 1,folder,2,plus,3,none,\ 4,rewind,5,fit,6,forward,\ 7,none,8,minus,9,none,\ *,question,0,none,#,no);\ Set(status,$(app_name));\ Set(title,$(open_file)); APP_SETUP=\ Make(none); * *=Set(text,replace,Help,1 File Browser\n2 Zoom In\n3 None\n4 Previous Page\n5 Fit\n6 Next Page\n7 None\n8 Zoom Out\n9 None\n ** Help\n0 None\n# Quit $(app_name)\n); APP_START_IF=\ Make(var,app_run,pgrep -l -u `id -u` djview|head -1|wc -l);\ Make(var,screen_resolution,xdpyinfo |grep dimensions|cut -f 2 -d : |cut -f 1 -d p|tr -d ' ');\ Exec(if [ "x$(app_run)" = "x0" ]; then cd "$(fbrowser_dir)";djview -fs -geometry $(screen_resolution) $(open_file)& fi 2> /dev/null); APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch djview); APP_QUIT=\ Exec(pkill djview);\ Set(title, ); Up=\ Emulate(key,Page_Up); Down=\ Emulate(key,Page_Down); PRES_START=\ Make(none); PRES_PREV_PAGE=\ Emulate(key,Page_Up); PRES_NEXT_PAGE=\ Emulate(key,Page_Down); PRES_ZOOM_IN=\ EEmulate(key,plus); PRES_ZOOM_OUT=\ Emulate(key,minus); PRES_FIRST_PAGE=\ Make(none); PRES_LAST_PAGE=\ Make(none); # Fit PRES_TOGGLE_FULLSCREEN=\ Emulate(key,p); PRES_REFRESH=\ Make(none); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/autolock.cfg���������������������������������������������������0000644�0002322�0002322�00000001455�12100017671�022236� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file: auto-lock example. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Autolock GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Locks display if connection to the phone will be lost. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec($(CfgDir)/Utils/message.sh "Display will be locked if connection lost"); * *=Set(text,replace,Help,Display will be locked if connection lost); Back=\ Set(text,close); Cancel=\ Make(exit); % Auto-lock example: (Connect)=\ Exec(killall kdesktop_lock);\ Set(icons,Autolock,0,default,1,default,2,default,3,default,4,default,5,default,6,default,7,default,8,default,9,default,*,question,#,default); (Disconnect)=\ Exec(kdesktop_lock --forcelock) [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/keyboard.cfg���������������������������������������������������0000644�0002322�0002322�00000003054�12664332726�022232� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for keyboard emulation. (Server-mode) % This configuration file emulate a few useful buttons. % % STATUS stable % XTEST yes % SOUND mixer % ENV no % ALL_IN_ONE GuiAppName=Keyboard test GuiAppBinary=true GuiAppIcon=keyboard.png GuiAppType=Example GuiAppProtocols=Server GuiAppDesc=Simple keyboard emulation example. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Emulate(key,numbersign);\ Exec(echo $(CfgDir));\ Exec(echo $(TmpDir));\ (Connect)=\ Make(mode,keyboard); [Mode]=keyboard Cancel=Make(exit); (EnterMode)=\ Set(status,Keyboard test);\ Set(title,);\ Set(layout,default);\ Set(icons,Keyboard,0,default,1,no,2,up,3,default,4,left,5,default,6,right,7,default,8,down,9,default,*,question,0,pause,#,default);\ Macro(KBDCFG_MENU); (ExitMode)=Set(status,); KBDCFG_MENU=\ Set(menu,replace,);\ Macro(ALLIN1MENU) Back=\ Set(text,close);\ Macro(KBDCFG_MENU); 1=Emulate(keydown,Alt_L,key,F4,keyup,Alt_L) 2=Emulate(key,Up) 3=Emulate(key,Page_Up) 4=Emulate(key,Left) 5=Emulate(key,Return) 6=Emulate(key,Right) 7=Emulate(key,Tab) 8=Emulate(key,Down) 9=Emulate(key,Page_Down) 0=Emulate(key,space) * 1=Emulate(key,Escape) * 2=Macro(DEFAULT_VOLUME_DOWN) * 3=Macro(DEFAULT_VOLUME_UP) * 7=Emulate(keydown,Alt_L,key,Tab,keyup,Alt_L) * *=Set(text,replace,Help,1 - AltF4/Esc\n2 - UpArr/Vol-\n3 - PgUp/Vol+\n4 - L.Arrow\n5 - Enter\n6 - R.Arrow\n7 - Tab/AltTab\n8 - DownArr\n9 - PgDn\n* - Modifier/Help\n0 - Space/Mute) * 0=Macro(DEFAULT_TOGGLE_MUTE) [ModeEnd] [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/imageViewer.cfg������������������������������������������������0000644�0002322�0002322�00000005156�12664332726�022703� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for image viewing on the screen of cellphone (Server-mode) % prerequisites: ImageMagic % % STATUS stable % XTEST no % SOUND no % ENV no % FBROWSER v.4i GuiAppName=ImageViewer GuiAppIcon=redo.png GuiAppType=Custom GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Allows to view images from PC on the phone screen. Beware: Can cause J2ME client crash on some Nokia's and Samsung's [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Macro(TEST_IMAGEMAGIC);\ Make(var,wm_rotate,by_value,); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Set(icons,ImageViewer,\ 1,folder,2,plus,3,default,\ 4,default,5,default,6,default,\ 7,default,8,default,9,default,\ *,question,0,no,#,default);\ Set(hints,\ 1,file manager,\ *,help (press twice));\ Set(title,);\ Set(status,);\ Set(image,nocursor);\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); Cancel=\ Make(exit); Back=\ Set(text,close);\ Set(image,close);\ Set(menu,replace,); %Back($$)=\ % Macro(FBROWSER_IC_GO_UP); Back($$)=\ Set(list,close); UpdateMenu=\ Set(menu,replace,GoTo,Open,Go Home); Open($$)=\ Make(var,view_idx,echo $(Index));\ Make(var,view_file,by_value,$(Param));\ Make(mode,file_viewer); Open=\ Make(var,view_idx,echo $(Index));\ Make(var,view_file,by_value,$(Param));\ Make(mode,file_viewer); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v4i.cfg 1=\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); 2=\ Set(fullscreen,toggle);\ Get(screen_size); * *=\ Set(text,replace,Help, Image viewer.\n1 - File browser\n2 - Toggle Fullscreen);\ Set(menu,replace,); 0=\ Make(exit); [Mode]=file_viewer (EnterMode)=\ Macro(SHOW); Back=\ Macro(List); % Android gestures support ImageSlideLeft=\ Macro(Next); ImageSlideRight=\ Macro(Previous); WINMENU=\ Set(menu,replace,Next,Previous,Update,List); SHOW=\ Macro(SHOW2); SHOW2=\ Set(popup,show,Loading...);\ Set(image,window,$(fbrowser_dir)/$(view_file));\ Set(popup,hide);\ Macro(WINMENU); Update=\ Macro(SHOW2); Next=\ Make(var,view_idx,expr $(view_idx) + 1);\ Make(var,view_file,ls -1 "$(fbrowser_dir)"|head -$(view_idx)|tail -1);\ Macro(SHOW2); Previous=\ Make(var,view_idx,J=`expr $(view_idx) - 1`;echo $J);\ Make(var,view_file,ls -1 "$(fbrowser_dir)"|head -$(view_idx)|tail -1);\ Macro(SHOW2); List=\ Make(mode,default);\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); [ModeEnd] [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/xmms2.cfg������������������������������������������������������0000644�0002322�0002322�00000014726�12130537276�021503� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Xmms2 management (Server-mode) % % prerequisites: xmms2-client-cli package % % Thanks to Gyuris Szabolcs for original version of this configuration file % % STATUS unknown % XTEST no % SOUND app % ENV no % DEF_PLAYER % ALL_IN_ONE GuiAppName=Xmms2 GuiAppBinary=xmms2 GuiAppRun= P=`ps -ef|grep xmms2d|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=xmms.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=XMMS2 is definitely an audio player. But it is not a general multimedia player - it will not play videos. It has a modular framework and plugin architecture for audio processing, visualisation and output, but this framework has not been designed to support video. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var,player_name,by_value,Xmms2);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,xmms2_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get xmms2_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set xmms2_layout $(xmms2_layout)); (Connect)=\ Make(mode,xmms2_$(xmms2_layout)); [Mode]=xmms2_general XMMS2_VOL-=\ Exec(xmms2 server volume -5); XMMS2_MUTE=\ Make(var,x2_volume,\ if [ "x$(x2_volume)" = "x-1" ]; then \ xmms2 server volume|tail -1|tr -d " "|cut -f 2 -d "=";xmms2 server volume 0; \ else \ xmms2 server volume $(x2_volume); echo "-1";\ fi); XMMS2_VOL+=\ Exec(xmms2 server volume +5) % Android support VOL-=Macro(XMMS2_VOL-); VOL+=Macro(XMMS2_VOL+); % Gestures support SlideDown=Macro(XMMS2_VOL-); SlideUp =Macro(XMMS2_VOL+); RWD=\ Exec(xmms2 seek -10); PLAY=\ Exec(xmms2 play);\ Macro(XMMS2_TIMER_START); FF=\ Exec(xmms2 seek +10) PREV=\ Exec(xmms2 prev);\ Macro(XMMS2_TITLE_DELAYED); STOP=\ Macro(XMMS2_TIMER_CANCEL);\ Exec(xmms2 stop); NEXT=\ Exec(xmms2 next);\ Macro(XMMS2_TITLE_DELAYED); PAUSE=\ Exec(xmms2 pause);\ Macro(XMMS2_CHECK_TIMER); APP_QUIT=\ Macro(XMMS2_TIMER_CANCEL);\ Exec(xmms2 quit); RUN_IF_NEED=\ Exec(P=`ps -ef|grep -v grep|grep -v anyremote|grep xmms2d`; \ if [ "x$P" = "x" ]; then \ xmms2-launcher; \ fi); RUN_OR_QUIT=\ Exec(P=`ps -ef|grep -v grep|grep -v anyremote|grep xmms2d`; \ if [ "x$P" = "x" ]; then \ xmms2-launcher; \ else \ xmms2 quit; \ fi); % XMMS2_TITLE should be defined in child modes XMMS2_TIMER_START=\ Macro(XMMS2_TITLE);\ Timer(XMMS2_TITLE,$(UpdateTimeout),0); XMMS2_TIMER_CANCEL=\ Timer(XMMS2_TITLE,cancel);\ Set(title,);\ Set(status,); % Too simple :-) % ExecAndSet(title,xmms2 current|cut -f 2 -d":"); XMMS2_TITLE_GENERAL=\ Make(var,alb,xmms2 info|grep 'album ='|cut -f 2 -d "=");\ Make(var,tit,xmms2 info|grep 'title ='|cut -f 2 -d "=");\ Make(var,art,xmms2 info|grep 'artist ='|cut -f 2 -d "=");\ Set(title,$(alb) - $(tit));\ Set(status,$(art)); XMMS2_TITLE_DELAYED=\ Make(var,dummy,sleep 1;echo 0);\ Macro(XMMS2_TITLE); XMMS2_CHECK_TIMER=\ Make(var,xmms2_status,xmms2 current|cut -f 1 -d ":");\ Make(var,timer_action,if [ "x$(xmms2_status)" = "xPlaying" ]; \ then echo XMMS2_TIMER_START; else echo XMMS2_TIMER_CANCEL; fi);\ Macro($(timer_action)); Shuffle=\ Exec(xmms2 playlist shuffle); % there isn't any repeat in xmms2 cli now % Repeat=Exec(xmms2 repeat); Playlist=\ Make(mode,xmms2_playlist); Audio Device=\ Timer(XMMS2_TITLE,cancel);\ Make(mode,xmms2_audio); Xmms2 cmd=\ Make(mode,xmms2_clicmd) [ModeEnd] [Mode]=xmms2_3x4 : xmms2_general,default_player % (EnterMode) by Utils/aliases-server-player.cfg APP_PRE_SETUP=\ Make(var,x2_volume,by_value,-1); APP_POST_SETUP=\ Make(var,xmms2_layout,by_value,3x4);\ Macro(XMMS2_CHECK_TIMER); % PowerMgmt by Utils/aliases-server.cfg APP_MENU=\ Set(menu,replace,Playlist,Shuffle,Layout 7x1,Audio Device,Xmms2 cmd,PowerMgmt);\ Macro(ALLIN1MENU) Layout 7x1=\ Make(mode,xmms2_7x1); % Override 1=Macro(XMMS2_VOL-); 2=Macro(XMMS2_MUTE); 3=Macro(XMMS2_VOL+); XMMS2_TITLE=\ Macro(XMMS2_TITLE_GENERAL); [ModeEnd] [Mode]=xmms2_7x1 : xmms2_general,default_player_7x1 % (EnterMode) by Utils/aliases-server-player.cfg % Next Cover, Previous Cover,Update Cover, Help, PowerMgmt by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Playlist,Shuffle,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Help,Audio Device,Xmms2 cmd,PowerMgmt);\ Macro(ALLIN1MENU); APP_POST_SETUP=\ Make(var,xmms2_layout,by_value,7x1);\ Macro(XMMS2_CHECK_TIMER); Mute=\ Macro(XMMS2_MUTE); XMMS2_TITLE=\ Macro(XMMS2_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file,xmms2 info|grep 'url = file'|sed "s/.*\/\/\//\//;s/'/'\\\''/g;s/\//\'\/\'/g;s/$/\'/g;s/^'\//\//");\ Macro(DEFAULT_COVER); Mute=\ Macro(TOGGLE_MUTE_MPRIS); Layout 3x4=\ Make(mode,xmms2_3x4); [ModeEnd] [Mode]=xmms2_playlist (EnterMode)=\ Set(list,font,small);\ ExecAndSet(list,replace,Playlist,\ L=`xmms2 list| grep "\["|tr -d ','|sed 's/$/,/'`; if [ -z "$L" ]; then echo "<empty>"; else echo "$L"; fi);\ ExecAndSet(list,select,L=`xmms2 list|grep -n '[>]'|cut -d: -f1`; if [ -z "$L" ]; then echo "1"; else echo "$L"; fi);\ Set(menu,replace,Choose); (ExitMode)=\ Set(list,close); Back($$)=\ Make(mode,xmms2_$(xmms2_layout)) Choose($$)=\ Exec(xmms2 jump $(Index)); Push($$)=\ Macro(Choose($$)); [ModeEnd] % Choose Audio Device [Mode]=xmms2_audio % Alsa devices: default, bluetooth %% asoundrc: %% pcm.bluetooth { %% type bluetooth %% device <MAC> %% profile "auto" %% } (EnterMode)=\ Set(list,font,small);\ Set(list,replace,Audio Devices,default,bluetooth);\ Set(menu,replace,Choose); (ExitMode)=\ Set(list,close); Back($$)=\ Make(mode,xmms2_$(xmms2_layout)); Push($$)=\ Macro(Choose($$)); Choose($$)=\ Make(var,xmms2_status,xmms2 current|cut -f 1 -d ":");\ Exec(if [ "x$(xmms2_status)" = "xPlaying"; then \ xmms2 stop;xmms2 config alsa.device $(Param); sleep 1; xmms2 play; sleep 1; \ else \ xmms2 config alsa.device $(Param); \ fi);\ Make(mode,xmms2_$(xmms2_layout)); [ModeEnd] [Mode]=xmms2_clicmd (EnterMode)=\ Set(editfield,Xmms2 Cli,Param,add); Ok($$)=\ Set(text,close);\ ExecAndSet(text,replace,Xmms2 Cli,xmms2 $(Param);echo -e \"---\\nExit code:<$?>\") Back($$)=\ Make(mode,xmms2_$(xmms2_layout)) Back=\ Make(mode,xmms2_$(xmms2_layout)) [ModeEnd] [End] ������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/okular.cfg�����������������������������������������������������0000644�0002322�0002322�00000006101�12664332726�021723� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for okular (http://okular.kde.org) management (Server-mode) % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.4i % IPC DBUS % DEF_PRESENTATION % ALL_IN_ONE % MEDIACENTER presentation GuiAppName=Okular GuiAppBinary=okular GuiAppRun=U=`id -u`;A=`pgrep -l -u $U okular`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=okular.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Okular is a universal document viewer for KDE4 [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-presentation.cfg);\ Make(var,open_file,by_value,);\ Make(var,app_name,by_value,Okular);\ Make(var,app_manage_mode,by_value,okular_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,okular); [Mode]=okular : default_presentation_init APP_IS_RUN=\ Make(var,app_run,pgrep -u `id -u` okular|head -1|wc -l); [ModeEnd] [Mode]=okular_manage : default_presentation GETPID=Make(var,okular_pid,pgrep -u `id -u` okular); APP_SETUP=\ Make(var,okular_fs,by_value,showFullScreen); APP_START_IF=\ Macro(GETPID);\ Exec(if [ "x$(okular_pid)" = "x" ]; then cd "$(fbrowser_dir)";okular $(open_file)& fi 2> /dev/null); APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch okular); APP_QUIT=\ Macro(GETPID);\ Exec(if [ "x$(okular_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.okular-$(okular_pid) /MainApplication org.kde.KApplication.quit; fi);\ Set(title, ); PRES_START=\ Macro(GETPID);\ Exec(if [ "x$(okular_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.okular-$(okular_pid) /okular org.kde.okular.slotTogglePresentation; fi); PRES_PREV_PAGE=\ Macro(GETPID);\ Exec(if [ "x$(okular_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.okular-$(okular_pid) /okular org.kde.okular.slotPreviousPage; fi); PRES_NEXT_PAGE=\ Macro(GETPID);\ Exec(if [ "x$(okular_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.okular-$(okular_pid) /okular org.kde.okular.slotNextPage; fi); PRES_ZOOM_IN=\ Emulate(keydown,Control_L,key,plus,keyup,Control_L) PRES_ZOOM_OUT=\ Emulate(keydown,Control_L,key,minus,keyup,Control_L) PRES_FIRST_PAGE=\ Macro(GETPID);\ Exec(if [ "x$(okular_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.okular-$(okular_pid) /okular org.kde.okular.slotGotoFirst; fi); PRES_LAST_PAGE=\ Macro(GETPID);\ Exec(if [ "x$(okular_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.okular-$(okular_pid) /okular org.kde.okular.slotGotoLast; fi); PRES_TOGGLE_FULLSCREEN=\ Macro(GETPID);\ Exec(if [ "x$(okular_pid)" != "x" ]; then qdbus org.kde.okular-$(okular_pid) /okular/okular__Shell com.trolltech.Qt.QWidget.$(okular_fs); fi);\ Make(var,okular_fs,if [ "x$(okular_fs)" = "xshowFullScreen" ]; then echo showNormal; else echo showFullScreen; fi); PRES_REFRESH=\ Macro(GETPID);\ Exec(qdbus org.kde.okular-$(okular_pid) /okular/okular__Shell com.trolltech.Qt.QWidget.repaint); [ModeEnd] [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/amarok.cfg�����������������������������������������������������0000644�0002322�0002322�00000030325�12130536431�021670� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for amarok/KDE4 management. (Server-mode) % % Thanks to Carlos Sanchez, Johann Bauer and Dmirty Ashkadov % % STATUS stable % XTEST no % SOUND app % ENV no % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio GuiAppName=Amarok GuiAppBinary=amarok GuiAppVersion=echo 'V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi'|sh -s GuiAppRun=echo 'A=`pgrep amarok`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=amarok.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration file is for Amarok/KDE4 [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(TEST_QDBUS);\ Macro(TEST_DBUS_SEND);\ Macro(TEST_IMAGEMAGIC);\ Make(var,kde4_app,by_value,amarok);\ Macro(TEST_KDE4_APP);\ Make(var,player_name,by_value,Amarok);\ Make(var,cover_size,by_value,);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Macro(SETUP_DEFAULT_CALL_HANDLER);\ Make(var,amarok_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get amarok_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set amarok_layout $(amarok_layout)); (Connect)=\ Make(mode,amarok); [Mode]=amarok (EnterMode)=\ Make(var,am_dbus,if [ "x$(Dbus)" = "xyes" ]; then echo dbus; else echo nodbus; fi);\ Make(mode,amarok_$(am_dbus)_$(amarok_layout)); [ModeEnd] % Common defines [Mode]=amarok_general (Disconnect)=\ Timer(AMAROK_INFO,cancel); InCall($$)=\ Macro(DEFAULT_INCOMING_CALL); EndCall($$)=\ Macro(DEFAULT_END_CALL); CHECK_PLAY_STATUS=\ Make(var,amarok_play_status,qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus);\ Make(var,incoming_call_handler,if [ "x$(amarok_play_status)" = "xPlaying" ]; then echo PAUSE; else echo ""; fi);\ Make(var,end_call_handler,if [ "x$(amarok_play_status)" = "xPlaying" ]; then echo PLAY; else echo ""; fi); Shuffle=\ Make(var,shuffle_val,\ P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle`;\ if [ "x$P" = "xtrue" ]; then echo 0; else echo 1; fi);\ Exec(qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle $(shuffle_val)); Repeat=\ Make(var,repeat_val,\ P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.LoopStatus`;\ if [ "x$P" = "xNone" ]; then echo 1; else echo 0; fi);\ Exec(qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.Repeat $(repeat_val)); Playlist=\ Timer(AMAROK_INFO,cancel);\ Make(mode,amarok_playlist); RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh amarok); RUN_OR_QUIT=\ Exec(P=`pgrep amarok`;\ if [ "x$P" = "x" ]; then amarok 2> /dev/null; \ else dbus-send --type=method_call --dest=org.kde.amarok / org.freedesktop.MediaPlayer.Quit; fi);\ Set(title,);\ Set(status,); APP_QUIT=\ Exec(dbus-send --type=method_call --dest=org.kde.amarok / org.freedesktop.MediaPlayer.Quit);\ Timer(AMAROK_INFO,cancel);\ Set(title,);\ Set(status,); AMAROK_INFO_GENERAL=\ Make(var,alb,qdbus org.kde.amarok /Player GetMetadata|grep album:|sed 's/album: //');\ Make(var,art,qdbus org.kde.amarok /Player GetMetadata|grep artist:|sed 's/.*artist: //'|tail -1);\ Make(var,tit,qdbus org.kde.amarok /Player GetMetadata|grep title:|sed 's/title: //');\ Set(title,$(alb) - $(tit));\ Set(status,$(art)); % AMAROK_INFO must be defined in child modes AMAROK_CHECK=\ Macro(AMAROK_INFO,\ P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus`;\ if [ "x$P" = "xPlaying" ]; then echo 0; else echo 1; fi); AMAROK_COVER=\ Make(var,coverencode,qdbus org.kde.amarok /Player GetMetadata|grep arturl:|sed "s/arturl: file:\/\///");\ Make(var,coverdecode,echo 'arg="$(coverencode)";i="0"; \ while [ "$i" -lt ${#arg} ]; do c0=${arg:$i:1}; \ if [ "x$c0" = "x%" ]; then c1=${arg:$((i+1)):1}; c2=${arg:$((i+2)):1}; printf "\x$c1$c2"; i=$((i+3)); \ else echo -n "$c0"; i=$((i+1)); fi \ done'|bash -s);\ Make(var,coverfile,echo "$(coverdecode)"|md5sum|cut -f 1 -d ' ');\ Make(var,dummy,\ if [ "x$(coverdecode)" != "x" ]; then \ convert -resize $(cover_size)x$(cover_size) -depth -background transparent \ "$(coverdecode)" $(TmpDir)/album_covers/$(coverfile)-$(cover_size).png;\ echo "$(TmpDir)/album_covers/$(coverfile)-$(cover_size).png";\ fi);\ Set(cover,noname,$(TmpDir)/album_covers/$(coverfile)-$(cover_size).png); APP_PLAY_STATUS=\ Make(var,amarok_status,qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus);\ Make(var,app_status,if [ "x$(amarok_status)" = "xPlaying" ]; then echo playing; else echo paused; fi); [ModeEnd] % % Will be used if compiled with dbus support % [Mode]=amarok_general_dbus : amarok_general APP_POST_SETUP_GENERAL=\ Dbus(connect,am2,org.kde.amarok,/Player,org.freedesktop.MediaPlayer);\ Dbus(connect,am2b,org.kde.amarok,/,org.freedesktop.MediaPlayer);\ Macro(AMAROK_CHECK);\ Macro(GETVOL);\ Macro(GETPOS);\ Make(var,am_mute,by_value,$(am_volume)); GETVOL=\ Dbus(get,am2,VolumeGet,int,am_volume); GETPOS=\ Dbus(get,am2,PositionGet,int,am_pos); VOL+=\ Macro(GETVOL);\ Make(var,am_volume,expr $(am_volume) + 5);\ Dbus(set,am2,VolumeSet,int,$(am_volume)); VOL-=\ Macro(GETVOL);\ Make(var,am_volume,expr $(am_volume) - 5);\ Dbus(set,am2,VolumeSet,int,$(am_volume)); TOGGLE_MUTE=\ Make(var,am_mute,\ if [ "x$(am_mute)" = "x-1" ]; then \ qdbus org.kde.amarok /Player VolumeGet; \ dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:0; \ else \ dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:$(am_volume); \ echo "-1"; \ fi); PLAY=\ Dbus(set,am2,Play);\ Macro(AMAROK_INFO);\ Timer(AMAROK_INFO,$(UpdateTimeout),0); RWD=\ Macro(GETPOS);\ Make(var,am_pos,expr $(am_pos) - 10000);\ Dbus(set,am2,PositionSet,int,$(am_pos)); FF=\ Macro(GETPOS);\ Make(var,am_pos,expr $(am_pos) + 10000);\ Dbus(set,am2,PositionSet,int,$(am_pos)); PREV=\ Dbus(set,am2,Prev);\ Macro(AMAROK_INFO); STOP=\ Dbus(set,am2,Stop);\ Set(title,);\ Set(status,);\ Timer(AMAROK_INFO,cancel); NEXT=\ Dbus(set,am2,Next);\ Macro(AMAROK_INFO); PAUSE=\ Dbus(set,am2, Pause);\ Set(title,);\ Set(status,); Layout 3x4=\ Make(mode,amarok_dbus_3x4); Layout 7x1=\ Make(mode,amarok_dbus_7x1); Layout 5x1=\ Make(mode,amarok_dbus_5x1); [ModeEnd] [Mode]=amarok_dbus_3x4 : amarok_general_dbus , default_player % (EnterMode) by Utils/aliases-server-player.cfg APP_POST_SETUP=\ Macro(APP_POST_SETUP_GENERAL);\ Make(var,am_dbus,by_value,dbus);\ Make(var,amarok_layout,by_value,3x4); APP_MENU=\ Set(menu,replace,Shuffle,Repeat,Playlist,Layout 7x1,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); AMAROK_INFO=\ Macro(AMAROK_INFO_GENERAL); % Custom volume control 1=Macro(VOL-); 2=Macro(TOGGLE_MUTE); 3=Macro(VOL+); [ModeEnd] [Mode]=amarok_dbus_7x1 : amarok_general_dbus,default_player_7x1,amarok_cover APP_POST_SETUP=\ Macro(APP_POST_SETUP_GENERAL);\ Make(var,am_dbus,by_value,dbus);\ Make(var,amarok_layout,by_value,7x1); APP_MENU=\ Set(menu,replace,Shuffle,Repeat,Playlist,Mute,Run/Quit,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); [ModeEnd] [Mode]=amarok_dbus_5x1 : amarok_general_dbus,default_player_5x1,amarok_cover APP_POST_SETUP=\ Macro(APP_POST_SETUP_GENERAL);\ Make(var,am_dbus,by_value,dbus);\ Make(var,amarok_layout,by_value,5x1); APP_MENU=\ Set(menu,replace,Shuffle,Repeat,Playlist,Mute,Run/Quit,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); PLAY=\ Dbus(set,am2,Play);\ Macro(AMAROK_INFO); APP_TITLE=\ Macro(AMAROK_INFO); [ModeEnd] % % Will be used if compiled without dbus support % [Mode]=amarok_general_nodbus : amarok_general APP_POST_SETUP_GENERAL=\ Macro(GETVOL);\ Make(var,am_mute,by_value,$(am_volume));\ Macro(AMAROK_CHECK); GETVOL=\ Make(var,am_volume,qdbus org.kde.amarok /Player VolumeGet); GETPOS=\ Make(var,am_pos,qdbus org.kde.amarok /Player PositionGet); % Custom volume control VOL-=\ Macro(GETVOL);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:`expr $(am_volume) - 5`); VOL+=\ Macro(GETVOL);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:`expr $(am_volume) + 5`); TOGGLE_MUTE=\ Make(var,am_mute,\ if [ "x$(am_mute)" = "x-1" ]; then \ qdbus org.kde.amarok /Player VolumeGet; \ dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:0; \ else \ dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.VolumeSet int32:$(am_volume); \ echo "-1"; \ fi); % Possible DBUS console commands % dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.Play % dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.Stop % dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.Next % dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.Prev % dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.Pause PLAY=\ Exec(amarok --play);\ Macro(AMAROK_INFO);\ Timer(AMAROK_INFO,$(UpdateTimeout),0); RWD=\ Macro(GETPOS);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.PositionSet int32:`expr $(am_pos) - 10000`); FF=\ Macro(GETPOS);\ Exec(dbus-send --type=method_call --dest=org.kde.amarok /Player org.freedesktop.MediaPlayer.PositionSet int32:`expr $(am_pos) + 10000`); PREV=\ Exec(amarok --previous);\ Macro(AMAROK_INFO); STOP=\ Timer(AMAROK_INFO,cancel);\ Exec(amarok --stop);\ Set(title,);\ Set(status,); NEXT=\ Exec(amarok --next);\ Macro(AMAROK_INFO); PAUSE=\ Exec(amarok --pause);\ Set(title,);\ Set(status,); Layout 3x4=\ Make(mode,amarok_nodbus_3x4); Layout 7x1=\ Make(mode,amarok_nodbus_7x1); Layout 5x1=\ Make(mode,amarok_nodbus_5x1); [ModeEnd] [Mode]=amarok_nodbus_3x4 : amarok_general_nodbus,default_player APP_POST_SETUP=\ Macro(APP_POST_SETUP_GENERAL);\ Make(var,am_dbus,by_value,nodbus);\ Make(var,amarok_layout,by_value,3x4); APP_MENU=\ Set(menu,replace,Shuffle,Repeat,Playlist,Layout 7x1,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); AMAROK_INFO=\ Macro(AMAROK_INFO_GENERAL); % Custom volume control 1=Macro(VOL-); 2=Macro(TOGGLE_MUTE); 3=Macro(VOL+); [ModeEnd] [Mode]=amarok_cover AMAROK_INFO=\ Macro(AMAROK_INFO_GENERAL);\ Macro(AMAROK_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); Mute=\ Macro(TOGGLE_MUTE); [ModeEnd] [Mode]=amarok_nodbus_7x1 : amarok_general_nodbus,default_player_7x1,amarok_cover APP_POST_SETUP=\ Macro(APP_POST_SETUP_GENERAL);\ Make(var,am_dbus,by_value,nodbus);\ Make(var,amarok_layout,by_value,7x1); APP_MENU=\ Set(menu,replace,Shuffle,Repeat,Playlist,Mute,Run/Quit,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); [ModeEnd] [Mode]=amarok_nodbus_5x1 : amarok_general_nodbus,default_player_5x1,amarok_cover APP_POST_SETUP=\ Macro(APP_POST_SETUP_GENERAL);\ Make(var,am_dbus,by_value,nodbus);\ Make(var,amarok_layout,by_value,5x1); APP_MENU=\ Set(menu,replace,Shuffle,Repeat,Playlist,Mute,Run/Quit,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); PLAY=\ Exec(amarok --play);\ Macro(AMAROK_INFO); APP_TITLE=\ Macro(AMAROK_INFO); [ModeEnd] [Mode]=amarok_playlist (EnterMode)=\ ExecAndSet(list,replace,Playlist,$(CfgDir)/Utils/getPlayList.sh);\ Set(menu,replace,Play); (ExitMode)=\ Set(list,close); Back($$)=\ Make(mode,amarok_$(am_dbus)_$(amarok_layout)); Play($$)=\ Exec(qdbus org.kde.amarok /TrackList org.freedesktop.MediaPlayer.PlayTrack `expr $(Index) - 1`); Push($$)=\ Macro(Play($$)); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/gmusicbrowser.cfg����������������������������������������������0000644�0002322�0002322�00000015505�12304553030�023311� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Gmusicbrowser (http://squentin.free.fr/gmusicbrowser/gmusicbrowser.html) % management (Server-mode) % % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio GuiAppName=Gmusicbrowser GuiAppBinary=gmusicbrowser GuiAppRun=echo 'P=`ps -ef|grep gmusicbrowser|grep -v grep|grep -v anyremote|grep -v nedit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=gmusicbrowser.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=An open-source jukebox for large collections of mp3/ogg/flac/mpc files, written in perl. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(TEST_DBUS_SEND);\ Make(var,player_name,by_value,Gmusicbrowser);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,gmusicbrowser_opt,R=`gmusicbrowser -h|grep -- -remotecmd`;if [ "x$R" = "x" ]; then echo "-cmd"; else echo "-remotecmd"; fi);\ Make(var,gmusicbrowser_cmd,by_value,\ dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.gmusicbrowser /org/mpris/MediaPlayer2);\ Make(var,gmusicbrowser_get,by_value,\ dbus-send --type=method_call --print-reply --dest=org.mpris.MediaPlayer2.gmusicbrowser /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get);\ Make(var,gmusicbrowser_metadata,by_value,\ $(gmusicbrowser_get) string:org.mpris.MediaPlayer2.Player string:Metadata);\ Make(var,cover_size,by_value,);\ Make(var,gmusicbrowser_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get gmusicbrowser_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set gmusicbrowser_layout $(gmusicbrowser_layout)); (Connect)=\ Make(mode,gmusicbrowser_$(gmusicbrowser_layout)); [Mode]=gmusicbrowser_general % Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg %1=Exec(gmusicbrowser $(gmusicbrowser_opt) DecVolume); %2=Exec(gmusicbrowser $(gmusicbrowser_opt) TogMute); -- this do not works %3=Exec(gmusicbrowser $(gmusicbrowser_opt) IncVolume); PLAY_ONLY=\ Exec(gmusicbrowser $(gmusicbrowser_opt) PlayPause 2> /dev/null); PLAY=\ Macro(PLAY_ONLY);\ Macro(GMUSICBROWSER_START); RWD=\ Exec(gmusicbrowser $(gmusicbrowser_opt) "Rewind 10" 2> /dev/null); FF=\ Exec(gmusicbrowser $(gmusicbrowser_opt) "Forward 10" 2> /dev/null); PREV=\ Exec(gmusicbrowser $(gmusicbrowser_opt) PrevSongInPlaylist 2> /dev/null);\ Macro(GMUSICBROWSER_TITLE); STOP=\ Timer(GMUSICBROWSER_TITLE,cancel);\ Exec(gmusicbrowser $(gmusicbrowser_opt) Stop 2> /dev/null); NEXT=\ Exec(gmusicbrowser $(gmusicbrowser_opt) NextSongInPlaylist 2> /dev/null);\ Macro(GMUSICBROWSER_TITLE); PAUSE=\ Exec(gmusicbrowser $(gmusicbrowser_opt) PlayPause 2> /dev/null); RUN_IF_NEED=\ Exec(P=`ps -ef|grep gmusicbrowser|grep -v grep|grep -v anyremote|grep -v edit`; \ if [ "x$P" = "x" ]; then gmusicbrowser 2> /dev/null & fi) RUN_OR_QUIT=\ Exec(P=`ps -ef|grep gmusicbrowser|grep -v grep|grep -v anyremote|grep -v edit`; \ if [ "x$P" = "x" ]; then gmusicbrowser 2> /dev/null & else gmusicbrowser $(gmusicbrowser_opt) Quit; fi); APP_QUIT=\ Exec(gmusicbrowser $(gmusicbrowser_opt) Quit 2> /dev/null) Repeat=\ Make(var,repeat_val,\ P=`$(gmusicbrowser_get) string:org.mpris.MediaPlayer2.Player string:LoopStatus|tail -1|grep string|cut -f 2 -d '"'`;\ if [ "x$P" = "xNone" ]; then echo Playlist; else echo None; fi);\ Exec($(gmusicbrowser_cmd) org.freedesktop.DBus.Properties.Set string:org.mpris.MediaPlayer2.Player string:LoopStatus variant:string:$(repeat_val)); GMUSICBROWSER_TITLE_GENERAL=\ Make(var,gmusicbrowser_artist,$(gmusicbrowser_metadata)|awk '/.*xesam.albumArtist.*/{getline;getline;print}'|cut -f 2 -d '"');\ Make(var,gmusicbrowser_album,$(gmusicbrowser_metadata)|awk '/.*xesam.album".*/{getline;print}'|cut -f 2 -d '"');\ Make(var,gmusicbrowser_title,$(gmusicbrowser_metadata)|awk '/.*xesam.title.*/{getline;print}'|cut -f 2 -d '"');\ Set(title,$(gmusicbrowser_artist) - $(gmusicbrowser_album));\ Set(status,$(gmusicbrowser_title)); GMUSICBROWSER_STATUS=\ Make(var,gmusicbrowser_status,\ $(gmusicbrowser_get) string:org.mpris.MediaPlayer2.Player string:PlaybackStatus|tail -1|grep string|cut -f 2 -d '"'); GMUSICBROWSER_CHECK_TIMER=\ Macro(GMUSICBROWSER_STATUS);\ Make(var,timer_action,if [ "x$(gmusicbrowser_status)" = "xPlaying" ]; \ then echo GMUSICBROWSER_START; else echo GMUSICBROWSER_CANCEL; fi);\ Macro($(timer_action)); GMUSICBROWSER_CANCEL=\ Timer(GMUSICBROWSER_TITLE,cancel); GMUSICBROWSER_START=\ Macro(GMUSICBROWSER_TITLE);\ Timer(GMUSICBROWSER_TITLE,$(UpdateTimeout),0); APP_PLAY_STATUS=\ Macro(GMUSICBROWSER_STATUS);\ Make(var,app_status,if [ "x$(gmusicbrowser_status)" = "xPlaying" ]; then echo playing; else echo paused; fi); Layout 3x4=\ Make(mode,gmusicbrowser_3x4); Layout 7x1=\ Make(mode,gmusicbrowser_7x1); Layout 5x1=\ Make(mode,gmusicbrowser_5x1); [ModeEnd] [Mode]=gmusicbrowser_3x4 : gmusicbrowser_general, default_player % (EnterMode) by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Repeat,Layout 7x1,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,gmusicbrowser_layout,by_value,3x4);\ Macro(GMUSICBROWSER_CHECK_TIMER); % PowerMgmt by Utils/aliases-server.cfg GMUSICBROWSER_TITLE=\ Macro(GMUSICBROWSER_TITLE_GENERAL); [ModeEnd] [Mode]=gmusicbrowser_cover GMUSICBROWSER_TITLE=\ Macro(GMUSICBROWSER_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file,$(gmusicbrowser_metadata)|awk '/.*xesam.url.*/{getline;print}'|cut -f 2 -d '"'|cut -f 2 -d ':'|sed 's/"$//;s/^\/\/\//\//;s/%20/ /g');\ Macro(DEFAULT_COVER); [ModeEnd] [Mode]=gmusicbrowser_7x1 : gmusicbrowser_general, default_player_7x1, gmusicbrowser_cover % (EnterMode) by Utils/aliases-server-player.cfg % Mute, Next Cover,Previous Cover,Update Cover, PowerMgmt by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Repeat,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,gmusicbrowser_layout,by_value,7x1);\ Macro(GMUSICBROWSER_CHECK_TIMER); [ModeEnd] [Mode]=gmusicbrowser_5x1 : gmusicbrowser_general, default_player_5x1, gmusicbrowser_cover % (EnterMode) by Utils/aliases-server-player.cfg % Mute, Next Cover,Previous Cover,Update Cover, PowerMgmt by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Repeat,Mute,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,gmusicbrowser_layout,by_value,5x1); APP_TITLE=\ Macro(GMUSICBROWSER_TITLE); PLAY=\ Macro(PLAY_ONLY); [ModeEnd] [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/parserTest.cfg�������������������������������������������������0000644�0002322�0002322�00000020040�12123520170�022536� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for parser testing. (Server-mode) % % STATUS unknown % XTEST no % SOUND no % ENV no GuiAppName=parser test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Test of anyRemote configuration file parser. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Timer(TIMER1,1,5);\ Timer(TIMER2,2,1);\ Timer(TIMER3,3,1);\ Timer(TIMER4,3,1); % Timer(EXIT_TIMER,5,0); (Connect)=\ Set(parameter,debug,on);\ Exec(echo Connected);\ Set(status,status line);\ Set(title,title line);\ Make(alarm,/tmp/alarm_test,ALARM1);\ Set(caption,Caption);\ Set(icons,Example,\ 1,file,2,fit,3,fit,\ 4,fit,5,fit,6,fit,\ 7,minus,8,fit,9,plus,\ *,question,0,no,#,fit);\ Set(caption,List Example); (Disconnect)=\ Exec(echo Disconnected) InCall($$)=\ Exec($(CfgDir)/Utils/message.sh "Incoming call from $(Param)") EndCall($$)=\ Exec($(CfgDir)/Utils/message.sh "Call finished") (Exit)=\ Exec(echo "hello from exit handler") 0=Make(exit); 1=Make(var,TEST,by_value,11111);\ Set(text,replace,Vars,TEST=$(TEST)\nHome=$(Home)\nBtAddr=$(BtAddr)\nMode=$(Mode)\nCfgDir=$(CfgDir)\nDevice=$(Device)\n\ 7=Make(var,active_state,echo off);\ Make(var,active_state,echo off);\ Set(status,remote is $(active_state));\ Make(remote,$(active_state)); 9=Make(remote,on);\ Make(var,active_state,echo on);\ Set(status,remote is $(active_state)); Logging=$(Logging)\nServiceName=$(ServiceName)\naaa=$(AAA)\n\ FromEncoding=$(FromEncoding)\nToEncoding=$(ToEncoding)\n\ ScreenSize=$(ScreenSize)\nRefreshPage=$(RefreshPage)\nTEST=$(TEST)\n\ IpAddr=$(IpAddr)\nAutoConnect=$(AutoConnect)\nAutoRepeat=$(AutoRepeat)\n\ Baudrate=$(Baudrate)\nCharSet=$(CharSet)\nIViewer=$(IViewer)\n\ MixerCard=$(MixerCard)); * *=\ Set(text,caption,Help);\ Set(text,replace,SAME,This configuration file do nothing. It used to validate anyRemote configuration file parser.) EXIT_TIMER=Make(exit) TIMER1=\ Exec(echo "hello from TIMER1") TIMER2=\ Exec(echo "hello from TIMER2");\ Timer(TIMER1,pause); TIMER3=\ Exec(echo "hello from TIMER3");\ Timer(TIMER1,continue); TIMER4=\ Exec(echo "hello from TIMER4");\ Timer(TIMER1,cancel); ALARM1=\ Exec(echo "hello from ALARM1"); TEST_MACRO1=Macro(M1); TEST_MACRO2=Macro(M2,echo 0); TEST_EXECSET=\ ExecAndSet(status,echo string);\ ExecAndSet(status,echo $(variable));\ ExecAndSet(title,echo string);\ ExecAndSet(title,echo $(variable)); TEST_SET_M1=\ Set(status,status line);\ Set(status,$(variable)); TEST_SET_M2=\ Set(title,title line);\ Set(title,$(variable)); TEST_SET_LA=\ Set(layout,default,ticker);\ Set(layout,7x1,noticker,joystick_only,volume);\ Set(layout,3x4,ticker,keypad_only);\ Set(layout,3x4,ticker,$(variable); TEST_SET_I=\ Set(icons,List Example,1,fit,2,fit,3,fit,4,fit,5,fit,6,fit,7,fit,8,fit,9,fit,*,question,0,fit,#,fit); TEST_SET_I2=\ Set(icons,SAME,1,fit,2,fit,3,fit,4,fit,5,fit,6,fit,7,fit,8,fit,9,$(variable),*,question,0,fit,#,fit); TEST_SET_M=\ Set(menu,replace,i1,i2,i3);\ Set(menu,clear);\ Set(menu,add,i4,i5,i6);\ Set(menu,add,i4,$(variable),i6); TEST_SET_L1=\ Set(list,add,Example,Item1,Item2,Item3);\ Set(list,clear);\ Set(list,close);\ Set(list,show);\ Set(list,$(variable));\ Set(list,close,clear);\ Set(list,replace,Example,Item1,Item2,Item3);\ Set(list,bg,0,0,0);\ Set(list,fg,255,255,255);\ Set(list,select,2);\ Set(list,font,small); TEST_EXECSET_L1=\ ExecAndSet(list,add,Example,echo 'Item1,Item2,Item3');\ ExecAndSet(list,replace,Example,echo 'Item1,Item2,Item3');\ ExecAndSet(list,bg,echo '0,0,0);\ ExecAndSet(list,fg,echo '255,255,255');\ ExecAndSet(list,font,echo 'small');\ ExecAndSet(list,$(variable));\ ExecAndSet(list,add,Example,$(variable));\ TEST_SET_L2=\ Set(iconlist,add,Example,Item1,Item2,Item3);\ Set(iconlist,clear);\ Set(iconlist,close);\ Set(iconlist,show);\ Set(iconlist,$(variable));\ Set(iconlist,close,clear);\ Set(iconlist,replace,Example,Item1,Item2,Item3);\ Set(iconlist,bg,0,0,0);\ Set(iconlist,fg,255,255,255);\ Set(iconlist,select,2);\ Set(iconlist,font,small);\ ExecAndSet(iconlist,$(variable));\ ExecAndSet(iconlist,add,title,$(variable)); TEST_SET_IM=\ ExecAndSet(image,window,echo "$IMAGE_DIR/image.png");\ ExecAndSet(image,cover,echo "$IMAGE_DIR/image.png");\ Set(image,show);\ Set(image,close);\ Set(image,nocursor);\ Set(image,dynamic_cursor);\ Set(image,set_cursor,0,0);\ ExecAndSet(image,icon,echo "$IMAGE_NAME,$IMAGE_DIR/image.png");\ Set(image,remove,all);\ Set(image,remove,icons);\ Set(image,clear_cache);\ Set(image,$(variable)); TEST_SET_T=\ Set(text,add,title,an text example);\ Set(text,clear);\ Set(text,close);\ Set(text,show);\ Set(text,close,clear);\ Set(text,$(variable));\ Set(text,replace,title,one more dummy text);\ Set(text,bg,0,0,0);\ Set(text,fg,255,255,255);\ Set(text,bg,0,$(variable),0);\ Set(text,fg,255,$(variable),255);\ Set(text,font,medium);\ Set(text,font,$(variable)); TEST_EXECSET_T=\ ExecAndSet(text,add,title,echo 'an text example');\ ExecAndSet(text,replace,title,echo 'one more dummy text');\ ExecAndSet(text,bg,echo '0,0,0');\ ExecAndSet(text,fg,echo '255,255,255');\ ExecAndSet(text,font,echo 'medium');\ ExecAndSet(text,$(variable));\ ExecAndSet(text,add,title,$(variable)); TEST_SET_OTHER=\ Set(vibrate,5);\ Set(vibrate,$(variable));\ Set(popup,show,Hello world!);\ Set(popup,show,$(variable));\ Set(popup,hide);\ Set(volume,50);\ Set(volume,$(variable));\ Set(parameter,debug,on);\ Set(parameter,debug,$(variable)); TEST_MAKE_V=\ Make(var,v1,echo $HOME);\ Make(var,v2,by_value,dummy); TEST_MAKE_M=\ Make(mode,mode2);\ Make(mode,$(variable)); TEST_MAKE_OTHER=\ Make($(variable));\ Make(stop);\ Make(flush);\ Make(disconnect);\ Make(exit);\ Make(remote,on);\ Make(remote,$(variable));\ Make(alarm,/tmp/alarm,ALARM_MACRO);\ Make(none); TEST_TIMER=\ Timer(TIMER_MACRO, 5, 2);\ Timer(TIMER_MACRO,cancel);\ Timer(TIMER_MACRO,reset);\ Timer(TIMER_MACRO,restart);\ Timer(TIMER_MACRO,pause); TEST_GET=\ Get(screen_size);\ Get(model);\ Get(is_exists,16,next);\ Get(cover_size);\ Get(version);\ Get(cursor);\ Get(ping);\ Get(icon_size);\ Get(icon_padding);\ Get(password); TEST_SEND=\ ExecAndSend(string, date);\ Send(string, simple string);\ Send(bytes, 35, 42, 0); TEST_OTHERS=\ Load(file_name.cmds);\ Include(xmms.cfg);\ Load(have spaces inside.cmds);\ Include(have spaces inside.cfg); TEST_DBUS1=\ Dbus(connect,rhythmbox_connection,\ org.gnome.Rhythmbox,\ /org/gnome/Rhythmbox/Player,\ org.gnome.Rhythmbox.Player); TEST_DBUS2=\ Dbus(close,rhythmbox_connection); TEST_DBUS3=\ Dbus(set,rhythmbox_connection, previous);\ Dbus(set, rhythmbox_connection,next);\ Dbus(get,rhythmbox_connection,getElapsed,uint,elapsed);\ Dbus(set, rhythmbox_connection,setElapsed, uint,$(elapsed)); TEST_EMULATE=\ Emulate(key,1);\ Emulate(mouse, 3);\ Emulate(mousedown,1, mousermove,100,100,mouseup,1);\ Emulate(keydown,Control_L,key,c, keyup,Control_L);\ Emulate(keydown,by_value,0xffe3, key,by_value,0x0063,keyup,0xffe3); TEST_FILEMGR=\ ExecAndSet(filemanager,replace,left, cd "`cat $(TmpDir)/ar_storedir_l.tmp`";echo `pwd`>$(TmpDir)/ar_storedir_l.tmp;ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/,/\r/g;s/$/,/');\ ExecAndSet(filemanager,replace,right,cd "`cat $(TmpDir)/ar_storedir_r.tmp`";echo `pwd`>$(TmpDir)/ar_storedir_r.tmp;ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/,/\r/g;s/$/,/');\ Set(filemanager,select,left, $(list_index_l));\ Set(filemanager,select,right,$(list_index_r)); TEST_COVER=\ Set(cover,clear);\ Set(cover,noname,/tmp/zzz.png);\ Set(cover,by_name,setup);\ ExecAndSet(cover,noname,echo /tmp/zzz.png);\ ExecAndSet(cover,by_name,echo setup);\ Set(image,cover,/tmp/zzz.png);\ ExecAndSet(image,cover,echo /tmp/zzz.png);\ Set(image,window,/tmp/zzz.png);\ ExecAndSet(image,window,echo /tmp/zzz.png); Back($$) =Set(list,close); Back =Set(text,close); [Mode]=TESTING2 (EnterMode)=Exec($(CfgDir)/Utils/message.sh "Enter to TESTING2 mode");\ (ExitMode)=Exec($(CfgDir)/Utils/message.sh "Exiting from TESTING2 mode"); [ModeEnd] [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/rhythmbox.cfg��������������������������������������������������0000644�0002322�0002322�00000013073�12256755311�022454� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for rhythmbox. (Server-mode) % % STATUS stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio GuiAppName=Rhythmbox GuiAppBinary=rhythmbox GuiAppRun= A=`ps -ef|grep rhythmbox|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=rhythmbox.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Rhythmbox - The music management application for GNOME [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(TEST_DBUS_SEND);\ Make(var,player_name,by_value,Rhythmbox);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,rhythmbox_exec,by_value,\ dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.rhythmbox /org/mpris/MediaPlayer2);\ Make(var,rhythmbox_get,by_value,\ dbus-send --print-reply --type=method_call --dest=org.mpris.MediaPlayer2.rhythmbox /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:org.mpris.MediaPlayer2.Player);\ Make(var,rhythmbox_set,by_value,\ dbus-send --type=method_call --dest=org.mpris.MediaPlayer2.rhythmbox /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Set string:org.mpris.MediaPlayer2.Player);\ Make(var,rhythmbox_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get rhythmbox_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set rhythmbox_layout $(rhythmbox_layout)); (Connect)=\ Make(mode,rhythmbox_$(rhythmbox_layout)); [Mode]=rhythmbox_general APP_QUIT=\ Timer(RHYTHMBOX_TITLE,cancel);\ Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Quit); RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh rhythmbox); RUN_OR_QUIT=\ Macro(RHYTHMBOX_TIMER_CANCEL);\ Make(var,whoami,id -u);\ Exec(P=`pgrep -u $(whoami) rhythmbox`; \ if [ "x$P" = "x" ]; then rhythmbox & \ else $(rhythmbox_exec) org.mpris.MediaPlayer2.Quit; fi) PREV=\ Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.Previous);\ Macro(RHYTHMBOX_TITLE); PLAY_ONLY=\ Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.PlayPause); PLAY=\ Macro(PLAY_ONLY);\ Macro(RHYTHMBOX_TIMER_START); NEXT=\ Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.Next);\ Macro(RHYTHMBOX_TITLE); RWD=\ Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.Seek int64:-5000000); FF=\ Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.Seek int64:5000000); PAUSE=\ Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.Pause); STOP=\ Macro(RHYTHMBOX_TIMER_CANCEL);\ Exec($(rhythmbox_exec) org.mpris.MediaPlayer2.Player.Stop); RHYTHMBOX_CHECK_TIMER=\ Make(var,rhythmbox_status,\ $(rhythmbox_get) string:PlaybackStatus|tail -1|grep string|cut -d '"' -f 2);\ Make(var,timer_action,if [ "x$(rhythmbox_status)" = "xPlaying" ]; \ then echo RHYTHMBOX_TIMER_START; else echo RHYTHMBOX_TIMER_CANCEL; fi);\ Macro($(timer_action)); RHYTHMBOX_TIMER_START=\ Macro(RHYTHMBOX_TITLE);\ Timer(RHYTHMBOX_TITLE,$(UpdateTimeout),0); RHYTHMBOX_TIMER_CANCEL=\ Timer(RHYTHMBOX_TITLE,cancel);\ Set(title,);\ Set(status,); APP_PLAY_STATUS=\ Make(var,rhythmbox_status,\ $(rhythmbox_get) string:PlaybackStatus|tail -1|grep string|cut -d '"' -f 2);\ Make(var,app_status,if [ "x$(rhythmbox_status)" = "xPlaying" ]; then echo playing; else echo paused; fi); Repeat=\ Exec(P=`$(rhythmbox_get) string:LoopStatus|tail -1|grep string|cut -d '"' -f 2`; \ if [ "x$P" = "xNone" ]; \ then \ $(rhythmbox_set) string:LoopStatus variant:string:Playlist & \ else \ $(rhythmbox_set) string:LoopStatus variant:string:None & \ fi); RHYTHMBOX_TITLE_GENERAL=\ Make(var,alb,$(rhythmbox_get) string:Metadata|awk '/.*xesam.album".*/{getline;print}'|grep string|cut -f 2 -d '"');\ Make(var,tit,$(rhythmbox_get) string:Metadata|awk '/.*xesam.title.*/{getline;print}'|grep string|cut -f 2 -d '"');\ Make(var,art,$(rhythmbox_get) string:Metadata|awk '/.*xesam.albumArtist.*/{getline;getline;print}'|grep string|cut -f 2 -d '"');\ Set(title,$(alb) - $(tit));\ Set(status,$(art)); Layout 3x4=\ Make(mode,rhythmbox_3x4); Layout 7x1=\ Make(mode,rhythmbox_7x1); Layout 5x1=\ Make(mode,rhythmbox_5x1); [ModeEnd] [Mode]=rhythmbox_3x4 : rhythmbox_general, default_player % (EnterMode) by Utils/aliases-server-player.cfg APP_POST_SETUP=\ Make(var,rhythmbox_layout,by_value,3x4);\ Macro(RHYTHMBOX_CHECK_TIMER); APP_MENU=\ Set(menu,replace,Repeat,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); RHYTHMBOX_TITLE=\ Macro(RHYTHMBOX_TITLE_GENERAL); [ModeEnd] [Mode]=rhythmbox_cover RHYTHMBOX_TITLE=\ Macro(RHYTHMBOX_TITLE_GENERAL);\ Macro(APP_COVER); APP_COVER=\ Make(var,media_file,\ $(rhythmbox_get) string:Metadata|awk '/.*mpris.artUrl.*/{getline;print}'|cut -f 2 -d '"'|cut -f 2 -d ':'|sed 's/"$//;s/^\/\/\//\//');\ Macro(DEFAULT_METADATA_COVER); [ModeEnd] [Mode]=rhythmbox_7x1 : rhythmbox_general, rhythmbox_cover, default_player_7x1 APP_MENU=\ Set(menu,replace,Repeat,Mute,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,rhythmbox_layout,by_value,7x1);\ Macro(RHYTHMBOX_CHECK_TIMER); [ModeEnd] [Mode]=rhythmbox_5x1 : rhythmbox_general, rhythmbox_cover, default_player_5x1 APP_MENU=\ Set(menu,replace,Repeat,Mute,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,rhythmbox_layout,by_value,5x1); APP_TITLE=\ Macro(RHYTHMBOX_TITLE); PLAY=\ Macro(PLAY_ONLY); [ModeEnd] [End] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/wmctrl.cfg�����������������������������������������������������0000644�0002322�0002322�00000003550�12073567677�021754� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for wmctrl - http://www.sweb.cz/tripie/utils/wmctrl/ (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=WmCtrl GuiAppType=Application GuiAppBinary=true GuiAppDesc=The wmctrl program is a UNIX/Linux command line tool to interact with an EWMH/NetWM compatible X Window Manager. GuiAppProtocols=Server [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(P=`which wmctrl|grep wmctrl|grep -v no|grep -v edit|grep -v anyremote|wc -l|tr -d " "`;if [ "x$P" = "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: wmctrl is not installed"; fi); (Connect)=\ Set(parameter,debug,on);\ Set(title,WmCtrl);\ Set(list,replace,WmCtrl,---);\ Macro(WMCTRL_MENU); Cancel=\ Make(exit); GET_WIN_ID=Make(var,winid,echo $(Param)|cut -d " " -f 1); WMCTRL_MENU=Set(menu,replace,Desktops,Windows,Disconnect); * *=Set(text,replace,Help,Use menu to choose window or desktop operations); Back=Set(text,close);\ Set(list,clear);\ Macro(WMCTRL_MENU); Push($$)=Macro(Desktops($$)); Desktops($$)=ExecAndSet(list,replace,Desktops,wmctrl -d|tr -s " "|cut -d ":" -f 1,4|cut -d " " -f 1,6,7|sed 's/$/,/');\ Set(menu,replace,Show); Windows($$)=ExecAndSet(list,replace,Windows,wmctrl -l|sed 's/$/,/');\ Set(menu,replace,Activate,Fullscreen,Above,Below,Close); Show($$)=Make(var,switchto,echo $(Param)|cut -d " " -f 1);\ Exec(wmctrl -s $(switchto)); Activate($$)=Macro(GET_WIN_ID);\ Exec(wmctrl -i -a $(winid)); Fullscreen($$)=Macro(GET_WIN_ID);\ Exec(wmctrl -i -r $(winid) -b toggle,fullscreen); Above($$)=Macro(GET_WIN_ID);\ Exec(wmctrl -i -r $(winid) -b toggle,above); Below($$)=Macro(GET_WIN_ID);\ Exec(wmctrl -i -r $(winid) -b toggle,below); Close($$)=Macro(GET_WIN_ID);\ Exec(wmctrl -i -c $(winid)); Back($$)=Set(list,replace,WmCtrl,---);\ Macro(WMCTRL_MENU); Disconnect($$)=Set(disconnect); [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/atril.cfg������������������������������������������������������0000644�0002322�0002322�00000004326�12664332726�021550� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for atril management (Server-mode) % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.4i % DEF_PRESENTATION % ALL_IN_ONE % MEDIACENTER presentation GuiAppName=Atril GuiAppBinary=atril GuiAppRun=echo 'U=`id -u`;P=`pgrep -l -u $U atril`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=atril.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Atril is a simple multi-page document viewer. It can display and print PostScript (PS), Encapsulated PostScript (EPS), DJVU, DVI, XPS and Portable Document Format (PDF) files. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-presentation.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Make(var,open_file,by_value,);\ Make(var,app_name,by_value,Atril);\ Make(var,app_manage_mode,by_value,atril_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,atril); [Mode]=atril : default_presentation_init APP_IS_RUN=\ Make(var,app_run,pgrep -l -u `id -u` atril|head -1|wc -l); [ModeEnd] [Mode]=atril_manage : default_presentation APP_SETUP=\ Make(none); APP_START_IF=\ Make(var,app_run,pgrep -l -u `id -u` atril|head -1|wc -l);\ Exec(if [ "x$(app_run)" = "x0" ]; then cd "$(fbrowser_dir)";atril $(open_file)& fi 2> /dev/null); APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch atril); APP_QUIT=\ Exec(pkill atril);\ Set(title, ); APP_MENU=\ Set(menu,replace,Up,Down,Rotate,Toggle Sidepanel,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Up=\ Emulate(key,Up); Down=\ Emulate(key,Down); Toggle Sidepanel=\ Emulate(key,F9); Rotate=\ Emulate(keydown,Control_L,key,Right,keyup,Control_L); PRES_START=\ Emulate(key,F5); PRES_PREV_PAGE=\ Emulate(key,Page_Up); PRES_NEXT_PAGE=\ Emulate(key,Page_Down); PRES_ZOOM_IN=\ Emulate(keydown,Control_L,key,plus,keyup,Control_L); PRES_ZOOM_OUT=\ Emulate(keydown,Control_L,key,minus,keyup,Control_L); PRES_FIRST_PAGE=\ Emulate(key,Home); PRES_LAST_PAGE=\ Emulate(key,End); PRES_TOGGLE_FULLSCREEN=\ Emulate(key,F11); PRES_REFRESH=\ Emulate(keydown,Control_L,key,R,keyup,Control_L); [ModeEnd] [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/exampleList.cfg������������������������������������������������0000644�0002322�0002322�00000006531�12664332726�022724� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=List example GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of anyRemote Android/J2ME clients list screen customization. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Set(parameter,debug,on);\ Set(status,);\ Set(title,Use menu or buttons);\ Set(icons,List Example,\ 1,fit,2,fit,3,fit,\ 4,fit,5,fit,6,fit,\ 7,fit,8,fit,9,fit,\ *,question,0,fit,#,fit);\ Macro(SET_MENU); * *=Set(text,replace,Help,1 List add items\n2 List replace items\n3 List clear\n4 Small font\n5 Medium font\n6 Large font\n7 White On Black\n8 Yellow On Blue\n9 Black On White) SET_MENU=Set(menu,replace,Add items,Replace items,Clear items,Small font,Medium font,Large font,White On Black, Yellow On Blue, Black On White,Use Icon,No Icon); %SET_MENU=Set(menu,replace,Add items,Replace items,Clear items,Small font,Medium font); %SET_MENU=Set(menu,replace,Add items,Replace items,Clear items); Back($$) =Set(list,close);Macro(SET_MENU); Select($$)=Set(list,close);Macro(SET_MENU); Back =Set(text,close);Macro(SET_MENU); Push($$) =Set(list,close);Set(status,$(Index) - $(Param));Macro(SET_MENU); %1=ExecAndSet(text,add,Example,cat $HOME/text.txt); 1=Macro(Add items) 2=Macro(Replace items) 3=Macro(Clear items) 4=Macro(Small font) 5=Macro(Medium font) 6=Macro(Large font) 7=Macro(White On Black) 8=Macro(Yellow On Blue) 9=Macro(Black On White) % Handlers of menu of "button-screen" Add items=\ Set(list,add,Example,Item 1,Item 2,Item 3);\ Macro(SET_MENU); Replace items=\ Set(list,replace,Example,Item1,Item2,Item3);\ Macro(SET_MENU); Clear items=\ Set(list,clear);\ Macro(SET_MENU); Small font=\ Set(list,font,small);\ Set(list,show);\ Macro(SET_MENU); Medium font=\ Set(list,font,medium);\ Set(list,show);\ Macro(SET_MENU); Large font=\ Set(list,font,large);\ Set(list,show);\ Macro(SET_MENU); White On Black=\ Set(list,bg,0,0,0);\ Set(list,fg,255,255,255);\ Set(list,show);\ Macro(SET_MENU); Black On White=\ Set(list,bg,255,255,255);\ Set(list,fg,0,0,0);\ Set(list,show);\ Macro(SET_MENU); Yellow On Blue=\ Set(list,bg,0,128,255);\ Set(list,fg,255,255,0);\ Set(list,show);\ Macro(SET_MENU); Use Icon=\ Set(list,icon,ok);\ Set(list,show);\ Macro(SET_MENU); No Icon=\ Set(list,icon,none);\ Set(list,show);\ Macro(SET_MENU); % Handlers of menu of "list-screen" Add items($$)=\ Exec(echo 'Add items($(Index),$(Param))');\ Set(list,add,Example,Item1,Item2,Item3); Replace items($$)=\ Exec(echo 'Replace items($(Index),$(Param))');\ Set(list,replace,Example,Item1,Item2,Item3); Clear items($$)=\ Exec(echo 'Clear items($(Index),$(Param))');\ Set(list,clear); Use Icon($$)=\ Set(list,icon,ok);\ Set(list,show);\ Macro(SET_MENU); No Icon($$)=\ Set(list,icon,none);\ Set(list,show);\ Macro(SET_MENU); Small font($$) =Set(list,font,small); Medium font($$) =Set(list,font,medium); Large font($$) =Set(list,font,large) White On Black($$)=Set(list,bg,0,0,0);Set(list,fg,255,255,255); Black On White($$)=Set(list,bg,255,255,255);Set(list,fg,0,0,0); Yellow On Blue($$)=Set(list,bg,0,128,255);Set(list,fg,255,255,0); [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/kdetv.cfg������������������������������������������������������0000644�0002322�0002322�00000007245�12120355624�021542� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for kdetv management. (Server-mode) % % STATUS stable % XTEST no % SOUND app % ENV no % ALL_IN_ONE GuiAppName=KdeTV GuiAppBinary=kdetv GuiAppRun=A=`dcop 2> /dev/null|grep kdetv`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=kdetv.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=kdetv is a KDE application to watch TV on the desktop. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Make(mode,kdetv); KDETV_SET_TITLE=ExecAndSet(title,D=`dcop|grep kdetv`;dcop $D KdetvIface channelNumber;dcop $D KdetvIface channelName) KDETV_VOLDOWN=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface volumeDown) KDETV_MUTE =Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface toggleMute) KDETV_VOLUP =Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface volumeUp) KDETV_CHUP =Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface channelDown); KDETV_ZOOM =Exec(D=`dcop|grep kdetv`;dcop $D KdetvViewIface toggleFullScreen) KDETV_CHDN =Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface channelUp); KDETV_MENU=\ Set(menu,replace,Close and exit);Macro(ALLIN1MENU) [Mode]=kdetv (EnterMode)=\ Exec(A=`dcop 2> /dev/null|grep kdetv`;if [ "x$A" = "x" ]; then kdetv 2> /dev/null; fi);\ Macro(KDETV_SET_TITLE);\ Set(status,KdeTV);\ Set(layout,default);\ Set(icons,KdeTV,\ 1,default,2,default,3,default,\ 4,default,5,default,6,default,\ 7,default,8,default,9,default,\ #,refresh,0,default,*,question);\ Macro(KDETV_MENU); Cancel=\ Exec(D=`dcop|grep kdetv`;dcop $D MainApplication-Interface quit);\ Make(exit); Close and exit=\ Macro(Cancel); Back=Set(text,close);\ Macro(KDETV_MENU); 1=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 1);Macro(KDETV_SET_TITLE); 2=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 2);Macro(KDETV_SET_TITLE); 3=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 3);Macro(KDETV_SET_TITLE); 4=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 4);Macro(KDETV_SET_TITLE); 5=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 5);Macro(KDETV_SET_TITLE); 6=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 6);Macro(KDETV_SET_TITLE); 7=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 7);Macro(KDETV_SET_TITLE); 8=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 8);Macro(KDETV_SET_TITLE); 9=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 9);Macro(KDETV_SET_TITLE); 0=Exec(D=`dcop|grep kdetv`;dcop $D KdetvIface processNumberKeyEvent 0);Macro(KDETV_SET_TITLE); * *=Set(text,replace,Help,Press numeric buttons to choose channel) * #=Exec(D=`dcop|grep kdetv`; if [ "x$D" = "x" ]; then kdetv 2> /dev/null; else dcop $D MainApplication-Interface quit; fi) #=Make(mode,kdetv2); [ModeEnd] [Mode]=kdetv2 (EnterMode)=\ Set(icons,KdeTV,\ 1,vol_down,2,mute,3,vol_up,\ 4,prev,5,fullscreen,6,next,\ 7,default,8,default,9,default,\ 0,no,#,refresh,*,question);\ Macro(ALLIN1MENU); (ExitMode)=\ Set(status,KdeTV); Back=\ Set(text,close);\ Macro(KDETV_MENU); 1=Macro(KDETV_VOLDOWN) 2=Macro(KDETV_MUTE) 3=Macro(KDETV_VOLUP) 4=Macro(KDETV_CHUP) 5=Macro(KDETV_ZOOM) 6=Macro(KDETV_CHDN) 7=Make(none) 8=Make(none) 9=Make(none) * *=Set(text,replace,Help,1 - Vol-\n2 - Mute\n3 - Vol+\n4 - Ch-\n5 - Fullscreen\n6 - Ch +\n** - Help\n# - Direct) 0=Exec(D=`dcop 2> /dev/null|grep kdetv`;dcop $D MainApplication-Interface quit) #=Make(mode,kdetv) [ModeEnd] % Aliases for AverMedia IR remote KEY_VOLUMEDOWN=Macro(KDETV_VOLDOWN) KEY_MIN_INTERESTING=Macro(KDETV_MUTE) KEY_VOLUMEUP=Macro(KDETV_VOLUP) KEY_CHANNELUP=Macro(KDETV_CHUP) KEY_CHANNELDOWN=Macro(KDETV_CHDN) KEY_ZOOM=Macro(KDETV_ZOOM) [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/xbmc.cfg�������������������������������������������������������0000644�0002322�0002322�00000011405�12123520170�021340� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % custom anyremote cfg for basic XBMC Media Center use % % Thanks to Everthon Valadão (http://mobilevs.blogspot.com) for this cfg.file % % STATUS unknown % XTEST yes % SOUND mixer % ENV no % ALL_IN_ONE GuiAppName=XBox_Media_Center GuiAppBinary=xbmc GuiAppRun= A=`ps -ef|grep xbmc|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=xbmc.png GuiAppType=Application GuiAppProtocols=Server %curl --data-binary '{"jsonrpc": "2.0", "method": "Player.GetActivePlayers", "id": 1}' -H 'content-type: application/json;' http://localhost:8080/jsonrpc %curl --data-binary '{"jsonrpc": "2.0", "method": "Player.Play' -H 'content-type: application/json;' http://localhost:8080/jsonrpc %curl --data-binary '{"jsonrpc": "2.0", "method": "Player.GetItem", "params": { "properties": ["title", "album", "artist", "season", "episode", "duration", "showtitle", "tvshowid", "thumbnail", "file", "fanart", "streamdetails"], "playerid": 1 }, "id": "VideoGetItem"}' -H 'content-type: application/json;' http://localhost:8080/jsonrpc %curl --data-binary '{"jsonrpc": "2.0", "method": "Player.GetItem", "params": { "properties": ["title", "album", "artist", "file", "fanart"], "playerid": 0 }, "id": "AudioGetItem"}' -H 'content-type: application/json;' http://localhost:8080/jsonrpc %curl --data-binary '{"jsonrpc": "2.0", "method": "Playlist.GetPlaylists", "id": 1}' -H 'content-type: application/json;' http://localhost:8080/jsonrpc [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(SETUP_DEFAULT_MIXER); (Connect)=\ Make(mode,xbmc); [Mode]=xbmc (EnterMode)=\ Set(icons,XBMC,1,play,2,up,3,refresh,4,left,5,plus,6,right,7,fit,8,down,9,fullscreen,*,question,0,folder,#,no);\ Set(layout,default,keypad_only);\ Macro(XBMC_MENU);\ Macro(XBMC_RUN); Cancel=\ Make(exit); XBMC_MENU=\ Set(menu,replace,Previous,Info,Exit Menu,PowerMgmt);\ Macro(ALLIN1MENU) Previous=\ Macro(XBMC_CANCEL); Exit Menu=\ Macro(XBMC_EXIT_MENU); Info=\ Macro(XBMC_INFO); Back=\ Set(text,close);\ Macro(XBMC_MENU) 1=Make(mode,xbmc_player); 2=Macro(XBMC_UP); 3=Macro(XBMC_CANCEL); 4=Macro(XBMC_LEFT); 5=Macro(XBMC_OK); 6=Macro(XBMC_RIGHT); 7=Macro(XBMC_INFO) 8=Macro(XBMC_DOWN); 9=Macro(XBMC_ZOOM) * *=Set(text,replace,Help,1 Switch to player mode\n2 Up\n3 Previous Menu\n4 Left\n5 Ok (Enter)\n6 Right\n7 Information\n8 Down\n9 Zoom\n** Help\n*1 Options\n*0 Windowed/Fullscreen\n*# Run/Quit); * 0=Macro(XBMC_FULLSCREEN); * 1=Macro(XBMC_OPTIONS); * #=Macro(XBMC_RUN_STOP) %* 2=Emulate(key,Page_Up) %* 8=Emulate(key,Page_Down) 0=Macro(XBMC_MAINMENU); #=Macro(XBMC_EXIT_MENU); % redefine joystick keys UP =Macro(XBMC_UP) DOWN =Macro(XBMC_DOWN) LEFT =Macro(XBMC_LEFT) RIGHT =Macro(XBMC_RIGHT) FIRE =Macro(XBMC_OK); XBMC_RUN=\ Exec(P=`ps -ef|grep "xbmc/xbmc.bin"|grep -v grep|grep -v edit|grep -v anyremote`; if [ "x$P" = "x" ]; then xbmc& fi); XBMC_RUN_STOP=\ Exec(P=`ps -ef|grep "xbmc/xbmc.bin"|grep -v grep|grep -v edit|grep -v anyremote`; if [ "x$P" = "x" ]; then xbmc& else killall xbmc; fi); XBMC_UP =Emulate(key,Up); XBMC_DOWN =Emulate(key,Down); XBMC_LEFT =Emulate(key,Left); XBMC_RIGHT =Emulate(key,Right); XBMC_OK =Emulate(key,Return) XBMC_INFO =Emulate(key,i) XBMC_VISUALIZAT =Emulate(key,Tab) XBMC_ZOOM =Emulate(key,z) XBMC_FULLSCREEN =Emulate(key,backslash) XBMC_ACTIONS =Emulate(key,m) XBMC_OPTIONS =Emulate(key,c) XBMC_MAINMENU =Emulate(key,Escape) XBMC_CANCEL =Emulate(key,BackSpace) XBMC_EXIT_MENU =Emulate(key,s) [ModeEnd] [Mode]=xbmc_player (EnterMode)=\ Set(layout,default);\ Set(status,);\ Set(title,);\ Set(icons,XBMC,\ 1,vol_down,\ 2,mute,\ 3,vol_up,\ 4,rewind,\ 5,play,\ 6,forward,\ 7,prev,\ 8,stop,\ 9,next,\ *,question,\ 0,pause,\ #,file);\ Set(menu,replace,Subtitle); Subtitle=Emulate(key,t) 1=Macro(DEFAULT_VOLUME_DOWN) 2=Macro(DEFAULT_TOGGLE_MUTE) 3=Macro(DEFAULT_VOLUME_UP) % Rewind-Play-FastForward 4=Emulate(key,R); 5=Emulate(key,P); 6=Emulate(key,F); % Prev-Stop-Next 7=Emulate(key,comma); 8=Emulate(key,X);Make(mode,xbmc); 9=Emulate(key,period); % Help-Pause-Switch to control mode * *=Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n4 Rwd\n5 Play\n6 FF\n7 Prew\n8 Stop\n9 Next\n* * Help\n0 Pause\n# Switch to control mode); 0=Emulate(key,space); #=Make(mode,xbmc); %XBMC_VOL_DOWN=Macro(DEFAULT_VOLUME_DOWN) %XBMC_MUTE=Macro(DEFAULT_TOGGLE_MUTE) %XBMC_VOL_UP=Macro(DEFAULT_VOLUME_UP) %% XBMC_VOL_UP =Emulate(key,plus,key,plus,key,plus) %% XBMC_VOL_DOWN =Emulate(key,minus,key,minus,key,minus) %XBMC_PLAY_PAUSE =Emulate(key,P) %XBMC_STOP =Emulate(key,X) %XBMC_PREVIOUS =Emulate(key,comma) %XBMC_NEXT =Emulate(key,period) %XBMC_SUBTITLE =Emulate(key,t) %XBMC_RWD =Emulate(key,r) [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/mouse.cfg������������������������������������������������������0000644�0002322�0002322�00000003565�12073567677�021602� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for mouse emulation % % STATUS stable % XTEST yes % SOUND no % ENV no % ALL_IN_ONE GuiAppName=Mouse test GuiAppBinary=true GuiAppIcon=mouse.png GuiAppType=Example GuiAppProtocols=Server GuiAppDesc=Mouse emulation [Protocol]=Server % redefine joystick keys UP=Macro(5) DOWN=Macro(8) LEFT=Macro(4) RIGHT=Macro(6) FIRE=Macro(1) (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Make(mode,mouse); [Mode]=mouse Cancel=Make(exit); Back=Set(text,close);\ Macro(MOU_MENU); MOU_MENU=Set(menu,replace,);Macro(ALLIN1MENU); (EnterMode)=Set(icons,Mouse,0,default,1,play,2,play,3,play,4,left,5,up,6,right,7,play,8,down,9,play,*,question,0,minus,#,pause);\ Set(layout,default,keypad_only);\ Set(status,Mouse emulation);\ Set(title,);\ Make(var,AutoRepeat,by_value,true);\ Macro(MOU_MENU); (ExitMode)=Make(var,AutoRepeat,by_value,false); 1=Make(var,AutoRepeat,by_value,false);\ Emulate(mouse,1);\ Make(var,AutoRepeat,by_value,true); 2=Make(var,AutoRepeat,by_value,false);\ Emulate(mouse,2);\ Make(var,AutoRepeat,by_value,true); 3=Make(var,AutoRepeat,by_value,false);\ Emulate(mouse,3);\ Make(var,AutoRepeat,by_value,true); 4=Emulate(mousermove,-10,0) 5=Emulate(mousermove,0,-10) 6=Emulate(mousermove,10,0) 7=Make(var,AutoRepeat,by_value,false);\ Emulate(mouse,4);\ Make(var,AutoRepeat,by_value,true); 8=Emulate(mousermove,0,10) 9=Make(var,AutoRepeat,by_value,false);\ Emulate(mouse,5);\ Make(var,AutoRepeat,by_value,true); * *=Set(text,replace,Help,1 - Left Click\n2 - CenterClick\n3 - RightClick\n4 - Move Left\n5 - Move Up\n6 - Move Right\n7 - WheelUp\n8 - Move Down\n9 - WheelDown\n** - Help\n0 - Space\n# - Left DblClick); 0=Make(var,AutoRepeat,by_value,false);\ Emulate(key,space)\ Make(var,AutoRepeat,by_value,true); #=Make(var,AutoRepeat,by_value,false);\ Emulate(mousedblclick);\ Make(var,AutoRepeat,by_value,true); [ModeEnd] [End] �������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/exampleLayout.cfg����������������������������������������������0000644�0002322�0002322�00000005675�12664332726�023276� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for customization of GUI of Java client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Main screen layout configuration example GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Example of anyRemote Android/J2ME clients main screen layout customization. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=\ Set(parameter,debug,on);\ Make(var,cover_size,by_value,64);\ Make(var,stage,by_value,On connect);\ Set(title,Example of anyRemote client main screen layout customization);\ Macro(Default);\ Set(icons,Icons Example,\ 1,vol_down,2,mute,3,vol_up,\ 4,rewind,5,play,6,forward,\ 7,prev,8,stop,9,refresh,\ *,question,0,pause,#,no);\ Set(volume,60);\ Make(var,dummy_sleep,sleep 1;echo 1);\ Get(screen_size);\ Get(cover_size);\ Get(is_exists,cover,cover-audio);\ Macro(SET_MENU); * *=Set(text,replace,Help,Use menu or buttons,\n0 - set defaults: 3x4 - running text\n1 - fullscreen on\n2 - vibrate\n3 - fullscreen off\n0 - clear cover\nNote: Android client does not supports running text,\n keypad/joystick-only setup and volume bar); SET_MENU=\ Set(menu,replace,Default,3x4,7x1,Static Text,Running Text,Joystick Only,Keypad Only,Volume Bar,Fullscreen,Clean Covers); SET_LAYOUT=\ Set(layout,$(vlayout),$(vticker));\ Set(status,$(vlayout) - $(vticker)); Back=Set(text,close);Macro(SET_MENU); Default=\ Make(var,vlayout,by_value,default);\ Make(var,vticker,by_value,ticker);\ Macro(SET_LAYOUT); 3x4=\ Make(var,vlayout,by_value,3x4);\ Macro(SET_LAYOUT);\ Make(var,stage,by_value,On 3x4 layout);\ Get(is_exists,cover,cover-audio); 7x1=\ Set(cover,by_name,cover-audio);\ Make(var,vlayout,by_value,7x1);\ Macro(SET_LAYOUT);\ Make(var,stage,by_value,On 7x1 layout);\ Get(is_exists,cover,cover-audio); CoverSize($$)=\ Make(var,cover_size,by_value,$(Index));\ Exec(echo "$(stage): Cover Size $(Index)"); Ping=\ Exec(echo "$(stage): PING"); SizeX($$)=\ Exec(echo "$(stage): X Size $(Index)"); SizeY($$)=\ Exec(echo "$(stage): Y Size $(Index)"); CoverSize($$)=\ Exec(echo "$(stage): Cover Size $(Index)"); CoverExists($$)=\ Exec(echo "$(stage): Cover exists $(Param)"); CoverNotExists($$)=\ Exec(echo "$(stage): Cover does not exists $(Param)"); Static Text=\ Make(var,vticker,by_value,noticker);Macro(SET_LAYOUT); Running Text=\ Make(var,vticker,by_value,ticker);Macro(SET_LAYOUT); Joystick Only=\ Set(layout,$(vlayout),$(vticker),keypad_only); Keypad Only=\ Set(layout,$(vlayout),$(vticker),joystick_only); Volume Bar=\ Set(layout,$(vlayout),$(vticker),volume); Fullscreen=\ Set(fullscreen,toggle); Clean Covers=\ Set(image,remove,covers); 0=Macro(Default); 1=Set(fullscreen,on); 2=Set(vibrate,5); 3=Set(fullscreen,off); 9=Set(disconnect); #=Make(exit); [End] �������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/mplayer.cfg����������������������������������������������������0000644�0002322�0002322�00000007550�13226200116�022066� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for mplayer management. (Server-mode) % % Thanks Kristjan Ugrin for corrections. % % STATUS stable % XTEST no % ENV no % SOUND app % FBROWSER v.4i % DEF_VIDEO_PLAYER % ALL_IN_ONE % MEDIACENTER video GuiAppName=MPlayer GuiAppBinary=mplayer GuiAppRun=A=`ps -ef|grep mplayer|grep -v kmplayer|grep -v gmplayer|grep -v grep|grep -v edit|grep -v anyremote`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=mplayer.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=A movie player. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-video-player.cfg);\ Make(var,app_name,by_value,MPlayer);\ Make(var,open_file,by_value,);\ Make(var,do_app_init,by_value,1);\ Make(var,mplayer_pure_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get mplayer_pure_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi);\ Make(var,app_manage_mode,by_value,mplayer_$(mplayer_pure_layout)); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set mplayer_pure_layout $(mplayer_pure_layout)); (Connect)=\ Make(mode,mplayer_init); [Mode]=mplayer_init : default_video_player_init APP_IS_RUN=\ Make(var,app_run,ID=`id -u`;A=`ps -fu $ID|grep "mplayer -input"|grep -v kmplayer|grep -v gmplayer|grep -v grep|grep -v edit|grep -v anyremote|grep "mplayer/fifo"`; if [ "x$A" = "x" ]; then echo 0; else echo 1; fi); [ModeEnd] [Mode]=mplayer_general APP_SETUP=\ Exec(if [ -d $HOME/.mplayer ]; then true; else mkdir $HOME/.mplayer; fi; if [ -p $HOME/.mplayer/fifo ]; then true; else mkfifo $HOME/.mplayer/fifo; fi) APP_START_IF=\ Set(title,$(open_file));\ Make(var,app_run,ID=`id -u`;A=`ps -fu $ID|grep "mplayer -input"|grep -v kmplayer|grep -v gmplayer|grep -v grep|grep -v edit|grep -v anyremote|grep "mplayer/fifo"`; if [ "x$A" = "x" ]; then echo 0; else echo 1; fi);\ Exec(if [ "x$(app_run)" = "x0" ]; then cd "$(fbrowser_dir)";mplayer -input file=$HOME/.mplayer/fifo $(open_file) > /dev/null & fi); % Application window should be present in output of "wmctrl -l" APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch mplayer); APP_QUIT=\ Exec(P=`ps -ef|grep "mplayer -input"|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" != "x" ]; then echo quit > $HOME/.mplayer/fifo; fi);\ Exec(pkill -u `id -u` mplayer); APP_FULLSCREEN=\ Exec(echo vo_fullscreen > $HOME/.mplayer/fifo); PLAY=Exec(echo pause > $HOME/.mplayer/fifo); RWD=Exec(echo "seek -10" > $HOME/.mplayer/fifo); FF=Exec(echo "seek 10" > $HOME/.mplayer/fifo); STOP=Exec(echo pause > $HOME/.mplayer/fifo); PAUSE=Exec(echo pause > $HOME/.mplayer/fifo); Layout 3x4=\ Make(mode,mplayer_3x4); Layout 5x1=\ Make(mode,mplayer_5x1); [ModeEnd] [Mode]=mplayer_3x4 : mplayer_general,default_video_player % (EnterMode) by Utils/aliases-server-video-player.cfg % Override 1=Exec(echo "volume -10" > $HOME/.mplayer/fifo) 2=Exec(echo mute > $HOME/.mplayer/fifo) 3=Exec(echo "volume +10" > $HOME/.mplayer/fifo) APP_POST_SETUP=\ Make(var,mplayer_pure_layout,by_value,3x4);\ Make(var,app_manage_mode,by_value,mplayer_$(mplayer_pure_layout)); APP_MENU=\ Set(menu,replace,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); [ModeEnd] [Mode]=mplayer_5x1 : mplayer_general,default_video_player_5x1 APP_POST_SETUP=\ Make(var,mplayer_pure_layout,by_value,5x1);\ Make(var,app_manage_mode,by_value,mplayer_$(mplayer_pure_layout)); APP_MENU=\ Set(menu,replace,Help,Mute,Quit,Fullscreen,Files,Layout 3x4,IMDB,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % Override VOL-=\ Exec(echo "volume -10" > $HOME/.mplayer/fifo); Mute=\ Exec(echo mute > $HOME/.mplayer/fifo); VOL+=\ Exec(echo "volume +10" > $HOME/.mplayer/fifo); Fullscreen=\ Macro(APP_FULLSCREEN); [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/gwenview.cfg���������������������������������������������������0000644�0002322�0002322�00000007375�12664332726�022277� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Gwenview/KDE4 management. (Server-mode) % % STATUS non-stable % XTEST no % SOUND no % ENV no % FBROWSER v.4i % IPC DBUS % DEF_PIX_VIEWER % ALL_IN_ONE % MEDIACENTER photo GuiAppName=Gwenview/KDE4 GuiAppBinary=gwenview GuiAppVersion=echo 'V=`gwenview -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi'|sh -s GuiAppRun=echo 'A=`pgrep gwenview`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=gwenview.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Gwenview is a fast and easy to use image viewer for KDE. This configuration file is for Gwenview/KDE4. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-pix-viewer.cfg);\ Make(var,app_name,by_value,Gwenview);\ Make(var,open_file,by_value,);\ Make(var,kde4_app,by_value,gwenview);\ Macro(TEST_KDE4_APP);\ Make(var,app_manage_mode,by_value,gwenview_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,gwenview_init); [Mode]=gwenview_init: default_pixviewer_init APP_IS_RUN=\ Make(var,app_run,pgrep -u `id -u` gwenview|head -1|wc -l); [ModeEnd] [Mode]=gwenview_manage : default_pixviewer % (EnterMode) by Utils/aliases-server-pix-viewer.cfg GETPID=\ Make(var,gw_pid,pgrep -u `id -u` gwenview|head -1); APP_START_IF=\ Make(var,app_run,pgrep -u `id -u` gwenview|head -1|wc -l);\ Exec(if [ "x$(app_run)" = "x0" ]; then cd "$(fbrowser_dir)";gwenview $(open_file)& fi 2> /dev/null); APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch gwenview); APP_QUIT=\ Macro(GETPID);\ Exec(if [ "x$(gw_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.gwenview-$(gw_pid) /MainApplication org.kde.KApplication.quit; fi) APP_FULLSCREEN=\ Macro(GETPID);\ Exec(if [ "x$(gw_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.gwenview-$(gw_pid) /gwenview/MainWindow_1/actions/fullscreen com.trolltech.Qt.QAction.trigger; fi) PIX_PREV=\ Macro(GETPID);\ Exec(if [ "x$(gw_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.gwenview-$(gw_pid) /gwenview/MainWindow_1/actions/go_previous com.trolltech.Qt.QAction.trigger; fi) PIX_NEXT=\ Macro(GETPID);\ Exec(if [ "x$(gw_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.gwenview-$(gw_pid) /gwenview/MainWindow_1/actions/go_next com.trolltech.Qt.QAction.trigger; fi) PIX_FIRST=\ Macro(GETPID);\ Exec(if [ "x$(gw_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.gwenview-$(gw_pid) /gwenview/MainWindow_1/actions/go_first com.trolltech.Qt.QAction.trigger; fi) PIX_LAST=\ Macro(GETPID);\ Exec(if [ "x$(gw_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.gwenview-$(gw_pid) /gwenview/MainWindow_1/actions/go_last com.trolltech.Qt.QAction.trigger; fi) PIX_ZOOM_IN=\ Macro(GETPID);\ Exec(if [ "x$(gw_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.gwenview-$(gw_pid) /gwenview/MainWindow_1/actions/view_zoom_in com.trolltech.Qt.QAction.trigger; fi) PIX_ZOOM_OUT=\ Macro(GETPID);\ Exec(if [ "x$(gw_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.gwenview-$(gw_pid) /gwenview/MainWindow_1/actions/view_zoom_out com.trolltech.Qt.QAction.trigger; fi) PIX_FIT=\ Macro(GETPID);\ Exec(if [ "x$(gw_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.gwenview-$(gw_pid) /gwenview/MainWindow_1/actions/view_zoom_to_fit com.trolltech.Qt.QAction.trigger; fi) PIX_ROTATE=\ Macro(GETPID);\ Exec(if [ "x$(gw_pid)" != "x" ]; then dbus-send --type=method_call --dest=org.kde.gwenview-$(gw_pid) /gwenview/MainWindow_1/actions/rotate_left com.trolltech.Qt.QAction.trigger; fi) [ModeEnd] [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/kplayer.cfg����������������������������������������������������0000644�0002322�0002322�00000010132�12673224605�022070� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for kplayer management. (Server-mode) % % STATUS stable % XTEST no % SOUND app % ENV no % FBROWSER v.4i % DEF_VIDEO_PLAYER % ALL_IN_ONE % MEDIACENTER video GuiAppName=Kplayer GuiAppBinary=kplayer GuiAppRun=echo 'A=`qdbus 2> /dev/null|grep kplayer`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=kplayer.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=KPlayer is a KDE multimedia player. GuiAppVersion=echo 'V=`kplayer -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi'|sh -s [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-video-player.cfg);\ Make(var,kde4_app,by_value,kplayer);\ Macro(TEST_KDE4_APP);\ Make(var,app_name,by_value,Kplayer);\ Make(var,open_file,by_value,);\ Make(var,do_app_init,by_value,1);\ Make(var,kplayer_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get kplayer_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi);\ Make(var,app_manage_mode,by_value,kplayer_$(kplayer_layout)); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set kplayer_layout $(kplayer_layout)); (Connect)=\ Make(mode,kplayer_init); [Mode]=kplayer_init : default_video_player_init APP_IS_RUN=\ Make(var,app_run,A=`qdbus 2> /dev/null|grep kplayer`; if [ "x$A" = "x" ]; then echo 0; else echo 1; fi); [ModeEnd] [Mode]=kplayer_general APP_START_IF=\ Set(title,$(open_file));\ Exec(P=`qdbus|grep kplayer`;\ if [ "x$P" = "x" ]; then \ cd "$(fbrowser_dir)"; kplayer $(open_file) 2> /dev/null & \ fi); % Application window should be present in output of "wmctrl -l" APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch kplayer); APP_QUIT=\ Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction file_quit 2> /dev/null;killall mplayer 2> /dev/null); APP_FULLSCREEN=\ Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction view_full_screen > /dev/null); PLAY=\ Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction player_play > /dev/null); RWD=\ Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction player_backward > /dev/null) FF=\ Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction player_forward > /dev/null) STOP=\ Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction player_stop > /dev/null) PAUSE=\ Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction player_pause > /dev/null) Layout 3x4=\ Make(mode,kplayer_3x4); Layout 5x1=\ Make(mode,kplayer_5x1); [ModeEnd] [Mode]=kplayer_3x4 : kplayer_general,default_video_player % (EnterMode) by Utils/aliases-server-video-player.cfg % Override 1=Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction audio_volume_down > /dev/null) 2=Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction audio_mute > /dev/null) 3=Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction audio_volume_up > /dev/null) APP_POST_SETUP=\ Make(var,kplayer_layout,by_value,3x4);\ Make(var,app_manage_mode,by_value,kplayer_$(kplayer_layout)); APP_MENU=\ Set(menu,replace,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); [ModeEnd] [Mode]=kplayer_5x1 : kplayer_general,default_video_player_5x1 APP_POST_SETUP=\ Make(var,kplayer_layout,by_value,5x1);\ Make(var,app_manage_mode,by_value,kplayer_$(kplayer_layout)); APP_MENU=\ Set(menu,replace,Help,Mute,Quit,Fullscreen,Files,Layout 3x4,IMDB,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % Override VOL-=\ Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction audio_volume_down > /dev/null) Mute=\ Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction audio_mute > /dev/null) VOL+=\ Exec(qdbus net.sourceforge.kplayer /kplayer/MainWindow_1 activateAction audio_volume_up > /dev/null) Fullscreen=\ Macro(APP_FULLSCREEN); [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/myth-tv.cfg����������������������������������������������������0000644�0002322�0002322�00000002061�12073567677�022050� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % custom anyremote cfg for basic mythtv use % % Thanks to Tim Hicks (http://www.tim.id.au/blog/?p=11) for this cfg.file % % STATUS unknown % XTEST yes % SOUND no % ENV no GuiAppName=MythTv GuiAppIcon=mythtv.png GuiAppType=Example GuiAppProtocols=Server GuiAppDesc=MythTV is a homebrew PVR [Protocol]=Server % redefine joystick keys UP=Macro(2) DOWN=Macro(8) LEFT=Macro(4) RIGHT=Macro(6) FIRE=Macro(5) (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Set(icons,MythTV,1,no,2,up,3,default,4,left,5,down,6,right,7,pause,8,down,9,down,*,question,0,down,#,plus);\ Set(layout,default,keypad_only); Cancel=Make(exit); Back=Set(text,close); 1=Emulate(key,Escape) 2=Emulate(key,Up) 4=Emulate(key,Left) 5=Emulate(key,Return) 6=Emulate(key,Right) 7=Emulate(key,p) 8=Emulate(key,Down) 9=Emulate(key,9) * *=Set(text,replace,Help,1 - Escape\n2 - Up\n4 - Move Left\n5 - Return\n6 - Move Right\n7 - Play\n8 - Move Down\n9 - 9\n* * - Help\n0 - 0\n# * - Vol. down\n# # - Vol. up) 0=Emulate(key,0) # *=Emulate(key,bracketleft) # #=Emulate(key,bracketright) [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/evince.cfg�����������������������������������������������������0000644�0002322�0002322�00000004333�12664332726�021704� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for evince management (Server-mode) % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.4i % DEF_PRESENTATION % ALL_IN_ONE % MEDIACENTER presentation GuiAppName=Evince GuiAppBinary=evince GuiAppRun=echo 'U=`id -u`;P=`pgrep -l -u $U evince|grep -v evinced`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=evince.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Evince is a document viewer for multiple document formats. It currently supports pdf, postscript, djvu, tiff and dvi. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-presentation.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Make(var,open_file,by_value,);\ Make(var,app_name,by_value,Evince);\ Make(var,app_manage_mode,by_value,evince_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,evince); [Mode]=evince : default_presentation_init APP_IS_RUN=\ Make(var,app_run,pgrep -l -u `id -u` evince|grep -v evinced|head -1|wc -l); [ModeEnd] [Mode]=evince_manage : default_presentation APP_SETUP=\ Make(none); APP_START_IF=\ Make(var,app_run,pgrep -l -u `id -u` evince|grep -v evinced|head -1|wc -l);\ Exec(if [ "x$(app_run)" = "x0" ]; then cd "$(fbrowser_dir)";evince $(open_file)& fi 2> /dev/null); APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch evince); APP_QUIT=\ Exec(pkill evince);\ Set(title, ); APP_MENU=\ Set(menu,replace,Up,Down,Rotate,Toggle Sidepanel,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Up=\ Emulate(key,Up); Down=\ Emulate(key,Down); Toggle Sidepanel=\ Emulate(key,F9); Rotate=\ Emulate(keydown,Control_L,key,Right,keyup,Control_L); PRES_START=\ Emulate(key,F5); PRES_PREV_PAGE=\ Emulate(key,Page_Up); PRES_NEXT_PAGE=\ Emulate(key,Page_Down); PRES_ZOOM_IN=\ Emulate(keydown,Control_L,key,plus,keyup,Control_L); PRES_ZOOM_OUT=\ Emulate(keydown,Control_L,key,minus,keyup,Control_L); PRES_FIRST_PAGE=\ Emulate(key,Home); PRES_LAST_PAGE=\ Emulate(key,End); PRES_TOGGLE_FULLSCREEN=\ Emulate(key,F11); PRES_REFRESH=\ Emulate(keydown,Control_L,key,R,keyup,Control_L); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/eog.cfg��������������������������������������������������������0000644�0002322�0002322�00000004046�12664332726�021206� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Eye-of-gnome (http://projects.gnome.org/eog/) management. (Server-mode) % % STATUS stable % XTEST yes % SOUND no % ENV no % FBROWSER v.4i % DEF_PIX_VIEWER % ALL_IN_ONE % MEDIACENTER photo GuiAppName=Eye of gnome GuiAppBinary=eog GuiAppRun=echo 'A=`ps -ef|grep eog|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=eog.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=The Eye of GNOME image viewer is the official image viewer for the GNOME Desktop environment. With it, you can view single image files, as well as large image collections. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-pix-viewer.cfg);\ Make(var,app_name,by_value,Eye Of Gnome);\ Make(var,open_file,by_value,);\ Make(var,app_manage_mode,by_value,eog_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,eog_init); [Mode]=eog_init : default_pixviewer_init APP_IS_RUN=\ Make(var,app_run,pgrep -u `id -u` eog|head -1|wc -l); [ModeEnd] [Mode]=eog_manage : default_pixviewer % (EnterMode) by Utils/aliases-server-pix-viewer.cfg APP_START_IF=\ Make(var,app_run,pgrep -u `id -u` eog|head -1|wc -l));\ Exec(if [ "x$(app_run)" = "x0" ]; then cd "$(fbrowser_dir)";eog $(open_file)& fi 2> /dev/null); APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch eog); APP_QUIT=\ Exec(pkill -u `id -u` eog); APP_FULLSCREEN=Emulate(key,F11) PIX_PREV=Emulate(keydown,Alt_L,key,Left,keyup,Alt_L) PIX_NEXT=Emulate(keydown,Alt_L,key,Right,keyup,Alt_L) PIX_FIRST=Emulate(keydown,Alt_L,key,Home,keyup,Alt_L) PIX_LAST=Emulate(keydown,Alt_L,key,End,keyup,Alt_L) PIX_ZOOM_IN=Emulate(keydown,Control_L,key,KP_Add,keyup,Control_L) PIX_ZOOM_OUT=Emulate(keydown,Control_L,key,minus,keyup,Control_L) PIX_FIT=Emulate(keydown,Control_L,key,0,keyup,Control_L) PIX_ROTATE=Emulate(keydown,Control_L,key,R,keyup,Control_L) [ModeEnd] [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/mpv.cfg��������������������������������������������������������0000644�0002322�0002322�00000005551�13226200116�021216� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for mpv management. (Server-mode) % % STATUS stable % XTEST yes % ENV no % SOUND mixer % FBROWSER v.4i % DEF_VIDEO_PLAYER % ALL_IN_ONE % MEDIACENTER video GuiAppName=MPV GuiAppBinary=mpv GuiAppRun=A=`ps -ef|grep mpv|grep -v grep|grep -v edit|grep -v anyremote`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=mpv.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=A free, open source, and cross-platform media player (https://mpv.io/) [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-video-player.cfg);\ Make(var,app_name,by_value,MPV);\ Make(var,open_file,by_value,);\ Make(var,do_app_init,by_value,1);\ Make(var,mpv_pure_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get mpv_pure_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi);\ Make(var,app_manage_mode,by_value,mpv_$(mpv_pure_layout)); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set mpv_pure_layout $(mpv_pure_layout)); (Connect)=\ Make(mode,mpv_init); [Mode]=mpv_init : default_video_player_init APP_IS_RUN=\ Make(var,app_run,\ ID=`id -u`;A=`ps -fu $ID|grep mpv|grep -v grep|grep -v edit|grep -v anyremote`; \ if [ "x$A" = "x" ]; then echo 0; else echo 1; fi); [ModeEnd] [Mode]=mpv_general APP_START_IF=\ Set(title,$(open_file));\ Make(var,app_run,\ ID=`id -u`;A=`ps -fu $ID|grep mpv|grep -v grep|grep -v edit|grep -v anyremote`; \ if [ "x$A" = "x" ]; then echo 0; else echo 1; fi);\ Exec(if [ "x$(app_run)" = "x0" ]; then cd "$(fbrowser_dir)";mpv $(open_file) > /dev/null & fi); % Application window should be present in output of "wmctrl -l" APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch mpv); APP_QUIT=\ Exec(pkill -u `id -u` mpv); APP_FULLSCREEN=\ Emulate(key,f) PLAY=\ Emulate(key,space) RWD=\ Emulate(key,Left); FF=\ Emulate(key,Right); STOP=\ Emulate(key,space); PAUSE=\ Emulate(key,space); Layout 3x4=\ Make(mode,mpv_3x4); Layout 5x1=\ Make(mode,mpv_5x1); [ModeEnd] [Mode]=mpv_3x4 : mpv_general,default_video_player % (EnterMode) by Utils/aliases-server-video-player.cfg APP_POST_SETUP=\ Make(var,mpv_pure_layout,by_value,3x4);\ Make(var,app_manage_mode,by_value,mpv_$(mpv_pure_layout)); APP_MENU=\ Set(menu,replace,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); [ModeEnd] [Mode]=mpv_5x1 : mpv_general,default_video_player_5x1 APP_POST_SETUP=\ Make(var,mpv_pure_layout,by_value,5x1);\ Make(var,app_manage_mode,by_value,mpv_$(mpv_pure_layout)); APP_MENU=\ Set(menu,replace,Help,Mute,Quit,Fullscreen,Files,Layout 3x4,IMDB,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Fullscreen=\ Macro(APP_FULLSCREEN); [ModeEnd] [End] �������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/clementine.cfg�������������������������������������������������0000644�0002322�0002322�00000016472�12130537311�022546� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for clementine (http://www.clementine-player.org/) management. (Server-mode) % % Thanks Kristjan Ugrin for corrections. % % TODO: support DBUS % http://code.google.com/p/clementine-player/wiki/MPRIS % % STATUS stable % XTEST no % ENV no % SOUND mixer % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio GuiAppName=Clementine GuiAppBinary=clementine GuiAppRun=echo 'A=`ps -ef|grep clementine|grep -v grep|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=clementine.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=A music player. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,player_name,by_value,Clementine);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,clementine_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get clementine_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set clementine_layout $(clementine_layout)); (Connect)=\ Make(mode,clementine_$(clementine_layout)); [Mode]=clementine_general PLAY=\ Exec(clementine -t);\ Macro(CLEMENTINE_TITLE,sleep 1;echo 0);\ Timer(CLEMENTINE_TITLE,$(UpdateTimeout),0); RWD=\ Exec(clementine --seek-by -10); FF=\ Exec(clementine --seek-by +10); PREV=\ Exec(clementine -r);\ Macro(CLEMENTINE_TITLE); STOP=\ Timer(CLEMENTINE_TITLE,cancel);\ Exec(clementine -s);\ Set(title,);\ Set(status,); NEXT=\ Exec(clementine -f);\ Macro(CLEMENTINE_TITLE); PAUSE=\ Exec(clementine -u); RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh clementine); RUN_OR_QUIT=\ Exec(P=`ps auxc|grep clementine`;\ if [ "x$P" = "x" ]; then clementine & else killall clementine; fi); APP_QUIT=\ Exec(killall clementine); CLEMENTINE_TITLE_GENERAL=\ Make(var,clementine_index,qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetCurrentTrack);\ Make(var,clementine_artist,qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetMetadata $(clementine_index)|grep artist|sed "s/artist: //");\ Make(var,clementine_album,qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetMetadata $(clementine_index)|grep album|sed "s/album: //");\ Make(var,clementine_song,qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetMetadata $(clementine_index)|grep title|sed "s/title: //");\ Set(title,$(clementine_artist) - $(clementine_album));\ Set(status,$(clementine_song)); Shuffle=\ Exec(P=`qdbus org.mpris.clementine /org/mpris/MediaPlayer2 Shuffle`; \ if [ "x$P" = "xtrue" ]; \ then \ qdbus org.mpris.clementine /org/mpris/MediaPlayer2 Shuffle false & \ else \ qdbus org.mpris.clementine /org/mpris/MediaPlayer2 Shuffle true & \ fi); Repeat=\ Exec(P=`qdbus org.mpris.clementine /org/mpris/MediaPlayer2 LoopStatus`; \ if [ "x$P" = "xNone" ]; \ then \ qdbus org.mpris.clementine /org/mpris/MediaPlayer2 LoopStatus Track & \ else \ qdbus org.mpris.clementine /org/mpris/MediaPlayer2 LoopStatus None & \ fi); Playlist=\ Make(mode,clementine_playlist); APP_PLAY_STATUS=\ Make(var,clementine_status,qdbus org.mpris.clementine /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus);\ Make(var,app_status,if [ "x$(clementine_status)" = "xPlaying" ]; then echo playing; else echo paused; fi); Layout 3x4=\ Make(mode,clementine_3x4); Layout 7x1=\ Make(mode,clementine_7x1); Layout 5x1=\ Make(mode,clementine_5x1); [ModeEnd] [Mode]=clementine_3x4 : clementine_general,default_player % (EnterMode) by Utils/aliases-server-player.cfg APP_MENU=\ Set(menu,replace,Playlist,Shuffle,Repeat,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,clementine_layout,by_value,3x4); % PowerMgmt by Utils/aliases-server.cfg % Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg %1=Exec(clementine --volume-down) %2=Macro(DEFAULT_TOGGLE_MUTE) %3=Exec(clementine --volume-up) CLEMENTINE_TITLE=\ Make(var,clementine_status,qdbus org.mpris.clementine /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus);\ Macro(DO_CLEMENTINE_TITLE,if [ "x$(clementine_status)" = "xPlaying" ]; then echo 0; else echo 1; fi); DO_CLEMENTINE_TITLE=\ Macro(CLEMENTINE_TITLE_GENERAL); [ModeEnd] [Mode]=clementine_cover CLEMENTINE_TITLE=\ Make(var,clementine_status,qdbus org.mpris.clementine /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlaybackStatus);\ Macro(DO_CLEMENTINE_TITLE,if [ "x$(clementine_status)" = "xPlaying" ]; then echo 0; else echo 1; fi); DO_CLEMENTINE_TITLE=\ Macro(CLEMENTINE_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file,\ qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetMetadata $(clementine_index)|grep location|\ sed "s/^[^/]*\//\//;s/\/\/\//\//;s/'/'\\\''/g;s/\//\'\/\'/g;s/$/\'/g;s/^'\//\//");\ Macro(DEFAULT_COVER); [ModeEnd] [Mode]=clementine_7x1 : clementine_general,default_player_7x1,clementine_cover APP_MENU=\ Set(menu,replace,Playlist,Mute,Shuffle,Repeat,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,clementine_layout,by_value,7x1); [ModeEnd] [Mode]=clementine_5x1 : clementine_general,default_player_5x1,clementine_cover APP_MENU=\ Set(menu,replace,Playlist,Mute,Shuffle,Repeat,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,clementine_layout,by_value,5x1); APP_TITLE=\ Macro(CLEMENTINE_TITLE); % no timer PLAY=\ Exec(clementine -t);\ Macro(CLEMENTINE_TITLE,sleep 1;echo 0); [ModeEnd] [Mode]=clementine_nobutton % bug-prone :) 1=Make(mode,clementine_$(clementine_layout)); 2=Make(mode,clementine_$(clementine_layout)); 3=Make(mode,clementine_$(clementine_layout)); 4=Make(mode,clementine_$(clementine_layout)); 5=Make(mode,clementine_$(clementine_layout)); 6=Make(mode,clementine_$(clementine_layout)); 7=Make(mode,clementine_$(clementine_layout)); 8=Make(mode,clementine_$(clementine_layout)); 9=Make(mode,clementine_$(clementine_layout)); *=Make(mode,clementine_$(clementine_layout)); 0=Make(mode,clementine_$(clementine_layout)); #=Make(mode,clementine_$(clementine_layout)); [ModeEnd] [Mode]=clementine_playlist : clementine_nobutton (EnterMode)=\ ExecAndSet(list,replace,Playlist,$(CfgDir)/Utils/getPlayList.sh org.mpris.clementine);\ ExecAndSet(list,select,expr 1 + `qdbus org.mpris.clementine /TrackList GetCurrentTrack`);\ Set(menu,replace,Choose,Delete); Push($$)=\ Macro(Choose($$)) Choose($$)=\ Exec(qdbus org.mpris.clementine /TrackList PlayTrack `expr $(Index) - 1`); Delete($$)=\ Exec(qdbus org.mpris.clementine /TrackList DelTrack `expr $(Index) - 1`); Back($$)=\ Set(list,close);\ Make(mode,clementine_$(clementine_layout)); [ModeEnd] %qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetCurrentTrack %qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetMetadata %qdbus org.mpris.MediaPlayer2.clementine /TrackList org.freedesktop.MediaPlayer.AddTrack %qdbus org.mpris.MediaPlayer2.clementine /TrackList org.freedesktop.MediaPlayer.DelTrack [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/fileManager2.cfg�����������������������������������������������0000644�0002322�0002322�00000024003�12664332726�022723� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for to make basic file operations with help of % GUI of Java client. (Server-mode) % % STATUS stable % TODO handle braces/brackets in file names % XTEST no % SOUND no % ENV no % FBROWSER v.2++ % ALL_IN_ONE GuiAppName=FileManager2 GuiAppBinary=true GuiAppIcon=fileopen.png GuiAppType=Custom GuiAppProtocols=Server GuiAppDesc=Simple file manager which looks like Midnight Commander. Browsing directory structure with basic file operations. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var,list_index_l,by_value,1);\ Make(var,list_index_r,by_value,1); (Connect)=\ Set(parameter,debug,on);\ ExecAndSet(title,sleep 2);\ Make(mode,fileManager2); %InCall($$)=\ % Make(remote,off); %EndCall($$)=\ % Make(remote,on); All-in-1L($$)=Macro(FM2_ALLIN1); All-in-1R($$)=Macro(FM2_ALLIN1); BackL($$)=Macro(FM2_ALLIN1); BackR($$)=Macro(FM2_ALLIN1); Back=Set(text,close); Cancel=Make(exit); FM2_ALLIN1=Set(filemanager,close);Macro(All-in-1); 0=Make(exit); 1=Make(mode,fileManager2); 2=Set(fullscreen,toggle); * *=Set(text,replace,Help, Basic file operations.\n1 - enter file manager screen\n 2 - toggle fullscreen) FM2_FILLL=\ ExecAndSet(filemanager,replace,left, cd "`cat $(TmpDir)/ar_storedir_l.tmp`";echo `pwd`>$(TmpDir)/ar_storedir_l.tmp;ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/,/\r/g;s/$/,/'); FM2_FILLR=\ ExecAndSet(filemanager,replace,right,cd "`cat $(TmpDir)/ar_storedir_r.tmp`";echo `pwd`>$(TmpDir)/ar_storedir_r.tmp;ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/,/\r/g;s/$/,/'); FM2_SetIndexL=Set(filemanager,select,left, $(list_index_l)); FM2_SetIndexR=Set(filemanager,select,right,$(list_index_r)); FM2_StoreIndexL=Make(var,list_index_l,by_value,$(Index)); FM2_StoreIndexR=Make(var,list_index_r,by_value,$(Index)); FM2_UPDATEL=Macro(FM2_FILLL);Macro(FM2_SetIndexL);Macro(FM2_FILLR); FM2_UPDATER=Macro(FM2_FILLR);Macro(FM2_SetIndexR);Macro(FM2_FILLL); [Mode]=fileManager2 (EnterMode)=\ Set(icons,File Manager,\ 1,folder,2,fullscreen,3,default,\ 4,default,5,default,6,default,\ 7,default,8,default,9,default,\ 0,no,#,default,*,question);\ Set(hints,\ 1,file browser,\ *,help (press twice));\ Set(layout,default);\ Macro(FM2_FILLL);\ Macro(FM2_FILLR);\ Make(mode,fileManager2_work); [ModeEnd] [Mode]=fileManager2_work (EnterMode)=Macro(ALLIN1MENU); Back=Set(text,close);Macro(ALLIN1MENU) GoToL($$)=\ ExecAndSet(filemanager,replace,left, cd "`cat $(TmpDir)/ar_storedir_l.tmp`";if [ -d "$(Param)" ]; then cd "$(Param)";fi;pwd>$(TmpDir)/ar_storedir_l.tmp;ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/,/\r/g;s/$/,/'); GoToR($$)=\ ExecAndSet(filemanager,replace,right,cd "`cat $(TmpDir)/ar_storedir_r.tmp`";if [ -d "$(Param)" ]; then cd "$(Param)";fi;pwd>$(TmpDir)/ar_storedir_r.tmp;ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/,/\r/g;s/$/,/'); ViewL($$)=\ Macro(FM2_StoreIndexL);\ Make(var,viewdir,cd "`cat $(TmpDir)/ar_storedir_l.tmp`";pwd);\ Make(var,viewfile,by_value,$(Param));\ Make(mode,fileManager2_view_l); ViewR($$)=\ Macro(FM2_StoreIndexR);\ Make(var,viewdir,cd "`cat $(TmpDir)/ar_storedir_r.tmp`";pwd);\ Make(var,viewfile,by_value,$(Param));\ Make(mode,fileManager2_view_r); MkDirL($$)=\ Macro(FM2_StoreIndexL);\ Set(editfield,Enter name,New Directory,);\ Make(mode,fileManager2_mkdir_l); MkDirR($$)=\ Macro(FM2_StoreIndexR);\ Set(editfield,Enter name,New Directory,);\ Make(mode,fileManager2_mkdir_r); File infoL($$)=\ Macro(FM2_StoreIndexL);\ Make(var,infodir,cd "`cat $(TmpDir)/ar_storedir_l.tmp`";pwd);\ Make(var,infofile,by_value,$(Param));\ Make(mode,fileManager2_finfo_l); File infoR($$)=\ Macro(FM2_StoreIndexR);\ Make(var,infodir,cd "`cat $(TmpDir)/ar_storedir_r.tmp`";pwd);\ Make(var,infofile,by_value,$(Param));\ Make(mode,fileManager2_finfo_r); ExecuteL($$)=\ Macro(FM2_StoreIndexL);\ Make(var,execdir_l,cd "`cat $(TmpDir)/ar_storedir_l.tmp`";pwd);\ Make(var,execfile_l,by_value,$(Param));\ Set(editfield,Enter parameters,Parameters,);\ Make(mode,fileManager2_exec_l); ExecuteR($$)=\ Macro(FM2_StoreIndexR);\ Make(var,execdir_r,cd "`cat $(TmpDir)/ar_storedir_r.tmp`";pwd);\ Make(var,execfile_r,by_value,$(Param));\ Set(editfield,Enter parameters,Parameters,);\ Make(mode,fileManager2_exec_r); % ----------------------------------------------------------------------- % linked (intermediate) replay for multi-file operation M_CopyL($$)=\ Make(var,cpfile_l,by_value,$(Param));\ Exec(cd "`cat $(TmpDir)/ar_storedir_l.tmp`";cp -r $(cpfile_l) "`cat $(TmpDir)/ar_storedir_r.tmp`"); M_CopyR($$)=\ Make(var,cpfile_r,by_value,$(Param));\ Exec(cd "`cat $(TmpDir)/ar_storedir_r.tmp`";cp -r $(cpfile_r) "`cat $(TmpDir)/ar_storedir_l.tmp`"); CopyL($$)=\ Make(var,cpfile_l,by_value,$(Param));\ ExecAndSet(filemanager,replace,right,cd "`cat $(TmpDir)/ar_storedir_l.tmp`";cp -r $(cpfile_l) "`cat $(TmpDir)/ar_storedir_r.tmp`";cd "`cat $(TmpDir)/ar_storedir_r.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/$/,/'); CopyR($$)=\ Make(var,cpfile_r,by_value,$(Param));\ ExecAndSet(filemanager,replace,left, cd "`cat $(TmpDir)/ar_storedir_r.tmp`";cp -r $(cpfile_r) "`cat $(TmpDir)/ar_storedir_l.tmp`";cd "`cat $(TmpDir)/ar_storedir_l.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/$/,/'); % ----------------------------------------------------------------------- % linked (intermediate) replay for multi-file operation M_MoveL($$)=\ Make(var,mvfile_l,by_value,$(Param));\ Exec(cd "`cat $(TmpDir)/ar_storedir_l.tmp`";mv $(mvfile_l) "`cat $(TmpDir)/ar_storedir_r.tmp`"/); M_MoveR($$)=\ Make(var,mvfile_r,by_value,$(Param));\ Exec(cd "`cat $(TmpDir)/ar_storedir_r.tmp`";mv $(Param) "`cat $(TmpDir)/ar_storedir_l.tmp`"/); MoveL($$)=\ Make(var,mvfile_l,by_value,$(Param));\ ExecAndSet(filemanager,replace,left ,cd "`cat $(TmpDir)/ar_storedir_l.tmp`";mv $(mvfile_l) "`cat $(TmpDir)/ar_storedir_r.tmp`"/;cd "`cat $(TmpDir)/ar_storedir_l.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/$/,/');\ Macro(FM2_FILLR); MoveR($$)=\ Make(var,mvfile_r,by_value,$(Param));\ ExecAndSet(filemanager,replace,right,cd "`cat $(TmpDir)/ar_storedir_r.tmp`";mv $(mvfile_r) "`cat $(TmpDir)/ar_storedir_l.tmp`"/;cd "`cat $(TmpDir)/ar_storedir_r.tmp`";ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/$/,/');\ Macro(FM2_FILLL); % ----------------------------------------------------------------------- % linked (intermediate) replay for multi-file operation M_DeleteL($$)=\ Make(var,rmfile_l,by_value,$(Param));\ Exec(cd "`cat $(TmpDir)/ar_storedir_l.tmp`";rm -rf $(rmfile_l)); M_DeleteR($$)=\ Make(var,rmfile_r,by_value,$(Param));\ Exec(cd "`cat $(TmpDir)/ar_storedir_r.tmp`";rm -rf $(rmfile_r)); DeleteL($$)=\ Make(var,rmfile_l,by_value,$(Param));\ ExecAndSet(filemanager,replace,left, cd "`cat $(TmpDir)/ar_storedir_l.tmp`";rm -rf $(rmfile_l);cd "`cat $(TmpDir)/ar_storedir_l.tmp`";ls -F --quoting-style=shell|sed "s/\*//;s/@//;s/$/,/"); DeleteR($$)=\ Make(var,rmfile_r,by_value,$(Param));\ ExecAndSet(filemanager,replace,right,cd "`cat $(TmpDir)/ar_storedir_r.tmp`";rm -rf $(rmfile_r);cd "`cat $(TmpDir)/ar_storedir_r.tmp`";ls -F --quoting-style=shell|sed "s/\*//;s/@//;s/$/,/"); % ----------------------------------------------------------------------- [ModeEnd] % ----------------------------------------------------------------------- [Mode]=fileManager2_mkdir_l (EnterMode)=Make(none) (ExitMode)=Macro(FM2_FILLR);Macro(FM2_SetIndexL); Ok($$)=ExecAndSet(filemanager,replace,left,cd "`cat $(TmpDir)/ar_storedir_l.tmp`";mkdir "$(Param)";ls -F --quoting-style=shell|sed 's/\*//;s/@//;s/$/,/');Make(mode,fileManager2_work); Back($$)=Make(mode,fileManager2_work); [ModeEnd] [Mode]=fileManager2_mkdir_r (EnterMode)=Make(none) (ExitMode)=Macro(FM2_FILLL);Macro(FM2_SetIndexR); Ok($$)=ExecAndSet(filemanager,replace,right,cd "`cat $(TmpDir)/ar_storedir_r.tmp`";mkdir "$(Param)";ls -F --quoting-style=shell|sed 's/\*//';s/@//;s/$/,/');Make(mode,fileManager2_work); Back($$)=Make(mode,fileManager2_work); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=fileManager2_view_l (EnterMode)=ExecAndSet(text,replace,File View,more "$(viewdir)"/$(viewfile)); (ExitMode)=Set(text,clear);Macro(FM2_UPDATEL) Back=Make(mode,fileManager2_work); [ModeEnd] [Mode]=fileManager2_view_r (EnterMode)=ExecAndSet(text,replace,File View,more "$(viewdir)"/$(viewfile)); (ExitMode)=Set(text,clear);Macro(FM2_UPDATER); Back=Make(mode,fileManager2_work); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=fileManager2_finfo_l (EnterMode)=ExecAndSet(text,replace,File info,file "$(infodir)"/$(infofile)>$(TmpDir)/ar_infodata.tmp;ls -l "$(infodir)"/$(infofile)>>$(TmpDir)/ar_infodata.tmp;cat $(TmpDir)/ar_infodata.tmp); (ExitMode)=Set(text,clear);\ Macro(FM2_FILLL);\ Macro(FM2_SetIndexL);\ Macro(FM2_FILLR); Back=Make(mode,fileManager2_work); [ModeEnd] [Mode]=fileManager2_finfo_r (EnterMode)=ExecAndSet(text,replace,File info,file "$(infodir)"/$(infofile)>$(TmpDir)/ar_infodata.tmp;ls -l "$(infodir)"/$(infofile)>>$(TmpDir)/ar_infodata.tmp;cat $(TmpDir)/ar_infodata.tmp); (ExitMode)=Set(text,clear);\ Macro(FM2_FILLR);\ Macro(FM2_SetIndexR);\ Macro(FM2_FILLL); Back=Make(mode,fileManager2_work); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=fileManager2_exec_l (EnterMode)=Make(none) (ExitMode)=Macro(FM2_UPDATEL) Ok($$)=ExecAndSet(text,replace,Results,cd "`cat $(TmpDir)/ar_storedir_l.tmp`"; "$(execdir_l)"/$(execfile_l) $(Param));\ Make(mode,fileManager2_showres_l); Back($$)=Make(mode,fileManager2_work); [ModeEnd] [Mode]=fileManager2_exec_r (EnterMode)=Make(none) (ExitMode)=Macro(FM2_UPDATER); Ok($$)=ExecAndSet(text,replace,Results,cd "`cat $(TmpDir)/ar_storedir_r.tmp`"; "$(execdir_r)"/$(execfile_r) $(Param));\ Make(mode,fileManager2_showres_r); Back($$)=Make(mode,fileManager2_work); [ModeEnd] [Mode]=fileManager2_showres_l (EnterMode)=Make(none) (ExitMode)=Set(text,clear);Macro(FM2_UPDATEL) Back=Make(mode,fileManager2_work); [ModeEnd] [Mode]=fileManager2_showres_r (EnterMode)=Make(none) (ExitMode)=Set(text,clear);Macro(FM2_UPDATER); Back=Make(mode,fileManager2_work); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/fileManager3.cfg�����������������������������������������������0000644�0002322�0002322�00000014325�12664332726�022732� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for to make basic file operations with help of % GUI of Android/J2ME client. (Server-mode) % % STATUS stable % TODO handle braces/brackets in file names % XTEST no % SOUND no % ENV no % FBROWSER v.3i % ALL_IN_ONE % MEDIACENTER files GuiAppName=FileManager3 GuiAppBinary=true GuiAppIcon=fileopen.png GuiAppType=Custom GuiAppProtocols=Server GuiAppDesc=Simple file manager. Browsing directory structure with basic file operations. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v3i.cfg);\ Set(parameter,debug,on); (Connect)=\ Make(var,fm_v3i_list_index,by_value,1);\ Make(var,fm_v3i_layout_done,by_value,0);\ Macro(FBROWSER_IC_INIT);\ Make(mode,file_manager_v3i_init); (Exit)=\ Macro(FBROWSER_IC_EXIT); % ----------------------------------------------------------------------- [Mode]=file_manager_v3i_general %InCall($$)=\ % Make(remote,off); %EndCall($$)=\ % Make(remote,on); UPDATE_MENU=\ Set(menu,replace,GoTo,File info,Copy,Move,Delete,Make Dir,View,Exec,Go Home);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); SET_INDEX=\ Set(iconlist,select,$(fm_v3i_list_index)); [ModeEnd] % ----------------------------------------------------------------------- [Mode]= file_manager_v3i_general_operation : file_manager_v3i_general FMAN_IC_FILL_LIST2=\ ExecAndSet(iconlist,add,SAME,\ cd "$(fbrowser_dir2)";\ ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/'| xargs -d '\n' -i echo "folder:"{}); ExecAndSet(iconlist,add,SAME,\ cd "$(fbrowser_dir2)";\ ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/'| xargs -d '\n' -i echo "file:"{}); Go To($$)=\ Make(var,tmpdir,by_value,$(Param));\ Make(var,fbrowser_dir2,cd "$(fbrowser_dir2)";if [ -d "$(tmpdir)" ]; then cd "$(tmpdir)";fi;pwd);\ Set(iconlist,replace,SAME,folder:..);\ Macro(FMAN_IC_FILL_LIST2); Back=\ Make(mode,file_manager_v3i_init); Back($$)=\ Make(mode,file_manager_v3i_init); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v3i_init : file_manager_v3i_general (EnterMode)=\ Set(popup,show,Please wait);\ Macro(FM3I_SET_LAYOUT,echo $(fm_v3i_layout_done));\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UPDATE_MENU); FM3I_SET_LAYOUT=\ Set(layout,3x4);\ Set(icons,File manager,\ 1,folder,2,fullscreen,3,default,\ 4,default,5,default,6,default,\ 7,default,8,default,9,default,\ *,question,0,no,#,default);\ Set(hints,\ 1,file browser,\ *,help (press twice));\ Set(title,Press 1 to enter file browser);\ Set(status,);\ Make(var,fm_v3i_layout_done,by_value,1); STORE_INDEX=\ Make(var,fm_v3i_list_index,by_value,$(Index)); Back($$)=\ Set(list,close);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Back=\ Set(text,close);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v3i.cfg Cancel=Make(exit); 0=Make(exit); 1=Macro(FBROWSER_IC_FILL_LIST);\ Macro(UPDATE_MENU); 2=Set(fullscreen,toggle); * *=Set(text,replace,Help, Menu-driven basic\nfile operations.\n1 - enter file manager screen\n2 - toggle fullscreen); % ----------------------------------------------------------------------- FM3I_DO_OPERATION=\ Macro(STORE_INDEX);\ Make(var,fm_v3i_file,by_value,$(Param));\ Make(mode,file_manager_v3i_$(fm_v3i_operation)); Exec($$)=\ Make(var,fm_v3i_operation,by_value,exec);\ Macro(FM3I_DO_OPERATION); Make Dir($$)=\ Make(var,fm_v3i_operation,by_value,mkdir);\ Macro(FM3I_DO_OPERATION); File info($$)=\ Make(var,fm_v3i_operation,by_value,info);\ Macro(FM3I_DO_OPERATION); View($$)=\ Make(var,fm_v3i_operation,by_value,view);\ Macro(FM3I_DO_OPERATION); Copy($$)=\ Make(var,fm_v3i_operation,by_value,copy);\ Macro(FM3I_DO_OPERATION); Move($$)=\ Make(var,fm_v3i_operation,by_value,move);\ Macro(FM3I_DO_OPERATION); Delete($$)=\ Macro(STORE_INDEX);\ Make(var,dummy,cd "$(fbrowser_dir)";rm -rf "$(Param)";echo DONE;);\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(SET_INDEX); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v3i_exec : file_manager_v3i_general_operation (EnterMode)=\ Set(editfield,Enter parameters,Parameters,); Ok($$)=\ ExecAndSet(text,replace,Results,cd "$(fbrowser_dir)";"$(fbrowser_dir)"/$(fm_v3i_file) $(Param)); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v3i_mkdir : file_manager_v3i_general_operation (EnterMode)=\ Set(editfield,Enter name,New Directory,); Ok($$)=\ Make(var,dummy,cd "$(fbrowser_dir)";mkdir $(Param);echo DONE;);\ Make(mode,file_manager_v3i_init); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v3i_info : file_manager_v3i_general_operation (EnterMode)=\ ExecAndSet(text,replace,File info,file "$(fbrowser_dir)"/$(fm_v3i_file));\ ExecAndSet(text,add,SAME,ls -l "$(fbrowser_dir)"/$(fm_v3i_file)); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v3i_view : file_manager_v3i_general_operation (EnterMode)=\ ExecAndSet(text,replace,File View,more "$(fbrowser_dir)"/$(fm_v3i_file)); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v3i_copy : file_manager_v3i_general_operation (EnterMode)=\ Make(var,fbrowser_dir2,by_value,$(fbrowser_dir));\ Set(iconlist,replace,Copy To,folder:..);\ Macro(FMAN_IC_FILL_LIST2);\ Set(menu,replace,Go To,Copy To); Copy To($$)=\ Make(var,dummy,cp "$(fbrowser_dir)"/$(fm_v3i_file) "$(fbrowser_dir2)"/$(Param);echo DONE;);\ Make(mode,file_manager_v3i_init); [ModeEnd] % ----------------------------------------------------------------------- [Mode]=file_manager_v3i_move : file_manager_v3i_general_operation (EnterMode)=\ Make(var,fbrowser_dir2,by_value,$(fbrowser_dir));\ Set(iconlist,replace,Move To,folder:..);\ Macro(FMAN_IC_FILL_LIST2);\ Set(menu,replace,Go To,Move To); Move To($$)=\ Make(var,dummy,mv "$(fbrowser_dir)"/$(fm_v3i_file) "$(fbrowser_dir2)"/$(Param);echo DONE;);\ Make(mode,file_manager_v3i_init); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/freevo.cfg�����������������������������������������������������0000644�0002322�0002322�00000003234�12120355624�021705� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Freevo. (Server-mode) % prerequisites xterm % % STATUS unknown % XTEST yes % SOUND app % ENV no GuiAppName=Freevo GuiAppBinary=freevo GuiAppRun=A=`ps -ef|grep freevo|grep main.py|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=freevo.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Freevo is a Home theatre platform. It allows you to manage your entire digital media collection - music, videos, photos etc. [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Make(mode,freevo); FREEVO_MUTE =Emulate(key,F3) FREEVO_VOLUMEDOWN=Emulate(key,n) FREEVO_VOLUMEUP =Emulate(key,m) FREEVO_FULLSCREEN=Emulate(key,z) FREEVO_RUN =Exec(P=`ps -ef|grep freevo|grep main.py|grep -v grep`; if [ "x$P" = "x" ]; then xterm -geometry "1x1+0+0" -e freevo& fi) [Mode]=freevo (EnterMode)=\ Set(status,Cursor);\ Set(title,Move cursor by 2 4 6 8);\ Set(layout,default);\ Set(icons,Freevo,1,plus,2,up,3,fullscreen,4,left,5,plus,6,right,7,default,8,down,9,play,*,question,0,default,#,refresh);\ Macro(FREEVO_MENU);\ Set(font,small);\ Macro(FREEVO_RUN); FREEVO_MENU=\ Set(menu,replace,); Back=\ Set(text,close);\ Macro(FREEVO_MENU) Cancel=\ Make(exit); 1=Macro(FREEVO_RUN); 2=Emulate(key,Up) 3=Macro(FREEVO_FULLSCREEN) 4=Emulate(key,Left) 5=Emulate(key,Return) 6=Emulate(key,Right) 8=Emulate(key,Down) * 1=Macro(FREEVO_VOLUMEDOWN) * 2=Macro(FREEVO_MUTE) * 3=Macro(FREEVO_VOLUMEUP) * *=Set(text,replace,Help, Move cursor by 2,4,6,8\n5 select/enter\n# - return back\n * 1 - volume down\n * 1 - toggle mute\n * 3 - volume up) #=Emulate(key,Escape); [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/xine.cfg�������������������������������������������������������0000644�0002322�0002322�00000004504�12664332726�021376� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for xine management. (Server-mode) % % prerequisites: amixer/pactl utility; % % STATUS stable % XTEST no % SOUND mixer % ENV no % FBROWSER v.4i GuiAppName=Xine GuiAppBinary=xine GuiAppRun= A=`ps -ef|grep xine|grep -v xinetd|grep -v grep|grep -v edit`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=xine.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Xine is a free multimedia player. It plays back CDs, DVDs, and VCDs. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(FBROWSER_IC_INIT);\ Exec(if [ -f $HOME/.xine/passwd ]; then true; else echo "ALL:ALLOW" > $HOME/.xine/passwd; fi); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,xine); Cancel=\ Make(exit); [Mode]=xine (EnterMode)=\ Set(layout,default);\ Set(icons,XINE,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,fullscreen,8,stop,9,pause,*,question,0,folder,#,no);\ Set(title,);\ Set(status,);\ Macro(XINEMENU); Cancel=\ Exec(xine-remote -c halt);\ Make(exit); QUIT=\ Exec(xine-remote -c halt) FILEMENU=\ Set(menu,replace,GoTo,Open,Go Home); XINEMENU=\ Set(menu,replace,Open DVD,Select,Left,Right,Menu); Back =Set(text,close); Back($$)=Set(list,close); Open DVD=Exec(xine -n dvd://1 --fullscreen); Select =Exec(xine-remote -c 'event select') Left =Exec(xine-remote -c 'event left') Right =Exec(xine-remote -c 'event right') Menu =Exec(xine-remote -c 'event menu') GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v4i.cfg Open($$)=\ Set(list,close);\ Exec(cd "$(fbrowser_dir)";xine -n "$(Param)");\ Set(title,$(Param));\ Macro(XINEMENU); 1=Macro(DEFAULT_VOLUME_DOWN) 2=Macro(DEFAULT_TOGGLE_MUTE) 3=Macro(DEFAULT_VOLUME_UP) 4=Exec(xine-remote -c "seek -10") 5=Exec(xine-remote -c play) 6=Exec(xine-remote -c "seek +10") 7=Exec(xine-remote -c fullscreen) 8=Exec(xine-remote -c stop) 9=Exec(xine-remote -c pause) * *=Set(text,replace,Help, 1 Vol-\n 2 Mute\n 3 Vol+\n 4 Rewind\n 5 Play\n 6 FF\n 7 Toggle Fullscreen\n 8 Stop\n 9 Pause\n ** Help\n 0 File Browser\n # Close) 0=Macro(QUIT);\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(FILEMENU); #=Macro(QUIT) [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/smplayer2.cfg��������������������������������������������������0000644�0002322�0002322�00000007537�12673224605�022356� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for smplayer2 management. (Server-mode) % (tested with v6.2) % % STATUS stable % XTEST yes % SOUND mixer % ENV no % FBROWSER v.4i % DEF_VIDEO_PLAYER % ALL_IN_ONE % MEDIACENTER video GuiAppName=SMPlayer2 GuiAppBinary=smplayer2 GuiAppRun=echo 'A=`qdbus 2> /dev/null|grep SMPlayer2`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=application-x-smplayer2.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=A fork of SMPlayer, targeted at mplayer2 users. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-video-player.cfg);\ Make(var,app_name,by_value,SMPlayer2);\ Make(var,do_app_init,by_value,1);\ Make(var,open_file,by_value,);\ Make(var,smplayer2_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get smplayer2_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi);\ Make(var,app_manage_mode,by_value,smplayer2_$(smplayer2_layout)); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set smplayer2_layout $(smplayer2_layout)); (Connect)=\ Make(mode,smplayer2_init); [Mode]=smplayer2_init : default_video_player_init APP_IS_RUN=\ Make(var,app_run,A=`qdbus 2> /dev/null|grep SMPlayer2`; if [ "x$A" = "x" ]; then echo 0; else echo 1; fi); [ModeEnd] [Mode]=smplayer2_general APP_START_IF=\ Exec(P=`qdbus|grep SMPlayer2`;\ if [ "x$P" = "x" ]; then cd "$(fbrowser_dir)";smplayer2 $(open_file) 2> /dev/null & fi); % Application window should be present in output of "wmctrl -l" APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch smplayer2); APP_QUIT=\ Exec(qdbus org.mpris.MediaPlayer2.SMPlayer2 /org/mpris/MediaPlayer2 Quit > /dev/null); APP_FULLSCREEN=\ Make(var,smplayer2_fs,F=`qdbus org.mpris.MediaPlayer2.SMPlayer2 /org/mpris/MediaPlayer2 Fullscreen`;\ if [ "x$F" = "xfalse" ]; then echo True; else echo False; fi);\ Exec(qdbus org.mpris.MediaPlayer2.SMPlayer2 /org/mpris/MediaPlayer2 Fullscreen $(smplayer2_fs) > /dev/null); PLAY=\ Exec(qdbus org.mpris.MediaPlayer2.SMPlayer2 /org/mpris/MediaPlayer2 Play > /dev/null); %Exec(qdbus org.mpris.MediaPlayer2.SMPlayer2 /org/mpris/MediaPlayer2 Seek -10 > /dev/null) RWD=\ Emulate(key,Left); %Exec(qdbus org.mpris.MediaPlayer2.SMPlayer2 /org/mpris/MediaPlayer2 Seek 10 > /dev/null) FF=\ Emulate(key,Right); STOP=\ Exec(qdbus org.mpris.MediaPlayer2.SMPlayer2 /org/mpris/MediaPlayer2 Stop > /dev/null); PAUSE=\ Exec(qdbus org.mpris.MediaPlayer2.SMPlayer2 /org/mpris/MediaPlayer2 Pause > /dev/null) Layout 3x4=\ Make(mode,smplayer2_3x4); Layout 5x1=\ Make(mode,smplayer2_5x1); [ModeEnd] [Mode]=smplayer2_3x4 : smplayer2_general,default_video_player APP_POST_SETUP=\ Make(var,smplayer2_layout,by_value,3x4);\ Make(var,app_manage_mode,by_value,smplayer2_$(smplayer2_layout)); APP_MENU=\ Set(menu,replace,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % Override 1=Emulate(key,9); 2=Emulate(key,m); 3=Emulate(key,0); * *=Set(text,replace,Help,1 Vol-\n2 Mute\n3 Vol+\n4 Rewind\n5 Play\n6 FF\n7 File Browser\n8 Stop\n9 Fullscreen\n** Help\n0 Pause\n# Exit) [ModeEnd] [Mode]=smplayer2_5x1 : smplayer2_general,default_video_player_5x1 APP_POST_SETUP=\ Make(var,smplayer2_layout,by_value,5x1);\ Make(var,app_manage_mode,by_value,smplayer2_$(smplayer2_layout)); APP_MENU=\ Set(menu,replace,Help,Mute,Quit,Fullscreen,Files,Layout 3x4,IMDB,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % Override VOL-=\ Emulate(key,9); Mute=\ Emulate(key,m); VOL+=\ Emulate(key,0); DEFAULT_HELP=\ Set(text,replace,Help,Joystick Down Vol-\nJoystick Up Vol+\n1 Rewind\n2 Play\n3 FastForward\n4 Pause\n5 Stop and quit $(app_name)); Fullscreen=\ Macro(APP_FULLSCREEN); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/quodlibet.cfg��������������������������������������������������0000644�0002322�0002322�00000015042�12664332726�022422� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for quodlibet. (Server-mode) % % Thanks to Van Wout Heeswijk for initial version this configuration file % % STATUS stable % XTEST no % SOUND app % ENV no % FBROWSER v.4i % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio GuiAppName=Quodlibet GuiAppBinary=quodlibet GuiAppRun= A=`ps -ef|grep quodlibet|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=quodlibet.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Quod Libet is a GTK+-based audio player written in Python. It's designed around the idea that you know how to organize your music better than we do. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Make(var,player_name,by_value,Quodlibet);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Make(var,quodlibet_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get quodlibet_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set quodlibet_layout $(quodlibet_layout)); (Connect)=\ Make(mode,quodlibet_$(quodlibet_layout)); [Mode]=quodlibet_general QUODLIBET_VOL-=\ Exec(quodlibet --volume-down); QUODLIBET_MUTE=\ Make(var,quodlibet_volume,\ if [ "x$(quodlibet_volume)" = "x-1" ]; then \ V=`quodlibet --status|cut -f 3 -d ' '|grep '.'`;echo "$V * 100"|bc|cut -f 1 -d '.';quodlibet --volume=0; \ else \ quodlibet --volume=$(quodlibet_volume);echo "-1"; \ fi); QUODLIBET_VOL+=\ Exec(quodlibet --volume-up) % Android support VOL-=Macro(QUODLIBET_VOL-); VOL+=Macro(QUODLIBET_VOL+); % Gestures support SlideDown=Macro(QUODLIBET_VOL-); SlideUp =Macro(QUODLIBET_VOL+); % 0-9,*,# assignments by Utils/aliases-server-player.cfg PLAY_ONLY=\ Exec(quodlibet --play); PLAY=\ Macro(PLAY_ONLY);\ Macro(QUODLIBET_TIMER_START); RWD=\ Exec(quodlibet --seek=-10) FF=\ Exec(quodlibet --seek=+10); PREV=\ Exec(quodlibet --previous);\ Macro(QUODLIBET_TITLE); NEXT=\ Exec(quodlibet --next);\ Macro(QUODLIBET_TITLE); STOP=\ Exec(quodlibet --play-pause); PAUSE=\ Exec(quodlibet --play-pause); QUODLIBET_CHECK_TIMER=\ Make(var,quodlibet_status,quodlibet --status|cut -f 1 -d ' ');\ Make(var,timer_action,if [ "x$(quodlibet_status)" = "xplaying" ]; \ then echo QUODLIBET_TIMER_START; else echo QUODLIBET_TIMER_CANCEL; fi);\ Macro($(timer_action)); QUODLIBET_TITLE_GENERAL=\ Make(var,alb_tit,quodlibet --print-playing '<album> - <title>');\ Make(var,art,quodlibet --print-playing '<artist>');\ Set(title,$(alb_tit));\ Set(status,$(art)); % QUODLIBET_TITLE should be defined in child mode QUODLIBET_TIMER_START=\ Macro(QUODLIBET_TITLE);\ Timer(QUODLIBET_TITLE,$(UpdateTimeout),0); QUODLIBET_TIMER_CANCEL=\ Timer(QUODLIBET_TITLE,cancel);\ Set(title,);\ Set(status,); RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh quodlibet); RUN_OR_QUIT=\ Timer(QUODLIBET_TITLE,cancel);\ Exec(P=`ps -ef|grep quodlibet|grep -v grep|grep -v quodlibet.cfg`; \ if [ "x$P" = "x" ]; then quodlibet & else quodlibet --quit; fi); APP_QUIT=\ Macro(QUODLIBET_TIMER_CANCEL);\ Exec(quodlibet --quit); APP_PLAY_STATUS=\ Make(var,quodlibet_status,quodlibet --status|cut -f 1 -d " ");\ Make(var,app_status,if [ "x$(quodlibet_status)" = "xplaying" ]; then echo playing; else echo paused; fi); Repeat=\ Make(mode,quodlibet_repeat); Shuffle=\ Make(mode,quodlibet_shuffle); Files=\ Make(mode,quodlibet_filebrowser); Layout 3x4=\ Make(mode,quodlibet_3x4); Layout 7x1=\ Make(mode,quodlibet_7x1); Layout 5x1=\ Make(mode,quodlibet_5x1); [ModeEnd] [Mode]=quodlibet_3x4 : quodlibet_general, default_player % (EnterMode) by Utils/aliases-server-player.cfg APP_PRE_SETUP=\ Make(var,quodlibet_volume,echo "-1"); APP_POST_SETUP=\ Make(var,quodlibet_layout,by_value,3x4);\ Macro(QUODLIBET_CHECK_TIMER); % PowerMgmt by Utils/aliases-server.cfg APP_MENU=\ Set(menu,replace,Files,Repeat,Shuffle,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); QUODLIBET_TITLE=\ Macro(QUODLIBET_TITLE_GENERAL); 1=Macro(QUODLIBET_VOL-); 2=Macro(QUODLIBET_MUTE); 3=Macro(QUODLIBET_VOL+); [ModeEnd] [Mode]=quodlibet_cover QUODLIBET_TITLE=\ Macro(QUODLIBET_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file,quodlibet --print-playing '<~dirname>');\ Macro(DEFAULT_COVER); VOL-=\ Macro(QUODLIBET_VOL-); Mute=\ Macro(QUODLIBET_MUTE); VOL+=\ Macro(QUODLIBET_VOL+); [ModeEnd] [Mode]=quodlibet_7x1 : quodlibet_general, quodlibet_cover, default_player_7x1 APP_MENU=\ Set(menu,replace,Mute,Files,Repeat,Shuffle,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,quodlibet_layout,by_value,7x1); [ModeEnd] [Mode]=quodlibet_5x1 : quodlibet_general, quodlibet_cover, default_player_5x1 APP_MENU=\ Set(menu,replace,Mute,Files,Repeat,Shuffle,Next Cover,Previous Cover,Update Cover,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,quodlibet_layout,by_value,5x1); APP_TITLE=\ Macro(QUODLIBET_TITLE); PLAY=\ Macro(PLAY_ONLY); [ModeEnd] % rely on $(quodlibet_layout) variable [Mode]=quodlibet_repeat (EnterMode)=\ Set(list,replace,Repeat,Yes,No);\ Set(menu,replace,Choose); Back($$)=\ Set(list,close);\ Make(mode,quodlibet_$(quodlibet_layout)); Push($$)=\ Macro(Choose($$)); Choose($$)=\ Exec(quodlibet --repeat=`echo $(Param)|sed 's/Yes/1/;s/No/0/'`);\ Set(list,close);\ Make(mode,quodlibet_$(quodlibet_layout)); [ModeEnd] % rely on $(quodlibet_layout) variable [Mode]=quodlibet_shuffle (EnterMode)=\ Set(list,replace,Shuffle,Yes,No);\ Set(menu,replace,Choose); Back($$)=\ Set(list,close);\ Make(mode,quodlibet_$(quodlibet_layout)); Push($$)=\ Macro(Choose($$)); Choose($$)=\ Exec(quodlibet --order=`echo $(Param)|sed 's/Yes/1/;s/No/0/'`);\ Set(list,close);\ Make(mode,quodlibet_$(quodlibet_layout)); [ModeEnd] % rely on $(quodlibet_layout) variable [Mode]=quodlibet_filebrowser (EnterMode)=\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); UpdateMenu=\ Set(menu,replace,GoTo,Add,Go Home); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); %Push($$) use from aliases-server-fbrowser-v4i.cfg Add($$)=\ Exec(quodlibet --enqueue="$(fbrowser_dir)"/$(Param)); Back($$)=\ Set(list,close);\ Make(mode,quodlibet_$(quodlibet_layout)); [ModeEnd] [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/xmultimedia.cfg������������������������������������������������0000644�0002322�0002322�00000002637�12073567677�022773� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for basic use of Xmultimedia keys % % STATUS unknown % XTEST yes % SOUND no % ENV no GuiAppName=XMultimedia GuiAppBinary= GuiAppRun= GuiAppIcon= GuiAppType=Example GuiAppProtocols=Server GuiAppDesc=Multimedia keys usage example [Protocol]=Server (Init)=Include($(CfgDir)/Utils/aliases-server.cfg); (Connect)=Set(icons,Xmultimedia,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,eject);\ Set(menu,replace,Forward,Back,MonBrightnessDown,MonBrightnessUp); Cancel=\ Make(exit); Back=Emulate(key,Back); Forward=Emulate(key,Forward); MonBrightnessDown=Emulate(key,MonBrightnessDown); MonBrightnessUp=Emulate(key,MonBrightnessUp); 1=Emulate(key,AudioLowerVolume); 2=Emulate(key,AudioMute); 3=Emulate(key,AudioRaiseVolume); % value from /usr/include/X11/XF86keysym.h * 1=Emulate(key,by_value,0x1008FF11); * 2=Emulate(key,by_value,0x1008FF12); * 3=Emulate(key,by_value,0x1008FF13); 4=Emulate(key,AudioRewind); 5=Emulate(key,AudioPlay); 6=Emulate(key,AudioForward); 7=Emulate(key,AudioPrev); 8=Emulate(key,AudioStop); 9=Emulate(key,AudioNext); * *=Set(text,replace,Xmultimedia,Example of usage of multimedia keys.\n 1 AudioLowerVolume\n 2 AudioMute\n 3 AudioRaiseVolume\n 4 AudioRewind\n 5 AudioPlay\n 6 AudioForward\n 7 AudioPrev\n 8 AudioStop\n 9 AudioNext\n ** Help\n 0 AudioPause\n # Eject); 0=Emulate(key,AudioPause); #=Emulate(key,Eject); [End] �������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/aqualung.cfg���������������������������������������������������0000644�0002322�0002322�00000003314�12130537734�022240� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Aqualung management (Server-mode) % prerequisites: amixer/pactl utility % % STATUS stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio GuiAppName=Aqualung GuiAppBinary=aqualung GuiAppRun=echo 'P=`ps -ef|grep aqualung|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=aqualung.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Aqualung is an advanced music player. It plays audio CDs, internet radio streams and podcasts as well as soundfiles in just about any audio format and has the feature of inserting no gaps between adjacent tracks. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Make(var,player_name,by_value,Aqualung);\ Include($(CfgDir)/Utils/aliases-server-player.cfg); (Connect)=Make(mode,aqualung); [Mode]=aqualung : default_player (EnterMode)=\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(RUN_IF_NEED);\ Macro(SETUP_DEFAULT_PLAYER_NO_FF_FWD);\ Macro(APP_MENU); % Volume control and 0-9,*,# assignments by Utils/aliases-server-player.cfg PLAY =Exec(aqualung --play -N 0); RWD =Exec(aqualung -B) FF =Exec(aqualung -F) PREV =Exec(aqualung -B) STOP =Exec(aqualung -T); NEXT =Exec(aqualung -F) PAUSE=Exec(aqualung -U); %why ? aqualung -s3 -o alsa -R -r 48000 RUN_IF_NEED=\ Exec(P=`ps auxc|grep aqualung`; if [ "x$P" = "x" ]; then aqualung & fi);\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch aqualung); RUN_OR_QUIT=\ Exec(P=`ps auxc|grep aqualung`; if [ "x$P" = "x" ]; then aqualung & else aqualung -Q; fi); APP_QUIT=Exec(aqualung -Q) * *=Macro(DEFAULT_HELP_NO_FF_FWD); [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/kdialog.cfg����������������������������������������������������0000644�0002322�0002322�00000003605�12061426047�022035� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� % % anyremote configuration file for kdialog --msgbox management. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no GuiAppName=Kdialog test GuiAppType=Example GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Simple example of configuration file [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Exec(kdialog --msgbox "Initialized");\ Make(alarm,/tmp/alarm1,ALARM1);\ Make(alarm,/tmp/alarm2,ALARM2); (Connect)=\ Exec(kdialog --msgbox "Connected");\ Set(parameter,debug,on);\ Set(status,kdialog test);\ Set(title,Press buttons one by one);\ Set(icons,kdialog,1,question,2,question,3,question,4,question,5,question,6,question,7,question,8,question,9,question,0,question,*,default,#,default); (Disconnect)=\ Exec(kdialog --msgbox Disconnected) InCall($$)=\ Exec(kdialog --msgbox "Call from $(Param)");\ Make(remote,off); EndCall($$)=\ Make(remote,on);\ Exec(kdialog --msgbox "Call finished"); Back=\ Set(text,close); 1=Exec(kdialog --msgbox 1);Set(icons,SAME,1,vol_down);Set(title,Button 1); 2=Exec(kdialog --msgbox 2);Set(icons,SAME,2,mute);Set(title,Button 2); 3=Exec(kdialog --msgbox 3);Set(icons,SAME,3,vol_up);Set(title,Button 3); 4=Exec(kdialog --msgbox 4);Set(icons,SAME,4,rewind);Set(title,Button 4); 5=Exec(kdialog --msgbox 5);Set(icons,SAME,5,play);Set(title,Button 5); 6=Exec(kdialog --msgbox 6);Set(icons,SAME,6,forward);Set(title,Button 6); 7=Exec(kdialog --msgbox 7);Set(icons,SAME,7,prev);Set(title,Button 7); 8=Exec(kdialog --msgbox 8);Set(icons,SAME,8,stop);Set(title,Button 8); 9=Exec(kdialog --msgbox 9);Set(icons,SAME,9,next);Set(title,Button 9); 0=Exec(kdialog --msgbox 0);Set(icons,SAME,0,pause);Set(title,Button 0); % Multikey commands * *=Set(text,replace,Help,Just press buttons and inspect results) # 1=Exec(kdialog --msgbox Hash_1) # 2=Exec(kdialog --msgbox Hash_2) ALARM1=Set(status,"Alarm 1"); ALARM2=Set(status,"Alarm 2"); [End] ���������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/all-in-one.cfg�������������������������������������������������0000644�0002322�0002322�00000004075�12130542671�022357� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file (Server-mode) % % STATUS unknown % XTEST no % SOUND no % ENV no GuiAppName=All-in-1 GuiAppType=Custom GuiAppBinary=true GuiAppProtocols=Server GuiAppDesc=Manage a set of applications at once [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT); (Connect)=\ Make(mode,_ALL_IN_ONE_1_); ALLIN1MENU=\ Set(menu,add,All-in-1); All-in-1=\ Macro(ALLIN1_CALLBACK1); All-in-1($$)=\ Macro(ALLIN1_CALLBACK1); ALLIN1_CALLBACK1=\ Set(popup,show,Loading...);\ Macro(APP_QUIT);\ Make(flush);\ Include($(CfgDir)/Server-mode/all-in-one2.cfg);\ Macro((Init));\ Macro((Connect));\ Set(popup,hide);\ Make(mode,_ALL_IN_ONE_1_); [Mode]=_ALL_IN_ONE_1_ (EnterMode)=\ Set(popup,show,Please wait);\ Macro(ALL_IN_ONE_LAYOUT);\ Macro(SHOWSW); ALL_IN_ONE_LAYOUT=\ Set(layout,default);\ Set(icons,All-in-one,\ 1,plus,2,none,3,none,\ 4,none,5,none,6,none,\ 7,none,8,none,9,none,\ *,question,0,none,#,no);\ Set(title,press 1 to select application);\ Set(status,);\ Set(menu,replace,PowerMgmt); * *=Set(text,replace,Help,Press 1, then choose application to manage) Cancel=\ Make(exit); Back=\ Set(text,close);\ Macro(ALL_IN_ONE_LAYOUT); Back($$)\ =Set(list,close);\ Macro(ALL_IN_ONE_LAYOUT); SHOWSW=\ Set(list,font,large);\ ExecAndSet(list,replace,Applications,find $(CfgDir)/Server-mode -exec grep -l ALL_IN_ONE {} \;|grep -v .svn|xargs -i basename {}|grep -v all-in-one|sed 's/\.cfg//'|sed 's/$/,/'|sort);\ Set(menu,replace,Select);\ Set(popup,hide); 1=Set(popup,show,Please wait);\ Macro(SHOWSW); 9=Macro(Cancel); Push($$) =Macro(SELECT); Select($$)=Macro(SELECT); SELECT=\ Set(popup,show,Loading...);\ Make(flush);\ Set(title,);\ Set(status,);\ Include($(CfgDir)/Server-mode/$(Param).cfg);\ Macro((Init));\ Macro((Connect));\ Include($(CfgDir)/Server-mode/all-in-one.cfg);\ Macro(ALLIN1MENU);\ Set(popup,hide); 2=Make(none) 3=Make(none) 4=Make(none) 5=Make(none) 6=Make(none) 7=Make(none) 8=Make(none) 9=Make(none) [ModeEnd] [End] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/mpd.cfg��������������������������������������������������������0000644�0002322�0002322�00000006413�12120355624�021201� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for MPD management (Server-mode) % % prerequisites: mpc client, mpd must be started already with playlist prepared % % STATUS nonstable % TODO who must start mpd and prepare playlist? % XTEST no % SOUND app % ENV no % ALL_IN_ONE % TODO make stable GuiAppName=MPD GuiAppBinary=mpc GuiAppRun=P=`ps -ef|grep mpd|grep -v grep|grep -v anyremote|grep -v nedit|grep -v mpd.cfg`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Music Player Daemon (MPD) allows remote access for playing music. Mpd should be started and playlist should be prepared before runing anyRemote. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(CheckMPC);\ Macro(CheckMPD);\ Macro(CheckPL);\ Make(var,home,echo $HOME);\ Make(var,player_name,by_value,MPD);\ Include($(CfgDir)/Utils/aliases-server-player.cfg); (Connect)=Make(mode,mpd); Cancel=\ Make(exit); [Mode]=mpd_general CheckMPC=\ Exec(P=`which mpc 2> /dev/null|grep mpc|grep -v no|wc -l|tr -d " "`; \ if [ "x$P" = "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: mpc client is not installed"; fi); CheckMPD=\ Exec(P=`ps -ef|grep mpd|grep -v grep|grep -v mpd.cfg|wc -l|tr -d " "`; \ if [ "x$P" = "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: mpd is not run"; fi); CheckPL=\ Exec(P=`mpc playlist 2> /dev/null|wc -l|tr -d " "`; \ if [ "x$P" = "x0" ]; then $(CfgDir)/Utils/message.sh "ERROR: mpd playlist is empty"; fi); MPD_SETTILE=\ ExecAndSet(title,sleep 1;mpc|head -n1|while read name;do echo $name;done) [ModeEnd] [Mode]=mpd : mpd_general,default_player (EnterMode)=\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(RUN_IF_NEED);\ Macro(SETUP_DEFAULT_PLAYER);\ Make(var,mpd_volume,by_value,-1);\ Macro(APP_MENU); (ExitMode) =Timer(MPD_SETTILE,cancel) APP_MENU=\ Set(menu,replace,Playlist,Toggle Shuffle,Toggle Repeat,PowerMgmt);\ Macro(ALLIN1MENU); Back=\ Set(text,close);\ Macro(APP_MENU); Toggle Shuffle=\ Exec(mpc shuffle); Toggle Repeat=\ Exec(mpc repeat); Playlist=\ Make(mode,mpd_playlist); % Override 1=Exec(mpc volume -5) 2=Make(var,mpd_volume,\ if [ "x$(mpd_volume)" = "x-1" ]; then \ mpc volume|tr -s " "|cut -f 2 -d " "|sed "s/%//";mpc volume 0 > /dev/null; \ else \ mpc volume $(mpd_volume) > /dev/null;echo "-1"; \ fi); 3=Exec(mpc volume +5) PLAY=\ Exec(mpc play);\ Macro(MPD_SETTILE);\ Timer(MPD_SETTILE,$(UpdateTimeout),0); RWD=\ Exec(mpc seek -00:00:05); FF=\ Exec(mpc seek +00:00:05); PREV=\ Exec(mpc prev);\ Macro(MPD_SETTILE); NEXT=\ Exec(mpc next);\ Macro(MPD_SETTILE); STOP=\ Exec(mpc stop);\ Timer(MPD_SETTILE,cancel); PAUSE=\ Exec(mpc toggle); RUN_IF_NEED=\ Make(none); RUN_OR_QUIT=\ Make(none); QUIT=\ Exec(mpd --kill); [ModeEnd] [Mode]=mpd_playlist (EnterMode)=\ Timer(MPD_SETTILE,cancel);\ Set(list,font,medium);\ ExecAndSet(list,replace,Playlist,mpc playlist|tr -d ','|tr -s ' '|cut -f 2,3,4,5,6,7 -d " "|\ sed "s/%20/ /g;s/$/,/;s/,/\r/g;s/(/-/g;s/)/-/g;s/$/,/");\ Set(menu,replace,Choose); (ExitMode)=\ Set(list,close);\ Macro(MPD_SETTILE);\ Timer(MPD_SETTILE,$(UpdateTimeout),0); Back($$)=\ Make(mode,mpd); Choose($$)=\ Exec(mpc play $(Index)); Push($$)=\ Macro(Choose($$)); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/deadbeef.cfg���������������������������������������������������0000644�0002322�0002322�00000006066�12664332726�022157� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for deadbeef management. (Server-mode) % % thanks s_erge http://forum.ubuntu.ru % % STATUS stable % XTEST no % ENV no % SOUND app % FBROWSER v.4i % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio GuiAppName=DeaDBeeF GuiAppBinary=deadbeef GuiAppRun=echo 'A=`ps -ef|grep deadbeef|grep -v grep|grep anyremote`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=deadbeef.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=A music player. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(FBROWSER_IC_INIT);\ Make(var,player_name,by_value,DeaDBeeF);\ Include($(CfgDir)/Utils/aliases-server-player.cfg); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,deadbeef); [Mode]=deadbeef : default_player (EnterMode)=\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(RUN_IF_NEED);\ Macro(SETUP_DEFAULT_PLAYER_NO_FF_FWD);\ Macro(APP_MENU); APP_MENU=\ Set(menu,replace,File Browser,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); % PowerMgmt by Utils/aliases-server.cfg File Browser=\ Timer(DEADBEEF_TITLE,cancel);\ Make(mode,deadbeef_file_browser); DEADBEEF_TITLE=\ Make(var,d_song,deadbeef --nowplaying "%b - %t" 2> /dev/null);\ Make(var,d_author,deadbeef --nowplaying "%a" 2> /dev/null);\ Set(title,$(d_song));\ Set(status,$(d_author)); % Possible variant %1=Emulate(key,AudioLowerVolume) %2=Emulate(key,AudioMute) %3=Emulate(key,AudioRaiseVolume) %DEADBEEF_GETVOL=Make(var,aplayer_volume,deadbeef --status|grep volume|tr -d " "|cut -f 2 -d ":"); PLAY=\ Exec(deadbeef --play-pause 2> /dev/null);\ Macro(DEADBEEF_TITLE);\ Timer(DEADBEEF_TITLE,$(UpdateTimeout),0); RWD=\ Macro(none); FF=\ Macro(none) PREV=\ Exec(deadbeef --prev 2> /dev/null);\ Macro(DEADBEEF_TITLE); NEXT=\ Exec(deadbeef --next 2> /dev/null);\ Macro(DEADBEEF_TITLE); PAUSE=\ Exec(deadbeef --toggle-pause 2> /dev/null); STOP=\ Exec(deadbeef --stop 2> /dev/null); % Override * *=Macro(DEFAULT_HELP_NO_FF_FWD); RUN_IF_NEED=\ Exec(ID=`id -u`;P=`ps -fu $ID|grep deadbeef|grep -v grep|grep -v anyremote|grep -v edit`; \ if [ "x$P" = "x" ]; then deadbeef & fi);\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch deadbeef); RUN_OR_QUIT=\ Timer(DEADBEEF_TITLE,cancel);\ Exec(ID=`id -u`;P=`pgrep -u $ID deadbeef`; \ if [ "x$P" = "x" ]; then deadbeef & else deadbeef --quit 2> /dev/null; fi);\ Set(title,);\ Set(status,); APP_QUIT=\ Exec(deadbeef --quit 2> /dev/null);\ Timer(DEADBEEF_TITLE,cancel);\ Set(title,);\ Set(status,); [ModeEnd] [Mode]=deadbeef_file_browser (EnterMode)=\ Macro(FBROWSER_IC_FILL_LIST);\ Macro(UpdateMenu); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); UpdateMenu=\ Set(menu,add,GoTo,Add,Play,Go Home); Add($$)=\ Exec(deadbeef --queue "$(fbrowser_dir)"/$(Param)); Play($$)=\ Exec(deadbeef "$(fbrowser_dir)"/$(Param)); Back($$)=\ Make(mode,deadbeef); %Push($$) use from aliases-server-fbrowser-v4i.cfg [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/guayadeque.cfg�������������������������������������������������0000644�0002322�0002322�00000020334�12256755311�022560� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for guayadeque management. (Server-mode) % % made by Fabian Frank (onlinezeug@gmx.net) % ---- based on amarok.cfg (initial version) by Carlos Sanchez % STATUS non-stable % XTEST no % SOUND mixer % ENV no % DEF_PLAYER % ALL_IN_ONE % MEDIACENTER audio GuiAppName=Guayadeque GuiAppBinary=guayadeque GuiAppVersion= GuiAppRun=echo 'A=`pgrep guayadeque`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=guayadeque.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Guayadeque Music Player [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(TEST_DBUS_SEND);\ Make(var,player_name,by_value,Guayadeque);\ Include($(CfgDir)/Utils/aliases-server-player.cfg);\ Make(var,cover_size,by_value,);\ Make(var,guayadeque_dbus,if [ "x$(Dbus)" = "xyes" ]; then echo DBUS; else echo NODBUS; fi);\ Make(var,guayadeque_exec,by_value,\ dbus-send --type=method_call --dest=org.mpris.guayadeque /Player);\ Make(var,guayadeque_get,by_value,\ dbus-send --print-reply --type=method_call --dest=org.mpris.guayadeque /Player);\ Make(var,guayadeque_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get guayadeque_layout`;\ if [ "x$V" = "x" ]; then echo "5x1"; else echo $V; fi); (Exit)=\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set guayadeque_layout $(guayadeque_layout)); (Connect)=\ Make(mode,guayadeque_$(guayadeque_layout)); (Disconnect)=\ Timer(GUAYADEQUE_TITLE,cancel); [Mode]=guayadeque_general GUAYADEQUE_TITLE_GENERAL=\ Make(var,alb,$(guayadeque_get) org.freedesktop.MediaPlayer.GetMetadata|awk '/.*album".*/{getline;print}'|grep string|cut -f 2 -d '"');\ Make(var,art,$(guayadeque_get) org.freedesktop.MediaPlayer.GetMetadata|awk '/.*artist".*/{getline;print}'|grep string|cut -f 2 -d '"');\ Make(var,tit,$(guayadeque_get) org.freedesktop.MediaPlayer.GetMetadata|awk '/.*title".*/{getline;print}'|grep string|cut -f 2 -d '"');\ Set(title,$(alb) - $(tit));\ Set(status,$(art)); GUAYADEQUE_SET_VOL=\ Make(var,dummy,sleep 1;echo 0);\ Macro(DEFAULT_VOLUME_GET);\ Set(volume,$(default_mixer_value)); GUAYADEQUE_TIMER=\ Macro(GUAYADEQUE_TITLE);\ Timer(GUAYADEQUE_TITLE,$(UpdateTimeout),0); GUAYADEQUE_TIMER_CANCEL=\ Timer(GUAYADEQUE_TITLE,cancel);\ Set(title,);\ Set(status,); RUN_IF_NEED=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh guayadeque); RUN_OR_QUIT=\ Exec(ID=`id -u`;P=`pgrep -u $ID guayadeque`; \ if [ "x$P" = "x" ]; then \ guayadeque 2> /dev/null&; \ else \ dbus-send --type=method_call --dest=org.mpris.guayadeque / org.freedesktop.MediaPlayer.Quit; \ fi);\ Set(title,);\ Set(status,); RWD=\ Macro(RWD_$(guayadeque_dbus)); PLAY_ONLY=\ Macro(PLAY_$(guayadeque_dbus)); PLAY=\ Macro(PLAY_ONLY);\ Macro(GUAYADEQUE_TIMER); FF=\ Macro(FF_$(guayadeque_dbus)); PREV=\ Macro(PREV_$(guayadeque_dbus));\ Macro(GUAYADEQUE_TITLE); NEXT=\ Macro(NEXT_$(guayadeque_dbus));\ Macro(GUAYADEQUE_TITLE); STOP=\ Macro(GUAYADEQUE_TIMER_CANCEL);\ Macro(STOP_$(guayadeque_dbus)); PAUSE=\ Macro(PAUSE_$(guayadeque_dbus)); APP_QUIT=\ Macro(GUAYADEQUE_TIMER_CANCEL);\ Macro(QUIT_$(guayadeque_dbus)); % % DBUS versions % GUAYADEQUE_SETUP_DBUS=\ Dbus(connect,guaya,org.mpris.guayadeque,/Player,org.freedesktop.MediaPlayer);\ Dbus(connect,guaya2,org.mpris.guayadeque,/,org.freedesktop.MediaPlayer); GETPOS_DBUS=\ Dbus(get,guaya,PositionGet,int,guaya_pos); RWD_DBUS=\ Macro(GETPOS_DBUS);\ Make(var,guaya_pos,expr $(guaya_pos) - 10000);\ Dbus(set,guaya,PositionSet,int,$(guaya_pos)); PLAY_DBUS=\ Dbus(set,guaya,Play); FF_DBUS=\ Macro(GETPOS_DBUS);\ Make(var,guaya_pos,expr $(guaya_pos) + 10000);\ Dbus(set,guaya,PositionSet,int,$(guaya_pos)); PREV_DBUS=\ Dbus(set,guaya,Prev); STOP_DBUS=\ Dbus(set,guaya,Stop); NEXT_DBUS=\ Dbus(set,guaya,Next); PAUSE_DBUS=\ Dbus(set,guaya, Pause); QUIT_DBUS=\ Dbus(set,guaya2,Quit); % % No-DBUS versions % GUAYADEQUE_SETUP_NODBUS=\ Make(none); GETPOS_NODBUS=\ Make(var,guaya_pos,$(guayadeque_get) org.freedesktop.MediaPlayer.PositionGet|grep int32|tr -d ' '|sed 's/int32//'); PLAY_NODBUS=\ Exec($(guayadeque_exec) org.freedesktop.MediaPlayer.Play); RWD_NODBUS=\ Macro(GETPOS_NODBUS);\ Make(var,guaya_pos,expr $(guaya_pos) - 10000);\ Exec($(guayadeque_exec) org.freedesktop.MediaPlayer.PositionSet int32:$(guaya_pos)); FF_NODBUS=\ Macro(GETPOS_NODBUS);\ Make(var,guaya_pos,expr $(guaya_pos) + 10000);\ Exec($(guayadeque_exec) org.freedesktop.MediaPlayer.PositionSet int32:$(guaya_pos)); PREV_NODBUS=\ Exec($(guayadeque_exec) org.freedesktop.MediaPlayer.Prev); STOP_NODBUS=\ Exec($(guayadeque_exec) org.freedesktop.MediaPlayer.Stop); NEXT_NODBUS=\ Exec($(guayadeque_exec) org.freedesktop.MediaPlayer.Next); PAUSE_NODBUS=\ Exec($(guayadeque_exec) org.freedesktop.MediaPlayer.Pause); QUIT_NODBUS=\ Exec(dbus-send --type=method_call --dest=org.mpris.guayadeque / org.freedesktop.MediaPlayer.Quit); APP_PLAY_STATUS=\ Make(var,guayadeque_status,$(guayadeque_get) org.freedesktop.MediaPlayer.GetStatus|awk '/.*struct.*/{getline;print}'|sed 's/int32//'|tr -d ' ');\ Make(var,app_status,if [ "x$(guayadeque_status)" = "x0" ]; then echo playing; else echo paused; fi); Layout 3x4=\ Make(mode,guayadeque_3x4); Layout 7x1=\ Make(mode,guayadeque_7x1); Layout 5x1=\ Make(mode,guayadeque_5x1); [ModeEnd] [Mode]=guayadeque_3x4 : guayadeque_general, default_player SETUP_DEFAULT_PLAYER=\ Set(layout,default,ticker,volume);\ Set(status,);\ Set(title,);\ Set(icons,$(player_name),1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,stop,9,next,*,question,0,pause,#,no);\ Macro(GUAYADEQUE_SETUP_$(guayadeque_dbus));\ Set(font,small);\ Macro(GUAYADEQUE_SET_VOL);\ Macro(GUAYADEQUE_TITLE); APP_MENU=\ Set(menu,replace,Help,Layout 5x1,Layout 7x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,guayadeque_layout,by_value,3x4); % Override 1=Macro(DEFAULT_VOLUME_DOWN);\ Macro(GUAYADEQUE_SET_VOL); 2=Macro(DEFAULT_TOGGLE_MUTE);\ Macro(GUAYADEQUE_SET_VOL); 3=Macro(DEFAULT_VOLUME_UP);\ Macro(GUAYADEQUE_SET_VOL); % PowerMgmt by Utils/aliases-server.cfg Help=\ Set(text,replace,Help, 1 Vol-\n 2 Mute\n 3 Vol+\n 4 Rewind\n5 Play\n* 5 Refresh title\n 6 FF\n 7 Prew\n 8 Stop\n 9 Next\n* * Help\n* # Run/Quit $(player_name)\n 0 Pause\n # Quit $(player_name)); % Force title update * 5=Macro(GUAYADEQUE_TITLE); GUAYADEQUE_TITLE=\ Macro(GUAYADEQUE_TITLE_GENERAL); [ModeEnd] [Mode]=guayadeque_cover GUAYADEQUE_TITLE=\ Macro(GUAYADEQUE_TITLE_GENERAL);\ Macro(APP_COVER, if [ "x$(cover_size)" = "x" ]; then echo 1; else echo 0; fi); APP_COVER=\ Make(var,media_file, $(guayadeque_get) org.freedesktop.MediaPlayer.GetMetadata|\ awk '/.*arturl".*/{getline;print}'|grep string|cut -f 2 -d '"'|cut -f 2 -d ':'|sed 's/"$//;s/^\/\/\//\//');\ Macro(DEFAULT_METADATA_COVER); [ModeEnd] [Mode]=guayadeque_7x1 : guayadeque_general, default_player_7x1, guayadeque_cover APP_MENU=\ Set(menu,replace,Mute,Layout 3x4,Layout 5x1,Help,PowerMgmt);\ Macro(GUAYADEQUE_SETUP_$(guayadeque_dbus));\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,guayadeque_layout,by_value,7x1); [ModeEnd] [Mode]=guayadeque_5x1 : guayadeque_general, default_player_5x1, guayadeque_cover APP_MENU=\ Set(menu,replace,Mute,Layout 3x4,Layout 7x1,Help,PowerMgmt);\ Macro(GUAYADEQUE_SETUP_$(guayadeque_dbus));\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); APP_POST_SETUP=\ Make(var,guayadeque_layout,by_value,5x1); APP_TITLE=\ Macro(GUAYADEQUE_TITLE); PLAY=\ Macro(PLAY_ONLY); [ModeEnd] % % NOT USED % [Mode]=guayadeque_playlist % Found no way to choose track from playlist -- MPRIS support seems to be incompete (EnterMode)=\ ExecAndSet(list,replace,Playlist,$(CfgDir)/Utils/getPlayList.sh org.mpris.guayadeque);\ Make(var,guayadeque_track, dbus-send --print-reply --type=method_call --dest=org.mpris.guayadeque /TrackList org.freedesktop.MediaPlayer.GetCurrentTrack|grep int32|tr -d ' '|sed 's/int32//');\ ExecAndSet(list,select,expr 1 + $(guayadeque_track));\ Set(menu,replace,Choose); Push($$)=\ Macro(Choose($$)) % no such method Choose($$)=\ Exec(qdbus org.mpris.guayadeque /TrackList PlayTrack `expr $(Index) - 1`); Back($$)=\ Set(list,close);\ Make(mode,guayadeque_$(guayadeque_layout)); [ModeEnd] [End] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/amarok-v4.cfg��������������������������������������������������0000644�0002322�0002322�00000026223�12664332726�022236� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for amarok management. (Server-mode) % % Made by Carlos Sanchez (chukysoria@gmail.com) % --- modified to run with amarok/kde4 (johann bauer, johann.bauer1@gmail.com ) % --- --- modified (Dmirty Ashkadov, dmitry.ashkadov@gmail.com) % STATUS stable % XTEST no % SOUND app % ENV no % ALL_IN_ONE % FBROWSER v.4i GuiAppName=Amarok v4 GuiAppBinary=amarok GuiAppVersion=V=`amarok -v|grep KDE|tr -d " "|cut -f 2 -d ":"|cut -f 1 -d "."`; if [ "x$V" = "x4" ]; then echo OK; else echo NOK; fi GuiAppRun=A=`pgrep amarok`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=amarok.png GuiAppType=Application GuiAppDesc=Amarok is the music player for Linux and Unix with an intuitive interface. Amarok makes playing the music you love easier than ever before - and looks good doing it. This configuration supports cover art. This configuration file is for Amarok/KDE4. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(FBROWSER_IC_INIT);\ Make(var, tmp_dir,by_value,/tmp);\ Macro(TEST_IMAGEMAGIC);\ Make(var,kde4_app,by_value,amarok);\ Macro(TEST_KDE4_APP);\ Macro(INIT_VARIABLES); (Exit)=\ Macro(FBROWSER_IC_EXIT); INIT_VARIABLES=\ Make(var,cvDir,by_value,$(tmp_dir)/amarok_covers/);\ Exec(if [ ! -d $(cvDir) ]; then mkdir $(cvDir); fi);\ Make(var,am_track_index,by_value,0);\ Make(var,am_track_index_saved,by_value,-2);\ Make(var,am_num_of_tracks,by_value,-2);\ Make(var,am_saved_mode,by_value,amarok-v4);\ Make(var,am_track_pos,by_value,0);\ Make(var,am_track_pos_old,by_value,0);\ Make(var,am_track_length,by_value,1);\ Make(var,am_volume,by_value,0);\ Make(var,am_cover,by_value,);\ Make(var,am_cover_old,by_value,); MODE_SAVE=\ Make(var,am_saved_mode,by_value,$(Mode)); MODE_LOAD=\ Make(mode,$(am_saved_mode)); AMAROK_V2_RUN_IF=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh amarok); (Connect)=\ Macro(AMAROK_V2_RUN_IF);\ Make(var,cover_size,by_value,128);\ Get(cover_size);\ Make(mode,amarok-v4); (Disconnect)=Macro(AMAROK_V2_STOP_TIMER); InCall($$)=\ Exec(amarok --pause);\ Macro(AMAROK_V2_STOP_TIMER);\ Make(remote,off); EndCall($$)=\ Make(remote,on);\ Exec(amarok --play);\ Macro(AMAROK_V2_START_TIMER); AMAROK_V2_SETINFO=\ Macro(AMAROK_V2_GET_TRACK_INDEX);\ Macro(AMAROK_V2_GET_POSITION);\ Macro(AMAROK_V2_GET_TRACK_LENGTH);\ Macro(AMAROK_V2_UPDATE_STATUS);\ Macro(AMAROK_V2_UPDATE_TITLE, expr $(am_track_index) == $(am_track_index_saved));\ Macro(AMAROK_V2_UPDATE_COVER, expr $(am_track_index) == $(am_track_index_saved));\ Make(var,am_track_index_saved,by_value,$(am_track_index)); % avoid % Macro(AMAROK_V2_UPDATE_PROGRESSBAR);\ -- Android client show volume as temporary floating window % Macro(AMAROK_V2_UPDATE_PLAY_ICON); AMAROK_V2_START_TIMER=Timer(AMAROK_V2_SETINFO,$(UpdateTimeout),0); AMAROK_V2_STOP_TIMER =Timer(AMAROK_V2_SETINFO,cancel); AMAROK_V2_UPDATE_STATUS=\ ExecAndSet(status,min=`expr $(am_track_length) / 60`; sec=`expr $(am_track_length) % 60`; pos_min=`expr $(am_track_pos) / 60`; pos_sec=`expr $(am_track_pos) % 60`; echo "$pos_min:`if [ $pos_sec \< 10 ]; then echo 0; fi`$pos_sec / $min:`if [ $sec \< 10 ]; then echo 0; fi`$sec"); %AMAROK_V2_UPDATE_PROGRESSBAR=\ % ExecAndSet(volume, if [ $(am_track_length) = 0 ]; then echo 0; else expr $(am_track_pos) \* 100 \/ $(am_track_length); fi); % %AMAROK_V2_UPDATE_PLAY_ICON=\ % Make(var,am_play_icon, if [ $(am_track_pos) = $(am_track_pos_old) ]; then echo 'play'; else echo 'pause'; fi);\ % Make(var,am_track_pos_old,by_value,$(am_track_pos));\ % Set(icons,SAME,2,$(am_play_icon)); AMAROK_V2_UPDATE_TITLE=\ ExecAndSet(title,T=`qdbus org.kde.amarok /TrackList GetMetadata $(am_track_index)|grep title:|cut -f 2 -d ":"`; A=`qdbus org.kde.amarok /TrackList GetMetadata $(am_track_index)|grep artist:|cut -f 2 -d ":"`;echo "`expr $(am_track_index) + 1`. $T" by"$A"); AMAROK_V2_UPDATE_COVER=\ Make(var,am_cover, qdbus org.kde.amarok /TrackList GetMetadata $(am_track_index)|grep arturl:|cut -f 2 -d " "|sed "s/%20/ /g"|cut -f 2 -d ":");\ Macro(AMAROK_V2_UPDATE_COVER_SUB, if [ "x$(am_cover)" = "x$(am_cover_old)" ]; then echo 1; else echo 0; fi); AMAROK_V2_UPDATE_COVER_SUB=\ ExecAndSet(cover,noname,F=`basename "$(am_cover)"`; if [ "x$F" = "x" ]; then echo ""; else convert -resize $(cover_size)x$(cover_size) -depth 8 -background transparent "$(am_cover)" "$(cvDir)$F"; echo "$(cvDir)$F"; fi);\ Make(var,am_cover_old,by_value,$(am_cover)); AMAROK_V2_GET_TRACK_INDEX=\ Make(var,am_track_index, qdbus org.kde.amarok /TrackList GetCurrentTrack | tr -d " "); AMAROK_V2_GET_POSITION=\ Make(var,am_track_pos, expr `qdbus org.kde.amarok /Player PositionGet` / 1000); AMAROK_V2_GET_TRACK_LENGTH=\ Make(var,am_track_length,if [ $(am_track_index) \< 0 ]; then echo 0; else expr `qdbus org.kde.amarok /TrackList GetMetadata $(am_track_index)|grep "mtime"|cut -f 2 -d ":"` / 1000; fi); AMAROK_V2_GET_VOLUME=\ Make(var,am_volume,qdbus org.kde.amarok /Player VolumeGet); AMAROK_V2_GET_NUM_OF_TRACKS=\ Make(var,am_num_of_tracks,qdbus org.kde.amarok /TrackList GetLength); CoverSize($$)=\ Make(var,cover_size,by_value,$(Index)); % Main mode ====================================================================== [Mode]=amarok-v4 AM_V2_LAYOUT=\ Set(icons,Amarok,1,prev,2,play,3,next,4,rewind,5,stop,6,forward,7,mute,8,vol_down,9,vol_up,*,question,0,fullscreen,#,folder);\ Set(font,small);\ Set(layout,7x1,choose,2,volume,ticker,up,Vol+,down,Vol-); AM_V2_MENU=\ Set(menu,replace,Shuffle,Repeat,Playlist,Toggle Fullscreen,Track Info,Run Player,Show Player,Hide Player,Quit Player,PowerMgmt,Help);\ Macro(ALLIN1MENU); (EnterMode)=\ Macro(AM_V2_LAYOUT);\ Macro(AMAROK_V2_SETINFO);\ Macro(AM_V2_MENU);\ Macro(AMAROK_V2_START_TIMER); (ExitMode)=\ Macro(AMAROK_V2_STOP_TIMER);\ Make(var,am_track_index_saved,by_value,-2); Back=Set(text,close);\ Macro(AM_V2_MENU); Playlist=\ Macro(MODE_SAVE);\ Make(mode,amarok_playlist_v4); Shuffle=\ Make(var,shuffle_val,P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle`; if [ "x$P" = "xtrue" ]; then echo 0; else echo 1; fi);\ Exec(qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Shuffle $(shuffle_val)); Repeat=\ Make(var,repeat_val,P=`qdbus org.kde.amarok /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.LoopStatus`; if [ "x$P" = "xNone" ]; then echo 1; else echo 0; fi);\ Exec(qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.Repeat $(repeat_val)); Vol+=Exec(qdbus org.kde.amarok /Player VolumeUp 5);\ Macro(AMAROK_V2_GET_VOLUME);\ ExecAndSet(status, echo 'Volume: $(am_volume) %'); Vol-=Exec(qdbus org.kde.amarok /Player VolumeDown 5);\ Macro(AMAROK_V2_GET_VOLUME);\ ExecAndSet(status, echo 'Volume: $(am_volume) %'); % Android support VOL-=Macro(Vol-); VOL+=Macro(Vol+); Toggle Fullscreen=\ Macro(ToggleFullscreen); ToggleFullscreen=\ Set(fullscreen,toggle);\ Set(cover,clear);\ Get(cover_size); Track Info=\ Macro(MODE_SAVE);\ Macro(AMAROK_V2_GET_TRACK_INDEX);\ Make(mode,TrackInfo); CoverSize($$)=\ Make(var,cover_size,by_value,$(Index));\ Macro(AMAROK_V2_UPDATE_COVER_SUB); Run Player=\ Macro(AMAROK_V2_RUN_IF); Quit Player=\ Exec(qdbus org.kde.amarok /MainApplication quit);\ Macro(AMAROK_V2_STOP_TIMER);\ Set(title,);\ Set(status,);\ Set(cover,clear); % Set(volume,0); Show Player=Exec(qdbus org.kde.amarok /amarok/MainWindow show); Hide Player=Exec(qdbus org.kde.amarok /amarok/MainWindow hide); Help=Macro(MODE_SAVE);Make(mode,Help); 1=Exec(qdbus org.kde.amarok /Player Prev);Macro(AMAROK_V2_SETINFO); * 1=Exec(qdbus org.kde.amarok /Player Backward 300000);Macro(AMAROK_V2_SETINFO); 2=Exec(qdbus org.kde.amarok /Player PlayPause);Macro(AMAROK_V2_SETINFO); 3=Exec(qdbus org.kde.amarok /Player Next);Macro(AMAROK_V2_SETINFO); * 3=Exec(qdbus org.kde.amarok /Player Forward 300000);Macro(AMAROK_V2_SETINFO); 4=Exec(qdbus org.kde.amarok /Player Backward 10000);Macro(AMAROK_V2_SETINFO); * 4=Exec(qdbus org.kde.amarok /Player Backward 60000);Macro(AMAROK_V2_SETINFO); 5=Exec(qdbus org.kde.amarok /Player Stop);Macro(AMAROK_V2_SETINFO); 6=Exec(qdbus org.kde.amarok /Player Forward 10000);Macro(AMAROK_V2_SETINFO); * 6=Exec(qdbus org.kde.amarok /Player Forward 60000);Macro(AMAROK_V2_SETINFO); 7=Exec(qdbus org.kde.amarok /Player Mute); 8=Macro(Vol-); 9=Macro(Vol+); #=Macro(Playlist); 0=Macro(ToggleFullscreen); * *=Macro(Help); [ModeEnd] % ================================================================================= [Mode]=amarok_playlist_v4 (EnterMode)=\ Set(list,font,small);\ Set(list,bg,50,70,130);\ Set(list,fg,145,165,230);\ Macro(AMAROK_V2_GET_NUM_OF_TRACKS);\ Macro(AMAROK_V2_GET_TRACK_INDEX);\ Macro(SET_LIST_IF_NOT_EMPTY);\ Macro(SET_LIST_ITEM, expr $(am_track_index) \< 0); % collision for Push() event % Macro(SET_LIST_IF_EMPTY, expr $(am_num_of_tracks) != 0);\ % Macro(SET_LIST_IF_NOT_EMPTY, expr $(am_num_of_tracks) == 0);\ % SET_LIST_ITEM=\ ExecAndSet(list,select, expr $(am_track_index) + 1); %SET_LIST_IF_EMPTY=\ % Set(menu,replace,Add,Refresh);Set(list,replace,Playlist, -- empty --); SET_LIST_IF_NOT_EMPTY=\ Set(menu,replace,Play,Add,Remove,Info,Refresh,Clear);\ ExecAndSet(list,replace,Playlist,$(CfgDir)/Utils/getPlayList.sh); (ExitMode)=Set(list,close); Back($$)=\ Make(mode,amarok-v4); Push($$)=\ Macro(Play($$)) Play($$)=\ Exec(qdbus org.kde.amarok /TrackList PlayTrack `expr $(Index) - 1`); Info($$)=\ Make(var,am_track_index,expr $(Index) - 1);\ Macro(MODE_SAVE);\ Make(mode,TrackInfo); Remove($$)=\ Exec(qdbus org.kde.amarok /TrackList DelTrack `expr $(Index) - 1`);\ Make(mode,amarok_playlist_v4); Add($$)=\ Macro(MODE_SAVE);\ Make(mode,FileBrowser); Clear($$)=\ Macro(AMAROK_V2_GET_NUM_OF_TRACKS);\ Exec(for (( i=0; i<$(am_num_of_tracks); ++i)) do qdbus org.kde.amarok /TrackList DelTrack 0; done);\ Set(menu,replace,Add,Refresh); % Macro(SET_LIST_IF_EMPTY); Refresh($$)=\ Make(mode,amarok_playlist_v4); [ModeEnd] % ================================================================================= [Mode]=TrackInfo (EnterMode)=\ ExecAndSet(text,replace,Track Info,qdbus org.kde.amarok /TrackList GetMetadata $(am_track_index) | sed "s/%20/ /g"); (ExitMode)=\ Set(text,close); Back=Macro(MODE_LOAD); [ModeEnd] % ================================================================================== [Mode]=FileBrowser (EnterMode)=\ Macro(FBROWSER_IC_FILL_LIST);\ Set(menu,replace,GoTo,Add,Go Home);\ Macro(ALLIN1MENU); (ExitMode)=\ Set(iconlist,close); Back($$)=\ Macro(MODE_LOAD); Add($$)=\ Exec(cd "$(fbrowser_dir)"; amarok -a "$(Param)"); GoTo($$)=\ Macro(FBROWSER_IC_GO_TO); Go Home($$)=\ Macro(FBROWSER_IC_GO_HOME); Push($$)=\ Macro(FBROWSER_IC_GO_TO); [ModeEnd] % ================================================================================== [Mode]=Help (EnterMode)=\ Set(text,replace,Help,Manage player by joystick, by keypad or from menu.\n \n 1 - Prev. track\n 2 - Play/Pause\n 3 - Next track\n 4 - Rewind\n 5 - Stop\n 6 - Forward\n 7 - Mute\n 8 - Volume down\n 9 - Volume up\n 0 - Fullscreen\n # - Playlist\n * 1 - Rewind 5 min\n * 3 - Forward 5 min\n * 4 - Rewind 1 min\n * 6 - Forward 1 min\n * * - Help); (ExitMode)=\ Set(text,close); Back=Macro(MODE_LOAD); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/kmplayer.cfg���������������������������������������������������0000644�0002322�0002322�00000007164�12673224605�022260� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for kmplayer management. (Server-mode) % prerequisites: kmplayer, amixer/pactl utility % % % STATUS stable % XTEST no % SOUND mixer % ENV no % FBROWSER v.4i % DEF_VIDEO_PLAYER % ALL_IN_ONE % MEDIACENTER video GuiAppName=Kmplayer GuiAppBinary=kmplayer GuiAppRun=echo 'A=`qdbus 2> /dev/null|grep kmplayer`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi'|sh -s GuiAppIcon=kmplayer.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Media Player for KDE [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-video-player.cfg);\ Make(var,kde4_app,by_value,kmplayer);\ Macro(TEST_KDE4_APP);\ Make(var,app_name,by_value,KMplayer);\ Make(var,do_app_init,by_value,1);\ Make(var,open_file,by_value,);\ Make(var,kmplayer_layout,\ V=`$(CfgDir)/Utils/registry.sh $(TmpDir) get kmplayer_layout`;\ if [ "x$V" = "x" ]; then echo "3x4"; else echo $V; fi);\ Make(var,app_manage_mode,by_value,kmplayer_$(kmplayer_layout)); (Exit)=\ Macro(FBROWSER_IC_EXIT);\ Exec($(CfgDir)/Utils/registry.sh $(TmpDir) set kmplayer_layout $(kmplayer_layout)); (Connect)=\ Make(mode,kmplayer_init); [Mode]=kmplayer_init : default_video_player_init APP_IS_RUN=\ Make(var,app_run,A=`qdbus 2> /dev/null|grep kmplayer`; if [ "x$A" = "x" ]; then echo 0; else echo 1; fi); [ModeEnd] [Mode]=kmplayer_general APP_START_IF=\ Set(title,$(open_file));\ Exec(P=`qdbus|grep kmplayer`;\ if [ "x$P" = "x" ]; then cd "$(fbrowser_dir)"; kmplayer $(open_file) 2> /dev/null & fi); % Application window should be present in output of "wmctrl -l" APP_RAISE=\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch kmplayer); APP_QUIT=\ Exec(qdbus `qdbus|grep kmplayer` /MainApplication org.kde.KApplication.quit); APP_FULLSCREEN=\ Exec(qdbus `qdbus|grep kmplayer` /kmplayer/MainWindow_1 org.kde.KMainWindow.activateAction view_fullscreen > /dev/null); PLAY=\ Exec(qdbus `qdbus|grep kmplayer` /kmplayer/MainWindow_1 org.kde.KMainWindow.activateAction play > /dev/null); RWD=\ Exec(KMP=`qdbus|grep kmplayer`;\ POS=`qdbus $KMP /KMPlayerPart org.freedesktop.DBus.Properties.Get org.kde.KMediaPlayer position`;\ NEWPOS=`expr $POS - 10000`;qdbus $KMP /KMPlayerPart org.kde.KMediaPlayer.seek $NEWPOS > /dev/null); FF=\ Exec(KMP=`qdbus|grep kmplayer`;\ POS=`qdbus $KMP /KMPlayerPart org.freedesktop.DBus.Properties.Get org.kde.KMediaPlayer position`;\ NEWPOS=`expr $POS + 10000`;qdbus $KMP /KMPlayerPart org.kde.KMediaPlayer.seek $NEWPOS > /dev/null); STOP=\ Exec(qdbus `qdbus|grep kmplayer` /kmplayer/MainWindow_1 org.kde.KMainWindow.activateAction stop > /dev/null); PAUSE=\ Exec(qdbus `qdbus|grep kmplayer` /kmplayer/MainWindow_1 org.kde.KMainWindow.activateAction pause > /dev/null); Layout 3x4=\ Make(mode,kmplayer_3x4); Layout 5x1=\ Make(mode,kmplayer_5x1); [ModeEnd] [Mode]=kmplayer_3x4 : kmplayer_general,default_video_player APP_POST_SETUP=\ Make(var,kmplayer_layout,by_value,3x4);\ Make(var,app_manage_mode,by_value,kmplayer_$(kmplayer_layout)); APP_MENU=\ Set(menu,replace,Layout 5x1,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); [ModeEnd] [Mode]=kmplayer_5x1 : kmplayer_general,default_video_player_5x1 APP_POST_SETUP=\ Make(var,kmplayer_layout,by_value,5x1);\ Make(var,app_manage_mode,by_value,kmplayer_$(kmplayer_layout)); APP_MENU=\ Set(menu,replace,Help,Mute,Quit,Fullscreen,Files,Layout 3x4,IMDB,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); Fullscreen=\ Macro(APP_FULLSCREEN); [ModeEnd] [End] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/template-pix-viewer.cfg����������������������������������������0000644�0002322�0002322�00000004734�12664332726�024350� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote template configuration file for picture viewer management. (Server-mode) % % STATUS testing % XTEST no % SOUND no % ENV no % FBROWSER v.4i % DEF_PIX_VIEWER % ALL_IN_ONE % MEDIACENTER photo GuiAppName=Picture Viewer GuiAppBinary=pixviewer.exe GuiAppRun=P=`ps -ef|grep pixviewer.exe|grep -v grep|grep -v anyremote|grep -v edit`; if [ "x$P" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=some_app.png GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=anyRemote template configuration file for picture viewer management [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v4i.cfg);\ Macro(FBROWSER_IC_INIT);\ Include($(CfgDir)/Utils/aliases-server-pix-viewer.cfg);\ Make(var,app_name,by_value,Picture Viewer);\ Make(var,open_file,by_value,);\ Make(var,app_manage_mode,by_value,pixviewer_manage); (Exit)=\ Macro(FBROWSER_IC_EXIT); (Connect)=\ Make(mode,pixviewer_init); [Mode]=pixviewer_init : default_pixviewer_init APP_IS_RUN=\ Make(var,app_run,ps -ef|grep pixviewer.exe|grep -v grep|grep -v anyremote|grep -v edit|head -1|wc -l); [ModeEnd] [Mode]=pixviewer_manage : default_pixviewer % (EnterMode) by Utils/aliases-server-pix-viewer.cfg APP_SETUP=\ Make(none); APP_START_IF=\ Make(var,app_run,ps -ef|grep pixviewer.exe|grep -v grep|grep -v anyremote|grep -v edit|head -1|wc -l);\ Exec(if [ "x$(app_run)" = "x0" ]; then \ cd "$(fbrowser_dir)";pixviewer.exe $(open_file)& \ fi 2> /dev/null); % Application window should be present in output of "wmctrl -l" APP_RAISE=\ Exec(echo "Raise Application Window");\ Exec($(CfgDir)/Utils/run-or-switch-to.sh -switch pixviewer.exe); APP_QUIT=\ Exec(echo "Kill application"); APP_FULLSCREEN=\ Exec(echo "Fullscreen Application Window"); APP_MENU=\ Set(menu,replace,Add,Some,Custom,Items,PowerMgmt);\ Macro(ALLIN1MENU);\ Macro(MEDIACENTER_MENU); %PIX_FILE_BROWSER by Utils/aliases-server-pix-viewer.cfg PIX_PREV =Exec(echo "Previous Picture"); PIX_NEXT =Exec(echo "Next Picture"); PIX_FIRST =Exec(echo "First Picture"); PIX_LAST =Exec(echo "Last Picture"); PIX_ZOOM_IN =Exec(echo "Zoom In"); PIX_ZOOM_OUT=Exec(echo "Zoom Out"); PIX_FIT =Exec(echo "Zoom To Fit"); PIX_ROTATE =Exec(echo "Rotate"); % PowerMgmt by Utils/aliases-server.cfg Add=\ Exec(echo "Custom Action 1"); Some=\ Exec(echo "Custom Action 2"); Custom=\ Exec(echo "Custom Action 3"); Items=\ Exec(echo "Custom Action 4"); [ModeEnd] [End] ������������������������������������anyremote-6.7.1/cfg-data/Server-mode/fileManager.cfg������������������������������������������������0000644�0002322�0002322�00000012705�12664332726�022647� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for to make basic file operations with help of % GUI of Android/J2ME client. (Server-mode) % % STATUS stable % XTEST no % SOUND no % ENV no % FBROWSER v.3 GuiAppName=FileManager GuiAppBinary=true GuiAppIcon=fileopen.png GuiAppType=Custom GuiAppProtocols=Server GuiAppDesc=Simple file manager. Browsing directory structure with basic file operations. [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Include($(CfgDir)/Utils/aliases-server-fbrowser-v3.cfg);\ Macro(FBROWSER_INIT);\ Make(var,list_index,by_value,1); (Exit)=\ Macro(FBROWSER_EXIT); (Connect)=\ Set(parameter,debug,on);\ Set(icons,File manager,\ 1,folder,2,fullscreen,3,default,\ 4,default,5,default,6,default,\ 7,default,8,default,9,default,\ *,question,0,no,#,default);\ Set(hints,\ 1,file browser,\ *,help (press twice));\ ExecAndSet(title,sleep 2);\ Macro(FBROWSER_FILL_LIST);\ Macro(UPDATE_MENU); FMAN_FILL_LIST2=\ ExecAndSet(list,add,SAME,cd "$(fbrowser_dir2)";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep '/');\ ExecAndSet(list,add,SAME,cd "$(fbrowser_dir2)";ls -F --quoting-style=shell|sed 's/\*//;s/,/\r/g;s/@//;s/$/,/'|grep -v '/'); %InCall($$)=\ % Make(remote,off); %EndCall($$)=\ % Make(remote,on); UPDATE_MENU=\ Set(menu,replace,GoTo,File info,Copy,Move,Delete,Make Dir,View,Exec,Go Home); SET_INDEX=\ Set(list,select,$(list_index)); STORE_INDEX=\ Make(var,list_index,by_value,$(Index)); Delete($$)=\ Macro(STORE_INDEX);\ Set(list,replace,SAME,..);\ Make(var,dummy,cd "$(fbrowser_dir)";rm -rf "$(Param)";echo DONE;);\ Macro(FBROWSER_FILL_LIST);\ Macro(SET_INDEX); Back($$)=\ Set(list,close); Back=\ Set(text,close); GoTo($$)=\ Macro(FBROWSER_GO_TO); Go Home($$)=\ Macro(FBROWSER_GO_HOME); %Push($$) use from aliases-server-fbrowser-v3i.cfg Cancel=\ Make(exit); 0=Make(exit); 1=Macro(FBROWSER_FILL_LIST);\ Macro(UPDATE_MENU); 2=Set(fullscreen,toggle); * *=Set(text,replace,Help, Menu-driven basic\nfile operations.\n1 - enter file manager screen\n2 - toggle fullscreen); % ----------------------------------------------------------------------- Exec($$)=\ Macro(STORE_INDEX);\ Make(var,execfile,by_value,$(Param));\ Set(editfield,Enter parameters,Parameters,);\ Make(mode,EXEC); [Mode]=EXEC Ok($$)=\ ExecAndSet(text,replace,Results,cd "$(fbrowser_dir)";./$(execfile) $(Param)); Back=\ Make(mode,default); Back($$)=\ Make(mode,default); (ExitMode)=\ Macro(FBROWSER_FILL_LIST);\ Macro(SET_INDEX);\ Macro(UPDATE_MENU); [ModeEnd] % ----------------------------------------------------------------------- Make Dir($$)=\ Macro(STORE_INDEX);\ Set(editfield,Enter name,New Directory,);\ Make(mode,MKDIR); [Mode]=MKDIR Ok($$)=\ Make(var,dummy,cd "$(fbrowser_dir)";mkdir $(Param);echo DONE;);\ Macro(MKDIR_DONE); Back($$)=\ Macro(MKDIR_DONE); MKDIR_DONE=\ Macro(FBROWSER_FILL_LIST);\ Macro(SET_INDEX);\ Macro(UPDATE_MENU);\ Make(mode,default); [ModeEnd] % ----------------------------------------------------------------------- File info($$)=\ Macro(STORE_INDEX);\ Make(var,infofile,by_value,$(Param));\ Make(mode,FINFO); [Mode]=FINFO (EnterMode)=\ ExecAndSet(text,replace,File info,file "$(fbrowser_dir)"/$(infofile)>$(TmpDir)/ar_infodata.tmp);\ ExecAndSet(text,add,SAME,ls -l "$(fbrowser_dir)"/$(infofile)); Back=\ Make(mode,default); (ExitMode)=\ Macro(FBROWSER_FILL_LIST);\ Macro(SET_INDEX);\ Macro(UPDATE_MENU); [ModeEnd] % ----------------------------------------------------------------------- View($$)=\ Macro(STORE_INDEX);\ Make(var,viewfile,by_value,$(Param));\ Make(mode,VIEW); [Mode]=VIEW (EnterMode)=\ ExecAndSet(text,replace,File View,cat "$(fbrowser_dir)"/$(viewfile)); Back=\ Make(mode,default); (ExitMode)=\ Macro(FBROWSER_FILL_LIST);\ Macro(SET_INDEX);\ Macro(UPDATE_MENU); [ModeEnd] % ----------------------------------------------------------------------- Copy($$)=\ Macro(STORE_INDEX);\ Make(var,copyfile,by_value,$(Param));\ Make(mode,COPY) [Mode]=COPY (EnterMode)=\ Make(var,fbrowser_dir2,by_value,$(fbrowser_dir));\ Set(list,replace,Copy To,..);\ Macro(FMAN_FILL_LIST2);\ Set(menu,replace,GoTo,Copy To); GoTo($$)=\ Make(var,tmpdir,by_value,$(Param));\ Make(var,fbrowser_dir2,cd "$(fbrowser_dir2)";if [ -d "$(tmpdir)" ]; then cd "$(tmpdir)";fi;pwd;);\ Set(list,replace,SAME,..);\ Macro(FMAN_FILL_LIST2); Copy To($$)=\ Make(var,copytmp,by_value,$(Param));\ Make(var,dummy,cp "$(fbrowser_dir)"/$(copyfile) "$(fbrowser_dir2)"/$(copytmp);echo DONE;);\ Make(mode,default); Back($$)=\ Make(mode,default); (ExitMode)=\ Macro(FBROWSER_FILL_LIST);\ Macro(SET_INDEX);\ Macro(UPDATE_MENU); [ModeEnd] % ----------------------------------------------------------------------- Move($$)=\ Macro(STORE_INDEX);\ Make(var,movefile,by_value,$(Param));\ Make(mode,MOVE); [Mode]=MOVE (EnterMode)=\ Make(var,fbrowser_dir2,by_value,$(fbrowser_dir));\ Set(list,replace,Move To,..);\ Macro(FMAN_FILL_LIST2);\ Set(menu,replace,GoTo,Move To); GoTo($$)=\ Make(var,tmpdir,by_value,$(Param));\ Make(var,fbrowser_dir2,cd "$(fbrowser_dir2)";if [ -d "$(tmpdir)" ]; then cd "$(tmpdir)";fi;pwd;);\ Set(list,replace,SAME,..);\ Macro(FMAN_FILL_LIST2); Move To($$)=\ Make(var,movetmp,by_value,$(Param));\ Make(var,dummy,mv "$(fbrowser_dir)"/$(movefile) "$(fbrowser_dir2)"/$(movetmp);echo DONE;);\ Make(mode,default); Back($$)=\ Make(mode,default); (ExitMode)=\ Macro(FBROWSER_FILL_LIST);\ Macro(SET_INDEX);\ Macro(UPDATE_MENU); [ModeEnd] [End] �����������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/mpris.cfg������������������������������������������������������0000644�0002322�0002322�00000015242�12120355624�021553� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for management of MPRIS-compatible players. (Server-mode) % % STATUS nonstable % XTEST no % SOUND app/amixer % ENV no % ALL_IN_ONE % TODO Wait MPRIS v2.0 to support playlist operations (v1 do not allow to select track in playlist) GuiAppName=MPRIS GuiAppBinary=true GuiAppType=Application GuiAppProtocols=Server GuiAppDesc=Manage appliucation through MPRIS (Media Player Remote Interfacing Specification) [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER);\ Macro(SETUP_DEFAULT_POWER_MANAGEMENT);\ Macro(TEST_QDBUS);\ Make(var,mpris_volume,by_value,-1);\ Make(var,mpris_app,by_value,---); (Connect)=\ Make(mode,mpris); [Mode]=mpris (EnterMode)=\ Set(layout,default);\ Set(status,$(mpris_app));\ Set(icons,MPRIS,1,vol_down,2,mute,3,vol_up,4,rewind,5,play,6,forward,7,prev,8,pause,9,next,*,question,0,stop,#,no);\ Macro(MPRIS_MENU); Cancel=\ Make(exit); MPRIS_MENU=\ Set(menu,replace,Browse MPRIS,Run App,Repeat,Random,PowerMgmt);\ Macro(ALLIN1MENU); MPRIS_DELTIMER=\ Timer(MPRIS_SETTITLE,cancel); MPRIS_SETTITLE=\ Make(var,artist,TN=`qdbus org.mpris.$(mpris_app) /TrackList GetCurrentTrack 2> /dev/null`; \ if [ "x$TN" != "x" ]; then qdbus org.mpris.$(mpris_app) /TrackList GetMetadata $TN 2> /dev/null|grep artist|cut -f 2 -d ":"; fi);\ Make(var,title, TN=`qdbus org.mpris.$(mpris_app) /TrackList GetCurrentTrack 2> /dev/null`; \ if [ "x$TN" != "x" ]; then qdbus org.mpris.$(mpris_app) /TrackList GetMetadata $TN 2> /dev/null|grep title |cut -f 2 -d ":"; fi);\ Make(var,album, TN=`qdbus org.mpris.$(mpris_app) /TrackList GetCurrentTrack 2> /dev/null`; \ if [ "x$TN" != "x" ]; then qdbus org.mpris.$(mpris_app) /TrackList GetMetadata $TN 2> /dev/null|grep album |cut -f 2 -d ":"; fi);\ Set(title,$(album) - $(title));\ Set(status,$(artist)); MPRIS_POS=\ Make(var,mpris_pos,qdbus org.mpris.$(mpris_app) /Player PositionGet 2> /dev/null); MPRIS_GETVOL=\ Make(var,mpris_vol,qdbus org.mpris.$(mpris_app) /Player VolumeGet|tr -d '\n' 2> /dev/null); Back=\ Set(text,close);\ Macro(MPRIS_MENU); Back($$)=\ Set(list,close);\ Macro(MPRIS_MENU); 1=Macro(MPRIS_GETVOL);\ Make(var,mpris_vol,echo "$(mpris_vol)-5"|bc);\ Exec(qdbus org.mpris.$(mpris_app) /Player VolumeSet $(mpris_vol)); % VolumeGet add \n to value. Use some tricks to strip it 2=Make(var,mpris_volume,\ if [ "x$(mpris_volume)" = "x-1" ] || [ "x$(mpris_volume)" = "x" ]; \ then \ qdbus org.mpris.$(mpris_app) /Player VolumeGet;qdbus org.mpris.$(mpris_app) /Player VolumeSet 0; \ else \ qdbus org.mpris.$(mpris_app) /Player VolumeSet $(mpris_volume); echo "-1"; fi);\ Make(var,mpris_volume,echo "$(mpris_volume) an-trick-to-strip-new-line"|tr -d '\n'|cut -f 1 -d ' '); 3=Macro(MPRIS_GETVOL);\ Make(var,mpris_vol,echo "$(mpris_vol)+5"|bc);\ Exec(qdbus org.mpris.$(mpris_app) /Player VolumeSet $(mpris_vol) 2> /dev/null); 4=Macro(MPRIS_POS);\ Make(var,mpris_pos,echo "$(mpris_pos)-10000"|bc);\ Exec(qdbus org.mpris.$(mpris_app) /Player PositionSet $(mpris_pos) 2> /dev/null);\ Macro(MPRIS_SETTITLE); 5=Exec(qdbus org.mpris.$(mpris_app) /Player Play 2> /dev/null);\ Macro(MPRIS_SETTITLE);\ Timer(MPRIS_SETTITLE,$(UpdateTimeout),0); 6=Macro(MPRIS_POS);\ Make(var,mpris_pos,echo "$(mpris_pos)+10000"|bc);\ Exec(qdbus org.mpris.$(mpris_app) /Player PositionSet $(mpris_pos) 2> /dev/null);\ Macro(MPRIS_SETTITLE); 7=Exec(qdbus org.mpris.$(mpris_app) /Player Prev 2> /dev/null);\ Macro(MPRIS_SETTITLE); 8=Exec(qdbus org.mpris.$(mpris_app) /Player Pause 2> /dev/null);\ Macro(MPRIS_SETTITLE); 9=Exec(qdbus org.mpris.$(mpris_app) /Player Next 2> /dev/null);\ Macro(MPRIS_SETTITLE); * *=Set(text,replace,Help,1 - Vol-\n2 - Mute\n3 - Vol+\n4 - Rewind\n5 - Play\n6 - FF\n7 - Previous\n8 - Pause\n9 - Next\n* * - Help\n0 - Stop\n# - Kill app\n); 0=Exec(qdbus org.mpris.$(mpris_app) /Player Stop) #=Exec(killall $(mpris_app)) % PowerMgmt by Utils/aliases-server.cfg Browse MPRIS=\ ExecAndSet(list,replace,MPRIS apps,qdbus|grep mpris|sed 's/org.mpris.//;s/$/,/');\ Set(menu,replace,Choose,Kill); Run App=\ Set(list,replace,MPRIS apps,Amarok,Audacious,Clementine,Dragon,Kaffeine,QMMP,VLC);\ Set(menu,replace,Start); Choose($$)=\ Set(list,close);\ Make(var,mpris_app,by_value,$(Param));\ Make(var,mpris_volume,by_value,-1);\ Set(status,$(mpris_app));\ Macro(MPRIS_MENU); Kill($$)=\ Set(list,close);\ Exec(qdbus org.mpris.$(Param) / Quit);\ Macro(MPRIS_MENU); % % specify apps in non-parametrized way % Start(1,Amarok)=\ Set(list,close);\ Make(var,mpris_app,by_value,amarok);\ Set(status,$(mpris_app));\ Make(var,mpris_volume,by_value,-1);\ Exec(amarok);\ Macro(MPRIS_MENU); Start(2,Audacious)=\ Set(list,close);\ Make(var,mpris_app,by_value,audacious);\ Set(status,$(mpris_app));\ Make(var,mpris_volume,by_value,-1);\ Exec(audacious);\ Macro(MPRIS_MENU); Start(3,Clementine)=\ Set(list,close);\ Make(var,mpris_app,by_value,clementine);\ Set(status,$(mpris_app));\ Make(var,mpris_volume,by_value,-1);\ Exec(clementine);\ Macro(MPRIS_MENU); Start(4,Dragon)=\ Set(list,close);\ Make(var,mpris_app,by_value,dragon);\ Set(status,$(mpris_app));\ Make(var,mpris_volume,by_value,-1);\ Exec(dragon);\ Macro(MPRIS_MENU); Start(5,Kaffeine)=\ Set(list,close);\ Make(var,mpris_app,by_value,kaffeine);\ Set(status,$(mpris_app));\ Exec(kaffeine);\ Macro(MPRIS_MENU); Start(6,QMMP)=\ Set(list,close);\ Make(var,mpris_app,by_value,qmmp);\ Set(status,$(mpris_app));\ Make(var,mpris_volume,by_value,-1);\ Exec(qmmp);\ Macro(MPRIS_MENU); Start(7,VLC)=\ Set(list,close);\ Make(var,mpris_app,by_value,vlc);\ Set(status,$(mpris_app));\ Make(var,mpris_volume,by_value,-1);\ Exec(vlc --control dbus);\ Macro(MPRIS_MENU); Repeat=\ Make(mode,mpris_repeat); Random=\ Make(mode,mpris_random); [Mode]=mpris_repeat (EnterMode)=\ Set(list,replace,Repeat,Yes,No); Back($$)=\ Set(list,close);\ Make(mode,mpris); Push($$)=\ Macro(Choose($$)); # depends on MPRIS version Random/SetRandom are used Choose($$)=\ Set(list,close);\ Exec(qdbus org.mpris.$(mpris_app) /TrackList SetLoop `echo $(Param)|sed 's/Yes/true/;s/No/false/'`);\ Exec(qdbus org.mpris.$(mpris_app) /TrackList Loop `echo $(Param)|sed 's/Yes/true/;s/No/false/'`);\ Make(mode,mpris); [ModeEnd] [Mode]=mpris_random (EnterMode)=\ Set(list,replace,Random,Yes,No); Push($$)=\ Macro(Choose($$)); # depends on MPRIS version Loop/SetLoop are used Choose($$)=\ Set(list,close);\ Exec(qdbus org.mpris.$(mpris_app) /TrackList SetRandom `echo $(Param)|sed 's/Yes/true/;s/No/false/'`);\ Exec(qdbus org.mpris.$(mpris_app) /TrackList Random `echo $(Param)|sed 's/Yes/true/;s/No/false/'`);\ Make(mode,mpris); [ModeEnd] [End] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/cfg-data/Server-mode/miro.cfg�������������������������������������������������������0000644�0002322�0002322�00000004063�12073567677�021412� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������% % anyremote configuration file for Miro player (Server mode) % % STATUS unknown % XTEST yes % SOUND mixer % ENV no % ALL_IN_ONE GuiAppName=Miro GuiAppBinary=miro GuiAppRun= A=`pgrep miro.real|grep -v grep`; if [ "x$A" = "x" ]; then echo NOK; else echo OK; fi GuiAppIcon=miro.png GuiAppType=Application GuiAppProtocols=Server [Protocol]=Server (Init)=\ Include($(CfgDir)/Utils/aliases-server.cfg);\ Macro(SETUP_DEFAULT_MIXER); (Connect)=\ Make(mode,miro); [Mode]=miro (EnterMode)=\ Set(icons,Miro,\ 1,vol_down,2,up,3,vol_up,\ 4,left,5,play,6,right,\ 7,down,8,down,9,up,\ *,question,0,stop,#,folder);\ Set(layout,default);\ Set(title,);\ Set(status,);\ Set(menu,replace,Fullscreen,Toggle Mute,Menu,Escape,Enter,Quit Miro);\ Macro(ALLIN1MENU);\ Macro(MIRO_RUN); Cancel=\ Make(exit); Back=\ Set(text,close);\ Set(menu,replace,Fullscreen,Toggle Mute,Menu,Escape,Enter,Quit Miro);\ Macro(ALLIN1MENU); Toggle Mute=\ Macro(DEFAULT_TOGGLE_MUTE) Quit Miro=\ Exec(pkill miro.real) Menu=\ Emulate(key,F10); Escape=\ Emulate(key,Escape); Enter=\ Emulate(key,Return); Fullscreen=\ Emulate(keydown,Control_L);Emulate(key,f);Emulate(keyup,Control_L); 1=Macro(DEFAULT_VOLUME_DOWN) 2=Emulate(key,Up); 3=Macro(DEFAULT_VOLUME_UP) 4=Emulate(key,Left); 5=Emulate(key,F10,sleep,10000,key,Right,sleep,10000,key,Right,sleep,10000,key,Right,sleep,10000,key,Down,sleep,10000,key,Return); 6=Emulate(key,Right); 7=Emulate(key,Tab); 8=Emulate(key,Down); 9=Emulate(keydown,Shift_L);Emulate(key,Tab);Emulate(keyup,Shift_L); * *=Set(text,replace,Help, 1 Vol-\n2 Up\n3 Vol+\n4 Left\n5 Enter\n*5 Play (working non-stable)\n6 Rigth\n7 Shift+Tab\n8 Down\n9 Tab\n0 \n** Help\n*# Run/Quit Miro\n# Switch panel (F6)\nUse 7,9 to move up/down \nthrough groups in left panel); * #=Macro(MIRO_RUN_STOP) 0=Emulate(keydown,Control_L);Emulate(key,d);Emulate(keyup,Control_L); #=Emulate(key,F6); MIRO_RUN=\ Exec(P=`pgrep miro.real`; if [ "x$P" = "x" ]; then miro& fi); MIRO_RUN_STOP=\ Exec(P=`pgrep miro.real`; if [ "x$P" = "x" ]; then miro& else pkill miro.real; fi); [ModeEnd] [End] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/install-sh��������������������������������������������������������������������������0000755�0002322�0002322�00000033255�12100021545�016100� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/INSTALL�����������������������������������������������������������������������������0000644�0002322�0002322�00000001532�12061426052�015126� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������INSTALL ================== Source code of anyRemote can be retrieved from SVN svn co https://anyremote.svn.sourceforge.net/svnroot/anyremote/anyremote/trunk anyremote or as *tar.gz from https://sourceforge.net/projects/anyremote/files/anyremote/ It is suggested to read the documentation in doc-html directory before anyRemorte usage. If source code was retrieved from SVN it needs to create files for configure: aclocal autoconf automake -ac If source code was retrieved as *.tar.gz it is possible to start directrly from configure: ./configure --prefix=/usr To compile the code, type: make To install the application, type: su -c "make install" If case of error: configure: error: cannot find install-sh or install.sh in "." "./.." "./../.." it needs to start from aclocal; autoconf; automake -ac commands. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/Makefile.in�������������������������������������������������������������������������0000644�0002322�0002322�00000064533�13231303627�016156� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # anyRemote - a bluetooth remote for your PC. # # Copyright (C) 2007-2018 Mikhail Fedotov <anyremote@mail.ru> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog \ INSTALL NEWS README TODO compile config.guess config.sub \ depcomp install-sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR_EXTRAFLAGS = @AR_EXTRAFLAGS@ AR_EXTRALIBS = @AR_EXTRALIBS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AVAHI_CFLAGS = @AVAHI_CFLAGS@ AVAHI_LIBS = @AVAHI_LIBS@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_GLIB_CFLAGS = @DBUS_GLIB_CFLAGS@ DBUS_GLIB_LIBS = @DBUS_GLIB_LIBS@ DBUS_LIBS = @DBUS_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ GLIB_LIBS = @GLIB_LIBS@ GLIB_MKENUMS = @GLIB_MKENUMS@ GOBJECT_QUERY = @GOBJECT_QUERY@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = src EXTRA_DIST = INSTALL NEWS README COPYING AUTHORS TODO anyremote.1.gz ChangeLog doc-html keymaps cfg-data specs all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-data-local install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-local .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-data-local install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-local .PRECIOUS: Makefile install-data-local: test -z $(DESTDIR)$(pkgdatadir) || mkdir -p -- . $(DESTDIR)$(pkgdatadir) test -z $(DESTDIR)$(docdir) || mkdir -p -- . $(DESTDIR)$(docdir) cp -r cfg-data $(DESTDIR)$(pkgdatadir) rm -rf $(DESTDIR)$(pkgdatadir)/cfg-data/obsoleted cp -r doc-html ChangeLog README COPYING AUTHORS $(DESTDIR)$(docdir)/ find $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(docdir) -type f -exec chmod 644 {} \; chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/all-in-1.py chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/generate_cover.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/generate_poster.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/getPlayList.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/get-installed.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/message.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/pulse-audio-ctl.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/registry.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/run-or-switch-to.sh chmod a+x $(DESTDIR)$(pkgdatadir)/cfg-data/Utils/weather.sh find $(DESTDIR)$(pkgdatadir) $(DESTDIR)$(docdir) -type d -exec chmod 755 {} \; test -z $(DESTDIR)$(datadir)/man/man1 || mkdir -p -- . $(DESTDIR)$(datadir)/man/man1 cp -r anyremote.1.gz $(DESTDIR)$(datadir)/man/man1 chmod 644 $(DESTDIR)$(datadir)/man/man1/anyremote.1.gz uninstall-local: rm -rf $(DESTDIR)$(pkgdatadir) rm -rf $(DESTDIR)$(docdir) rm -f $(DESTDIR)$(datadir)/man/man1/anyremote.1.gz # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/configure���������������������������������������������������������������������������0000755�0002322�0002322�00000663344�13231303630�016017� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for anyremote 6.7.1. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 </dev/null exec 6>&1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='anyremote' PACKAGE_TARNAME='anyremote' PACKAGE_VERSION='6.7.1' PACKAGE_STRING='anyremote 6.7.1' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="src/main.c" # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> #ifdef HAVE_SYS_TYPES_H # include <sys/types.h> #endif #ifdef HAVE_SYS_STAT_H # include <sys/stat.h> #endif #ifdef STDC_HEADERS # include <stdlib.h> # include <stddef.h> #else # ifdef HAVE_STDLIB_H # include <stdlib.h> # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include <memory.h> # endif # include <string.h> #endif #ifdef HAVE_STRINGS_H # include <strings.h> #endif #ifdef HAVE_INTTYPES_H # include <inttypes.h> #endif #ifdef HAVE_STDINT_H # include <stdint.h> #endif #ifdef HAVE_UNISTD_H # include <unistd.h> #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS AR_EXTRALIBS AR_EXTRAFLAGS AVAHI_LIBS AVAHI_CFLAGS DBUS_GLIB_LIBS DBUS_GLIB_CFLAGS DBUS_LIBS DBUS_CFLAGS GLIB_COMPILE_RESOURCES GLIB_MKENUMS GOBJECT_QUERY GLIB_GENMARSHAL GLIB_LIBS GLIB_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH host_os host_vendor host_cpu host build_os build_vendor build_cpu build PKG_CONFIG LIBOBJS EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_bluetooth enable_xtest enable_iconv enable_glib enable_glibtest enable_dbus enable_avahi ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GLIB_CFLAGS GLIB_LIBS DBUS_CFLAGS DBUS_LIBS DBUS_GLIB_CFLAGS DBUS_GLIB_LIBS AVAHI_CFLAGS AVAHI_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures anyremote 6.7.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/anyremote] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of anyremote 6.7.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-bluetooth disable bluetooth support --disable-xtest disable xtest support --disable-iconv disable iconv support --disable-glib disable glib support, impiles disable-dbus --disable-glibtest do not try to compile and run a test GLIB program --disable-dbus disable dbus support, impiles disable-avahi --disable-avahi disable avahi support Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> LIBS libraries to pass to the linker, e.g. -l<library> CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> CPP C preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config GLIB_LIBS linker flags for GLIB, overriding pkg-config DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config DBUS_LIBS linker flags for DBUS, overriding pkg-config DBUS_GLIB_CFLAGS C compiler flags for DBUS_GLIB, overriding pkg-config DBUS_GLIB_LIBS linker flags for DBUS_GLIB, overriding pkg-config AVAHI_CFLAGS C compiler flags for AVAHI, overriding pkg-config AVAHI_LIBS linker flags for AVAHI, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF anyremote configure 6.7.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_find_uintX_t LINENO BITS VAR # ------------------------------------ # Finds an unsigned integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_uintX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 $as_echo_n "checking for uint$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : case $ac_type in #( uint$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_uintX_t # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case <limits.h> declares $2. For example, HP-UX 11i <limits.h> declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer <limits.h> to <assert.h> if __STDC__ is defined, since <limits.h> exists even on freestanding compilers. */ #ifdef __STDC__ # include <limits.h> #else # include <assert.h> #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by anyremote $as_me 6.7.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='anyremote' VERSION='6.7.1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html> # <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html> mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542> Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: <http://www.gnu.org/software/coreutils/>. If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Checks for programs. for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdio.h> int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdarg.h> #include <stdio.h> struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Checks for libraries. # Checks for header files. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since # <limits.h> exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include <limits.h> #else # include <assert.h> #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since # <limits.h> exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include <limits.h> #else # include <assert.h> #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdlib.h> #include <stdarg.h> #include <string.h> #include <float.h> int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <string.h> _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdlib.h> _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ctype.h> #include <stdlib.h> #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } if ${ac_cv_header_sys_wait_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <sys/types.h> #include <sys/wait.h> #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_sys_wait_h=yes else ac_cv_header_sys_wait_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 $as_echo "$ac_cv_header_sys_wait_h" >&6; } if test $ac_cv_header_sys_wait_h = yes; then $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi CFLAGS="$CFLAGS -I/usr/local/include -Wall -D_REENTRANT -O2 -g" # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in fcntl.h stdlib.h string.h sys/ioctl.h sys/time.h termios.h unistd.h glib.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <sys/types.h> #include <sys/time.h> #include <time.h> int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi #AC_CHECK_HEADER_STDBOOL { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 $as_echo_n "checking for uid_t in sys/types.h... " >&6; } if ${ac_cv_type_uid_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <sys/types.h> _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "uid_t" >/dev/null 2>&1; then : ac_cv_type_uid_t=yes else ac_cv_type_uid_t=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 $as_echo "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then $as_echo "#define uid_t int" >>confdefs.h $as_echo "#define gid_t int" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" if test "x$ac_cv_type_pid_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" if test "x$ac_cv_type_ssize_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define ssize_t int _ACEOF fi ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" case $ac_cv_c_uint32_t in #( no|yes) ;; #( *) $as_echo "#define _UINT32_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint32_t $ac_cv_c_uint32_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "8" "ac_cv_c_uint8_t" case $ac_cv_c_uint8_t in #( no|yes) ;; #( *) $as_echo "#define _UINT8_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint8_t $ac_cv_c_uint8_t _ACEOF ;; esac # Checks for library functions. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 $as_echo_n "checking for working memcmp... " >&6; } if ${ac_cv_func_memcmp_working+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_memcmp_working=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Some versions of memcmp are not 8-bit clean. */ char c0 = '\100', c1 = '\200', c2 = '\201'; if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) return 1; /* The Next x86 OpenStep bug shows up only when comparing 16 bytes or more and with at least one buffer not starting on a 4-byte boundary. William Lewis provided this test program. */ { char foo[21]; char bar[21]; int i; for (i = 0; i < 4; i++) { char *a = foo + i; char *b = bar + i; strcpy (a, "--------01111111"); strcpy (b, "--------10000000"); if (memcmp (a, b, 16) >= 0) return 1; } return 0; } ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_memcmp_working=yes else ac_cv_func_memcmp_working=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 $as_echo "$ac_cv_func_memcmp_working" >&6; } test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in *" memcmp.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;; esac for ac_header in sys/select.h sys/socket.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking types of arguments for select" >&5 $as_echo_n "checking types of arguments for select... " >&6; } if ${ac_cv_func_select_args+:} false; then : $as_echo_n "(cached) " >&6 else for ac_arg234 in 'fd_set *' 'int *' 'void *'; do for ac_arg1 in 'int' 'size_t' 'unsigned long int' 'unsigned int'; do for ac_arg5 in 'struct timeval *' 'const struct timeval *'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #ifdef HAVE_SYS_SELECT_H # include <sys/select.h> #endif #ifdef HAVE_SYS_SOCKET_H # include <sys/socket.h> #endif int main () { extern int select ($ac_arg1, $ac_arg234, $ac_arg234, $ac_arg234, $ac_arg5); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_func_select_args="$ac_arg1,$ac_arg234,$ac_arg5"; break 3 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done done done # Provide a safe default value. : "${ac_cv_func_select_args=int,int *,struct timeval *}" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_select_args" >&5 $as_echo "$ac_cv_func_select_args" >&6; } ac_save_IFS=$IFS; IFS=',' set dummy `echo "$ac_cv_func_select_args" | sed 's/\*/\*/g'` IFS=$ac_save_IFS shift cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG1 $1 _ACEOF cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG234 ($2) _ACEOF cat >>confdefs.h <<_ACEOF #define SELECT_TYPE_ARG5 ($3) _ACEOF rm -f conftest* for ac_header in unistd.h do : ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" if test "x$ac_cv_header_unistd_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_UNISTD_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5 $as_echo_n "checking for working chown... " >&6; } if ${ac_cv_func_chown_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_chown_works=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default #include <fcntl.h> int main () { char *f = "conftest.chown"; struct stat before, after; if (creat (f, 0600) < 0) return 1; if (stat (f, &before) < 0) return 1; if (chown (f, (uid_t) -1, (gid_t) -1) == -1) return 1; if (stat (f, &after) < 0) return 1; return ! (before.st_uid == after.st_uid && before.st_gid == after.st_gid); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_chown_works=yes else ac_cv_func_chown_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f conftest.chown fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5 $as_echo "$ac_cv_func_chown_works" >&6; } if test $ac_cv_func_chown_works = yes; then $as_echo "#define HAVE_CHOWN 1" >>confdefs.h fi for ac_header in vfork.h do : ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" if test "x$ac_cv_header_vfork_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VFORK_H 1 _ACEOF fi done for ac_func in fork vfork do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test "x$ac_cv_func_fork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 $as_echo_n "checking for working fork... " >&6; } if ${ac_cv_func_fork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_fork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* By Ruediger Kuhlmann. */ return fork () < 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_fork_works=yes else ac_cv_func_fork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 $as_echo "$ac_cv_func_fork_works" >&6; } else ac_cv_func_fork_works=$ac_cv_func_fork fi if test "x$ac_cv_func_fork_works" = xcross; then case $host in *-*-amigaos* | *-*-msdosdjgpp*) # Override, as these systems have only a dummy fork() stub ac_cv_func_fork_works=no ;; *) ac_cv_func_fork_works=yes ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} fi ac_cv_func_vfork_works=$ac_cv_func_vfork if test "x$ac_cv_func_vfork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 $as_echo_n "checking for working vfork... " >&6; } if ${ac_cv_func_vfork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_vfork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Thanks to Paul Eggert for this test. */ $ac_includes_default #include <sys/wait.h> #ifdef HAVE_VFORK_H # include <vfork.h> #endif /* On some sparc systems, changes by the child to local and incoming argument registers are propagated back to the parent. The compiler is told about this with #include <vfork.h>, but some compilers (e.g. gcc -O) don't grok <vfork.h>. Test for this by using a static variable whose address is put into a register that is clobbered by the vfork. */ static void #ifdef __cplusplus sparc_address_test (int arg) # else sparc_address_test (arg) int arg; #endif { static pid_t child; if (!child) { child = vfork (); if (child < 0) { perror ("vfork"); _exit(2); } if (!child) { arg = getpid(); write(-1, "", 0); _exit (arg); } } } int main () { pid_t parent = getpid (); pid_t child; sparc_address_test (0); child = vfork (); if (child == 0) { /* Here is another test for sparc vfork register problems. This test uses lots of local variables, at least as many local variables as main has allocated so far including compiler temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should reuse the register of parent for one of the local variables, since it will think that parent can't possibly be used any more in this routine. Assigning to the local variable will thus munge parent in the parent process. */ pid_t p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); /* Convince the compiler that p..p7 are live; otherwise, it might use the same hardware register for all 8 local variables. */ if (p != p1 || p != p2 || p != p3 || p != p4 || p != p5 || p != p6 || p != p7) _exit(1); /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. If the child closes a descriptor before it execs or exits, this munges the parent's descriptor as well. Test for this by closing stdout in the child. */ _exit(close(fileno(stdout)) != 0); } else { int status; struct stat st; while (wait(&status) != child) ; return ( /* Was there some problem with vforking? */ child < 0 /* Did the child fail? (This shouldn't happen.) */ || status /* Did the vfork/compiler bug occur? */ || parent != getpid() /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 ); } } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_vfork_works=yes else ac_cv_func_vfork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 $as_echo "$ac_cv_func_vfork_works" >&6; } fi; if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_vfork_works=$ac_cv_func_vfork { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} fi if test "x$ac_cv_func_vfork_works" = xyes; then $as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h else $as_echo "#define vfork fork" >>confdefs.h fi if test "x$ac_cv_func_fork_works" = xyes; then $as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 $as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : $as_echo_n "(cached) " >&6 else rm -f conftest.sym conftest.file echo >conftest.file if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then if test "$cross_compiling" = yes; then : ac_cv_func_lstat_dereferences_slashed_symlink=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { struct stat sbuf; /* Linux will dereference the symlink and fail, as required by POSIX. That is better in the sense that it means we will not have to compile and use the lstat wrapper. */ return lstat ("conftest.sym/", &sbuf) == 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_lstat_dereferences_slashed_symlink=yes else ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi else # If the `ln -s' command failed, then we probably don't even # have an lstat function. ac_cv_func_lstat_dereferences_slashed_symlink=no fi rm -f conftest.sym conftest.file fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 $as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && cat >>confdefs.h <<_ACEOF #define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 _ACEOF if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then case " $LIBOBJS " in *" lstat.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; esac fi for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include <stdlib.h> #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "#define HAVE_MALLOC 1" >>confdefs.h else $as_echo "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac $as_echo "#define malloc rpl_malloc" >>confdefs.h fi for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5 $as_echo_n "checking for GNU libc compatible realloc... " >&6; } if ${ac_cv_func_realloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_realloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include <stdlib.h> #else char *realloc (); #endif int main () { return ! realloc (0, 0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_realloc_0_nonnull=yes else ac_cv_func_realloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5 $as_echo "$ac_cv_func_realloc_0_nonnull" >&6; } if test $ac_cv_func_realloc_0_nonnull = yes; then : $as_echo "#define HAVE_REALLOC 1" >>confdefs.h else $as_echo "#define HAVE_REALLOC 0" >>confdefs.h case " $LIBOBJS " in *" realloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS realloc.$ac_objext" ;; esac $as_echo "#define realloc rpl_realloc" >>confdefs.h fi for ac_func in bzero gethostbyname gettimeofday inet_ntoa isascii memset mkdir regcomp select socket strchr strdup strerror strrchr strstr strtol do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi #AC_CONFIG_FILES([Makefile # src/Makefile]) # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Check whether --enable-bluetooth was given. if test "${enable_bluetooth+set}" = set; then : enableval=$enable_bluetooth; fi case "$host_os" in linux*) if test x"$enable_bluetooth" != xno; then for ac_header in bluetooth/bluetooth.h do : ac_fn_c_check_header_mongrel "$LINENO" "bluetooth/bluetooth.h" "ac_cv_header_bluetooth_bluetooth_h" "$ac_includes_default" if test "x$ac_cv_header_bluetooth_bluetooth_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BLUETOOTH_BLUETOOTH_H 1 _ACEOF else echo "Can not find bluetooth.h ! Install bluez-dev package or use --disable-bluetooth";exit fi done AR_EXTRAFLAGS="$AR_EXTRAFLAGS -DUSE_BLUEZ=1" AR_EXTRALIBS="$AR_EXTRALIBS -lbluetooth" fi ;; freebsd*) if test x"$enable_bluetooth" != xno; then for ac_header in bluetooth.h do : ac_fn_c_check_header_mongrel "$LINENO" "bluetooth.h" "ac_cv_header_bluetooth_h" "$ac_includes_default" if test "x$ac_cv_header_bluetooth_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BLUETOOTH_H 1 _ACEOF else echo "Can not find bluetooth.h ! Install it or use --disable-bluetooth";exit fi done AR_EXTRAFLAGS="$AR_EXTRAFLAGS -DUSE_BT_FBSD=1" AR_EXTRALIBS="$AR_EXTRALIBS -lbluetooth -lsdp" fi ;; esac # Check whether --enable-xtest was given. if test "${enable_xtest+set}" = set; then : enableval=$enable_xtest; fi if test x"$enable_xtest" != xno; then for ac_header in X11/extensions/XTest.h do : ac_fn_c_check_header_mongrel "$LINENO" "X11/extensions/XTest.h" "ac_cv_header_X11_extensions_XTest_h" "$ac_includes_default" if test "x$ac_cv_header_X11_extensions_XTest_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_X11_EXTENSIONS_XTEST_H 1 _ACEOF else echo "Can not find XTest.h ! Install it or use --disable-xtest";exit fi done AR_EXTRAFLAGS="$AR_EXTRAFLAGS -DUSE_XTEST=1" AR_EXTRALIBS="$AR_EXTRALIBS -lX11 -lXtst" fi # Check whether --enable-iconv was given. if test "${enable_iconv+set}" = set; then : enableval=$enable_iconv; fi if test x"$enable_iconv" != xno; then for ac_header in iconv.h do : ac_fn_c_check_header_mongrel "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "$ac_includes_default" if test "x$ac_cv_header_iconv_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ICONV_H 1 _ACEOF else echo "Can not find iconv.h ! Install it or use --disable-iconv";exit fi done AR_EXTRAFLAGS="$AR_EXTRAFLAGS -DUSE_ICONV=1" fi # Check whether --enable-glib was given. if test "${enable_glib+set}" = set; then : enableval=$enable_glib; fi if test x"$enable_glib" != xno; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for g_thread_init in -lgthread-2.0" >&5 $as_echo_n "checking for g_thread_init in -lgthread-2.0... " >&6; } if ${ac_cv_lib_gthread_2_0_g_thread_init+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgthread-2.0 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char g_thread_init (); int main () { return g_thread_init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_gthread_2_0_g_thread_init=yes else ac_cv_lib_gthread_2_0_g_thread_init=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gthread_2_0_g_thread_init" >&5 $as_echo "$ac_cv_lib_gthread_2_0_g_thread_init" >&6; } if test "x$ac_cv_lib_gthread_2_0_g_thread_init" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBGTHREAD_2_0 1 _ACEOF LIBS="-lgthread-2.0 $LIBS" fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5 $as_echo_n "checking for GLIB... " >&6; } if test -n "$GLIB_CFLAGS"; then pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLIB_LIBS"; then pkg_cv_GLIB_LIBS="$GLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0" 2>&1` else GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 echo "Can not find glib !";exit elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "Can not find glib !";exit else GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS GLIB_LIBS=$pkg_cv_GLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi # Check whether --enable-glibtest was given. if test "${enable_glibtest+set}" = set; then : enableval=$enable_glibtest; else enable_glibtest=yes fi pkg_config_args=glib-2.0 for module in . gthread do case "$module" in gmodule) pkg_config_args="$pkg_config_args gmodule-2.0" ;; gmodule-no-export) pkg_config_args="$pkg_config_args gmodule-no-export-2.0" ;; gobject) pkg_config_args="$pkg_config_args gobject-2.0" ;; gthread) pkg_config_args="$pkg_config_args gthread-2.0" ;; gio*) pkg_config_args="$pkg_config_args $module-2.0" ;; esac done if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.16 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi no_glib="" if test "x$PKG_CONFIG" = x ; then no_glib=yes PKG_CONFIG=no fi min_glib_version=2.0.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5 $as_echo_n "checking for GLIB - version >= $min_glib_version... " >&6; } if test x$PKG_CONFIG != xno ; then ## don't try to run the test against uninstalled libtool libs if $PKG_CONFIG --uninstalled $pkg_config_args; then echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH" enable_glibtest=no fi if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then : else no_glib=yes fi fi if test x"$no_glib" = x ; then GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0` GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0` GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0` GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0` GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args` GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args` glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_glibtest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$GLIB_LIBS $LIBS" rm -f conf.glibtest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <glib.h> #include <stdio.h> #include <stdlib.h> int main () { unsigned int major, minor, micro; fclose (fopen ("conf.glibtest", "w")); if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_glib_version"); exit(1); } if ((glib_major_version != $glib_config_major_version) || (glib_minor_version != $glib_config_minor_version) || (glib_micro_version != $glib_config_micro_version)) { printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version, glib_major_version, glib_minor_version, glib_micro_version); printf ("*** was found! If pkg-config was correct, then it is best\n"); printf ("*** to remove the old version of GLib. You may also be able to fix the error\n"); printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); printf("*** required on your system.\n"); printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n"); printf("*** to point to the correct configuration files\n"); } else if ((glib_major_version != GLIB_MAJOR_VERSION) || (glib_minor_version != GLIB_MINOR_VERSION) || (glib_micro_version != GLIB_MICRO_VERSION)) { printf("*** GLIB header files (version %d.%d.%d) do not match\n", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION); printf("*** library (version %d.%d.%d)\n", glib_major_version, glib_minor_version, glib_micro_version); } else { if ((glib_major_version > major) || ((glib_major_version == major) && (glib_minor_version > minor)) || ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro))) { return 0; } else { printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n", glib_major_version, glib_minor_version, glib_micro_version); printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n", major, minor, micro); printf("*** GLIB is always available from ftp://ftp.gtk.org.\n"); printf("***\n"); printf("*** If you have already installed a sufficiently new version, this error\n"); printf("*** probably means that the wrong copy of the pkg-config shell script is\n"); printf("*** being found. The easiest way to fix this is to remove the old version\n"); printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n"); printf("*** correct copy of pkg-config. (In this case, you will have to\n"); printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); printf("*** so that the correct libraries are found at run-time))\n"); } } return 1; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else no_glib=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_glib" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5 $as_echo "yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$PKG_CONFIG" = "no" ; then echo "*** A new enough version of pkg-config was not found." echo "*** See http://www.freedesktop.org/software/pkgconfig/" else if test -f conf.glibtest ; then : else echo "*** Could not run GLIB test program, checking why..." ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GLIB_CFLAGS" LIBS="$LIBS $GLIB_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <glib.h> #include <stdio.h> int main () { return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GLIB or finding the wrong" echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GLIB is incorrectly installed." fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi GLIB_CFLAGS="" GLIB_LIBS="" GLIB_GENMARSHAL="" GOBJECT_QUERY="" GLIB_MKENUMS="" GLIB_COMPILE_RESOURCES="" : fi rm -f conf.glibtest AR_EXTRAFLAGS="$AR_EXTRAFLAGS $GLIB_CFLAGS -DUSE_GLIB=1" AR_EXTRALIBS="$AR_EXTRALIBS $GLIB_LIBS" else enable_dbus=no AR_EXTRALIBS="$AR_EXTRALIBS -lpthread" fi # Check whether --enable-dbus was given. if test "${enable_dbus+set}" = set; then : enableval=$enable_dbus; fi if test x"$enable_dbus" != xno; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5 $as_echo_n "checking for DBUS... " >&6; } if test -n "$DBUS_CFLAGS"; then pkg_cv_DBUS_CFLAGS="$DBUS_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.61\""; } >&5 ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.61") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 0.61" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$DBUS_LIBS"; then pkg_cv_DBUS_LIBS="$DBUS_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 0.61\""; } >&5 ($PKG_CONFIG --exists --print-errors "dbus-1 >= 0.61") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 0.61" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-1 >= 0.61" 2>&1` else DBUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-1 >= 0.61" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$DBUS_PKG_ERRORS" >&5 echo "Can not find dbus-1 ! Install it or use --disable-dbus";exit elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "Can not find dbus-1 ! Install it or use --disable-dbus";exit else DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS DBUS_LIBS=$pkg_cv_DBUS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS_GLIB" >&5 $as_echo_n "checking for DBUS_GLIB... " >&6; } if test -n "$DBUS_GLIB_CFLAGS"; then pkg_cv_DBUS_GLIB_CFLAGS="$DBUS_GLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1\""; } >&5 ($PKG_CONFIG --exists --print-errors "dbus-glib-1") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DBUS_GLIB_CFLAGS=`$PKG_CONFIG --cflags "dbus-glib-1" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$DBUS_GLIB_LIBS"; then pkg_cv_DBUS_GLIB_LIBS="$DBUS_GLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-glib-1\""; } >&5 ($PKG_CONFIG --exists --print-errors "dbus-glib-1") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DBUS_GLIB_LIBS=`$PKG_CONFIG --libs "dbus-glib-1" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then DBUS_GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-glib-1" 2>&1` else DBUS_GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-glib-1" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$DBUS_GLIB_PKG_ERRORS" >&5 echo "Can not find dbus-glib-1 ! Install it or use --disable-dbus";exit elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "Can not find dbus-glib-1 ! Install it or use --disable-dbus";exit else DBUS_GLIB_CFLAGS=$pkg_cv_DBUS_GLIB_CFLAGS DBUS_GLIB_LIBS=$pkg_cv_DBUS_GLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi DBUS_CFLAGS="`$PKG_CONFIG --cflags dbus-1`" DBUS_LIBS="`$PKG_CONFIG --libs dbus-1`" DBUSG_CFLAGS="`$PKG_CONFIG --cflags dbus-glib-1`" # anyRemote do not needs gobject-2.0, but dbus-glib does #DBUSG_LIBS="-ldbus-glib-1" DBUSG_LIBS="`$PKG_CONFIG --libs dbus-glib-1`" AR_EXTRAFLAGS="$AR_EXTRAFLAGS $DBUS_CFLAGS $DBUSG_CFLAGS -DUSE_DBUS=1" AR_EXTRALIBS="$AR_EXTRALIBS $DBUS_LIBS $DBUSG_LIBS" else enable_avahi=no fi # Check whether --enable-avahi was given. if test "${enable_avahi+set}" = set; then : enableval=$enable_avahi; fi if test x"$enable_avahi" != xno; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVAHI" >&5 $as_echo_n "checking for AVAHI... " >&6; } if test -n "$AVAHI_CFLAGS"; then pkg_cv_AVAHI_CFLAGS="$AVAHI_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"avahi-client >= 0.6\""; } >&5 ($PKG_CONFIG --exists --print-errors "avahi-client >= 0.6") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_AVAHI_CFLAGS=`$PKG_CONFIG --cflags "avahi-client >= 0.6" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$AVAHI_LIBS"; then pkg_cv_AVAHI_LIBS="$AVAHI_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"avahi-client >= 0.6\""; } >&5 ($PKG_CONFIG --exists --print-errors "avahi-client >= 0.6") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_AVAHI_LIBS=`$PKG_CONFIG --libs "avahi-client >= 0.6" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then AVAHI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "avahi-client >= 0.6" 2>&1` else AVAHI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "avahi-client >= 0.6" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$AVAHI_PKG_ERRORS" >&5 echo "Can not find avahi ! Install avahi headers or use --disable-avahi";exit elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "Can not find avahi ! Install avahi headers or use --disable-avahi";exit else AVAHI_CFLAGS=$pkg_cv_AVAHI_CFLAGS AVAHI_LIBS=$pkg_cv_AVAHI_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi AR_EXTRAFLAGS="$AR_EXTRAFLAGS $AVAHI_CFLAGS -DUSE_AVAHI=1" AR_EXTRALIBS="$AR_EXTRALIBS $AVAHI_LIBS" fi AR_EXTRAFLAGS="$AR_EXTRAFLAGS -DDATADIR=\\\"${datadir}\\\"" ac_config_files="$ac_config_files Makefile src/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by anyremote $as_me 6.7.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ anyremote config.status 6.7.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' <conf$$subs.awk | sed ' /^[^""]/{ N s/\n// } ' >>$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������anyremote-6.7.1/anyremote.1.gz����������������������������������������������������������������������0000644�0002322�0002322�00000002735�12673225011�016610� 0����������������������������������������������������������������������������������������������������ustar �debalance�����������������������debalance�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� *V�anyremote.1�Wo6~sEOs41F )%"BI1?~wd+V=,b_K4.S;kǻpf >N4vo.77^'k化0V >˒;]/b.%VL05z;Ƴ#s')B'zPpn/DQO^O^?͡yJˍbyF0;nDa`nIZYlQ_Fw|<EC@XtX-3Rm1sB+Q WtEG&B7\'_\&tc祪uA&gݖsEt3_eAf+3c+"/J;`*k,pq0ƺU*֥)d#qxhOD$ڰZfz*Y:01Ub}/ZS_Dv_6l]w[ /b؆KU0Ǣ) w_''<{3wXҧV`&ӕRr.~\d][AttQ m-[XΫX|oA" P亠Q}V>L:o߸, _7Ԍogf(|4폧T[ۻ9X×r˴շ|3|A ,JgJ75Iؖ1>vZ_jǶ];Pw4O;"P)Alí:2BkXct5>bS8LWvn7r=&h߼R%$J/h3raA+R&uPmX&Ⱦka?0dyՕ)|A٧?z^Lz0i~? PE$S ; ܮ^q Il1x$!r @ϠFm"tJF43KШ-LH ="$\+(IChLAg|+�@zno}&dFQҤ[a֢z XV`XNAW-ʢP=hRo'Fmj @8$Í-^LqJ+ȚT7Bcy3C,ғcZ[NPpV:MsԂ>2?Ph.C!~:фaư .5lzK!d¡˿'F]?.xtK;G0<j(q ĿX/Xu8LJia)hF hthjWYF<g8' ,%MdE:.s]kHq ۟/g.c0`xJ?W.nG9+WtM]y)Jx@'ruO}+Or 1WonhHu__rq!:2K9wwWl!_\ G%]pFB# �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

"O=/oRb@gK})z:mCH% +ѽG-~(X|zUI50Fjý"i5HA )+#ϲSQ8`Ұܹnřosܒ[ B8qkRm̓ rCl ﺢÅ Rc~PI"hZgDo%N! Dyա;JKh+oߺW{uTC%Ćߒ #< VMmɸ 쥄8|Ԍs5L,t1u Ei\ʡ*@S|( -*4uT8 Xarq$!-)Q=-Qe\2Gk].J' (@HP)9 *6sk~q!ω^e\p6s`67nyE%22PR0pq@miZ+ӖnIcmp)2\JVsyҴ5v֨pIS2ފέ[e< Y@GpZW9=VvL)ޞ7ǒIBxc) PVwo"zpMOpG|Pt?\ yvs i`1"GBq+Bֶ֒[PJHXޒ+Q|!Z-716rQ UFjQY)S{J?VҴ4j4Tse;[$JIwIw)eZ Mږ7.Vmմ)JH$9@KP ־ێ47l 4̦Ki[k'\/ԗVzzz}jW$!%D@l)Q 6J.6[r!!P-el('6' !*k*8mMiBm*ӁƀҔ()JJRR()JJRR()JJRR()JJRR()J[]R{򧄿kz'*xKmpݦ-G.|DpQvO7>5 1{jZV*Z'yԶҵmRXoX!?ce*m4(YIhn)T]P3 TkDtNj& V-)JN+)$oJNmxзPr<..[Ed pv07`-tkmCDBR@F*[PɍCiWF_p49,m)MBm!?(J֥o5'n~,&nRcKsPN CI% $'h=NC_krLvCRt~ ъwLEI; 3Z0~E$A8ҠS RI; jPvݥ̻\Uk6]q؇#>YBJd35*6_V&40㴄ʤ c:`cͻ;PVx=}7dv3mIk*Q?[ xnN)Ѣ/ @a.ܦ\nζUpyN)䁝%?(}tDBԆ$aU[NʶϔyԽyE]FlۍHPI(W y< O@su JbӖrU&Znm e 2NFmD?ӓnRl1z=CviJN JMI@s!/VN+Tfp2NBS VI>˕/R´>b\c\yT[S UyҀR()JJRR()JJRR()JJRR()JJRR()J[]R{򧄿kz'*xKmpݦ-G.|DsqT.W8K+Ovv@cqT.W !CTR@U#c;KI+ i8<#*'qưGWO}g"l( *ݧBe{IN6 n*ݧBe{IN6 n*ݧBe{IN6 n*ݧBe{I _TOկ"ik]u#ly\>Fz}H,SSo`l|#w"[_mYw^G>tˊtiPY^{MtiPY^{MtiPY^{MtiPY^{֯ʸk=xe6$ɒW˲e)e.$ ~UK;$( j%hbmS%Y [Q@t*ݧBe{I?ҚQsIϹGݫqQ!iz )Î)e.e l}cY#]iU"3m듖4Aԇ\l=8:OBe{IӊtjWjVۼpuM)-ũJD5c4c4Ѣ4ͦ-mԥ4JumK+ 2 Vբj]~2-S=0 VRܞlflfi/i8S99oJȐё-I@7$jC9=e9=e3oC9=e9=e3oC9=e9=e3]0ш8ۜ.AQN>$zձΉ7ԁ'i!I 29 B\AB0A:~I&'e4rzձrzձutŞy7 QҤ&,c>I4de9_0v[e6"B87Vk;)./%YQǼoWɯ%qFHUëR;z˕/YS/YWxW.Կ8W.Կ|lJMd}mz˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YS/YWxW.Կ8W.Կ,JMd-z˕/YVc; &lfmK9p+-XJvo8W.Կ8W.Կ,JMd-wirކbxȎيۚ `+2Pl MֻurK}OyV6⊔p02O毼5Z:_䏄UJ"=_anyremote-6.7.1/doc-html/data/anyremote22.png0000644000232200023220000000162612061426051021375 0ustar debalancedebalancePNG  IHDRĴl;]IDATx^]h\E3wu5ŢUDؤ`1> }ԨԊ4%UJM5$5B)TI)U>T*mmGkǝqAJs8?+͍%dT3VB>bzy&n[Vhڿ[{Z#S/9X+C&Ld#eBWFHi2yp9kq  ,K?jE[|Sq;hR?7ƘG~u r5pECMf^.GP)388199oN)mZ)JqAɯO8>F1118s;~ X ",Kr_ {n!BC c6Q{a!vhR81vQ (ڽ^3ZiXg+Ɛ  n#owZkפTĎjjB)Ӯs)6дL7,x͗){HU7o!?Dd/Aٹeop+ٳZZ~CO^K;xv;P fXyxXUF180EV$Q3a=ֆ_ OozȆ߆(]FC.oZ־ |OFxr[-\:N%v?1dI;\yǾKsʞ$HCg`|23g AY50DQꪂ0<<雜*_^88ڶMo2u[pUR*?6vǾ]j -CM,$lH (5@Hc(q@9@v~* #X$fX0>ġ.TVa(C8`"\( y,?BBD0-`b>j[[ N#qqSآ.S&ZJN)* Js(GVԪP._אI>A65f0` –%6lqvD0 biu$ Iɺm\d# LLH*`H a +404g"vo+!TJۀ#l^Tz{MM( ^CǕaDruP0 jT UԲHQaR):`3sa=ʰg{1Z.z*6}(@gjl{?^MG\SӇ9@b4w=v,zZPkʪ:(͎)5N.+k!%eB RWX=/8377)SPKD.lˀ.ZUĖ⵮*Vws[Kc.bZثػ=8ZyBzGQwo a\(?Դg;lk  "ݚ sMTK~! Oi|MY d-XJ/QMMN2sSx](DdW.Ժ55#㓰tH!AQjZRD} ;}v[J캕8rGknF|qGjNG$O ה@BT5_&H)j:ArD5}lUuLs!+&DbۏkيۯbGZVeb55ޗ*6 fdL@{Sup(Zq$`GnAPu 0"0Ǧt_8Rh[ya%вe/oG+$ew07v/Y\χc 2r=@ @ >NuP3sqgbRVl/!('|@c ͯc{E2\x1/o¿h9W> W?bt)ҀJNFakY{Gx!,}|b|{Dylh_bFH LđDjđDH16I &qI ġF$ :z5Ry z&yT{Qci`= 0jzO$ǔ')&pL,I Wk=ؤx<3p\#)MOKZuSKUWNo߫RLʲ@CϿ7+qlN3W~~pߑs!ŔL.e$b $Lb$TQ{x0Be}/NJy,:p0BhEwmMdpI; @I ĀI p*hw@pGw GRݞT_{u>N;C/?eHxz1~I.rRhPlBcA iR Q5B*ȖҒjBԴw̝qAfnw9;Ì1JL-;skv|v?QװdNmyGW~x$tp4 *mYKC.sm~k1Yl\JܺZgsOuisEm/vlmQ1xKAcLG較 !p]G"Zs,xi̇S_tjqRʚʊUa"pifVրp 9#JËi6}> ss^UW!o{ dRIj묇O:!%iE F  вg?Q>F_R `v5c4zAkwHJR6P>vٛm^#Ƙ((4Hּuc0 I*ɚM=7ź/HJWnބ/pl; X@HT7]B@%a/[ ^v7!k!]~nIȒ{ :64tGdo{ǽDhg/sϢ_oNj[vC^x_72 'hRȲ%YUdpnc`9eE=JRZ JI?^pX, ᮈVD0n-qwÝ*Y!CzL_8:O: !D,Ék *+bĿqiIENDB`anyremote-6.7.1/doc-html/data/any1.jpg0000644000232200023220000002045512061426051020073 0ustar debalancedebalanceJFIF_`Created with GIMPC  !"$"$C" T  !1AQ"a2TUq#37bu%46RWst&'BVcer0!1RqAQ23#a"Br ?ՂĐ|1J=z=r ОYP*!,I꓃I#=Mkl "ۡ!-,O H0dCq:JZ6#ñ2\h 7q+@$e-QҒH&z+s!dȇ{d1ex|:(״vwEsG^"XH|ApM:9M81TKzhz,ǂ)]=xx04/ Z$"+QF'KRJ'Z^ቺ}D(+ƲuDR,,`{ԵC vgyĵ{F3І0iQ<3֣.sQ jPA^<)>wiOK٨dX^`yWuyɩ#cd#bt5Y{WG9mcܴX=]&Tzvq9In# Qpi Tc4 4Ԡp*O,jp=ԥ7cQJ+GާaaSeK`,AP3KR:ơ#^yrQ.O&סSaȬ j\(/y`ڈVb: х[ZF3D\ )W*"RME=d \" Bҷ6ru qslnCIG@=ޡ+dvczG.l2ri"ڽ*UI!ڱisR|Mb4QxGu^~b:Ǘg\.$V 'YD՚Q%E 9=K'1|_Edk,L7`ԬEyJO5}f7Xz7`ץּW~}AI<)7PVہL?{)^P+? f`VVxS^Q ~Ͻ&ޤ}Qsͬ _әּW~t'禗*AȧStv[|O8XF`>OR4W(t? F %#LT9R^$羁U]L[\@8הB6P~ZnA5) Clx/ǷYn޺c*Z)2+@&nU}.V('NsVS.U)N]Bgʒi9*Z]ZBIDUũ0Fqs^kJBB7895cv4'ڛwnqFm;qlFu֖DJ%y 6r\@UF?q\fH.0/ӠIKIq@a )lR&|&u"ֹNɌ:SmQH (H8'ujƌrS~~^SsE%{A'>qc8+Bge_Z~~PU-\尀 G9e$r@:̓.8{!0HZmeJQ ޼ ]mW>75"3uq$ҹ\?t֭_&Mt1c6+R|aU.|⎁qXq_L<ʰBw`;7y?M'.[=.\a q]XJBFJO@k5O#@3u;ߴzDN.mKNJSA WƫB_vuƊSc J&\ԇ˩a @t݇\BjVҮL+/9BO>gT7> jWO:Z?.&j՝ n9{X ;ⅺ$F1R Фݓjo>gy?Mr.O8SZӖhSDq[lzx$ 9Kpa[J檼^Χ&,˜L@-' $h|L׫UL)w-$%Gs$^\~vv6շ!EE=<>bd!öytq{J,Cߵg?c1r!>IVzހ-4o>gLfM`Du7tĉCJ^+ۻt=_M4o>gFh73Ѽ(wQ<>2~߽tUrۏsn:Dy!%;mVepmW?ũ%=2D=}·4wp6  yV rB\m(TTE6Sn? n4Z!<ܔ,2D#V.̨ѢqBVvis,za4]Ӌ~_kc.fإB[tn1دiJi&GEՆFoC"ud+ZӈR,A X=6[l6[QS:IV$DJ=TOZXY*8LB6OeC7-K ;!m%Ukg鸍 ٌqC%amS~ڔ1MFpJ7M-7 PL%2\^D8$dtgo՚ 8wq$˙נʛ-%mSHR8tztEȢ FG!Agjyd ;`S(( (((( ()G\rˇ^9$ kI)]MK!oh}!#4h1ьNs4z|[w{+[bCk/e`)*=*QWD{cRULc_»m!& Vc)* u$\$ܮGvh(RRw^B}ZmM:|gY8%*NO8ø\,bم2.qSʸAPI>F@>u֓Sh}+ g8[io{_MUۅ7I[ ԕ14jh0%$|/GMGq]Zٛ*$}JuN-%).)!)Q*Y?NJɺ^ ^$뚰V%bǩ-P!:)Ӭg^RHyd0ӷSV8Xe;O쯶m>8Z8֖~Is+d2ZҷAq= w8iϵ2M+S\e2c6{VV*ZyF䤑axd易e%4gB/*TvR!J;- t'1.:7&$٢&)C+av46*X9ҼPٱMn\S6Zi-:J!.)i$6$%[zZoPt8Էeˉڜ$Fե)y¾G1D$6;rPQ@QEQEEPQ@QEIN&LP ]A )Skɭ#>/J6-!@ʲE'bZN*'V~rH5_* $ Wi і`Ѕ'pOGi.fWz7GԵqx5~5tr?e~:uZk}[]چjcNzenvI.;(N|Ƣ_]Q~̯Z|UdҚ-@>֥Z l! W;d8@VzI3zcܕ-e]/B-cSiKZS}ZA9 ˸j/ٕ~5uBoTjqiVEtYWJt8 X%Ä$)! 3 iBZUÆZ&qqII&̌rT ޒI(1@XwE2Ƣ_Q@5~5tr?e~:uEחq_+˸j/ٕ^]Q~̯G.fWTP ywE2Ƣ_Q@Rxޢ opP '=+KnA8=$+:''-l $t&w#t qY:tyM~zOn ?(*??UbR,*}(/{MKU 8om#,#r*Q>T.RC6ӕ4VO%V)3>Jj̢-7Vgu=OXg%V[TB} SIoRp _EkLl|D\ (%iB}9X.شDm2/NUk&zyTV}]'É1p5r)ǬD1>Q? -хg&ε1}JnCԹiYR3(l;&[.+8ǚT:V X *poekTv$J蠬pJ\nvZڽ4r4r涵`dH)Wzs$KȻ^f²o5Sͪ=r ~Rb׵$Bj]T)lIKN .8 㲁Gpiz6*K˃NJRofÔi EOdT%.r: ̉ 2h{RTPQ@QPu~z]JH\&gG|c&-aa5:-q^Na<ҡЏxO\mds%mPh$d@'*4ͪl.Luڅ(p&hP-|Gg'rsyHvHw85":#DѠN^nO6+Me0%a:~rM$\.a-8R\1ĨwՔEpCb;_ W5+ZLޤ2_W@wO/n1׺:68o& 3TyImBTvN#۽jժ܈) #j%E`֥RSm-?GUcpI%$|[]=F<D=9:\rG`S~iΡZ4ݿIݰ3qB#Gx<1^n,R p3TJwbUB޴-JQ+YQ%xm՟Kޮ.ܥ9;}+8 mi prI5~2?jjszj^sڪ-VY}ҥ1qoSo<{GrV JjF&tlLn_eM_)QPڋis+I;sڮ|*&;N—;s߰IPe2I UzUî4ܛl%(2!A} BȫYLT{-dw˂ݷȻR7!B ەgת.,+O".ԄdŮ)صT;$1!o:@HJNw: MJn.LY:cmOeZ2FH#>ꏍJx(%YRO`&TUn^1-f*s@̧a>g>F:`:[o^ٖ.TO`( *EឦTInB[PHIV{hEۅ˥2-mťXF-=r538Ԇj=B͙瑽u-9@ZA#=2*+t@}q i7ͩ == J*aH.QGT'#ADWZܨǛ0Ls.Ͼ8C,\~w4\%teŌg!!9=:JJ)Nnȃd}w v+zkmB>D$ҁ(N_4F'\u{"l̸>i J3VF?1_5Arz\)37N_veBӁH nINRANAAExZgjRR=;zpKAX0)uYq J>jTtqgHHQ0R?IM{-pCҟ*/'{!< j'Ft}]Uƞ#h թ!ț"-{I+ `3zxk1䕩j%IP)ˉ{t)ŧO5}c 7+ʶƎPMA>4Ū]C\-!r-nl>I cq ݌x[nds~Bdqn<$ }aZJnՖɏjǏ"JpGFl ,=h-' ^gN I}nm|n'٦is=[Rq.6%C#sI@H`f Zbq+|=y|ͻBsՏ8|_Ԓmw:JijTfxֺ]]StշWiHN-H H)7'"u*fCXr#A [ÛT}9y\YnIy( lEjl'pÅ6ӗ;֗#A9j 8u $)=YךSj˻Iuĥ!(!)J@JFI8u$1{+Yrv;JTPAcIm=n Dy8<e@:*^Ē:Ȱ[nZ+tHENf2Ky|@a`dcN( 5\ ֪[SN6؈%*#)hնҭWXH.%pDP IڠAGb]j ڼ s`Gmms)LQG~NGYpmuvPJ钛:ʪC8N }e)_m)$|٪ԗ䰩RksXT[AeH>]zV2)Sk*鬇/xJ|.W?gxRҳEОbWCYc&NBqY[#׾7G Y!=:uJn91 W_ucuVmH~QVd:&2v&x]anyremote-6.7.1/doc-html/data/anyremote16.png0000644000232200023220000000100712061426051021371 0ustar debalancedebalancePNG  IHDRaIDATx^OKTQ;ԦE4EWhSm+$Bd)-Lkp2@!hrUT*[ ZHilj4CgΙ{,BL>{8qDPjq Z:w70c=gSoƀJ)oh3=%XD `([7)'j>+c }&v1z Kˆъ;3c ':nc2B87]-V 8k U|k.3V|&.t1.4[AfD%~鹑AN]탨|;7{^~| 'JSy;Ix2҅RJkfIgn7(gQU>[4%)Zpj%ӟ>""%$ h4+]zk[uܚu|VV1 IENDB`anyremote-6.7.1/doc-html/data/master.css0000644000232200023220000002025312061426051020522 0ustar debalancedebalance/* * anyRemote Stylesheet * Author: martinlettner.info 2008 * License: CC by-sa 3.0 unported (http://creativecommons.org/licenses/by-sa/3.0/) * ******************************************************************************/ /* * GENERAL * based on RESET v1.0 | 20080212 (http://meyerweb.com/eric/tools/css/reset/) * ******************************************************************************/ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%; vertical-align: baseline; background: transparent; } body { min-width : 50em; max-width : 70em; margin : 0 auto; background : #fff url(bg-body.png) 50% top repeat-y; font : normal small/1.3 "Droid Sans", "Liberation Sans", "Lucida Sans", "Segoe UI", Tahoma, sans-serif; color : #2e3436; cursor : default; } h1 { margin : .5em 0; font-size : 200%; font-weight : normal; letter-spacing : 1px; } h2 { margin : 1em 0 .5em; font-size : 160%; font-weight : normal; } h3 { margin : .5em 0; font-size : 110%; font-weight : bold; } p { padding : 0 0 .5em; } p.extra { font-weight : bold; } p.info { margin : 1em 0; padding : 10px 0 10px 40px; background : #eeeeec url(icons/info.png) 5px 2px no-repeat; } small { color : #555753; font-size : 70%; } a { color : #204a87; } a[href]:hover, a[href]:active { color : #729fcf; } a.extra { font-weight : bold; } pre { margin : .5em 0; padding : .3em 0; border-top : 1px dotted #d3d7cf; border-bottom : 1px dotted #d3d7cf; color : #4e9a06; font-size : 120%; } code { color : #4e9a06; font-size : 115%; font-weight : bold; } ul { padding : 0 0 1em .5em; } ul li { padding-bottom : .5em; padding-left : 15px; background : url(img/bullet-blue.png) left .5em no-repeat; list-style: none; } ol { padding : 0 0 1em 2em; } ol li { list-style : decimal; } ul.compact, ul.compact li { padding-bottom : 0; } ul li.highlight, ol li.highlight { padding : .5em; margin-bottom : .5em; background : #eeeeec; font-weight : bold; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } :focus { outline: 0; } ins { text-decoration: overline; } del { text-decoration: line-through; } table { width : 100%; margin : .5em 0 1em; border-collapse: collapse; border-spacing: 0; border-color : #babdb6; } table td { padding : .3em .5em; } table tr.alt td { background : #eeeeec; } table td[colspan] { padding : 1.5em 0 .5em; color : #3465a4; font-weight : bold; } table.no-padding td { padding : .3em 0; } table.devices { border-top : solid 2px #babdb6; border-bottom : solid 2px #babdb6; } table.devices thead td { padding : .5em; background : #d9d9d9; font-weight : bold; } table.devices tr.head_second td { padding : .5em; background : #f0f0f0; font-weight : bold; } table.devices td { margin : 0; padding : .5em; text-align : center; vertical-align : middle; } table.devices td.manufact { text-align : left; } table.devices td.model { text-align : left; } #content table.devices td img { margin : 0; padding : 0; } table.keypad { width : 20em; border : 2px solid #babdb6; } table.keypad th { padding : .2em; font-weight : bold; color : #fff; background : #babdb6; } table.keypad td { height : 6em; width : 6em; text-align : center; vertical-align : middle; } table.keypad td:first-line { font-weight : bold; } a.skip { display : none; } /* * Head, Navigation * ******************************************************************************/ #head a { text-decoration : none; } #head #logo h1 { margin : 0; font-size : 300%; font-weight : normal; line-height : 2; background : url(img/bg-logo.png) right top no-repeat; text-align : center; } #head #logo a { position : relative; padding-left : 40px; color : #555753; } #head #logo a:hover { color : #204a87; } #head #logo a img { position : absolute; top : 0; left : 0; } #head #navigation { width : 100%; float : left; padding : 15px 0; text-align : center; } #head #navigation .padding { padding : 0 1em; } #head #navigation a { padding : .5em 7px .5em 0; background : #babdb6 url(img/bg-navigation-off.png) right top no-repeat; color : #fff; font-size : 110%; } #head #navigation a span { padding : .5em 0 .5em 7px; background : #babdb6 url(img/bg-navigation-off.png) left bottom no-repeat; } #head #navigation a.active, #head #navigation a:hover { background : #3465a4 url(img/bg-navigation-on.png) right top no-repeat; } #head #navigation a.active span, #head #navigation a:hover span { background : #3465a4 url(img/bg-navigation-on.png) left bottom no-repeat; } /* * Content * ******************************************************************************/ #content { float : right; width : 70%; } #content .padding { padding : 0 1em 2em; } #content .clear { clear : both; } #content p.center { text-align : center; } #content h1 { color : #204a87; } #content h2 { color : #3465a4; } #content img { margin : 0 0 2em; } #content img.float-left { float : left; padding-right : 2em; } #content img.float-right { float : right; padding-left : 2em; } p.scroll2top { font-size : 85%; text-align : right; } p.scroll2top a { color : #888a85; } p.scroll2top a:hover, p.scroll2top a:active { color : #204a87; } /* * Sidebar * ******************************************************************************/ #sidebar { float : left; width : 30%; } #sidebar .padding { padding : 1em 1em 2em; } #sidebar dl { margin : 0 0 1em; } #sidebar dl dt { border-bottom : 1px solid #ddd; padding : .6em 15px .3em; background : #eeeeec url(img/bg-sidebar-gray-top.png) right top no-repeat; font-size : 140%; color : #2e3436; } #sidebar dl dd { padding : .5em 15px 1.5em; background : #eeeeec url(img/bg-sidebar-gray-bottom.png) left bottom no-repeat; color : #2e3436; } #sidebar dl.menu dt { background-image : url(img/bg-sidebar-green-top.png); } #sidebar dl.menu dd { background-image : url(img/bg-sidebar-green-bottom.png); } #sidebar dl.info dt { background-image : url(img/bg-sidebar-blue-top.png); } #sidebar dl.info dd { background-image : url(img/bg-sidebar-blue-bottom.png); } #sidebar dl.contact dt { background-image : url(img/bg-sidebar-gray-top.png); } #sidebar dl.contact dd { background-image : url(img/bg-sidebar-gray-bottom.png); } #sidebar dl.help dt { background-image : url(img/bg-sidebar-red-top.png); } #sidebar dl.help dd { background-image : url(img/bg-sidebar-red-bottom.png); } #sidebar dl.docs dt { background-image : url(img/bg-sidebar-green-top.png); } #sidebar dl.docs dd { background-image : url(img/bg-sidebar-green-bottom.png); } #sidebar dl.docs-advanced dt { background-image : url(img/bg-sidebar-yellow-top.png); } #sidebar dl.docs-advanced dd { background-image : url(img/bg-sidebar-yellow-bottom.png); } #sidebar dl dd a { color : inherit; } #sidebar dl dd ul { padding : 0; } #sidebar dl.menu dd ul li { padding : .3em 0; background : none; } #sidebar dl.menu dd ul li a { text-decoration : none; font-weight : bold; } #sidebar dl.menu dd ul li a:hover, #sidebar dl.menu dd ul li a:active { text-decoration : underline; } #sidebar dl.docs dd ul, #sidebar dl.docs-advanced dd ul { padding-bottom : 0; } #sidebar dl.docs dd ul li, #sidebar dl.docs-advanced dd ul li { padding-bottom : 0.1em; } #sidebar dl.docs dd ul li a, #sidebar dl.docs-advanced dd ul li a { text-decoration : none; } #sidebar dl.docs dd ul li a:hover, #sidebar dl.docs dd ul li a:active, #sidebar dl.docs-advanced dd ul li a:hover, #sidebar dl.docs-advanced dd ul li a:active { text-decoration : underline; } #sidebar dl.docs dd ul li a:visited, #sidebar dl.docs-advanced dd ul li a:visited { color : #888a85; } /* * Foot * ******************************************************************************/ #foot { clear : both; border-top : 1px solid #babdb6; margin : 2em 0 0; padding : 30px 1em 3em; background : #fff url(img/bg-foot.png) 50% top no-repeat; color : #888a85; text-align : center; } #foot a { color : #729fcf; } anyremote-6.7.1/doc-html/data/ganyremote2.jpg0000644000232200023220000027012112061426051021454 0ustar debalancedebalanceJFIF_`Created with GIMPC  !"$"$C`"X  !"16AU#25QTars34BRqt$%CSb7cduv834QR!1aq"AB ?ӯkMQPjs>Skc <xr;l<|Ex·_2oQʃ&ʃ)* Gz~1S׆jzG"i1VAGm=鯊)SUQgGW[ g>Q碷;y_]=rB_+ ..-0ۗpKC-JJ eLc>-]ŧ^i31ݏyѲ>߄_(K}uӷcCNܖ$k)jix,ƌi-IZNJI孂ƫ Hv3Sfr!>mlDwNq:|/w/%򾺲آmѤBq)岕جs-ɔlϢ`GxI_ y@QoWShF8_DFi8aW:rB_+믶ݝ_NqZ'IuD MIq,0jJ:)%GXQGoJπ )-9omt;z?11~W_N_ʦg]Dtn5,h;;ן_(K}u?liSa2Loe)E";&]+wַTt J[֒Cc]xN/Sc+|/Av# %ېd8V% -7鐡#mFXm!)7n2DҐqtC %A\'w]qcדhD>H92=6ZTGNҠ="rB_+SQu ZSSB2T,mD$_ߺRnv.8*Aqwmak=Ϟ:m{8v>|/w/%Z {~|/w/%;7AW;y_]=rB_+JSt{~|/w/%;7AW;y_]=rB_+JSt{~|/w/%;7AW;y_]=rB_+JSt{~|/w/%;7AW;y_]=rB_+JSt{~|/w/%;7AW;y_]=rB_+JSt{~|/w/%;7AW;y_]=rB_+JSt{~|/w/%;7AW;y_]=rB_+JSt{~|/w/%;7AW;y_]=rB_+JSt{~|/w/%;7AW;y_]=rB_+JSt{~|/w/%;7AW;y_]=rB_+JSt{~|/w8%bٟ1vb;8sSNTfzweƆa+$΃uIS؊6ULa+Iښjb]}@v7&˵i*wg*[a$*u@}^mvdbRoR~,lKO >j։lZ ?|ak"8(`h_vGI>4y7K'KNeN'-̼[0ݏ ;`5,RGq?xkE5Nί/8Lc1#~v5S?wyz|t[?2/ʏ9ҭcr3vd}d<7o=;tbʔ q}ڏntj~&x42R,v62U)q$)J씖*d Fk`Y|hq |Zv}"?ϧգc(i֥[7K͛te^*pǒկPޟJV~7k7k޻zAO俤WjżoVb# |'{^`if}01a5-[~[F5$)1%kh٦b?S6JUUT:2/)1%>ro~һOq 6"YɾBCSg& G Z)i};xȾro~YɾBCVJ}jz@o:3V%,"A}BОp!H+]sLLSO﫩TMk97R?hcJi]}jz}^ё}!H)|#?vO>fWtd_k97R?hcJ}!H+]>p=OYMk97R?hcJiO\4OSm{FE|#?MS;W >}^ё}!H)|#?vO>fWtd_k97R?hcJ}!H+]>p=OYMk97R?hcJiO\4OSm{FE|#?MS;W >}^ё}!H)|#?vO>fWtd_k97R?hcJ}!H+]>p=OYMk97R?hcJiO\4OSm{FE|#?MS;W >}^ё}!H)|#?vO>fWtd_k97R?hcJ}!H+]>p=OYMk97R?hcJiO\4OSm{FE|#?MS;W >}^ё}!H)|#?vO>fWtd_k97R?hcJ}!H+]>p=OYMk97R?hcJiO\4OSm{FE|#?MS;W >}^ё}!H)|#?vO>fWtd_k97R?hcJ}!H+]>p=OYMk97R?hcJiO\4OSm{FE|#?MS;W >}^ё}!H*^!lqGIl4 /@Q'nݷWWh*'ꊢgGL'ߖpTkJ^x<}Z#.. &ʛ!F ̟{2! y]m~T?̭Swli_/hʓwc~9P(A6J־~;3lˍ3%nҭ)JV)ǫƻaU]f?Xt~ets#5[ lvmBjk:_zcin]3U^L3oS_f$'_SG ?T}a?G0;HOMa|ښu~>h}a?G0;HOMoXyoD:r?zN 9Yo~?&} mhʨ'LwLU{-vnO俤RF\+-@R[Ia#̡vخڭ!C(ȝ|@zk=u$,e(M/k|"2#SI(:@;%)y;N&Te7ɱJ{r&ީIW trJvA){ܢXcnR$6qqVQω4Fz_7 dC0f6*SG;A\SO}*Ԕ/j-r-kSVw)M!v}ʹ'GI4_YzXw|Z~I1i-tfmMyJ_R8NbYHDr)! % ޞ56VGZi Ch!)JF@yz|B#LZ-I\g%RA#]g_dG&|u땫Npœs;t!-kM7]u@Ȍ[˅h [zZRzWnk_2kd%Bɖ㴶Vᇔ))!*qC7;#r&7{E[r[Z<>e*XQ(*)RtFz|͢]xSQ>fD "+ ΐd>^WV$rw^sY !㳬w{"p*\fR$˗@ߙ+O!{maܚ~tDԵ63%/(+w)dֳ*~ucYank!%ny>TRx\.n^;&?e21ﭷ}BT9B(*=“l(pgnCq,%ͧ1g}r"!Rc(\J.2SbH/+gxq7klLKS()) Y6ݙIL^My p[BHJR@]3\W1fME刬;cvbM%>w[ZIo_MZ:lŒޭh+qS$->"yԕv6$ĒB*ǚtÕ]ߺ͓r)-DZd0Iq$^u5I,rnSɶI&S-pS% qPH5ĒK+m&^&& Kfck2a.- %Io7Ƶ+jmԸ VhԿ#: hl֍.5o]r@t#8RZսr";)P! GC}`jTUS- $T' JCwOBP8+OtՒuvؼZMhM!ȍǃ1@t)cdi=;%nS |6RdʐR<΂[ H%\T\I*2yO5WO|^ml/"ӜЭT)V9J˭}D\ۗifbXd(MykyC[B>eCCjN/OҮ"bȒSiy G" SȨ>en?NRLa0] c@rC/+ͳ2a/J[m }H*Wt@Prڥ\J>!4įB\|4+shv|P?3.7{,ۘ[6\KXӢ.$RH؞Cjǣz{R )R;YBKI%\r\GDg{6}Z#cAWNcܛuPDHP K$%m^BUW\st۳^9n)_-R{wHjѣX[x5)2ۂ<(+JS7ղ*\f%4@.! 攫]V? $ bkb4\KrR%C-)R)j(႓U:se+ xj9#5lqۆZA q8$j5deoT2y,g4ִ!Ըtpm ҏMs7*1xpH{Bˈ qĞ:k[{A]z3nֵKn/Er"D԰i"[iP)$$rnPϯpɆO21a m`:(@#EFNj2U*lqgJTVygkXҖQWI>pVg\.ug -|"S8 OU2хaeb4vBVnFHJJIv]౐-\`ڬo6.?>֎Le&X24WLc?q{_\m7 rbTc4RSfUz+ UCv<4r@ ]L;$ˑMYW&uWXqqeakW" ͐SZ=x>yhON2;-?RoJZZy#:AƮzNGr $TJWGU-'#3-"aIo8Hm뾴OcA]7KӒKjA=ŧ}̲[+ࠝ(wVcu[o0C\Zq}Jԅ'=b!f.5I׏|2i@J߳ %yv$ph/+"2£őtu쭨m$v%D7 9.W덮%p⽩M6.2w{Lfq<Tjr&X8n sڙЯ@}ΥoBt6(veI\u [΄+\R  t ;ۢWr m7%- JTNV@$AfU˯lyP=r(nKaˉLU:(T|۰ﰧ:*ۂڧud+V%[--՗"N? m[le#dX:Iri7K&YSYY(s AA(iI;k4^;r9맾wTjf !$6!Jv N[ "${^K{:I.ܖ%-6˳gkV.ٱYBlKC+KfPB\ Bvg{<@3lYnOzga[&q]+-$72y J*8M^&&_^9&A˞'xJ(OiyXH $=/kC]Lςe,$!kBq 6h!3-wIihm^r iv-2A䔴%qO<4{7l=,,M2# W gdo(zGj[[DŽ1R jP% !G- I F moj4[g8KRPK`jҶ@O{lްʁ q ,;(Vx8PnGlwY}t G.:\JR9%l*~zq$Iʥ]weUo}4x34ΊA" Y雪nA9Y$\8CK2.?"x0cjQl4,ޤ+v-{)? խ o-j BV'jZIt=7T$Pŝ womJ9x?/_=Gԍ שŕGcqvEuq4q!RԥhDr:>kQwm5}7>]/%އ-vuZ)rp@ -ԽkۉkRA%AI*>U,Zc1]Si­RU@M<&56J/?Fwǟo_t.,nT.vҖ$J%;$I?3G9e2$D#&-iⴸ>p(9p8^#`~K.b(S2CKzCk;Vԝ]yL#UCGzՕԉ vfQZC ZN]=ړN7m[,[_^Ƈ|xbLybHǕYjVS:N m RHZI;wWVr+rL$FE"nkqDBY4OqRޝv^[Ma"lyg?zkW1΍mNb=zۋ36dPWc Jv@:,T.8=}8;Lء+yn2SHm((sR'EdOKWJzqm6ܞe2jZ-: ᧀR!@a=IX"c5n9kh!r%,-0㜎BxTi}X^ ''>Qf Bn!补*i[Jx|܈;F]MזE. }hpG2 G!•BFҒt?U.k LK6^8B 3n Z[) WeTem}:L+/N6@ON_s߉ޚY_Q<"MV=?,gX\{3lRLj4lh7R R R R R R R R R R R R R R R R R R R R R R R R Rqb7 /A]ߢ7\0rD;,~]gdG&wX{JϾȏQ3Mi5,+V99/5ժ|9ß[!-6ڔ@ZUœ|ɬWvDz#Jq$*/lZ|a7^VyQºY>?~\ng86@h2WmxlE{$!x8G-p5-ɐ9*kfxɒ"@rԲg@Ts;>5V:1sw8>$@,(BvH^MNΦ'cN;qϾ?g LqsKAiQmȚHL؝}"㐼`6ښnY<4\F 6h%DDLZZ \qs@BC-J; vAg vdi0e\-)}kd VA{Y!{v6ׅ rlv3fSin'iAE:ZI!;PVMe8\.e֗$>턟MHBR@Vh99X<6izμL:[ƃ DZNVLUx.OR4(m P PJoj);:ސx.nk6ˋ (L;r6gyCI޻C]Nu᱊eE5CLeJ2|3 jaM6n푻[6{TWR)mK!Jedj~/y\?܁Oc6BZS*J ']t GZ^DK?CyWx{}Lf;n:HBJVCS]%Z{*q3dq2lHIqM Em :);VJDY߳ybFEX,s)>]`Ԧ$'J Gz#kaȭKZyfFm/J=\h }t VRTų7܉vYVj}m+X杧Qngy}C+t{ۓ uJllސV'TJ]!B̷8Q =Đ5 0; M)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J 81_o^zGw?^Ү#LZ;,~]gdG&|e핫Npœ* Ub ɒm*Q Sz%&}eyf'y|M"?$+_޿5E훫O&ӯ9179kP VL[Wce)uJ'K#3Ɨdf=r+L_\wp(?޳lŕOb^o-u%Fr;m1!^W<@%O\n9hl|L&n}Ӱ J O)Q IHATH=ynu,}K^M:{kikyk JɷJDu 4CI lo4f;ّݢȊ`*qI=PՆLotgo7Pʌ}JAؐ-N%HnxL^](}dǞ- Ju̒6#nTS[N-䍃 W/b*_rp}2_T`u̅ Ħ7%Re\τ> j(()ImA[Q|-c1po8)?nsfh)zKf9mkZXJ J7A&qs-k-rʣmjlU#R-1-%%OHJHt*U̬ʠarfoH2|MEnlHQ(d̈́SPdkZ.닊{vll4[wQqKK֩Kr y 8:QK$W :L_d,*EɎ[.h.ZАN6$:HI)ZǬ=<>~<q;i2{ڝyƖ'M 2yQ|Ukf2zE)gcslu&E[2!U(hKJy;4u^U7/h1u%EW-8,6.C\OiBԅ0]( ͡ZIP*)M">!z){[\Ƕ`G/;<*鋄mgXMŜ7g7^-iZ/[AwԮ)Tw=xZN$a@=Fı{une7\9)eoT5Ĥr/2e3{Fyn";vb$WJ o@۹'B]0|75ܚgd7o5 ǼҜ[kihGl'ߞTPq/dDzJ䴒Jm-!EDx:zց#62qZ[#= ;Â#vjt ʬY<ݶc%ǚ*yI⓴-@.5mZ9n4o^'_iZ/}/Jϱdd^%H1/@<_RJ_c $uKj{Xۤ*a2焴)€`P Aur}6D\5ە%w79. 5842Ң #y6T@arW-DuJJ.R; DPNߺoss_nSmLblGu&KMN8psJc*d/RrVRڼ4qZ蠒xGcnvdcUai0=-xI.6) R+EEcj[lf|P3=m+-ɷG*ڒH:RqVbs%f:mKZwۀ2l9Lhz+Q,Zs #k}^@aKNßfƌTIx8ZYI ,kØd(wvsmOyH-;yJGWֈzah̠Bz_hM82Zb;Smq R6$hnb7]h׼=;W%M:Ҿ-ynDzps1ɶqqVĶdE.qhKJy;=>r[j&gB. $ \h6H-  t+c<3$qЗ\. <)H$?=qHqEsn[3CmЯ ^[1r/r,) w̘܉JBh@I(Ix(ԛu;29 >q0oc^+}ta;mp/I}q۞>#(Rl\)!V\ t>+^?a>^:bmOW#ɽ~+dz% a#*ےn~3ki)QW'|T ǔSierg%٥ m?Qԥ?lgp:1 HXBN::+)VŋZq8ĈPl[iZaXѤBb9M*&C!֤řZc4šx: IG?#]-,2<JJVt aHe},rNAnblGu&KMN-*$4{>iAvd,(q~NWna]+㖷&սl-ǁ3y (/I *!gT*Y21קIb{ f$6Ï~ԀҗB:tҬM^p]-W3+ ϗ };hN_ݲ8OfȋƸ{r$%@[{TBa2ìۖ֒/mC6J ǨmDO3Φ#ˌêܐY*q&w$b'"gPRX_# 4(@_;2(;H.r,')z9*O2qH7v+"ΦψE%_4đmh޴A! kv9Y&r\O٥@B^i($EN-\[%CΝY:^-&3mte$!eZ{+l([.^ uBBw˺Zp =q#i,u||*Uq[w%߂!A^ F@A7E2΋6dO4ҰH@d}ٽuw?:}nY)W8,h2pu $,m$$X1\3yyB_:,ؓ Č]} )7TuC3wK%̖fDLIeġ-_}KH xE=ܷ.] !ZFRi['cNGgl+3,l8^m|*h)]=j|obUyI0Xː䕬 cisPisZkcAUqV>$/ %E;v̎fe@ a H$(I l+CD5|'Es6_kW;o4!Nxڴ44)Z7jig2ǀf#ٵh)):!$%$^moOt'Ҵ}{v:8vAW.7} iO;?]Cc9jȼ*َnKcB[is|(8x 1h4쏫6{f%eHBb^#j ^[o|5•p-KFUm_ťD-7;%}PNv[Hfl#*Y('ֈ'.Edqk͑1pdIEK D )Du8,6.C\OiBԅ0]( ͡ZIP*)LI|btƑr\%:iخ:#Jd(BJ@ځ\'#o6?n, 8ydhJ|Zju6v8llOmS%>oNA;[@MN+#(.#0oܔ+qhJV@%I Cado>5&-r-S<1VS)JBBIJFЭG8vAW.7} iO;|S)ӦR,\^W,*$*Kδ)piM8Y5drD'4 %n %N$F'uBH]C1mN.IpiJCE !! P-YQqg^pwm\{^F[MyJ|ڸOm u}r]{ۡ.LYKa<]q (N >R8[ K1]3mn9l0Qa&d)lΞO5sV[m"B88zt tcE! ͯ]P|+A`:چ.#S.̞C͵* 9 HmUԥr@G %CkWj=,@r|rIdxZCeFcڳYeb3ݟ.Õ/[]r4KjmKZ[ P؍Wof3#,?n~YDu' qR O Md]>qORT?1+!آ, %7$x6jV_PrD;,~]gdG&wX{JϾȏQ3Mi5,+V99/5CT)I~7VMו^r)Y)J)JsܡB@~qd9 ߏ!n'`>#])JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JPsσ GMqjCqHSBTBA U)I~zO59D7VMו^rʭ-̯$fU x[2I*^ssCc!ky3c% g$($^oCdS*uq˞E4hIK!NZ^ڤOsİ8nI=1$Cz5.)J@O'g?G[rU< ǚJ$+CQ޿&Lia;,Z#`Vfޠ=.DImuIJ447]wܘ^k`ʯnV}]Jyo % ڒ(?TR5u>#3:5CjS)9[_uIcjd4,= xZ$RRMr_oWl7ưAa{76c*&LR]ĝ =7:076$orjF3.>**D|BkNQ)fZ Ο)I~wUfg+L3K`S}5UN)I~%>UqOX/q־ q$~q7VMו^rŮx2,fի֞)'\-EZTuSՃ\M1\97<#>C4 +$2Co,s/?xlOs-k׌>$L$]|۩B CPZA8%@J{/WrXN#qq-JQQ #d 6o(>`E^-B"3v0BB#3n{Jq;_$Z+1)T$ɎQmJJ*IJA$w׫dm6rDdٔv䌹IaCYm\R' OM;K$ܗ1Ï;:AV:AZoV˴[|\c Oxucc@Yl ݔ`,$[NSm:!.2(xZXVtvjs;%p.90-6f)K襠} xTG}n-N{S#dv.6)IQBOk$SI9JZp(>UqRUJ[ql߲G(*xfKv,Zf%!i!M!v]o祸z{&^q8̟a|ey<5wZJx'A 5Ws ]u23]Czri&*RdG_J޺:vͮmtupcR GT8JMJz%&}&O2;#zg.wp9 u[Ͷ=-:@BFR.Poˮ[tYvv ਡǔRG 28+iةX:ux}Ȳ+S[[K3^D- QV )9V@1%AyI17}uY7!m`=pLv":a6]@6˰:5+%"Se1tS*|Bvci|%~< 'Z5.2u]&)ۢy> |v8y@RB\po/x[jm{20\ eU"TC%h[q`!-JJdCQII$lƻ \1sq둒[%j> %-' AE[4,xQǮO6KÉD dvaV,rZB )@Jީ}E$dku$*,w%Efx=0Ea|fdسu-k+Ș\;7TABH HoN{S#dv.6)IQBOkEdVz7'JxbCv4Zb%!i!M!v]o2]Ed3pWŘIj^A G,$  lmv|)7Y ĴTBtvt;kԁR({qyyD v}p%r6RDϡ5s(ה\ZsO俤Wo Pz%&}"MD~c>#$)O#96{;^ٺn:󔜛MM\d'Iqy|FDܒM{[ķf Dla 蔤v~!U +vKo*nYnL)Il0SPҏ= @`'pWsWPd!ICGجnν7ɺ[[#Ї y ]n~%w.vŬw 2cD : RIIzhy^V/çsZԷ,2^U%i#Z=+N+t6e2.v%$Ĕ!z`r>4;+n܏sQT@A.id)O}{+_eƙ{,I12o-)I%=V11a/ʸ E캣.R 8RAֵکW3W+<`{'f[lKKe)hY>m)$k o!1l15ĮtSVtINK#euRxh$ =#SX'bf32&3쪵 iqWt\4,'A Jeeۭorf 6Z!lւ ʤ]'wEjJ&. E)yqB-IHrl.\&9yF -b hp,vѬתW71h$yP[؍ls)y^B *Jگ%SUB]rrs-+&L6v:ISkP% wZ{e%-\U % ))!.I"iA \-QgOL6>"nen=;vz0LdoM iE)]yIAb:1vh\ zp_ww.2+]QG3"6e_G xøU)Jdۭ"hJi%Dk,]"R֍j!~ugКҹkYV9s r_k߫k=?S_]- rtf;Ku*u|RO (vJA'j/lZ|a7^Vyˣ-YM6Ƿt:KHINZS):=5bŝͲrTa.Tޱ_T.W,u-:<\Ró[9'L@H"? * =%Hww`#jn=ך~lР[iJRRH!#M$@F?cql[{MYRH#Ie{} wشX#m2ToI}WW i'R}{@֎t:cn1ϳ<\$8‘ࠃiGҼ^\-R=⋢S-Ke`Rd+`j7N籭\-7[Sl17e:dMَV.:,OK.;-<$m\)I 'zQ N@h1Yۨ ܅նw;J+-Jŭv`8ɕD{K>C,ue 8̤T6%fy]Mګ,j5D"3˒)]Z% jU׬6>kT}4[.R$MKR% % )I RI4MEtJp;%1n2c!`֛q-6uާm6[eUU7_LW5+{C\I 4z$ӺK𧩟nZ u? '?\ \Y?Hwhm_?OӮ#LZ5IusD|BkJQ)g޹Z Ο)I~NKM~a2x'S?&ڔdQ{f R) *͟nn&Aġ΄)*I ZJTQد[ql?.ً6\%Ǥ%j┤yP@;&mCdIܲv1ne;8~Q̡%T\ ɗd}۸\V#6O4Ҩ-lx!H#̭(_@~+^lHmMj!mąIs^.t톮%YtKo!ǖvm)mxkH$Iz6.",kʛ?ڍFA q\ vF/q1ǣ^Won|9 VJʒW #]qv}lGd-C!te'Ggdbl79NilFj%UA -$% )WoaDʭfJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRe{Ə.o,f4]BP'Y~?&} C$:9">Dϡ5s(ה\ZsO俤V띞Cja!KrI I-ڒQœ뿪;g2#=+Kj)0+Nݎ7ؙ-EͩvsDtmjJֵG$46kǂ!S&[k[rq[EîeJ;?R l se$iLg RY\t6 751[KŻ4x ؜Aʝ *CW@$$^LY[t7\gR5mi+iĐR\i9%r^G[Rܚ)l ۫aA9+k)PXIoUR}_]_m3xN\ʨ*sLƮo e-AVC[lWT[H ˳5h;*܇⃬C.'^=ړN7m[,[_^Ƈ|Ki'ԁ_Twr-W-b `c_19nxA) NBA5%|/_lHWۚp\PbR(XShKCWPT-X|26Kq2].[KwD 'ǾlRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJReJ]on;pyǕ=>s'sd#5ӌqn~oϿ?N~ȏQ3Mh֯'Y~?&} +9FzjӜ':%&}\9we`E~\қe[+qRܓxtNKM~~-o^ٺn:O4^2QrizT*4AakBt+J@?ޯ8oZ^g%.2O2)5;OjҳיM˧"/7*nmmfC]hۆ. ($/^O]+̓#[bw Y*CУY"ȕNBe4B[4YP@IIUokI"J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J ~7O3]?~su Bڿd]g?dG&kWl?>֕Ϝ^RϽri?S__[5AœmZuiyZu)RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRsd#5? '?P-IusD|BkF?N~ȏQ3Mi\5,+V99/5CT)I~7VMו^r)Y)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J ~7O3]?~su Bڿd]g?dG&kWl?>֕Ϝ^RϽri?S__[5AœqqtO[0/pR6ҒTxj/lZ|a7^VyJ͉nF0SZ\WPJRt%|Pk};D;dp\"H IDZy+[ P䐴;uYκR T&QY1^_Ǽ2 /-iB%JZ@+)^Ʀ((((((((((((((((((((((((((((((((+\Y?HwhOFkG% j!~ugКѭ_?OӮ#LZW>ryK>է8NtNKM~by%S r_k߫6KD1˞3=ًtGdR7էuiלdY;`Ma2WY>Ƨ~$@YO RRH UYcp&^leLܚ-rbD6|sը 8 4fiv]q+b|xYJV8!)B v$|fx-t3MM3{a=!'$|A ozj^eM=8K9Zr/C1+B[u.n%w'd9nU`^.Hskmy=%)iǑRօdaػ^4)mI3R]CIJP#K!Z'DL\\fdd*P"̈l%-QѲʐ#Zj;81_]y&%O)dzxZ}gКqc}*>">Dϡ5s(הolZsO俤Wo Pz%&}[j/lZ|a7^Vyfg((((((((((((((((((((((((((((((((((3o^Enaz wX{JϾȏQ3Mh8u}gКӹkYV9s r_kߩ_$c8GmʔLjTl œpD[&礮%+_H(q%_ uiyZu*t.ӭvY̝*ũ2IZ.-IҏQRK=/3wɹIyˆ\aŴ-qJG(guz*\t I[+qq=*7dX|MqPF}[-Mm6x'\Sh  3bhιFRej *J`\/.^ÉBB+ˍW-N Kqþd苆[%(i#%l9mǨ2z[ ÐSO}#) jo2o:r+1]nS.aם[xxj<']Ư8x)e9 Ĺ<ӍnGC\ozcغut!&lEm)c\KsSm%jl P ]ŧ ˷ Kei<6xX^ѱ[y v6mYY;^JO,Ź'/]ؓ^C}ȣ^#*4h)-*I Rt'{PVsA-?.6䭡Fb;5%nIRO Uz;!.oow:1V?\-}\qⰾ(ZC +tMli}i1s&Z!#qXiU4Rm͒@zX'ͥd3o-wkrD{f S)#Cm:U[nl6cvy$(.SDE'i'Z$d3q8ճ'.:ӥR!4ֿ%8 VH}YreM@78t4þfԴ\G$^bvז$T[v\Il;$U&O+UD,fU)9XR[R$+n!mv`lUYSӚĜF$ܫۜy";D4N#AĎiS9W*Hcb[T)!-ҸWG.0r; Mn~[y\Q#[ '$7"ľ\qLǑkqb?g#AnS$$oj'@乞i)\>gmSqښʤe6[W(BF 酙l.t|ɲܣ<ؒіy2 jlz(i#u?rǮKjb./<ߵ4N!ւi@`Vs"ėrdMJ"6LfehX-I>+ip'#iIԼ=ȳ"nD7$ M2R<{(ZBnedz}n`K΅RKz$zF6)w .=HEN8w)XCiH@K!( !bxsb@h)Kl%E<"9f2n]#{̅&[m#NwJJB<5,mgX&56C]iEHqsF*.'ICwk"#3dN1e 6 @BNȐs}PlWh\Yrڹ1OڒT,J!aIRU%[H{6WL۽D=9ZMc6mxZQrrp;y_3< OG4T)zrDu"ꋭ}M֫GѐLPĭ\JSPrr0v2-ѱKCr2!*ނTV}w;r\1LulΰHx]Bu󸭄ۖƂtAқKSo9L96E5tC-6B@`s<"VzuwYQL uMC8㍭:PR[q\-l*]s,Vk;wI\rKL7IHadyOz,*INĀb~iw6^u©I}AGp7GʾCa{U'GCvc`mAi-V a O5FnхYm7I\KQ #xOaaNSҼ#7eY忹l)~:QͮkFۼ9}N~b \4_A-ueY=u Y[4[hBi@6I7 21t鳗IIQ|'=%|yyqr:Icv1 7%P^.[+ RJvۯYm}֩vmh7\H-8Km>JR;$qKRYcGBͮ;Ũ椮A*?B7:vWIVKc:RʷȎ;Z6ʎʼ5I$f bWKjajҚ `f ݓ'"3*n{ ,) -R|T;6*ԬbbN#nU<" [hq RTG`ލY)S]Lȱ-RY*DWڏBli\vvyrs9J&·?omC-.(h g.: dz&lG2^r#a*$ H;&fyZ;뵲"kHZc[qC|YJyC$%*U߲ۜ LOqd:Md>҂R 9^^Cҷz1VwGUm>3Ks&JL JPZIߦ&T1"Y)#&8JAI9p|a|ڢ:\.FF'`f*[.%KJJ-RˇȐ5Vo ƌ]a&櫺l{fT_ |_|9\w_vXR--Q[Km}݌+p$m:I ڈEtumVXeoa!,aY}J$H!եËd'HqnoryK2է8NtNKM~~-o r_k߫kէuiלiJVzJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJR>? Fy+81_^׽?>փ {WY~?&} ;9F{ejӜ':%&}[j9/5Ջ-{;f9&nJHHHIl!cYdγnL'~![mTKo#=yf&_+/R`~.7w63%]c%ⴭ ֽ+$U?Em95Zm̅ jHR@uH' =V>OIn$"d7Bժ&=t\FS&jBC-J; =,C,e^Qm?!!vZ)-$N(ރꃎZ3KcZ"q8P#W*>75ac~i(qm.uA,6%'@Q;-\TZͱK˘ :̥L)HI\oQ28zhQ_x-iuՕ7)CGׄR!\7,Tމž\ò϶iHBBJy!-Iۍǁ:#L -E8 N sqҢxv>jb8ɫK nG}B\Xm*%A%a]gȓYUrMɛkKiNShQHTfI@]C/w'L.MB^ͳ0iӠ˅J+$7+oa$/^Z&˷6k6kŷݎ؅%ŝ6V{%jBRSo%8ֆ-̆<7.2 hTND{ 0>Z]GNG>jTځBa>0y^P]RF1d{MݾSX͇&g Y!quqq34(p0t{w;q6;q[m\ʛJS!)?t;sꍢU}q\J8JB_6ue'[Qhb=nT'QIl)4P4~D5Ns)yp1.} .-$2JV/}7Alunn^`e9W[#6b.!+QFRJtJ%הLu-`@ChŒ!:%~moUcVYt1mz͊"% pHف-%))p R86&7ޝeVie\ta B 8+Iu>1t]sOdo^HQA<<쓜 jt/r&QmNx%ۊl!JHѬ&Ea*q}.VFDHAOJO~*rbp{[~WA:=Ź2!-:w,yTttv;,pm+Eܦpm y m{mkB*Jtv YlNcMBl.";Kn,_J$l)gc{[aM.FhˉJQQZ< S;nfUTs^R%; &/"2[-ITZbo[-W߭h+GVA[5Je>cNJք(:'i$m239ɝomv{GoBjC[Lki$BsģA#bzGu}V'{Tx%#e Z6I: 9b^&Uh>ͭpȚUqS( kN+a*_%h; _o$Y.Y;i .@i$($/4β|9or;V aKo8R|U,jJ|@lJ_"Mxb8M1+7лt%1*R d[r\ŷʼp+S2?! y'oW%8 (o ~1-+&G Rt{s`]Kf[t(m׻ue q>b=js ([앉3;u5ݶ1 Ke)*S =8{&e^/"n",Am |0\2A VBtq>{On˳\.\\ZU0Si;`ֵ!3LhX^zce|PJψ)PZ#.W62/3NΕ~ZiϮV`rtH adR|x*`/%2ڙK`KaKhh{[:o%ϳ!޿qJq0nq+B.% WGǽt:w5Yra2yWۣL-e-LWx[*ޔt; %.^iq\<Xo wߏkj쾤`CyNZov ֶ䖌g8m^Wԡ|SڊΡ a8lڥF  i8)mѲv9RߨVvL)ʷI:! = 䶜}#m 4h,0zf\+[u"†{HSa+ TEC^] r<= ea7"[iQ})qED)*RtSW5󦑲,v:fF9Zr̩BxG;C})ⰫW9W)ۻ܃DE,nI/4/9hԮݱco*nˊz{R_GB;zjGQ-fӯӭL\`6vOumyi=}Jfe 5 #9%J.rhF$M OGo]i3KkR-[[l:bBVRsN'@i]C@kÑ!EitC2jBd4HR]I_t*lCv\6;wqJi)1P˨ihx+ ]о]9J0Zkc[BDZ;*R\H*:Mc]B˯fE~ Ħe\4^X T=zPhuo5l L 2eO̺8J3(+ZZuW261kv92*{ۛ=mӭv^]qu]-_ia.{d#IZG*$~:˭=C̈́{fCrs~r]fZ'9Tԟ >^]ƫA4#BIܹ-<|^yo,!;Q3*qRBZRHAτf0d\Y/Y4/XmJiϴ.kmHBR;:NA_gYbnsfL}q-<ּ:gI[?#Bx~E!s&)^N6SH#ν(z,a}p跛TL7+~)Իtq,wJ8@UcMԄCqeo$-D"JNICuT~)rXCqa?1-2e1ӎ4Nt-noÇoVo`=ٲaS[li0i-)D8,IS(#ACk +n&%0(Rw$H;ҳ dj/6q79N>eÎ>bÄZ=ޯ0bxT;,MJ%PRu}a pタb1liv-W;DǞ@!ă# OK&kӶrTG cmkm.(ǔk֬qx^w<Ϋx[QO:ڔRK yH3^F-.p7epⱲ8H 88:$w^}TquZtryK2է8NtNKM~~-o r_k߫ZxZ/@Aq($+%D $Gp}T^ٺn:Oz]_,Ը-Q]J M:^uYPB úe̮wkR#T'}my{KC rZZBRl/JR Vߗ.ir-RE)*G$Z@uuJlΎ)ę˶DZ JrXkړȫle7.gfsׇFbf8mO!.8 Y =dk5v L31VKd8NY%=;('&S/!tbD>M?5 m! )+ +.eQr\kb+Sg4l8hW ^P_Q(6A׋[+42#NJG$$lZX nY\ُ(O)-+{R4ҽ9wg]pܸ2wKϼrgul!*$+VT6{w ܗ*X'@yAv QH%RkC={޴OjfDvpn.";o i_8[2:q|uzZ]M  i^ZZ\h(RvZn16pDyf-;-$荀vR2=d֛#>;%[^9#eׂ@|=쒽]f[ nՊ$]-%&EXiC2 `JS/zOrfo-"DJ|&KIV[[= sn֋dxsI.K.'< ˶thRONrbm ǿ-~#iH @B[Y ڎ{^zؽp/IWZڥ,$(|/-w'O3Wkhfܱj}L%rIqku|xA\#հ4=MKcح=uqL.'[uwz: ,.3cH~-D'ŭ)(GD WOP2&1t\}"zG&_RۼBᒓ{aEklrwPmlȓon e)PGAp  .jͭI*?zVCZGį%[ltɜ/TwPԏeU|5+UӌE~}{"VTD'@ Qq?3LlcP2۹(\VEi x4RZp6]uKrFr|>ڤf5S+ݘAW QԬ/H^n1:,fiOZae`:B('"67r\ձ[M=q\2W%'9sqoJw>R2:՜`ŅX9H>ЂZ>n\vUܣϱU&>Vx;kfTymDŽ4-M/IZXH &QW1!@y`ì򒖒n!+l, )@$֤nf;ot:w-1<N/\vKkw˰o$:}s h٠ EYuj%Ÿ]smKm`2dT׭mx2$Ey( +R{ UNaYl_Pc~7ڟaZ!Z_VNO/'[>ݶ r%4'ٗ QX փB縌x1/M9"l7[z|5Ƌ|M=۱ Ϩw v b~nfzĉ 'Ц4<JtOaYLu b"f9-V mxH$Oo+ u M.=h%Wa8 |&ehqI(mïA9w܂قvKxD)lZx!JwI#^f?SfɨmmҵIU[/q{[0뭶q<#ygaDD֢ou!Ų;LND..GQO҆Ԕ/Eޏ (!gYC&"ۯCvSM0JAqPoI:K]eܘ2Qn>⸴H\(m*'KQ 'c{I#ű<&PI(ܶ?\KTX~#HsH.VTIב=U!r9xXas9/.ԏd$4'yַA!q˺s&D^W &C}FB))ZD)]{6w.‰eY\$:^)Zuo}ѫ=Z ,12t7%s)1Tfc mJAoT XD\=PUE^Yژrw[H $oc_z\y/qν:D[|$?> PF€y*)y ù8[N6}QoǷf.a9,r"&wCyI)_҅i;Va^윂ϓ8Uc\1v'߲cq!yNwOKcmcquǡܛz2R;iIyBFԝϨ6>K[oa0 Jpe8im-%E\Ȩ;wPV- _mpk([VCj?sjO~wS00\KNbb CZ\i)+B$7LO|e5Eo<\BV))֫VZ+e̋L8HnaRDipIkvA>Sڡ-03)lؾR.'XDBigmfPk>R$W)^P[.tƘm.$$.R[#4Z쒍G4![oVG`(H;޺&-$3naAp.,mG[#\x)O-@ơ8s굽4ird7"ŽꢢuVpr[us.~! mJeвRm) J`MT,`g8앲mL*+E#Jt 꺳;7鼌.[XɁ)2mnz;$xKJ%'R7/WcK {YrZCBCM*[Lq *H'L-Nm=8[\!)T65;kUDͰKmdXǭ񦠈WM4FRplV7Y&bu.!|e0*)Z=A>A\-1ϪhŹ,>ike$JP{T۩VL,Ew=dyG(iN%4.,(riDw=B6Vyә1}w.Iqʒ Z@AR@zujzXL+EHaBc-~}my9i#^űD,GCqe_=(+<5w:{ -0ܒ2F%]Km8/lK+ZuO9 2cO ]U%34'qJJФ^5丢2Υbn*hF)5"lyRHmkvm8 \۝A$Lg zR qӎ]ݎ/5J5-mqiu%Nl b:Eضw"yݨĺ#;;Pt U Vs-gL̃ W^ yuIIJ󥵁o=;sr]9ر|hV}ͣ:!'}jeME9UFY\m @ %IHqEVOdbz{2c9=^IV$bm.dKEp ~CUR{^xX'\]N7%RͼjSҒ|okӡz0:*cmFLw[cXdo"`i'{dz 2ѕrrK5L0Lbmհc)Q)T5㨸Q אO.V"Þ2U5xano]҅0ro6G^uڅ; ,~qښSFm.'dh6[{o}Y&2>zDĐW>wj4^m1ՊtDſzദ CmGGG.guuɎgX!qfwæ4IaJq NvuYWQI&g8Oz_qurXR^l'o9ZVwY2>$\S'pͻ!B . $$c?J꤮bی ْ\x<ҵ\V;UL Y-G'a-9[$]A:de˗rUY߽dNwrn9r*e($yMwbvqd8LrwUhZm /O8IRSv-vެfJ]2HV7eػ>srS!QtBIHR޷Ryݐ=`X/+Hzc6"*W"q(B*޴F(x-׆͘ʻY'lO;!eG7SQJRiaԄT|ZR@!d$ql:q\zqï.丄;>QٷPmۗiݤ W h HE>3ĥZJy,VuU·A'1=e&{reԩJKaХI:{;*Vh1H܁ou^mRNV(!Ni\*=;ݹɶwix:8 8EoKz/:f`6ͿTwǯW-,K{Tԥ(9ڃ D %q*(JNG^)J;ժ{laܠĻ[ yPRvBm-)JF_TRRRWgtfeDҙ} m(iHROe$AAna aHJR4½Jؾ5>;JFbsЛ\v8G$蟈{Pa5p~8!4!E RVE(((((("'b{v*ABmr~#R}~/u Wvqb7 /A\#; {WY~?&} ?^Ү#LZw>ryK2է8NtNKM~~-o r_k߫kէuiלiJVzJRJRU[ jݞIeQ{&ds4ŶJw;'5j+p`GӏvVuRJԢI={Ҕ R R R R $:+\y+D{zP)JP)JP)JP*+'`"wX]' |`l +Aا%G~ɝǎZ}oC{ЩRJR^,Ŋ̇3ސBqNAQ΀oJ9,3&3:q!IZHIv}44Zi BRUJ +b G">Dϡ5s(ה/lZsO俤Vێۥ_o}$I{ᶔ |@U)I~zO59D7VMו^r7l&չb nIT7_uD _3gW\Ţ] {fGd%/I9/Azn6t> ĴTBtvt;kԁXMoWOi圦yeQe}"je LeI}(gH +gDR F2)U|H6|vQ#7AV,U]0_nVYzp)*q K%H*_Zze+wؾ\6dLɺ.F^Z/i AIRFԮrGTA bW+D{o|yAR"Nj*+Qx]bXj#|o]k۪1ݗaKtm9k3fnyu8c)#)*B?_m+%w2$ePn]_ٷ'Hd'@ !J%EGuUyÝ~٭ ]n0[ K>D_1[Ied8&ڝr..2-KXT--JO%I䐪g-lo.sctqI}PiSʜ|Mi[.Үqm|grbx)>WB=ZSY2~>U*6nI[S+-}~/u Wvqb7 /A\#; {WY~?&} ?^Ү#LZw>ryK2է8NtNKM~fqf9sg1nJVSF`g r_k߫kէuiלmfmE}M'̎׌c(JNbGkLRœ&w߆r36R );5J^Eqzuvحp3{ʗ#m}֐^Q1|l2[}-%2TmBI*'zRPPp> NX[}Ooi!K* "$Bjv,٬neL۵-Dt c}Ȣ.C\cCZfF-$:I)A(Hvt>!RԠʠahd :~>_Nc []hc#{#R`J:,-CZr*.#KP@SHBRRRRRRRRRRRRRRRRRRRRRRRRRRRRϳEnaz ? Fy+z'qc}*>">Dϡ5㿂U}D|BkNQ)f^Z Ο)I~NKM~3+grmRʔmQ{f WV)Ԉc.,;˚B.ZV7{޲ r&+fl8o8]pr{̥1wJ!磥)W!iXnc3ע5rZlg.+{%qT)Wp#]RbQfc.DK{ OR-H@*=Hٕ}B@QZ8Čk', Re <ޜ{J̰U]9\IU|]pBk{O:>9\DxJ ]K#IS4!QYX=N`d?S2KUlݠP :W!$(")idKgSE3XLm N QJlNJ카OxuS"Iꢿ)(zJi\BJBS#iH$v7]fgÕ%QLFC-$Y*JH;:XWQ*'5PS3[+|sqí~Zu,ǎKeEojE؍;J'QQ 'ZѠT oPc;CqdUHpֲ2#q=u yrȣ2lȘ1㣑^Pu㭝 Z>Y&J-qT]nw!1ZVޖ(!z%KhK`Qs#!ٕ'k9mYgI/$mdv@ fWsX"IX).?qG|E%@{vW9Va36k}c֛KeפJR|[yH;JyCY\mKm%JR@$BP2Ln}\ZDF\R];2d~cLDo@b3[Ch86Fְy8l6ZV'`Ar|=إL\&T i%wRZKm;:HEu~we[\=!s^,w'cO V=6NݧM\-6ۖ_ka\FԾ)evtG+ȃбRb[@qa =%;׮Jfrrw[!x~^k+ʀR̆3ީDG#>ɕc_a/{S>\9r5Aҿ8`9鯲S*k/XHr,XWm@5"p^(=|sJ+J8%EW4  /Sx/~g1B!>ӎIekodpOģ}OQ_YdXcԤZ,/f7u5`4V}ug$-xs/@p;q{[=ҝaU,%q-qn8n#!W{0 *O4\pùCO)%)l'hJr_vXGQmXm9A/:IyA3Ktnߢ7\0ue"L2 uDF=^׽?>փ {WY~?&} ;9F{ejӜ':%&}-Q/ɶ9+qW=JmIWBj9/5CQ{f U8$3{g[ohSGRKNtS؞g.jLdܻ-_W'#9mA[I@KPQJ^S}:Ϸ.]ɥ^N9S)`6iA[至Ĉ3=nkJda!4В5D;udk['JcܱtlrCe*XeJI޶b|=x{z_^!Bp6#83-+sFОG|酑t^nүKerr@ɂ ! r;2z2*[=26cƑ)A q\ ;#~obq1&VW Cu+@>)vQ{`]}HLj8 e-li %`Г&bɍ]li)e c)e,!^߀+['7y'8ʭvL%kJN +&Ww>)e/]Vj# zBK#CI>4\g­VǢ3wԁ_Y+u'k׾_[2lJFuY -%$FN g3мsw0ęóf-x\xM-q!UcN-\+Uw"0Fm^p5$xQ8 #Z ti=F˧"\EIxABk!Gxo7Şm 1RG%8!gjռ%d,'Ha.2 ^%;=ktf{`7_,VYVYzgE\mAK|\Y$garl3#3 * qMBx-%4=^rHq!)J%wzzdtG#gktGQL9du+(l RI [ bcOfwܖڦ\..!O:OѦЄ%)%#N&r jdOqCc> 4I)JDhS? gw,ޛ^51Ѣje6%ഀq`rڼ\RqЯ[$[dZ$FA ol[ml䬇&ވ#$0mjO`K=50hͬ-!CХYNEzoS]LEĿuiH/0S~ VJF]B^+x+7+EW&<)kTvԭQK%*8PA 5 gh0gG\y-+֒$X$U&k$[/WJcSWI ل*l6QU؋Ͳlk-ҙC̬z) I? u 2q T}l(q) CiZ/%G[U<ץ.#9l{M_c-))%,A(H\IR귛@paL&G6`drZRގtvsl5t*ϕd8*\| RRY1y6i6YW[mmZӈѐ8iK@ O6Gޞ5qV]/;|#KuiaD\RF1y^#un.j#q%.% II)$zPC[0۞LӲ2,G ( F ׽4}@ߡu"4l[T8tR_e꒮d)*~cZ=])@J:ibD]w7ct*Y %\8> 8r(2ƺL쎫\rGsiYȇoDgd: -P2I`'Vh=Y'Oؗ$H*JַVT"\VvUm=)l~Q d tvW'XiF?gkq5ǪɦmDki@)AJRR @Ruqn;kumpnoK~Yu%ې|wڏm9NJIMҔ ͝2UEgB 9 BG҃%ƔӃTT;gK𱸘&A2oM4"]i),) <ʕ#D~RX/W ˗opDЊ2e ).UgSh_Nro6+g^"]9)Ɗe _XQWPC=Aw1l+s<22 XF=mCe]<߲ImOL}|6%KRPHRGBޮT<⭭WBplq[Wd9:t׆ےPh%"./|oڭ[eX\bɥǼTbHҙӌ8h*HCʔ8ͭ.NqQ8QZ .:oCE%EIP()!JtjJ <l߸OvMe*{q ㆔ n8kCF bag2sZqF+R{+gє+A^}T@((XM0 9grCF!-2pKuFKV jGލT'☻JDFM WϳEnaz ? Fy+z'qc}*>">Dϡ5㿂U}D|BkNQ)f^Z Ο)I~NKM~~-o^ٺn:)J^+k> lku^ c=.uO>*ASIoWȤs[Xӗ1qǞ%j:TD'{7Q8X DLљh6g]n_ 4RtFZG+XM7\X\.Eƒu+:$)kփ;9+oDvU`|7< !diz G`lm3Zyf QN}uwڤÍ^~yVHXJKlUg FL+mۡEmkIJ, +`ېdPw;$)H3 &BAm|%H#m@h6mRt[Ah9%6T{bl-2ܐ5x}ZRBR{Tݷ8ѠIu \G%% D;* 7 da̡K0T;X%%\ ߶Q>9i3`1"2z*:^,!Hm`Z#Z$pc~ş^m=?f{:+-xwޛ :m_⽭^/;+\B숷X׋%rl{#<Py֛%cxX{:܄s)X;XJJR7A?LNn;[=9rrMmq`:I/P*2ffs+(nbP9B8dž}uGsv}qevVSA`O?%+('.|xy.F\;r}%% JE*=ҡ؃A}qkuEcQIj<Bp\+Z|j%թbemc8B^b8 PEg}n_2C.d)N#mذ$lgjQ B)%Z7<$c&S_QCAd{RT8cR|j},LՍmsJN@#~3:koRCfiu\)lI[E )%I ;t*#*n\sl>ބ!ORJR|T4vU;VwՊœ j>BZ.Fm1uN ι%*W$ҨZ&˷6k6kŷݎ؅%ŝ6V{%jBRSo2{SS 1P_H⨩k[`P_iYyM_J1DdZ %*A\Z ]ZN|uM\cHvq q $HQWގ`8rH$lPh4!lj2/Q{] !)$˓.8 _٥ҭxSsZq/n,VIn$I**ti;@$te*:|!ŶY{mk\GJ#N(AqIGR4$($+ Dv&}fs۱tJdHJTJt{D"w΢ū$6Ay [NPH$)ɗ__1FuhI uy|H*K+ %hRRRRRRRRRRϳEnaz ? Fy+z'qc}*>">Dϡ5㿂U}D|BkNQ)f^Z Ο)I~NKM~~-o^ٺn:)J^+ʤ@:Ґ}6AQ9&-]Iͺ[\'f<֤ξ: %V8%jXyi/R$:RNjcU=ȝcq+pqHvRo8պK(RW&;~K'5}>`;V_rYܙc$/fKO6BH uȮZnK)OLӭ䍃 PfF2 \]6Gcm6d6$JFt8JF/(+-k ߃"Sw/ZZt0D6R'ΰX2V}zܛSsIKHh1Tq6V($+Rm>hzDaA)`K m|Q)+#[(8 sfV3= k(@B!a;-z<7kPoi(dK{Ǖt OwץIËdĉ`Y)TdJJHQ> a( JH]K7iJ-r[u"$I +tE@J9/r V. ܛ*V,GĩHܐ$k ,3M7F->MyEjyh'P)YZV9j[\i) mĥhPPuLfύfbUZ!دR^n./%p %:NF)y;WbR_c+f/NLĽ-YIH❒-Lt@L˅k/, ;kZzVKQ}vwu!LgLGU-!(-6>U,~9' P=笳$D<-2 _ JZm؇PoMYmu2KaR֤']IRxAHW{)٧`8o+{f6bT,#v+L9~(ݙ aUeYeӪŵ;6;D-&;f?¤ )HF)AU;rʰYKLcuZ} 0CIB{G9wȷ;B}--E"ż*jJqNbQ)APcdxJT'$o"vՏ[į!KweV,I\e.䟾4[(3>뉬 /qK5B3$yͭpȚUqS( kN+a*_%hzoEw|魺h.{"_g!oQNԇ |_(ke&.0ٌD|G[{RPr)ҼVǙ:RtŚia˱XQC8hMTo PRIҕ<[1gPny8/jZB! %jB9EJ *Pb8NgC}dRMr\nmۭ,㯩(+PGTR/AC{?m[)r)a#F9flX7~vcO.HLtBz3kЎȨ@N(1,gөOZ&6Pg-|Uvl95=d2͞V?~ [ˌdiCޔmSu~~C&tG1r3U3>Sm!\x4wܮ<_9lT֋*|gٵnJ3Jy-qil%KޕRwmXc<%oܕ)瀎D8!-'_^ރ*W~@u. xպ R R R R R R R R R Rqb7 /A]ߢ7\0rD;,~]gdG&wX{JϾȏQ3Mi5,+V99/5CT)I~7VMו^r)Yq_K7,,&J#dۿz o3W3dx6(w= sUˋɶ Zqf:@Ce҄IIPXnbrl/8fY].)3nzi2YiR)#h DťO"$4iw6J]I^)?5vYrf:L .EhK[y{ΔS߷z 6/צq1݄ ʐ$9Zxl)>Uy7뗦^a9N9dn,ĸYCz J u/-)Z9!~)>%LqW!-GPs@ZAH(aA'҂J3 mdq9LjޝjK+^ 5)͔%š O6@"0Uo"$i)pØCHJJOhP)Q(h'iPl8&67'9pExjR\x b~Y\-ip1=-J K\̩I>5ނf[γ|wow攋,D˙[҅J4\RJQ9(+٘bw;(LQDOiPĨ$$蟌~: Wfvu! aWurOse^ZeEiVG┧}[:TJW<`Ι*^y 4^t 8ΐR`r}+ED.Pz4q)})SLP'iFСh;)TfXe@a˼BaNBJHmh GˏǭlouoZ)kPJR6ң|5J/1rO( ()<2;~]A>N1|\sP5JRBH v(&)QEoűP(CMcԢ5_dx'Xs愀6=#JҠXEʬodžr%:!mk!ZJT;zW'Ʈ6n.3Rq(%-`謒H;$A-JVAaHU{B"&R>B_*VtO$T[Y;ern][~/%\(+'Dqɱm=Zad&?1tm:_'ȷZ:ayBztfk*Iק7V BJZmAs P]= kV{gvj\Ӳq%MӻV64k mvۍܫu[ :KE-̓=ZGb<~_qi&,ed"{’a;y![Ga[n96Oy^'&<}d$¦&KH zH>VQW;UmҫGHmNwT,[ g1ΆlIn*>urRbFBRTNOs {0{f1"Α<^cnB|1Ja25J4UN*e!/sƓt7 \E1kunL%RU'izҔ7=^e_jqہ<\o=‚7qYqR|&Rԙ w$ ,X1[ 318(BvA1w 4QoC%;)CiJΒڵWnZ]s&4ܼ)Ir)^e ShXOW[K/Ύy9 c^PPJJw5azzùdr[E\$<`7FM+}N=BpٍMqWvj,)I*Â'KI2K-"u3 +s[JJ(e@-<lOcUR~3qWn,A$)ݕ%Y/l%Z?zRNdnV9% ojǷ.ߗwVJ &h.r1M CԦ"[>\+t4,-*R܄1{=&].7:e&n.6!$ J@ߔŋ"\LX̰qN@O5J:$'LXTʤeÁK Iߡ#csA O,I#-AWzPSQvu#1.6~k^/r ŌY.@kCKq-%H҃a޳Tuf5{a# S]@HB\-##i$5k1+Çi7"Y Sx%-! qvBxHةAt&0_\nkigʽ̥3l6KZxx F܋eћ=-bJ Jr[>b6nV2,Yy)Qmt{v j ORc.l8ldxj<֯YGu.7[QI!O=@; ˶^yG^x~M؎2Xp+J{-A dsstxZ1k+t2Í= %m$phWwC̭S$Cz#Fl+ %?j_Q$6I4]n fEg]Ÿ}>]u.yBn*3+Kv†.-+\I*)q(B hHMiŃ3;Cm2 ~ aG"vS2܌0R[aZ}F7] .]/oʴ{ H0\ğeXZB (u_=Ooޱ6(ܠ &nGaWt_o;8KvIq%?OGR\C%ԕ ) Qj'ů+Bn+{]BpKKZ> ChKhIsدtK<Z^/ YdC.Cjim-6mՄ !EZamMӭqZ)Z9φ4 ~T{ Zf,Vd?!̶@ t tt,!l߯!ƖSǐl |"I]_ǭصu~b=8Nq iʏgbHLlsdfdJT[ui%$(݈~p+eZe\[x/]%dsRW45D#HHehM^s^b5֋E:(p!_5[2eR3ʳ0ƅ2TʐQK4$)?srwDl$YYʃsLDo Gܚ<} B֙ vI^-ź;6ž[CAae-H׉\YCDgM$@ZG;~;ohIد VU>[ߏ1r[\h8;%F)ٿ* / c%?Zmw|M AJϔ~:ddyDw ,*\ThҁtP`=>spmrput7kX">Dϡ5㿂U}D|BkNQ)f^Z Ο)I~NKM~~-o^ٺn:)J^* VWe\}oz+q%{=o}TyʎĸFoJi%i= * NFSb2|@.W~!&id[x-*)*HJU@sۨr= ;u7JYq%ᔤ$qֱc6֋2_!O`8GW7}kՇV{V/dqw~$ikJBY>\f^I2Kk:Pen%%'DI%Gv֛\cD`/!vHRHS+Ii 5b,\eD&բ-9)'C`1+->7com LyMRʇr6 ;; 5fSt9Ɇ%ϳoN<>Z:+3إ6VWHv닊n^WLIR BRcND^<3pkZmn!"DI0##K/A~'/6ރ36;mGSt3t|jLsy).@?ĩ'JBt;:SS͔iO\mpoJ{ K) $I֪5;;`.JZfJRRB] 8;BEDD$;Mޚϴ#Ry:-DA@ βruoe|KR^_o' |SQ\fIz/-}Ҕ] lm$FNjnmjSD K) qrl<נ{G^Yj6 k[И DŽ5?"<= |s,=/bϗ8'eN\^} אER8FRT᯷"?OE#GnDO ǚͭ T8,6qIR)ZO P&X!2'm.v[LHv$'H~ C q*;b7.,YnVIe\S @q$+J-IB%)R g&v8J49w9'Ⱦ*Eq:ި;JP)JP)JP)\Bg̏C([΄8JQ Ԓ)QY[ oyM̔-J tBBA!JRJRJRJRJ"%0f% @YOA5@)@)@)@)@)@)@)@)@)@)@)@)@)Ag#~pݜ~/u W/HN㿂U}D|BkA׽?>֝Ϝ^R̽i?S__[5AœmZuiyZu)RT6sk^՞qU:LI R4H;L5lmz$͕$hb]tْ6̎3"߻ۏVW-h4ަz{ws]prYvy9'em9)+Wϲ5`8LPm="[53AOd#)Yh1JpFm[lhhPdky1<,|=qȌxo3-4&I mh* ZH!6٬ߢf8oO\v+(e[.A'NA=.0Z$Jm7ntoobNG+-%J;%IHWuwwb1--Y$NyW+Ţ֫[W6W$+l봝h(2.Q'e,(hEM{(fK^0T򕢴T"RRTv4OdPp.net|gP4Sş0;޽M1&&F✻7=Ji +hmyHߩ& r{pnRVH}_K'ATC~ .6V-JT$Kh kȂmZ$>-:md7^H uhf#]C]\!J:AIVң̻C#!M*$עHJA(YZĐPfo=L~7t;MdI%\ykbK BT!JBPdǖdȑ2s,mn/s Bڮ9JbChHnZyRmХspMY2l1x1xb֊7AElOc߹dѺSĦw_ū$)<}O}]Ip_3KXR;#ӄ#;1èoiay{](3؜~ReLմm'{G}cxZ`CNcϑ!4uӫROaH](=989,hYXr $mbV3\q$Ex8SȓkR{o4Wl̜U[5_ {{=‘߷w7OF#{|jߎO/M4uӼR$bL9ϳq.*JwRJuxnkZJ.ٹA5juzD}+ekyk./kD0ۍZ)H#J ! 5a/c[ߓnq!].)r=O1HЌ1l24ҩw92\/Gp8ʼG\Rx ,Qzo%]I~o.Cm6.2iIi)F$}s!xeڭ!T װqL6. TErBZMǓ38desED!ǔnoℤ /ۅ4Bzp\%(RV#">Dϡ5㿂U}D|BkNQ)f^Z Ο)I~NKM~~-o^ٺn:)J^+"1hQJT# Pm/!@-~v1h9-9M̵ڴ[+V\L!'K*YVn}:;dZmVJ<֧VuN t}Zm;vL KYt'hix8қQdAR\Z"~DfNĀ) yGz=}.U1F~hM1aCL.1%(M6Uw:~&P, J$dhnm{)j !vاL,x ĸ:ES\kj] >]sR4 x:f ݤy\il82Tm gf_cR-|ZZrO{\Ƽ&VUĹY\;HKAjI䤡-)NmjdSA8T\N6۳ζwe2d!>fֶ]Ŭt7Nfd;#mnOe=52S-l+Щ@(gF -X+/)qZ!iI(!?za:уlmCSr"[*1ÞWI=pԫ" \ђ,[B `hJRGab-O~M̺a嫶-Opbqޝ=՞lm" Nl-_GcA@d/VI7+l4SvI `"].<~jOu.M>p867+Rd-ͼ%x<#{]n9\e[Q3e8 2)ZI vYlݏ"lV,d'ddiiH$huAJܧ /ʤL*ryK2է8NtNKM~~-o r_k߫kէuiלiJVzJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJR>? Fy+81_^׽?>փ {WY~?&} ;9F{ejӜ':%&}ޯp%";d7mE t;US r_k߫]&qۏ?cz#Jq$~"Q{f \xR;q8 kC/DfբGs)ZHǭt3-{]!C50:^!-q']71MkZm6d7"CRRSX Z!V3!c7l,BY*vJPCih2”$v*39Arʯ7ٶ+tVw-hd7EC8V) (hqV et}zsb\I”xy RH @':Lݎ>e-bClv3jٔ%hQWPƪe2Y(>.Vp. /6ɵօ!@*DY7S̩T-c1 n?*#GT% p*{hM֓c>Ade#8mšKRp(qLyoU_ƾcDZm"ǛJҠ]J98 Rvdy,u%"^)I0f2eS ! ))Z@NtkָƠ͓m!%41VO$aZ)yf~bV+tn$NIuRod(:WY".hUE*q))YJRvc r%UfZelK\oF!cvFɺu v=VF?nL7S+SB})QzBR#[]רpoS[&Όzu\WQxv2Ď%,v;:Sq-lݺްIedh0Jz>l|M"b/،i}L$̐JU=NBᶫ= }d0Yqä'@ޣZ]GNG>jTځBa>0y^PHe`x0qlb#NB&aLHt)`\T*xWxw~-bۃPFKjA-Fgyz_BrlI݋|CIu!ZI[ryK:է8NtNKM~zeA:o/O俤VL-ؔ:J |bէuiל_ cVŢq^ČO˪Vt}oKj) ntt+^U+iaJHu+!٭~!ԥEF~^BgDClH̥L qJRA oCcߵg/ :7C8>M-@hn2⿾mU>{ɏ9s~EʏmU>{ɏ9s~EʏmU>j>bimRSY* $[ ʟ9|5Q]*EƧ\AҔJ1[ҷ|T0{nWSEHj9G)e#}A1O96ʕ,;W/?"eGOs~Eʏ&CW%x+:dr[hu%!%Iߧ!V{u[?1-$HqKmyPV>3\mU=a*> y1?}tsQmUs\1~du2mY$v[-% I{{PH]rEY*e(du^36m1"N;sRHKk #`T=k:nŎVۋmD64JTROJ|L]vZ-pmqRW!)dScA%ݮ n%+ݖgCR\vq/JνF>lS$c1;-wy`M4̄%平*kJRO" ,GlnY k:<46|`Co3$c=F>lSЯ{0y-T٪ :w}w UxD($r =c}F>lS$c1;-!묱r0\!fCːRjA Zu۱K(^9jq]mOhAhiU#4ImH͊{?|ئ'ekybbT_g{{c8 cSSk胈bK 8JN-HT4H PϭV}F>lS$c1;-w;tXvLyjxfI~Q/bxF=X0Knp/gc"5w]#6)1b asce)e^+!%@蔧~&?w|LNSsOy1?}u{?|اH͊bvZ>~~ ?|اH͊bvW{ &  AS8qs>fNծZP7˗sLA]e#6)1b&?c,|Ow?y1?}tsYgH͊{?|ئ'eɏ9맼>=F>lS$c1;-OLA]=Y1b#6)j~c&?w|LNSsOy1?}u{?|اH͊bvZ>{ɏ9묳$c=F>lSLA]e#6)1b&?c,|Ow?y1?}tsYgH͊{?|ئ'eɏ9맼>=F>lS$c1;-OLA]=Y1b#6)j~c&?w|LNSsOy1?}u{?|اH͊bvZ>{ɏ9묳$c 11 'eɏ9맼>bP?t->R= 0r*I#\>MUEڔOeS^pJmZH=g8%Z/ φӭ[!@%_\ Lϑ92xCȒB4J mZ)~ekw.[kO3A\[κ+[ o\fdG&*~ȏQ3Mi\5,+V99/5՚JiO8_ u*:=?S_]/|_n:K%Vk);8#W]=YeE͸) F!gD_+577JAUlJ#\J5r3Skf?jPx#\F+ڔnJxo떝dk_]qgmzd߈x>_/1%=濑_cJ5OykA5r3WۤBYxZ v҂9mJ+kj$쟿5~KvVJT'o٦'7?kd Uf\{4ߒՒ1Vor~KvVJP[i%;_麟M.O}Y)Co٦'7?kd Uf\{4ߒՒ1Vor~KvVJP[i%;_麟M.O}Y)Co٦'7?kd Uf\{4ߒՒ1Vor~KvVJP[i%;_麟M.O}Y)Co٦'7?kd Uf\{4ߒՒ1Vor~KvVJP[i%;_麟M.O}Y)Co٦'7?kd Uf\{4ߒՒ1Vor~KvVJP[i%;_麟M.O}Y)Co٦'7?kd Uf\{4ߒՒ1Vor~KvVJP[i%;_麟M.O}Y)Co٦'WpO%Gxެԡ Ή1b.ۮM˔4\eLBx^'dzJǙb& ׏"㮸*q8⋛R'5RԩCˑy<\n:脀EuҕYo~?&} J߲#LZw>ryK:է8Kr?⦵Z1~i?UT%&}Hy}ӦAZl^QyZu/w[!I1~i?Uz4`Bl(l%j yeImVsA1~i?U=o/'oeImSo[m_T>CSb~1o W+S/9NӋtJ`}h==o/'ꧻU-*{-Kob~{ _O^}j⧲$ڿ<}o/'ꧻU*.^ /壠F }ϻTu4P9}o/'ꧻUJ_w[!I1~i?UuRb~{ _O]Tu4CWU(9}o/'ꧻUJ_w[!I1~i?UuRb~{ _O]Tu4CWU(9}o/'ꧻUJ_w[!I1~i?UuRb~{ _O]Tu4CWU(9}o/'ꧻUJ_w[!I1~i?UuRb~{ _O]Tu4CWU(9}o/'ꧻUJ_w[!I1~i?UuRb~{ _O]Tu4CWU(9}o/'ꧻUJ_w[!I1~i?UuRb~{ _O]Tu4CWU(9}o/'ꧻUJ_w[!I1~i?UuRb~{ _O]Tu4CWU(9}o/'ꧻUJ_w[!I2 cǏ0\ O^߲#LZw>ryK:է8NtNKM~g\?S_Yᨽu~ _A^ƛGlMy AaB;E nJU!-*$w_m-XZg]?( V=5\=KˆRpfxx%HHyIIP:rH>5@4k,KS=agcJ$<)I~n|a7^Vy`@15AORA_b{JŠ+'Ob{Jb<h,{r) %iJ uĭ;d뎎ST+'Ob{Jb<gJS$؞ezҘ/?b{l۲ V4% N]R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R ~ȏQ3MjUgКӹkY׮V9ƒP-W{lT`,qy?;ɑb_R&k=鉗ilESw>LW ޼Αys\]fSZYW CT|xGO\E CjBvAg=F;wҿRarpR|nc$+e|@vJׂGw jU}ev]))@0RGj|%إ+f^:'s/?;&G)Jx 7:'s/s:*Km%81RKgTFtRqˣCdؗb!#B{ _E)OfZ8|%اs/)OfZ8|%اs/)OfZ8|%اs/)OfZ8|%اs/)OfZ8|%اs/)OfZ8|%اs/)OfZ8|%خvz)*oi!(dԒ %[(O}OfZ8!2?KOɑb_Rq!2?KOɑb_Rq˒ɒJ|p@IW6a?ҕ3aOG"hsA/]2$J.[A Z4{FJY m] ^ϓ#Ŀ<r,;%n)y;xxh%;^bmG7_4JqhʹZV Q Z8s2==ES=+~u`$6Je[ei; [swwk|.իi]LiS(FCEf9; IWجMboIû>`n~υ#~`n~υ#~`׼aTSNl;_v];^SN:~υ#_v{O~:dû>`n~υ#~`׼aTSNl;_v];^SN:~υ#_v{O~:dû>`n~υ#~`׼aTSNl;_v];^SN:@o><&@Hu- xsqyI)cYILWTII#֛b5oښ)~ ks,y2e]$%A X<' 7_bnwՖymD^m2mHcU#Ogi̦)JcKTnB8*{NT뜶2ZN yiKh=$ρX[vlښUqMZu-I rD晴^\aN6d2o'i 欸~Ea߷3m0JBA)1O5Y{ܚdK zژqոmI)Vpp1W\IezXA\Zv@cd`~pj}5 JudAJH \$ZQ$v@穘>-,B\3 ݦ%h$%GeI$s*E}SE4zZqHdb"ry°mڊG@) ¦Yօ^d(TeȆ\$ `ZeMTLuJi$5-M-E6"?lvgMݯwVڧ?jtT6ݯwSwk|.կxڧLPwvgMݯwVڧ?j2uCa Gu7vgZ?j0t wk|. Guk0x'T6ݯwSwk|.կxڧLPwvgMݯwVڧ?j2uCa Gu7vgZ?j0t wk|. Guk0x'T6ݯwSwk|.կxڧLPwvgMݯwVڧ?j2uCa Gu7vgZ?j0t wk|. Guk0x'T6Cv[ -%QAo[cw \fkkSPקּ-`wk^mYnbϳi޲|_Mb[Qdm,7֕><2ϝ7"ޝKjx(ڣ$"#ʞvɰy<oB,6t)A`Ah ügZ}dV^NǛ9P^\uj\g oޫkguV"i‹Zrȭ9Y]8’43@\۩BeN8Sy5MROSj)~vrS)o.bv߹ZИ᧖㌳0xdAE+Hzy\G̴T;mPJ Hx<*[ܦ7*q"BkkdV|y}Z5#*2SQN}iv'}NIRn)jBCEk p$+P PRjŏ^iƢZkA! s)I91 Ý,[2SQN}iv'}I"*޼(ZPa$%.nBHm7xMf[5]{f1r&R))CJNR v6rgoɕ-?5ٖꚏbwX𛢌d$C|ie43hʈ +mqvK9:8Z[JO)a!'47ɕ-?5ٖꚏbwFe΋kiK:bBPOI@VʔBÍJ۵}zvPYq(^a)!ϊgq톾aNRcsUiv'}mH9fڀN۟1j} CO<G{ Jc=F2;ae؝2SQN~!˷7mb>!^ #eԜ*Khe_@PRv0r86V7ɕ ?-?5ٖꚏbwԌzF%%LI{҄g7¤r?͊,-̸:DP)Ԥ$T47ɕ -?50^,uy )H1;G?1&z25+6V {cm(p!jNFRSYYG?ro+sٖꚏbwOMG;cQH.ŕs!CQG7qjh=:/M<\JvԀp'( *)o+sfZj?O-?5﫭xVЏE-_T Je@ZiI'hTϕK&X4Tq R B  2tZҙF2;Z.W~ݿdc]vL#|[LunO]1֮EowLցK:߷o.W~ݿS;&Vk@%j۷SLun[)o+s}鎵w)K:߷o7ɕ>tZ%j۷VJgqhdc]v}鎵w+3env]1֮E>tZҙF2;Z.W~ݿdc]vL#|[LunO]1֮EowLցK:߷o.W~ݿS;&Vk@%j۷SLun[)o+s>B.w^0ujJgoɕ,zڵu> F۸~o4v|[׮__M/FKv\ݵK;n2_i;TKu!Յ!X siksݔˮnF<kli}7N7u<_MӴAlJl!C풯=yfS)FsbtN'ZT\H%͆ڕ1Z09I`(c]i}7N7u<_MӴAh{2L+\j]wG+oPt) )!H #c#3EhǬP 0#LONRi_F*I9fKvnnF$- =.3{]Sy7UV Pcq:3uRBO#Hi}7N7umڧj 1nvP((BIS ҃@4[ŶdI>!8CCk!D3p+4iM/Flx.75{fgvt4ƹԝZj I1ufCJ4ʚQu95?g?/ӬzE}dZxKAK~2u2($3߷]\7fψI Y a箪[-3o}ǖ_eא<Э4FA9%"a=.C3JZI\7ҜBvuI.$T i6ij%6,YCeE8 VqR>fs۫]D; ə*beH+@{8.,읟}k31tqؑJ]Lqn#hʅHܼ!{o$ "K@C [ IFXAVFӛ#Y)UXo6ب*>GqᵃRvquZZ6\xW;vk8꒶ VRO'F' h=-0$t4VӺxyqfk5Zkyȯ!A[, - * ڐ;7gSDwgT&bƛKGI 6-rwQO$a`chxsP1oydDMmp݌#*Y}ht͍|)L[48Zڒkx+``d7BMロ}EoJo}/~L~LТS{Q{zfzf}7߫4߫4(^^^DMᄁ7 %7o}WiWhQ){悔3M3BMロ}EoJo}/~L~LТS{Q{zfzf}7߫4߫4(^^^DMᄁ7 %7o}WiWhQ){悔3M3BMロ}EoJo}/~L~LТS{Q{zfzf}7߫4߫4(^^^DMᄁ7 %7o}WiWhQ){悔3M3BMロ}EoJo}/~L~LТS{Q{zfzf}7߫4߫4(^^^DMᄁ7 %7o}WiWhQ){悔3M3BV֒iXM+Ob|?QC7BH`J~0 >k|<䑏Vj)iJy JBH+@''V5~HunKx]۹ηt m= ۋb3XH BK[g&/o̺n՟>NKO'|î@I.u׷vhM]e;J|Р?A*%*2MJeP94U /Q kњubu$˝E yGBJxtG oDStv0rCqNm+cl( OqJԖlhM%R_JG1 F1P ] I*dG.;R{TDTMju:%Qք('wZA?vcoxT6U_wXm!m,Q+;Bu{v:=}U\!;f7}m0 sn#cu.Z#Ym+nؤ5v2hq66\'>b60 {!IjKV84YMbt-|yG2pTxPy;,~8x~Z`]QZ%'.VyߨE-cYӗX'qQPqk,Ci p#$ n? X:/\oI\/brƲkn&rqBѱ)@ =rEt(KڥC-cca pB//sՎ^NK\*7dDMZHiFhF{+[SiͰ ;;Nw?`y`yK{0aI-6@#9*NKC7)x?eܮY1[o*32y#bj/ZWD[ͺ NSܝ!i CjS#*NKO'q㛎X:P9 ia 6>+ĭDzXtmO$g c~SS]潰UCrO0Xid8TZhd 8Py;,~)rUo ֹYeN$61Ju?'|ác77?lKgZ N!xqqm)6Sq'͍q[g\$ivZ!^TC `8>sWXwX:> z9 ~sK|$o Dʯ O"-.JԲ\N9[`tva)m虿 u# Z| Pi,eH `J{+ pRSv-87sf-qۜ CkPZ6O `x5u}5u9 I+n ;yd$ (Ny(Ux;{;mtaßZ jT{4Ci9: NO? T{&G_5z~>cڑXҝ(,k #*o5^еѷOw+;7c]w}kzjr˗|iғ)A1* )Z)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)J)JMK~e?SWTG=q=G]S$:]RWؤE* sui߷]\7jψUJxߦ7iֻ2U;4ioOƂU;4ioOƂU;4ioOƂU;b~47񠪕NX7h*So'M~? Tx߬OƂU;b~47񠪕NX7h*So'M~? Tx߬OƂU;b~47񠪕NX7h*So'M~? Tx߬OƂU;b~47񠪕NX7h*So'M~? Tx߬OƂU;b~47񠪕NX7h*So'M~? Tx߬OƂU;b~47񠪕NX7h*So'M~? Tx߬OƂU;b~47񠪕NX7h*So'M~? Tx߬OƂU;b~47񠪕NX7h*So'M~? Tx߬Oƃ~RߪO*PVRA<ܪW8#| 9[zq9N#w82;Oēqx c4Hp 3WE?:.ϫ>MBv 3l\ T%)r=-\L_~ߙup>Eb&d؆څ*˯OekH0NU*ߣbZ^ڑ2rr:<^vBp1s<+jX7 ֮f3Ijnu=|)b#v**is#aԾxNsd7X.(ܤGp3*JJwh)9 O#Yѭ1"˼dɄal: (.^ MVL)Gl6%8 g5v53?.}wr|!4D}5}zwUEh:[V?OQVS3Eui4=i $&ð۴mk_pܨΛzSӉ J28 ,w1ʹ\ͷsm|w]JR¥lSjv'k65UH1wyciC6c -#J ON;;NbY9 O)(,+ ӥ JlVd!i>\ZypnSaj&wnڤm 2pa; Q AP;YVSmD )&JTRVykeE Th7M:l+mbk>4꽫6TGJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJRJR~PiOB/cM+Ob|/Q}>2<Ĕm5va;{!O ݼO~%sA.g.Qtk8TR 8穈/iUǝiHu6V-JTw4RIAY;˭ >_hS>_hT3m${[}U\fKFL6$RTNRA|*٢ZfsnM<am:VsΌ꡺+27{h8uqאָ(}T]uQjӗ'Sr.7ʓݹ` qkBBFoaV{@2KaGQRK<@;>_hS>_hV|%hj{p}wi[e-n##Q[`8;A;*YVp$ZϒZ+MgY-#%M87y%6RJM |яįH!DpupMN.F_u^e.ťDd$*W2R sWƂ*8Vp:*lxuer=v7j/WƛjX]ڧ]ڧܮ }6|TH5dqK-rrOXCrtlnW ,R.)Ԍ%jjMݪ{ݪ{:,{]#ce)(V7pNN3Qv\w!,);[Cd@ Cczn=zn=km9EFw(^Ay' # Z9s1mݜ%[y).6om͝)H!A*!X# ^_SN_SP5u ;k%N,-K@FJvѴg<*"j=y4u{ֲSkJT?}/cv/cvZQ7'%6vԒI2|)wЕ1R@#.((fzn=zn=ulvsw9O -In+‡x 2|ӑQCƁ2eoۛq zNR¶Th; *3A=v7jr=v7juUprG"1 y!G[JvA^Yy]3Rn#d3q>  9|O}9|O}Cڵ旺^?8۩TRae!%i$;[>v6H5Aݪ{ݪ{/xM_oEbr=v7jr=v7jb9 DBa'p*za旻y`AD|zn=zn=δZt5huͤ:Tvdh>/̜$Jj h?!#:N:Nme9* $ $//cv/cv﨨ZNK̆o(uYHyZZ\i:) K€$ 斑j7 5?z7ImXr!I#zn=zn=|"i-%┩uLgҒQJT6RImM_Aݪ{ݪ{/xM_oEbr=v7jr=v7j/Wƛjbr=v7jr=v7j/WƛjrT˨q"`@잊U bI9W8^1| pq"<[[1R"(l8K|0TYH&ppLCHR2-8RP̀< P3Ϲ\<ّmlnwD-#n ; xU:&35$MP=Ri4:sN1]̉Զ" Rd<0+OhuF~4n*b68$&9^20866ZQZz4o/8bw-)Te,)p9rbinjl[pHunBKkP'<5R1&vLVYMTu.)ֶBZTPRp˥*)JR'S@rtf㸥ҽ0Vˊ#<2s? &v&3?6:cێ)[k* |<2k'D\i+VxTpNOOjivCL&X:!I$@QU&`\{ .-;wG% )P8 o by/̷5:;Wu2X `C[ ' O8N:̹ D.mN:$d v+\Cu;Hq@qAŇSXF`^f;(U5Sd᳓ )oz>/U1zUYjTd`: aA'  ßE/P)\W'Xm*AY9è gi-d.KbDzиNǃ19%ל)uxp{dp0H)&C:uZO?:םg"rs?vIV:2@Z]|],,3p2O1*PZйlI!SJyp ڭ3}UPʡBwwK#E*i%C8u6RZUN7+x1Dn;L;uϙ9C$HJѹlRT8 / HaU*N6Fy+EGLK1.GTN0H +aei9H(: yѡ<VB$%j$dW  m JTHGUwdIĠ2)$~zR^VWݹjH@CꖤЯ)KJ|s.spEX45I[>3T[SZaญR~V|Zpۼ𣕆ҷ̑NǁKZf26lҲ:OA8]M:L;/%y6aeA'ip6F n ƄҤM&B e V96GTV}+ P]`l7 1re:@*QA'fT%'?uR {L7Ŝ_d-d$3k?uHtղ4zNl V#88%S.BeTAPmp %p Zwη}cNhr-qv80sA8ЭS˂#6INsj6Ւ-Kx7I{rrV%* WAw"Dz Apvqjr:vKۦKee8W5-fI!Vm:x|nQJr+lgH3W݅yÞh=Ylur,k%7xrS&Kn %zvA'2kZQ/52 H1s~ˆ"XS)!ݠ$lu 7TpkRteVy#Ll2N.8iAЭW>hRP'YUn>eQGp,FyRAh4D5•(J|+y8ߩJJRlR$ǖ0U9Apyw) P2T * T@>j܋<#'6p+d88WOJCd3F|зjyZJl{ y ϘׂR6l[ & /,mb\YAl)qմB~,O +B)P=փRYRnٹJ[ =^HYZ. R3j|USM T3IJm,,8aIպ2I#uIJT(9m:zz%i%N+޼B4ړOAzgjOk?M6S^YړOM>4]ѱgr.(鎹$<3gON1p7 "C.B) V}º[RPXIGնݬ-|4,s)'Tk>!:i5gUR#u,Q q(h2`_wZKtkj 瘓t% ۅi(DaEw>5a~Tio[9")Qa+*h;*);<2 uݳ]zm`MH lJc)$ ? .{W/UwJy SA8K <sΕcgn*[Hi°E * +Y=&6SqUlIֻny.-TH2[2h"1(PʆHxSJ?|֚Ndt[֕v<ڐ]PJ%$BS]jOk?M6Sy2u66/˛6u832׀6dLiG_سNMd ވ** 2A?DƺԟPj~mI vnYt7e6tkv \9u8(㚺YړOM>4VvSjOk?MEjz}{qӬA.< TINnSaM!y r28FhcZ5=7]ͣI'u#h($ED5:=3qki2`mDc(V?5QekTxenjdy duؐ! I]/TXu[gRx Ob(sPӴm t>4ړOPp9dùY4mո0#?}7n@ueכ+%hW6kza6 eդfE_~LհKiA! R$g3]jOk?M6Sb٤[ެюHG%QacxhP8FS,UśUřݡ\_wxڔ[p)#>4ړOA< Et/q ǺmܷKszeKH<ˊ8+N^e4]ۅDW\;pMYIAnx'$q#mI vԟPj~5j;n> _cQiMKw;̆co; [f8Q;iB ·v &r6&췢b㍻{5hdNu>4ړOAzgjOk?M6SUFj$I*U*I8 +3jOk?MZu궝cRWGcۨ|$!AC;|2?<բl k+t9h 6ĩ萶ޖV풐;g!RRHͤSr֛1x& .!7?w2R<{.`]UMT]%qsw1Y3xңW˩A84ړOAzgjOk?M6SUU>4ړOAzgjOk?M6S^YړOM>4VvSjOk?M.<$Ka!+p$t5SO3#RܝaG'((g/p"q݁jQڭv8B3MOSFZʗ 6g7,L,%m$-T-NͲ&^Je2( Ga3REAMe`yjOk?M6Sr gfikdi3]%C++c| l,2P9~-wpH˜Nbøl2e.l.~|(STړOM>4N-XȵikTuGUmP0rKl%\>Ź۵6.QR3@)x-IeA>bOqݶSjOk?Mb1]ݴ1%]&4fX :+4z]t{PMAdcD)ʛR (BQpKmI vԟPj~]:=< "\qg +R@K.'kaJ4Ҥ˕!,Ѳ ,I8$nԟPj~mI v/RI vԟPj~+~PiT~PeãX8%Y) W8^/O_>"=sWG3o̺n͟R=frEq8ړu#)PQjV$T%V7mhzO7emi pG1־cYvbل kZTvjR𓯯6wz&0%m$H 9:U[[mlʡJIaeiNkV Uv'M.if| *k?$+'qEAٮpbş"6)nӤ['GEG-oնc؞gJҖZx%AKhqIJB$%XjSuΖdMea>@nTҔܘ6Y%{)t<Тml ,Yvmm;._S m(JRSjgBXcȓ6ǖPqԸakBTj m5/yQ}3-;7K|nCzQpG$,oV6SR<iG.=@?-Y\:vY{\Mj\د[Jq(PHR ⓰( ο_`L-[<^U3k78y.ZU5ͥ˥-P-h_6A YX]se$I~lv9;R^m8o;#kxxsqx3pt}dG66W`5´{.6֭ʔ#X!㶩 y'r:km6 ]ٗ]Ki)ZV JA⥎ :N륵O.ꓼC'(G>y2l!p JC4дIih % ҮTX5.e"sI&.s}y Džue ($Hr*B.5nHY[ʹk 9#&CI<)LR=Tnym)>  8Qd225I`V a<q.')FFG :piѝQwuq:] apqx|!$i)rBi$0K݅a +T 8UMCsJʼ[+ RJN2 Yx1.e@FDec)ZU TsK֪hywn{ݥ˃1;ŷB/4^Hq+>p;\sW4n +$Vq&3u-RvQ쀅q "M^4xLUyr"RRе!JASMyY׽c͕:S22C [n4RO@uqAȠZ|Yfѥb(@*Z$\Iiq$wJJ¶U <-=a6nmL6Ԗ$}<)mĥB2pq0w V7\+-v%(\8TI/*bG$LmD7.*:qg ZO@| 'f-"% L Rgz<v@G0ގ:R۷p}qofFKCm00T* &ؑ7OZBҐXmiqKr\ӳ`bAÌ)D*mHzUe#<6}S-%aKq_NAq (p>Fɺvr[GjcV07`rGǟV}A- 3"f5L\%˒h3=$ɎBXJxځ[a9O›^+P[_UorӸ`rxӞjch!b{[FNm#$H$:IIh==RBi')%*A uUl,#R7>e^rf!%8vU $ٴ]`c!a3nr-edw܊Qo3ke֚z=YCH[MJRpW!3,Aź8Us+#Tf_Pq 21.FnտRH(%C|FQ`)l6#'_휊QL(`$ÑuJЛ!qvՙy# sn )H*Ccv|9FMƲ.]g.#_m: Xm)I ijPW )$6 } A5ac<&?GuyF=GU[Aob҅=;F3)V^A^:AI[[w? T] 1q61NHQBҦʂ%$g9NEtwW3udOѧVSk9)&Mj2x,$  H%)VU^ 1s%ݤùEHRY1(o P*Zx#NEtwW| LZq2(cp;x"ktJř7W'5$q)جEp%JWJA'h:o"a;Ƞ.꼐R >QPV0Xqj|me)@#%C$iMT뭓JFxh̀tWqݝuجk;{D!!<*:ߒs}TI?QH<}O7[sL% .m%-.}"JVOkRڣ4NojJPj~I?Q6&Җf=6,֌Y[+2Ky#@nu;EtwWEtwUJEtwSA0]<*+VbT4SŭNnA.ԕ8**5sR!FψCJ܇6ղ% $$pGXPz?Gu9ZG @ԭ3xܤf1H!HBRJ pD3ߪ QMĆd< }ՙVҟrX "a;]ڣ-чBYܞyQ9;N4I VA'BŠPz?GuRb[9-2FHl[iǔbAm PDl!\p1 Dj[ATY89TK~#tTbfJHˑ|ovKtSBR8s s'4S-Zqda'ѓA1Ƞ.Q-8C',#T]T-bOBVP <﬋fܧd!Ѵ8Jg٠Pz?Gu9Qp&tvLՖCOi)F^u I08(b,."auu! ÁI7COA7Ƞ.r(=Fˣϙ&ZR$) JP KbASy:!IQTdy$dt EtwSA0]ɯLӒRq TR6GxKO;l|+#($y%l##!;dc>41-a-2#P26 Kum<ğ.&=#7jV60u"a;Kop3jv\R9H&\dܖXpRw!DHB Q?"a;Ƞ.mo(qibsQR{`ss1զ\a[r+v0sg*9gA0]P?GuDkQq,!oZX0=#Ѽh$ ۰㸆׶BU瞞&g7?MpH`e88K*C@9HϼoOO3ΟMP ak(%6BIĶJ[H+9^f}yF預rouː"AS)) UǢEy֝z3.8K[`f}yF頔,22Rv@Pg懲,RiĤ+@d|*'F駉OA"T뮪buecGG4In˗1nJX{H꒤.l-IVA4xh~t43>Ѽh&P&g7?Mݺ\iL W;5f}yF验ڊ{}U݂bFO9jUl9Q~&g7?M*/F駉OA$0SD8.,-–*P9AȨ_3Ο&g7?MYkJLϴo?:~xh~t48{s5)Jq=Ch~t43>Ѽh&@s%#8Hp9F駉OA1c} | f}yF領(AHIBvG0_THjF駉OA2tP% Qo3Ο&g7?M@tWlg 3>Ѽif}yL0:)F駉OA206G)JF03Ο&g7?M1{l`sqo3Ο&g7?M@^ ($s&Lϴo?:~xh~t4 NB씤p3ΟH\z}8)' #<#A>dlC[,$>BBA}o\M?M~_}|ޫ.gJRR R R R R R R R R R R R R R R R R R R R R R R R R R R R ~qٙ) 5o\FO?ulϼ&XejO@Hrdy%6r*O(+<2G7=|^ͨjlhغ}46+JT[w *aRА&j@?wz z ՂyNۨ(+NH)H#焸" ´˕.cMNЦFR9BI*# *cυ]՞㏶do)RP^q$`=_ؘ33Q?H>Խgq+fOE=DKևƓaZtݽ! (3>9TOG(?qKWkiiJ׳SW 8Wf߬WKtߓ9p}杈(mAmT#?}kDƷn滼W-^\X%[LN9J%DOSW-F횂#Tn>)O2'd8<+PH-7d18^ o=߸A`lZP/-m7NvI7Uc[\ Yn lfi$i.6'*7[zw;4&v,;l3[m2)Rc';|q| jDx?t|݈LDgf Ӻ R^$J!-*y)i(({ q’\oc'omdӷ(Ю0-μB,,)V񌀢#<āJ؟?{JdFt zS ~?kv񍿯^K p)+bߨ͋gm~/lx%t `t Ǣ>_zO^=񍿯^Kc&;yz6O}>>%.DIC;C  ;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"V!1AQ"STa23q#45BUrRd$bst%cCD&EFV(1Qa!2Ab3"# ?M[*9i}|ޚw>Ӿ6EʹjqiBrsaz$*l{UY WTqmʨ˭%(&+$8~Qz|E|Kq?V*jpɁr0SZEgP3KH*){z^ɜϻf}بm9ڲ.ɉNLOVg݊ӟbz>Sՙbsib|ϻf}بm9X_&'391=Yv*'?N.ɉNLOVg݊ӟbz>Sՙbsib|ϻf}بm9X_&'391=Yv*'?N.ɉNLOVg݊O4QNֶٙ.<"KBW+sgqMCTJr IeiVɉVyĸv{i <CH&YyP?Y;qucՙbųceh N7ysjN<υF5f_B@+IzkDQ-czHZz+&'3YSq#>\E ?m{}q( (*Xz>bz>SՙbhaEs Ð 9åbcB/v0`q׿=*#FX:Z;_^w˱Jp'eko-S ok;tq;"Ge*_f+)vi%Sՙbsib|ϻf}بm9X_&'391=Yv*'?N.ɉNLOVg݊ӟbz>Sՙbsib|ϻf}بm9X_&'391=Yv*'?N.ɉ[t{a]"JI=O<mO;3\WL:X;5l?p;5l?pj[BӃk P3xOKqe[(\,'"ڏKd3'Uתƪ4$9I'lf'GDi'X!ǵTUopd;ZɢGV5S͑.v;^dLZpd0}'Pcܛn: '; *~ h5QT˩,4]24j8u t81sߌ8ύUNs֡>*?ί*k*J 4ʀ> ImHERS ¬<gTyhK&bKL--X*J==;]SMѣx4 ۛu[(P9x`/+W%dGD`aǙa8ln9y† $ kox+*Қ˛v ~_ v ~_ 9o>f}M$kQJ@$ys`M, G ^UG?#W; h;ߚv*?hkң 싷4̧"a撒(wւW61q ] -i՜`;5Q;C^PsX.*3Ky ۙ-ʃC* WXFۮ/c;s9|/FfmtnץG%]qܭ`jY鍲e4b zT~!NץGsL.ץG zT~!A4b zT~!NץGsL.ץG zT~!A4b zT~!NץGsL.ץG zT~!A4b zT~!NץGsL.ץG zT~!A4b zT~!NץGsL.ץG zT~!A4b zT~!NץGsL.ץG zT~!A4b zT~!NץGsL.ץG zT~!A4b zT~!NץGsL.ץG zT~!A4b zT~!NץGsL.ץG zT~!A4b zT~!NץGsL.ץG zT~!A4b zT~!NץGsL.ץG zT~!A4b zT~!NץGnNMs WW68K aS\ֽ X=a| /zFzd[\DE]d82[!j^H^uiw?ڭY|FծkɁ))bS|X֤7^='|+>VayYӛp_=s?d5z$B'mFpHk{WMEZ%ۥÌ$!:3#=&Xyu.GjcKqwaBu` $o|g;Tmc|FbcKeo* 8@># ։3§HKzKipc*JΔ7eFnIa[yJAԔL/re@IVvo ڥ7O8c˵8kʋIHPQI1lJm b~a[eqIH*! 6sn+61¾z"'RLECXkQfƽX~q^#;1d[N[Xй --Mgc;p1A~=f?WNmc|ʖu#$%3n e)jR1ɨ_mra6=#Yr#rp+[~χQ mahqԅ#ZT$)$@5ZOzw q]k1S&0߀%ѺI#wӢk>5lJTi*ZP$oIR֫LH1%S4Utu$AV ĕ%8OACN~4.(mZQҥ`:ωjM2GcUIDaƎJIQ; VsH~\FޜjkJ5%)i$ DžI|M5ZdfZJaNC.2Fn+(2!MFvZpJ՜``, s\ gvbDgM4 :.6OwAْܖ}RN-!Zu-)j$%#$+$1]dۘÑG>ZԲ,:Q朏;qKUEԥW[qj̴K@b ґoz 9\ 6+K/jJAl{6kBumm^kHR+^)N; 3m%#QOpxTԃZ KioXGUV/ +f+3٥:Tڹ@Aq|M5\gμoF$HJRpL59F{"*iH;7Η4) Tt7aA5Mg/қr575SdaBt tU(3>&ωN`Ϭk>&s9뮕)M脜? Go&Gei+[6)C8S<Uw"-Nsa gYS2^7"d~L6dƦ+ ƨUx 'ZeJԼTCסeq>pkw\JT& ul[`57k(cr 1V=.s)pvXRt~jZ?_1\ӈaˑ%V:1Z8 ):}-n?m^~Whikm# %Dr1ַݶːS %0@r;+ 'o8oS; ?Tc݊YP H YN箝xE3rݑ>!RAk'9?}lЛSy-#pPq:V2,"FpwNF7"1-`(*Ym  5jp`edjRNRp{mx"BX1֤pKqrw5F=ا"@Ȝg 2D4cVs_{*!iސZc=uoa)6,&vo9M{j5P,Fq )P;)Ȳ2GS#Ha{Nb(GNdS{#1; ?Tc݊r8s$z߉59=Mď~ǻ0Qv)̑o~$|H7>jaSF=ا#2GS#Ha{Nb(GNdS{#1; ?Tc݊r8s$z߉59=Mď~ǻ0Qv)̑o~$|H7>jaSF=ا#2GS#Ha{Nb(GNdS{#1; ?Tc݊r8s$z߉59=Mď~ǻ0Qv)̑o~$|H7>jaSF=ا#2GWuRiM%(Rp ${𩝆1; ?Tc݊r,v%D0%+m%XXA!G³Js Vɫt&r'^b!ZeN´%q(R&gD%M bk`G@mJ) o쬩ۑة1ƃ)нc`mԣ+-јq PJZ<IԪhT6*eZ`F!89'-CmmJRPJrHlIkeD$6hTWyO@W+RN5Fa䥖O J *#a' @ Y_jDf.JYmԠ6lwMQ~ BhPy$-41(HB[J@JRMQ~ xzTĎ-[-ԴR7ݴ5n0-4<ރd 崹pS'Sjui'O&(? 4-rE2ی%IlwTB`0MQ~lR`}' *}a6oYFp|A# 23y6GITY[OU YKj3P4 ᠮf2-<3>?V>_rV/̞h+},rټ\i\T$sCj# bdd{5S7~SN\-2,'G?󚧓Uh:+^6pI*# [m'>pv3Pm:ŲaR_s[H$R?+d hHuc(q!@硬L]DLGg\\2."l8ܷ^rGHҢ{HVn\|Y-[qNg*lUIJR-+ }ybX14Ϙ&19ҝNvjj.l⵪1y RRa;zc& *ĈĩE׋r%*u @$cVQ%dEe6e; `K|RP4A$@>P@W6M]ei*(B^'rRwXMIWYqpz mLgbSIV H=3:![[Y,VE 6zgu (((((((((((((>˜ͲҜW U;aSro1\fD Y G;2rd2+HRNFỲ(wkH:T:xSq"MK ĶZYeX=CS5 i\Pu=- E[kIHJ#oetVaDPVZKS V:MGjge4զ m BIV51dwPU]z%2h5(ʻ+ja'Vnvtc%K.)) 9YNz#5_2 Fuu25('WeF VBq:3utŐ;Cڇ{w\^-* ŠZnl%\,J*p,J \Zaj 1% R1čMxjnfj5oܥ[e!}MB#'8Tlz&f&pkn䄠+  o##D <[Fu͖,% W@ނÏ_% MIe(* ՠ%RT;so;'r!IZ*IǛ+8ѓVZmL\Q%y,-Yc&v8vf//4h4m TLyUBuJSTHX7+~kfnqqtuӔ":[NA܌pb9 .+*-#Ů fPŠKl!A)q)lKR[HH.,D{/۹}[|n3ٹiƜkgdmvR#K!R柳"LqMnE(i`4Y _kDԉ ,K'=*#oN[5pTw\H}ZjJRH jJi2e*JFczhmjR:TrHlIh+nDžy{$"slɳ8ԙn2 L*G>816J\ !vL(x P:/ZMMۮM!#Jm%1QݒռQˡ苤ݶH*>4S@9q5-b*CR8CcY86[O$[:H~+ad^BJ摨$H o`JR mQJ?*'TfGն, }'aZ ܿ2{J`fwd-:JRPdŽ%$kWSa/yiJH sLպGjTi}(w/_jUUW눦ҝ HBR'Jp>UB8鮥%)Cn)zH䔧UTAʂ+WSW({ nf3 Kzxjż(&;n1Y@QH؝ӟ6.vCr\I7$]uZJ4'~e{SxMKn!RIn0[F嵌Q˺\;4XEqR.:RU%_i ,IqEnTWR.iEfotBy2RʉYmҶT R R R R R R R R R R RhWhRDzo4+qC׋ơ,'ONTZ.8wxqr| J.)ǜ\#BtexDoXq2Ԅo g"뤋{DEvnT5Gr1? گyG5rȰqX[mkJIQ P 9,zkM%iT'jZ酏碌0BVW94H!K9ߦ|wRYa7vlH%`$oZSpظ8ΠrSl][$CyQ=q{:T0BVW94H!K9ߦ|wKOnv<'tr*:+1oy\ҕȎuE'PuEg8V:@lA+Ym9o9)_!Jt&+Vew(6%7XHJ FT2pDž֕͸aRb .ie֙N Hmj\dKWY8,tL6cJ[' YJQ!tqMrS!8X(Pd8A(Zg٤{lIDgFBv򒘈RB{2m YNA8AЪ۴ t ;5[ jmu5%l0Zi! `U=ӈnSn6!0EKZFg 厣v/4hw͟yH@~M!Yˠ?[;{|W^C?gOfzw}ݛ77G}ףNiqJGMgL}s{_ioz,|]yߚY ^$hjW/rۮwFLʀI\N$!KRRXԒ7 {kf$L[#+7%C*”H9WFC"L]fr]mJ^ sU#hwJJAٻu˜Ƽ^s5ߵ}[WE5q*LvuOՏ%xC [v KhR?W?εmYn_= VZcQ oqV+ b\}llV+RV2 H= 5Y׾zpל)ԣ((8.p:J: H> ^~&"[(xD6lVl"+NJ 5- Q8?l+Wd t .jIwQU궛[Хkmw9bJ+J+RJs B|AZ]* ᬡ괾d(o\MD7[h'QO,+ۄfCy:WI'4re=D9Cjלu֕tc}򵷘~PJBO99t#;Ƽ2r!@nc3Y(9*q$ Ĥc&RRRRRRRRRRRR&V,7 Vő ̷΄dWd%j  N[a-#,(80U4pcxta†JA =0F L^-SQ.1t6QFB=Fě2oan6i))ң@g*Ti70eMž8h:R\>'2RC8Zq!HZ$#JHH$&Vnml[g"+̧Pۉ# *2ڕ.ftg`e֐JᜏGڥ#\)mҥF@~ !2LbS[Xژ7t $ lԆP!֜HR%@ ]/!E+愔$ҝJdZF|T($5neT얛ii$idcnyF̳urJ]m-$ m9䛵w|^JO;߃I!;ʗq7uӱ=8JԻ{wo岎Θ4e psk ,{:׶xO^wʕ Sd"hϴ÷Jqա2AW e[TKMS Pon>&8A|Ր_o5}* !n}W'T)d HФ[zDxuDGAL5%'$wΔ R R R R R R R R R R R R R 8$(;*`kp ÿң>֔<* W~5 ;=-Sru%Rbc ##"B;{$Hި^:㾮B;{$Hި^:㾾p͙zg[Q9<.kF*JB*PHJUBIXnj#l's@[ua))҇m*PJP! HJJR0€|[tO/1w*<֖a:Nd1RöY ]۶q%CBXPR'#$Mb?fv4u lNT5rM筹M<&)[ JF[>nہ^ِ6U/*lPIZRA=@󏶮`T덚Í9$u ڢKґejjJx"p~ch8".RDlߥoqn62E$eY/8 N:mŽ禡H}m>rPTR1mJ4nv=5 CCn/Q󒂢jW񠣛E͗ZiϺmِAPRyEÞu>|&T V&kxISn)JBiI 9*J}jMM&SN:% ee~jT'V0u"ÂoAoۂf E^ZxҢBUk*]d?.J% ! ! _DhRTs^V]qoqrd<I[,7l+8~jJ >}Gg|((̟mQJ?+V۬5/̞h+rV+ K0u 8䲆騥=~O^H.Z)RvT lY2I&KzR $ {\+m)[eVI$wgF+ j՚)WW]]%*) mqFGjpG`@LfZ(IOEA8ƞ'R.ʚL'7̘[! (O_Uk6S{!Zx٬Gʙp!”1q}Q\%>rhkQ3.[:DFBYRw )(;v=cPxMV5'g;tύrM9CÅacJucWY*t/QpJ qgl6ZuyO>zw ͋?6pً$Iշރ~%l%H[ e`#_ 8 V bm/\S9hm1!JSm $]m77 xao J+j8ёzQ%ξ5W,R2mpq xPYwW%e 9A%DgdCg-iҴl(h *pI9V):U9kl9>+~: rA;4V2 ltxdCw;u-lVd㺗d&d$FH@JQ;7`zDfqpu,iaZY% C!9RP@ڛ%.%ĐN6QT265usn)apqj5'FI ͮ R[@ʖ@J@$xs.HBfZۖ(lM}[޹Zu2q+:а1~4cڀBI'2BǔVRɬ^?fE Bupf!$2 N sC8aYRĐi:7cd ]Ma`U7  \J̭N mA+ ZTF$׻eVzR)iI tV|_Ab:J #۩LY. 8UHZ&{*{gƃi%6su括L)q d$;9(;QY2']TV䨳 JS|ݲj Kvc彭2Rɞʴ mb\`l='KijN gZ`C校 X\? [122Hm.6*qS1n<;^ۺLE|.Cii*VN:)sV^mmpiP=A  X3-13ɍK|]zjF}8ʉ %#' Dyq,k69j4HԒB'Q @;{h7q.R1+S([XJ~I5ٮ+@ee IV@czXxm)UjܥJ㓠) d@TeDi.v#Z̀Jso'9ǝA~m+rNWa QJ@Q†a_YĕL!S-R$;pŴ55S֧̒’)ׁ'޳D:VٶɌ.I%Ku ,]F>4D}A$):P@ ,ӡ1|}J56lURW νϻ.| HK+ a)J2,AA֋d"˔ڣ3>?UGLʍXI! V>%'aZ \iP yV ;Y%|oЯ+됢:"T$B,oD$({ԙ2=%RBy$((ACNp1JWQRx@)%j!ܐ|@d oط@y0'1द;! JPce> #4V$ؑ-]m Rᜓ4 .X=i}Jكi.!Ђ*pHz +)ul-!E12=֝˅tj mNkp+JR'`'$Pn)}o\HJ p 'iXe/ [#R=d5 5Mlq7kJ:qaK#,0fyQ\GRV1NFU~M 3g).B\T9io)~3Np&BnSODVsRzB 'cjJ n"͔~q2RRRFw8+pɌkIJ'$80@$i8;G;ղ'N3UYns/79ȋR:U)8ʷXAV4ϒڛn{i"BƒHӀpw:wLJBaZ) ;rtA3)zUI ;o*dISȐd:\v Z8j^e[cf:HS*l`VT36ʲҁZ7-[}\HSbSoC!:[9wu޷I^VL&2ì>Դ6R%@G#@7ߥkO \.Ƶ͐d9[4ZS)aH)I#en27{J 󖛼Y6]:LHJjuMsur^oc\v%wX ^[A|ġa +)@H'Z)A[òZ8d9wqj`$PmI靱[-/b‘f)9:l@)AOՏ3gmW!fP{i?B4ZW.,TiPR[/Hm-[(KdKճ> :H? pNS*qAANhPyWU1TU>1[.-$4u:JRIP Y$t?y#~h҅ g_YV:$yw.ќjIZ"Rv:KRT5Lie(rס: 2{[i\T7HD0_K 9*|$Gy#=+>7eٗJB[ZXѩEj787G1J T[ u*t5!W.L"hA\Ttx#=2r¿s52c֔d2[F DKP;_}/ӌߎ"\WrqB$ ^z`n×N3p \kZ֢V1BTAZ%:D`nZ\pi_l )>1ᘶ8NhH 7g=Y%ZQ݀Jh8Jp A .(P#hrH*`e՚֋,If:n :JZha |~;VJRJRJRJRJRJRJRJRJRJRJRJRSD%$UJ]P$ڙ ZAFq(-U˝Dʐڛ.)c3T֘˵Cn~+em024؃@4Ej46C\0I֍6eWFj3Ƃ䠛}ϙ) )d2C]mMqXB4R:rwJ#MCS`$36Zupv1fwm:%[i<5p2Nu5*~sanWbXSN?(Ҭltȭ[κ3qG!'Ҥ G`GKmEqTgeYhӫ~6P}~mΕpji%I%1XRpRԳK,V"h_g-K 򍁔e Ԩ.Z~,75ɒRSX>h )>[5e7݁% bN05o;oAQ!$daUN?.Ci^^D\cRl%!J Ԭ֠JHiOz]ܴYCqyDI(%gQgĹaZVq5%_l )>dҭ)NS "-"nMlbN05o;o^á\ Ňi!ҽ9RA~xqyLu 4VjRXO52P!,)-5oFNp%3 %[7)M:BԤgpkZ̛,_H9]%oTnZVқjI4VmO)hB%*d{p*ė;E2&\(4:GYBx>.lٗh/wRV a缓Awj. H"nJ!IQ^9Wqq$}ڭ=Afw1RzO:_ 1t[-7i\]AԂiNzfGOn65ZQl.?1+Jy9zF7+%ۻҐCݭL6Sa$?S!AqNп` @ۖvFv2tCNBc7Rb"}in͋(G) PBˆ8. %FTiXRHβ˶Xikn'!$*-Hԧ;NiX|.]IV̕r=>>ڄ 8ɮ\; Qs8c}XRC}( -OT4ji*Ւ9+ܻ_v2]b\t)%$ U*/Ğ@\;/3y|?[bRRRRRRRRRRRRR&V]uABJ]v[.˹Drdh|8#)Ir#mJBWA2HTEH ᴵ &r{JTTYѱ={v m*nvrVD֬JN`@ur[fV:mHQua (*ը$ATX8J~4ӔrQM1LZDY"KwKu% Νd^G DL#'$B&3Wi8BҴ8Jp|8-pcܶu Zto~$ɮKqǂTu e[$2ʐ^m8H@R* @_ZuC̸q!HZ T: `i|Iģ'NI4iqzR R R R R R R R R R R R R R w8mHABDi=FH=F}%Z"\G0Y\7)rIn(=)Md\+uސ\hq{*В@឵ 'eܮ2zRNHz;bX}-IRqA)HI'x-Q*SglK):sr0R1SQH LtM3CyΞ3ڷ;q-:Ҵ8Jp|88-8n:-($p q]%r(<Фc`nkyPԴy;QN>N6ێ yE-JIw~k% I#$dc ֢7Kr9Qr%h)lROI#*'(4xuq p%jZKM;HVX K sPUcP9QҶthv8IRBu y 99ڽc@r'K'yIʔ) $ aG`ŴEp^rc 96@RS)><:ԃHt=k:QOf*@ԍiIsR (cǭZiAs{@vPС":#N²`j4$G-^qN )%-_HC$䀠3S\ TӒC( p DڮC͟ʬr~}\??BQ sj^,{t*/3قۥ' 9h~rq1уY8^³ l8)+I_%uXqGfSPP`ES]QNWwMZqdm%Bu R5ۿ]*p C*ty ݚ۩!h)PPz#vw 3q.-Aa>Чҝsڕ/^;* [#篰V/ ᩂg#㒇[M)Zڗ;#ÒuBï\'PZrPp%ft)RRrG~{+yumvsi[%N+@T8 u'm0 Ҥ*RRڔ/'$]:bjV쑍 |zUd Wԑkv[Me AH#ly3}mT/i3lUZ%E\#$} ]jxJȔ EQ$8%DMl:74Ji+*)$cTPVٛ"n”p>;R=Kq*K#̖EGG,aO)KkB!%nrw_WcBTo%@ZQYPVrNǿ(4u=6<.NHp7OCZyKG Ik_BJtRVwb"CRN'`N2oveHDSëdPA1A⬶kE<⭭- JY ;Vnz2s!%HHJZ0 @gb>·zŽ xQ>N~ՒqN$8Fo޵'Rw$ ((((((((((2%V%> 0ڜZ2I@ΐv'dqEu⸄-%KBAq!*Svh}}5ڸr0ѨC=27rƛ2c:ұӷANODnjdE.pl:w,[Gr{ %hZ F(gnEZřHK$Pº;<bJ]I2Vұdyɠ ʈ ?)o!8뇳4_6AMuk#Kzv0}U+%)%68ۺxv)./HT(: Ny d4 "A0J4kά;ރF޼Zؘirx}@Iu"" lx8pn-^-P6C eRTJO;Jǰ"&*Y:%j$-AIR'*$)[=kNAڢ( ^\QNPQS{I&mEW0>kV)XƢt3A\q/"tSC iSzNy: G]L丶{qmd Ky I7;tŚ' Y`bLxe.R/8AI D$aG`1mzW T&$.rV YʈF)$}4[ٿ-c eZ#hZ5 GNqcL9mY~F?!8ԕ3 M&ȉ4 ^H:U@;e|g#j⢩I֯vRA&N3gmW!fP{i?B4ZW.<3si᧤*ڊR GBN?`5e2WzDZ'ʅu%3! ?Tᕳwbرg?Jtiqӻ5-.;ɓ͹i": s3;-nKl2;iWL)ZJt*o;Ae)T|v8"RP..`|q *suTerIur6 %iVr@a[ȍ=nb 5* tsƤrv6RRRRRRRRRRRRR&.4]i : PKg€~.s6C8j3Jq^2qT[{aOɼq֤$gSRJO{p6 X}qIR) E\yurlʰ{B:j@@=5̹ܠ"`9dzZ.֒ ;FlynHm5+4HV7벒vcƑ䥖Nu($lws/]f_-Wem^st$ܜ ֱ-Ξde%='+)]f6WP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JPf1ٕ!i]PBpr6>vdCZAҡЌ#ƌRj4+ qH aߡh33 $t:"_Zu(l$8uRԞj;V;-0[mhRG@ J#7S,8[BI K 3A]KN"g[}|P)PqXR2|x6[Qkmzh'ӣ8]>oٷJ VB0U+~XKd(%esSMBa'|P{j ml6ĖD H65Uվ+ro4qfQ\J:))g;Ot,-V葝se B76˜7tmxe:UAkS1tTIs:K) VzXɬݎ/b]r4 1:zcbRrb\VU #[GA=]*n<̡JCj S#nR@mGf>K-YZ$ J=IR|k%Bvn<fa$^ #Ƃ8V.%#In:$!N+P.^RoRn3YbZ^i! ΠNw:1[zPGr 7].V$I#ʭO1 `>3Xٳs~wz:YZƗtItڧBbkhm˜JU sF}*jSᆱd2>a:In§TFLʀI\N$!KRRXԒ7 {h==m"[Rޅ,[i%hFEzTki7$K`ICog?V>ڮC͟ʬr~}\??BQ sj^,{:曎n.䤁:w;t[q;=@ҁr~+_¶ؗ>[2+B%JԂ BmE'ԫOPkKQd}lRU$rRrJSPzUO⿕DbdZp:PQo$HA+aY*gz.&#Lp^'D 6?&2w{vdٝSÍACޕ[>Z`[@ҕtI)sccoY"=o-oB\g,Rw_w>=2P9'!ԣBpYPXV \WA((((((((((((((<ܮ(X5)a?Wr~p>p!ûÏuԢyN%4'IWW@gY((뤋{DEvnT5Gr1? گyG5rȰqX[mkJIQ P 9J K,&Ԗ"-ĶRT#6u,22 dSjn]=SjmًdHo*'0OuuZPP-{ua>O룕WׯX9WK{] 支FDuS):+9°A`蔠o]UEUu]Lǫ[j.7gi !΍$dVeODn%7-9䔸7>oUnLH-s܆R8aC@qf;^:J }J ƣF)Y>+4 [hy*(@;Th˔.%%ISͿXH*YWK;G8JlKL%PNT5cQn+V{7LY-ZaIJE?TFȓbOg S2Z5ZsYAQD兪lQt)Nzw )JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JPJgZ\Mm"p-î!CR';RT5*D+1#D4HIQR$`wgUY5tty6.$EO1dYh.I˩iCJ`Qdg"@@# Ԑ?]c:GZ"+L` >VTZ=MiD򋍳uHkS]Ԍ!)J'3RnJa3Wg. Wм{+"VĜڃKk^#QִslƒOByf@:7jD-*p0@[1sBR5ov[P]E-fCͺ @Kk^F21׾3r&[ c(u*Z>ԃU0% [P̉ m[1JO^N>5-.Gjjsa2ޕ6hKE%*<Ё'Az$$NܓZ]7e6-fSHm շATKKbWxJ\iaѯ^6A#5s%جΌ I[3׈Tk7X-TO3T:`fjݶӉ-*Ƣh@ 9q$ka3GKd8jtRuɠ;p[m1N$5oEc7kjc7(b-t/Oj&qsܦvn[eA#B@-`7mql\BL엕6(hu) NyAse2qB()*uh ,\4$ nV'R3[ w \l׎ i#j^E+VAfvBw.;oIb{qI7{d'yR1c;:v'85Hjqu?r~T4viJԗ t)c`6QoҌc"2,^'vsAmv&e1y|խ88h~ m֦*oLS ˩5I6.џu۳!6=|ɭ͌>LLg>ٔ R0r1Po#]d9%,y*R>Eka}o">a.(# BuZPH+=[&&`)uTl5* ʓ:wYi7 3T"KnIмiQ!C`sm.ܠGGjKVHZē^\Zِ#;r˜ҟHQ^ӌ8 *z%KliP$!#+ Jvkn3Zm.Lc+t%mgOՏ3gmWafP{i?B4ZW/ 5rՕ+jQq֪:0*balպ Y7v,y-h^pa7VTYZ4JM^y J ,-*:[K^3$ơ+Kg.PO~<9 "bq));`XiQ^CbJ#8[+|$$18ԭH}ڵE3bggr#1}%JO +IU4inK+qJ/$`Ű6㼅ė)l<4h)mj%#g~ +H"jDGևΔIR4J 18:oc+[v' Т4IR)A)*=ɭ5><0$e(-'igأ +Y2*38%'hQ^;XM)n DVXq(p`( *F0wҵm%nIa!J< H*8P9+3q6e^PVb3u"mJȐo!ą'Z a޵7#Et81y/OIFrmAnv=5 CCn/Q󒂢jWp9oBqztRB֋d"˔2qLFKS!S)vCqh,d"B!H4+ @iN{Ybv3 \aߑYKJ @a nƃc'UUOՏ3gJ=4ZUOP{esNeX$RoZT a$.|ىj$ dЕTT2e;]3JoЯ+%eI] GccSR.)hWd}Xַ;HRHd*BYl<85(xֲUEQ7_U֠4 # 9JʎH޾p6VClC)9]!ŏ #Vh,5m$}jʯÖm@f]arޒUS dF3[[y^`bCT.)ZR'Q0wksJ +$X$4HXA:p.-N~{Q9ūkmbAy-2p$t՚]ڧ32 2.!-:'VF==2  &㼻冝1Vn[`ޯԠE\p=輎mnI1Шi9 BIӝ׎׭ٙnm)DKF6VH=4gW*P|Q!$daRh .%vF0R_F@Q!Zom[AIS4l=K'A@R+8=439l\Gu'8 Ns:w8~qsfIikSaIKYXDSdCw$:TT#RUI\3:> 3)""i,-*Jʔ}ZAByv.@ $i8$$m5un\j2J0H'Qi2zljK}- :BVHԠ3Ox8M)}o\HJ p 'iF.q(k[֑ꋇ`Al[.JyNKѥũ~rIըc`FjJ -~7$fb:ÍMHdmԇ-cw:\u2@u[yځJ }usvCޖ&_5 G@G24׺OOzűیժ(֟io9*⭔#UUOՏ3gJ=4ZUOP{es.ZJѲ+씁W,>t׾zȄ"a!7";: #8:w]twZm54xTjqվcq\8Y\dbֵ3(q[ǖ[ekRHU.Sb .%/ySzF\ܜ$myV$ RlTm|P0Iۜ2 }qmsJqhUa9Vy`w- ?:ce!:yI) #$פͦ~V ҮRU8yLqzQ,JihuҰsqGvzc[팥椼A֔! SvXС߸xe VԹ Δ=+SKFT =mXe3 .jHߛo]OO%ґ8 l Gq%ˆ"LJ'IHmДE@Nj-6-!mR[RM:H@߾TkiyŊ̉pjSY)a; $^&)#m R>܀|6[/-ri[n>X#Nя xMV4דm8ڐIi)8s!9m@cFmmA:~5Y2&.gNVRA8'dll[%XǀJCn,Nڶp7ԧ&"+uIJ?T<(6F\}#*P-@@ 'oL[UM3>#۞H4Σjq_ИVgŽ)ܝ洐s|:Hڕ }!E(8I heޔ6+ү;77R8AvTȒ !%Luzq՚'˶m$$:2tT2g l=S6[*ZBncR 8$d{ ; .0%ڜHV*N*NI=6hܷmIs-"#NR\yN)JlRz qN"lkd$Nv;1ZPw֓xYaŃ6Sϭ@2-j:r62m׳>ՓɌ- IP)8Q:Z!bb sd!sXR RH[^ ""@f&SO\aĨ)r6 SfLyǔqJ*KhX#Q'='V-7xmsbt咽A*-}`J#;@-+ B@VROZ 2G%p){RKme)Vud+|FF0Lg #TgK\BC0HX;_3eȴq,48r*8H,Vn;b.[^_Ź#7XRru)m1 )J 2~}\??XXj6p*?CI_o X=a|oЯ+%ss!Q(%.NZTq@}] -' G³kū]?J^kp^_;%)J0206Υg/;IJI,&t5ֻtW;ן1y?fi+qhJuUu71x[mq}]&T ,2>@RP•O4VEʭCW !)w[ Y S8;@b·yS t )ANJ3ũ7_nq`lG vƽZLZ&Xj ѯ N@89=74Uz7wrQ x#9/-% `|zbDd[ TK/BjXRbBFNǮ!bUs5PGJRUF2=OVN"1-}u BII“;GpR76Lr!) I[LI@ǝ26:s[z)J)J)J)J)J)J)J)J)J)J LRk%ch$@K2dS29:B(7%ob: +R/~{QBfH oݦo.º0Qv4%|INiM$wwvRa}-C ;dKm'ƢIOnl-݊ K iZ‘UmZUUWZ ֮OF]ԒSŁ'*mK?Dm1&rĸ (FR | DU8j yyEr-K!ߠ('R7Rv=s 1DQsjJ(FR | gLQ-sZSMkAZ H* 6(,0bwS-%"yoH !ե9Z0;SacL{H~j), m+KeA<F(-Tl)0ڟm-R ЅJUVr EX-!n:BVI+X)ZFijJP]}R@ѝ B@;X=7X1Z41d=_)s]BqUntB֝'5>mGmXQ遟w)rn^mRS2G8%H$(ե*: *7%EU9/H{ Y)N : p'@J~-ӭݑn2!(`iPԝ#~RdXjt4i*! <*'Z'/LX6q0tde,y@o8l UlW-2ܖV'zr ʔ^i.%j^:{*^,ŷ;sd27e%ŶA)#Y]$Y.@$/8ay%ܡ HS[cˎ܈]HR$ЃS^hb!QU12pݲT;ivθMl2 gƭ.8ѡѩ$g>t2D׺O³ש5u4E1hCAڹ*1ey$ΟtێIkn\w$).9 KBe*NGCpGOn+i&~}^? mumo>b)!¤-q  ;r|emsp;)M{+ bF$>FApN1o22}BGڅ\--APSjGs;D,a8珒GPEMYmM}^? e>t.4zְ9Ui0 [Rt2D׺O—-iV֑3JಂM* y`;W69Khv8cl醵s פֿSIS)M{)qܘJ6o[(J $/=_ &~}^? \LFWœJT<5SIRg4z7}ҾFW¡>t2D׺O—9ѻ4z7}Ҿ)M{)&~t9ѻyOk'L5hn|)tC}^? e>t.&sGw+Nhn|*SIS)M{)q3=_ sGw+PD׺O™Ok'KJS=_ &~}^? \LFWœJT<5SIRg4z7}ҾFW¡>t2D׺O—.MF"F\ej)cZ6H˵BnWڄ%*Ae>t2D׺O—-/nrdSpAa ԒJP9;`¯MC9mvC66Zrwwl5SIRKκ3TqASI䆴9 G`G ۉâRn* Ƣ+F|e>t2D׺O—Xd175ɒҚJ|~5n~YPFޠN03 d}^? e>t.6I J5m$L-e7oSDI(%g';Vl5SIRCMlm s;EZW1aǎM歰4OISIS)M{)qLo̧*9J:BԤwk^F{du&M.J< m+ iM'՜kSIS)M{)qmUriA}3rނZ0)!Xuڽe>t2D׺O—[)\L͸rPF)N75pIrKXZrC=jr㴻{1Ȋ~_g^ԅg>1QD׺O™Ok'Kkk) >t2D׺O—'!h)t+Vė@nOԆƕ A^D׺O™Ok'KDL ntHՁ{\=Џ$C Ges6c˃D<5 l'k.\[t O՜?'p򦶖lKEYK1NωM/d%UqV}ϋ=yq#h.(*w8=kحe[|<)MIqz5JS E\J}ԛ0i[l7 )#Q+ʲ zEuXm%b\F('RATmEXg.ޛyAFS7=zh޸ ikaj P[RD o7DH O?-YS$u: Uu2iu:5-8cs0ۭϫ%` 5A' 8nИݙ0Y:΀,u }ؠfȓmܶP\ V Ҭ5vK{ZJÀ)ѝ98 R R R R R R R R R R R R R R R R R R R R R R R R R Rnf_MsO3?/z?lzT&*RA8;~Z|OktkB-|??晪 y|O#oZ*~iG'SJf-|??晠 _%gb/-|??9ֆ(E.!L̡d)ig/iL8 \QH :s;#oZ) _%O3AJy|SL@??G'T4Z8ns?E'8#8ROA=M8BNN},=>>Zy=>>ZA^`9R6'xרJZZu$2qݑiki^ Y*Bu#Nֽd% r6鸠ik+RyE-pAx4|Y-4lNa鮃?0Ә|kk>439ưkwyrZq)Q i [JYqtF B$$ Fբ jm!c:UۭFf9{$5ۮsA]qqX>S\uJt-'VTJv m8l7׆mˇ{Xl)4ЦN'9zZG󄒢+'lU۶ڸyrtdu9ZBRB '|__.S$DzCL1439ưk Na鮃?0Ә|kk>43@,Pmu#]C e!3OYO?V\,ύ5ǚf&MgƱ晠ɬYyh2k>4|ki ύyY+mH'+i + KR? I՚TKkRR|ԍ"T^zUNGJE---n?#,IC#W?m$VF@@9` 5zf&MgƱ晠ɬYyh2k>4|ki ύ5ǚf&MgƱ晠{Q6׿;Uү6m=ǹ L#JӦJ!' OBn[9֫BPwɷ| %-LYZ$3[%K^JOϞoͦl|* Zvs,4%RGz`&{.O\[5+[-Ҕcd% }Ղ;K%'|R}mxUۿ qd 5LF  RPKS|s秒o>znW^ ک,S5Ju$ @O7'oz c6P%RgNsmփ'o>zy)>s窍[8ȸT!uqiƁiNi##=W;s6sWwz7f>Z@mK!!( с~I=<[9`NIkM!܂J2a8@c)錊nɋjM!J2a8Ɛ6zc"ϞJO#/z\vTvTMs7!*!㺳=E2&\f>EHmNj)IRΒPo88Jp|8Ϟ<#"@n%АXa\m%%'|R}mxSAI=<[9PAR}mxO%'|:|[9I=N%'|R}mxSAI=dfޖ\ՌR2J  'XZG >zJ>zv$zC\E(#$zC\ؑsؑsbG?ϞR?bG?Ϟ>zJ>zv$zC\E(#$zC\ؑsؑsbG?ϞR?bG?Ϟ>zJ>zv$zC\E(#$zC\ؑsؑsbG?ϞR?bG?Ϟ>zJ>zv$zC\E(#$zC\ؑs\gJTN4Tq\ʺaV)$vg{`.Ci=X^+ *kw>[5Úu1$9 AiS^ەSUNb,:DQ[eZT$A=zR%SF\tfHi ڒp57|G0quѭ5  ï =0Zx 9靷$KBIa..>Y$;L?K3Q$DLgK,-uI H*G S۞[̖S(^RHNOQJb}  ZeERPӮ:mhRT2Tr3<E) `2SDJA湕)2|:\M sx;|:. ZTy9B Ho(7F)LO#p,iQA}պS0TI'lqcO6SZ1EI640߆Ow DQ㲄C)oPW*ԠrNvs_'p7;(D8r}YSkNU@>39iXAق+^^՟}\;k]-0; *s\Ҕ>Jggm1K\Ԣ$N$gǯRjerSduW!0߆O^rSduW!0߆O^rSduW!0߆O^rSduW!0߆O^rSduW!0߆O^rSduW!0߆O^rSduW!0߆O^rSduW!0߆O^rSduW!0߆O^rSduW!0߆O^rSdurNV2_v޹)2|:Wޥ8qz崥hq1u:anyremote-6.7.1/doc-html/data/ganyremote-tray.png0000644000232200023220000010770312061426051022360 0ustar debalancedebalancePNG  IHDR)jIDATx^\i$Kr|#֭z٤v?""GPS$@@usPRd*;fx773!]ka9'f X fgf.,,C0 o-zbK xm0njg;WZy0 9'9"Lcc[k0kDŽc͚aNNc~s .a., hq36gq1Cvz=p]5ma: Ϝ kZSք/9 sc9q3s`Zx‡ s`o͜-jf~xY1a5ֺE_$605',Xfq_G0p Dsz=8ꚢD(Bsm=D |Df K0B @0A<'W{Sӿ@H X\0:u n.B&8Bp3#4"7R#'μW2\TlV5KaI{P%R lO?w<@F]9Z}cƻ@@79^N$CsYBB] &A։u1q h} I.ިYc)nby S#5k"gsj&u!JQGx}y XHIibniZ3A~c HݭyU +OØr HWJ(YCv eaX]ۯ?r2"SƑ Rj!9r4I^9$yH!g0ho-a 4OBb)4!hNhH +@ϟq]CV>4x!2E?KM/܏#n[5#Ҿ̔">3֘9<n;)ȶo@xDAt([2O E P "y.839EZ4MNe@ dSN(?( ,} ;eh-[кL>8zq_L% h &q_pULJ+Yv (DRUD#6oilڀۋscZGvRE4.1e ðz V 5Ze Aq@ut8lJivVD&"[%ljn8Bu`{~YZzS"RH=d0q:csnʎcɃIDRi_ qp@|)W!_ HZHfBn芻b0.8dyFJ)"you]+وc葫*S^q&-"$$6fZJ4Ęq ÎmhAf@ΐԀ ֤7#M0>t@;i%[3/WɯZ+νLXF]7x[/nR¡HpׁLe25nW*{W}[=&RSDRf 9"HQD PRoxQt9T8jn.$5gP9^Np+`_^3[ׁ(;q5wzOe:.NGKbR<MM|u'pc,ZLƈYNQ4Mrfrh2{6$)N\RHj2JWbX}-;:ƞ!4_kLՏTXEx͵oV\cD" ԣTS+ rtD͋J''R s@"XhlP+{=z,J~V&Z5V*pH.[憪?AFZ4#hy/w\_\_xu?s`K2Zn9 B&@ta,8)%[⌐-%>jZIŋhefԟDt +^Dl⊋\k?| xmllU&Q7Nub z8Ҫ -yCD'\o,N(F֤`'N:XDz:Ul#jlL'LzW_< >72 ݏx}zAk :1zɹ&E>38ΠtcRfD ̛F.?IySxaFO|@T\HXtWG0ɾ)uZn6CjcTVCs/}e͈lSٽ#r12a€޿?}Aqޟзow;ְI*^W/% 0(qlw N""ޗ]ɹIr5cʄS/]!.IRhZA(};ZGj ^I/qWVXҒQ]Խ_bĽt>&h6#Y&̊~hRI)o iZKCXgk&ky:@hmn!hBl!ّڊ%oطie̔LgۨhT@ݯj<Ù!8&ciPmg|3^>ۯH~;w=[Ƕ-f*FG'1w4)={^vzC:Q((4o|Y!}4 Lt1Ztn:l p'r^Yq;Ջ3s sG' `wLkQbK ›&HoKMx NgJPq ػߎy2p .q@yĉliGSi{ 7Y (w.Bߝx(}.Oe +~e'0U r&>;d!w&xaQ&X ͋w3Vr($~cH4EkV .guuxs!9VE5"ZJQp۟([퐝X#]At[JցH`!#$by*p6 fq| ^D92q0lpFD cz.zzO &9%ʹԈL;GF?d&߽ÿw}-y1aj ֱچe KHx~&ls0sohc߽cy8CZ,DyHM5`BuB2wtug|zI&'( &ZDZV hz$t{K"mŗ #ڀS) @pfcHטJ& w3TPAIXw0ֽT${*C|#ʓSq8 .YDikr{ŕB#H @o>;ܯvAڰoچXh F8:ndxط]Yĉ kRr5ek?3߄Vg+揱-S*1YqtDRu~g ϨA'RZEY.$ː{}55# &!8i |w13<a,3`-3^^V!J)froq nח8AwB?؁ mqOK(I!DƱpNN$o6ћG4瞞IF=.W5j0@"d*hȼٖÝ}nHf s^ D~^#!uRR@݄df(tj6 R6Bocn)xSUlrfn7a"eqITE!2iks6Ie:΅O>巡cPmbxO?~3ͣQzqCHEŠ}66 Qw%+Dn#+A)]z^T b2WI&s<1hҾ4Nʯǿ^PɌsDfSb,e(e)vLHI1"\H#%*}9hT#M\n&U")6hD+yUK3 ^&A5[RTz<w+xi#Mkx}X/Wa8#юlo:lVD$,3 p3m0rVWOn}󊫩*@ڻJcL"(e7|"wV;6 Md,v&[MjWf^"R%84UY9c2G x Р-8'c_4Y23'Kc*Lؗƫz" &Q Tr lPas|i\MZ 6)X͊22(UbGe"̦B!O8~-q8l+/8__1q5a":Fm;VژqboQ,zD7Zܺ!J #M4~ƽnׯ}+EDLMXJE% 8'Fo^Urf4wt%v:JSk+)fC7 SϡbV(K7)4;Y;sQTY7"{ ޭӹRC0U~d'mx~ǻ_/Ăm<(%vTu/7ݧQk˅+㖊NUPPLΠZAp(0G:($b>xzX)aY|"ME͗i1|kTTR q/&*1}1Dc*%YC*)X9Iu'fQs,"%Ӿl:*qM)s1qT.r2UҞ_Ve jDD [̀'g0o ;}c;FiHG/:aCcW n[%уn۞UUmCk#OUqc:A A1"EkR^ITÊ9*/ J$WxQ1UX3fxjYPUJw)ɲJp* %:喸*њ`Dtr"J ˪2 q,6IOxsʯt"ژ:mq9-~Ͽ#6+E 1MX2/&D6ODDMR8 |נ  ѸNq%PX sT*&AZ4KgZoSoϯ8_! T鴤3(u5<`MP& Xz̲Co{Pj,gX"Hđ+Y3Ge,D3-jݨeEc yݘ4F(cDR ZaCtX/71L!|:C*U)51P5 ]KzЂHoJMsJYumY9Ba jȍyP6O+Q D*T^8jL:yE)#{e}C קr}{#X:s M`Иù$UK(~`lg߾3c5l~~qxyVsGQ,I1idy9({޿C6t$s:,Kr)Kp)`N:J3if?S[HN*{MڋCˤN̷jX3T*zI4XbAcSB6Mw/q\R[Km9zD, tFɆH~apt@rI+5rbdrKښU=3^h㎡Cw#^_! +0- CJ[z)b_{]{oo=73=pG0&]ϋ\r\6m`J_U$¼-W-2NdcK iJP%4܁nC ,zdFΊ mGV+MU` @[:a5R"uɔʺ3eFc^ޓ8oYy/U:EIQĩbXsS}Un@Fp}?<s8th%y.NoULNV+dKgkT{^LZŧ((m߄*>&Z1Vm&3E2/(v,`Z)3iq(g[K(SmQe VŢy0 nal OhV99%|[MI=JU笘5U9oG1r[Q[33K$VW˔&6OC/[uW16ٴBNVW)jŪ!۳PE@J]AQ˭>,S^Lr20ZOgQO)58PPJ+-JRV[NR!iH+IrYeY}w1XI0QP`_Y2)n1Sof"x׫H*໡uwJn}b/s$x\F3Dcf"Ӯ_Vz*2͠B?W@gGt Kû:[K1Ƙ5!LsgX0])Qr+ҨS66XsQSE+ BmYNdQS*6T^ 輴ME;Rhds S\Rfd3E\1pKyҴy/x* ;am{%&.v&GK"Ko="PEmҜy@ƵqyJR:υٖ|8`ңdbe 5# 3ñaݤhA'iX: ķs;S0͸(_R!SvN**2]MۗǴ 1SI䧋T3!fVPc6$Uf$9d{NP%ݺ2n{kxl]67he!S = 2[ D8q'o ֝)o=`pq4Jp3I-ܞ>cNNy2e|&3XgvLDh=G$'dˌX)ފuXˁ!@1yaRe))[;ۜc(S2*'^ܔtHԒGU;F8VY1'yʳ~rwto|>4_m@ ^'򩳞4!qޓ"TE`*g@ẅA{ߢa?2(BLb’Yp { %ӐE^Եp Sd! tF#cF4n\G9*=VʜN@EH{/df)XXM{-NOtAŏ5)o@B[MoSP_H=a55"X?K*_CDkT4eO´at͡d)1SBz)s`k ,=ЋE6R뒁aG L~LcL$%fYV89r(dB͔jcK,$S2CK mKg d-6 MH@T Xf e WS}*u|΂y(Oq9)װ)T nmIVvQaR_m*b_\7W[,q+ 6ɵٕA<+Eejev@mXϱ9diF4;x TGqF7Ab8!Hf`|œ!_/~iZu')c/R9R]7ڙbm<)Xc% DBMEBd"xI'2̑V^G`tmVrѲT5S찊q4rI ۶]h;/Bc0X)K>8UgJMUmgZ:hib-k` o n[O׿;Z?k9q;L,.',1->8 ʇ4YeR2rB[Hfydy {&}ihUvA1WQ2C%Uzx^BX lS\*HJel 3nw) #JIy-lVNgN`QQut]EY*%c.*vZMVS0Ynk^w6PXLmKԆ71B5Mֳ{'ȭ+ʱ?+ݎ]_!T0V\/c43 rACb AZjiiLb.FgN ;S`K3`mDt,kMGT0L1?,ϺbfK,t;M}PhR$ 7N!CKGҲlE<@Bye̦enIHŵDGD!ɞiz)bqTtޤgA2XC U];jQkC PAj; @Xuxc`.ٞ8$L)$ o@8 !Tfno^cʫ[L!P),kUY*+fA7Zb%2&~cR1K =Csf#)R/&`B(&^Dȳctt}C?В0<BFSh)])6u@9e;`0#s g+ۖiap2ZXo4ִiW$*&QK=K!Ht8LibNjwYGEi D`|l6׀=~YT`~r[pj*'#p'0ܡPt/)< ًPrg"pyѪ.G>M\&LwKgk^y+^!XgZ\\9ۅ)w(a12%ߥz)c .Q6O% oC*6: /2CR\}>|E0a,؁8; q%zq:Ca*G=6~rN7ȶ \p&V E?~7H84^"~J"Cz9$ $i`9@,0I<m ~@Yqi RY ]I2*{J eKݫ$%Slq9v%)nZ,n\g˗?|v3DoH](2\w<[|ߖ~r~Sʛw~wbO}*L򗿜yΝBǖGslHqkJ_iu8"U*X ]_tPQZsR!! XbYv3&x Ip.);)d՗L_9I=,dwGG.O|1?Ao}Cr#{aɩ*Y_Ws\8g~F^Zc<1/\ө a喞l]4`TE9[w*We9rZ<3?A],X"Lt>>7\.Y*EzC}J!1ur+;v-d8&M0qH4KE j1w6octqhS[nOYv_ N_ ׈2Ho w;r!e1ܖ$+ͳN?餓MozX䨣^2y߾XwyP֣>q_p;xu~TW&;FMCe!qӋi0 .C#xɳ\%"R]dqr&$[%s:7O\ފHSufva߻یA"b៸i&Ne/&I$G<3rم)\N9ceNJ ?4:kMw?e_}Sr5ȯʯ`!yF|#M919c[:e]&] lN; CHn?2oJV#֔\KG;afsB!eei0-N<"[?& je׵ xiwVQIͰ]!t/ٚ^}ۮeP٭#! FP໕M!{r?(W|.z/ʖ),7\=kArȑ$_ֲm1+1F}dvcmѠ[$K 8NIT\`J q捁:/:(W)i>uR]]dX7Gn0I$gƢ6K3:DvP">y  RIc`zU]?ȷ r4|r@zAOw1+Ob/Yp>K_=1FN.Hu{nw;{~,!u1x.FUOʻ@# 枫Q ls*<逝+0iLcpuT>w{JIlqi/ĩ+C:IvS?`LE!TRdDW)qWT4:Alӂ 9R@n@l滲뮺D6?_|~U09#sNU;!E۷_zy[n/}Nw9蠃O??o~2E`Q?{sksb[z/ytCűI}-=4LZ%_IRQKDf ĶS\4hZֵ(ʙp:|4# 7G6'֩-cQ1bCӊH`|b\4_x* ){'rȁWRvs}vT%?Mџ'QiO{%/mdߔeD|{+ۿ- E"u{yUW̿[KܠӷKbd|Z h:^ZIT9dZ'+&'~^$P!📛/&3l!VZi))cШC5k@#Fs wr1mdQ=<(RD AMbp^ʵvU4['272N&.J&Z'KpmGjpF*۹Œ3o ^V(G?{P\S O <j pH/AW"#H.h.c"٬ՃWK2j Z xL-'#f*Uu_חTK="eDksfc+bd2d&W1#YTkMv]V6pOb{3ŔxC])]eKc[u<j~Aҋ]B #0%zq7Cs3:]y]Um.c6wN'!sz,L]- IӀ'&)(esafq2-ؠ6z&vDdeCV:̊fbT%ur4&h+1jg\nZYo&AGNkr )~A ptIM[7gͲTM`NfQ[dhtk QycnjHtA|}p)PMO65LOƏ ~:oW͌ﲐ"YZ:LC'mΖdnɊ8%nKn1IJOa(Ia[jLeBiv.K2u*тcD* ^CЊeY\ѡoK)ǨO~!-"RxUgc1li6-扺;Ց[hKayWfE+koєd0qi">5"ɚ9f |^?b'TBmc} X_~u¯+ J[E*t-Pԯd 6JD=Ca+~xVpg2[^bl7 5l4DI=D$.'n!k٦(PM]ۗfIdӦJO#5w(Z|pM%%7,\J~Ro~!ES z*0!4p=w$fc >&2Fixd 9|(8| aWbOri ZiM#fv: : $Z84 QLqB'NFe2W#K1eOVX)Ӧ!r}p^xZ| j[PfxhEwlWFYrV8E,ș9 (I#=XQ5@wgIENa'Kug!&/{ɞeCH-c"?8WtT(ں>_gDr͝+@dBC$ } JNx?WMP,K7!48kd[?nLz&,a0 pӊA> 9_%VjRw/⼱+F\ɴ҈0d~Ro'!,N4]liJKN)?m|) Lԁ/m6F. ;Qx^ebi2>Gr-=ʆ#FxAD7enX&s5j mRvЦL& Ӭla~N X(ވ*i"S&'ThI=U4?@@\ّ}.=CTNgqaAfK$R[)UOһN:i%+})??؟^~*yǫ9SeuvMnK2.϶`=m F'BPOK+Q (H&ZVA:6hĉ,XݕxL7ϭGqrnM `T L ̘^m tZ?p(qmpD ]kDL=cZ̦&ÀTJF[*\Anp̳^"{qeM6*i=s\P 71˶mJkvk+|DA>A69Z. ;wOƶLȯ_#]2p; ԝPAPT 'n IJ2rMOD>`я~$&oy[> rPQoxPm=c-A`< |(C-1?aФ B{CD 34u6²,n_(k7Ȯ1]a Ǻ\]&-3J֣FB!wPzP|gdNDzuJO4eX%GʘkMG,o{/ջG>|FHsag.x-ѡg&r JP=Kg??"ʅPWFo}[r 8d!1{@õTTM !ݬX:45ԩ2':v۶hv'],]KbIdEyxZ#g2sr585L'Qݏ-ӗ{/m'M¯22{.y0UA'/ӊ%}A00Kp"`<XS(݊f393/Hw嬳BȊQϖ˿Zk= I|%?&z*fKGZve_:z(К-sdiq) qKp5heO$ 1$\L O@I"Fp^ӄ0 I߄lEѓEB7?ȅe^!xρM~;"Tr_0 .Pˡ3jI=a"=a[]U,ŶmK.IE~dڿn݋ US2FW5`n7)\C8 ܍I3+k#}):NӆuҘmGH1gĀDtXGA-LMG`$UnG>t &P$@Nr!JD(cˈ~\N}'yɋN"itVIt}h_aCw];ϵV__VK$ƾ>ƮmEf?kgb=fV# '9񓈨h\M`6-.wiiN,j~:f'$B𞤒/c|s/u V[SE?6Mklg2,u" j<+x-dpS'uڡB$(ҸDRZtTG \tLRTUc"lQȿ$9ֽ̋#ZHAp];,l>[~o{y?{OdaQŀ[XfS ,+2'ysXz饗/0w/|-4uh]J8fN\ꛉ8 w2i̢c#Mᷛ\xVX{6`-pt!F7"l^wvV;~ydJ^wK#<:Y*jL܆E|u NHh`0ũwTuB@h!_aČI,Θŋd0RϙcߘۮG6dl .諾%5mksX߼.^oKgWAyԻR=XO)m]7jCMFHM>JN;^Pb>W8BA'=6 6Σ:t^:F_dм/6;HC@玱$QFץ%ߊd`b3\Y:.F(?PN~7%M~C/R NLTU`nmt:YA*i*-C˅lS"Y䋻 ҰWбV旾TYlب(c:ܕcmAl1rBM's[+TA\9Pq1&Fg^;3$R/zC3` bz+^p@\Wt[9m`͖[=HZM`Ɇ8דJ@xeewHEb5AEd6pKg.;/͠ / .`1yrtg,-:xAI ܠO%\p}V^i%51lRɗvN/6^,]l^WWq>x|.zUlÔ_mWoQVUnБ70[y9cg 1(~FG7ENSM8m70آfh[ګJ]W\! V\B>wrp?wat!6ِɸ%7`ZbAF!SQ{ڷ! ~EerD/PȨbE`9ZVHMYU)/O+UC[f%vgkWf]tRW].r&9.rE My{û%əvoQ6Rr΍!l ;*0: 0"j蟛qFNs42[7-jKŪ#zͤt kgq#? ,'q)5 s18 SwcbD&7G/##r_U+$X.Jd3+YvU,Zr%2 GY2 sRbRRpY/TPyz&ȯm&S\0%ֻ-t 8~oCňO,8,-/xǾƁ LvNi *=|TZt}%92,"a Fg%N).껖Ȝl)ќj \ E|H) 1؟Ҋ/L4e0EB 舡T^4[I)u4xܗbRX༠*y4ܒլfhWknN#V =ESgZ:'C0A۱l0FEMۺkXM~|.ꫡ?fcl=ǜyMa#;9bU^j`(δ(0׾6|\ %C b*%Mtfb^Ԕʶ'l}>׬bCWC #3fLXx4I|bsåRtn?.|3o6DVrYD9|ы^$&o| paےxtfau@OtWI Ez0 `0;x,jr~c3M3y"CYBVpPm98h5T'e\ fy睇p`ăo+:L:(ۚWy!BڇZt GZ7/Ju48yT[o{*R~,VfһaMFUP9M&q_l-= 8N=!pV@0p{vQ8;_ښXxF^~:\ge"bP;8ԕk$9QַJ:mEҨa&6j'P澧ݝ0TKޘ)*P+;a v;ӇSgY6L+"q̯ `L;)|&-:JŮƻ=ʜh[Jg(Zy~LȞh0 gOr衇B3S%0j]ߣPAVfCKKwAۚ eR UB4U1Ϥ R 6*ÕNLxZ+u{XG GW BlڏM"zqb L @vwخE?ϯ`ٻq #se[oU_>w\F şgGm67 f"wx^ ^ssG;䓁;s[yƣd~'ͣ%a6f9 LJʺD RG[ç,=mi`SW`u"833>i!9l%^Seb`ل9`T+wmvP܃``NG˯MT\WauÔT#V̅lTm,oq9@oi. cw# LZyFNUMZpW,Mq80wDngs#I]'[R1QRGޙEG{OBu bZ m S^YLǐz3E][؟EkPG''4GRl72Ɇ8V&Џ*nlaH#7Qx7_1ȓ#"*~c=r|V;a]08eS;4IRJ6c3 ZNbHDxodHRd\!P_Wm;Ä*8iHz-W7+Z-. \z]jZUWg / Vj MuBk$4rKu$LL6O%KK2?7(b$):D8cU!91I=F~Ha)،P28'$.`ϰ[Lًk[F1>y(`Ele{\ :ۉ"&!VrY6h:ʆe!v9rBwfH?s-Β.FE=65R ZV-W?\:9tj(. 0i7`>KK߮.JcAҎeqxd9 JT4 ƛ{ِ\tfБt.PjV鞐iH0|P've/-ʰz 37a!aCuwxxYq''(R#p8睗Gle,-fLR]:<=U2i)} ' (6M\8b }kF|=Ii`qA\SBZ$u$nJJ69r݈9U5=`dCwX B3N ` z+bBg.F۵C`D3e4\)dAM TT&s$/(r㭆(3O}SA :P֙~C;Ow>{#$:F$o'CѴpѽ:'m5lrg%Nb]ϑK}na,ई됳H7$G(NԊ-!(҉&#ρLwp}2f~iK.dHĥ077:yD4%7W5!\jōZev,-NmwOm֜[n@Mg~ qu' 1vdJ/w5?hT"󖊋mץA_0F 4ss0Fe\k=ǢP̗f%.,,3c`6ə9ho0gur)Pk>v o 3>p-ﳗ^V}襒/Wh7Qgd4U` i4rP\tuLC-ϮI8uF?"[nP'l1>C|I7)0EcuwQ AmƵx3JP? =lu%۶ٟEZnn( 0}q_T>9bܠc#;הF}}t`;0IYL^NI/J*ȴ9bNT. C ,+yJ_SŒ^6΅L7DE6&CuX{](z~;v׾5ΝtIE"fj˟gAyW02{dkz+Ɂ.߶dHD `*9ŕ28ޣLsa6d5"DP_ t 1U elhЭcE4GN#?\'\@Q-WH7t{ BYL"c@4$F!DJ)>1Ad0ƺ2JA V qJzk4ޝ3P-8k~|D0id.*KD]3Zq˝t-9]ufu 鑏|$v9yL [ Ceu+rf4 1f_Af6g/ܖCtEސikNx@'IeSk-YeWbᴓQ-)>ڡY%( BF!O$66:Ũ96\=JsQ9%ITݥI#"[rI?u ?LK?&(ֆ$c&rg4B8x:@aC25ll+Ȍղ 1\BNY ƴletnBX",}1Ju1\a44nPMWoȏӅ-2ؽݬZlBKE+pl .g8b>8HGC,zI,j]n T(nzfҦL@l1{WW/" o,Lթ,Xs}`׌ѷ\y6f/t4H3ָL}viYըpmJzs_l]q6;?n:_,)K%4Į%s?)uyw+QdҝW9{o޼/%ksM>T&;^bO*4UgDp&S}Y :qE}Fd%P{ (:!Ex4Y*@1`2N4*$8uL ʋ|mz}\@XTdIbSXv`lMC1b@_ v`f@DI*dT% *VFf+lu1­IH]GSxUޞF^O_0лux Hjy+LYE1<m+:ē[R$\G;~nkC51Do&" $'R9jf4[*bB)'s 1C4R%ʩk3 ْnPK=]Xmrͱ ޔU3W@ǔAJJ$#(z_1dJtdBuhĉS>T| ۀfNŨTb:y~$]-Mu7%Qbl,,0F u B95#rdgQQ@{,쳳SBqܠ.ƕB򪴾BXPs~ JN-cK^$O׀K W7cԫf =Z.~Nq+H'ZmJPrⷀ֪|.s+ @@CuZJ8C84 1]|t CRǯl5F#Ɲ, [*u,ˢW3ȄQTJ<΄-bqv IVtcj3L *ipd5Eh o;]J>j$k<Ιd RDŪx&1ޒR,5ƒ ilբh>/5b">o4% \&ZewY`wg9{9avfgFq9sfwo{q(1mTr%Z'=$nØ)ϪD]|Z1NEms*eQCN͔sP)쪓ї|w*Ρ~5Ҝ1pso =7?][->$좐._VjA $"e:HUP<^apѵkW(. ?46i&sծ᳕Vg]3g\m<{a(o-/kb)]jjj(#N~l\> ]؋شis9x8q51W_}CzbO _mx?vsQ)'1UvuFJԸlL{>!o( ߜ\`x89)wqGuw).>gͤ h> (ئI3fTas\NR![,{q]}iڵKMtB)?Q/T#w Ns0^rQ\b] LI;ٯ=Wҹf h`HX )*;[X?ůTg -N>doذHOEyw1|p ժ空l:-E]mQMxޔbpz3KuFP.|4䨠1%iw}N`OomKؠJ%G Pk㗲?}[|a1 +qAq )ވdTDhq9s8|F9BCj MRM1_P#4 "xQP8CƇxPU>@A*R\Ys1 5ID:AI( ;! D!*v6|6iDQ:#@C4NJ0Kl6>‡УwBA̚5KҋW\q"=k_~16ms= R\( E4h97Ӷm(Ȓ 1"E.U:q[iHĮ%ZMm7@A#a8'޶^Y*z{pB;BmŊbcƌ!A(0jGPAbORJ EiP Iao]RR~hhh@X zIKn20 U{bnOQ1&n--R{ؙu.!e;HLZIlPid2Taxԡ\ťܶXyW'<Frk{9 ٛ}974i.Q6PQ7Q{\ h*]K p)4[1V£GW_!8RE>,#nj0Ğƻyرc႙qq|ƌ4RrION#/ڑ"*S;+1 DA%/+۱@e(Js4tMΌB\ ?B]MqoCI#u4¡%0d/`Z<H_, ק"W;=lW.U¤yY|s7M5Xbr'Ǒ `;갴uP:* !^x[lɓݮOL0Ӿ̏3bvX0<HD8TPj.s^! EmIf l’s> eS A 'Q\<vjKQ߱c @+zRե 656#"TE5b;he%}6"{DЭ3 S9 䏯A֭;͗i0ʵ۵ܹsqmY mwy'; ȪxUy`ϳ\ nwvҥz+K¿=~eI{q04d8))vnOg/؋YgJ;:͗Eǃ1 7m8=zi; CمӶ|C?Kay9л`ќps<5@^b %`@ V6Rx1ͅFib&eQZp7{"= lU!?~t킶OÇ7ܒ%KtrH_F ViȫYnLj ]vWWYe.D7Ӓ򀹷_O|.{ w{c ^7p[}Q6\26C6V=Re낤'F%BA0zjLc1v}c}/kW}n"z9w}4r7L`>꾿k:OC 7]2FTsuzA{F%A9?KB-: 닑#FV'3T6gUA-.)s%q0E'@ztkމLƜ"رAnx s?[ɧ;܂8vf+ebP `8BoM~|:W1 Aۏqt[XrJYa(|1a֍O}CC}>XJl ̺0fZ=&cf.VN3iD$Wx~عB?>e򖿹\z;hmių< leRSS.R_c0'/ŋa;qI10=6}9lB:u*ì\-0 XI>K>1p5W#Pqn; ;#8|IP#*n2\98ƊW+9xUf=˿G`փ.u´ǵ_쪣cr\7py 9@/*=˗/簂nBߋ?1kۛ{0O߫h=/)^z5q`ϙzc!v. DCB S G9tjGT 4[ [@gыX8]%[BٖZᎅ *J/`韫$`a F09ih7 6#T #rVQ".uR\6q0# t;gwoME5_lOS[41Qf̥hh5J~ =FMvC`KfQHL.Ʃ5A/.ZM]g<˫ʪ]وBF,ۡWHytWʻcPU@ 7ls9+h QG*\ȓ! 7/n+KvJj+7~LXuw6,zi!>pq0ӡJ9W^UWk x8{ I pO*ApM@-Fk}ci{؎.unOVlU}?ڼ {Pӎ4gFa;0 C)gWq9K:GalJzV&Dz`:nTFQִ;8o|Jbl}f谨xu/,EUNkQHY֖fJ’Y%3V^[ͭx`ѝ.CU=q˖T&FxxZL"( F`Y弌#ۨB}ЯvB b'*0,IRҵ+t akvcNŴxqm*){BC{}pG+.ʽQ8V#1zY(!+Rt&P2OeXl<] VșH zt0RVNّI#t4ܚ4RH hbS@8\DQss-C Y KØ6)"hbri'N䔑RB('"s3NC~ȹ;;L6޼,-Hl d'#-*<^SV+.+ ˵x4L 0L!bm)C0ye]N:I @3I\v[ 1SA#`we:X=:S4lf#[6F]GAi,`|kib@=MbRa1F6GnSubO/yc'vjCpޓq9_/a̵^2mqʸ)J).[t#RQPhb<: fm|/1L9>[a1h,EcJ\*:ҨE9atxx\!L4_lJф AkM_~.0 6v[!M6bQ,)x({Gae3ZqG#mJI( ӈ- L/oeʑT&9_*@EK']&}XE&~X$}[IENDB`anyremote-6.7.1/doc-html/use.html0000644000232200023220000002554212664332726017312 0ustar debalancedebalance anyRemote · Control your computer with your phone