function flatDeep(arr, d = 1) {
  if (!arr || !arr.length) return []
  return d > 0
    ? arr.reduce((acc, cur) => acc.concat(Array.isArray(cur) ? flatDeep(cur, --d) : cur), [])
    : arr.slice()
}