code:
# Copyright (c) 2013-2018, 2020 The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above
#       copyright notice, this list of conditions and the following
#       disclaimer in the documentation and/or other materials provided
#       with the distribution.
#     * Neither the name of The Linux Foundation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
# ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#

on early-init
    write /proc/sys/kernel/sched_boost 1

on init
    write /dev/stune/foreground/schedtune.sched_boost_no_override 1
    write /dev/stune/top-app/schedtune.sched_boost_no_override 1
    write /dev/stune/schedtune.colocate 0
    write /dev/stune/background/schedtune.colocate 0
    write /dev/stune/foreground/schedtune.colocate 0
    write /dev/stune/top-app/schedtune.colocate 1

    write /sys/devices/virtual/graphics/fb0/idle_time 100

on fs
    wait /dev/block/platform/soc/${ro.boot.bootdevice}
    symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice
    mount_all /vendor/etc/fstab.qcom
    chown root system /mnt/vendor/persist
    chmod 0771 /mnt/vendor/persist
    mkdir /mnt/vendor/persist/data 0700 system system
    mkdir /mnt/vendor/persist/bms 0700 root system
    restorecon_recursive /mnt/vendor/persist
    write /sys/kernel/boot_adsp/boot 1

    mkdir /mnt/vendor/dsp 0770 root root
    copy /vendor/dsp/cdsp/fastrpc_shell_3 /mnt/vendor/dsp/fastrpc_shell_3
    chmod 0644 /mnt/vendor/dsp/fastrpc_shell_3
    mount none /mnt/vendor/dsp/fastrpc_shell_3 /vendor/dsp/cdsp/fastrpc_shell_3 bind

on post-fs
    start vendor.qseecomd
    wait_for_prop vendor.sys.listeners.registered true
    write /dev/ipa 1

on init
    write /sys/module/qpnp_rtc/parameters/poweron_alarm 1

on boot
    start vendor.rmt_storage
    start vendor.rfs_access
    write /dev/cpuset/top-app/cpus 0-7
    write /dev/cpuset/foreground/cpus 0-7
    write /dev/cpuset/foreground/boost/cpus 0-7
    write /dev/cpuset/background/cpus 0-1
    write /dev/cpuset/system-background/cpus 0-3
    write /dev/cpuset/restricted/cpus 0-7

    # Wifi firmware reload path
    chown wifi wifi /sys/module/wlan/parameters/fwpath

    #USB controller configuration
    setprop vendor.usb.rndis.func.name "rndis_bam"
    setprop vendor.usb.rmnet.func.name "rmnet_bam"
    setprop vendor.usb.rmnet.inst.name "rmnet"
    setprop vendor.usb.dpl.inst.name "dpl"
    setprop vendor.usb.qdss.inst.name "qdss"
    setprop vendor.usb.controller a800000.dwc3
    setprop sys.usb.configfs 1
    write /sys/module/usb_f_qcrndis/parameters/rndis_dl_max_xfer_size 15916

on boot && property:persist.vendor.usb.controller.default=*
    setprop vendor.usb.controller ${persist.vendor.usb.controller.default}

on property:vendor.usb.controller=*
    setprop sys.usb.controller ${vendor.usb.controller}
    write /sys/module/usb_f_qcrndis/parameters/rndis_dl_max_xfer_size 15916

#Peripheral manager
service vendor.per_mgr /system/vendor/bin/pm-service
    class core
    user system
    group system
    ioprio rt 4
    task_profiles ServiceCapacityLow

service vendor.per_proxy /system/vendor/bin/pm-proxy
    class core
    user system
    group system
    task_profiles ServiceCapacityLow
    disabled

on property:init.svc.vendor.per_mgr=running
    start vendor.per_proxy

on property:sys.shutdown.requested=*
    stop vendor.per_proxy

service vendor.qseecomd /vendor/bin/qseecomd
   class core
   user root
   group root

service thermal-engine /system/vendor/bin/thermal-engine
   class main
   user root
   socket thermal-send-client stream 0666 system system
   socket thermal-recv-client stream 0660 system system
   socket thermal-recv-passive-client stream 0666 system system
   socket thermal-send-rule stream 0660 system system
   group root

service adsprpcd_root /vendor/bin/adsprpcd
   class main
   user media
   group media

service adsprpcd /vendor/bin/adsprpcd audiopd
   class main
   user media
   group media

service vendor.cdsprpcd /vendor/bin/cdsprpcd
   class main
   user system
   group system
   task_profiles ServiceCapacityLow
   disabled

service vendor.pd_mapper /system/vendor/bin/pd-mapper
     class core

service ppd /system/vendor/bin/mm-pp-dpps
    class late_start
    user system
    group system graphics
    socket pps stream 0660 system system
    task_profiles ServiceCapacityLow
    disabled

on property:init.svc.surfaceflinger=stopped
    stop ppd

on property:init.svc.surfaceflinger=running
    start ppd

on property:init.svc.surfaceflinger=restarting
    stop ppd

on property:init.svc.zygote=stopped
    stop ppd

on property:init.svc.zygote=running
    start ppd

on property:init.svc.zygote=restarting
    stop ppd

on property:init.svc.vendor.charger=running
    # Keep one LITTLE and one BIG
    write /sys/devices/system/cpu/cpu1/online 0
    write /sys/devices/system/cpu/cpu2/online 0
    write /sys/devices/system/cpu/cpu3/online 0
    write /sys/devices/system/cpu/cpu5/online 0
    write /sys/devices/system/cpu/cpu6/online 0
    write /sys/devices/system/cpu/cpu7/online 0

    start qcom-post-boot
    start vendor.hvdcp_opti
    setprop vendor.usb.controller a800000.dwc3
    setprop sys.usb.configfs 1
    start vendor.power_off_alarm

service vendor.hvdcp_opti /system/vendor/bin/hvdcp_opti
     class main
     user root
     group system wakelock
     task_profiles ServiceCapacityLow


code:
# Copyright (c) 2012-2015, 2017-2020, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the name of The Linux Foundation nor
#       the names of its contributors may be used to endorse or promote
#       products derived from this software without specific prior written
#       permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#

# Firmware directory Path
# Below macro will be read by uevent and path will
# be added to search path for firmware loading
firmware_directories /vendor/firmware_mnt/image/

# the DIAG device node is not world writable/readable.
/dev/diag                 0660   system     oem_2901

/dev/genlock              0666   system     system
/dev/wlan                 0660   wifi       wifi
/dev/kgsl                 0666   system     system
/dev/kgsl-3d0             0666   system     system
/dev/kgsl-2d0             0666   root       root
/dev/kgsl-2d1             0666   root       root
/dev/ion                  0664   system     system
/dev/rtc0                 0660   system     system
/dev/smd0                 0660   system     system
/dev/smd4                 0660   system     system
/dev/smd_cxm_qmi          0640   radio      radio
/dev/smd5                 0660   system     system
/dev/smd6                 0660   system     system
/dev/smd7                 0660   bluetooth  bluetooth
/dev/ccid_bridge          0660   system     system
/dev/ipa                  0660   radio      radio
/dev/wwan_ioctl           0660   radio      radio
/dev/ipaNatTable          0660   radio      radio
/dev/rmnet_ctrl           0660   usb        usb
/dev/dpl_ctrl             0660   usb        usb
/dev/ipa_odl_ctl          0660   radio      radio
/dev/ipa_adpl             0660   system     oem_2905
/dev/synx_device          0660   root       camera
/dev/hab                  0666   system     system

#permissions for CSVT
/dev/smd11                0660   radio      radio

#permsissions for BT/FM
/dev/smd2                 0660   bluetooth  bluetooth
/dev/smd3                 0660   bluetooth  bluetooth
/dev/btpower              0660   bluetooth  system

#permissions for pta
/dev/pta                  0660   system     system

