• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

[Kernel][ICS] Devil3_1.4.1 [07/09/12] - i9000 and i9000B

Search This thread


Senior Member
Nov 22, 2011
Ok, so im a big noob with this stuff. Can anyone tell me how to get devil kernel on my fascinate? Im running nightly cm10 builds on my phone right now. Do I need specific rom to run this? lol :p


Inactive Recognized Developer
Jul 31, 2011
Ok, so im a big noob with this stuff. Can anyone tell me how to get devil kernel on my fascinate? Im running nightly cm10 builds on my phone right now. Do I need specific rom to run this? lol :p

There is a specific ics devil thread in fascinate section.

My fav kernel when i run CM9. Right now im back to GB...wish there was a devil kernel for that.

Nice work man!

Sent from my GT-I9000 using xda app-developers app

Actually there is a kernel for cm7, but less customizable

Gesendet von meinem GT-I9000 mit Tapatalk 2


Jul 1, 2011
yes I agree and DerTeufel1980 please I need you and your kernel on my I9000 !!!! :crying:

Do something :cyclops:
Last edited:
  • Like
Reactions: nereis

Top Liked Posts

  • There are no posts matching your filters.
  • 183
    This kernel is based on teamhacksung's kernel, with updated Linux base to 3.0.42

    This kernel is working with every ICS based Rom

    Many Thanks to:
    TK Glitch
    sztupy, for his great work, to get usb host mode driver
    F4k for the idea to flash bigmem libs

    Working on this kernel is taking many hours almost every day. With a small donation, you show me, that my work is appreciated by you.

    If you like this kernel, please donate to me

    Download link and changelog can be found here:

    Kernels with VC in the name are coming with Voodoo Color

    newer changelog can be found here:

    changelog 02.08.2012:
    - bug fix to bln, to prevent kernel panic in some situations (thx to thalamus)
    - switched from deep_idle 2 to idle2 (also thx to thalamus)
    - updated kernel to linux 3.0.38
    - dockaudio sysfs for captivate and fascinate
    - automated symlinking from data to system: if one wants to free up some space at /system, without removing an app completely, just copy it from /system/app to /data/sys-parts/app (create the folder if not there), and reboot. during reboot, the app from system gets deleted, and the app from /data/sys-parts/app gets symlinked to system. this is working for almost every app, but i don't recommend doing this with apps, needed for android to work (framework, media provider, settings,...)

    IDLE2 can be enabled with the following command:
    echo 0 > /sys/module/cpuidle/parameters/idle2_disabled
    IDLE2 can be disabled with the following command:
    echo 1 > /sys/module/cpuidle/parameters/idle2_disabled
    Stats can be obtained from the standard cpuidle interface, which, for
    IDLE2 is located at:
    where * = 1, 2, 3

    changelog 25.07.2012:
    - updated recovery (no "sdcard format"-bug anymore, external sd card is named correctly)
    - vibrant: hopefully fixed froyo ril
    - jellybean: galaxy s settings working now

    changelog 22.07.2012:
    This kernel is for use with ICS only, if you are looking for a kernel, running on teamhacksung cm10 build, visit my jellybean kernel thread[/url]
    - updated kernal base to linux 3.0.36
    - updated "block" to linux 3.3
    - readded fiops io scheduler (kept cfq this time)
    - updated cwm recovery to (please create a new nandroid, because of possible incompatibilities between old/new recovery)
    - compiled with linaro toolchain (gcc 4.7.1) and O3 compiler flags
    - made uksm scan less often (save cpu time and power)
    - at first boot: only delte init.d scripts created by other kernels
    - increased usb write performance
    - lowered ram and display voltages a little bit
    - fixed some bugs related to devil settings (they should stick now after reboot, if set by one of the devil apps)
    - support for scripts in /system/etc/shutdown.d (thx to Efpophis)
    all scripts placed at /data/local/shutdown.d or /system/etc/shutdown.d get executed at shutdown/reboot
    you can use this, to play a shutdown sound for example.
    by default 00shutdown gets created, which plays a music file, when it is placed at one of these folders/places
    - disabled some debugging options
    - audio (and for fascinate: camera fixes) by Efpophis+
    - patch for improving batterie life by CML
    - nfts read/write driver built in (for use with usb host mode)
    - reverted refreshrate_mod and gpu_oc mod, as both weren't working :(

    changelog 18.06.2012:
    - some changes to load balancing
    - added ultra ksm (metioned by zach :) thx for this my friend)
    - readded fiops io scheduler (still experimental and could cause instablilities)
    - using snappy compression for zram now (2 times faster, but only 2% less compression)
    - added the possibility to change zram size (at /data/local/devil/zram_size, with valid values: 50, 75, 100 and 150 (all in mb))
    - fixed the applying of user_min/max freq after reboot
    - vibrant: fixed gps
    - fascinate: fixed nandroid in cwm recovery

    what is ksm? http://en.wikipedia.org/wiki/Kernel_SamePage_Merging_(KSM)
    uksm is more optimized and also working for single core systems. using this should give much better ram usage, but at the cost of more cpu usage

    ############# most probably not working (yet)##############
    i have added seperate gpu oc from jt1134's galaxy_tab (to switch between 200 and 250 mhz), but i did not get any improvements in antutu...further tests needed
    echo 1 > /sys/kernel/pvr_oc/pvr_oc (for 250 mhz)
    echo 0 > /sys/kernel/pvr_oc/pvr_oc (for 200 mhz), no reboot needed

    and also have changend default screen refreshrate from 60 to 56, with the possibility to change it:
    echo 1 > /sys/kernel/refreshrate/enable (60 hz)
    echo 0 > /sys/kernel/refreshrate/enable (56 hz)

    changelog 10.06.2012:
    cwm recovery:
    - fixed mounting of external sd card to pc

    - picked two commits from linux 3.0.32 (avoid a possible memory leak, small fix to ext4 driver)

    - fixed wrong mount points

    changelog 09.06.2012:
    - updated Zram and Zcache from linux 3.3
    - updated android binder driver from linux 3.3
    - fixed restoring of backups within TWRP recovery
    - added virtual buttons to cwm recovery (Attention: they still don't work!)
    - call vol hack from tk glitch (take a look at init.d folder and edit the script to make changes to call vol hack)
    - bigmem values get applied at first boot after power on (if there is a value at /data/local/devil/bigmem, 1 for 391 mb and 2 for 403 mb (the last one breaks 720p)
    - prevent phantom key presses (from tk glitch)

    changelog 24.05.2012:
    - Smooth_ui included to ondemand, conservative, smartass, lulzactive, lagfree and lazy governor (only one setting for activating/deactivating it in general)
    - 3 cpu governor presets (smooth, normal, powersave) for ondemand, conservative, smartass, lulzactive, lagfree (only one setting for switching the mode in general)
    - no need for activating/deactivating of selective live_oc anymore --> just change target low and target high
    - BLX back in
    - fixes to devil idle to be more stable while in call
    - 1,5 mb more ram (thanks to mialwe)
    - added aroma filemanager to cwm recovery
    - added fully working TWRP recovery optional to cwm recovery (to use TWRP, just create a file named "twrp" at /cache)
    - added option to select ram config in kernel --> no need for flashing an other kernel to get more ram (thanks to stratosk)
    - switched to new initramfs from stratosk and mialwe ( now there will be cmw zip and odin tar file of every kernel version)
    - added possibility to use Zram instead of Swap
    - no need for flashing/using special scripts to make swap/zram working anymore
    - added zcache
    - added frontpage
    - added cleancache
    - added fudgeswap (thanks to ezterry and faux123)

    changelog 01.05.2012:
    - all changes from cm9 stock kernel (including mount points option)
    - some fine tuning to deadline and sio
    - Devil Idle: limiting bus/ram/gpu speed to 100 mhz for 100-800 mhz cpu freq, while screen off (automatic mode) or always (permanet), both modes automatically reduce the int voltages of the affected freq by 50 mV
    - compiled with swap support
    - added stratosk's smooth_ui to lulzactive governor (activated by default)
    - rest oc_value to 100 while screen off, and back when screen turns on (combined with devil idle automatic, can't be turn on/off without devil idle)
    - added posibility for different voltages while screen off (also bundled with devil_idle, with default settings, stock arm voltages are applied, because of live_oc set to 100)
    - added the possibility to set freq limits while screen off (min and max freq)


    - even better fix to selective live_oc (last one (in test kernel) generated some overhead)
    - fixed sampling rate of ondemand and conservative (have ported mialwe's/stratosk's sleep multipliers)
    - new tunables for ondemand and conservativ

    sleep multiplier and tunables:
    mialwe and stratosk had the great idea, to change the sampling rate of conservative and ondemand governor while display of. for this, he introduced the sleepmultiplier (in his case factor 3). this means, if you set sampling rate to 20000, it changes to 60000 while screen off, and back, when screen on.

    for ondemand and conservative:
    i have made this multipliers tunable. proper values are between 1 and 5, because one could want a higher multiplier while screen off, if sampling rate is very low while screen on (higher sampling rate means, less checking for work load --> better batterie, worse performance). with this tunables you get better batterie, without making the performance worse while screen on.

    two other tunables: up_threshold_min_freq and responsiveness_freq
    the first one is a very low threshold while on low freq (by default 40), to make the governor scale up faster, until the responsiveness_freq is reached.

    the responsiveness_freq is set to 400000 (400 mhz) by default. while the freq is below this value, up_threshold is the same as up_threshold_min_freq, and freq jumps to responsiveness_freq, with skipping the freq between the actual one and the responsiveness_freq. (conservative governor does not jump up to this step)

    responsiveness_freq can be set to values between 100000 and 1400000
    up_threshold_min_freq can be set to the same values as the normal up_threshold.

    not tunable: while screen off, up_threshold is set to 95, no matter your other settings, to save more batterie.
    up_threshold_min_freq is disbaled by default for conservative governor

    for lulzactive:
    for this governor, i did similar things, but they are not tunable till now.

    when screen off:
    - inc_cpu_load is set to 90, and back to the original value, when screen turns on
    - up_sample_time is set to 50000, and back to the original value, when screen turns on
    - down_sample_time is set to 40000, and back to the original value, when screen turns on

    other changes:
    - fix to touchwake from ezekeel, and another fix from stratosk
    - upstream fix to compass
    - building for i9000B now, too (big thanks to F4k for the hints by pn :) )
    - removed some typos from recovery
    - removed some annoying "no's" and "yes" from recovery in misc menu
    - fixed wifi mode switch (pm_fast is the one with better signal)

    - new b versions (only stock ram) changend to 377 mb, VC version needs the 720p fix from my ftp server. cmc version already patched

    - updated wifi driver
    - added the possibility to switch between wifi PM_Fast and PM_Max mode (Pm_Fast = better signal, PM_Max = better batterie, default is PM_Max)
    - user interface to disable fsync (this gives more performace, at the risk of data loss on a crash, taken from ezekeel, so it should be ok ;) ), default is off, to be safe :)

    - fixed voodoo color kernels (these have the VC in their names)

    - added vibrator intensity control (by mialwe), presets can be changend in recovery
    - stock ram version now available (348 mb ram), XL (390 mb), XL_bm (402 mb)
    - removed 1080 mhz freq for now
    - small correction to touchwake
    - small correction to selective live_oc (now the low freq really are not live_oc'ed)

    - fixed bug in selective live_oc, which caused the target high not taking affect to the highest freq, if highest freq equals target high
    - fixed another bug in selective live_oc, which could lead to gpu crashes due to overclocking the ram, but not the cpu freq (for low steps)
    - added a switch to change between "normal" and selective live_oc
    by changing the live_oc mode while using it, live_oc value is set back to 100, to prevent strange things

    - added possibility to set max. freq for boot (in recovery). This freq is set until init.d is executeted (it is automatically set to 1000 at this point, to make sure there are no conflicts with other cpu settings from users)

    #Already in the last version, but i forgot about it:
    - deep idle fixes from stratosk (many thanks)
    - added possibility to underclock by using live_oc (limit is 90 now, which means lowering all freq and bus speed by 10%, to save more batterie when really needed)

    For now there are three different RAM versions:
    - stock mem kernel has 379 mb ram, everything working
    - "slim ics" (XL) kernel comes with 390 mb, this is breaking playback of some high resolution videos
    - XL_BM is coming with 402 mb ram, but breaking 720p
    (while flashing the kernel, the modded rom files are also flashed, so you don't need to flash a new rom to get 379 or 390 mb)

    -added new frequency: 1080 mhz (1100 does not like live_oc)
    - fixed SmartassV2 for live_oc (after changing live_oc value, you have to change the smartass values, too, but then they automatically apply to the live_oc value (although you can only select 800 mhz in nstools (for example))
    - touch recovery with custom devil menu (for some reason it takes a few seconds to load the first time, missing virtual keys is a warning, because there are no virtual keys yet)
    -fast charge (thx to chad0989 for this), disabled by default.

    you also can use the widget from chad (to place on homescreen) to toggle the fast_charge mode

    while fast charge is activated you cannot connect as usb device

    - added datafix script to init.d (this script is deactivated by deafult. to make it work, you have to creat a file named datafix and placed in /data/local/)
    - reworking and cleaning many parts to get more ram, speed, and stability :)

    - updated sio i/o scheduler to latest version
    - small updates to ondemand and conservative governor from linux 3.2
    - bettter performance for CFS kernel due to tuning and patches
    - tuning to deadline scheduler
    - better i/o performance
    - changed bootlogo (probably not the last time ;) )

    - finally working bln V9 (no need for LED2 anymore)
    - fixed lockscreen freezes
    - reverted memory tweaks, which could be the reason for lagging after using a day
    - again wlan fixes from tk-glitch
    - tweaked conservative and ondemand governor (conservative still is not too aggressive)
    - added dm-cache again (who has removed this from my github? :p)
    - improve usb signal quality
    - xcaliburinhand's dock audio support (untested, do not have a dock)
    - less debugging
    - fixed kernel version not displayed under "about phone"

    - Added newest Fiops scheduler (tuned for more performance)
    - When Gpu is active, min CPU freq is set to second lowest step
    - fixes to live_oc and custom voltage
    - default mount parameter NOATIME and NODIRATIME (faster)
    - updated Wifi drivers (thanks to tk-glitch)
    - tuned intellidemand for better performance
    - removed some stuff (zram, swap, tweaks to cpufreq untill I know what was causing the instabilities of last build)

    - added Touchwake
    - added BLX
    - upgraded BLN from V8 to V9 (working for missed calls, blinking or static light, configurabel by using NSTools or BLN Pro App)
    - added Intellidemand governor
    - added mdnie settings to voodoo color version
    - readded deep idle v2 again (I think it is the best/only working one, although
    - version with CFS (instead of BFS) now also available (maybe better multitasking and batterie life, but slower)
    - removed BFQ I/O Scheduler
    - tons of smaller fixes and improvements

    -revert: Voodoo Sound now to be set with DSP Manager

    - Linux kernel 3.1.10
    - Deep Idle from Eugene373 (always enabled, no stats)
    - added BFQ v 3.1 I/O Scheduler
    - Voodoo Sound now to be set with DSP Manager
    - Zram (can be disabled by removing Zram file from init.d)
    - Zcache and Cleancache (not working yet?)
    - optimized rwsem algorithm
    - USB Host V5

    - init.d support (the folder is not created by the kernel. You have to do it for yourself)
    - Deep Idle V2 back in
    - new Cpu governors: MinMax, Lagfree, Lulzactiv
    - LED V2 (you can set blinking by using nstools, also working for missed calls in most cases (sometimes it is not working for missed calls, don't know why at the moment))
    - Backlight Dimmer (only LED version): used to turn led backlight of, while screen is on, after defined period of time. Deactivating it, makes your backlight stay on all the time
    - I/O-less dirty throttling completely backported from kernel 3.2
    - Ext4 with 3.2 patches
    - Proportional Rate Reduction for TCP - by Google
    - USB Host V 4

    - Usb Host drivers integrated
    - Cm9 Color adjustment
    - Removed Deep Idle because of Bluetooth problems (hopefully it will come back, still testing)

    - Updated Kernel basis to Linux 3.1.9

    - fixed bug in cpu spy, caused by live_oc
    - still using voodoo color for now, maybe two additional kernel versions tomorrow

    further changelog updates only on the website
    i am uploading new kernels right now. they can be found at:

    because of my low upload speed, it could take about 30 minutes till all kernels are up.

    attention: there are all kernels for all devices. please take care of this.

    changend/updated in this version:

    - KSM completely updated to Linux 3.3-rc2
    - vmalloc completely updated to Linux 3.3-rc2
    - vmscan completely updated to Linux 3.3-rc2
    - memory compaction completely updated to Linux 3.3-rc2
    - page writeback completely updated to Linux 3.3-rc2
    - filemap completely updated to Linux 3.3-rc3
    - swap/swapfile completely updated to Linux 3.3-rc3
    - shmem completely updated to Linux 3.3-rc3
    - memblock completely updated to Linux 3.3-rc3
    - oomkill completely updated to Linux 3.3-rc3
    - lockless list support from Linux 3.3
    - NTFS driver built-in (read/write support)
    - Filesystem writeback completely updated to Linux 3.3-rc2
    - Asynchronous I/O completely updated to Linux 3.3-rc3
    - select NOHz optimizations from Linux 3.3+
    - kernel init completely updated to Linux 3.3-rc3
    - fixed some (hopefully last bugs in boot-patch (many thanks to BradleyR2010)
    - screen-off min/max freq now really should be stick after reboot
    - touchwake delay can be set/activated with devil config files at data/local/devil (delay has to be entered in ms (15 sec = 15000 ms))

    many thanks to faux123 (although he'll most probably never read this), for his work to update all the kernel parts
    well, i wanted to make this the "stable" release, but now i am to tired to compile all the kernels....

    - fixed the recovery "boot-loop" from last test kernel
    -using "snappy compression" from google for zram now (2 times faster compression, and only 2% less compression rate)

    - readded fiops scheduler, without the need to remove cfq scheduler:)
    - added a fix to make cleancache faster (also avoid situations in which cleancache makes the system slow down)
    Known issues:
    - virtual buttons in cwm recovery not working

    i9000(b) specific:

    How to:
    you can change ram setting by doing the following ( to make these settings even stick after power off, you also have to echo the same value to to /data/local/devil/bigmem):
    echo 1 > /sys/kernel/bigmem/enable (this gives you xl mem of 391 mb)
    echo 2 > /sys/kernel/bigmem/enable (this gives you bm mem of 403 mb (this is breaking 720p))
    echo 0 > /sys/kernel/bigmem/enable (this gives you cm9 default mem of 378 mb)
    you have to reboot to make changes work

    With setting this, your desired swap mode gets automatically applied at boot time. For swap, you have to create a swap partition at your external sd card before
    echo 1 > /data/local/swap_use (for using swap partition on external sd card, you have to create this partition before)
    echo 2 > /data/local/swap_use (for using Zram, no other modifications required)
    you have to reboot to make changes active. You can't use swap and Zram at the same time

    These are the settings for devil idle:
    activate automatic:
    echo 1 > /sys/devices/virtual/misc/devil_idle/bus_limit
    permanent on:
    echo 2 > /sys/devices/virtual/misc/devil_idle/bus_limit
    echo 0 > /sys/devices/virtual/misc/devil_idle/bus_limit_automatic

    to set different voltages while screen off (this only is working, if devil idle automatic mode is activated)
    this is an example, how to apply screen_off arm voltages:
    echo 1450 1400 1350 1275 1075 975 875 800 > /sys/class/misc/customvoltage/arm_volt_screenoff

    this way, it is possible to undervolt while screen off, but overvolt and overclock while screen on

    for now, the int voltages can not be changend

    set freq limits while screen off (min and max freq)
    enable the limits:
    echo 1 > /sys/devices/virtual/misc/devil_idle/user_min_max_enable
    echo 0 > /sys/devices/virtual/misc/devil_idle/user_min_max_enable

    set values to be applied if activated:
    echo 100000 > /sys/devices/virtual/misc/devil_idle/user_min
    echo 800000 > /sys/devices/virtual/misc/devil_idle/user_max

    both are independent from devil_idle, and get applied when screen turns off
    by default 100 and 1000 mhz are set.
    values which can be put here are all "stock" freq (without live_oc level) multiplied with 1000. live_oc values get applied automatically.

    to set responsiveness_freq, up_threshold_min_freq or sleep_multiplier for ondemand and/or conservative governor, you have to do it like this:

    echo VALUE > /sys/devices/system/cpu/cpufreq/ondemand/VARIABLE_NAME
    echo VALUE > /sys/devices/system/cpu/cpufreq/conservative/VARIABLE_NAME

    echo 400000 > /sys/devices/system/cpu/cpufreq/ondemand/responsiveness_freq
    echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_min_freq
    echo 5 > /sys/devices/system/cpu/cpufreq/ondemand/sleep_multiplier

    up_threshold_min_freq is disbaled by default for conservative governor
    (to disable it for ondemand you have to set up_threshold_min_freq to 100.

    switch between wifi PM_Fast and PM_Max mode (Pm_Fast = better signal, PM_Max = better batterie, default is PM_Max)
    echo 1 > sys/module/bcmdhd/parameters/uiFastWifi (pm_fast)
    echo 0 > sys/module/bcmdhd/parameters/uiFastWifi (pm_max)

    user interface to disable fsync (this gives more performace, at the risk of data loss on a crash, taken from ezekeel), default is on, to be safe :)
    echo 1 > /sys/devices/virtual/misc/fsynccontrol/fsync_enabled (fsync enabled)
    echo 0 > /sys/devices/virtual/misc/fsynccontrol/fsync_enabled (fsync disabled)

    to set the values for vibrator intensity:
    echo value > /sys/class/timed_output/vibrator/duty (where value is between 20000 and 43640)
    if you want the changes to be applied at boot, you have to use one of the presets from recovery, use an init.d script, or:
    echo value > /etc/devil/vibrator (where value is between 20000 and 43640)

    activate fast charge: echo 1 > /sys/kernel/fast_charge/force_fast_charge
    deactivate fast charge
    echo 0 > /sys/kernel/fast_charge/force_fast_charge

    you also can use the widget from chad (to place on homescreen) to toggle the fast_charge mode
    while fast charge is activated you cannot connect as usb device

    Questions and Answers:

    Q: What the hell are all these governors?
    A: here you should find the answer: http://forum.xda-developers.com/showthread.php?p=19846297

    Q: What's a good setup for live_oc??
    A: No one knows. Every phone is different. It seems like the folling setup is running well for some (many?) users. If you get reboots with it, you have to find the setup for yourself.

    if you are satisfied with this configuration, please hit the thanks button of Crack: http://forum.xda-developers.com/showpost.php?p=22194160&postcount=1246
    OK, these are mine. Rock stable ;)

    LiveOC 117% -> 1200 MHz -> 1404 MHz


    low freqs could possibly be tweaked harder but stability was my fist goal ;)
    Q: How can I set up swap?
    A: Take a look at this thread: http://forum.xda-developers.com/showthread.php?t=1610835, and especially at this post:

    Q: What is Touchwake? Can you explain it?
    A: With Touchwake, the touchscreen still recognices your fingers, after turning off (for a predefined time (NSTools)). For a detailed explenation, take a look at Ezekeel's thread: http://forum.xda-developers.com/showthread.php?t=1239240

    Q: How can I make Voodo Color settings been saved after reboot?
    A: You have to use Voodoo Pro App, because of changes between Gingerbread and ICS, and only the Pro app is updated till now.

    Q: Which is the best IO Scheduler?
    A: I think SIO and V(R) are the fastest.

    Q: How can I enable DeepIdle/Live_Oc?
    A: You have to use NSTools. You find it on market. It's free.

    Deep Idle Questions:
    Q: How can I activate the deep idle stats?
    echo 1 > /sys/class/misc/deepidle/stats_enabled

    Q: What's the meaning of TOP=Off and TOP=On when I look at the Deep Idle status?
    A: When TOP=Off is used, the best powersaving state is used. TOP=ON will be shown, when bluetooth or gps are running.

    Q: In Idle status I only see TOP=On. What's wrong here? I don't use Bluetooth or Gps.
    A: You have to flash the modded framework-res.apk, because ICS does not fully deactivate bluetooth by default. Even if you never use it.

    Q: Idle Stats only are showing Idle, but no Deep Idle. Why?
    A: An App is preventing the use of Deep Idle. At first, you should try closing the cam, running in the background. Also rebooting should solve this problem.

    Q: What is fudgeswap?
    Setting this to a very large positive number will indicate swap ought
    to be fully used as free (and will slow the system down)

    smaller numbers will allow you to put some pressure on SWAP without
    slowing the system down as much.

    small negitive numbers will allow the system to be faster at the same
    minfree level.

    default is 512 to give a very little bit of pressure to use some swap
    but this can be modified at runtime via: