diff --git a/Manifests/Manifest_LAOS-14.1.xml b/Manifests/Manifest_LAOS-14.1.xml
index f04162e2..f1acea68 100644
--- a/Manifests/Manifest_LAOS-14.1.xml
+++ b/Manifests/Manifest_LAOS-14.1.xml
@@ -143,6 +143,10 @@
+
+
+
+
diff --git a/Manifests/Manifest_LAOS-15.1.xml b/Manifests/Manifest_LAOS-15.1.xml
index 60df5f9f..d9a76efd 100644
--- a/Manifests/Manifest_LAOS-15.1.xml
+++ b/Manifests/Manifest_LAOS-15.1.xml
@@ -138,7 +138,7 @@
-
+
diff --git a/Patches/LineageOS-14.1/android_device_asus_grouper/0001-Update_Blobs.patch b/Patches/LineageOS-14.1/android_device_asus_grouper/0001-Update_Blobs.patch
new file mode 100644
index 00000000..d3b0a9ef
--- /dev/null
+++ b/Patches/LineageOS-14.1/android_device_asus_grouper/0001-Update_Blobs.patch
@@ -0,0 +1,248 @@
+From be52768051dd1978bb6a4b9bd46aff4eb09c0412 Mon Sep 17 00:00:00 2001
+From: Harry Youd
+Date: Mon, 26 Mar 2018 15:52:22 +0200
+Subject: [PATCH] grouper: Initial 14.1 blob list
+
+Change-Id: I1e9a7e2a998810778426ab522995af2f90529b44
+---
+ device-common.mk | 6 +--
+ extract-files.sh | 63 ++++++++++++++++++++++++++++++
+ lineage-proprietary-files.txt | 89 +++++++++++++++++++++++++++++++++++++++++++
+ setup-makefiles.sh | 48 +++++++++++++++++++++++
+ 4 files changed, 201 insertions(+), 5 deletions(-)
+ create mode 100755 extract-files.sh
+ create mode 100644 lineage-proprietary-files.txt
+ create mode 100755 setup-makefiles.sh
+
+diff --git a/device-common.mk b/device-common.mk
+index ac66bec..cdbc040 100644
+--- a/device-common.mk
++++ b/device-common.mk
+@@ -134,8 +134,4 @@ PRODUCT_PACKAGES += \
+ libstagefrighthw
+
+ # Vendor blobs
+-$(call inherit-product, vendor/asus/grouper/asus-vendor.mk)
+-$(call inherit-product, vendor/broadcom/grouper/broadcom-vendor.mk)
+-$(call inherit-product, vendor/invensense/grouper/invensense-vendor.mk)
+-$(call inherit-product, vendor/nvidia/grouper/nvidia-vendor.mk)
+-$(call inherit-product-if-exists, vendor/widevine/grouper/widevine-vendor.mk)
++$(call inherit-product, vendor/asus/grouper/grouper-vendor.mk)
+diff --git a/extract-files.sh b/extract-files.sh
+new file mode 100755
+index 0000000..43dd96b
+--- /dev/null
++++ b/extract-files.sh
+@@ -0,0 +1,63 @@
++#!/bin/bash
++#
++# Copyright (C) 2016 The CyanogenMod Project
++# Copyright (C) 2017 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.
++#
++
++set -e
++
++DEVICE=grouper
++VENDOR=asus
++
++# Load extract_utils and do some sanity checks
++MY_DIR="${BASH_SOURCE%/*}"
++if [[ ! -d "$MY_DIR" ]]; then MY_DIR="$PWD"; fi
++
++CM_ROOT="$MY_DIR"/../../..
++
++HELPER="$CM_ROOT"/vendor/cm/build/tools/extract_utils.sh
++if [ ! -f "$HELPER" ]; then
++ echo "Unable to find helper script at $HELPER"
++ exit 1
++fi
++. "$HELPER"
++
++# Default to sanitizing the vendor folder before extraction
++CLEAN_VENDOR=true
++
++while [ "$1" != "" ]; do
++ case $1 in
++ -n | --no-cleanup ) CLEAN_VENDOR=false
++ ;;
++ -s | --section ) shift
++ SECTION=$1
++ CLEAN_VENDOR=false
++ ;;
++ * ) SRC=$1
++ ;;
++ esac
++ shift
++done
++
++if [ -z "$SRC" ]; then
++ SRC=adb
++fi
++
++# Initialize the helper
++setup_vendor "$DEVICE" "$VENDOR" "$CM_ROOT" false "$CLEAN_VENDOR"
++
++extract "$MY_DIR"/lineage-proprietary-files.txt "$SRC" "$SECTION"
++
++"$MY_DIR"/setup-makefiles.sh
+diff --git a/lineage-proprietary-files.txt b/lineage-proprietary-files.txt
+new file mode 100644
+index 0000000..460ef24
+--- /dev/null
++++ b/lineage-proprietary-files.txt
+@@ -0,0 +1,89 @@
++# SORT ME
++etc/nvram.txt
++
++# Sensors
++vendor/lib/hw/sensors.grouper.so
++vendor/lib/libsensors.lightsensor.so
++
++# Radio
++etc/firmware/bcm4330.hcd
++
++# GPS
++vendor/bin/gpsd
++vendor/lib/hw/gps.tegra3.so
++
++# Gyro
++vendor/lib/libinvensense_hal.so
++vendor/lib/libmllite.so
++vendor/lib/libmplmpu.so
++
++# NFC
++vendor/firmware/libpn544_fw.so
++
++# Multimedia
++vendor/firmware/nvavp_os_00001000.bin
++vendor/firmware/nvavp_os_0ff00000.bin
++vendor/firmware/nvavp_os_e0000000.bin
++vendor/firmware/nvavp_os_eff00000.bin
++vendor/firmware/nvavp_vid_ucode_alt.bin
++
++# Camera
++vendor/lib/hw/camera.tegra3.so
++vendor/lib/libnvcamerahdr.so
++vendor/lib/libnvmm_camera.so
++
++# Display
++vendor/lib/egl/libEGL_tegra.so
++vendor/lib/egl/libGLESv1_CM_tegra.so
++vendor/lib/egl/libGLESv2_tegra.so
++vendor/lib/hw/gralloc.tegra3.so
++vendor/lib/hw/hwcomposer.tegra3.so
++vendor/lib/libardrv_dynamic.so
++vendor/lib/libcgdrv.so
++vendor/lib/libnvapputil.so
++vendor/lib/libnvasfparserhal.so
++vendor/lib/libnvaviparserhal.so
++vendor/lib/libnvavp.so
++vendor/lib/libnvdispmgr_d.so
++vendor/lib/libnvmm_video.so
++
++# ????
++vendor/lib/libnvddk_2d.so
++vendor/lib/libnvddk_2d_v2.so
++vendor/lib/libnvmm.so
++vendor/lib/libnvmm_audio.so
++vendor/lib/libnvmm_contentpipe.so
++vendor/lib/libnvmm_image.so
++vendor/lib/libnvmm_manager.so
++vendor/lib/libnvmm_misc.so
++vendor/lib/libnvmm_parser.so
++vendor/lib/libnvmm_service.so
++vendor/lib/libnvmm_utils.so
++vendor/lib/libnvmm_writer.so
++vendor/lib/libnvmmlite.so
++vendor/lib/libnvmmlite_audio.so
++vendor/lib/libnvmmlite_image.so
++vendor/lib/libnvmmlite_utils.so
++vendor/lib/libnvmmlite_video.so
++vendor/lib/libnvodm_dtvtuner.so
++vendor/lib/libnvodm_hdmi.so
++vendor/lib/libnvodm_imager.so
++vendor/lib/libnvodm_misc.so
++vendor/lib/libnvodm_query.so
++vendor/lib/libnvomx.so
++vendor/lib/libnvomxilclient.so
++vendor/lib/libnvos.so
++vendor/lib/libnvparser.so
++vendor/lib/libnvrm.so
++vendor/lib/libnvrm_graphics.so
++vendor/lib/libnvsm.so
++vendor/lib/libnvtvmr.so
++vendor/lib/libnvwinsys.so
++vendor/lib/libnvwsi.so
++
++# Touchscreen
++vendor/firmware/touch_fw.ekt
++
++# DRM
++vendor/lib/mediadrm/libwvdrmengine.so
++
+diff --git a/setup-makefiles.sh b/setup-makefiles.sh
+new file mode 100755
+index 0000000..7c82753
+--- /dev/null
++++ b/setup-makefiles.sh
+@@ -0,0 +1,48 @@
++#!/bin/bash
++#
++# Copyright (C) 2016 The CyanogenMod Project
++# Copyright (C) 2017 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.
++#
++
++set -e
++
++DEVICE=grouper
++VENDOR=asus
++
++INITIAL_COPYRIGHT_YEAR=2010
++
++# Load extract_utils and do some sanity checks
++MY_DIR="${BASH_SOURCE%/*}"
++if [[ ! -d "$MY_DIR" ]]; then MY_DIR="$PWD"; fi
++
++CM_ROOT="$MY_DIR"/../../..
++
++HELPER="$CM_ROOT"/vendor/cm/build/tools/extract_utils.sh
++if [ ! -f "$HELPER" ]; then
++ echo "Unable to find helper script at $HELPER"
++ exit 1
++fi
++. "$HELPER"
++
++# Initialize the helper
++setup_vendor "$DEVICE" "$VENDOR" "$CM_ROOT"
++
++# Copyright headers and guards
++write_headers
++
++write_makefiles "$MY_DIR"/lineage-proprietary-files.txt
++
++# Finish
++write_footers
diff --git a/Patches/LineageOS-14.1/android_device_asus_grouper/lineage-proprietary-files.txt b/Patches/LineageOS-14.1/android_device_asus_grouper/lineage-proprietary-files.txt
new file mode 100644
index 00000000..f2d9d7b3
--- /dev/null
+++ b/Patches/LineageOS-14.1/android_device_asus_grouper/lineage-proprietary-files.txt
@@ -0,0 +1,63 @@
+etc/firmware/bcm4330.hcd
+etc/nvram.txt
+vendor/bin/gpsd
+vendor/firmware/nvavp_os_00001000.bin
+vendor/firmware/nvavp_os_0ff00000.bin
+vendor/firmware/nvavp_os_e0000000.bin
+vendor/firmware/nvavp_os_eff00000.bin
+vendor/firmware/nvavp_vid_ucode_alt.bin
+vendor/lib/egl/libEGL_tegra.so
+vendor/lib/egl/libGLESv1_CM_tegra.so
+vendor/lib/egl/libGLESv2_tegra.so
+vendor/lib/hw/camera.tegra3.so
+vendor/lib/hw/gps.tegra3.so
+vendor/lib/hw/gralloc.tegra3.so
+vendor/lib/hw/hwcomposer.tegra3.so
+vendor/lib/hw/sensors.grouper.so
+vendor/lib/libardrv_dynamic.so
+vendor/lib/libcgdrv.so
+vendor/lib/libinvensense_hal.so
+vendor/lib/libmllite.so
+vendor/lib/libmplmpu.so
+vendor/lib/libnvapputil.so
+vendor/lib/libnvasfparserhal.so
+vendor/lib/libnvaviparserhal.so
+vendor/lib/libnvavp.so
+vendor/lib/libnvcamerahdr.so
+vendor/lib/libnvddk_2d.so
+vendor/lib/libnvddk_2d_v2.so
+vendor/lib/libnvdispmgr_d.so
+vendor/lib/libnvmm.so
+vendor/lib/libnvmm_audio.so
+vendor/lib/libnvmm_camera.so
+vendor/lib/libnvmm_contentpipe.so
+vendor/lib/libnvmm_image.so
+vendor/lib/libnvmm_manager.so
+vendor/lib/libnvmm_misc.so
+vendor/lib/libnvmm_parser.so
+vendor/lib/libnvmm_service.so
+vendor/lib/libnvmm_utils.so
+vendor/lib/libnvmm_video.so
+vendor/lib/libnvmm_writer.so
+vendor/lib/libnvmmlite.so
+vendor/lib/libnvmmlite_audio.so
+vendor/lib/libnvmmlite_image.so
+vendor/lib/libnvmmlite_utils.so
+vendor/lib/libnvmmlite_video.so
+vendor/lib/libnvodm_dtvtuner.so
+vendor/lib/libnvodm_hdmi.so
+vendor/lib/libnvodm_imager.so
+vendor/lib/libnvodm_misc.so
+vendor/lib/libnvodm_query.so
+vendor/lib/libnvomx.so
+vendor/lib/libnvomxilclient.so
+vendor/lib/libnvos.so
+vendor/lib/libnvparser.so
+vendor/lib/libnvrm.so
+vendor/lib/libnvrm_graphics.so
+vendor/lib/libnvsm.so
+vendor/lib/libnvtvmr.so
+vendor/lib/libnvwinsys.so
+vendor/lib/libnvwsi.so
+vendor/lib/libsensors.lightsensor.so
+vendor/lib/mediadrm/libwvdrmengine.so
diff --git a/Patches/Linux b/Patches/Linux
index 8f939c08..0ed6e1b7 160000
--- a/Patches/Linux
+++ b/Patches/Linux
@@ -1 +1 @@
-Subproject commit 8f939c08b3988d272037622994cc0eac75c12097
+Subproject commit 0ed6e1b7bdd188d460e1bb1fee8437f1f172d06f
diff --git a/Scripts/Common/Functions.sh b/Scripts/Common/Functions.sh
index e5d372c0..142c5747 100644
--- a/Scripts/Common/Functions.sh
+++ b/Scripts/Common/Functions.sh
@@ -299,7 +299,7 @@ hardenDefconfig() {
sed -i 's/CONFIG_ARCH_MMAP_RND_BITS=8/CONFIG_ARCH_MMAP_RND_BITS=16/' $defconfigPath &>/dev/null || true;
sed -i 's/CONFIG_ARCH_MMAP_RND_BITS=18/CONFIG_ARCH_MMAP_RND_BITS=24/' $defconfigPath &>/dev/null || true;
sed -i 's/CONFIG_DEFAULT_MMAP_MIN_ADDR=4096/CONFIG_DEFAULT_MMAP_MIN_ADDR=32768/' $defconfigPath &>/dev/null || true;
- sed -i 's/CONFIG_LSM_MMAP_MIN_ADDR=4096/CONFIG_DEFAULT_MMAP_MIN_ADDR=32768/' $defconfigPath &>/dev/null || true;
+ sed -i 's/CONFIG_LSM_MMAP_MIN_ADDR=4096/CONFIG_LSM_MMAP_MIN_ADDR=32768/' $defconfigPath &>/dev/null || true;
editKernelLocalversion "-dos";
diff --git a/Scripts/LineageOS-14.1/CVE_Patchers/android_kernel_asus_grouper.sh b/Scripts/LineageOS-14.1/CVE_Patchers/android_kernel_asus_grouper.sh
new file mode 100644
index 00000000..866463c7
--- /dev/null
+++ b/Scripts/LineageOS-14.1/CVE_Patchers/android_kernel_asus_grouper.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+cd $base"kernel/asus/grouper"
+git apply $cvePatchesLinux/0010-Accelerated_AES/3.4/0002.patch
+git apply $cvePatchesLinux/0012-Copperhead-Deny_USB/3.4/3.4-Backport.patch
+git apply $cvePatchesLinux/0013-syskaller-Misc/ANY/0008.patch
+git apply $cvePatchesLinux/0013-syskaller-Misc/ANY/0009.patch
+git apply $cvePatchesLinux/CVE-2014-9895/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2016-0801/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2016-2185/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2016-2186/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2016-3857/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2016-7117/^4.5/0002.patch
+git apply $cvePatchesLinux/CVE-2016-8402/3.4/0001.patch
+git apply $cvePatchesLinux/CVE-2016-8406/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2016-9576/3.4/0001.patch
+git apply $cvePatchesLinux/CVE-2017-0430/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-0510/3.4/0001.patch
+git apply $cvePatchesLinux/CVE-2017-0648/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-0710/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-0750/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-0786/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-1000380/^4.11/0001.patch
+git apply $cvePatchesLinux/CVE-2017-11090/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-11473/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-12153/3.2-^3.16/0001.patch
+git apply $cvePatchesLinux/CVE-2017-13080/ANY/0002.patch
+git apply $cvePatchesLinux/CVE-2017-13215/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-13246/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-15265/^4.14/0001.patch
+git apply $cvePatchesLinux/CVE-2017-16525/^4.13/0002.patch
+git apply $cvePatchesLinux/CVE-2017-16526/^4.13/0001.patch
+git apply $cvePatchesLinux/CVE-2017-16532/^4.13/0001.patch
+git apply $cvePatchesLinux/CVE-2017-16533/^4.13/0001.patch
+git apply $cvePatchesLinux/CVE-2017-16535/^4.13/0001.patch
+git apply $cvePatchesLinux/CVE-2017-16537/^4.13/0001.patch
+git apply $cvePatchesLinux/CVE-2017-16650/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-16USB/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-16USB/ANY/0005.patch
+git apply $cvePatchesLinux/CVE-2017-16USB/ANY/0006.patch
+git apply $cvePatchesLinux/CVE-2017-17558/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-17806/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-2671/^4.10/0001.patch
+git apply $cvePatchesLinux/CVE-2017-6074/^4.9/0001.patch
+git apply $cvePatchesLinux/CVE-2017-6345/^4.9/0001.patch
+git apply $cvePatchesLinux/CVE-2017-6348/^4.9/0001.patch
+git apply $cvePatchesLinux/CVE-2017-6951/^3.14/0001.patch
+git apply $cvePatchesLinux/CVE-2017-7184/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-7184/ANY/0002.patch
+git apply $cvePatchesLinux/CVE-2017-7308/ANY/0003.patch
+git apply $cvePatchesLinux/CVE-2017-7487/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-7533/3.4/0001.patch
+git apply $cvePatchesLinux/CVE-2017-8890/3.4/0001.patch
+git apply $cvePatchesLinux/CVE-2017-9242/^4.11/0001.patch
+git apply $cvePatchesLinux/Untracked/ANY/0008-nfsd-check-for-oversized-NFSv2-v3-arguments.patch
+git apply $cvePatchesLinux/CVE-2017-0750/ANY/0001.patch
+git apply $cvePatchesLinux/CVE-2017-1000111/ANY/0001.patch
+editKernelLocalversion "-dos.p54"
+cd $base
diff --git a/Scripts/LineageOS-14.1/Functions.sh b/Scripts/LineageOS-14.1/Functions.sh
index f0e2fbd0..92ae166c 100644
--- a/Scripts/LineageOS-14.1/Functions.sh
+++ b/Scripts/LineageOS-14.1/Functions.sh
@@ -18,7 +18,7 @@
#Last verified: 2018-04-27
patchAllKernels() {
- startPatcher "kernel_amazon_hdx-common kernel_asus_msm8916 kernel_fairphone_msm8974 kernel_htc_msm8994 kernel_lge_hammerhead kernel_lge_msm8992 kernel_lge_msm8996 kernel_motorola_msm8916 kernel_motorola_msm8992 kernel_samsung_jf kernel_samsung_msm8974 kernel_samsung_smdk4412 kernel_samsung_universal8890";
+ startPatcher "kernel_amazon_hdx-common kernel_asus_grouper kernel_asus_msm8916 kernel_fairphone_msm8974 kernel_htc_msm8994 kernel_lge_hammerhead kernel_lge_msm8992 kernel_lge_msm8996 kernel_motorola_msm8916 kernel_motorola_msm8992 kernel_samsung_jf kernel_samsung_msm8974 kernel_samsung_smdk4412 kernel_samsung_universal8890";
}
export -f patchAllKernels;
@@ -54,6 +54,7 @@ buildAll() {
brunch lineage_thor-userdebug; #deprecated
brunch lineage_clark-user;
brunch lineage_FP2-user;
+ #brunch lineage_grouper-user; #builds, but requires out-of-tree blobs
brunch lineage_h815-user; #deprecated (UPSTREAM) drivers/input/touchscreen/DS5/RefCode_CustomerImplementation.c:147:1: warning: the frame size of 2064 bytes is larger than 2048 bytes
brunch lineage_h850-userdebug;
brunch lineage_hammerhead-user;
diff --git a/Scripts/LineageOS-14.1/Patch.sh b/Scripts/LineageOS-14.1/Patch.sh
index 6626d8fb..29a62976 100755
--- a/Scripts/LineageOS-14.1/Patch.sh
+++ b/Scripts/LineageOS-14.1/Patch.sh
@@ -229,6 +229,11 @@ sed -i 's/,encryptable=footer//' rootdir/etc/fstab.qcom; #Using footer will brea
#XXX: If not used with a supported recovery, it'll be thrown into a bootloop, don't worry just 'fastboot erase misc' and reboot
#echo "/dev/block/platform/msm_sdcc.1/by-name/misc /misc emmc defaults defaults" >> rootdir/etc/fstab.qcom; #Add the misc (mmcblk0p5) partition for recovery flags
+enterAndClear "device/asus/grouper";
+patch -p1 < "$patches/android_device_asus_grouper/0001-Update_Blobs.patch";
+rm proprietary-blobs.txt;
+cp "$patches/android_device_asus_grouper/lineage-proprietary-files.txt" lineage-proprietary-files.txt;
+
enterAndClear "device/motorola/clark";
sed -i 's/0xA04D/0xA04D|0xA052/' board-info.txt; #Allow installing on Nougat bootloader, assume the user is running the correct modem
rm board-info.txt; #Never restrict installation