/dev/radio0               0640   system     system
/dev/rfcomm0              0660   bluetooth  bluetooth
/dev/ttyUSB0              0660   bluetooth  bluetooth
/dev/smdcntl0             0640   radio      radio
/dev/smdcntl1             0640   radio      radio
/dev/smdcntl2             0640   radio      radio
/dev/smdcntl3             0640   radio      radio
/dev/smdcntl4             0640   radio      radio
/dev/smdcntl5             0640   radio      radio
/dev/smdcntl6             0640   radio      radio
/dev/smdcntl7             0640   radio      radio
/dev/smdcntl8             0640   radio      radio
/dev/smdcnt_rev0          0640   radio      radio
/dev/smdcnt_rev1          0640   radio      radio
/dev/smdcnt_rev2          0640   radio      radio
/dev/smdcnt_rev3          0640   radio      radio
/dev/smdcnt_rev4          0640   radio      radio
/dev/smdcnt_rev5          0640   radio      radio
/dev/smdcnt_rev6          0640   radio      radio
/dev/smdcnt_rev7          0640   radio      radio
/dev/smdcnt_rev8          0640   radio      radio
/dev/smuxctl32            0640   radio      radio
/dev/sdioctl0             0640   radio      radio
/dev/sdioctl1             0640   radio      radio
/dev/sdioctl2             0640   radio      radio
/dev/sdioctl3             0640   radio      radio
/dev/sdioctl4             0640   radio      radio
/dev/sdioctl5             0640   radio      radio
/dev/sdioctl6             0640   radio      radio
/dev/sdioctl7             0640   radio      radio
/dev/sdioctl8             0640   radio      radio
/dev/rmnet_mux_ctrl       0640   radio      radio
/dev/hsicctl0             0640   radio      radio
/dev/hsicctl1             0640   radio      radio
/dev/hsicctl2             0640   radio      radio
/dev/hsicctl3             0640   radio      radio
/dev/hsicctl4             0640   radio      radio
/dev/hsicctl5             0640   radio      radio
/dev/hsicctl6             0640   radio      radio
/dev/hsicctl7             0640   radio      radio
/dev/hsicctl8             0640   radio      radio
/dev/hsicctl9             0640   radio      radio
/dev/hsicctl10            0640   radio      radio
/dev/hsicctl11            0640   radio      radio
/dev/hsicctl12            0640   radio      radio
/dev/hsicctl13            0640   radio      radio
/dev/hsicctl14            0640   radio      radio
/dev/hsicctl15            0640   radio      radio
/dev/hsicctl16            0640   radio      radio
/dev/mhi_*_pipe_14        0640   radio      radio
/dev/mhi_*_pipe_16        0640   radio      radio
/dev/mhi_*_pipe_32        0640   radio      radio
/dev/at_usb0              0640   radio      radio
/dev/at_mdm0              0640   radio      radio
/dev/video*               0660   system     camera
/dev/cvp*                 0660   system     camera
/dev/media*               0660   system     camera
/dev/v4l-subdev*          0660   system     camera
/dev/qseecom              0660   system     drmrpc
/dev/qce                  0660   system     drmrpc
/dev/smcinvoke            0660   system     drmrpc
/dev/qsee_ipc_irq_spss    0660   system     drmrpc
/dev/seemplog             0660   system     system
/dev/pft                  0660   system     drmrpc
/dev/spcom                0660   system     system
/dev/spss_utils           0660   system     system
/dev/sp_kernel            0660   system     system
/dev/sp_nvm               0660   system     system
/dev/sp_ssr               0660   system     system
/dev/sp_keymaster         0660   system     system
/dev/sec_nvm_*            0660   system     system
/dev/cryptoapp            0660   system     system
/dev/spdaemon_ssr         0660   system     system
/dev/spu_hal_ssr          0660   system     system
/dev/iuicc*               0660   system     system
/dev/gemini0              0660   system     camera
/dev/jpeg0                0660   system     camera
/dev/jpeg1                0660   system     camera
/dev/jpeg2                0660   system     camera
/dev/jpeg3                0660   system     camera
/dev/adsprpc-smd          0664   system     system
/dev/adsprpc-smd-secure   0644   system     system
/dev/system_health_monitor 0644  radio      system
/dev/mdss_rotator         0664   system     system

#QDSS
/dev/byte-cntr            0660   system    oem_2902
/dev/mhi_qdss             0660   system    oem_2902
/sys/class/qdss_bridge/mhi_qdss  mode      0660     system   oem_2902

#qg
/dev/qg                   0660  system     system
/dev/qg_battery           0660  system     system

#qvr
/dev/qvr_external_sensor_ioctl      0660  system  system
/sys/kernel/qvr_external_sensor/fd  0660  system  system

