function circleBlur(x, y, r, width, values) {
const {sqrt, ceil, floor} = Math;
const r2 = r*r, rj = floor(r);
let v = 0, div = 0;
for (let j = -rj; j <= rj; j++) {
if (y + j < 0 || y + j >= height) continue;
const ri = floor(sqrt(r2 - j*j))
for (let i = -ri; i <= ri; i++) {
if (x + i < 0 || x + i >= width) continue;
div++;
v += values[(x + i) + (y + j) * width];
}
}
return div ? v / div : values[x + y * width];
}