[
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: reiryuki # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]\npatreon: # Replace with a single Patreon username\nopen_collective: # Replace with a single Open Collective username\nko_fi: reiryuki # Replace with a single Ko-fi username\ntidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel\ncommunity_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry\nliberapay: reiryuki # Replace with a single Liberapay username\nissuehunt: # Replace with a single IssueHunt username\notechie: # Replace with a single Otechie username\nlfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry\ncustom: https://www.paypal.me/reiryuki # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 Rei Ryuki\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "META-INF/com/google/android/update-binary",
    "content": "#!/sbin/sh\n\n#################\n# Initialization\n#################\n\numask 022\n\n# echo before loading util_functions\nui_print() { echo \"$1\"; }\n\nrequire_new_magisk() {\n  ui_print \"*******************************\"\n  ui_print \" Please install Magisk v20.4+! \"\n  ui_print \"*******************************\"\n  exit 1\n}\n\n#########################\n# Load util_functions.sh\n#########################\n\nOUTFD=$2\nZIPFILE=$3\n\nmount /data 2>/dev/null\n\n[ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk\n. /data/adb/magisk/util_functions.sh\n[ $MAGISK_VER_CODE -lt 20400 ] && require_new_magisk\n\ninstall_module\nexit 0\n"
  },
  {
    "path": "META-INF/com/google/android/updater-script",
    "content": "#MAGISK\n"
  },
  {
    "path": "README.md",
    "content": "# Sound Enhancement & Dolby Atmos Sony Xperia 10 Magisk Module\n\n## DISCLAIMER\n- Dolby & Sony apps and blobs are owned by Dolby™ and Sony™.\n- The MIT license specified here is for the Magisk Module only, not for Dolby nor Sony apps and blobs.\n\n## Descriptions\n- Equalizers sound effect ported from Sony Xperia 10 (I4113) and integrated as a Magisk Module for all supported and rooted devices with Magisk\n- Global type sound effect\n- Dolby Atmos changes/spoofs ro.product.manufacturer to Sony which may break some system apps and features functionality\n- Dolby Atmos conflicted with `vendor.dolby.hardware.dms@2.0-service`\n- Sound Enhancement doesn't support ACDB Magisk Module because using effect proxy\n\n## Sources\n- https://dumps.tadiphone.dev/dumps/sony/i4113 kirin_dsds-user-10-53.1.A.2.2-053001A00020000200894138764-release-keys\n- libhscomp_jni.so & libhscomp.so: https://dumps.tadiphone.dev/dumps/sony/akari akari-user-9-TAMA2-2.0.1-191021-1837-1-dev-keys\n- system_dolby: https://dumps.tadiphone.dev/dumps/sony/xq-at51 qssi-user-10-58.0.A.3.31-058000A003003102854466984-release-keys\n- libhidlbase.so, libhidltransport.so, & libhwbinder.so: CrDroid ROM Android 13\n- libutils.so: LineageOS 23 Android 16 BP2A.250605.031.A2 1758630651\n- libmagiskpolicy.so: Kitsune Mask R6687BB53\n\n## Screenshots\n- https://t.me/androidryukimodsdiscussions/144433\n\n## Requirements\n- HIDL audio service\n- Sound Enhancement:\n  - armeabi-v7a or arm64-v8a architecture\n  - 32 bit audio service (this also can be found in 64 bit ROM with 32 bit support, not only 32 bit ROM)\n  - Android 10 (SDK 29) and up\n  - Magisk or Kitsune Mask or KernelSU or Apatch installed\n- Dolby Atmos:\n  - arm64-v8a architecture\n  - Android 10 (SDK 29) and up\n  - Magisk or Kitsune Mask or KernelSU or Apatch installed (Recommended to use Magisk Delta/Kitsune Mask for systemless early init mount manifest.xml if your ROM is Read-Only https://t.me/ryukinotes/49)\n\n## WARNING!!!\n- Possibility of bootloop or even softbrick or a service failure on Read-Only ROM with the Dolby Atmos if you don't use Magisk Delta/Kitsune Mask.\n\n## Installation Guide & Download Link\n- Recommended to use Magisk Delta/Kitsune Mask if Dolby Atmos is activated https://t.me/ryukinotes/49\n- Remove any other else Dolby MAGISK MODULE with different name (no need to remove if it's the same name) if Dolby Atmos is activated\n- Reboot\n- If you are using KernelSU, you need to disable Unmount Modules by Default in KernelSU app settings and install https://github.com/KernelSU-Modules-Repo/meta-overlayfs first\n- If you have Dolby in-built in your ROM, then you need to activate data.cleanup=1 at the first time install (READ Optionals bellow!)\n- Install this module https://www.pling.com/p/1531791/ via Magisk app or Kitsune Mask app or KernelSU app or Apatch app or Recovery if Magisk or Kitsune Mask installed\n- Install AML Magisk Module https://t.me/ryukinotes/34 only if using any other else audio mod module\n- Reboot\n- Disable the \"No active profiles\" notification and ignore it it's nothing\n- If you are using KernelSU, you need to allow superuser list manually all package name listed in package-dolby.txt (and your home launcher app also) (enable show system apps) and reboot afterwards\n- If you are using SUList, you need to allow list manually your home launcher app (enable show system apps) and reboot afterwards\n- If you have sensors issue (fingerprint, proximity, gyroscope, etc), then READ Optionals bellow!\n- If Sound Enhancement effect doesn't work, then type:\n\n  `su`\n  \n  `sefx`\n  \n  at Terminal/Termux app while playing music\n- If sefx command triggers integrity failure in your ROM then you can use Xperia Music instead: https://github.com/reiryuki/Xperia-Music-Magisk-Module and choose Sound effects in the app\n\n## Optionals\n- https://t.me/ryukinotes/56\n- Global: https://t.me/ryukinotes/35\n- Stream: https://t.me/ryukinotes/52\n\n## Troubleshootings\n- https://t.me/ryukinotes/56\n- Global: https://t.me/ryukinotes/34\n\n## Support & Bug Report\n- https://t.me/ryukinotes/54\n- If you don't do above, issues will be closed immediately\n\n## Credits and Contributors\n- @HuskyDG\n- https://t.me/viperatmos\n- https://t.me/androidryukimodsdiscussions\n- @HELLBOY017\n- You can contribute ideas about this Magisk Module here: https://t.me/androidappsportdevelopment\n\n## Sponsors\n- https://t.me/ryukinotes/25\n\n\n"
  },
  {
    "path": "acdb.conf",
    "content": "\n# Audio Configuration Database\n# gh\n\n\n# acdb.conf is a module configuration file sourced by the ACDB module to add or remove the configuration of libraries and effects included in this module - determined by the status of a Magisk module being installed, disabled, or enabled.\n\n\n# Simply insert the appropriate value for the required parameters below for consistent results:\n\n\n# Required:\n\nlibraryid=dap_mod\nlibraryname=libswdap.so\n\neffectid=dap_mod\neffectuuid=9d4921da-8225-4f29-aefa-39537a04bcaa\n\n\n# Optional:\n\nmusicstream=\n\n"
  },
  {
    "path": "action.sh",
    "content": "MODPATH=${0%/*}\n\n# info\necho \"- Apps caches from this module will be re-cleaned\"\necho \"  at the next boot.\"\necho \" \"\n\n# rename\nFILE=$MODPATH/cleaner.sh\nif [ -f $FILE.txt ]; then\n  mv -f $FILE.txt $FILE\nfi\n\n\n"
  },
  {
    "path": "aml.sh",
    "content": "[ ! \"$MODPATH\" ] && MODPATH=${0%/*}\n\n# destination\n[ ! \"$libdir\" ] && libdir=/vendor\nMODAECS=`find $MODPATH -type f -name *audio*effects*.conf`\nMODAEXS=`find $MODPATH -type f -name *audio*effects*.xml`\nMODAPS=`find $MODPATH -type f -name *policy*.conf -o -name *policy*.xml`\nMODAPXS=`find $MODPATH -type f -name *policy*.xml`\n\n# function\narchdir() {\nif [ -f $libdir/lib/soundfx/$LIB ]\\\n|| [ -f $MODPATH/system$libdir/lib/soundfx/$LIB ]\\\n|| [ -f $MODPATH$libdir/lib/soundfx/$LIB ]; then\n  ARCHDIR=/lib\nelif [ -f $libdir/lib64/soundfx/$LIB ]\\\n|| [ -f $MODPATH/system$libdir/lib64/soundfx/$LIB ]\\\n|| [ -f $MODPATH$libdir/lib64/soundfx/$LIB ]; then\n  ARCHDIR=/lib64\nelse\n  unset ARCHDIR\nfi\n}\nremove_conf() {\nfor RMV in $RMVS; do\n  sed -i \"s|$RMV|removed|g\" $MODAEC\ndone\nsed -i 's|path /vendor/lib/soundfx/removed||g' $MODAEC\nsed -i 's|path /system/lib/soundfx/removed||g' $MODAEC\nsed -i 's|path /vendor/lib/removed||g' $MODAEC\nsed -i 's|path /system/lib/removed||g' $MODAEC\nsed -i 's|path /vendor/lib64/soundfx/removed||g' $MODAEC\nsed -i 's|path /system/lib64/soundfx/removed||g' $MODAEC\nsed -i 's|path /vendor/lib64/removed||g' $MODAEC\nsed -i 's|path /system/lib64/removed||g' $MODAEC\nsed -i 's|library removed||g' $MODAEC\nsed -i 's|uuid removed||g' $MODAEC\nsed -i \"/^        removed {/ {;N s/        removed {\\n        }//}\" $MODAEC\nsed -i 's|removed { }||g' $MODAEC\nsed -i 's|removed {}||g' $MODAEC\nsed -i '/^[[:space:]]*$/d' $MODAEC\n}\nremove_xml() {\nfor RMV in $RMVS; do\n  sed -i \"s|\\\"$RMV\\\"|\\\"removed\\\"|g\" $MODAEX\ndone\nsed -i 's|<library name=\"removed\" path=\"removed\"/>||g' $MODAEX\nsed -i 's|<library name=\"proxy\" path=\"removed\"/>||g' $MODAEX\nsed -i 's|<effect name=\"removed\" library=\"removed\" uuid=\"removed\"/>||g' $MODAEX\nsed -i 's|<effect name=\"removed\" uuid=\"removed\" library=\"removed\"/>||g' $MODAEX\nsed -i 's|<libsw library=\"removed\" uuid=\"removed\"/>||g' $MODAEX\nsed -i 's|<libhw library=\"removed\" uuid=\"removed\"/>||g' $MODAEX\nsed -i 's|<apply effect=\"removed\"/>||g' $MODAEX\nsed -i 's|<library name=\"removed\" path=\"removed\" />||g' $MODAEX\nsed -i 's|<library name=\"proxy\" path=\"removed\" />||g' $MODAEX\nsed -i 's|<effect name=\"removed\" library=\"removed\" uuid=\"removed\" />||g' $MODAEX\nsed -i 's|<effect name=\"removed\" uuid=\"removed\" library=\"removed\" />||g' $MODAEX\nsed -i 's|<libsw library=\"removed\" uuid=\"removed\" />||g' $MODAEX\nsed -i 's|<libhw library=\"removed\" uuid=\"removed\" />||g' $MODAEX\nsed -i 's|<apply effect=\"removed\" />||g' $MODAEX\nsed -i '/^[[:space:]]*$/d' $MODAEX\n}\n\n# store\nRMVS=\"ring_helper alarm_helper music_helper voice_helper\n      notification_helper ma_ring_helper ma_alarm_helper\n      ma_music_helper ma_voice_helper ma_system_helper\n      ma_notification_helper sa3d fens lmfv dirac dtsaudio\n      dlb_music_listener dlb_ring_listener dlb_alarm_listener\n      dlb_system_listener dlb_notification_listener\"\n\n# setup audio effects conf\nfor MODAEC in $MODAECS; do\n  for RMV in $RMVS; do\n    sed -i \"/^        $RMV {/ {;N s/        $RMV {\\n        }//}\" $MODAEC\n    sed -i \"s|$RMV { }||g\" $MODAEC\n    sed -i \"s|$RMV {}||g\" $MODAEC\n  done\n  if ! grep -q '^output_session_processing {' $MODAEC; then\n    sed -i '$a\\\n\\\noutput_session_processing {\\\n    music {\\\n    }\\\n    ring {\\\n    }\\\n    alarm {\\\n    }\\\n    system {\\\n    }\\\n    voice_call {\\\n    }\\\n    notification {\\\n    }\\\n    bluetooth_sco {\\\n    }\\\n    dtmf {\\\n    }\\\n    enforced_audible {\\\n    }\\\n    accessibility {\\\n    }\\\n    tts {\\\n    }\\\n    assistant {\\\n    }\\\n    call_assistant {\\\n    }\\\n    patch {\\\n    }\\\n    rerouting {\\\n    }\\\n}\\' $MODAEC\n  else\n    if ! grep -q '^    rerouting {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    rerouting {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    patch {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    patch {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    call_assistant {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    call_assistant {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    assistant {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    assistant {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    tts {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    tts {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    accessibility {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    accessibility {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    enforced_audible {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    enforced_audible {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    dtmf {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    dtmf {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    bluetooth_sco {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    bluetooth_sco {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    notification {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    notification {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    voice_call {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    voice_call {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    system {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    system {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    alarm {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    alarm {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    ring {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    ring {\\n    }\" $MODAEC\n    fi\n    if ! grep -q '^    music {' $MODAEC; then\n      sed -i \"/^output_session_processing {/a\\    music {\\n    }\" $MODAEC\n    fi\n  fi\ndone\n\n# setup audio effects xml\nfor MODAEX in $MODAEXS; do\n  for RMV in $RMVS; do\n    sed -i \"s|<apply effect=\\\"$RMV\\\"/>||g\" $MODAEX\n    sed -i \"s|<apply effect=\\\"$RMV\\\" />||g\" $MODAEX\n  done\n  if ! grep -q '<postprocess>' $MODAEX\\\n  || grep -q 'Audio post processor configurations' $MODAEX; then\n    sed -i '/<\\/effects>/a\\\n    <postprocess>\\\n        <stream type=\"music\">\\\n        <\\/stream>\\\n        <stream type=\"ring\">\\\n        <\\/stream>\\\n        <stream type=\"alarm\">\\\n        <\\/stream>\\\n        <stream type=\"system\">\\\n        <\\/stream>\\\n        <stream type=\"voice_call\">\\\n        <\\/stream>\\\n        <stream type=\"notification\">\\\n        <\\/stream>\\\n        <stream type=\"bluetooth_sco\">\\\n        <\\/stream>\\\n        <stream type=\"dtmf\">\\\n        <\\/stream>\\\n        <stream type=\"enforced_audible\">\\\n        <\\/stream>\\\n        <stream type=\"accessibility\">\\\n        <\\/stream>\\\n        <stream type=\"tts\">\\\n        <\\/stream>\\\n        <stream type=\"assistant\">\\\n        <\\/stream>\\\n        <stream type=\"call_assistant\">\\\n        <\\/stream>\\\n        <stream type=\"patch\">\\\n        <\\/stream>\\\n        <stream type=\"rerouting\">\\\n        <\\/stream>\\\n    <\\/postprocess>' $MODAEX\n  else\n    if ! grep -q '<stream type=\"rerouting\">' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"rerouting\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"patch\">' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"patch\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"call_assistant\">' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"call_assistant\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"assistant\">' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"assistant\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"tts\">' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"tts\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"accessibility\">' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"accessibility\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"enforced_audible\">' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"enforced_audible\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"dtmf\">' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"dtmf\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"bluetooth_sco\">' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"bluetooth_sco\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"notification\">' $MODAEX\\\n    || grep -q '<!-- YunMang.Xiao@PSW.MM.Dolby' $MODAEX\\\n    || grep -q '<!-- WuHao@MULTIMEDIA.AUDIOSERVER.EFFECT' $MODAEX\\\n    || grep -q '<!-- heaton.zhong' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"notification\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"voice_call\">' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"voice_call\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"system\">' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"system\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"alarm\">' $MODAEX\\\n    || grep -q '<!-- YunMang.Xiao@PSW.MM.Dolby' $MODAEX\\\n    || grep -q '<!-- WuHao@MULTIMEDIA.AUDIOSERVER.EFFECT' $MODAEX\\\n    || grep -q '<!-- heaton.zhong' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"alarm\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"ring\">' $MODAEX\\\n    || grep -q '<!-- YunMang.Xiao@PSW.MM.Dolby' $MODAEX\\\n    || grep -q '<!-- WuHao@MULTIMEDIA.AUDIOSERVER.EFFECT' $MODAEX\\\n    || grep -q '<!-- heaton.zhong' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"ring\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n    if ! grep -q '<stream type=\"music\">' $MODAEX\\\n    || grep -q '<!-- YunMang.Xiao@PSW.MM.Dolby' $MODAEX\\\n    || grep -q '<!-- WuHao@MULTIMEDIA.AUDIOSERVER.EFFECT' $MODAEX\\\n    || grep -q '<!-- heaton.zhong' $MODAEX; then\n      sed -i \"/<postprocess>/a\\        <stream type=\\\"music\\\">\\n        <\\/stream>\" $MODAEX\n    fi\n  fi\n  sed -i 's|Audio post processor configurations|Ryuki Mod Edit|g' $MODAEX\n  sed -i 's|YunMang.Xiao@PSW.MM.Dolby|Ryuki Mod Edit|g' $MODAEX\n  sed -i 's|WuHao@MULTIMEDIA.AUDIOSERVER.EFFECT|Ryuki Mod Edit|g' $MODAEX\n  sed -i 's|heaton.zhong|Ryuki Mod Edit|g' $MODAEX\ndone\n\n# function\nsound_enhancement() {\nLIB=libsonysweffect.so\nLIBHW=libsonypostprocbundle.so\nLIBNAME=sonyeffect_sw\nLIBNAMEHW=sonyeffect_hw\nNAME=sonyeffect\nUUID=50786e95-da76-4557-976b-7981bdf6feb9\nUUIDHW=f9ed8ae0-1b9c-11e4-8900-0002a5d5c51b\nUUIDPROXY=af8da7e0-2ca1-11e3-b71d-0002a5d5c51b\nRMVS=\"$LIB $LIBHW $LIBNAME $LIBNAMEHW $NAME $UUID\n      $UUIDHW $UUIDPROXY libeffectproxy.so\"\narchdir\nif [ \"$ARCHDIR\" ]; then\n  for MODAEC in $MODAECS; do\n    remove_conf\n    sed -i \"/^libraries {/a\\  proxy {\\n    path \\\\$libdir\\\\$ARCHDIR\\/soundfx\\/libeffectproxy.so\\n  }\" $MODAEC\n    sed -i \"/^libraries {/a\\  $LIBNAMEHW {\\n    path \\\\$libdir\\\\$ARCHDIR\\/soundfx\\/$LIBHW\\n  }\" $MODAEC\n    sed -i \"/^libraries {/a\\  $LIBNAME {\\n    path \\\\$libdir\\\\$ARCHDIR\\/soundfx\\/$LIB\\n  }\" $MODAEC\n    sed -i \"/^effects {/a\\  $NAME {\\n    library proxy\\n    uuid $UUIDPROXY\\n  }\" $MODAEC\n    sed -i \"/^    uuid $UUIDPROXY/a\\    libhw {\\n      library $LIBNAMEHW\\n      uuid $UUIDHW\\n    }\" $MODAEC\n    sed -i \"/^    uuid $UUIDPROXY/a\\    libsw {\\n      library $LIBNAME\\n      uuid $UUID\\n    }\" $MODAEC\n  done\n  for MODAEX in $MODAEXS; do\n    remove_xml\n    sed -i \"/<libraries>/a\\        <library name=\\\"proxy\\\" path=\\\"libeffectproxy.so\\\"\\/>\" $MODAEX\n    sed -i \"/<libraries>/a\\        <library name=\\\"$LIBNAMEHW\\\" path=\\\"$LIBHW\\\"\\/>\" $MODAEX\n    sed -i \"/<libraries>/a\\        <library name=\\\"$LIBNAME\\\" path=\\\"$LIB\\\"\\/>\" $MODAEX\n    sed -i \"/<effects>/a\\        <\\/effectProxy>\" $MODAEX\n    sed -i \"/<effects>/a\\            <libhw library=\\\"$LIBNAMEHW\\\" uuid=\\\"$UUIDHW\\\"\\/>\" $MODAEX\n    sed -i \"/<effects>/a\\            <libsw library=\\\"$LIBNAME\\\" uuid=\\\"$UUID\\\"\\/>\" $MODAEX\n    sed -i \"/<effects>/a\\        <effectProxy name=\\\"$NAME\\\" library=\\\"proxy\\\" uuid=\\\"$UUIDPROXY\\\">\" $MODAEX\n  done\nfi\n}\ndolby_atmos() {\nLIB=libswdap.so\nLIBNAME=dap\nLIBNAME=dap_mod\nNAME=dap\nNAME=dap_mod\nUUID=9d4921da-8225-4f29-aefa-39537a04bcaa\nRMVS=\"$LIB $LIBNAME $NAME $UUID\"\narchdir\nif [ \"$ARCHDIR\" ]; then\n  for MODAEC in $MODAECS; do\n    remove_conf\n    sed -i \"/^libraries {/a\\  $LIBNAME {\\n    path \\\\$libdir\\\\$ARCHDIR\\/soundfx\\/$LIB\\n  }\" $MODAEC\n    sed -i \"/^effects {/a\\  $NAME {\\n    library $LIBNAME\\n    uuid $UUID\\n  }\" $MODAEC\n#m    sed -i \"/^    music {/a\\        $NAME {\\n        }\" $MODAEC\n#r    sed -i \"/^    ring {/a\\        $NAME {\\n        }\" $MODAEC\n#a    sed -i \"/^    alarm {/a\\        $NAME {\\n        }\" $MODAEC\n#s    sed -i \"/^    system {/a\\        $NAME {\\n        }\" $MODAEC\n#v    sed -i \"/^    voice_call {/a\\        $NAME {\\n        }\" $MODAEC\n#n    sed -i \"/^    notification {/a\\        $NAME {\\n        }\" $MODAEC\n#b    sed -i \"/^    bluetooth_sco {/a\\        $NAME {\\n        }\" $MODAEC\n#f    sed -i \"/^    dtmf {/a\\        $NAME {\\n        }\" $MODAEC\n#e    sed -i \"/^    enforced_audible {/a\\        $NAME {\\n        }\" $MODAEC\n#y    sed -i \"/^    accessibility {/a\\        $NAME {\\n        }\" $MODAEC\n#t    sed -i \"/^    tts {/a\\        $NAME {\\n        }\" $MODAEC\n#i    sed -i \"/^    assistant {/a\\        $NAME {\\n        }\" $MODAEC\n#c    sed -i \"/^    call_assistant {/a\\        $NAME {\\n        }\" $MODAEC\n#p    sed -i \"/^    patch {/a\\        $NAME {\\n        }\" $MODAEC\n#g    sed -i \"/^    rerouting {/a\\        $NAME {\\n        }\" $MODAEC\n  done\n  for MODAEX in $MODAEXS; do\n    remove_xml\n    sed -i \"/<libraries>/a\\        <library name=\\\"$LIBNAME\\\" path=\\\"$LIB\\\"\\/>\" $MODAEX\n    sed -i \"/<effects>/a\\        <effect name=\\\"$NAME\\\" library=\\\"$LIBNAME\\\" uuid=\\\"$UUID\\\"\\/>\" $MODAEX\n#m    sed -i \"/<stream type=\\\"music\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#r    sed -i \"/<stream type=\\\"ring\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#a    sed -i \"/<stream type=\\\"alarm\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#s    sed -i \"/<stream type=\\\"system\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#v    sed -i \"/<stream type=\\\"voice_call\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#n    sed -i \"/<stream type=\\\"notification\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#b    sed -i \"/<stream type=\\\"bluetooth_sco\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#f    sed -i \"/<stream type=\\\"dtmf\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#e    sed -i \"/<stream type=\\\"enforced_audible\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#y    sed -i \"/<stream type=\\\"accessibility\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#t    sed -i \"/<stream type=\\\"tts\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#i    sed -i \"/<stream type=\\\"assistant\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#c    sed -i \"/<stream type=\\\"call_assistant\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#p    sed -i \"/<stream type=\\\"patch\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n#g    sed -i \"/<stream type=\\\"rerouting\\\">/a\\            <apply effect=\\\"$NAME\\\"\\/>\" $MODAEX\n  done\nfi\n}\n\n# patch audio effects\n#hsound_enhancement\n#ddolby_atmos\n\n# patch audio policy\nfor MODAP in $MODAPS; do\n  sed -i 's|COMPRESS_OFFLOAD|NONE|g' $MODAP\n  sed -i 's|,compressed_offload||g' $MODAP\n#u  sed -i 's|RAW|NONE|g' $MODAP\n#u  sed -i 's|,raw||g' $MODAP\ndone\n\n# patch audio policy xml\nfor MODAPX in $MODAPXS; do\n  if ! grep -q 'format=\"AUDIO_FORMAT_ALAC\"' $MODAPX; then\n        sed -i '/AUDIO_FORMAT_MP3/i\\\n                    <profile name=\"\" format=\"AUDIO_FORMAT_ALAC\"\\\n                             samplingRates=\"8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000,128000,176400,192000\"\\\n                             channelMasks=\"AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO,AUDIO_CHANNEL_OUT_2POINT1,AUDIO_CHANNEL_OUT_QUAD,AUDIO_CHANNEL_OUT_PENTA,AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1\"/>' $MODAPX\n  fi\ndone\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "cleaner.sh",
    "content": "[ ! \"$MODPATH\" ] && MODPATH=${0%/*}\nUID=`id -u`\n\n# run\n. $MODPATH/function.sh\n\n# cleaning\nremove_cache\nPKGS=`cat $MODPATH/package.txt`\n#dPKGS=`cat $MODPATH/package-dolby.txt`\nfor PKG in $PKGS; do\n  rm -rf /data/user*/\"$UID\"/$PKG/cache/*\ndone\n\n\n\n\n\n"
  },
  {
    "path": "copy.sh",
    "content": "[ ! \"$MODPATH\" ] && MODPATH=${0%/*}\n\n# function\ncopy_dir_file() {\n  mkdir -p `dirname \"$2\"`\n  cp -af \"$1\" \"$2\"\n}\n\n# audio file\nAUD=\"*audio*effects*.conf -o -name *audio*effects*.xml -o -name *policy*.conf -o -name *policy*.xml\"\nrm -f `find $MODPATH -type f -name $AUD`\nFILES=`find /system /odm /my_product -type f -name $AUD`\nfor FILE in $FILES; do\n  MODFILE=$MODPATH/system`echo \"$FILE\" | sed 's|/system||g'`\n  copy_dir_file $FILE $MODFILE\ndone\nFILES=`find /vendor -type f -name $AUD`\nfor FILE in $FILES; do\n  MODFILE=$MODPATH$MODSYSTEM$FILE\n  copy_dir_file $FILE $MODFILE\ndone\nrm -f `find $MODPATH -type f -name *policy*volume*.xml -o -name *audio*effects*spatializer*.xml -o -name *audio*effects*haptic*.xml`\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "customize.sh",
    "content": "# space\nui_print \" \"\n\n# var\nUID=`id -u`\n[ ! \"$UID\" ] && UID=0\nFIRARCH=`grep_get_prop ro.bionic.arch`\nSECARCH=`grep_get_prop ro.bionic.2nd_arch`\nABILIST=`grep_get_prop ro.product.cpu.abilist`\nif [ ! \"$ABILIST\" ]; then\n  ABILIST=`grep_get_prop ro.system.product.cpu.abilist`\nfi\nif [ \"$FIRARCH\" == arm64 ]\\\n&& ! echo \"$ABILIST\" | grep -q arm64-v8a; then\n  if [ \"$ABILIST\" ]; then\n    ABILIST=\"$ABILIST,arm64-v8a\"\n  else\n    ABILIST=arm64-v8a\n  fi\nfi\nif [ \"$FIRARCH\" == x64 ]\\\n&& ! echo \"$ABILIST\" | grep -q x86_64; then\n  if [ \"$ABILIST\" ]; then\n    ABILIST=\"$ABILIST,x86_64\"\n  else\n    ABILIST=x86_64\n  fi\nfi\nif [ \"$SECARCH\" == arm ]\\\n&& ! echo \"$ABILIST\" | grep -q armeabi; then\n  if [ \"$ABILIST\" ]; then\n    ABILIST=\"$ABILIST,armeabi\"\n  else\n    ABILIST=armeabi\n  fi\nfi\nif [ \"$SECARCH\" == arm ]\\\n&& ! echo \"$ABILIST\" | grep -q armeabi-v7a; then\n  if [ \"$ABILIST\" ]; then\n    ABILIST=\"$ABILIST,armeabi-v7a\"\n  else\n    ABILIST=armeabi-v7a\n  fi\nfi\nif [ \"$SECARCH\" == x86 ]\\\n&& ! echo \"$ABILIST\" | grep -q x86; then\n  if [ \"$ABILIST\" ]; then\n    ABILIST=\"$ABILIST,x86\"\n  else\n    ABILIST=x86\n  fi\nfi\nABILIST32=`grep_get_prop ro.product.cpu.abilist32`\nif [ ! \"$ABILIST32\" ]; then\n  ABILIST32=`grep_get_prop ro.system.product.cpu.abilist32`\nfi\nif [ \"$SECARCH\" == arm ]\\\n&& ! echo \"$ABILIST32\" | grep -q armeabi; then\n  if [ \"$ABILIST32\" ]; then\n    ABILIST32=\"$ABILIST32,armeabi\"\n  else\n    ABILIST32=armeabi\n  fi\nfi\nif [ \"$SECARCH\" == arm ]\\\n&& ! echo \"$ABILIST32\" | grep -q armeabi-v7a; then\n  if [ \"$ABILIST32\" ]; then\n    ABILIST32=\"$ABILIST32,armeabi-v7a\"\n  else\n    ABILIST32=armeabi-v7a\n  fi\nfi\nif [ \"$SECARCH\" == x86 ]\\\n&& ! echo \"$ABILIST32\" | grep -q x86; then\n  if [ \"$ABILIST32\" ]; then\n    ABILIST32=\"$ABILIST32,x86\"\n  else\n    ABILIST32=x86\n  fi\nfi\nif [ ! \"$ABILIST32\" ]; then\n  [ -f /system/lib/libandroid.so ] && ABILIST32=true\nfi\n\n# log\nif [ \"$BOOTMODE\" != true ]; then\n  FILE=/data/media/\"$UID\"/$MODID\\_recovery.log\n  ui_print \"- Log will be saved at $FILE\"\n  exec 2>$FILE\n  ui_print \" \"\nfi\n\n# optionals\nOPTIONALS=/data/media/\"$UID\"/optionals.prop\nif [ ! -f $OPTIONALS ]; then\n  touch $OPTIONALS\nfi\n\n# debug\nif [ \"`grep_prop debug.log $OPTIONALS`\" == 1 ]; then\n  ui_print \"- The install log will contain detailed information\"\n  set -x\n  ui_print \" \"\nfi\n\n# recovery\nif [ \"$BOOTMODE\" != true ]; then\n  MODPATH_UPDATE=`echo $MODPATH | sed 's|modules/|modules_update/|g'`\n  rm -f $MODPATH/update\n  rm -rf $MODPATH_UPDATE\nfi\n\n# run\n. $MODPATH/function.sh\n\n# info\nMODVER=`grep_prop version $MODPATH/module.prop`\nMODVERCODE=`grep_prop versionCode $MODPATH/module.prop`\nui_print \" ID=$MODID\"\nui_print \" Version=$MODVER\"\nui_print \" VersionCode=$MODVERCODE\"\nif [ \"$KSU\" == true ]; then\n  ui_print \" KSUVersion=$KSU_VER\"\n  ui_print \" KSUVersionCode=$KSU_VER_CODE\"\n  ui_print \" KSUKernelVersionCode=$KSU_KERNEL_VER_CODE\"\n  sed -i 's|#k||g' $MODPATH/post-fs-data.sh\nelse\n  ui_print \" MagiskVersion=$MAGISK_VER\"\n  ui_print \" MagiskVersionCode=$MAGISK_VER_CODE\"\nfi\nui_print \" \"\n\n# .aml.sh\nmv -f $MODPATH/aml.sh $MODPATH/.aml.sh\n\n# sdk\nNUM=29\nif [ \"$API\" -lt $NUM ]; then\n  ui_print \"! Unsupported SDK $API. You have to upgrade your\"\n  ui_print \"  Android version at least SDK $NUM to use this module.\"\n  abort\nelse\n  ui_print \"- SDK $API\"\n  ui_print \" \"\nfi\n\n# recovery\nmount_partitions_in_recovery\n\n# dolby\nif [ \"`grep_prop se.dolby $OPTIONALS`\" == 0 ]; then\n  DOLBY=false\nelse\n  DOLBY=true\nfi\n\n# architecture\nif [ \"$ABILIST\" ]; then\n  ui_print \"- $ABILIST architecture\"\n  ui_print \" \"\nfi\nNAME=arm64-v8a\nNAME2=armeabi-v7a\nif ! echo \"$ABILIST\" | grep -q $NAME; then\n  if echo \"$ABILIST\" | grep -q $NAME2; then\n    rm -rf `find $MODPATH/system -type d -name *64*`\n    if [ $DOLBY == true ]; then\n      ui_print \"! Unsupported Dolby Atmos\"\n      ui_print \" \"\n    fi\n    DOLBY=false\n  else\n    if [ \"$BOOTMODE\" == true ]; then\n      ui_print \"! This ROM doesn't support $NAME nor $NAME2 architecture\"\n    else\n      ui_print \"! This Recovery doesn't support $NAME nor $NAME2 architecture\"\n      ui_print \"  Try to install via Magisk app instead\"\n    fi\n    abort\n  fi\nfi\nif ! echo \"$ABILIST\" | grep -q $NAME2; then\n  if [ \"$BOOTMODE\" == true ]; then\n    ui_print \"! This ROM doesn't support $NAME2 architecture\"\n  else\n    ui_print \"! This Recovery doesn't support $NAME2 architecture\"\n    ui_print \"  Try to install via Magisk app instead\"\n  fi\n  ui_print \"  Sound Enhancement will not be working\"\n  if [ $DOLBY == true ]; then\n    ui_print \"  But you can still use the Dolby Atmos\"\n  fi\n  rm -rf $MODPATH/system*/lib\\\n   $MODPATH/system*/vendor/lib\n  ui_print \" \"\nfi\nif ! file /*/bin/hw/*audio* | grep -q 32-bit; then\n  ui_print \"! Sound Enhancement uses 32 bit audio service only\"\n  ui_print \"  But this ROM uses 64 bit audio service\"\n  ui_print \"  Sound Enhancement will not be working\"\n  if [ $DOLBY == true ]; then\n    ui_print \"  But you can still use the Dolby Atmos\"\n  fi\n  ui_print \" \"\nelse\n  sed -i 's|#h||g' $MODPATH/.aml.sh\nfi\n\n# magisk\nmagisk_setup\n\n# path\nSYSTEM=`realpath $MIRROR/system`\nVENDOR=`realpath $MIRROR/vendor`\nPRODUCT=`realpath $MIRROR/product`\nSYSTEM_EXT=`realpath $MIRROR/system_ext`\nODM=`realpath $MIRROR/odm`\nMY_PRODUCT=`realpath $MIRROR/my_product`\n\n# create\nif [ $DOLBY == true ]; then\n  mkdir -p $MODPATH/system_dolby/etc/vintf\n  NAMES=vendor.dolby.hardware.dms@2.0-service\n  for NAME in $NAMES; do\n    if [ -f $VENDOR/bin/hw/$NAME ]; then\n      touch $MODPATH/system_dolby/vendor/bin/hw/$NAME\n    fi\n  done\n  if [ -d $ODM/bin/hw ] || [ -d $VENDOR/odm/bin/hw ]; then\n    mkdir -p $MODPATH/system_dolby/vendor/odm/bin/hw\n  fi\n  NAMES=\"vendor.dolby.hardware.dms@1.0-service\n         vendor.dolby.hardware.dms@2.0-service\"\n  for NAME in $NAMES; do\n    if [ -f $ODM/bin/hw/$NAME ]\\\n    || [ -f $VENDOR/odm/bin/hw/$NAME ]; then\n      touch $MODPATH/system_dolby/vendor/odm/bin/hw/$NAME\n    fi\n  done\nfi\n\n# check\nif [ $DOLBY == true ]\\\n&& [ \"`grep_prop dolby.mod $OPTIONALS`\" == 0 ]; then\n  ui_print \"- Checking in-built Dolby apps...\"\n  FILE=`find /system/app /system/priv-app /product/app\\\n        /product/priv-app /product/preinstall /system_ext/app\\\n        /system_ext/priv-app /vendor/app /vendor/euclid/product/app\\\n        -type f -name XiaomyDolby.apk -o -name DolbyManager.apk`\n  if [ \"$FILE\" ]; then\n    ui_print \"  Detected\"\n    ui_print \"$FILE\"\n    ui_print \"  You need to remove dolby.mod=0 to use the Dolby Atmos,\"\n    ui_print \"  otherwise the Dolby Atmos will not work.\"\n  fi\n  ui_print \" \"\n  FILE=/bin/hw/vendor.dolby.media.c2@1.0-service\n  if [ -f $SYSTEM$FILE ] || [ -f $VENDOR$FILE ]\\\n  || [ -f $ODM$FILE ] || [ -f $SYSTEM_EXT$FILE ]\\\n  || [ -f $PRODUCT$FILE ]; then\n    ui_print \"! Dolby Atmos maybe conflicting with your\"\n    ui_print \"  $FILE\"\n    ui_print \"  If your device internal storage mount failure,\"\n    ui_print \"  you need to remove dolby.mod=0 to fix that.\"\n    ui_print \" \"\n  fi\nfi\n\n# function\ncheck_function() {\nif [ -f $MODPATH/system_support$DIR/$LIB ]; then\n  ui_print \"- Checking\"\n  ui_print \"$NAME\"\n  ui_print \"  function at\"\n  ui_print \"$FILE\"\n  ui_print \"  Please wait...\"\n  if ! grep -q $NAME $FILE; then\n    ui_print \"  Function not found.\"\n    ui_print \"  Replaces /system$DIR/$LIB systemlessly.\"\n    mv -f $MODPATH/system_support$DIR/$LIB $MODPATH/system$DIR\n    [ \"$MES\" ] && ui_print \"$MES\"\n  fi\n  ui_print \" \"\nfi\n}\nfind_file() {\nfor LIB in $LIBS; do\n  if [ -f $MODPATH/system_support$DIR/$LIB ]; then\n    FILE=`find $SYSTEM$DIR $SYSTEM_EXT$DIR -type f -name $LIB`\n    if [ ! \"$FILE\" ]; then\n      ui_print \"- Using /system$DIR/$LIB.\"\n      mv -f $MODPATH/system_support$DIR/$LIB $MODPATH/system$DIR\n      ui_print \" \"\n    fi\n  fi\ndone\n}\n\n# check\nif [ $DOLBY == true ]; then\n  ui_print \"- Activating Dolby Atmos...\"\n  ui_print \" \"\n  NAME=_ZN7android8hardware23getOrCreateCachedBinderEPNS_4hidl4base4V1_05IBaseE\n  DES=vendor.dolby.hardware.dms@1.0.so\n  LIB=libhidlbase.so\n  if [ \"$IS64BIT\" == true ]; then\n    DIR=/lib64\n    LISTS=`strings $MODPATH/system_dolby/vendor$DIR/$DES | grep ^lib | grep .so`\n    FILE=`for LIST in $LISTS; do echo $SYSTEM$DIR/$LIST; done`\n    check_function\n  fi\n  if [ \"$ABILIST32\" ]; then\n    DIR=/lib\n    LISTS=`strings $MODPATH/system_dolby/vendor$DIR/$DES | grep ^lib | grep .so`\n    FILE=`for LIST in $LISTS; do echo $SYSTEM$DIR/$LIST; done`\n    check_function\n  fi\n  NAME=_ZN7android8String16aSEOS0_\n  DES=libhidlbase.so\n  LIB=libutils.so\n  if [ \"$IS64BIT\" == true ]; then\n    DIR=/lib64\n    if [ -f $MODPATH/system$DIR/$DES ]; then\n      LISTS=`strings $MODPATH/system$DIR/$DES | grep ^lib | grep .so\\\n             | sed \"s|$DES||g\"`\n      FILE=`for LIST in $LISTS; do echo $SYSTEM$DIR/$LIST; done`\n      check_function\n    fi\n  fi\n  if [ \"$ABILIST32\" ]; then\n    DIR=/lib\n    if [ -f $MODPATH/system$DIR/$DES ]; then\n      LISTS=`strings $MODPATH/system$DIR/$DES | grep ^lib | grep .so\\\n             | sed \"s|$DES||g\"`\n      FILE=`for LIST in $LISTS; do echo $SYSTEM$DIR/$LIST; done`\n      check_function\n    fi\n  fi\n  MODNAME2='Sound Enhancement and Dolby Atmos Sony Xperia 10'\n  sed -i \"s|$MODNAME|$MODNAME2|g\" $MODPATH/module.prop\n  MODNAME=$MODNAME2\n  sed -i 's|#d||g' $MODPATH/.aml.sh\n  sed -i 's|#d||g' $MODPATH/*.sh\n  cp -rf $MODPATH/system_dolby/* $MODPATH/system\nfi\n\n# check\nif [ $DOLBY == true ]; then\n  LIBS=\"libhidltransport.so libhwbinder.so\"\n  if [ \"$IS64BIT\" == true ]; then\n    DIR=/lib64\n    find_file\n  fi\n  if [ \"$ABILIST32\" ]; then\n    DIR=/lib\n    find_file\n  fi\nfi\n\n# sepolicy\nFILE=$MODPATH/sepolicy.rule\nDES=$MODPATH/sepolicy.pfsd\nif [ \"`grep_prop sepolicy.sh $OPTIONALS`\" == 1 ]\\\n&& [ -f $FILE ]; then\n  mv -f $FILE $DES\nfi\n\n# mod ui\nMOD_UI=false\nif [ \"`grep_prop mod.ui $OPTIONALS`\" == 1 ]; then\n  APP=SoundEnhancement\n  FILE=/data/media/\"$UID\"/$APP.apk\n  DIR=`find $MODPATH/system -type d -name $APP`\n  ui_print \"- Using modified UI apk...\"\n  if [ -f $FILE ]; then\n    cp -f $FILE $DIR\n    chmod 0644 $DIR/$APP.apk\n    ui_print \"  Applied\"\n    MOD_UI=true\n  else\n    ui_print \"  ! There is no $FILE file.\"\n    ui_print \"    Please place the apk to your internal storage first\"\n    ui_print \"    and reflash!\"\n  fi\n  ui_print \" \"\nfi\n\n# cleaning\nui_print \"- Cleaning...\"\nif [ $DOLBY == true ]; then\n  PKGS=`cat $MODPATH/package-dolby.txt`\n  if [ \"`grep_prop dolby.mod $OPTIONALS`\" == 0 ]; then\n    rm -f /data/vendor/dolby/dax_sqlite3.db\n  else\n    rm -f /data/vendor/dolby/dap_sqlite3.db\n    sed -i 's|dax_sqlite3.db|dap_sqlite3.db|g' $MODPATH/uninstall.sh\n  fi\nelse\n  PKGS=`cat $MODPATH/package.txt`\nfi\nif [ \"$BOOTMODE\" == true ]; then\n  for PKG in $PKGS; do\n    FILE=`find /data/app -name *$PKG*`\n    if [ \"$FILE\" ]; then\n      RES=`pm uninstall $PKG 2>/dev/null`\n    fi\n  done\nfi\nrm -rf $MODPATH/system_dolby\\\n $MODPATH/system_support\\\n $MODPATH/unused\nremove_sepolicy_rule\nui_print \" \"\n# power save\n#FILE=$MODPATH/system/etc/sysconfig/*\n#if [ \"`grep_prop power.save $OPTIONALS`\" == 1 ]; then\n#  ui_print \"- $MODNAME will not be allowed in power save.\"\n#  ui_print \"  It may save your battery but decreasing $MODNAME performance.\"\n#  for PKG in $PKGS; do\n#    sed -i \"s|<allow-in-power-save package=\\\"$PKG\\\"/>||g\" $FILE\n#    sed -i \"s|<allow-in-power-save package=\\\"$PKG\\\" />||g\" $FILE\n#  done\n#  ui_print \" \"\n#fi\n\n# function\nconflict() {\nfor NAME in $NAMES; do\n  DIR=/data/adb/modules_update/$NAME\n  if [ -f $DIR/uninstall.sh ]; then\n    sh $DIR/uninstall.sh\n  fi\n  rm -rf $DIR\n  DIR=/data/adb/modules/$NAME\n  rm -f $DIR/update\n  touch $DIR/remove\n  FILE=/data/adb/modules/$NAME/uninstall.sh\n  if [ -f $FILE ]; then\n    sh $FILE\n    rm -f $FILE\n  fi\n  rm -rf /metadata/magisk/$NAME\\\n   /mnt/vendor/persist/magisk/$NAME\\\n   /persist/magisk/$NAME\\\n   /data/unencrypted/magisk/$NAME\\\n   /cache/magisk/$NAME\\\n   /cust/magisk/$NAME\ndone\n}\n\n# conflict\nif [ $DOLBY == true ]; then\n  if [ \"`grep_prop dolby.mod $OPTIONALS`\" == 0 ]; then\n    NAMES=\"dolbyatmos DolbyAtmos DolbyAudio MotoDolby\n           dsplus Dolby\"\n  else\n    NAMES=\"dolbyatmos DolbyAtmos DolbyAudio MotoDolby\"\n  fi\n  conflict\n  NAMES=MiSound\n  FILE=/data/adb/modules/$NAMES/module.prop\n  if grep -q 'and Dolby Atmos' $FILE; then\n    conflict\n  fi\n  NAMES=DolbyAtmosSpatialSound\n  FILE=/data/adb/modules/$NAMES/module.prop\n  if grep -q 'Dolby Atmos and' $FILE; then\n    conflict\n  fi\nfi\n\n# function\ncleanup() {\nif [ -f $DIR/uninstall.sh ]; then\n  sh $DIR/uninstall.sh\nfi\nDIR=/data/adb/modules_update/$MODID\nif [ -f $DIR/uninstall.sh ]; then\n  sh $DIR/uninstall.sh\nfi\n}\n\n# cleanup\nDIR=/data/adb/modules/$MODID\nFILE=$DIR/module.prop\nPREVMODNAME=`grep_prop name $FILE`\nif [ \"`grep_prop data.cleanup $OPTIONALS`\" == 1 ]; then\n  sed -i 's|^data.cleanup=1|data.cleanup=0|g' $OPTIONALS\n  ui_print \"- Cleaning-up $MODID data...\"\n  cleanup\n  ui_print \" \"\nelif [ -d $DIR ]\\\n&& [ \"$PREVMODNAME\" != \"$MODNAME\" ]; then\n  ui_print \"- Different module name is detected\"\n  ui_print \"  Cleaning-up $MODID data...\"\n  cleanup\n  ui_print \" \"\nfi\n\n# function\npermissive_2() {\nsed -i 's|#2||g' $MODPATH/post-fs-data.sh\n}\npermissive() {\nFILE=/sys/fs/selinux/enforce\nFILE2=/sys/fs/selinux/policy\nif [ \"`toybox cat $FILE`\" = 1 ]; then\n  chmod 640 $FILE\n  chmod 440 $FILE2\n  echo 0 > $FILE\n  if [ \"`toybox cat $FILE`\" = 1 ]; then\n    ui_print \"  Your device can't be turned to Permissive state.\"\n    ui_print \"  Using Magisk Permissive mode instead.\"\n    permissive_2\n  else\n    echo 1 > $FILE\n    sed -i 's|#1||g' $MODPATH/post-fs-data.sh\n  fi\nelse\n  sed -i 's|#1||g' $MODPATH/post-fs-data.sh\nfi\n}\nbackup() {\nif [ ! -f $FILE.orig ] && [ ! -f $FILE.bak ]; then\n  ui_print \"- Checking free space...\"\n  SIZE=`du $FILE | sed \"s|$FILE||g\"`\n  SIZE=$(( $SIZE + 1 ))\n  INFO=`df $FILE`\n  FREE=`echo \"$INFO\" | awk 'NR==3{print $3}'`\n  if [ ! \"$FREE\" ]; then\n    FREE=`echo \"$INFO\" | awk 'NR==2{print $4}'`\n  fi\n  ui_print \"$INFO\"\n  ui_print \"  Free space = $FREE KiB\"\n  ui_print \"  Free space required = $SIZE KiB\"\n  ui_print \" \"\n  if [ \"$FREE\" -ge \"$SIZE\" ]; then\n    cp -af $FILE $FILE.orig\n    if [ -f $FILE.orig ]; then\n      ui_print \"- Created\"\n      ui_print \"$FILE.orig\"\n      ui_print \"  This file will not be restored automatically even you\"\n      ui_print \"  have uninstalled this module.\"\n    else\n      ui_print \"- Failed to create\"\n      ui_print \"$FILE.orig\"\n      ui_print \"  The partition is Read-Only\"\n    fi\n    ui_print \" \"\n  fi\nfi\n}\npatch_manifest() {\nif [ \"$MIRROR\" ]\\\n&& ! grep -q \" $MIRROR\" /proc/mounts; then\n  FILE=`echo $FILE | sed -e \"s|$MIRROR||g\" -e 's|/system_root||g'`\nfi\nif [ -f $FILE ]; then\n  backup\n  if [ -f $FILE.orig ] || [ -f $FILE.bak ]; then\n    ui_print \"- Patching\"\n    ui_print \"$FILE\"\n    ui_print \"  directly...\"\n    sed -i '/<manifest/a\\\n    <hal format=\"hidl\">\\\n        <name>vendor.dolby.hardware.dms</name>\\\n        <transport>hwbinder</transport>\\\n        <fqname>@1.0::IDms/default</fqname>\\\n    </hal>' $FILE\n    ui_print \" \"\n  fi\nfi\n}\neim_dir_warning() {\nui_print \"! It seems Magisk early init mount directory is not\"\nui_print \"  activated yet. Please reinstall Magisk via Magisk app\"\nui_print \"  (not via Recovery).\"\nui_print \" \"\n}\nearly_init_mount_dir() {\nif echo $MAGISK_VER | grep -Eq 'delta|kitsune'\\\n&& [ \"`grep_prop dolby.skip.early $OPTIONALS`\" != 1 ]; then\n  check_data\n  get_flags > /dev/null 2>&1\n  if [ \"$BOOTMODE\" == true ]; then\n    if [ \"$MAGISK_VER_CODE\" -ge 26000 ]; then\n      PREINITDEVICE=`grep_prop PREINITDEVICE $INTERNALDIR/config`\n      if [ ! \"$PREINITDEVICE\" ]; then\n        eim_dir_warning\n      fi\n    fi\n    if [ -L $MIRROR/early-mount ]; then\n      EIMDIR=`readlink $MIRROR/early-mount`\n      [ \"${EIMDIR:0:1}\" != \"/\" ] && EIMDIR=\"$MIRROR/$EIMDIR\"\n    fi\n  fi\n  if [ ! \"$EIMDIR\" ]; then\n    if ! $ISENCRYPTED; then\n      EIMDIR=/data/adb/early-mount.d\n    elif [ -d /data/unencrypted ]\\\n    && ! grep ' /data ' /proc/mounts | grep -q dm-\\\n    && grep ' /data ' /proc/mounts | grep -q ext4; then\n      EIMDIR=/data/unencrypted/early-mount.d\n    elif grep ' /cache ' /proc/mounts | grep -q ext4; then\n      EIMDIR=/cache/early-mount.d\n    elif grep ' /metadata ' /proc/mounts | grep -q ext4; then\n      EIMDIR=/metadata/early-mount.d\n    elif grep ' /persist ' /proc/mounts | grep -q ext4; then\n      EIMDIR=/persist/early-mount.d\n    elif grep ' /mnt/vendor/persist ' /proc/mounts | grep -q ext4; then\n      EIMDIR=/mnt/vendor/persist/early-mount.d\n    elif grep ' /cust ' /proc/mounts | grep -q ext4; then\n      EIMDIR=/cust/early-mount.d\n    fi\n  fi\n  if [ ! \"$EIMDIR\" ]\\\n  && [ \"$MAGISK_VER_CODE\" -ge 26000 ]; then\n    if [ -d /data/unencrypted ]\\\n    && ! grep ' /data ' /proc/mounts | grep -q dm-\\\n    && grep ' /data ' /proc/mounts | grep -q f2fs; then\n      EIMDIR=/data/unencrypted/early-mount.d\n    elif grep ' /cache ' /proc/mounts | grep -q f2fs; then\n      EIMDIR=/cache/early-mount.d\n    elif grep ' /metadata ' /proc/mounts | grep -q f2fs; then\n      EIMDIR=/metadata/early-mount.d\n    elif grep ' /persist ' /proc/mounts | grep -q f2fs; then\n      EIMDIR=/persist/early-mount.d\n    elif grep ' /mnt/vendor/persist ' /proc/mounts | grep -q f2fs; then\n      EIMDIR=/mnt/vendor/persist/early-mount.d\n    elif grep ' /cust ' /proc/mounts | grep -q f2fs; then\n      EIMDIR=/cust/early-mount.d\n    fi\n  fi\n  if [ \"$EIMDIR\" ]; then\n    if [ -d ${EIMDIR%/early-mount.d} ]; then\n      EIM=true\n      mkdir -p $EIMDIR\n      ui_print \"- Your early init mount directory is\"\n      ui_print \"  $EIMDIR\"\n      ui_print \"  Any file stored to this directory will not be deleted\"\n      ui_print \"  even you have uninstalled this module.\"\n    else\n      EIM=false\n      ui_print \"- Unable to find early init mount directory ${EIMDIR%/early-mount.d}\"\n    fi\n    ui_print \" \"\n  else\n    EIM=false\n    ui_print \"- Unable to find early init mount directory\"\n    ui_print \" \"\n  fi\nelse\n  EIM=false\nfi\n}\neim_cache_warning() {\nif echo $EIMDIR | grep -q cache; then\n  ui_print \"  Please do not ever wipe your /cache\"\n  ui_print \"  as long as this module is installed!\"\n  ui_print \"  If your /cache is wiped for some reasons,\"\n  ui_print \"  then you need to uninstall this module and reboot first,\"\n  ui_print \"  then reinstall this module afterwards\"\n  ui_print \"  to get this module working correctly.\"\nfi\n}\npatch_manifest_eim() {\nif [ $EIM == true ]; then\n  SRC=$SYSTEM/etc/vintf/manifest.xml\n  if [ -f $SRC ]; then\n    DIR=$EIMDIR/system/etc/vintf\n    DES=$DIR/manifest.xml\n    mkdir -p $DIR\n    if [ ! -f $DES ]; then\n      cp -af $SRC $DIR\n    fi\n    if ! grep -A2 vendor.dolby.hardware.dms $DES | grep -q 1.0; then\n      ui_print \"- Patching\"\n      ui_print \"$DES\"\n      sed -i '/<manifest/a\\\n    <hal format=\"hidl\">\\\n        <name>vendor.dolby.hardware.dms</name>\\\n        <transport>hwbinder</transport>\\\n        <fqname>@1.0::IDms/default</fqname>\\\n    </hal>' $DES\n      eim_cache_warning\n      ui_print \" \"\n    fi\n    if echo $MAGISK_VER | grep -q kitsune-; then\n      ui_print \"! It seems you are using a fake Kitsune Mask version\"\n      ui_print \"  and that is known has a broken early/pre init mount.\"\n      ui_print \"  Please use an original Kitsune Mask instead.\"\n      ui_print \" \"\n    fi\n  else\n    EIM=false\n  fi\nfi\n}\n\n# permissive\nif [ \"`grep_prop permissive.mode $OPTIONALS`\" == 1 ]; then\n  ui_print \"- Using device Permissive mode.\"\n  rm -f $MODPATH/sepolicy.rule\n  permissive\n  ui_print \" \"\nelif [ \"`grep_prop permissive.mode $OPTIONALS`\" == 2 ]; then\n  ui_print \"- Using Magisk Permissive mode.\"\n  rm -f $MODPATH/sepolicy.rule\n  permissive_2\n  ui_print \" \"\nfi\n\n# mod ui\nMOD_UI_DOLBY=false\nif [ $DOLBY == true ]\\\n&& [ \"`grep_prop mod.ui $OPTIONALS`\" == 1 ]; then\n  APP=DaxUI\n  FILE=/data/media/\"$UID\"/$APP.apk\n  DIR=`find $MODPATH/system -type d -name $APP`\n  ui_print \"- Using modified Dolby UI apk...\"\n  if [ -f $FILE ]; then\n    cp -f $FILE $DIR\n    chmod 0644 $DIR/$APP.apk\n    ui_print \"  Applied\"\n    MOD_UI_DOLBY=true\n  else\n    ui_print \"  ! There is no $FILE file.\"\n    ui_print \"    Please place the apk to your internal storage first\"\n    ui_print \"    and reflash!\"\n  fi\n  ui_print \" \"\nfi\n\n# 36 dB\nPROP=`grep_prop dolby.gain $OPTIONALS`\nif [ $DOLBY == true ] && [ \"$MOD_UI_DOLBY\" != true ]\\\n&& [ \"$PROP\" ] && [ \"$PROP\" -gt 192 ]; then\n  ui_print \"- Using max/min limit 36 dB for Dolby Atmos\"\n  cp -rf $MODPATH/system_dolby_36dB/* $MODPATH/system\n  ui_print \" \"\nfi\nrm -rf $MODPATH/system_dolby_36dB\n\n# patch manifest.xml\nif [ $DOLBY == true ]; then\n  remount_rw\n  early_init_mount_dir\n  DIR=/data/adb/modules/$MODID\n  if [ \"$BOOTMODE\" == true ]\\\n  && grep -q 'BUGGY MODE' $DIR/module.prop; then\n    FILE=\"$INTERNALDIR/mirror/*/etc/vintf/manifest.xml\n          $INTERNALDIR/mirror/*/*/etc/vintf/manifest.xml\n          $INTERNALDIR/mirror/*/etc/vintf/manifest/*.xml\n          $INTERNALDIR/mirror/*/*/etc/vintf/manifest/*.xml\"\n  else\n    FILE=\"$INTERNALDIR/mirror/*/etc/vintf/manifest.xml\n          $INTERNALDIR/mirror/*/*/etc/vintf/manifest.xml\n          /*/etc/vintf/manifest.xml /*/*/etc/vintf/manifest.xml\n          $INTERNALDIR/mirror/*/etc/vintf/manifest/*.xml\n          $INTERNALDIR/mirror/*/*/etc/vintf/manifest/*.xml\n          /*/etc/vintf/manifest/*.xml /*/*/etc/vintf/manifest/*.xml\"\n  fi\n  if [ \"`grep_prop dolby.skip.vendor $OPTIONALS`\" != 1 ]\\\n  && ! grep -A2 vendor.dolby.hardware.dms $FILE | grep -q 1.0; then\n    FILE=$VENDOR/etc/vintf/manifest.xml\n    patch_manifest\n  fi\n  if [ \"`grep_prop dolby.skip.system $OPTIONALS`\" != 1 ]\\\n  && ! grep -A2 vendor.dolby.hardware.dms $FILE | grep -q 1.0; then\n    FILE=$SYSTEM/etc/vintf/manifest.xml\n    patch_manifest\n  fi\n  if [ \"`grep_prop dolby.skip.system_ext $OPTIONALS`\" != 1 ]\\\n  && ! grep -A2 vendor.dolby.hardware.dms $FILE | grep -q 1.0; then\n    FILE=$SYSTEM_EXT/etc/vintf/manifest.xml\n    patch_manifest\n  fi\n  if ! grep -A2 vendor.dolby.hardware.dms $FILE | grep -q 1.0; then\n    patch_manifest_eim\n    if [ $EIM == false ]; then\n      ui_print \"- Using BUGGY MODE systemless manifest.xml patch.\"\n      ui_print \"  On some ROMs, it produces some issues or even makes\"\n      ui_print \"  bootloop because not allowed to restart hwservicemanager.\"\n      ui_print \"  You can fix this by using original Magisk Delta/Kitsune Mask.\"\n      ui_print \" \"\n    fi\n  fi\n  remount_ro\nfi\n\n# function\nhide_oat() {\nfor APP in $APPS; do\n  REPLACE=\"$REPLACE\n  `find $MODPATH/system -type d -name $APP | sed \"s|$MODPATH||g\"`/oat\"\ndone\n}\nreplace_dir() {\nif [ -d $DIR ] && [ ! -d $MODPATH$MODDIR ]; then\n  REPLACE=\"$REPLACE $MODDIR\"\nfi\n}\nhide_app() {\nfor APP in $APPS; do\n  DIR=$SYSTEM/app/$APP\n  MODDIR=/system/app/$APP\n  replace_dir\n  DIR=$SYSTEM/priv-app/$APP\n  MODDIR=/system/priv-app/$APP\n  replace_dir\n  DIR=$PRODUCT/app/$APP\n  MODDIR=/system/product/app/$APP\n  replace_dir\n  DIR=$PRODUCT/priv-app/$APP\n  MODDIR=/system/product/priv-app/$APP\n  replace_dir\n  DIR=$MY_PRODUCT/app/$APP\n  MODDIR=/system/product/app/$APP\n  replace_dir\n  DIR=$MY_PRODUCT/priv-app/$APP\n  MODDIR=/system/product/priv-app/$APP\n  replace_dir\n  DIR=$PRODUCT/preinstall/$APP\n  MODDIR=/system/product/preinstall/$APP\n  replace_dir\n  DIR=$SYSTEM_EXT/app/$APP\n  MODDIR=/system/system_ext/app/$APP\n  replace_dir\n  DIR=$SYSTEM_EXT/priv-app/$APP\n  MODDIR=/system/system_ext/priv-app/$APP\n  replace_dir\n  DIR=$VENDOR/app/$APP\n  MODDIR=/system/vendor/app/$APP\n  replace_dir\n  DIR=$VENDOR/euclid/product/app/$APP\n  MODDIR=/system/vendor/euclid/product/app/$APP\n  replace_dir\ndone\n}\n\n# hide\nAPPS=\"`ls $MODPATH/system/priv-app`\n      `ls $MODPATH/system/app`\"\nhide_oat\nAPPS=\"$APPS MusicFX AudioFX\"\nhide_app\nif [ $DOLBY == true ]; then\n  if [ \"`grep_prop dolby.mod $OPTIONALS`\" == 0 ]; then\n    APPS=\"MotoDolbyDax3 MotoDolbyV3 OPSoundTuner \n          DolbyAtmos AudioEffectCenter\"\n  else\n    APPS=\"MotoDolbyDax3 MotoDolbyV3 OPSoundTuner \n          DolbyAtmos\"\n  fi\n  hide_app\nfi\n\n# function\nstream_mode() {\nFILE=$MODPATH/.aml.sh\nif echo \"$PROP\" | grep -q m; then\n  ui_print \"- Activating Dolby Atmos music stream...\"\n  sed -i 's|#m||g' $FILE\n  sed -i 's|musicstream=|musicstream=true|g' $MODPATH/acdb.conf\n  sed -i 's|music_stream false|music_stream true|g' $MODPATH/service.sh\n  ui_print \"  Dolby Atmos will always be enabled\"\n  ui_print \"  and cannot be disabled by on/off togglers\"\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q r; then\n  ui_print \"- Activating Dolby Atmos ring stream...\"\n  sed -i 's|#r||g' $FILE\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q a; then\n  ui_print \"- Activating Dolby Atmos alarm stream...\"\n  sed -i 's|#a||g' $FILE\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q s; then\n  ui_print \"- Activating Dolby Atmos system stream...\"\n  sed -i 's|#s||g' $FILE\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q v; then\n  ui_print \"- Activating Dolby Atmos voice_call stream...\"\n  sed -i 's|#v||g' $FILE\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q n; then\n  ui_print \"- Activating Dolby Atmos notification stream...\"\n  sed -i 's|#n||g' $FILE\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q b; then\n  ui_print \"- Activating Dolby Atmos bluetooth_sco stream...\"\n  sed -i 's|#b||g' $FILE\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q f; then\n  ui_print \"- Activating Dolby Atmos dtmf stream...\"\n  sed -i 's|#f||g' $FILE\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q e; then\n  ui_print \"- Activating Dolby Atmos enforced_audible stream...\"\n  sed -i 's|#e||g' $FILE\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q y; then\n  ui_print \"- Activating Dolby Atmos accessibility stream...\"\n  sed -i 's|#y||g' $FILE\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q t; then\n  ui_print \"- Activating Dolby Atmos tts stream...\"\n  sed -i 's|#t||g' $FILE\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q i; then\n  ui_print \"- Activating Dolby Atmos assistant stream...\"\n  sed -i 's|#i||g' $FILE\n  ui_print \" \"\nfi\nif echo \"$PROP\" | grep -q c; then\n  ui_print \"- Activating Dolby Atmos call_assistant stream...\"\n  sed -i 's|#c||g' $FILE\n  ui_print \" \"\nfi\nif [ \"`grep_prop dolby.game $OPTIONALS`\" != 0 ]; then\n  sed -i 's|#p||g' $FILE\n  sed -i 's|#g||g' $FILE\nelse\n  ui_print \"- Does not use Dolby Game patch & rerouting stream\"\n  ui_print \" \"\nfi\n}\n\n# stream mode\nFILE=$MODPATH/service.sh\nPROP=`grep_prop stream.mode $OPTIONALS`\nif echo \"$PROP\" | grep -q m; then\n  ui_print \"- Using Sound Enhancement post process type soundfx\"\n  ui_print \"  instead of global type soundfx\"\n  sed -i 's|ro.sony.global.effect true|ro.sony.global.effect false|g' $FILE\n  ui_print \" \"\nfi\nif [ $DOLBY == true ]; then\n  stream_mode\nfi\n\n# function\ndolby_settings() {\nFILE=$MODPATH/system/vendor/etc/dolby/dax-default.xml\nPROP=`grep_prop dolby.bass $OPTIONALS`\nif [ \"$PROP\" == true ]; then\n  ui_print \"- Changing all bass-enhancer-enable value to true\"\n  sed -i 's|bass-enhancer-enable value=\"false\"|bass-enhancer-enable value=\"true\"|g' $FILE\nelif [ \"$PROP\" == false ]; then\n  ui_print \"- Changing all bass-enhancer-enable value to false\"\n  sed -i 's|bass-enhancer-enable value=\"true\"|bass-enhancer-enable value=\"false\"|g' $FILE\nelif [ \"$PROP\" ] && [ \"$PROP\" != def ] && [ \"$PROP\" -gt 0 ]; then\n  ui_print \"- Changing all bass-enhancer-enable value to true\"\n  sed -i 's|bass-enhancer-enable value=\"false\"|bass-enhancer-enable value=\"true\"|g' $FILE\n  ROWS=`grep bass-enhancer-boost $FILE | sed -e 's|<bass-enhancer-boost value=\"||g' -e 's|\"/>||g' -e 's|\" />||g'`\n  if [ \"$ROWS\" ]; then\n    ui_print \"- Default bass-enhancer-boost value:\"\n    ui_print \"$ROWS\"\n    ui_print \"- Changing all bass-enhancer-boost value to $PROP\"\n    for ROW in $ROWS; do\n      sed -i \"s|bass-enhancer-boost value=\\\"$ROW\\\"|bass-enhancer-boost value=\\\"$PROP\\\"|g\" $FILE\n    done\n  else\n    ui_print \"- This version does not support bass-enhancer-boost\"\n  fi\nfi\nif [ \"`grep_prop dolby.virtualizer $OPTIONALS`\" == 1 ]; then\n  ui_print \"- Changing all virtualizer-enable value to true\"\n  sed -i 's|virtualizer-enable value=\"false\"|virtualizer-enable value=\"true\"|g' $FILE\nelif [ \"`grep_prop dolby.virtualizer $OPTIONALS`\" == 0 ]; then\n  ui_print \"- Changing all virtualizer-enable value to false\"\n  sed -i 's|virtualizer-enable value=\"true\"|virtualizer-enable value=\"false\"|g' $FILE\nfi\nif [ \"`grep_prop dolby.volumeleveler $OPTIONALS`\" == def ]; then\n  ui_print \"- Using default settings of volume-leveler\"\nelif [ \"`grep_prop dolby.volumeleveler $OPTIONALS`\" == 1 ]; then\n  ui_print \"- Changing all volume-leveler-enable value to true\"\n  sed -i 's|volume-leveler-enable value=\"false\"|volume-leveler-enable value=\"true\"|g' $FILE\nelse\n  ui_print \"- Changing all volume-leveler-enable value to false\"\n  sed -i 's|volume-leveler-enable value=\"true\"|volume-leveler-enable value=\"false\"|g' $FILE\nfi\nif [ \"`grep_prop dolby.deepbass $OPTIONALS`\" == 1 ]; then\n  ui_print \"- Using deeper bass GEQ frequency\"\n  sed -i 's|frequency=\"47\"|frequency=\"0\"|g' $FILE\n  sed -i 's|frequency=\"141\"|frequency=\"47\"|g' $FILE\n  sed -i 's|frequency=\"234\"|frequency=\"141\"|g' $FILE\n  sed -i 's|frequency=\"328\"|frequency=\"234\"|g' $FILE\n  sed -i 's|frequency=\"469\"|frequency=\"328\"|g' $FILE\n  sed -i 's|frequency=\"656\"|frequency=\"469\"|g' $FILE\n  sed -i 's|frequency=\"844\"|frequency=\"656\"|g' $FILE\n  sed -i 's|frequency=\"1031\"|frequency=\"844\"|g' $FILE\n  sed -i 's|frequency=\"1313\"|frequency=\"1031\"|g' $FILE\n  sed -i 's|frequency=\"1688\"|frequency=\"1313\"|g' $FILE\n  sed -i 's|frequency=\"2250\"|frequency=\"1688\"|g' $FILE\n  sed -i 's|frequency=\"3000\"|frequency=\"2250\"|g' $FILE\n  sed -i 's|frequency=\"3750\"|frequency=\"3000\"|g' $FILE\n  sed -i 's|frequency=\"4688\"|frequency=\"3750\"|g' $FILE\n  sed -i 's|frequency=\"5813\"|frequency=\"4688\"|g' $FILE\n  sed -i 's|frequency=\"7125\"|frequency=\"5813\"|g' $FILE\n  sed -i 's|frequency=\"9000\"|frequency=\"7125\"|g' $FILE\n  sed -i 's|frequency=\"11250\"|frequency=\"9000\"|g' $FILE\n  sed -i 's|frequency=\"13875\"|frequency=\"11250\"|g' $FILE\n  sed -i 's|frequency=\"19688\"|frequency=\"13875\"|g' $FILE\nfi\nui_print \" \"\n}\n\n# settings\nif [ $DOLBY == true ]; then\n  sed -i 's|persist.sony.effect.dolby_atmos false|persist.sony.effect.dolby_atmos true|g' $MODPATH/service.sh\n  dolby_settings\nfi\n\n# check\nNAME=dsee_hx_state\nFILE=$VENDOR/lib*/hw/audio.primary.*.so\nif grep -q \"$NAME\" $FILE ; then\n  ui_print \"- Detected DSEEHX support in\"\n  ui_print \"$FILE\"\n  sed -i 's|ro.somc.dseehx.supported true|ro.somc.dseehx.supported false|g' $MODPATH/service.sh\n  ui_print \" \"\nfi\n\n# function\nfile_check_apex_for_vendor() {\nfor FILE in $FILES; do\n  DESS=\"/apex$FILE $SYSTEM/apex$FILE\"\n  for DES in $DESS; do\n    if [ -f $DES ]; then\n      ui_print \"- Detected\"\n      ui_print \"$DES\"\n      NAME=`basename $FILE`\n      if echo $FILE | grep -q lib64; then\n        rm -f $MODPATH/system/vendor/lib64/$NAME\n      else\n        rm -f $MODPATH/system/vendor/lib/$NAME\n      fi\n      ui_print \" \"\n    fi\n  done\ndone\n}\nfile_check_system_for_vendor() {\nfor FILE in $FILES; do\n  DESS=\"$SYSTEM$FILE $SYSTEM_EXT$FILE\"\n  for DES in $DESS; do\n    if [ -f $DES ]; then\n      ui_print \"- Detected\"\n      ui_print \"$DES\"\n      NAME=`basename $FILE`\n      if echo $FILE | grep -q lib64; then\n        rm -f $MODPATH/system/vendor/lib64/$NAME\n      else\n        rm -f $MODPATH/system/vendor/lib/$NAME\n      fi\n      ui_print \" \"\n    fi\n  done\ndone\n}\nfile_check_system() {\nfor FILE in $FILES; do\n  DESS=\"$SYSTEM$FILE $SYSTEM_EXT$FILE\"\n  for DES in $DESS; do\n    if [ -f $DES ]; then\n      ui_print \"- Detected\"\n      ui_print \"$DES\"\n      rm -f $MODPATH/system$FILE\n      ui_print \" \"\n    fi\n  done\ndone\n}\nfile_check_vendor() {\nfor FILE in $FILES; do\n  DESS=\"$VENDOR$FILE $ODM$FILE\"\n  for DES in $DESS; do\n    if [ -f $DES ]; then\n      ui_print \"- Detected\"\n      ui_print \"$DES\"\n      rm -f $MODPATH/system/vendor$FILE\n      ui_print \" \"\n    fi\n  done\ndone\n}\n\n# check\nif [ \"$IS64BIT\" == true ]; then\n  FILES=/lib64/libaudio-resampler.so\n  file_check_system\n  FILES=\"/lib64/libAlacSwDec.so\n         /lib64/libOmxAlacDec.so\n         /lib64/libOmxAlacDecSw.so\"\n  file_check_vendor\nfi\nif [ \"$ABILIST32\" ]; then\n  FILES=/lib/libaudio-resampler.so\n  file_check_system\n  FILES=\"/lib/libAlacSwDec.so\n         /lib/libOmxAlacDec.so\n         /lib/libOmxAlacDecSw.so\n         /lib/libstagefright_soft_somcalacdec.so\"\n  file_check_vendor\nfi\nFILES=/etc/media_codecs_somc_audio.xml\nfile_check_vendor\nif [ $DOLBY == true ]; then\n  if [ \"$IS64BIT\" == true ]; then\n    FILES=/*vndk*/lib64/libsqlite.so\n    file_check_apex_for_vendor\n    FILES=/lib64/vndk-*/libsqlite.so\n    file_check_system_for_vendor\n    FILES=\"/lib64/libsqlite.so\n           /lib64/libstagefrightdolby.so\"\n    file_check_vendor\n  fi\n  if [ \"$ABILIST32\" ]; then\n    FILES=\"/lib/libstagefrightdolby.so\n           /lib/libstagefright_soft_ddpdec.so\n           /lib/libstagefright_soft_ac4dec.so\"\n    file_check_vendor\n  fi\n  FILES=/etc/media_codecs_dolby_audio.xml\n  file_check_vendor\nfi\n\n# function\nrename_file() {\nif [ -f $FILE ]; then\n  ui_print \"- Renaming\"\n  ui_print \"$FILE\"\n  ui_print \"  to\"\n  ui_print \"$MODFILE\"\n  mv -f $FILE $MODFILE\n  ui_print \" \"\nfi\n}\nchange_name() {\nif grep -q $NAME $FILE; then\n  ui_print \"- Changing $NAME to $NAME2 at\"\n  ui_print \"$FILE\"\n  ui_print \"  Please wait...\"\n  sed -i \"s|$NAME|$NAME2|g\" $FILE\n  ui_print \" \"\nfi\n}\npatch_file() {\nif grep -q libvndksupport.so /system/etc/*.txt; then\n  NAME=libhidlbase.so\n  NAME2=libhidldlbs.so\n  if [ \"$IS64BIT\" == true ]; then\n    FILE=$MODPATH/system/lib64/$NAME\n    MODFILE=$MODPATH/system/vendor/lib64/$NAME2\n    rename_file\n  fi\n  if [ \"$ABILIST32\" ]; then\n    FILE=$MODPATH/system/lib/$NAME\n    MODFILE=$MODPATH/system/vendor/lib/$NAME2\n    rename_file\n  fi\n  if [ -f $MODPATH/system/vendor/lib64/$NAME2 ]\\\n  || [ -f $MODPATH/system/vendor/lib/$NAME2 ]; then\n  FILE=\"$MODPATH/system/vendor/lib*/$NAME2\n$MODPATH/system/vendor/lib*/vendor.dolby*.hardware.dms*@*.so\"\n    change_name\n  fi\n  NAME=libutils.so\n  NAME2=libutdlb.so\n  if [ \"$IS64BIT\" == true ]; then\n    FILE=$MODPATH/system/lib64/$NAME\n    MODFILE=$MODPATH/system/vendor/lib64/$NAME2\n    rename_file\n  fi\n  if [ \"$ABILIST32\" ]; then\n    FILE=$MODPATH/system/lib/$NAME\n    MODFILE=$MODPATH/system/vendor/lib/$NAME2\n    rename_file\n  fi\n  if [ -f $MODPATH/system/vendor/lib64/$NAME2 ]\\\n  || [ -f $MODPATH/system/vendor/lib/$NAME2 ]; then\n    FILE=\"$MODPATH/system/vendor/lib*/$NAME2\n$MODPATH/system/vendor/lib*/hw/android.hardware.audio.effect@*.0-impl.so\n$MODPATH/system/vendor/lib*/libhidldlbs.so\n$MODPATH/system/vendor/lib*/libsqlite.so\n$MODPATH/system/vendor/lib*/soundfx/lib*wdap*.so\n$MODPATH/system/vendor/lib*/soundfx/libswvqe*.so\n$MODPATH/system/vendor/lib*/soundfx/libswgamedap*.so\n$MODPATH/system/vendor/lib*/libdapparamstorage*.so\n$MODPATH/system/vendor/lib*/libdlbdsservice*.so\n$MODPATH/system/vendor/bin/hw/vendor.dolby*.hardware.dms*@*-service\n$MODPATH/system/vendor/lib*/vendor.dolby*.hardware.dms*@*.so\n$MODPATH/system/vendor/lib*/vendor.dolby*.hardware.dms*@*-impl.so\n$MODPATH/system/vendor/lib*/libdeccfg*.so\n$MODPATH/system/vendor/lib*/libstagefright_foundation.so\n$MODPATH/system/vendor/lib*/libstagefrightdolby.so\n$MODPATH/system/vendor/lib*/libstagefright_soft_ddpdec*.so\n$MODPATH/system/vendor/lib*/libstagefright_soft_ac4dec*.so\"\n    change_name\n  fi\nfi\nNAME=libstagefright_foundation.so\nNAME2=libstagefright_fdtn_dolby.so\nif [ \"$IS64BIT\" == true ]; then\n  FILE=$MODPATH/system/vendor/lib64/$NAME\n  MODFILE=$MODPATH/system/vendor/lib64/$NAME2\n  rename_file\nfi\nif [ \"$ABILIST32\" ]; then\n  FILE=$MODPATH/system/vendor/lib/$NAME\n  MODFILE=$MODPATH/system/vendor/lib/$NAME2\n  rename_file\nfi\nFILE=\"$MODPATH/system/vendor/lib*/$NAME2\n$MODPATH/system/vendor/lib*/libdlbdsservice*.so\n$MODPATH/system/vendor/lib*/libstagefrightdolby.so\n$MODPATH/system/vendor/lib*/libstagefright_soft_ddpdec*.so\n$MODPATH/system/vendor/lib*/libstagefright_soft_ac4dec*.so\"\nchange_name\nif [ \"`grep_prop dolby.mod $OPTIONALS`\" != 0 ]; then\n  NAME=dax-default.xml\n  NAME2=dap-default.xml\n  FILE=$MODPATH/system/vendor/etc/dolby/$NAME\n  MODFILE=$MODPATH/system/vendor/etc/dolby/$NAME2\n  rename_file\n  FILE=$MODPATH/system/vendor/lib*/libdlbdsservice*.so\n  change_name\n  NAME=dax_sqlite3.db\n  NAME2=dap_sqlite3.db\n  change_name\n  NAME=libswdap.so\n  NAME2=libswdlb.so\n  if [ \"$IS64BIT\" == true ]; then\n    FILE=$MODPATH/system/vendor/lib64/soundfx/$NAME\n    MODFILE=$MODPATH/system/vendor/lib64/soundfx/$NAME2\n    rename_file\n  fi\n  if [ \"$ABILIST32\" ]; then\n    FILE=$MODPATH/system/vendor/lib/soundfx/$NAME\n    MODFILE=$MODPATH/system/vendor/lib/soundfx/$NAME2\n    rename_file\n  fi\n  FILE=\"$MODPATH/system/vendor/lib*/soundfx/$NAME2\n$MODPATH/.aml.sh\"\n  change_name\n  NAME=libdlbdsservice.so\n  NAME2=libdapdsservice.so\n  if [ \"$IS64BIT\" == true ]; then\n    FILE=$MODPATH/system/vendor/lib64/$NAME\n    MODFILE=$MODPATH/system/vendor/lib64/$NAME2\n    rename_file\n  fi\n  FILE=\"$MODPATH/system/vendor/lib*/$NAME2\n$MODPATH/system/vendor/lib*/vendor.dolby*.hardware.dms*@*-impl.so\n$MODPATH/system/vendor/bin/hw/vendor.dolby*.hardware.dms*@*-service\"\n  change_name\n  NAME=libdapparamstorage.so\n  NAME2=libdaxparamstorage.so\n  if [ \"$IS64BIT\" == true ]; then\n    FILE=$MODPATH/system/vendor/lib64/$NAME\n    MODFILE=$MODPATH/system/vendor/lib64/$NAME2\n    rename_file\n  fi\n  if [ \"$ABILIST32\" ]; then\n    FILE=$MODPATH/system/vendor/lib/$NAME\n    MODFILE=$MODPATH/system/vendor/lib/$NAME2\n    rename_file\n  fi\n  FILE=\"$MODPATH/system/vendor/lib*/$NAME2\n$MODPATH/system/vendor/lib*/soundfx/lib*wdlb*.so\n$MODPATH/system/vendor/lib*/libdapdsservice*.so\n$MODPATH/system/vendor/lib*/vendor.dolby*.hardware.dms*@*-impl.so\n$MODPATH/system/vendor/bin/hw/vendor.dolby*.hardware.dms*@*-service\n$MODPATH/system/vendor/lib*/libstagefright_soft_ddpdec*.so\n$MODPATH/system/vendor/lib*/libstagefright_soft_ac4dec*.so\"\n  change_name\n  NAME=vendor.dolby.hardware.dms@1.0.so\n  NAME2=vendor.dlbds.hardware.dms@1.0.so\n  if [ \"$IS64BIT\" == true ]; then\n    FILE=$MODPATH/system/vendor/lib64/$NAME\n    MODFILE=$MODPATH/system/vendor/lib64/$NAME2\n    rename_file\n  fi\n  if [ \"$ABILIST32\" ]; then\n    FILE=$MODPATH/system/vendor/lib/$NAME\n    MODFILE=$MODPATH/system/vendor/lib/$NAME2\n    rename_file\n  fi\n  FILE=\"$MODPATH/system/vendor/lib*/$NAME2\n$MODPATH/system/vendor/lib*/soundfx/lib*wdlb*.so\n$MODPATH/system/vendor/lib*/libdapdsservice*.so\n$MODPATH/system/vendor/lib*/vendor.dolby*.hardware.dms*@*-impl.so\n$MODPATH/system/vendor/bin/hw/vendor.dolby*.hardware.dms*@*-service\n$MODPATH/system/vendor/lib*/libstagefright_soft_ddpdec*.so\n$MODPATH/system/vendor/lib*/libstagefright_soft_ac4dec*.so\"\n  change_name\n  NAME=vendor.dolby.hardware.dms@1.0-impl.so\n  NAME2=vendor.dlbds.hardware.dms@1.0-impl.so\n  if [ \"$IS64BIT\" == true ]; then\n    FILE=$MODPATH/system/vendor/lib64/$NAME\n    MODFILE=$MODPATH/system/vendor/lib64/$NAME2\n    rename_file\n  fi\n  if [ \"$ABILIST32\" ]; then\n    FILE=$MODPATH/system/vendor/lib/$NAME\n    MODFILE=$MODPATH/system/vendor/lib/$NAME2\n    rename_file\n  fi\n  FILE=\"$MODPATH/system/vendor/lib*/$NAME2\n$MODPATH/system/vendor/bin/hw/vendor.dolby*.hardware.dms*@*-service\"\n  change_name\n  sed -i 's|ro.dolby.mod_uuid false|ro.dolby.mod_uuid true|g' $MODPATH/service.sh\n  NAME=$'\\x39\\x53\\x7a\\x04\\xbc\\xaa'\n  NAME2=_ryuki\n  FILE=$MODPATH/system/vendor/lib*/soundfx/libswdlb.so\n  change_name\n  NAME=$'\\x45\\x27\\x99\\x21\\x85\\x39'\n  FILE=$MODPATH/system/vendor/lib*/soundfx/libswdlb.so\n  change_name\n  NAME=$'\\xd5\\x3e\\x26\\xda\\x02\\x53'\n  FILE=$MODPATH/system/vendor/lib*/soundfx/libhwdlb.so\n  change_name\n  NAME=$'\\xef\\x93\\x7f\\x67\\x55\\x87'\n  FILE=$MODPATH/system/vendor/lib*/soundfx/lib*wdlb.so\n  change_name\n  NAME=39537a04bcaa\n  NAME2=5f7279756b69\n  FILE=\"$MODPATH/.aml.sh\n$MODPATH/acdb.conf\"\n  change_name\n  NAME=452799218539\n  change_name\n  NAME=d53e26da0253\n  change_name\nfi\n}\n\n# mod\nif [ $DOLBY == true ]; then\n  patch_file\nfi\n\n# fix sensor\nif [ $DOLBY == true ]\\\n&& [ \"`grep_prop dolby.fix.sensor $OPTIONALS`\" == 1 ]; then\n  ui_print \"- Fixing sensors issue\"\n  ui_print \"  This causes bootloop in some ROMs\"\n  sed -i 's|#x||g' $MODPATH/service.sh\n  ui_print \" \"\nfi\n\n# audio rotation\nFILE=$MODPATH/service.sh\nif [ \"`grep_prop audio.rotation $OPTIONALS`\" == 1 ]; then\n  ui_print \"- Enables ro.audio.monitorRotation=true\"\n  sed -i '1i\\\nresetprop -n ro.audio.monitorRotation true\\\nresetprop -n ro.audio.monitorWindowRotation true' $FILE\n  ui_print \" \"\nfi\n\n# raw\nFILE=$MODPATH/.aml.sh\nif [ \"`grep_prop disable.raw $OPTIONALS`\" == 0 ]; then\n  ui_print \"- Does not disable Ultra Low Latency (Raw) playback\"\n  ui_print \" \"\nelse\n  sed -i 's|#u||g' $FILE\nfi\n\n# vendor_overlay\nDIR=/product/vendor_overlay\nif [ \"`grep_prop fix.vendor_overlay $OPTIONALS`\" == 1 ]\\\n&& [ $DOLBY == true ] && [ -d $DIR ]; then\n  ui_print \"- Fixing $DIR mount...\"\n  cp -rf $DIR/*/* $MODPATH/system/vendor\n  ui_print \" \"\nfi\n\n# run\nMODSYSTEM=/system\n. $MODPATH/copy.sh\n. $MODPATH/.aml.sh\n\n# unmount\nunmount_mirror\n\n# note\nui_print \"- If Sound Enhancement FX doesn't work, then type:\"\nui_print \" \"\nui_print \"  su\"\nui_print \"  sefx\"\nui_print \" \"\nui_print \"  at Terminal/Termux app while playing music\"\nui_print \" \"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "function.sh",
    "content": "# function\nremove_cache() {\nFILES=`find $MODPATH -type f -name *.apk | sed 's|.apk||g'`\nAPPS=`for FILE in $FILES; do basename $FILE; done`\nfor APP in $APPS; do\n  rm -f `find /data/system/package_cache\\\n   /data/dalvik-cache /data/resource-cache\\\n   -type f -name *$APP*`\ndone\n}\nmount_partitions_in_recovery() {\nif [ \"$BOOTMODE\" != true ]; then\n  BLOCK=/dev/block/bootdevice/by-name\n  BLOCK2=/dev/block/mapper\n  ui_print \"- Recommended to mount all partitions first\"\n  ui_print \"  before installing this module\"\n  ui_print \" \"\n  DIR=/vendor\n  if [ -d $DIR ] && ! is_mounted $DIR; then\n    mount -o rw -t auto $BLOCK$DIR$SLOT $DIR\\\n    || mount -o rw -t auto $BLOCK2$DIR$SLOT $DIR\\\n    || mount -o rw -t auto $BLOCK/cust $DIR\\\n    || mount -o rw -t auto $BLOCK2/cust $DIR\n  fi\n  DIR=/product\n  if [ -d $DIR ] && ! is_mounted $DIR; then\n    mount -o rw -t auto $BLOCK$DIR$SLOT $DIR\\\n    || mount -o rw -t auto $BLOCK2$DIR$SLOT $DIR\n  fi\n  DIR=/system_ext\n  if [ -d $DIR ] && ! is_mounted $DIR; then\n    mount -o rw -t auto $BLOCK$DIR$SLOT $DIR\\\n    || mount -o rw -t auto $BLOCK2$DIR$SLOT $DIR\n  fi\n  DIR=/odm\n  if [ -d $DIR ] && ! is_mounted $DIR; then\n    mount -o rw -t auto $BLOCK$DIR$SLOT $DIR\\\n    || mount -o rw -t auto $BLOCK2$DIR$SLOT $DIR\n  fi\n  DIR=/my_product\n  if [ -d $DIR ] && ! is_mounted $DIR; then\n    mount -o rw -t auto $BLOCK$DIR $DIR\\\n    || mount -o rw -t auto $BLOCK2$DIR $DIR\n  fi\n  DIR=/data\n  if [ -d $DIR ] && ! is_mounted $DIR; then\n    mount -o rw -t auto $BLOCK/userdata $DIR\\\n    || mount -o rw -t auto $BLOCK2/userdata $DIR\n  fi\n  DIR=/cache\n  if [ -d $DIR ] && ! is_mounted $DIR; then\n    mount -o rw -t auto $BLOCK$DIR $DIR\\\n    || mount -o rw -t auto $BLOCK2$DIR $DIR\n  fi\n  DIR=/persist\n  if [ -d $DIR ] && ! is_mounted $DIR; then\n    mount -o rw -t auto $BLOCK$DIR $DIR\\\n    || mount -o rw -t auto $BLOCK2$DIR $DIR\n  fi\n  DIR=/metadata\n  if [ -d $DIR ] && ! is_mounted $DIR; then\n    mount -o rw -t auto $BLOCK$DIR $DIR\\\n    || mount -o rw -t auto $BLOCK2$DIR $DIR\n  fi\n  DIR=/cust\n  if [ -d $DIR ] && ! is_mounted $DIR; then\n    mount -o rw -t auto $BLOCK$DIR $DIR\\\n    || mount -o rw -t auto $BLOCK2$DIR $DIR\n  fi\nfi\n}\nget_device() {\nDEV=\"`cat /proc/self/mountinfo | awk '{ if ( $5 == \"'$1'\" ) print $3 }' | head -1 | sed 's/:/ /g'`\"\n}\nmount_mirror() {\nRAN=\"`head -c6 /dev/urandom | base64 | tr -dc 'a-zA-Z0-9'`\"\nwhile [ -e /dev/$RAN ]; do\n  RAN=\"`head -c6 /dev/urandom | base64 | tr -dc 'a-zA-Z0-9'`\"\ndone\nmknod /dev/$RAN b `get_device \"$1\"; echo $DEV`\nif mount -t ext4 -o ro /dev/$RAN \"$2\"\\\n|| mount -t erofs -o ro /dev/$RAN \"$2\"\\\n|| mount -t f2fs -o ro /dev/$RAN \"$2\"\\\n|| mount -t auto -o ro /dev/$RAN \"$2\"; then\n  blockdev --setrw /dev/$RAN\n  rm -f /dev/$RAN\n  return 0\nfi\nrm -f /dev/$RAN\nreturn 1\n}\nunmount_mirror() {\nif [ \"$BOOTMODE\" == true ]\\\n&& [ \"$HASMIRROR\" == false ]; then\n  FOLDS=\"$MIRROR/* $MIRROR\"\n  for FOLD in $FOLDS; do\n    umount $FOLD\n  done\n  rm -rf $MIRROR/*\nfi\n}\nremount_partitions() {\nPARS=\"/ /system /vendor /product /system_ext /odm /my_product\"\nfor PAR in $PARS; do\n  mount -o ro,remount $PAR\ndone\n}\nmount_system_to_mirror() {\nDIR=/system\nif [ ! -d $MIRROR$DIR ]; then\n  HASMIRROR=false\n  remount_partitions\n  unmount_mirror\n  ui_print \"- Mounting $MIRROR$DIR...\"\n  if [ \"$SYSTEM_ROOT\" == true ]\\\n  || [ \"$SYSTEM_AS_ROOT\" == true ]; then\n    mkdir -p $MIRROR/system_root\n    if mount_mirror / $MIRROR/system_root; then\n      rm -rf $MIRROR$DIR\n      ln -sf $MIRROR/system_root$DIR $MIRROR\n    else\n      ui_print \"  ! Failed\"\n      ui_print \"    Try to reboot device first\"\n      rm -rf $MIRROR/system_root\n      abort\n    fi\n  else\n    mkdir -p $MIRROR$DIR\n    if ! mount_mirror $DIR $MIRROR$DIR; then\n      ui_print \"  ! Failed\"\n      ui_print \"    Try to reboot device first\"\n      rm -rf $MIRROR$DIR\n      abort\n    fi\n  fi\n  ui_print \" \"\nelse\n  HASMIRROR=true\nfi\n}\nmount_vendor_to_mirror() {\nDIR=/vendor\nif [ -d $DIR ] && [ ! -d $MIRROR$DIR ]; then\n  ui_print \"- Mounting $MIRROR$DIR...\"\n  mkdir -p $MIRROR$DIR\n  if ! mount_mirror $DIR $MIRROR$DIR; then\n    ui_print \"  Creating symlink instead\"\n    rm -rf $MIRROR$DIR\n    if [ -d $MIRROR/system$DIR ]; then\n      ln -sf $MIRROR/system$DIR $MIRROR\n    fi\n  fi\n  ui_print \" \"\nfi\n}\nmount_product_to_mirror() {\nDIR=/product\nif [ -d $DIR ] && [ ! -d $MIRROR$DIR ]; then\n  ui_print \"- Mounting $MIRROR$DIR...\"\n  mkdir -p $MIRROR$DIR\n  if ! mount_mirror $DIR $MIRROR$DIR; then\n    ui_print \"  Creating symlink instead\"\n    rm -rf $MIRROR$DIR\n    if [ -d $MIRROR/system$DIR ]; then\n      ln -sf $MIRROR/system$DIR $MIRROR\n    fi\n  fi\n  ui_print \" \"\nfi\n}\nmount_system_ext_to_mirror() {\nDIR=/system_ext\nif [ -d $DIR ] && [ ! -d $MIRROR$DIR ]; then\n  ui_print \"- Mounting $MIRROR$DIR...\"\n  mkdir -p $MIRROR$DIR\n  if ! mount_mirror $DIR $MIRROR$DIR; then\n    ui_print \"  Creating symlink instead\"\n    rm -rf $MIRROR$DIR\n    if [ -d $MIRROR/system$DIR ]; then\n      ln -sf $MIRROR/system$DIR $MIRROR\n    fi\n  fi\n  ui_print \" \"\nfi\n}\nmount_odm_to_mirror() {\nDIR=/odm\nif [ -d $DIR ] && [ ! -d $MIRROR$DIR ]; then\n  ui_print \"- Mounting $MIRROR$DIR...\"\n  mkdir -p $MIRROR$DIR\n  if ! mount_mirror $DIR $MIRROR$DIR; then\n    ui_print \"  Creating symlink instead\"\n    rm -rf $MIRROR$DIR\n    if [ -d $MIRROR/system_root$DIR ]; then\n      ln -sf $MIRROR/system_root$DIR $MIRROR\n    elif [ -d $MIRROR/vendor$DIR ]; then\n      ln -sf $MIRROR/vendor$DIR $MIRROR\n    elif [ -d $MIRROR/system/vendor$DIR ]; then\n      ln -sf $MIRROR/system/vendor$DIR $MIRROR\n    fi\n  fi\n  ui_print \" \"\nfi\n}\nmount_my_product_to_mirror() {\nDIR=/my_product\nif [ -d $DIR ] && [ ! -d $MIRROR$DIR ]; then\n  ui_print \"- Mounting $MIRROR$DIR...\"\n  mkdir -p $MIRROR$DIR\n  if ! mount_mirror $DIR $MIRROR$DIR; then\n    ui_print \"  Creating symlink instead\"\n    rm -rf $MIRROR$DIR\n    if [ -d $MIRROR/system_root$DIR ]; then\n      ln -sf $MIRROR/system_root$DIR $MIRROR\n    fi\n  fi\n  ui_print \" \"\nfi\n}\nmount_partitions_to_mirror() {\nmount_system_to_mirror\nmount_vendor_to_mirror\nmount_product_to_mirror\nmount_system_ext_to_mirror\nmount_odm_to_mirror\nmount_my_product_to_mirror\n}\nmagisk_setup() {\nMAGISKTMP=`magisk --path`\nif [ \"$BOOTMODE\" == true ]; then\n  if [ \"$MAGISKTMP\" ]; then\n    mount -o rw,remount $MAGISKTMP\n    INTERNALDIR=$MAGISKTMP/.magisk\n    MIRROR=$INTERNALDIR/mirror\n  else\n    INTERNALDIR=/mnt\n    mount -o rw,remount $INTERNALDIR\n    MIRROR=$INTERNALDIR/mirror\n  fi\n  mount_partitions_to_mirror\nfi\n}\nremove_sepolicy_rule() {\nrm -rf /metadata/magisk/\"$MODID\"\\\n /mnt/vendor/persist/magisk/\"$MODID\"\\\n /persist/magisk/\"$MODID\"\\\n /data/unencrypted/magisk/\"$MODID\"\\\n /cache/magisk/\"$MODID\"\\\n /cust/magisk/\"$MODID\"\n}\nset_read_write() {\nfor NAME in $NAMES; do\n  if [ -e $DIR$NAME ]; then\n    blockdev --setrw $DIR$NAME\n  fi\ndone\n}\nremount_rw() {\nDIR=/dev/block/bootdevice/by-name\nNAMES=\"/vendor$SLOT /cust /system$SLOT /system_ext$SLOT\"\nset_read_write\nDIR=/dev/block/mapper\nset_read_write\nif [ \"$BOOTMODE\" == true ]; then\n  DIR=$INTERNALDIR/block\n  NAMES=\"/vendor /system_root /system /system_ext\"\n  set_read_write\n  mount -o rw,remount $MIRROR/system\n  mount -o rw,remount $MIRROR/system_root\n  mount -o rw,remount $MIRROR/system_ext\n  mount -o rw,remount $MIRROR/vendor\n  mount -o rw,remount /\nelse\n  mount -o rw,remount /system_root\nfi\nmount -o rw,remount /system\nmount -o rw,remount /system_ext\nmount -o rw,remount /vendor\n}\nremount_ro() {\nif [ \"$BOOTMODE\" == true ]; then\n  mount -o ro,remount $MIRROR/system\n  mount -o ro,remount $MIRROR/system_root\n  mount -o ro,remount $MIRROR/system_ext\n  mount -o ro,remount $MIRROR/vendor\n  mount -o ro,remount /\n  mount -o ro,remount /system\n  mount -o ro,remount /system_ext\n  mount -o ro,remount /vendor\nfi\n}\n\n\n"
  },
  {
    "path": "module.prop",
    "content": "id=SoundEnhancement\nname=Sound Enhancement Sony Xperia 10\nversion=v1.1.9\nversionCode=119\nauthor=Rei Ryuki the Fixer\ndescription=Equalizers global type sound effect ported from Sony Xperia 10 (I4113) for any armeabi-v7a or arm64-v8a architecture, Android 10 (SDK 29) and up.\n\n\n"
  },
  {
    "path": "package-dolby.txt",
    "content": "com.sonyericsson.soundenhancement\ncom.sonymobile.audioutil\ncom.reiryuki.soundenhancementlauncher\ncom.dolby.daxappui\ncom.dolby.daxservice\n"
  },
  {
    "path": "package.txt",
    "content": "com.sonyericsson.soundenhancement\ncom.sonymobile.audioutil\ncom.reiryuki.soundenhancementlauncher\n"
  },
  {
    "path": "post-fs-data.sh",
    "content": "mount -o rw,remount /data\nMODPATH=${0%/*}\n\n# log\nexec 2>$MODPATH/debug-pfsd.log\nset -x\n\n# var\nABI=`getprop ro.product.cpu.abi`\nif [ ! -d $MODPATH/vendor ]\\\n|| [ -L $MODPATH/vendor ]; then\n  MODSYSTEM=/system\nfi\n\n# function\npermissive() {\nif [ \"`toybox cat $FILE`\" = 1 ]; then\n  chmod 640 $FILE\n  chmod 440 $FILE2\n  echo 0 > $FILE\nfi\n}\nmagisk_permissive() {\nif [ \"`toybox cat $FILE`\" = 1 ]; then\n  if [ -x \"`command -v magiskpolicy`\" ]; then\n\tmagiskpolicy --live \"permissive *\"\n  else\n\t$MODPATH/$ABI/libmagiskpolicy.so --live \"permissive *\"\n  fi\nfi\n}\nsepolicy_sh() {\nif [ -f $FILE ]; then\n  if [ -x \"`command -v magiskpolicy`\" ]; then\n    magiskpolicy --live --apply $FILE 2>/dev/null\n  else\n    $MODPATH/$ABI/libmagiskpolicy.so --live --apply $FILE 2>/dev/null\n  fi\nfi\n}\n\n# selinux\nFILE=/sys/fs/selinux/enforce\nFILE2=/sys/fs/selinux/policy\n#1permissive\nchmod 0755 $MODPATH/*/libmagiskpolicy.so\n#2magisk_permissive\nFILE=$MODPATH/sepolicy.rule\n#ksepolicy_sh\nFILE=$MODPATH/sepolicy.pfsd\nsepolicy_sh\n\n# run\n. $MODPATH/copy.sh\n\n# conflict\nAML=/data/adb/modules/aml\nACDB=/data/adb/modules/acdb\nif [ -d $ACDB ] && [ ! -f $ACDB/disable ]; then\n  if [ ! -d $AML ] || [ -f $AML/disable ]; then\n    rm -f `find $MODPATH/system/etc $MODPATH/vendor/etc\\\n     $MODPATH/system/vendor/etc -maxdepth 1 -type f -name\\\n     *audio*effects*.conf -o -name *audio*effects*.xml`\n  fi\nfi\n\n# run\n. $MODPATH/.aml.sh\n\n# directory\nDIR=/data/mediaserver\nmkdir -p $DIR\n\n# function\ndolby_data() {\nDIR=/data/vendor/dolby\nmkdir -p $DIR\nchmod 0770 $DIR\nchown 1013.1013 $DIR\nchcon u:object_r:vendor_data_file:s0 $DIR\n}\n\n# directory\n#ddolby_data\n\n# permission\nchmod 0751 $MODPATH/system/bin\nFILES=`find $MODPATH/system/bin -type f`\nfor FILE in $FILES; do\n  chmod 0755 $FILE\ndone\nchown -R 0.2000 $MODPATH/system/bin\nDIRS=`find $MODPATH/vendor\\\n           $MODPATH/system/vendor -type d`\nfor DIR in $DIRS; do\n  chown 0.2000 $DIR\ndone\nchcon -R u:object_r:system_lib_file:s0 $MODPATH/system/lib*\nchcon -R u:object_r:vendor_configs_file:s0 $MODPATH/system/odm/etc\nchmod 0751 $MODPATH$MODSYSTEM/vendor/bin\nchmod 0751 $MODPATH$MODSYSTEM/vendor/bin/hw\nchmod 0755 $MODPATH$MODSYSTEM/vendor/odm/bin\nchmod 0755 $MODPATH$MODSYSTEM/vendor/odm/bin/hw\nFILES=`find $MODPATH$MODSYSTEM/vendor/bin\\\n            $MODPATH$MODSYSTEM/vendor/odm/bin -type f`\nfor FILE in $FILES; do\n  chmod 0755 $FILE\n  chown 0.2000 $FILE\ndone\nFILES=`find $MODPATH$MODSYSTEM/vendor/lib* -type f`\nfor FILE in $FILES; do\n  chmod 0644 $FILE\n  chown 0.0 $FILE\ndone\nchcon -R u:object_r:vendor_file:s0 $MODPATH$MODSYSTEM/vendor\nchcon -R u:object_r:vendor_configs_file:s0 $MODPATH$MODSYSTEM/vendor/etc\nchcon -R u:object_r:vendor_configs_file:s0 $MODPATH$MODSYSTEM/vendor/odm/etc\nchcon u:object_r:vendor_hal_file:s0 $MODPATH$MODSYSTEM/vendor/lib*/hw\n#chcon u:object_r:hal_dms_default_exec:s0 $MODPATH$MODSYSTEM/vendor/bin/hw/vendor.dolby*.hardware.dms*@*-service\n#chcon u:object_r:hal_dms_default_exec:s0 $MODPATH$MODSYSTEM/vendor/odm/bin/hw/vendor.dolby*.hardware.dms*@*-service\n\n# function\nmount_odm() {\nDIR=$MODPATH/system/odm\nFILES=`find $DIR -type f -name $AUD`\nfor FILE in $FILES; do\n  DES=/odm`echo $FILE | sed \"s|$DIR||g\"`\n  if [ -f $DES ]; then\n    umount $DES\n    mount -o bind $FILE $DES\n  fi\ndone\n}\nmount_my_product() {\nDIR=$MODPATH/system/my_product\nFILES=`find $DIR -type f -name $AUD`\nfor FILE in $FILES; do\n  DES=/my_product`echo $FILE | sed \"s|$DIR||g\"`\n  if [ -f $DES ]; then\n    umount $DES\n    mount -o bind $FILE $DES\n  fi\ndone\n}\n\n# mount\nif [ -d /odm ] && [ \"`realpath /odm/etc`\" == /odm/etc ]\\\n&& ! grep /odm /data/adb/magisk/magisk\\\n&& ! grep /odm /data/adb/magisk/magisk64\\\n&& ! grep /odm /data/adb/magisk/magisk32; then\n  mount_odm\nfi\nif [ -d /my_product ]\\\n&& ! grep /my_product /data/adb/magisk/magisk\\\n&& ! grep /my_product /data/adb/magisk/magisk64\\\n&& ! grep /my_product /data/adb/magisk/magisk32; then\n  mount_my_product\nfi\n\n# function\ndolby_manifest() {\nM=/system/etc/vintf/manifest.xml\nrm -f $MODPATH$M\nFILE=\"/*/etc/vintf/manifest.xml /*/*/etc/vintf/manifest.xml\n      /*/etc/vintf/manifest/*.xml /*/*/etc/vintf/manifest/*.xml\"\nif ! grep -A2 vendor.dolby.hardware.dms $FILE | grep 1.0; then\n  cp -af $M $MODPATH$M\n  if [ -f $MODPATH$M ]; then\n    sed -i '/<manifest/a\\\n    <hal format=\"hidl\">\\\n        <name>vendor.dolby.hardware.dms</name>\\\n        <transport>hwbinder</transport>\\\n        <fqname>@1.0::IDms/default</fqname>\\\n    </hal>' $MODPATH$M\n    umount $M\n    mount -o bind $MODPATH$M $M\n    killall hwservicemanager\n  fi\n  sed -i 's|description=Equalizer|description=BUGGY MODE. Equalizer|g' $MODPATH/module.prop\nelse\n  sed -i 's|BUGGY MODE. ||g' $MODPATH/module.prop\nfi\n}\n\n# manifest\n#ddolby_manifest\n\n# function\nmount_bind_file() {\nfor FILE in $FILES; do\n  umount $FILE\n  mount -o bind $MODFILE $FILE\ndone\n}\nmount_bind_to_apex() {\nfor NAME in $NAMES; do\n  MODFILE=$MODPATH/system/lib64/$NAME\n  if [ -f $MODFILE ]; then\n    FILES=`find /apex /system/apex -path *lib64/* -type f -name $NAME`\n    mount_bind_file\n  fi\n  MODFILE=$MODPATH/system/lib/$NAME\n  if [ -f $MODFILE ]; then\n    FILES=`find /apex /system/apex -path *lib/* -type f -name $NAME`\n    mount_bind_file\n  fi\ndone\n}\n\n# mount\nNAMES=\"libhidlbase.so libutils.so\"\nmount_bind_to_apex\n\n# cleaning\nFILE=$MODPATH/cleaner.sh\nif [ -f $FILE ]; then\n  . $FILE\n  mv -f $FILE $FILE.txt\nfi\n\n\n\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "sepolicy.rule",
    "content": "## Dolby\n\n# debug\nallow system_server system_file file write\n\n# context\ncreate { system_lib_file vendor_file vendor_configs_file vendor_data_file vendor_media_data_file hal_dms_default_exec }\nallow { system_file system_lib_file vendor_file vendor_configs_file vendor_data_file vendor_media_data_file hal_dms_default_exec } labeledfs filesystem associate\nallow init { system_file system_lib_file vendor_file vendor_configs_file vendor_data_file vendor_media_data_file } { dir file } relabelfrom\nallow init hal_dms_default_exec file relabelfrom\n\n# hwservice_manager\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app hal_audio_default mtk_hal_audio audioserver } { default_android_hwservice hal_dms_hwservice dms_hwservice } hwservice_manager find\n\n# service_manager\nallow daxservice_app { permission_checker_service game_service netstats_service content_capture_service } service_manager find\n\n# binder\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } hal_dms_default binder call\n\n# file\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } { hal_dms_default_exec vendor_displayfeature_prop } file getattr\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } { bluetooth_prop vendor_displayfeature_prop qemu_hw_prop } file map\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } { vendor_default_prop vendor_audio_prop debug_mtk_gpud_prop audio_config_prop } file { read open getattr map }\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } qemu_hw_prop file { read open getattr }\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } { vendor_displayfeature_prop mcd_data_file sysfs_migt migt_file } file { read open }\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } proc_mi_log file write\nallow { hal_audio_default mtk_hal_audio audioserver } vendor_dolby_loglevel_prop file { read open getattr }\nallow zygote { device unlabeled } file write\nallow zygote zygote_tmpfs file { create open }\nallow init system_file file mounton\nallow daxservice_app default_prop file read\n\n# chr_file\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } device chr_file { read write open getattr ioctl }\n\n# dir\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } { migt_file mcd_data_file } dir search\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } system_file dir write\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } data_log_file dir { search getattr }\n\n# unix_stream_socket\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } zygote unix_stream_socket getopt\n\n# capability\nallow system_app system_app capability { dac_read_search dac_override sys_resource }\nallow platform_app platform_app capability { dac_read_search dac_override sys_resource }\nallow priv_app priv_app capability { dac_read_search dac_override sys_resource }\nallow untrusted_app_29 untrusted_app_29 capability { dac_read_search dac_override sys_resource }\nallow untrusted_app_27 untrusted_app_27 capability { dac_read_search dac_override sys_resource }\nallow untrusted_app untrusted_app capability { dac_read_search dac_override sys_resource }\n\n# additional\nallow { hal_audio_default mtk_hal_audio audioserver } { system_suspend_hwservice default_android_hwservice } hwservice_manager find\nallow { hal_audio_default mtk_hal_audio audioserver } default_android_hwservice hwservice_manager add\nallow { hal_audio_default mtk_hal_audio audioserver } hal_system_suspend_service service_manager find\nallow { hal_audio_default mtk_hal_audio audioserver } { default_prop boottime_prop audio_prop radio_prop vendor_pd_locater_dbg_prop } file { read open getattr map }\nallow { hal_audio_default mtk_hal_audio audioserver } { mnt_vendor_file system_prop vendor_default_prop } file { read open getattr }\nallow { hal_audio_default mtk_hal_audio audioserver } sysfs_wake_lock file { write open }\nallow { hal_audio_default mtk_hal_audio audioserver } { sysfs sysfs_boot_mode bluetooth_prop } file { read open }\nallow { hal_audio_default mtk_hal_audio audioserver } bluetooth_prop file getattr\nallow { hal_audio_default mtk_hal_audio audioserver } system_prop file map\nallow { hal_audio_default mtk_hal_audio audioserver } boot_status_prop file read\nallow { hal_audio_default mtk_hal_audio audioserver } { sysfs_net debugfs_ion } dir search\nallow { hal_audio_default mtk_hal_audio audioserver } { sysfs_net sysfs } dir { read open }\nallow { hal_audio_default mtk_hal_audio audioserver } logd_socket sock_file write\nallow { hal_audio_default mtk_hal_audio audioserver } logd unix_stream_socket connectto\nallow { hal_audio_default mtk_hal_audio audioserver } vendor_diag-router unix_stream_socket connectto\nallow { hal_audio_default mtk_hal_audio audioserver } { diag_device vendor_diag_device } chr_file { read write open ioctl getattr }\nallow { hal_audio_default mtk_hal_audio audioserver } device chr_file { read write }\nallow { hal_audio_default mtk_hal_audio audioserver } system_suspend binder call\nallow { hal_audio_default mtk_hal_audio audioserver } { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } fifo_file write\nallow hal_audio_default hal_audio_default capability2 block_suspend\nallow mtk_hal_audio mtk_hal_audio capability2 block_suspend\nallow audioserver audioserver capability2 block_suspend\nallow hal_audio_default hal_audio_default capability { sys_nice dac_override sys_admin dac_read_search }\nallow mtk_hal_audio mtk_hal_audio capability { sys_nice dac_override sys_admin dac_read_search }\nallow audioserver audioserver capability { sys_nice dac_override sys_admin dac_read_search }\nallow hal_audio_default hal_audio_default tcp_socket create\nallow mtk_hal_audio mtk_hal_audio tcp_socket create\nallow audioserver audioserver tcp_socket create\n\n\n## Sound Enhancement\n\n# context\ncreate audio_hweffect_device\nallow audio_hweffect_device tmpfs filesystem associate\nallow init audio_hweffect_device chr_file relabelfrom\n\n# service_manager\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } default_android_service service_manager find\n\n# chr_file\nallow { hal_audio_default mtk_hal_audio audioserver } audio_hweffect_device chr_file { read write }\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } migt_dev chr_file { read write }\n\n\n## Extended Audio Service\n\n# dir\nallow { system_app priv_app platform_app untrusted_app_29 untrusted_app_27 untrusted_app } unlabeled dir search\n\n\n\n\n\n\n\n"
  },
  {
    "path": "service.sh",
    "content": "MODPATH=${0%/*}\n\n# log\nLOGFILE=$MODPATH/debug.log\nexec 2>$LOGFILE\nset -x\n\n# var\nAPI=`getprop ro.build.version.sdk`\nif [ ! -d $MODPATH/vendor ]\\\n|| [ -L $MODPATH/vendor ]; then\n  MODSYSTEM=/system\nfi\n\n# function\ndolby_prop() {\nresetprop -n ro.odm.build.SomcCntrl.manufacture Sony\nresetprop -n ro.odm.build.SomcCntrl.Brand Sony\nresetprop -n ro.odm.build.SomcCntrl.Model Pdx203\nresetprop -n ro.odm.build.SomcCntrl.device pdx203\nresetprop -n ro.product.manufacturer Sony\nresetprop -n ro.dolby.mod_uuid false\nresetprop -n ro.dolby.music_stream false\nresetprop -n vendor.audio.dolby.ds2.enabled false\nresetprop -n vendor.audio.dolby.ds2.hardbypass false\n#resetprop -p --delete persist.vendor.dolby.loglevel\n#resetprop -n persist.vendor.dolby.loglevel 0\n#resetprop -n vendor.dolby.dap.param.tee false\n#resetprop -n vendor.dolby.mi.metadata.log false\n}\n\n# property\nresetprop -n ro.audio.ignore_effects false\nresetprop -n ro.sony.global.effect true\nresetprop -n ro.semc.product.model I4113\nresetprop -n ro.semc.ms_type_id PM-1181-BV\nresetprop -n ro.semc.version.fs GENERIC\nresetprop -n ro.semc.product.name \"Xperia 10\"\nresetprop -n ro.semc.product.device I41\n#resetprop -n ro.boot.hardware.sku I4113\nresetprop -n audio.sony.effect.use.proxy true\nresetprop -n vendor.audio.sony.effect.use.proxy true\nresetprop -n vendor.audio.sony.effect.custom.sp_bundle 0x122\nresetprop -n vendor.audio.sony.effect.custom.caplus_hs 0x298\nresetprop -n vendor.audio.sony.effect.custom.caplus_sp 0x2B8\n#resetprop -n vendor.audio.sony.effect.wait_ef_off_ms 500\n#resetprop -n vendor.audio.sony.effect.wait_conv_on_ms 500\n#resetprop -n vendor.audio.sony.effect.cpu_min_freq_little 600\n#resetprop -n vendor.audio.sony.effect.cpu_min_freq_big 600\nresetprop -n ro.somc.dseehx.supported true\nresetprop -p --delete persist.sony.effect.ahc\nresetprop -n persist.sony.effect.ahc true\nresetprop -p --delete persist.sony.mono_speaker\nresetprop -n persist.sony.mono_speaker false\nresetprop -p --delete persist.sony.effect.dolby_atmos\nresetprop -n persist.sony.effect.dolby_atmos false\nresetprop -p --delete persist.sony.enable.dolby_auto_mode\nresetprop -n persist.sony.enable.dolby_auto_mode true\nresetprop -p --delete persist.sony.effect.clear_audio_plus\nresetprop -n persist.sony.effect.clear_audio_plus true\nresetprop -n vendor.audio.use.sw.alac.decoder true\n#ddolby_prop\n\n# special file\nFILE=/dev/sony_hweffect_params\nFILE2=/dev/msm_hweffects\nif [ ! -e $FILE ]; then\n  if [ -e $FILE2 ]; then\n    MM=`stat -c \"%t %T\" $FILE2 | { read major minor; printf \"%d %d\\n\" 0x$major 0x$minor; }`\n  fi\n  if [ \"$MM\" ]; then\n    mknod $FILE c $MM\n    chmod 0660 $FILE\n    chown 1000.1005 $FILE\n#    chcon u:object_r:audio_hweffect_device:s0 $FILE\n  fi\nfi\n\n# restart\nif [ \"$API\" -ge 24 ]; then\n  SERVER=audioserver\nelse\n  SERVER=mediaserver\nfi\nkillall $SERVER\\\n android.hardware.audio@4.0-service-mediatek\\\n android.hardware.audio.service\n\n# unused\n#NAMES=vendor.semc.system.idd-1-0\n#SERVICES=\"idds `realpath /vendor`/bin/idd-logreader\n#          `realpath /vendor`/bin/hw/vendor.semc.system.idd@1.0-service\"\n\n# function\ndolby_service() {\n# stop\nNAMES=\"dms-hal-1-0 dms-hal-2-0\"\nfor NAME in $NAMES; do\n  if [ \"`getprop init.svc.$NAME`\" == running ]\\\n  || [ \"`getprop init.svc.$NAME`\" == restarting ]; then\n    stop $NAME\n  fi\ndone\n# mount\nDIR=/odm/bin/hw\nFILES=$DIR/vendor.dolby.hardware.dms@2.0-service\nif [ \"`realpath $DIR`\" == $DIR ]; then\n  for FILE in $FILES; do\n    [ -f $FILE ] && mount -o bind $MODPATH$MODSYSTEM/vendor$FILE $FILE\n  done\nfi\n# permission\nchmod 0755 $MODPATH$MODSYSTEM/vendor/bin/hw/*\nchown 0.2000 $MODPATH$MODSYSTEM/vendor/bin/hw/*\n# run\nSERVICES=`realpath /vendor`/bin/hw/vendor.dolby.hardware.dms@1.0-service\nfor SERVICE in $SERVICES; do\n  killall $SERVICE\n  $SERVICE &\n  PID=`pidof $SERVICE`\ndone\n# restart\nkillall vendor.qti.hardware.vibrator.service\\\n vendor.qti.hardware.vibrator.service.oneplus9\\\n vendor.qti.hardware.vibrator.service.oplus\\\n android.hardware.camera.provider@2.4-service_64\\\n vendor.mediatek.hardware.mtkpower@1.0-service\\\n android.hardware.usb@1.0-service\\\n android.hardware.usb@1.0-service.basic\\\n android.hardware.light-service.mt6768\\\n android.hardware.lights-service.xiaomi_mithorium\\\n vendor.samsung.hardware.light-service\\\n vendor.qti.hardware.lights.service\\\n android.hardware.lights-service.qti\nif grep 'BUGGY MODE' $MODPATH/module.prop; then\n  killall vendor.qti.hardware.display.allocator-service\\\n   vendor.qti.hardware.display.composer-service\\\n   camerahalserver qcrilNrd mtkfusionrild\nfi\n#xkillall android.hardware.sensors@1.0-service\\\n#x android.hardware.sensors@2.0-service\\\n#x android.hardware.sensors@2.0-service-mediatek\\\n#x android.hardware.sensors@2.0-service.multihal\\\n#x android.hardware.sensors@2.0-service.multihal-mediatek\n}\n\n# dolby\n#ddolby_service\n\n# wait\nsleep 20\n\n# aml fix\nAML=/data/adb/modules/aml\nDIR=$AML$MODSYSTEM/vendor/odm/etc\nif [ -d $DIR ] && [ ! -f $AML/disable ]; then\n  chcon -R u:object_r:vendor_configs_file:s0 $DIR\nfi\nAUD=`grep AUD= $MODPATH/copy.sh | sed -e 's|AUD=||g' -e 's|\"||g'`\nDIR=$AML$MODSYSTEM/vendor\nFILES=`find $DIR -type f -name $AUD`\nif [ -d $AML ] && [ ! -f $AML/disable ]\\\n&& find $DIR -type f -name $AUD; then\n  if ! grep '/odm' $AML/post-fs-data.sh && [ -d /odm ]\\\n  && [ \"`realpath /odm/etc`\" == /odm/etc ]; then\n    for FILE in $FILES; do\n      DES=/odm`echo $FILE | sed \"s|$DIR||g\"`\n      if [ -f $DES ]; then\n        umount $DES\n        mount -o bind $FILE $DES\n      fi\n    done\n  fi\n  if ! grep '/my_product' $AML/post-fs-data.sh\\\n  && [ -d /my_product ]; then\n    for FILE in $FILES; do\n      DES=/my_product`echo $FILE | sed \"s|$DIR||g\"`\n      if [ -f $DES ]; then\n        umount $DES\n        mount -o bind $FILE $DES\n      fi\n    done\n  fi\nfi\n\n# wait\nuntil [ \"`getprop sys.boot_completed`\" == 1 ]; do\n  sleep 10\ndone\n\n# list\nPKGS=`cat $MODPATH/package.txt`\n#dPKGS=`cat $MODPATH/package-dolby.txt`\nfor PKG in $PKGS; do\n  magisk --denylist rm $PKG 2>/dev/null\n  magisk --sulist add $PKG 2>/dev/null\ndone\nif magisk magiskhide sulist; then\n  for PKG in $PKGS; do\n    magisk magiskhide add $PKG\n  done\nelse\n  for PKG in $PKGS; do\n    magisk magiskhide rm $PKG\n  done\nfi\n\n# settings\nsettings put global 5pole_accessory_detect 2\nsettings put global dnc_num_modes 3\nsettings put global dnc_mode_name_0 Bus/Train\nsettings put global dnc_mode_name_1 Airplane\nsettings put global dnc_mode_name_2 Office\n\n# grant\nPKG=com.sonyericsson.soundenhancement\nif appops get $PKG > /dev/null 2>&1; then\n  pm grant --all-permissions $PKG\n  appops set $PKG SYSTEM_ALERT_WINDOW allow\n  appops set $PKG TAKE_AUDIO_FOCUS allow\n  if [ \"$API\" -ge 30 ]; then\n    appops set $PKG AUTO_REVOKE_PERMISSIONS_IF_UNUSED ignore\n  fi\n  if [ \"$API\" -ge 33 ]; then\n    appops set $PKG ACCESS_RESTRICTED_SETTINGS allow\n  fi\n  PKGOPS=`appops get $PKG`\n  UID=`dumpsys package $PKG 2>/dev/null | grep -m 1 Id= | sed -e 's|    userId=||g' -e 's|    appId=||g'`\n  if [ \"$UID\" ] && [ \"$UID\" -gt 9999 ]; then\n    UIDOPS=`appops get --uid \"$UID\"`\n  fi\nfi\n\n# allow\nPKG=com.dolby.daxappui\nif appops get $PKG > /dev/null 2>&1; then\n  if [ \"$API\" -ge 30 ]; then\n    appops set $PKG AUTO_REVOKE_PERMISSIONS_IF_UNUSED ignore\n  fi\n  PKGOPS=`appops get $PKG`\n  UID=`dumpsys package $PKG 2>/dev/null | grep -m 1 Id= | sed -e 's|    userId=||g' -e 's|    appId=||g'`\n  if [ \"$UID\" ] && [ \"$UID\" -gt 9999 ]; then\n    UIDOPS=`appops get --uid \"$UID\"`\n  fi\nfi\n\n# allow\nPKG=com.dolby.daxservice\nif appops get $PKG > /dev/null 2>&1; then\n  if [ \"$API\" -ge 30 ]; then\n    appops set $PKG AUTO_REVOKE_PERMISSIONS_IF_UNUSED ignore\n  fi\n  PKGOPS=`appops get $PKG`\n  UID=`dumpsys package $PKG 2>/dev/null | grep -m 1 Id= | sed -e 's|    userId=||g' -e 's|    appId=||g'`\n  if [ \"$UID\" ] && [ \"$UID\" -gt 9999 ]; then\n    UIDOPS=`appops get --uid \"$UID\"`\n  fi\nfi\n\n# allow\nPKG=com.reiryuki.soundenhancementlauncher\nif appops get $PKG > /dev/null 2>&1; then\n  appops set $PKG SYSTEM_ALERT_WINDOW allow\n  if [ \"$API\" -ge 33 ]; then\n    pm revoke $PKG android.permission.POST_NOTIFICATIONS\n    appops set $PKG ACCESS_RESTRICTED_SETTINGS allow\n  fi\nfi\n\n# function\nstop_log() {\nSIZE=`du $LOGFILE | sed \"s|$LOGFILE||g\"`\nif [ \"$LOG\" != stopped ] && [ \"$SIZE\" -gt 50 ]; then\n  exec 2>/dev/null\n  set +x\n  LOG=stopped\nfi\n}\ncheck_audioserver() {\nif [ \"$NEXTPID\" ]; then\n  PID=$NEXTPID\nelse\n  PID=`pidof $SERVER`\nfi\nsleep 15\nstop_log\nNEXTPID=`pidof $SERVER`\n[ \"$PID\" != \"$NEXTPID\" ] && killall $PROC\ncheck_audioserver\n}\ncheck_service() {\nfor SERVICE in $SERVICES; do\n  if ! pidof $SERVICE; then\n    $SERVICE &\n    PID=`pidof $SERVICE`\n  fi\ndone\n}\n\n# check\n#dcheck_service\nPROC=com.sonyericsson.soundenhancement\n#dPROC=\"com.sonyericsson.soundenhancement com.dolby.daxservice com.dolby.daxappui\"\nkillall $PROC\ncheck_audioserver\n\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "system/bin/sefx",
    "content": "#!/bin/sh\n\n# function\nstart_broadcast() {\nam broadcast -a android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION --es android.media.extra.PACKAGE_NAME $PKG --ei android.media.extra.AUDIO_SESSION $SESSION --ei android.media.extra.CONTENT_TYPE $TYPE\n}\nstart_activity() {\nam start-activity -a android.media.action.DISPLAY_AUDIO_EFFECT_CONTROL_PANEL -c android.intent.category.DEFAULT -p $EQPKG\n}\nsefx_result() {\necho \"Package Name = $PKG\"\n[ \"$PID\" ] && echo \"Process ID = $PID\"\nif [ \"$SESSION\" ]; then\n  echo \"Audio Session = $SESSION\"\n  echo \"Content Type = $TYPE ($TYPENAME)\"\n  if [ \"$SESSION\" -lt 0 ]; then\n    echo \"Unsupported music player\"\n  else\n    FILE=/sys/fs/selinux/enforce\n    FILE2=/sys/fs/selinux/policy\n    if ! start_broadcast; then\n      if [ \"`toybox cat $FILE`\" = 1 ]; then\n        chmod 640 $FILE\n        chmod 440 $FILE2\n        echo 0 > $FILE\n        start_broadcast\n        echo 1 > $FILE\n      fi\n    fi\n    WARN=0\n    if ! start_activity; then\n      if [ \"`toybox cat $FILE`\" = 1 ]; then\n        chmod 640 $FILE\n        chmod 440 $FILE2\n        echo 0 > $FILE\n        start_activity\n        echo 1 > $FILE\n      fi\n    fi\n  fi\nfi\n}\nrun_sefx() {\nPKGS=`dumpsys media_session | sed 's| |\\n|g' | grep packages= | sed 's|packages=||g'`\nunset PKG\nif [ \"$PKGS\" ]; then\n  for PKG in $PKGS; do\n    PIDS=`ps -A | awk -v pkg=\"$PKG\" '$0 ~ pkg {print $2}'`\n    unset SESSION\n    unset TYPE\n    unset TYPENAME\n    if [ \"$PIDS\" ]; then\n      for PID in $PIDS; do\n        DUMP=`dumpsys audio | grep \"$PID\" | grep sessionId: | sed 's| |\\n|g'`\n        if [ \"$DUMP\" ]; then\n          SESSIONS=`echo \"$DUMP\" | grep sessionId: | sed 's|sessionId:||g'`\n          for SESSION in $SESSIONS; do\n            CONTENT=`echo \"$DUMP\" | grep content= | sed 's|content=||g'`\n            if echo \"$CONTENT\" | grep -q MUSIC; then\n              TYPE=2\n              TYPENAME=Music\n            elif echo \"$CONTENT\" | grep -q MOVIE; then\n              TYPE=3\n              TYPENAME=Movie\n            elif echo \"$CONTENT\" | grep -q SONIFICATION; then\n              TYPE=4\n              TYPENAME=Sonification\n            elif echo \"$CONTENT\" | grep -q SPEECH; then\n              TYPE=1\n              TYPENAME=Speech\n            elif echo \"$CONTENT\" | grep -q ULTRASOUND; then\n              TYPE=1997\n              TYPENAME=Ultrasound\n            elif echo \"$CONTENT\" | grep -q UNKNOWN; then\n              TYPE=0\n              TYPENAME=Unknown\n            else\n              TYPE=-1\n              TYPENAME=Undefined\n            fi\n            sefx_result\n          done\n          [ ! \"$SESSION\" ] && sefx_result\n        else\n          sefx_result\n        fi\n      done\n    else\n      sefx_result\n    fi\n  done\nfi\n}\n\n# check\nif [ \"`whoami`\" == root ]; then\n  EQPKG=com.sonyericsson.soundenhancement\n  WARN=1\n  run_sefx\n  [ \"$WARN\" == 1 ] && echo \"Please play music first!\"\nelse\n  echo \"Please type su first!\"\nfi\n"
  },
  {
    "path": "system/etc/default-permissions/default-com.sonyericsson.soundenhancement.xml",
    "content": "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n<exceptions>\n    <exception package=\"com.sonyericsson.soundenhancement\">\n        <permission name=\"android.permission.RECORD_AUDIO\" fixed=\"false\"/>\n    </exception>\n</exceptions>\n"
  },
  {
    "path": "system/etc/permissions/com.sonyericsson.idd.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<permissions>\n    <library name=\"com.sonyericsson.idd\"\n        file=\"/system/framework/com.sonyericsson.idd_impl.jar\"/>\n    <library name=\"com.sonyericsson.idd_2\"\n        file=\"/system/framework/com.sonyericsson.idd_impl.jar\"/>\n    <library name=\"com.sonyericsson.idd_3\"\n        file=\"/system/framework/com.sonyericsson.idd_impl.jar\"/>\n</permissions>\n"
  },
  {
    "path": "system/etc/permissions/com.sonymobile.getmore.api.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<permissions>\n    <library name=\"com.sonymobile.getmore.api\"\n        file=\"/system/framework/com.sonymobile.getmore.api.jar\"/>\n</permissions>\n"
  },
  {
    "path": "system/etc/permissions/privapp-com.sonyericsson.soundenhancement.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<permissions>\n    <privapp-permissions package=\"com.sonyericsson.soundenhancement\">\n        <permission name=\"android.permission.WRITE_SECURE_SETTINGS\"/>\n        <permission name=\"android.permission.CHANGE_COMPONENT_ENABLED_STATE\"/>\n        <permission name=\"android.permission.READ_SEARCH_INDEXABLES\"/>\n        <permission name=\"android.permission.INTERACT_ACROSS_USERS\"/>\n        <permission name=\"android.permission.WRITE_MEDIA_STORAGE\"/>\n        <permission name=\"android.permission.MANAGE_USERS\"/>\n    </privapp-permissions>\n</permissions>\n"
  },
  {
    "path": "system/etc/permissions/privapp-com.sonymobile.audioutil.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<permissions>\n    <privapp-permissions package=\"com.sonymobile.audioutil\">\n        <permission name=\"android.permission.MODIFY_AUDIO_ROUTING\"/>\n        <permission name=\"android.permission.INTERACT_ACROSS_USERS\"/>\n        <permission name=\"android.permission.MANAGE_USERS\"/>\n    </privapp-permissions>\n</permissions>\n"
  },
  {
    "path": "system/etc/permissions/semc_audioeffectif.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<permissions>\n    <library name=\"semc_audioeffectif\"\n        file=\"/system/framework/semc_audioeffectif.jar\"/>\n    <library name=\"com.sonymobile.audioeffect\"\n        file=\"/system/framework/semc_audioeffectif.jar\"/>\n    <library name=\"com.sonymobile.audioeffect_2\"\n        file=\"/system/framework/semc_audioeffectif.jar\"/>\n    <library name=\"com.sonymobile.audioeffect_3\"\n        file=\"/system/framework/semc_audioeffectif.jar\"/>\n    <library name=\"com.sonymobile.audioeffect_4\"\n        file=\"/system/framework/semc_audioeffectif.jar\"/>\n    <library name=\"com.sonymobile.audioeffect_5\"\n        file=\"/system/framework/semc_audioeffectif.jar\"/>\n</permissions>\n"
  },
  {
    "path": "system/etc/permissions/sonyaudioeffect.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<permissions>\n    <library name=\"sonyaudioeffect\"\n        file=\"/system/framework/sonyaudioeffect.jar\"/>\n</permissions>\n"
  },
  {
    "path": "system/etc/sysconfig/config-com.sonyericsson.soundenhancement.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<config>\r\n    <hidden-api-whitelisted-app package=\"com.sonyericsson.soundenhancement\"/>\r\n    <allow-in-power-save package=\"com.sonyericsson.soundenhancement\"/>\r\n    <allow-implicit-broadcast action=\"com.sonyericsson.soundenhancement.AHC_USER_SWAP\"/>\r\n    <allow-implicit-broadcast action=\"dolby_dap_params_update\"/>\r\n    <allow-implicit-broadcast action=\"android.media.AUDIO_BECOMING_NOISY\"/>\r\n</config>\r\n"
  },
  {
    "path": "system/etc/sysconfig/config-com.sonymobile.audioutil.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<config>\r\n    <hidden-api-whitelisted-app package=\"com.sonymobile.audioutil\"/>\r\n</config>\r\n"
  },
  {
    "path": "system/vendor/etc/media_codecs_somc_audio.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<Included>\n    <Decoders>\n        <MediaCodec name=\"OMX.somc.alac.decoder\" type=\"audio/alac\" >\n            <Limit name=\"channel-count\" max=\"6\" />\n            <Limit name=\"sample-rate\" ranges=\"8000,16000,22050,24000,32000,44100,48000,88200,96000,176400,192000\" />\n        </MediaCodec>\n    </Decoders>\n</Included>\n"
  },
  {
    "path": "system/vendor/etc/sony_effect/effect_params.data",
    "content": "xloud_strength:1,\nca_chsep_coef:-83,\nca_plus_sp_eq_coefs:0,0,0,0,0,0,\n\n"
  },
  {
    "path": "system.prop",
    "content": "# prevent bootloop\nro.control_privapp_permissions=log\n"
  },
  {
    "path": "system_dolby/etc/permissions/dolby_dax.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<permissions>\n    <library name=\"dolby_dax\"\n        file=\"/system/framework/dolby_dax.jar\"/>\n</permissions>\n"
  },
  {
    "path": "system_dolby/etc/permissions/privapp-com.dolby.daxservice.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<permissions>\n    <privapp-permissions package=\"com.dolby.daxservice\">\n        <permission name=\"android.permission.INTERACT_ACROSS_USERS\"/>\n        <permission name=\"android.permission.MANAGE_USERS\"/>\n        <permission name=\"android.permission.WRITE_SECURE_SETTINGS\"/>\n        <permission name=\"android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME\"/>\n    </privapp-permissions>\n</permissions>\n"
  },
  {
    "path": "system_dolby/etc/sysconfig/config-com.dolby.daxappui.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<config>\r\n    <hidden-api-whitelisted-app package=\"com.dolby.daxappui\"/>\r\n</config>\r\n"
  },
  {
    "path": "system_dolby/etc/sysconfig/config-com.dolby.daxservice.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<config>\r\n    <hidden-api-whitelisted-app package=\"com.dolby.daxservice\"/>\r\n</config>\r\n"
  },
  {
    "path": "system_dolby/vendor/etc/dolby/dax-default.xml",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<device_data xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <format_version major=\"3\" minor=\"2\" maintenance=\"0\"/>\n  <tool_version major=\"3\" minor=\"1\" maintenance=\"0\"/>\n  <preset id=\"ieq_detailed\" type=\"ieq\">\n    <data>\n      <ieq-bands>\n        <band_ieq frequency=\"47\" target=\"-419\"/>\n        <band_ieq frequency=\"141\" target=\"-102\"/>\n        <band_ieq frequency=\"234\" target=\"79\"/>\n        <band_ieq frequency=\"328\" target=\"114\"/>\n        <band_ieq frequency=\"469\" target=\"113\"/>\n        <band_ieq frequency=\"656\" target=\"160\"/>\n        <band_ieq frequency=\"844\" target=\"164\"/>\n        <band_ieq frequency=\"1031\" target=\"102\"/>\n        <band_ieq frequency=\"1313\" target=\"67\"/>\n        <band_ieq frequency=\"1688\" target=\"73\"/>\n        <band_ieq frequency=\"2250\" target=\"95\"/>\n        <band_ieq frequency=\"3000\" target=\"114\"/>\n        <band_ieq frequency=\"3750\" target=\"64\"/>\n        <band_ieq frequency=\"4688\" target=\"67\"/>\n        <band_ieq frequency=\"5813\" target=\"39\"/>\n        <band_ieq frequency=\"7125\" target=\"-66\"/>\n        <band_ieq frequency=\"9000\" target=\"-34\"/>\n        <band_ieq frequency=\"11250\" target=\"-104\"/>\n        <band_ieq frequency=\"13875\" target=\"-236\"/>\n        <band_ieq frequency=\"19688\" target=\"-411\"/>\n      </ieq-bands>\n    </data>\n  </preset>\n  <preset id=\"ieq_balanced\" type=\"ieq\">\n    <data>\n      <ieq-bands>\n        <band_ieq frequency=\"47\" target=\"157\"/>\n        <band_ieq frequency=\"141\" target=\"167\"/>\n        <band_ieq frequency=\"234\" target=\"218\"/>\n        <band_ieq frequency=\"328\" target=\"218\"/>\n        <band_ieq frequency=\"469\" target=\"203\"/>\n        <band_ieq frequency=\"656\" target=\"188\"/>\n        <band_ieq frequency=\"844\" target=\"192\"/>\n        <band_ieq frequency=\"1031\" target=\"192\"/>\n        <band_ieq frequency=\"1313\" target=\"205\"/>\n        <band_ieq frequency=\"1688\" target=\"213\"/>\n        <band_ieq frequency=\"2250\" target=\"218\"/>\n        <band_ieq frequency=\"3000\" target=\"209\"/>\n        <band_ieq frequency=\"3750\" target=\"193\"/>\n        <band_ieq frequency=\"4688\" target=\"159\"/>\n        <band_ieq frequency=\"5813\" target=\"134\"/>\n        <band_ieq frequency=\"7125\" target=\"97\"/>\n        <band_ieq frequency=\"9000\" target=\"71\"/>\n        <band_ieq frequency=\"11250\" target=\"22\"/>\n        <band_ieq frequency=\"13875\" target=\"-90\"/>\n        <band_ieq frequency=\"19688\" target=\"-283\"/>\n      </ieq-bands>\n    </data>\n  </preset>\n  <preset id=\"ieq_warm\" type=\"ieq\">\n    <data>\n      <ieq-bands>\n        <band_ieq frequency=\"47\" target=\"67\"/>\n        <band_ieq frequency=\"141\" target=\"99\"/>\n        <band_ieq frequency=\"234\" target=\"171\"/>\n        <band_ieq frequency=\"328\" target=\"163\"/>\n        <band_ieq frequency=\"469\" target=\"168\"/>\n        <band_ieq frequency=\"656\" target=\"199\"/>\n        <band_ieq frequency=\"844\" target=\"189\"/>\n        <band_ieq frequency=\"1031\" target=\"228\"/>\n        <band_ieq frequency=\"1313\" target=\"210\"/>\n        <band_ieq frequency=\"1688\" target=\"213\"/>\n        <band_ieq frequency=\"2250\" target=\"195\"/>\n        <band_ieq frequency=\"3000\" target=\"183\"/>\n        <band_ieq frequency=\"3750\" target=\"165\"/>\n        <band_ieq frequency=\"4688\" target=\"136\"/>\n        <band_ieq frequency=\"5813\" target=\"100\"/>\n        <band_ieq frequency=\"7125\" target=\"59\"/>\n        <band_ieq frequency=\"9000\" target=\"34\"/>\n        <band_ieq frequency=\"11250\" target=\"7\"/>\n        <band_ieq frequency=\"13875\" target=\"-54\"/>\n        <band_ieq frequency=\"19688\" target=\"-235\"/>\n      </ieq-bands>\n    </data>\n  </preset>\n  <preset id=\"0\" type=\"geq\">\n    <data>\n      <graphic-equalizer-bands>\n        <band_geq frequency=\"47\" gain=\"0\"/>\n        <band_geq frequency=\"141\" gain=\"0\"/>\n        <band_geq frequency=\"234\" gain=\"0\"/>\n        <band_geq frequency=\"328\" gain=\"0\"/>\n        <band_geq frequency=\"469\" gain=\"0\"/>\n        <band_geq frequency=\"656\" gain=\"0\"/>\n        <band_geq frequency=\"844\" gain=\"0\"/>\n        <band_geq frequency=\"1031\" gain=\"0\"/>\n        <band_geq frequency=\"1313\" gain=\"0\"/>\n        <band_geq frequency=\"1688\" gain=\"0\"/>\n        <band_geq frequency=\"2250\" gain=\"0\"/>\n        <band_geq frequency=\"3000\" gain=\"0\"/>\n        <band_geq frequency=\"3750\" gain=\"0\"/>\n        <band_geq frequency=\"4688\" gain=\"0\"/>\n        <band_geq frequency=\"5813\" gain=\"0\"/>\n        <band_geq frequency=\"7125\" gain=\"0\"/>\n        <band_geq frequency=\"9000\" gain=\"0\"/>\n        <band_geq frequency=\"11250\" gain=\"0\"/>\n        <band_geq frequency=\"13875\" gain=\"0\"/>\n        <band_geq frequency=\"19688\" gain=\"0\"/>\n      </graphic-equalizer-bands>\n    </data>\n  </preset>\n  <preset id=\"1\" type=\"geq\">\n    <data>\n      <graphic-equalizer-bands>\n        <band_geq frequency=\"47\" gain=\"0\"/>\n        <band_geq frequency=\"141\" gain=\"0\"/>\n        <band_geq frequency=\"234\" gain=\"0\"/>\n        <band_geq frequency=\"328\" gain=\"0\"/>\n        <band_geq frequency=\"469\" gain=\"0\"/>\n        <band_geq frequency=\"656\" gain=\"0\"/>\n        <band_geq frequency=\"844\" gain=\"0\"/>\n        <band_geq frequency=\"1031\" gain=\"0\"/>\n        <band_geq frequency=\"1313\" gain=\"0\"/>\n        <band_geq frequency=\"1688\" gain=\"0\"/>\n        <band_geq frequency=\"2250\" gain=\"0\"/>\n        <band_geq frequency=\"3000\" gain=\"0\"/>\n        <band_geq frequency=\"3750\" gain=\"0\"/>\n        <band_geq frequency=\"4688\" gain=\"0\"/>\n        <band_geq frequency=\"5813\" gain=\"0\"/>\n        <band_geq frequency=\"7125\" gain=\"0\"/>\n        <band_geq frequency=\"9000\" gain=\"0\"/>\n        <band_geq frequency=\"11250\" gain=\"0\"/>\n        <band_geq frequency=\"13875\" gain=\"0\"/>\n        <band_geq frequency=\"19688\" gain=\"0\"/>\n      </graphic-equalizer-bands>\n    </data>\n  </preset>\n  <preset id=\"2\" type=\"geq\">\n    <data>\n      <graphic-equalizer-bands>\n        <band_geq frequency=\"47\" gain=\"0\"/>\n        <band_geq frequency=\"141\" gain=\"0\"/>\n        <band_geq frequency=\"234\" gain=\"0\"/>\n        <band_geq frequency=\"328\" gain=\"0\"/>\n        <band_geq frequency=\"469\" gain=\"0\"/>\n        <band_geq frequency=\"656\" gain=\"0\"/>\n        <band_geq frequency=\"844\" gain=\"0\"/>\n        <band_geq frequency=\"1031\" gain=\"0\"/>\n        <band_geq frequency=\"1313\" gain=\"0\"/>\n        <band_geq frequency=\"1688\" gain=\"0\"/>\n        <band_geq frequency=\"2250\" gain=\"0\"/>\n        <band_geq frequency=\"3000\" gain=\"0\"/>\n        <band_geq frequency=\"3750\" gain=\"0\"/>\n        <band_geq frequency=\"4688\" gain=\"0\"/>\n        <band_geq frequency=\"5813\" gain=\"0\"/>\n        <band_geq frequency=\"7125\" gain=\"0\"/>\n        <band_geq frequency=\"9000\" gain=\"0\"/>\n        <band_geq frequency=\"11250\" gain=\"0\"/>\n        <band_geq frequency=\"13875\" gain=\"0\"/>\n        <band_geq frequency=\"19688\" gain=\"0\"/>\n      </graphic-equalizer-bands>\n    </data>\n  </preset>\n  <preset id=\"3\" type=\"geq\">\n    <data>\n      <graphic-equalizer-bands>\n        <band_geq frequency=\"47\" gain=\"0\"/>\n        <band_geq frequency=\"141\" gain=\"0\"/>\n        <band_geq frequency=\"234\" gain=\"0\"/>\n        <band_geq frequency=\"328\" gain=\"0\"/>\n        <band_geq frequency=\"469\" gain=\"0\"/>\n        <band_geq frequency=\"656\" gain=\"0\"/>\n        <band_geq frequency=\"844\" gain=\"0\"/>\n        <band_geq frequency=\"1031\" gain=\"0\"/>\n        <band_geq frequency=\"1313\" gain=\"0\"/>\n        <band_geq frequency=\"1688\" gain=\"0\"/>\n        <band_geq frequency=\"2250\" gain=\"0\"/>\n        <band_geq frequency=\"3000\" gain=\"0\"/>\n        <band_geq frequency=\"3750\" gain=\"0\"/>\n        <band_geq frequency=\"4688\" gain=\"0\"/>\n        <band_geq frequency=\"5813\" gain=\"0\"/>\n        <band_geq frequency=\"7125\" gain=\"0\"/>\n        <band_geq frequency=\"9000\" gain=\"0\"/>\n        <band_geq frequency=\"11250\" gain=\"0\"/>\n        <band_geq frequency=\"13875\" gain=\"0\"/>\n        <band_geq frequency=\"19688\" gain=\"0\"/>\n      </graphic-equalizer-bands>\n    </data>\n  </preset>\n  <profile id=\"0\" name=\"Dynamic\">\n    <data>\n      <ieq-enable value=\"true\"/>\n      <ieq-amount value=\"6\"/>\n      <mi-dialog-enhancer-steering-enable value=\"true\"/>\n      <mi-dv-leveler-steering-enable value=\"true\"/>\n      <mi-ieq-steering-enable value=\"true\"/>\n      <mi-surround-compressor-steering-enable value=\"true\"/>\n      <mi-adaptive-virtualizer-steering-enable value=\"true\"/>\n      <volume-modeler-enable value=\"false\"/>\n      <endpoint_type id=\"speaker\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"true\"/>\n        <dialog-enhancer-amount value=\"6\"/>\n        <dialog-enhancer-ducking value=\"2\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"96\"/>\n        <volmax-boost value=\"80\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"5\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"true\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n      <endpoint_type id=\"headphone\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"true\"/>\n        <dialog-enhancer-amount value=\"6\"/>\n        <dialog-enhancer-ducking value=\"2\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"96\"/>\n        <volmax-boost value=\"80\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"5\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"true\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n      <endpoint_type id=\"other\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"true\"/>\n        <dialog-enhancer-amount value=\"10\"/>\n        <dialog-enhancer-ducking value=\"0\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"0\"/>\n        <volmax-boost value=\"96\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"7\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"false\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n    </data>\n    <include preset=\"ieq_balanced\"/>\n  </profile>\n  <profile id=\"1\" name=\"Movie\">\n    <data>\n      <ieq-enable value=\"false\"/>\n      <ieq-amount value=\"6\"/>\n      <mi-dialog-enhancer-steering-enable value=\"false\"/>\n      <mi-dv-leveler-steering-enable value=\"false\"/>\n      <mi-ieq-steering-enable value=\"false\"/>\n      <mi-surround-compressor-steering-enable value=\"false\"/>\n      <mi-adaptive-virtualizer-steering-enable value=\"false\"/>\n      <volume-modeler-enable value=\"false\"/>\n      <endpoint_type id=\"speaker\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"true\"/>\n        <dialog-enhancer-amount value=\"6\"/>\n        <dialog-enhancer-ducking value=\"2\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"96\"/>\n        <volmax-boost value=\"80\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"4\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"true\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n      <endpoint_type id=\"headphone\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"true\"/>\n        <dialog-enhancer-amount value=\"6\"/>\n        <dialog-enhancer-ducking value=\"2\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"96\"/>\n        <volmax-boost value=\"64\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"5\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"true\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n      <endpoint_type id=\"other\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"true\"/>\n        <dialog-enhancer-amount value=\"6\"/>\n        <dialog-enhancer-ducking value=\"0\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"0\"/>\n        <volmax-boost value=\"96\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"7\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"false\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n    </data>\n    <include preset=\"ieq_balanced\"/>\n  </profile>\n  <profile id=\"2\" name=\"Music\">\n    <data>\n      <ieq-enable value=\"true\"/>\n      <ieq-amount value=\"6\"/>\n      <mi-dialog-enhancer-steering-enable value=\"false\"/>\n      <mi-dv-leveler-steering-enable value=\"false\"/>\n      <mi-ieq-steering-enable value=\"false\"/>\n      <mi-surround-compressor-steering-enable value=\"false\"/>\n      <mi-adaptive-virtualizer-steering-enable value=\"false\"/>\n      <volume-modeler-enable value=\"false\"/>\n      <endpoint_type id=\"speaker\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"false\"/>\n        <dialog-enhancer-amount value=\"6\"/>\n        <dialog-enhancer-ducking value=\"2\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"0\"/>\n        <volmax-boost value=\"64\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"2\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"false\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n      <endpoint_type id=\"headphone\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"false\"/>\n        <dialog-enhancer-amount value=\"6\"/>\n        <dialog-enhancer-ducking value=\"2\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"48\"/>\n        <volmax-boost value=\"80\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"2\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"false\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n      <endpoint_type id=\"other\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"false\"/>\n        <dialog-enhancer-amount value=\"7\"/>\n        <dialog-enhancer-ducking value=\"0\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"0\"/>\n        <volmax-boost value=\"96\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"4\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"false\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n    </data>\n    <include preset=\"ieq_balanced\"/>\n  </profile>\n  <profile id=\"3\" name=\"Custom\">\n    <data>\n      <ieq-enable value=\"false\"/>\n      <ieq-amount value=\"6\"/>\n      <mi-dialog-enhancer-steering-enable value=\"false\"/>\n      <mi-dv-leveler-steering-enable value=\"false\"/>\n      <mi-ieq-steering-enable value=\"false\"/>\n      <mi-surround-compressor-steering-enable value=\"false\"/>\n      <mi-adaptive-virtualizer-steering-enable value=\"false\"/>\n      <volume-modeler-enable value=\"false\"/>\n      <endpoint_type id=\"speaker\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"false\"/>\n        <dialog-enhancer-amount value=\"6\"/>\n        <dialog-enhancer-ducking value=\"2\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"48\"/>\n        <volmax-boost value=\"80\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"0\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"false\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n      <endpoint_type id=\"headphone\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"false\"/>\n        <dialog-enhancer-amount value=\"6\"/>\n        <dialog-enhancer-ducking value=\"2\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"48\"/>\n        <volmax-boost value=\"80\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"0\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"false\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n      <endpoint_type id=\"other\">\n        <calibration-boost value=\"0\"/>\n        <dialog-enhancer-enable value=\"false\"/>\n        <dialog-enhancer-amount value=\"6\"/>\n        <dialog-enhancer-ducking value=\"0\"/>\n        <surround-decoder-enable value=\"true\"/>\n        <surround-boost value=\"0\"/>\n        <volmax-boost value=\"96\"/>\n        <volume-leveler-enable value=\"true\"/>\n        <volume-leveler-amount value=\"0\"/>\n        <volume-leveler-in-target value=\"-320\"/>\n        <volume-leveler-out-target value=\"-320\"/>\n        <graphic-equalizer-enable value=\"true\"/>\n        <virtualizer-enable value=\"false\"/>\n        <bass-enhancer-enable value=\"false\"/>\n        <virtual-bass-process-enable value=\"false\"/>\n      </endpoint_type>\n    </data>\n    <include preset=\"ieq_warm\"/>\n  </profile>\n  <tuning name=\"Speaker_landscape\" classification=\"internal_speaker\" endpoint_type=\"speaker\" mono_device=\"false\" has_sub=\"false\" tuned_rate=\"48000\" operating_mode=\"normal\" profile_restrictions=\"none\">\n    <device_id id=\"internal_speaker\" endpoint_port=\"internal_speaker\"/>\n    <device_id id=\"Speaker_landscape\" endpoint_port=\"internal_speaker\"/>\n    <data>\n      <audio-optimizer-bands>\n        <band_optimizer frequency=\"47\" gain_left=\"-480\" gain_right=\"-480\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"141\" gain_left=\"16\" gain_right=\"128\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"234\" gain_left=\"128\" gain_right=\"272\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"328\" gain_left=\"176\" gain_right=\"288\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"469\" gain_left=\"96\" gain_right=\"208\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"656\" gain_left=\"48\" gain_right=\"96\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"844\" gain_left=\"48\" gain_right=\"48\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1031\" gain_left=\"32\" gain_right=\"48\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1313\" gain_left=\"56\" gain_right=\"48\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1688\" gain_left=\"48\" gain_right=\"80\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"2250\" gain_left=\"64\" gain_right=\"72\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"3000\" gain_left=\"104\" gain_right=\"80\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"3750\" gain_left=\"104\" gain_right=\"112\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"4688\" gain_left=\"104\" gain_right=\"120\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"5813\" gain_left=\"120\" gain_right=\"104\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"7125\" gain_left=\"120\" gain_right=\"128\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"9000\" gain_left=\"144\" gain_right=\"136\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"11250\" gain_left=\"176\" gain_right=\"160\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"13875\" gain_left=\"112\" gain_right=\"96\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"19688\" gain_left=\"16\" gain_right=\"16\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n      </audio-optimizer-bands>\n      <regulator-tuning>\n        <band_regulator frequency=\"47\" threshold_low=\"-1152\" threshold_high=\"-960\" isolated_band=\"true\"/>\n        <band_regulator frequency=\"141\" threshold_low=\"-272\" threshold_high=\"-80\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"234\" threshold_low=\"-560\" threshold_high=\"-368\" isolated_band=\"true\"/>\n        <band_regulator frequency=\"328\" threshold_low=\"-592\" threshold_high=\"-400\" isolated_band=\"true\"/>\n        <band_regulator frequency=\"469\" threshold_low=\"-464\" threshold_high=\"-272\" isolated_band=\"true\"/>\n        <band_regulator frequency=\"656\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"844\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1031\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1313\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"2250\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"3000\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"3750\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"4688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"5813\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"7125\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"9000\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"11250\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"13875\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"19688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n      </regulator-tuning>\n      <bass-enhancer-boost value=\"192\"/>\n      <bass-enhancer-cutoff-frequency value=\"300\"/>\n      <bass-enhancer-width value=\"16\"/>\n      <bass-extraction-cutoff-frequency value=\"200\"/>\n      <complex-equalizer-tuning-left value=\"0,18021,0,18021,0,13805,-11584,13805,-11584,18021,0,19552,2055,18019,314,16709,6751,16197,7900,16197,7900,13805,11584,13805,11584,12290,13180,12290,13180,15060,15060,15060,15060,9477,11295,17446,12216,18474,6724,16361,857,18021,0,18021,0,19660,0,16383,0,18021,0,19552,-2055,15667,-4790,16463,-7330,16709,-6751,16197,-7900,18805,-9999,15283,-9550,13805,-11584,11173,-11982,10962,-12175,12058,-13392,13901,-13901,12058,-13392,12743,-12743,13901,-13901,10426,-10426,10242,-10606,10962,-12175,9815,-15114,5870,-20473,0,-22936,-4267,-12392,-5761,-13572,-4790,-15667,-6751,-16709,-6724,-18474,-8322,-19605,-9329,-20953,-9206,-22785,-8322,-19605,-11120,-20061,-15975,-22814,-20009,-23845,-23570,-22761,-14745,-25539,-13501,-22469,-12216,-17446,-10748,-12364,-10056,-10783,-8770,-9740,-7217,-8912,-6578,-9394,-5209,-8336,-6413,-9507,-6077,-9725,-6553,-11350,-5761,-13572,-7182,-14725,-2055,-19552,13384,-20610,25640,-5450,26213,0\"/>\n      <complex-equalizer-tuning-right value=\"0,18207,0,18046,2419,13603,12102,13603,12102,18055,2657,17574,-2260,18257,-4085,17917,-7286,16557,-8114,14609,-8543,13895,-11765,13895,-11765,12392,-13339,12392,-13339,10364,-12378,13581,-16492,9857,-11983,13075,-9159,18530,-8864,15645,-3960,18273,-3396,17793,-1244,20055,-64,16521,511,15649,2187,18768,4995,17907,8132,16821,7747,16943,7343,15639,8180,18203,10518,14310,10874,12902,12002,11150,12168,11599,13460,11654,13149,12260,14229,12836,14467,13067,13264,12048,12348,12399,12456,11520,12023,10669,12365,9230,14507,5461,19207,-2495,22057,-3442,9494,-4775,10866,-5823,13429,-6659,16270,-7830,18880,-9672,21888,-11711,24640,-13261,26172,-6471,12427,-7072,12462,-9015,12841,-12616,13795,-16527,15717,-14235,19743,-11598,18662,-11671,15329,-11965,13261,-12075,12426,-11769,12427,-10993,12677,-10157,12846,-9562,13027,-9238,13442,-9207,14371,-9431,15988,-9860,18233,-10555,20804,-3759,23480,10758,17098,15717,4774,15072,0\"/>\n      <height-filter-mode value=\"1\"/>\n      <output-mode>\n        <orientation value=\"1\"/>\n        <output_channels value=\"2\"/>\n        <mix_matrix>\n          <element value=\"16384\"/>\n          <element value=\"0\"/>\n          <element value=\"0\"/>\n          <element value=\"16384\"/>\n          <element value=\"11583\"/>\n          <element value=\"11583\"/>\n          <element value=\"8192\"/>\n          <element value=\"8192\"/>\n          <element value=\"16384\"/>\n          <element value=\"0\"/>\n          <element value=\"0\"/>\n          <element value=\"16384\"/>\n          <element value=\"16384\"/>\n          <element value=\"0\"/>\n          <element value=\"0\"/>\n          <element value=\"16384\"/>\n        </mix_matrix>\n      </output-mode>\n      <regulator-overdrive value=\"0\"/>\n      <regulator-timbre-preservation value=\"12\"/>\n      <regulator-relaxation-amount value=\"96\"/>\n      <virtual-bass-mode value=\"3\"/>\n      <virtual-bass-overall-gain value=\"0\"/>\n      <virtual-bass-slope-gain value=\"0\"/>\n      <virtual-bass-mix-freqs frequency_low=\"94\" frequency_high=\"469\"/>\n      <virtual-bass-src-freqs frequency_low=\"35\" frequency_high=\"160\"/>\n      <virtual-bass-subgains harmonic_2=\"-32\" harmonic_3=\"-144\" harmonic_4=\"-192\"/>\n      <virtualizer-front-speaker-angle value=\"10\"/>\n      <virtualizer-height-speaker-angle value=\"10\"/>\n      <virtualizer-surround-speaker-angle value=\"10\"/>\n      <volume-modeler-calibration value=\"0\"/>\n      <audio-optimizer-enable value=\"true\"/>\n      <bass-extraction-enable value=\"false\"/>\n      <complex-equalizer-enable value=\"true\"/>\n      <regulator-enable value=\"true\"/>\n      <regulator-speaker-dist-enable value=\"true\"/>\n    </data>\n  </tuning>\n  <tuning name=\"Speaker_portrait\" classification=\"internal_speaker\" endpoint_type=\"speaker\" mono_device=\"false\" has_sub=\"false\" tuned_rate=\"48000\" operating_mode=\"normal\" profile_restrictions=\"none\">\n    <device_id id=\"Speaker_portrait\" endpoint_port=\"internal_speaker\"/>\n    <data>\n      <audio-optimizer-bands>\n        <band_optimizer frequency=\"47\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"141\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"234\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"328\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"469\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"656\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"844\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1031\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1313\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1688\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"2250\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"3000\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"3750\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"4688\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"5813\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"7125\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"9000\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"11250\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"13875\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"19688\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n      </audio-optimizer-bands>\n      <regulator-tuning>\n        <band_regulator frequency=\"47\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"141\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"234\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"328\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"469\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"656\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"844\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1031\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1313\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"2250\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"3000\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"3750\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"4688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"5813\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"7125\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"9000\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"11250\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"13875\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"19688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n      </regulator-tuning>\n      <bass-enhancer-boost value=\"192\"/>\n      <bass-enhancer-cutoff-frequency value=\"200\"/>\n      <bass-enhancer-width value=\"16\"/>\n      <bass-extraction-cutoff-frequency value=\"200\"/>\n      <complex-equalizer-tuning-left value=\"0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0\"/>\n      <complex-equalizer-tuning-right value=\"0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0\"/>\n      <height-filter-mode value=\"1\"/>\n      <output-mode>\n        <orientation value=\"0\"/>\n        <output_channels value=\"2\"/>\n        <mix_matrix>\n          <element value=\"16384\"/>\n          <element value=\"16384\"/>\n        </mix_matrix>\n      </output-mode>\n      <regulator-overdrive value=\"0\"/>\n      <regulator-timbre-preservation value=\"12\"/>\n      <regulator-relaxation-amount value=\"96\"/>\n      <virtual-bass-mode value=\"3\"/>\n      <virtual-bass-overall-gain value=\"0\"/>\n      <virtual-bass-slope-gain value=\"0\"/>\n      <virtual-bass-mix-freqs frequency_low=\"94\" frequency_high=\"469\"/>\n      <virtual-bass-src-freqs frequency_low=\"35\" frequency_high=\"160\"/>\n      <virtual-bass-subgains harmonic_2=\"-32\" harmonic_3=\"-144\" harmonic_4=\"-192\"/>\n      <virtualizer-front-speaker-angle value=\"10\"/>\n      <virtualizer-height-speaker-angle value=\"10\"/>\n      <virtualizer-surround-speaker-angle value=\"10\"/>\n      <volume-modeler-calibration value=\"0\"/>\n      <audio-optimizer-enable value=\"true\"/>\n      <bass-extraction-enable value=\"false\"/>\n      <complex-equalizer-enable value=\"false\"/>\n      <regulator-enable value=\"true\"/>\n      <regulator-speaker-dist-enable value=\"true\"/>\n    </data>\n  </tuning>\n  <tuning name=\"Headphone\" classification=\"unknown_headphone\" endpoint_type=\"headphone\" mono_device=\"false\" has_sub=\"false\" tuned_rate=\"48000\" operating_mode=\"normal\" profile_restrictions=\"none\">\n    <device_id id=\"headphone_port\" endpoint_port=\"headphone_port\"/>\n    <device_id id=\"headphone_bluetooth\" endpoint_port=\"bluetooth\"/>\n    <device_id id=\"bluetooth\" endpoint_port=\"bluetooth\"/>\n    <device_id id=\"headphone_usb\" endpoint_port=\"usb\"/>\n    <device_id id=\"usb\" endpoint_port=\"usb\"/>\n    <data>\n      <audio-optimizer-bands>\n        <band_optimizer frequency=\"47\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"141\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"234\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"328\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"469\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"656\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"844\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1031\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1313\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1688\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"2250\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"3000\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"3750\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"4688\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"5813\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"7125\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"9000\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"11250\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"13875\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"19688\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n      </audio-optimizer-bands>\n      <regulator-tuning>\n        <band_regulator frequency=\"47\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"141\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"234\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"328\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"469\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"656\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"844\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1031\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1313\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"2250\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"3000\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"3750\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"4688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"5813\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"7125\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"9000\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"11250\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"13875\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"19688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n      </regulator-tuning>\n      <bass-enhancer-boost value=\"96\"/>\n      <bass-enhancer-cutoff-frequency value=\"160\"/>\n      <bass-enhancer-width value=\"16\"/>\n      <bass-extraction-cutoff-frequency value=\"200\"/>\n      <complex-equalizer-tuning-left value=\"0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0\"/>\n      <complex-equalizer-tuning-right value=\"0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0\"/>\n      <height-filter-mode value=\"2\"/>\n      <output-mode>\n        <orientation value=\"2\"/>\n        <output_channels value=\"2\"/>\n        <mix_matrix/>\n      </output-mode>\n      <regulator-overdrive value=\"0\"/>\n      <regulator-timbre-preservation value=\"12\"/>\n      <regulator-relaxation-amount value=\"96\"/>\n      <virtual-bass-mode value=\"3\"/>\n      <virtual-bass-overall-gain value=\"0\"/>\n      <virtual-bass-slope-gain value=\"0\"/>\n      <virtual-bass-mix-freqs frequency_low=\"99\" frequency_high=\"281\"/>\n      <virtual-bass-src-freqs frequency_low=\"30\" frequency_high=\"90\"/>\n      <virtual-bass-subgains harmonic_2=\"-48\" harmonic_3=\"-480\" harmonic_4=\"-240\"/>\n      <virtualizer-front-speaker-angle value=\"10\"/>\n      <virtualizer-height-speaker-angle value=\"10\"/>\n      <virtualizer-surround-speaker-angle value=\"10\"/>\n      <volume-modeler-calibration value=\"160\"/>\n      <audio-optimizer-enable value=\"false\"/>\n      <bass-extraction-enable value=\"false\"/>\n      <complex-equalizer-enable value=\"false\"/>\n      <regulator-enable value=\"true\"/>\n      <regulator-speaker-dist-enable value=\"false\"/>\n    </data>\n  </tuning>\n  <tuning name=\"Unknown\" classification=\"unknown_default\" endpoint_type=\"other\" mono_device=\"false\" has_sub=\"false\" tuned_rate=\"48000\" operating_mode=\"normal\" profile_restrictions=\"none\">\n    <device_id id=\"hdmi\" endpoint_port=\"hdmi\"/>\n    <device_id id=\"miracast\" endpoint_port=\"miracast\"/>\n    <data>\n      <audio-optimizer-bands>\n        <band_optimizer frequency=\"47\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"141\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"234\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"328\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"469\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"656\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"844\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1031\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1313\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"1688\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"2250\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"3000\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"3750\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"4688\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"5813\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"7125\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"9000\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"11250\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"13875\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n        <band_optimizer frequency=\"19688\" gain_left=\"0\" gain_right=\"0\" gain_center=\"0\" gain_lfe=\"0\" gain_left_surround=\"0\" gain_right_surround=\"0\" gain_left_rear_surround=\"0\" gain_right_rear_surround=\"0\" gain_left_top_middle=\"0\" gain_right_top_middle=\"0\"/>\n      </audio-optimizer-bands>\n      <regulator-tuning>\n        <band_regulator frequency=\"47\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"141\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"234\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"328\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"469\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"656\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"844\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1031\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1313\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"1688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"2250\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"3000\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"3750\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"4688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"5813\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"7125\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"9000\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"11250\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"13875\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n        <band_regulator frequency=\"19688\" threshold_low=\"-192\" threshold_high=\"0\" isolated_band=\"false\"/>\n      </regulator-tuning>\n      <bass-enhancer-boost value=\"192\"/>\n      <bass-enhancer-cutoff-frequency value=\"200\"/>\n      <bass-enhancer-width value=\"16\"/>\n      <bass-extraction-cutoff-frequency value=\"200\"/>\n      <complex-equalizer-tuning-left value=\"0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0\"/>\n      <complex-equalizer-tuning-right value=\"0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0,32767,0\"/>\n      <height-filter-mode value=\"0\"/>\n      <output-mode>\n        <orientation value=\"2\"/>\n        <output_channels value=\"2\"/>\n        <mix_matrix/>\n      </output-mode>\n      <regulator-overdrive value=\"0\"/>\n      <regulator-timbre-preservation value=\"12\"/>\n      <regulator-relaxation-amount value=\"96\"/>\n      <virtual-bass-mode value=\"3\"/>\n      <virtual-bass-overall-gain value=\"0\"/>\n      <virtual-bass-slope-gain value=\"0\"/>\n      <virtual-bass-mix-freqs frequency_low=\"94\" frequency_high=\"469\"/>\n      <virtual-bass-src-freqs frequency_low=\"35\" frequency_high=\"160\"/>\n      <virtual-bass-subgains harmonic_2=\"-32\" harmonic_3=\"-144\" harmonic_4=\"-192\"/>\n      <virtualizer-front-speaker-angle value=\"10\"/>\n      <virtualizer-height-speaker-angle value=\"10\"/>\n      <virtualizer-surround-speaker-angle value=\"10\"/>\n      <volume-modeler-calibration value=\"0\"/>\n      <audio-optimizer-enable value=\"false\"/>\n      <bass-extraction-enable value=\"false\"/>\n      <complex-equalizer-enable value=\"false\"/>\n      <regulator-enable value=\"true\"/>\n      <regulator-speaker-dist-enable value=\"false\"/>\n    </data>\n  </tuning>\n  <authorized_technologies sku_name=\"DAX3 Android\" device=\"dax3_android\" bundle=\"DAPv2 2.7.x\"/>\n</device_data>\n"
  },
  {
    "path": "system_dolby/vendor/etc/media_codecs_dolby_audio.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<!-- Copyright 2016 The Android Open Source Project\n\n     Licensed under the Apache License, Version 2.0 (the \"License\");\n     you may not use this file except in compliance with the License.\n     You may obtain a copy of the License at\n\n          http://www.apache.org/licenses/LICENSE-2.0\n\n     Unless required by applicable law or agreed to in writing, software\n     distributed under the License is distributed on an \"AS IS\" BASIS,\n     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     See the License for the specific language governing permissions and\n     limitations under the License.\n\n     This file was modified by Dolby Laboratories, Inc. The portions of the\n     code that are surrounded by \"DOLBY...\" are copyrighted and\n     licensed separately, as follows:\n\n     (C) 2018 Dolby Laboratories, Inc.\n     All rights reserved.\n\n     This program is protected under international and U.S. Copyright laws as\n     an unpublished work. This program is confidential and proprietary to the\n     copyright owners. Reproduction or disclosure, in whole or in part, or the\n     production of derivative works therefrom without the express permission of\n     the copyright owners is prohibited.\n-->\n\n<Included>\n    <Decoders>\n        <!-- DOLBY_UDC -->\n        <MediaCodec name=\"OMX.dolby.ac3.decoder\" type=\"audio/ac3\">\n            <Limit name=\"channel-count\" max=\"6\" />\n            <Limit name=\"sample-rate\" ranges=\"32000,44100,48000\" />\n            <Limit name=\"bitrate\" range=\"32000-640000\" />\n        </MediaCodec>\n        <MediaCodec name=\"OMX.dolby.eac3.decoder\" type=\"audio/eac3\">\n            <Limit name=\"channel-count\" max=\"8\" />\n            <Limit name=\"sample-rate\" ranges=\"32000,44100,48000\" />\n            <Limit name=\"bitrate\" range=\"32000-6144000\" />\n        </MediaCodec>\n        <MediaCodec name=\"OMX.dolby.eac3_joc.decoder\" type=\"audio/eac3-joc\">\n            <Limit name=\"channel-count\" max=\"8\" />\n            <Limit name=\"sample-rate\" ranges=\"48000\" />\n            <Limit name=\"bitrate\" range=\"32000-6144000\" />\n        </MediaCodec>\n        <!-- DOLBY_UDC END -->\n        <!-- DOLBY_AC4 -->\n        <MediaCodec name=\"OMX.dolby.ac4.decoder\" type=\"audio/ac4\">\n            <Limit name=\"channel-count\" max=\"2\" />\n            <Limit name=\"sample-rate\" ranges=\"48000\" />\n            <Limit name=\"bitrate\" range=\"16000-2688000\" />\n        </MediaCodec>\n        <!-- DOLBY_AC4 END -->\n    </Decoders>\n</Included>\n"
  },
  {
    "path": "uninstall.sh",
    "content": "mount -o rw,remount /data\n[ ! \"$MODPATH\" ] && MODPATH=${0%/*}\n[ ! \"$MODID\" ] && MODID=`basename \"$MODPATH\"`\nUID=`id -u`\n[ ! \"$UID\" ] && UID=0\n\n# log\nexec 2>/data/adb/$MODID\\_uninstall.log\nset -x\n\n# run\n. $MODPATH/function.sh\n\n# cleaning\nremove_cache\nPKGS=`cat $MODPATH/package.txt`\n#dPKGS=`cat $MODPATH/package-dolby.txt`\nfor PKG in $PKGS; do\n  rm -rf /data/user*/\"$UID\"/$PKG\ndone\nremove_sepolicy_rule\n#drm -f /data/vendor/dolby/dax_sqlite3.db\n#dresetprop -p --delete persist.vendor.dolby.loglevel\nresetprop -p --delete persist.sony.effect.ahc\nresetprop -p --delete persist.sony.mono_speaker\nresetprop -p --delete persist.sony.effect.dolby_atmos\nresetprop -p --delete persist.sony.enable.dolby_auto_mode\nresetprop -p --delete persist.sony.effect.clear_audio_plus\n\n\n\n\n\n\n\n"
  },
  {
    "path": "unused/vendor/etc/init/vendor.dolby.hardware.dms@1.0-service.rc",
    "content": "service dms-hal-1-0 /vendor/bin/hw/vendor.dolby.hardware.dms@1.0-service\n    class hal\n    user media\n    group audio media\non boot\n    mkdir /data/vendor/dolby 0770 media media\n"
  },
  {
    "path": "unused/vendor/etc/media_codecs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<MediaCodecs>\n    <Include href=\"media_codecs_somc_audio.xml\" />\n    <Include href=\"media_codecs_dolby_audio.xml\" />\n</MediaCodecs>\n"
  },
  {
    "path": "unused/vendor/etc/selinux/vendor_file_contexts",
    "content": "/(vendor|system/vendor)/bin/hw/vendor\\.dolby\\.hardware\\.dms@1\\.0-service\t\tu:object_r:hal_dms_default_exec:s0\n/data/vendor/dolby(/.*)?\t\tu:object_r:vendor_data_file:s0"
  },
  {
    "path": "unused/vendor/etc/selinux/vendor_hwservice_contexts",
    "content": "vendor.dolby.hardware.dms::IDms          u:object_r:hal_dms_hwservice:s0"
  },
  {
    "path": "update.sh",
    "content": "copy_library() {\nDIR=`find /data/app -type d -name *$PKG*`\nDES=$DIR/lib/$ARCH\nif [ \"$ARCH\" ]; then\n  if echo \"$ABI\" | grep 64; then\n    if echo $DES | grep $PKG; then\n      mkdir -p $DES\n      for NAMES in $NAME; do\n        if [ -f /system/lib64/$NAMES ]; then\n          cp -f /system/lib64/$NAMES $DES\n        else\n          cp -f /system/apex/*/lib64/$NAMES $DES\n          cp -f /apex/*/lib64/$NAMES $DES\n        fi\n      done\n      chmod 0755 $DIR/*\n      chown -R 1000.1000 $DIR/lib\n    fi\n  else\n    if echo $DES | grep $PKG; then\n      mkdir -p $DES\n      for NAMES in $NAME; do\n        if [ -f /system/lib/$NAMES ]; then\n          cp -f /system/lib/$NAMES $DES\n        else\n          cp -f /system/apex/*/lib/$NAMES $DES\n          cp -f /apex/*/lib/$NAMES $DES\n        fi\n      done\n      chmod 0755 $DIR/*\n      chown -R 1000.1000 $DIR/lib\n    fi\n  fi\nfi\n}\n\nABI=`getprop ro.product.cpu.abi`\nif [ \"$ABI\" == arm64-v8a ]; then\n  ARCH=arm64\nelif [ \"$ABI\" == armeabi-v7a ] || [ \"$ABI\" == armeabi ]; then\n  ARCH=arm\nelif [ \"$ABI\" == x86_64 ]; then\n  ARCH=x64\nelif [ \"$ABI\" == x86 ]; then\n  ARCH=x86\nelif [ \"$ABI\" == mips64 ]; then\n  ARCH=mips64\nelif [ \"$ABI\" == mips ]; then\n  ARCH=mips\nfi\nPKG=com.sonyericsson.soundenhancement\nNAME=\"libhscomp_jni.so libhscomp.so\"\ncopy_library\n\n\n\n\n"
  }
]