# wlan
/dev/wcnss_wlan           0660   system     system
/dev/wcnss_ctrl           0660   system     system
/sys/devices/soc/a000000.qcom,wcnss-wlan/net/wlan0/queues/rx-* rps_cpus           0660   system     system
/sys/devices/soc/a000000.qcom,wcnss-wlan/net/p2p0/queues/rx-* rps_cpus            0660   system     system
/dev/spidev0.0            0660   system     audio
/dev/i2c-7                0660   system     audio
/dev/msm_camera/*         0660   system     camera
/dev/gemini/              0660   system     camera
/dev/mercury0             0660   system     camera
/dev/msm_vidc_reg         0660   system     audio
/dev/msm_vidc_dec         0660   system     audio
/dev/msm_vidc_dec_sec     0660   system     audio
/dev/msm_vidc_enc         0660   system     audio
/dev/msm_rotator          0660   system     system
/dev/sdsprpc-smd          0660   system     system

#permissions for audio
/dev/wcd_dsp0_control     0660   system     audio
/dev/wcd-dsp-glink        0660   system     audio
/dev/audio_slimslave      0660   system     audio
/dev/msm_qcelp            0660   system     audio
/dev/msm_evrc             0660   system     audio
/dev/msm_wma              0660   system     audio
/dev/msm_wmapro           0660   system     audio
/dev/msm_alac             0660   system     audio
/dev/msm_ape              0660   system     audio
/dev/msm_amrnb            0660   system     audio
/dev/msm_amrwb            0660   system     audio
/dev/msm_amrwbplus        0660   system     audio
/dev/msm_aac              0660   system     audio
/dev/msm_multi_aac        0660   system     audio
/dev/msm_aac_in           0660   system     audio
/dev/msm_qcelp_in         0660   system     audio
/dev/msm_evrc_in          0660   system     audio
/dev/msm_amrnb_in         0660   system     audio
/dev/msm_amrwb_in         0660   system     audio
/dev/msm_a2dp_in          0660   system     audio
/dev/msm_ac3              0660   system     audio
/dev/msm_audio_cal        0660   system     audio
/dev/msm_hweffects        0660   system     audio
/dev/msm_cad              0660   system     audio
/dev/msm_fm               0660   system     audio
/dev/msm_mvs              0660   system     audio
/dev/msm_pcm_lp_dec       0660   system     audio
/dev/msm_preproc_ctl      0660   system     audio
/dev/msm_rtac             0660   system     audio
/dev/msm_voicememo        0660   system     audio
/dev/ttyHSL1              0660   system     system
/dev/ttyHS1               0660   system     system
/dev/mdm                  0660   system     radio
/sys/devices/virtual/smdpkt/smdcntl*       open_timeout   0664 radio radio
/dev/sdio_tty_ciq_00      0660   system     system
/dev/tty_sdio_00          0660   system     system
/dev/ttyGS0               0660   system     system
/dev/i2c-5                0660   media       media
/dev/avtimer              0660   system     audio
/dev/spidev2.0            0660   system     audio
/dev/aud_pasthru_adsp     0660   system     audio
# DVB devices
/dev/dvb/adapter0/demux*  0440   media       media
/dev/dvb/adapter0/dvr*    0660   media       media
/dev/dvb/adapter0/video*  0660   media       media

# Broadcast devices
/dev/tsc_mux0             0660   media       media
/dev/tsc_ci0              0660   media       media

# sensors
/dev/sensors              0660   system     system
/sys/devices/i2c-12/12-*  pollrate_ms 0664 system system
/sys/devices/f9925000.i2c/i2c-0/0-*                 enable         0660    input    system
/sys/devices/f9925000.i2c/i2c-0/0-*                 poll_delay     0660    input    system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-*            enable         0660    input    system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-*            poll_delay     0660    input    system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-*            enable_wakeup  0660    input    system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-*            max_latency    0660    input    system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-*            flush          0660    input    system
/sys/devices/soc.0/78b6000.i2c/i2c-0/0-*            calibrate      0660    input    system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-*            enable         0660    input    system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-*            poll_delay     0660    input    system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-*            enable_wakeup  0660    input    system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-*            max_latency    0660    input    system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-*            flush          0660    input    system
/sys/devices/soc.0/78b5000.i2c/i2c-1/1-*            calibrate      0660    input    system
/sys/devices/virtual/optical_sensors/proximity      ps_adc         0660    input    system
/sys/devices/virtual/optical_sensors/proximity      ps_poll_delay  0660    input    system
/sys/devices/virtual/optical_sensors/lightsensor    ls_auto        0660    input    system
/sys/devices/virtual/optical_sensors/lightsensor    ls_poll_delay  0660    input    system
/sys/devices/virtual/input/input*                   poll           0660    input    system
/sys/devices/virtual/input/input*                   pollrate_ms    0660    input    system
/sys/devices/soc/78b7000.i2c/i2c-3/3-0020/input/input*    secure_touch         0440   system  drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-0020/input/input*    secure_touch_enable  0660   system  drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-0038/input/input*    secure_touch         0440   system  drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-0038/input/input*    secure_touch_enable  0660   system  drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-004b/input/input*    secure_touch         0440   system  drmrpc
/sys/devices/soc/78b7000.i2c/i2c-3/3-004b/input/input*    secure_touch_enable  0660   system  drmrpc
/sys/devices/soc/c179000.i2c/i2c-5/5-0020/input/input*    secure_touch         0440   system  drmrpc
/sys/devices/soc/c179000.i2c/i2c-5/5-0020/input/input*    secure_touch_enable  0660   system  drmrpc
/sys/devices/platform/soc/a98000.i2c/i2c-2/2-0020/input/input*  secure_touch          0440 system drmrpc
/sys/devices/platform/soc/a98000.i2c/i2c-2/2-0020/input/input*  secure_touch_enable   0660 system drmrpc
/sys/devices/platform/soc/a84000.i2c/i2c-2/2-0020/input/input*  secure_touch          0440 system drmrpc
/sys/devices/platform/soc/a84000.i2c/i2c-2/2-0020/input/input*  secure_touch_enable   0660 system drmrpc

# GNSS Device premissions
/dev/gnss_sirf             0660   gps     gps

# laser sensor access
/sys/devices/virtual/input/input*                   enable_ps_sensor 0660  system   input
/sys/devices/virtual/input/input*                   set_delay_ms     0660  system   input
/sys/devices/virtual/input/input*                   do_flush         0660  system   input

# vm_bms
/dev/vm_bms               0660   system     system
/dev/battery_data         0660   system     system

# wlan
/dev/wcnss_wlan           0660   system     system
/dev/wcnss_ctrl           0660   system     system
/sys/devices/soc/600000.qcom,pcie/pci0000:00/0000:00:00.0/0000:01:00.0/net/wlan0/queues/rx-* rps_cpus 0660 system system
/sys/devices/soc/600000.qcom,pcie/pci0000:00/0000:00:00.0/0000:01:00.0/net/p2p0/queues/rx-* rps_cpus 0660 system system

# wigig
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/wil6210/fst_link_loss 0660 wifi wifi
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/wil6210/thermal_throttling 0660 system system
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/wil6210/snr_thresh 0660 wifi wifi
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/net/wigig0/queues/rx-0/rps_cpus 0660 system system
/sys/bus/pci/drivers/wil6210* 0000:01:00.0/net/wigig0/gro_flush_timeout 0660 system system
/sys/devices/virtual/net/bond0 queues/rx-0/rps_cpus 0660 system system
/dev/wigig_sensing        0660   system     system

#nfc permissions
/dev/nfc-nci              0660    nfc         nfc
/dev/nq-nci               0660    nfc         nfc
/dev/assd                 0660    nfc         nfc

# UIO devices
/dev/uio0                 0660   system     system
/dev/uio1                 0660   system     system
/dev/uio2                 0660   system     system

# SSR devices
/dev/subsys_*         0640   system     system

# Ultrasound device
/dev/usf1                 0660   system     system

# Ramdump devices
/dev/ramdump*             0640   system     system

# Fingerprint device
/dev/focaltech_fp         0660   system     system
/dev/fpsdev0              0660   system     system
/dev/goodix_fp            0660   system     system
/dev/qbt*                 0660   system     system
/sys/class/fts/touch_aoi aoi_set 0660 root system
/sys/class/fts/touch_aoi power_set 0660 root system

#ImproveTouch device
/dev/hbtp_input           0660   system     system
/dev/hbtp_vm              0660   system     system

# Add device block for FRP
/dev/block/platform/soc/7824900.sdhci/by-name/config    0600   system     system
/dev/block/platform/soc/7464900.sdhci/by-name/frp       0600   system     system
/dev/block/platform/soc/624000.ufshc/by-name/frp        0600   system     system
/dev/block/platform/soc/1da4000.ufshc/by-name/frp       0600   system     system
/dev/block/platform/soc/c0c4000.sdhci/by-name/frp       0600   system     system
/dev/block/platform/soc/1d84000.ufshc/by-name/frp       0600   system     system
/dev/block/platform/soc/7c4000.sdhci/by-name/frp        0600   system     system
/dev/block/platform/soc/4744000.sdhci/by-name/frp       0600   system     system
/dev/block/platform/soc/4804000.ufshc/by-name/frp       0600   system     system

# This is temporary while using SD card for initial bring-up
/dev/block/platform/soc/8804000.sdhci/by-name/frp       0600   system     system

# Kmsg device
/dev/kmsg                                               0620   root       system

# LED class devices
/sys/class/leds/red      delay_on     0640    system    system
/sys/class/leds/red      delay_off    0640    system    system
/sys/class/leds/red      breath       0640    system    system
/sys/class/leds/green    delay_on     0640    system    system
/sys/class/leds/green    delay_off    0640    system    system
/sys/class/leds/green    breath       0640    system    system
/sys/class/leds/blue     delay_on     0640    system    system
/sys/class/leds/blue     delay_off    0640    system    system
/sys/class/leds/blue     breath       0640    system    system

# NPU device
/dev/msm_npu             0644   system     system

# USB role switch
/sys/class/dual_role_usb/*	data_role	0660	system	system
/sys/class/dual_role_usb/*	power_role	0660	system	system
/sys/class/dual_role_usb/*	mode		0660	system	system

#Memory Offline
/sys/devices/system/memory/memory* state    0660 system system

/sys/devices/virtual/hdcp/msm_hdcp  min_level_change 0664    system  graphics

# sys-fs display
/sys/class/graphics/fb*     hpd                      0664    system  graphics
/sys/class/graphics/fb*     res_info                 0664    system  graphics
/sys/class/graphics/fb*     vendor_name              0664    system  graphics
/sys/class/graphics/fb*     product_description      0664    system  graphics
/sys/class/graphics/fb*     video_mode               0664    system  graphics
/sys/class/graphics/fb*     format_3d                0664    system  graphics
/sys/class/graphics/fb*     s3d_mode                 0664    system  graphics
/sys/class/graphics/fb*     dynamic_fps              0664    system  graphics
/sys/class/graphics/fb*     msm_fb_dfps_mode         0664    system  graphics
/sys/class/graphics/fb*     hdr_stream               0664    system  graphics
/sys/class/graphics/fb*     cec/enable               0664    system  graphics
/sys/class/graphics/fb*     cec/logical_addr         0664    system  graphics
/sys/class/graphics/fb*     cec/rd_msg               0664    system  graphics
/sys/class/graphics/fb*     pa                       0664    system  graphics
/sys/class/graphics/fb*     cec/wr_msg               0600    system  graphics
/sys/class/graphics/fb*     hdcp/tp                  0664    system  graphics
/sys/class/graphics/fb*     hdcp2p2/min_level_change 0660    system  graphics
/sys/class/graphics/fb*     hdmi_audio_cb            0600    audioserver audio

/sys/class/graphics/fb*     lineptr_value            0664    system  graphics
/sys/class/graphics/fb*     msm_fb_persist_mode      0664    system  graphics

/sys/class/graphics/fb0     idle_time                0664    system  graphics
/sys/class/graphics/fb0     dynamic_fps              0664    system  graphics
/sys/class/graphics/fb0     dyn_pu                   0664    system  graphics
/sys/class/graphics/fb0     modes                    0664    system  graphics
/sys/class/graphics/fb0     mode                     0664    system  graphics
/sys/class/graphics/fb0     msm_cmd_autorefresh_en   0664    system  graphics
/sys/class/kgsl/kgsl-3d0    pwrscale                 0664    root  system
/sys/class/kgsl/kgsl-3d0    devfreq/governor         0664    root  system
/sys/class/kgsl/kgsl-3d0    force_rail_on            0664    root  system
/sys/class/kgsl/kgsl-3d0    force_bus_on             0664    root  system
/sys/class/kgsl/kgsl-3d0    force_clk_on             0664    root  system
/sys/class/kgsl/kgsl-3d0    bus_split                0664    root  system

license: unknown


code:
runtime_resource_overlay {
    name: "TetheringConfigOverlay",
    theme: "TetheringConfigOverlay",
    sdk_version: "current",
    product_specific: true
}


code:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.networkstack.tethering.asus_sdm660"
    android:versionCode="1"
    android:versionName="1.0">
    <application android:hasCode="false" />
    <overlay
      android:targetPackage="com.android.networkstack.tethering"
      android:targetName="TetheringConfig"
      android:isStatic="true"
      android:priority="0"/>
</manifest>


code:
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2020, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">

    <!-- List of regexpressions describing the interface (if any) that represent tetherable
         USB interfaces.  If the device doesn't want to support tethering over USB this should
         be empty.  An example would be "usb.*" -->
    <string-array translatable="false" name="config_tether_usb_regexs">
        <item>"usb\\d"</item>
        <item>"rndis\\d"</item>
    </string-array>

    <!-- List of regexpressions describing the interface (if any) that represent tetherable
         Wifi interfaces.  If the device doesn't want to support tethering over Wifi this
         should be empty.  An example would be "softap.*" -->
    <string-array translatable="false" name="config_tether_wifi_regexs">
        <item>"wlan\\d"</item>
    </string-array>

    <!-- List of regexpressions describing the interface (if any) that represent tetherable
         Wifi P2P interfaces.  If the device doesn't want to support tethering over Wifi P2p this
         should be empty.  An example would be "p2p-p2p.*" -->
    <string-array translatable="false" name="config_tether_wifi_p2p_regexs">
        <item>"p2p\\d"</item>
    </string-array>

    <!-- List of regexpressions describing the interface (if any) that represent tetherable
         bluetooth interfaces.  If the device doesn't want to support tethering over bluetooth this
         should be empty. -->
    <string-array translatable="false" name="config_tether_bluetooth_regexs">
        <item>"bt-pan"</item>
    </string-array>

</resources>


code:
runtime_resource_overlay {
    name: "WifiOverlay",
    theme: "WifiOverlay",
    sdk_version: "current",
    product_specific: true
}


code:
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2019 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<!-- Pixel specific wifi overlays -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.wifi.resources.asus_sdm660"
    android:versionCode="1"
    android:versionName="1.0">
    <application android:hasCode="false" />
    <overlay
      android:targetPackage="com.android.wifi.resources"
      android:targetName="WifiCustomization"
      android:isStatic="true"
      android:priority="0"/>
</manifest>


code:
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2019 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<!-- These resources are around just to allow their values to be customized
     for different hardware and product builds.  Do not translate.

     NOTE: The naming convention is "config_camelCaseValue". Some legacy
     entries do not follow the convention, but all new entries should. -->

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <!-- Boolean indicating whether 802.11r Fast BSS Transition is enabled on this platform -->
    <bool translatable="false" name="config_wifi_fast_bss_transition_enabled">true</bool>

    <!-- Boolean indicating whether the wifi chipset supports background scanning mechanism.
         This mechanism allows the host to remain in suspend state and the dongle to actively
         scan and wake the host when a configured SSID is detected by the dongle. This chipset
         capability can provide power savings when wifi needs to be always kept on. -->
    <bool translatable="false" name="config_wifi_background_scan_support">true</bool>

    <!-- Boolean indicating whether or not wifi should turn off when emergency call is made -->
    <bool translatable="false" name="config_wifi_turn_off_during_emergency_call">true</bool>

    <!-- Configure wifi tcp buffersizes in the form:
         rmem_min,rmem_def,rmem_max,wmem_min,wmem_def,wmem_max -->
    <string name="config_wifi_tcp_buffers" translatable="false">524288,2097152,8388608,262144,524288,4194304</string>

    <!-- Wifi driver supports Automatic channel selection (ACS) for softap -->
    <bool translatable="false" name="config_wifi_softap_acs_supported">true</bool>

    <!-- Wifi driver supports IEEE80211AC for softap -->
    <bool translatable="false" name="config_wifi_softap_ieee80211ac_supported">true</bool>

    <!-- Indicates that connected MAC randomization is supported on this device -->
    <bool name="config_wifi_connected_mac_randomization_supported">true</bool>

    <!-- Indicates that p2p MAC randomization is supported on this device -->
    <bool name="config_wifi_p2p_mac_randomization_supported">true</bool>

    <!-- Indicates that AP mode MAC randomization is supported on this device -->
    <bool name="config_wifi_ap_mac_randomization_supported">true</bool>

    <!-- Indicates that wifi link probing is supported on this device -->
    <bool name="config_wifi_link_probing_supported">true</bool>

    <!-- Indicates that a full bugreport should be triggered when wifi diagnostics detects an error on non-user (i.e debug) builds -->
    <bool translatable="false" name="config_wifi_diagnostics_bugreport_enabled">true</bool>

    <!-- Integer indicating maximum hardware supported client number of soft ap -->
    <integer translatable="false" name="config_wifiHardwareSoftapMaxClientCount">32</integer>

    <!-- Boolean indicating whether framework needs to set the tx power limit for meeting SAR requirements -->
    <bool translatable="false" name="config_wifi_framework_enable_sar_tx_power_limit">true</bool>
</resources>


code:
#
# Copyright (C) 2020 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#

# Inherit the proprietary files
$(call inherit-product, vendor/asus/sdm660-common/sdm660-common-vendor.mk)

# Enable updating of APEXes
$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
PRODUCT_COMPRESSED_APEX := false

# Default is nosdcard, S/W button enabled in resource
PRODUCT_CHARACTERISTICS := nosdcard

# AID/fs configs
PRODUCT_PACKAGES += \
    fs_config_files

# Audio
PRODUCT_PACKAGES += \
    android.hardware.audio@6.0-impl \
    android.hardware.audio.effect@6.0-impl \
    android.hardware.audio.effect@2.0-service \
    android.hardware.audio.service

PRODUCT_PACKAGES += \
    audio.a2dp.default \
    audio_amplifier.sdm660 \
    audio.bluetooth.default \
    audio.primary.sdm660 \
    audio.r_submix.default \
    audio.usb.default \
    libaudio-resampler \
    libaudioroute \
    libqcompostprocbundle \
    libqcomvisualizer \
    libqcomvoiceprocessing \
    libvolumelistener

PRODUCT_PACKAGES += \
    libhdmiedid \
    libhfp \
    libsndmonitor \
    libspkrprot \
    libssrec

# Audio Configs
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/audio/audio_configs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_configs.xml \
    $(LOCAL_PATH)/audio/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
    $(LOCAL_PATH)/audio/audio_output_policy.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_output_policy.conf \
    $(LOCAL_PATH)/audio/audio_platform_info_intcodec.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info_intcodec.xml \
    $(LOCAL_PATH)/audio/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
    $(LOCAL_PATH)/audio/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio_tuning_mixer.txt \
    $(LOCAL_PATH)/audio/graphite_ipc_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/graphite_ipc_platform_info.xml \
    $(LOCAL_PATH)/audio/listen_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/listen_platform_info.xml \
    $(LOCAL_PATH)/audio/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml

PRODUCT_COPY_FILES += \
    frameworks/av/services/audiopolicy/config/a2dp_in_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_in_audio_policy_configuration.xml \
    frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
    frameworks/av/services/audiopolicy/config/bluetooth_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration.xml \
    frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
    frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \

# ANT+
PRODUCT_PACKAGES += \
    AntHalService-Soong \
    com.dsi.ant@1.0.vendor

# Bluetooth
PRODUCT_PACKAGES += \
    android.hardware.bluetooth.audio@2.1-impl \
    android.hardware.bluetooth@1.0.vendor \
    vendor.qti.hardware.btconfigstore@1.0.vendor \
    vendor.qti.hardware.btconfigstore@2.0.vendor

# Camera
PRODUCT_PACKAGES += \
    android.hardware.camera.common@1.0 \
    android.hardware.camera.device@3.4 \
    android.hardware.camera.provider@2.4-impl \
    android.hardware.camera.provider@2.4-service \
    android.hardware.camera.provider@2.5 \
    vendor.qti.hardware.camera.device@1.0

# Cgroup and task_profiles
PRODUCT_COPY_FILES += \
    system/core/libprocessgroup/profiles/cgroups_28.json:$(TARGET_COPY_OUT_VENDOR)/etc/cgroups.json \
    system/core/libprocessgroup/profiles/task_profiles_28.json:$(TARGET_COPY_OUT_VENDOR)/etc/task_profiles.json

# Charger
PRODUCT_PRODUCT_PROPERTIES += \
    ro.charger.enable_suspend=true

# CNE
PRODUCT_PACKAGES += \
    libcnefeatureconfig

# Component overrides
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/component-overrides.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sysconfig/component-overrides.xml

# Display
PRODUCT_PACKAGES += \
    gralloc.sdm660 \
    hwcomposer.sdm660 \
    memtrack.sdm660 \
    libdisplayconfig \
    libtinyxml \
    libqdMetaData \
    libqdMetaData.system

PRODUCT_PACKAGES += \
    android.hardware.graphics.allocator@2.0-impl \
    android.hardware.graphics.allocator@2.0-service \
    android.hardware.graphics.composer@2.1-service \
    android.hardware.graphics.mapper@2.0-impl-2.1 \
    android.hardware.memtrack@1.0-impl \
    android.hardware.memtrack@1.0-service \
    android.frameworks.displayservice@1.0 \
    android.frameworks.displayservice@1.0.vendor

# Doze mode
PRODUCT_PACKAGES += \
    Doze

# DRM
PRODUCT_PACKAGES += \
    android.hardware.drm@1.0.vendor \
    android.hardware.drm@1.1.vendor \
    android.hardware.drm@1.2.vendor \
    android.hardware.drm@1.3.vendor \
    android.hardware.drm@1.4-service.clearkey

# Fingerprint
PRODUCT_PACKAGES += \
    android.hardware.biometrics.fingerprint@2.1 \
    android.hardware.biometrics.fingerprint@2.1.vendor

# FM
PRODUCT_PACKAGES += \
    android.hardware.broadcastradio@1.0-impl \
    android.hardware.broadcastradio@1.0-service

PRODUCT_PACKAGES += \
    FM2 \
    libqcomfm_jni \
    qcom.fmradio \
    qcom.fmradio.xml

# Gatekeeper
PRODUCT_PACKAGES += \
    android.hardware.gatekeeper@1.0.vendor

# GPS
PRODUCT_PACKAGES += \
    android.hardware.gnss@2.1-impl-qti \
    android.hardware.gnss@2.1-service-qti \
    android.hardware.gnss@1.1.vendor \
    android.hardware.gnss@2.1.vendor \
    libbatching \
    libgeofencing \
    libgnss \
    libgnsspps \
    libsynergy_loc_api \
    libgps.utils \
    liblocation_api \
    libsensorndkbridge \
    libwifi-hal-ctrl

PRODUCT_PACKAGES += \
    apdr.conf \
    gps.conf \
    gnss_antenna_info.conf \
    flp.conf \
    izat.conf \
    lowi.conf \
    sap.conf \
    xtwifi.conf

# Health
PRODUCT_PACKAGES += \
    android.hardware.health@2.1-impl \
    android.hardware.health@2.1-service

# HIDL
PRODUCT_PACKAGES += \
    libhidltransport \
    libhidltransport.vendor \
    libhwbinder \
    libhwbinder.vendor

# Input
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/keylayout/gpio-keys.kl:$(TARGET_COPY_OUT_VENDOR)/usr/keylayout/gpio-keys.kl

# IPACM
PRODUCT_PACKAGES += \
    ipacm \
    IPACM_cfg.xml

# IPC router config
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/sec_config:$(TARGET_COPY_OUT_VENDOR)/etc/sec_config

# IRQ
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/msm_irqbalance.conf:$(TARGET_COPY_OUT_VENDOR)/etc/msm_irqbalance.conf

# Keymaster
PRODUCT_PACKAGES += \
    android.hardware.keymaster@3.0.vendor

# Lights
PRODUCT_PACKAGES += \
    android.hardware.light@2.0-service.asus_sdm660

# LiveDisplay native
PRODUCT_PACKAGES += \
    vendor.lineage.livedisplay@2.0-service-sdm

# Media
PRODUCT_PACKAGES += \
    android.hardware.media.omx@1.0-impl \
    libavservices_minijail \
    libavservices_minijail.vendor

# Media configs
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/media/media_codecs_vendor.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
    $(LOCAL_PATH)/configs/media/media_codecs_vendor_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_vendor_audio.xml \
    $(LOCAL_PATH)/configs/media/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \
    $(LOCAL_PATH)/configs/media/media_profiles_vendor.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_vendor.xml

PRODUCT_COPY_FILES += \
    frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \
    frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \
    frameworks/av/media/libstagefright/data/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml

# Network
PRODUCT_PACKAGES += \
    android.system.net.netd@1.1.vendor

# NFC
PRODUCT_COPY_FILES += \
    frameworks/native/data/etc/android.hardware.nfc.hce.xml:$(TARGET_COPY_OUT_ODM)/etc/permissions/sku_NFC/android.hardware.nfc.hce.xml \
    frameworks/native/data/etc/android.hardware.nfc.hcef.xml:$(TARGET_COPY_OUT_ODM)/etc/permissions/sku_NFC/android.hardware.nfc.hcef.xml \
    frameworks/native/data/etc/android.hardware.nfc.xml:$(TARGET_COPY_OUT_ODM)/etc/permissions/sku_NFC/android.hardware.nfc.xml \
    frameworks/native/data/etc/com.android.nfc_extras.xml:$(TARGET_COPY_OUT_ODM)/etc/permissions/sku_NFC/com.android.nfc_extras.xml \
    frameworks/native/data/etc/com.nxp.mifare.xml:$(TARGET_COPY_OUT_ODM)/etc/permissions/sku_NFC/com.nxp.mifare.xml

PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/nfc/libnfc-nci.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nci.conf \
    $(LOCAL_PATH)/configs/nfc/libnfc-nxp.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-nxp.conf

PRODUCT_PACKAGES += \
    android.hardware.nfc@1.2-service

PRODUCT_PACKAGES += \
    com.android.nfc_extras \
    NfcNci \
    SecureElement \
    Tag

# OEM Unlock reporting
PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
    ro.oem_unlock_supported=1

# OMX
PRODUCT_PACKAGES += \
    libc2dcolorconvert \
    libmm-omxcore \
    libOmxAacEnc \
    libOmxAmrEnc \
    libOmxCore \
    libOmxEvrcEnc \
    libOmxG711Enc \
    libOmxQcelp13Enc \
    libOmxSwVencHevc \
    libOmxVdec \
    libOmxVenc \
    libstagefrighthw

# Overlays
DEVICE_PACKAGE_OVERLAYS += \
    $(LOCAL_PATH)/overlay \
    $(LOCAL_PATH)/overlay-lineage

PRODUCT_ENFORCE_RRO_TARGETS := *

# Permissions
PRODUCT_COPY_FILES += \
    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml \
    frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml \
    frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml \
    frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \
    frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.flash-autofocus.xml \
    frameworks/native/data/etc/android.hardware.camera.front.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.front.xml \
    frameworks/native/data/etc/android.hardware.camera.full.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.full.xml \
    frameworks/native/data/etc/android.hardware.camera.raw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.raw.xml \
    frameworks/native/data/etc/android.hardware.fingerprint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.fingerprint.xml \
    frameworks/native/data/etc/android.hardware.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.xml \
    frameworks/native/data/etc/android.hardware.opengles.aep.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.opengles.aep.xml \
    frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.accelerometer.xml \
    frameworks/native/data/etc/android.hardware.sensor.compass.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.compass.xml \
    frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \
    frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \
    frameworks/native/data/etc/android.hardware.sensor.proximity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.proximity.xml \
    frameworks/native/data/etc/android.hardware.sensor.stepcounter.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepcounter.xml \
    frameworks/native/data/etc/android.hardware.sensor.stepdetector.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepdetector.xml \
    frameworks/native/data/etc/android.hardware.telephony.cdma.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.cdma.xml \
    frameworks/native/data/etc/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml \
    frameworks/native/data/etc/android.hardware.telephony.ims.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.ims.xml \
    frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \
    frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \
    frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \
    frameworks/native/data/etc/android.hardware.vr.high_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vr.high_performance.xml \
    frameworks/native/data/etc/android.hardware.vulkan.level-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
    frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
    frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \
    frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \
    frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \
    frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \
    frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \
    frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml \
    frameworks/native/data/etc/android.software.opengles.deqp.level-2020-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml \
    frameworks/native/data/etc/android.software.vulkan.deqp.level-2020-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \
    frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml

# Power
PRODUCT_PACKAGES += \
    android.hardware.power-service-qti \
    vendor.qti.hardware.perf@2.2.vendor

# Public Libraries
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/public.libraries.txt:$(TARGET_COPY_OUT_VENDOR)/etc/public.libraries.txt

# QCOM
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/privapp-permissions-qti.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-qti.xml \
    $(LOCAL_PATH)/configs/qti_whitelist.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/sysconfig/qti_whitelist.xml

# QMI
PRODUCT_PACKAGES += \
    libjson \
    libqti_vndfwk_detect.vendor \
    libvndfwk_detect_jni.qti.vendor

PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/qmi_fw.conf:$(TARGET_COPY_OUT_VENDOR)/etc/qmi_fw.conf

# QNS
PRODUCT_PACKAGES += \
    libstdc++.vendor

# QTI Performance
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/perf/perf-profile0.conf:$(TARGET_COPY_OUT_VENDOR)/etc/perf/perf-profile0.conf

# Radio
PRODUCT_PACKAGES += \
    libprotobuf-cpp-full \
    librmnetctl \
    android.hardware.radio@1.6.vendor \
    android.hardware.radio.config@1.3.vendor \
    android.hardware.radio.deprecated@1.0.vendor \
    android.hardware.secure_element@1.1 \
    android.hardware.secure_element@1.2 \
    android.hardware.secure_element@1.1.vendor \
    android.hardware.secure_element@1.2.vendor

# Recovery
PRODUCT_PACKAGES += \
    librecovery_updater_asus

# Ramdisk
PRODUCT_PACKAGES += \
    init.qcom.post_boot.sh \
    init.qcom.sh \
    init.qcom.usb.sh

PRODUCT_PACKAGES += \
    fstab.qcom \
    init.msm.usb.configfs.rc \
    init.qcom.asus.rc \
    init.qcom.rc \
    init.qcom.usb.rc \
    init.recovery.qcom.rc \
    init.target.rc \
    ueventd.qcom.rc

# Seccomp
PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/seccomp/atfwd@2.0.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/atfwd@2.0.policy \
    $(LOCAL_PATH)/configs/seccomp/imsrtp.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/imsrtp.policy \
    $(LOCAL_PATH)/configs/seccomp/mediacodec-seccomp.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/mediacodec.policy

# Sensors
PRODUCT_PACKAGES += \
    android.hardware.sensors@1.0-impl \
    android.hardware.sensors@1.0-service

PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/configs/sensors/hals.conf:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/hals.conf

# Soong namespaces
PRODUCT_SOONG_NAMESPACES += \
    $(LOCAL_PATH)

# Telephony
PRODUCT_PACKAGES += \
    ims-ext-common \
    ims_ext_common.xml \
    qti-telephony-hidl-wrapper \
    qti_telephony_hidl_wrapper.xml \
    qti-telephony-utils \
    qti_telephony_utils.xml \
    telephony-ext

PRODUCT_BOOT_JARS += \
    telephony-ext

# Thermal
PRODUCT_PACKAGES += \
    android.hardware.thermal@2.0-service.qti

# Trust HAL
PRODUCT_PACKAGES += \
    vendor.lineage.trust@1.0-service

# USB
PRODUCT_PACKAGES += \
    android.hardware.usb@1.0-service.basic

# Verity
PRODUCT_SYSTEM_VERITY_PARTITION=/dev/block/bootdevice/by-name/system
PRODUCT_VENDOR_VERITY_PARTITION=/dev/block/bootdevice/by-name/vendor
$(call inherit-product, build/target/product/verity.mk)

# Vibrator
PRODUCT_PACKAGES += \
    vendor.qti.hardware.vibrator.service

# FIXME: master: compat for libprotobuf
# See https://android-review.googlesource.com/c/platform/prebuilts/vndk/v28/+/1109518
PRODUCT_PACKAGES += \
    libprotobuf-cpp-full-vendorcompat \
    libprotobuf-cpp-lite-vendorcompat

# VR
PRODUCT_PACKAGES += \
    android.hardware.vr@1.0-impl \
    android.hardware.vr@1.0-service \
    vr.sdm660

# Wifi
PRODUCT_PACKAGES += \
    android.hardware.wifi@1.0-service \
    hostapd \
    libwifi-hal-qcom \
    libwpa_client \
    TetheringConfigOverlay \
    WifiOverlay \
    wpa_supplicant \
    wpa_supplicant.conf

PRODUCT_COPY_FILES += \
    $(LOCAL_PATH)/wifi/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \
    $(LOCAL_PATH)/wifi/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \
    $(LOCAL_PATH)/wifi/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/WCNSS_qcom_cfg.ini


code: binder_call(system_app, storaged)


code:
allow { appdomain -isolated_app } adsprpcd_file:dir r_dir_perms;
allow { appdomain -isolated_app } public_adsprpcd_file:file r_file_perms;

get_prop(appdomain, exported_camera_prop);


code:
# Biometrics
type cdfinger_device, dev_type;
type fingerprintd_device, dev_type;
type focaltech_device, dev_type;


code:
type cdfinger_data_file, core_data_file_type, data_file_type, file_type;
type public_adsprpcd_file, file_type;
type proc_tpd_gesture, fs_type, proc_type;
type sysfs_call_status, sysfs_type, fs_type;


code:
# Fingerprint
/dev/focaltech_fp                                                             u:object_r:focaltech_device:s0
/dev/fpsdev0                                                                  u:object_r:cdfinger_device:s0
/dev/goodix_fp                                                                u:object_r:fingerprintd_device:s0
/data/system/cdfinger(/.*)?                                                   u:object_r:cdfinger_data_file:s0
/data/vendor/focaltech(/.*)?                                                  u:object_r:fingerprint_vendor_data_file:s0

/(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service_asus      u:object_r:hal_fingerprint_default_exec:s0

# Hexagon DSP-side executable needed for Halide operation
# This is labeled as public_adsprpcd_file as it needs to be read by apps
# (e.g. Google Camera App)
/mnt/vendor/dsp/fastrpc_shell_3                                               u:object_r:public_adsprpcd_file:s0

# Light HAL
/(vendor|system/vendor)/bin/hw/android\.hardware\.light@2\.0-service\.asus_sdm660                u:object_r:hal_light_default_exec:s0

# Persist
/persist(/.*)?                                                                u:object_r:mnt_vendor_file:s0

# Sensors
/sys/devices/virtual/input/input[0-9]+/stk3x[0-9]x-light(/.*)?                    u:object_r:sysfs_sensors:s0
/sys/devices/virtual/input/input[0-9]+/stk3x[0-9]x-proximity(/.*)?                u:object_r:sysfs_sensors:s0

/sys/module/stk3x[0-9]x/parameters/call_status_flag                               u:object_r:sysfs_call_status:s0

# Thermal
/(vendor|system/vendor)/bin/hw/android\.hardware\.thermal@2\.0-service\.qti            u:object_r:hal_thermal_default_exec:s0


code:
# Double tap to wake
genfscon proc /tpd_gesture               u:object_r:proc_tpd_gesture:s0

# LED
genfscon sysfs /devices/soc/800f000.qcom,spmi/spmi-0/spmi0-03/800f000.qcom,spmi:qcom,pm660l@3:qcom,leds@d000/leds                 u:object_r:sysfs_graphics:s0


code: dontaudit hal_audio_default sysfs:dir r_dir_perms;


code: allow hal_bluetooth_qti diag_device:chr_file { read write open ioctl };


code:
allow hal_camera_default sysfs_sensors:dir r_dir_perms;
allow hal_camera_default sysfs_sensors:file r_file_perms;
allow hal_camera_default sysfs_sensors:lnk_file r_file_perms;

set_prop(hal_camera_default, vendor_camera_prop)
set_prop(hal_camera_default, vendor_video_prop)


code:
typeattribute hal_fingerprint_default data_between_core_and_vendor_violators;

vndbinder_use(hal_fingerprint_default)

binder_call(hal_fingerprint_default, hal_perf_default)
binder_call(hal_fingerprint_default, goodix_fingerprint_vndservice)

allow hal_fingerprint_default cdfinger_device:chr_file rw_file_perms;
allow hal_fingerprint_default fingerprintd_device:chr_file rw_file_perms;
allow hal_fingerprint_default focaltech_device:chr_file rw_file_perms;
allow hal_fingerprint_default tee_device:chr_file rw_file_perms;

allow hal_fingerprint_default hal_perf_hwservice:hwservice_manager find;
allow hal_fingerprint_default focaltech_hwservice:hwservice_manager { add find };
allow hal_fingerprint_default focaltech_vndservice:service_manager { add find };
allow hal_fingerprint_default goodix_fingerprint_vndservice:service_manager { add find };

# Allow hal_fingerprint_default to read, write and create files in persist
allow hal_fingerprint_default persist_drm_file:file create_file_perms;
allow hal_fingerprint_default persist_drm_file:dir rw_dir_perms;

allow hal_fingerprint_default self:netlink_kobject_uevent_socket { read create setopt bind };
allow hal_fingerprint_default self:netlink_socket create_socket_perms_no_ioctl;

allow hal_fingerprint_default fingerprintd_data_file:file create_file_perms;
allow hal_fingerprint_default fingerprintd_data_file:dir create_dir_perms;

r_dir_file(hal_fingerprint_default, firmware_file)
r_dir_file(hal_fingerprint_default, sysfs_usb_supply)

set_prop(hal_fingerprint_default, vendor_fingerprint_prop)


code: allow hal_nfc_default nxpese_hwservice:hwservice_manager find;


code:
# Allow powerhal to read/write to dt2w node
allow hal_power_default proc_tpd_gesture:file rw_file_perms;


code:
# Allow hal_sensors_default to set nfc_sensors_prop
set_prop(hal_sensors_default, nfc_sensors_prop)


code: allow hal_wifi_default proc_net:file { w_file_perms };


code:
type focaltech_hwservice, hwservice_manager_type;
type nxpese_hwservice, hwservice_manager_type;


code:
# Biometrics
vendor.focaltech.fingerprint::IFocalFingerprintService                                 u:object_r:focaltech_hwservice:s0
vendor.goodix.hardware.fingerprint::IGoodixBiometricsFingerprint                       u:object_r:hal_fingerprint_hwservice:s0

# NFC
vendor.nxp.nxpese::INxpEse                                                             u:object_r:nxpese_hwservice:s0


code:
dontaudit init bt_firmware_file:filesystem getattr;
dontaudit init firmware_file:filesystem getattr;


code:
allow iorap_prefetcherd vendor_file:file r_file_perms;
allow iorap_prefetcherd backup_data_file:dir r_dir_perms;
allow iorap_prefetcherd backup_data_file:file r_file_perms;
allow iorap_prefetcherd system_app_data_file:dir search;
allow iorap_prefetcherd system_app_data_file:file read;


code:
# Camera
persist.vendor.camera.hdring                  u:object_r:vendor_camera_prop:s0
persist.vendor.camera.pickres.prop_hdr        u:object_r:vendor_camera_prop:s0

# Fingerprint
property.cdfinger.enablesave                  u:object_r:vendor_fingerprint_prop:s0
persist.vendor.runin.fp                       u:object_r:vendor_fingerprint_prop:s0

# NFC
ro.hq.support.nfc                             u:object_r:nfc_sensors_prop:s0


code:
binder_call(radio, cnd)

allow radio hal_datafactory_hwservice:hwservice_manager find;
allow radio hal_iwlan_hwservice:hwservice_manager find;

get_prop(radio, vendor_qcom_ims_prop)


code:
allow system_app sysfs_zram:dir search;
allow system_app sysfs_zram:file r_file_perms;


code:
get_prop(system_server, exported_camera_prop);
get_prop(system_server, userspace_reboot_config_prop)
get_prop(system_server, userspace_reboot_exported_prop)


code:
typeattribute tee data_between_core_and_vendor_violators;

type_transition tee system_data_file:{ dir file } cdfinger_data_file;

allow tee cdfinger_data_file:dir create_dir_perms;
allow tee cdfinger_data_file:file create_file_perms;

allow tee system_data_file:dir create_dir_perms;


code:
# Allow thermal-engine to read files in /sys
r_dir_file(thermal-engine, sysfs)


code: allow ueventd self:capability sys_nice;


code:
allow init adsprpcd_file:file mounton;

allow vendor_init nfc_sensors_prop:file { read };


code:
type focaltech_vndservice, vndservice_manager_type;
type goodix_fingerprint_vndservice, vndservice_manager_type;


code:
FocalFingerprintService                                                u:object_r:focaltech_vndservice:s0
android.hardware.fingerprint.IGoodixFingerprintDaemon                  u:object_r:goodix_fingerprint_vndservice:s0


code: get_prop(zygote, exported_camera_prop);


code:
#!/bin/bash
#
# Copyright (C) 2016 The CyanogenMod Project
# Copyright (C) 2017-2020 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#

set -e

# Load extract_utils and do some sanity checks
MY_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi

ANDROID_ROOT="${MY_DIR}/../../.."

HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
if [ ! -f "${HELPER}" ]; then
    echo "Unable to find helper script at ${HELPER}"
    exit 1
fi
source "${HELPER}"

# Initialize the helper for common
setup_vendor "${DEVICE_COMMON}" "${VENDOR}" "${ANDROID_ROOT}" true

# Warning headers and guards
write_headers "X00TD X01BD"

# The standard common blobs
write_makefiles "${MY_DIR}/proprietary-files.txt" true

# Finish
write_footers

if [ -s "${MY_DIR}/../${DEVICE}/proprietary-files.txt" ]; then
    # Reinitialize the helper for device
    setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false

    # Warning headers and guards
    write_headers

    # The standard device blobs
    write_makefiles "${MY_DIR}/../${DEVICE}/proprietary-files.txt" true

    # Finish
    write_footers
fi


code:
#
# system.prop for sdm660
#

# Bluetooth
bt.max.hfpclient.connections=1
vendor.bluetooth.soc=cherokee

# Camera
persist.vendor.camera.privapp.list=org.codeaurora.snapcam
persist.camera.privapp.list=org.codeaurora.snapcam
vendor.camera.aux.packagelist=org.codeaurora.snapcam

# CNE
persist.vendor.cne.feature=1

# Data modules
persist.data.df.dev_name=rmnet_usb0
persist.vendor.data.mode=concurrent
ro.vendor.use_data_netmgrd=true

# Display
vendor.display.enable_default_color_mode=1
vendor.gralloc.enable_fb_ubwc=1
vendor.display.disable_skip_validate=1

# GPS
persist.vendor.overlay.izat.optin=rro

# Graphics
dev.pm.dyn_samplingrate=1
persist.demo.hdmirotationlock=false
sdm.debug.disable_skip_validate=1

# IORap app launch prefetching using Perfetto traces and madvise
iorapd.readahead.enable=true

# Media
media.settings.xml=/vendor/etc/media_profiles_vendor.xml
media.stagefright.thumbnail.prefer_hw_codecs=true
vidc.enc.target_support_bframe=1
vendor.vidc.enc.disable_bframes=1
vendor.vidc.dec.enable.downscalar=1
vendor.vidc.enc.disable.pq=true

# Netflix
ro.netflix.bsp_rev=Q660-13149-1

# NFC
ro.nfc.port=I2C

# NTP Server
persist.backup.ntpServer="0.pool.ntp.org"

# Perf
ro.vendor.qti.sys.fw.bg_apps_limit=32
vendor.perf.gestureflingboost.enable=true

# QC framework value-adds
ro.vendor.qti.va_aosp.support=1

# RIL
DEVICE_PROVISIONED=1
persist.radio.VT_CAM_INTERFACE=2
persist.sys.fflag.override.settings_network_and_internet_v2=true
ril.subscription.types=NV,RUIM
telephony.lteOnCdmaDevice=1

# Time
persist.timed.enable=true

# WiFi Display
persist.debug.wfd.enable=1
persist.sys.wfd.virtual=0


code:
# DPM
persist.vendor.dpm.feature=11


code:
#!/usr/bin/env python
#
# Copyright (C) 2016 The CyanogenMod Project
# Copyright (C) 2017-2020 The LineageOS Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

import os
import sys
from hashlib import sha1

device = 'sdm660-common'
vendor = 'asus'

with open('proprietary-files.txt', 'r') as f:
    lines = f.read().splitlines()
vendorPath = '../../../vendor/' + vendor + '/' + device + '/proprietary'
needSHA1 = False

def cleanup():
    for index, line in enumerate(lines):
        # Skip empty or commented lines
        if len(line) == 0 or line[0] == '#' or '|' not in line:
            continue

        # Drop SHA1 hash, if existing
        lines[index] = line.split('|')[0]

def update():
    for index, line in enumerate(lines):
        # Skip empty lines
        if len(line) == 0:
            continue

        # Check if we need to set SHA1 hash for the next files
        if line[0] == '#':
            needSHA1 = (' - from' in line)
            continue

        if needSHA1:
            # Remove existing SHA1 hash
            line = line.split('|')[0]

            filePath = line.split(';')[0].split(':')[-1]
            if filePath[0] == '-':
                filePath = filePath[1:]

            with open(os.path.join(vendorPath, filePath), 'rb') as f:
                hash = sha1(f.read()).hexdigest()

            lines[index] = '%s|%s' % (line, hash)

if len(sys.argv) == 2 and sys.argv[1] == '-c':
    cleanup()
else:
    update()

with open('proprietary-files.txt', 'w') as file:
    file.write('\n'.join(lines) + '\n')


code:
# This file allows user to override the factory
# defaults for the WLAN Driver

# Enable IMPS or not
gEnableImps=1

# Enable BMPS or not
gEnableBmps=1

# Phy Mode (auto, b, g, n, etc)
# Valid values are 0-9, with 0 = Auto, 4 = 11n, 9 = 11ac
# 1 = 11abg, 2 = 11b, 3 = 11g, 5 = 11g only, 6 = 11n only
# 7 = 11b only 8 = 11ac only.
gDot11Mode=0

# Assigned MAC Addresses - This will be used until NV items are in place
# Each byte of MAC address is represented in Hex format as XX
Intf0MacAddress=000AF58989FF
Intf1MacAddress=000AF58989FE
Intf2MacAddress=000AF58989FD
Intf3MacAddress=000AF58989FC

# UAPSD service interval for VO,VI, BE, BK traffic
InfraUapsdVoSrvIntv=0
InfraUapsdViSrvIntv=0
InfraUapsdBeSrvIntv=0
InfraUapsdBkSrvIntv=0

# Flag to allow STA send AddTspec even when ACM is Off
gAddTSWhenACMIsOff=1

# Flags to filter Mcast and Bcast RX packets.
# Value 0: No filtering, 1: Filter all Multicast.
# 2: Filter all Broadcast. 3: Filter all Mcast abd Bcast
McastBcastFilter=3

#Flag to enable HostARPOffload feature or not
hostArpOffload=1

#Flag to enable HostNSOffload feature or not
hostNSOffload=1

# 802.11n Protection flag
gEnableApProt=1

#Enable OBSS protection
gEnableApOBSSProt=1

#Enable/Disable UAPSD for SoftAP
gEnableApUapsd=1

# Fixed Rate
gFixedRate=0

# Maximum Tx power
# gTxPowerCap=30

# Fragmentation Threshold
# gFragmentationThreshold=2346

# RTS threshold
RTSThreshold=1048576

# Intra-BSS forward
gDisableIntraBssFwd=0

# WMM Enable/Disable
WmmIsEnabled=0

# 802.11d support
g11dSupportEnabled=0

# 802.11h support
g11hSupportEnabled=1

# Add another interface while driver load
gEnableConcurrentSTA=wlan1

# DFS Master Capability
gEnableDFSMasterCap=1

# ESE Support and fast transition
EseEnabled=0

ImplicitQosIsEnabled=0

gNeighborScanTimerPeriod=200
gNeighborLookupThreshold=85
gNeighborScanChannelMinTime=20
gNeighborScanChannelMaxTime=30
gMaxNeighborReqTries=3

# Legacy (non-ESE, non-802.11r) Fast Roaming Support
# To enable, set FastRoamEnabled=1
# To disable, set FastRoamEnabled=0
FastRoamEnabled=1

# Check if the AP to which we are roaming is better than current AP in
# terms of RSSI.  Checking is disabled if set to Zero.Otherwise it will
# use this value as to how better the RSSI of the new/roamable AP should
# be for roaming
RoamRssiDiff=5

# To enable, set gRoamIntraBand=1 (Roaming within band)
# To disable, set gRoamIntraBand=0 (Roaming across band)
gRoamIntraBand=0

#Short Guard Interval Enable/disable
gShortGI20Mhz=1
gShortGI40Mhz=1

#Auto Shutdown  Value in seconds. A value of 0 means Auto shutoff is disabled
gAPAutoShutOff=0

#Auto Shutdown wlan : Value in Seconds. 0 means disabled. Max 1 day = 86400 sec
gWlanAutoShutdown = 0

# Not used.
gApAutoChannelSelection=0

#Preferred band (both or 2.4 only or 5 only)
BandCapability=1

#Channel Bonding
gChannelBondingMode5GHz=0

#Say gGoKeepAlivePeriod(5 seconds) and gGoLinkMonitorPeriod(10 seconds).
#For every 10 seconds DUT send Qos Null frame(i.e., Keep Alive frame if link
#is idle for last 10 seconds.) For both active and power save clients.

#Power save clients: DUT set TIM bit from 10th second onwards and till client
#honors TIM bit. If doesn't honor for 5 seconds then DUT remove client.

#Active clients: DUT send Qos Null frame for 10th seconds onwards if it is not
#success still we try on 11th second if not tries on 12th and so on till 15th
#second. Hence before disconnection DUT will send 5 NULL frames. Hence in any
#case DUT will detect client got removed in (10+5) seconds.
#i.e., (gGoKeepAlivePeriod + gGoLinkMonitorPeriod)..

#gGoLinkMonitorPeriod/ gApLinkMonitorPeriod is period where link is idle and
#it is period where we send NULL frame.
#gApLinkMonitorPeriod = 10
#gGoLinkMonitorPeriod = 10

#gGoKeepAlivePeriod/gApKeepAlivePeriod is time to spend to check whether frame
#are succeed to send or not. Hence total effective detection time is
# (gGoLinkMonitorPeriod + gGoKeepAlivePeriod) /
# (gApLinkMonitorPeriod + gApKeepAlivePeriod)
gGoKeepAlivePeriod = 20
gApKeepAlivePeriod = 20

#If set will start with active scan after driver load, otherwise will start with
#passive scan to find out the domain
gEnableBypass11d=1

#If set to 0, will not scan DFS channels
gEnableDFSChnlScan=1

# Enable DFS channel roam
# 0: DISABLE, 1: ENABLED_NORMAL, 2: ENABLED_ACTIVE
gAllowDFSChannelRoam=1

gVhtChannelWidth=2

#Data Inactivity Timeout when in powersave (in ms)
gDataInactivityTimeout=200

# Set txchainmask and rxchainmask
# These parameters are used only if gEnable2x2 is 0
# Valid values are 1,2
# Set gSetTxChainmask1x1=1 or gSetRxChainmask1x1=1 to select chain0.
# Set gSetTxChainmask1x1=2 or gSetRxChainmask1x1=2 to select chain1.
gSetTxChainmask1x1=1
gSetRxChainmask1x1=1

# Scan Timing Parameters
# gPassiveMaxChannelTime=110
# gPassiveMinChannelTime=60
gActiveMaxChannelTime=40
gActiveMinChannelTime=20

#If set to 0, MCC is not allowed.
gEnableMCCMode=1

# MCC to SCC Switch mode:
# 0-Disable
# 1-Enable
# 2-Force SCC if same band, with SAP restart
# 3-Force SCC if same band, without SAP restart by sending (E)CSA
# 4-Force SCC if same band (or) use SAP mandatory channel for DBS,
#   without SAP restart by sending (E)CSA
gWlanMccToSccSwitchMode = 3

# 1=enable STBC; 0=disable STBC
gEnableRXSTBC=1

# 1=enable tx STBC; 0=disable
gEnableTXSTBC=1

# 1=enable rx LDPC; 0=disable
gEnableRXLDPC=1

# Disable rx wakelock
rx_wakelock_timeout=0

#Enable/Disable Tx beamforming
gTxBFEnable=1

#Enable/Disable Tx beamformee in SAP mode
gEnableTxBFeeSAP=1

# Enable Tx beamforming in VHT20MHz
# Valid values are 0,1. If commented out, the default value is 0.
# 0=disable, 1=enable
gEnableTxBFin20MHz=1

#Enable/Disable SU Tx beamformer support.
gEnableTxSUBeamformer=1

gEnableFastRoamInConcurrency=1

#Maxium Channel time in msec
gMaxMediumTime = 6000

# 802.11K support
gRrmEnable=1

#Enable Power Save offload
gEnablePowerSaveOffload=5

#Enable firmware uart print
gEnablefwprint=0

# Firmware log mode
# Valid values are 0,1,2
# 0=Disable, 1=WMI, 2=DIAG
gEnablefwlog=1

# Maximum Receive AMPDU size (VHT only. Valid values:
# 0->8k 1->16k 2->32k 3->64k 4->128k)
gVhtAmpduLenExponent=7

# Maximum MPDU length (VHT only. Valid values:
# 0->3895 octets, 1->7991 octets, 2->11454 octets)
gVhtMpduLen=2

# Maximum number of wow filters required
#gMaxWoWFilters=22

# WOW Enable/Disable.
# 0 - Disable both magic pattern match and pattern byte match.
# 1 - Enable magic pattern match on all interfaces.
# 2 - Enable pattern byte match on all interfaces.
# 3 - Enable both magic pattern and pattern byte match on all interfaces.
# Default value of gEnableWoW is 3.
# gEnableWoW=0

# Enable or Disable MCC Adaptive Scheduler at the FW
# 1=Enable (default), 0=Disable
gEnableMCCAdaptiveScheduler=1

#Enable or Disable p2p device address administered
isP2pDeviceAddrAdministrated=0

# Set Thermal Power limit
TxPower2g=10
TxPower5g=10

# Remove Overlap channel restriction
gEnableOverLapCh=0

#Enable VHT on 2.4Ghz
gEnableVhtFor24GHzBand=1

#Maximum number of offload peers supported
# gMaxOffloadPeers=2

# controlling the following offload patterns
# through ini parameter. Default value is 1
# to disable set it to zero. ssdp = 0
# Setup multicast pattern for mDNS 224.0.0.251,
# SSDP 239.255.255.250 and LLMNR 224.0.0.252
ssdp=0

#Enable Memory Deep Sleep
gEnableMemDeepSleep=1

# Regulatory Setting; 0=STRICT; 1=CUSTOM
gRegulatoryChangeCountry=1

# RA filtering rate limit param, the current value would not
# help if the lifetime in RA is less than 3*60=3min. Then
# we need to change it, though it is uncommon.
# gRAFilterEnable=0
gRArateLimitInterval=600

# Maximum number of concurrent connections
gMaxConcurrentActiveSessions=3

# Disable/Enable GreenAP
# 0 to disable, 1 to enable, default: 1
gEnableGreenAp=0

# Radar PRI multiplier
gDFSradarMappingPriMultiplier=4

gPNOScanSupport=1

#Enable/Disable LPASS support
# 0 to disable, 1 to enable
gEnableLpassSupport=1

# Whether userspace country code setting shld have priority
gCountryCodePriority=1

# Enable(1)/Disable(0) SIFS burst
gEnableSifsBurst=1

# Enable or Disable Multi-user MIMO
# 1=Enable (default), 0=Disable
gEnableMuBformee=1

# Enable/Disable channel avoidance for SAP in SCC scenario
# 0 - disable
# 1 - enable
gSapSccChanAvoidance=0

# Inactivity time (in ms) to end TX Service Period while in IBSS power save mode
gIbssTxSpEndInactivityTime=10

# Enable support for TDLS
#  0 - disable
#  1 - enable
gEnableTDLSSupport=1

# Enable support for Implicit Trigger of TDLS. That is, wlan driver shall
# initiate TDLS Discovery towards a peer whenever setup criteria (throughput
# and RSSI) is met and then will initiate teardown when teardown criteria
# (idle packet count and RSSI) is met.
#  0 - disable
#  1 - enable
gEnableTDLSImplicitTrigger=1

# Enable TDLS External Control. That is, user space application has to
# first configure a peer MAC in wlan driver towards which TDLS is desired.
# Device will establish TDLS only towards those configured peers whenever
# TDLS criteria (throughput and RSSI threshold) is met and teardown TDLS
# when teardown criteria (idle packet count and RSSI) is met. However,
# device will accept TDLS connection if it is initiated from any other peer,
# even if that peer is not configured.
#  0 - disable
#  1 - enable
# For TDLS External Control, Implicit Trigger must also be enabled.
gTDLSExternalControl=1

# Enable support for TDLS off-channel operation
#  0 - disable
#  1 - enable
# TDLS off-channel operation will be invoked when there is only one
# TDLS connection.
gEnableTDLSOffChannel=1

# Enable or Disable Random MAC (Spoofing)
# 1=Enable (default), 0=Disable
gEnableMacAddrSpoof=1

################ Datapath feature set Begin ################
# Bus bandwidth threshold values in terms of number of packets
gBusBandwidthHighThreshold=2000
gBusBandwidthMediumThreshold=500
gBusBandwidthLowThreshold=150

# Bus bandwidth compute timeout value in ms
gBusBandwidthComputeInterval=100

# VHT Tx/Rx MCS values
# Valid values are 0,1,2. If commented out, the default value is 0.
# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9
gVhtRxMCS=2
gVhtTxMCS=2

# VHT Tx/Rx MCS values for 2x2
# Valid values are 0,1,2. If commented out, the default value is 0.
# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9
gEnable2x2=1
gVhtRxMCS2x2=2
gVhtTxMCS2x2=2

#IPA config is a bit mask and following are the configurations.
#bit0 IPA Enable
#bit1 IPA PRE Filter enable
#bit2 IPv6 enable
#bit3 IPA Resource Manager (RM) enable
#bit4 IPA Clock scaling enable
#bit5 IPA uC ENABLE
#bit6 IPA uC STA ENABLE
#bit8 IPA Real Time Debugging
gIPAConfig=0x7d
gIPADescSize=800

# Enable/Disable RX full reorder offload
gReorderOffloadSupported=1

# Enable CE classification
# 1 - enable(default)  0 - disable
gCEClassifyEnable=1

# Enable Rx handling options
# Rx_thread=1 RPS=2(default for ROME) NAPI=4(default for ihelium)
rx_mode=5

# Enable(Tx) fastpath for data traffic.
# 1 - enable(default)  0 - disable
gEnableFastPath=1

# This flag enables IP, TCP and UDP checksum offload
# 1 - enable(default)  0 - disable
gEnableIpTcpUdpChecksumOffload=1

# Enable TCP Segmentation Offload
# 1 - enable  0 - disable
TSOEnable=1

# Enable Generic Receive Offload
# 1 - enable(default)  0 - disable
GROEnable=1

# Enable HT MPDU Density
# 4 for 2 micro sec
ght_mpdu_density=4

# Enable flow steering to enable multiple CEs for Rx flows.
# Multiple Rx CEs<==>Multiple Rx IRQs<==>probably different CPUs.
# Parallel Rx paths.
# 1 - enable 0 - disable(default)
gEnableFlowSteering=1

# Time in microseconds after which a NAPI poll must yield
ce_service_max_yield_time=500

#Maximum number of HTT messages to be processed per NAPI poll
ce_service_max_rx_ind_flush=1

# Maximum number of MSDUs the firmware will pack in one HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND
maxMSDUsPerRxInd=8

# Enable NUD tracking feature
# 1 - enable 0 - disable(default)
gEnableNUDTracking=1

# Enable PEER UNMAP CONF SUPPORT
# 1 - enable 0 - disable(default)
gEnablePeerUnmapConfSupport=1

################ Datapath feature set End ################

################ NAN feature set start ###################

# Enable NAN discovery (NAN 1.0)
# 1 - enable  0 - disable(default)
gEnableNanSupport=1
# Enable NAN Datapath
genable_nan_datapath=1

################ NAN feature set end #####################
adaptive_dwell_mode_enabled=1

hostscan_adaptive_dwell_mode=1

adapt_dwell_lpf_weight=80

adapt_dwell_wifi_act_threshold=10

MAWCEnabled=0

drop_bcn_on_chan_mismatch=0

# Enable/Disable rtt sta mac randomization
enable_rtt_mac_randomization=1

#Enable/Disable SNR monitoring
gEnableSNRMonitoring=1
END

# Note: Configuration parser would not read anything past the END marker


code:
disable_scan_offload=1
p2p_disabled=1
tdls_external_control=1
bss_max_count=512
interworking=1
hs20=1
auto_interworking=0
wowlan_triggers=magic_pkt
bss_no_flush_when_down=1
driver_param=use_p2p_group_interface=1


code:
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs     diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln       merge=binary
#*.csproj    merge=binary
#*.vbproj    merge=binary
#*.vcxproj   merge=binary
#*.vcproj    merge=binary
#*.dbproj    merge=binary
#*.fsproj    merge=binary
#*.lsproj    merge=binary
#*.wixproj   merge=binary
#*.modelproj merge=binary
#*.sqlproj   merge=binary
#*.wwaproj   merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg   binary
#*.png   binary
#*.gif   binary

###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc   diff=astextplain
#*.DOC   diff=astextplain
#*.docx  diff=astextplain
#*.DOCX  diff=astextplain
#*.dot   diff=astextplain
#*.DOT   diff=astextplain
#*.pdf   diff=astextplain
#*.PDF   diff=astextplain
#*.rtf   diff=astextplain
#*.RTF   diff=astextplain

path: .gitattributes


code:
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- Backup*.rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# BeatPulse healthcheck temp database
healthchecksdb
/Source/Patches/PawnAnimationPatches/HarmonyPatch_Pawn_DrawTracker.cs
/Source/Patches/PawnAnimationPatches/HarmonyPatch_PawnRotation.cs
/Source/Patches/PawnAnimationPatches/HarmonyPatch_PawnRenderer.cs
/Source/Patches/OtherModPatches/HarmonyPatch_ShowHairWithHats.cs
/Source/Patches/OtherModPatches/HarmonyPatch_FacialAnimation.cs
/Source/Patches/OtherModPatches/HarmonyPatch_DontShaveYourHead.cs
/Source/Patches/OtherModPatches/HarmonyPatch_CSL.cs
/Source/Patches/OtherModPatches/HarmonyPatch_AlienRace.cs
/Source/Patches/ThingAnimationPatches/HarmonyPatch_ThingDrawAt.cs
/Defs/AnimationDefs/Animations_SexToys.xml

path: .gitignore