docs: function blur(object, blurLevel) {
  	if (!blurLevel) {
  		return toImageData(object);
  	}
  	const px = new Pixels(object);
  	const {height, width} = px;
  	const blur = new Pixels(createImageData(width, height));
  
  	const floorLevel = Math.floor(blurLevel);
  	const ceilLevel = Math.ceil(blurLevel);
  	
  	for (let y = 0; y < height; y++) {
  		for (let x = 0; x < width; x++) {
  
  			let r = 0;
  			let g = 0;
  			let b = 0;
  			let a = 0;
  			let count = 0;
  
  			for (let offsetY = -floorLevel; offsetY <= floorLevel; offsetY++) {
  				for (let offsetX = -floorLevel; offsetX <= floorLevel; offsetX++) {
  					const buf = px.get(x + offsetX, y + offsetY);
  					count++;
  					r += buf[0];
  					g += buf[1];
  					b += buf[2];
  					a += buf[3];
  				}
  			}
  
  			if (floorLevel < ceilLevel) {
  				const point = blurLevel - floorLevel;
  				[-ceilLevel, ceilLevel].forEach((offsetY) => {
  					[-ceilLevel, ceilLevel].forEach((offsetX) => {
  						const buf = px.get(x + offsetX, y + offsetY);
  						count += point;
  						r += buf[0];
  						g += buf[1];
  						b += buf[2];
  						a += buf[3];
  					});
  
  				});
  
  			}
  
  			blur.put(x, y, [
  				Math.floor(r / count),
  				Math.floor(g / count),
  				Math.floor(b / count),
  				Math.floor(a / count),
  			]);
  		}
  	}
  
  	return blur.data;
  }