val north =  Shapes.empty()
	.join(Shapes.box(0.03125, 0.03125, 0.1250000000000001, 0.125, 0.125, 0.9375000000000001), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.03125, 0.1250000000000001, 0.96875, 0.125, 0.9375000000000001), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.125, 0.06250000000000011, 0.96875, 0.875, 0.1250000000000001), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.875, 0.1250000000000001, 0.96875, 0.96875, 0.9375000000000001), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.125, 0.9375, 0.984375, 0.875, 1), BooleanOps.OR)
	.join(Shapes.box(0.03125, 0.125, 0.06250000000000011, 0.125, 0.875, 0.1250000000000001), BooleanOps.OR)
	.join(Shapes.box(0.015625, 0.125, 0.9375, 0.125, 0.875, 1), BooleanOps.OR)
	.join(Shapes.box(0.03125, 0.875, 0.1250000000000001, 0.125, 0.96875, 0.9375000000000001), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.03125, 0.06250000000000011, 0.875, 0.125, 0.1250000000000001), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.875, 0.06250000000000011, 0.875, 0.96875, 0.1250000000000001), BooleanOps.OR)
	.join(Shapes.box(0.015625, 0.875, 0.9375, 0.984375, 0.984375, 1), BooleanOps.OR)
	.join(Shapes.box(0.015625, 0.015625, 0.9375, 0.984375, 0.125, 1), BooleanOps.OR)
	.join(Shapes.box(0.0625, 0.125, 0.125, 0.09375, 0.875, 0.9375), BooleanOps.OR)
	.join(Shapes.box(0.90625, 0.125, 0.125, 0.9375, 0.875, 0.9375), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.90625, 0.125, 0.875, 0.9375, 0.9375), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.125, 0.09375, 0.359375, 0.359375, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.640625, 0.09375, 0.359375, 0.875, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.625, 0.640625, 0.09375, 0.875, 0.875, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.640625, 0.125, 0.09375, 0.875, 0.359375, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.640625, 0.125, 0.96875, 0.875, 0.359375, 1), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.125, 0.96875, 0.359375, 0.359375, 1), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.640625, 0.96875, 0.359375, 0.875, 1), BooleanOps.OR)
	.join(Shapes.box(0.625, 0.640625, 0.96875, 0.875, 0.875, 1), BooleanOps.OR)
	.join(Shapes.box(0, 0, 0, 0.125, 0.125, 0.1250000000000001), BooleanOps.OR)
	.join(Shapes.box(0.875, 0, 0, 1, 0.125, 0.1250000000000001), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.875, 0, 1, 1, 0.1250000000000001), BooleanOps.OR)
	.join(Shapes.box(0, 0.875, 0, 0.125, 1, 0.1250000000000001), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.0625, 0.125, 0.875, 0.09375, 0.9375), BooleanOps.OR)




val south =  Shapes.empty()
	.join(Shapes.box(0.875, 0.03125, 0.06249999999999989, 0.96875, 0.125, 0.8749999999999999), BooleanOps.OR)
	.join(Shapes.box(0.03125, 0.03125, 0.06249999999999989, 0.125, 0.125, 0.8749999999999999), BooleanOps.OR)
	.join(Shapes.box(0.03125, 0.125, 0.8749999999999999, 0.125, 0.875, 0.9374999999999999), BooleanOps.OR)
	.join(Shapes.box(0.03125, 0.875, 0.06249999999999989, 0.125, 0.96875, 0.8749999999999999), BooleanOps.OR)
	.join(Shapes.box(0.015625, 0.125, 0, 0.125, 0.875, 0.0625), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.125, 0.8749999999999999, 0.96875, 0.875, 0.9374999999999999), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.125, 0, 0.984375, 0.875, 0.0625), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.875, 0.06249999999999989, 0.96875, 0.96875, 0.8749999999999999), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.03125, 0.8749999999999999, 0.875, 0.125, 0.9374999999999999), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.875, 0.8749999999999999, 0.875, 0.96875, 0.9374999999999999), BooleanOps.OR)
	.join(Shapes.box(0.015625, 0.875, 0, 0.984375, 0.984375, 0.0625), BooleanOps.OR)
	.join(Shapes.box(0.015625, 0.015625, 0, 0.984375, 0.125, 0.0625), BooleanOps.OR)
	.join(Shapes.box(0.90625, 0.125, 0.0625, 0.9375, 0.875, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.0625, 0.125, 0.0625, 0.09375, 0.875, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.90625, 0.0625, 0.875, 0.9375, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.640625, 0.125, 0.875, 0.875, 0.359375, 0.90625), BooleanOps.OR)
	.join(Shapes.box(0.640625, 0.640625, 0.875, 0.875, 0.875, 0.90625), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.640625, 0.875, 0.375, 0.875, 0.90625), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.125, 0.875, 0.359375, 0.359375, 0.90625), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.125, 0, 0.359375, 0.359375, 0.03125), BooleanOps.OR)
	.join(Shapes.box(0.640625, 0.125, 0, 0.875, 0.359375, 0.03125), BooleanOps.OR)
	.join(Shapes.box(0.640625, 0.640625, 0, 0.875, 0.875, 0.03125), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.640625, 0, 0.375, 0.875, 0.03125), BooleanOps.OR)
	.join(Shapes.box(0.875, 0, 0.8749999999999999, 1, 0.125, 1), BooleanOps.OR)
	.join(Shapes.box(0, 0, 0.8749999999999999, 0.125, 0.125, 1), BooleanOps.OR)
	.join(Shapes.box(0, 0.875, 0.8749999999999999, 0.125, 1, 1), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.875, 0.8749999999999999, 1, 1, 1), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.0625, 0.0625, 0.875, 0.09375, 0.875), BooleanOps.OR)


val east =  Shapes.empty()
	.join(Shapes.box(0.06249999999999989, 0.03125, 0.03125, 0.8749999999999999, 0.125, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.06249999999999989, 0.03125, 0.875, 0.8749999999999999, 0.125, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0.8749999999999999, 0.125, 0.875, 0.9374999999999999, 0.875, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0.06249999999999989, 0.875, 0.875, 0.8749999999999999, 0.96875, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0, 0.125, 0.875, 0.0625, 0.875, 0.984375), BooleanOps.OR)
	.join(Shapes.box(0.8749999999999999, 0.125, 0.03125, 0.9374999999999999, 0.875, 0.125), BooleanOps.OR)
	.join(Shapes.box(0, 0.125, 0.015625, 0.0625, 0.875, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.06249999999999989, 0.875, 0.03125, 0.8749999999999999, 0.96875, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.8749999999999999, 0.03125, 0.125, 0.9374999999999999, 0.125, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.8749999999999999, 0.875, 0.125, 0.9374999999999999, 0.96875, 0.875), BooleanOps.OR)
	.join(Shapes.box(0, 0.875, 0.015625, 0.0625, 0.984375, 0.984375), BooleanOps.OR)
	.join(Shapes.box(0, 0.015625, 0.015625, 0.0625, 0.125, 0.984375), BooleanOps.OR)
	.join(Shapes.box(0.0625, 0.125, 0.0625, 0.875, 0.875, 0.09375), BooleanOps.OR)
	.join(Shapes.box(0.0625, 0.125, 0.90625, 0.875, 0.875, 0.9375), BooleanOps.OR)
	.join(Shapes.box(0.0625, 0.90625, 0.125, 0.875, 0.9375, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.125, 0.125, 0.90625, 0.359375, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.640625, 0.125, 0.90625, 0.875, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.640625, 0.625, 0.90625, 0.875, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.125, 0.640625, 0.90625, 0.359375, 0.875), BooleanOps.OR)
	.join(Shapes.box(0, 0.125, 0.640625, 0.03125, 0.359375, 0.875), BooleanOps.OR)
	.join(Shapes.box(0, 0.125, 0.125, 0.03125, 0.359375, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0, 0.640625, 0.125, 0.03125, 0.875, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0, 0.640625, 0.625, 0.03125, 0.875, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.8749999999999999, 0, 0, 1, 0.125, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.8749999999999999, 0, 0.875, 1, 0.125, 1), BooleanOps.OR)
	.join(Shapes.box(0.8749999999999999, 0.875, 0.875, 1, 1, 1), BooleanOps.OR)
	.join(Shapes.box(0.8749999999999999, 0.875, 0, 1, 1, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.0625, 0.0625, 0.125, 0.875, 0.09375, 0.875), BooleanOps.OR)


val west =  Shapes.empty()
	.join(Shapes.box(0.1250000000000001, 0.03125, 0.875, 0.9375000000000001, 0.125, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0.1250000000000001, 0.03125, 0.03125, 0.9375000000000001, 0.125, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.06250000000000011, 0.125, 0.03125, 0.1250000000000001, 0.875, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.1250000000000001, 0.875, 0.03125, 0.9375000000000001, 0.96875, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.9375, 0.125, 0.015625, 1, 0.875, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.06250000000000011, 0.125, 0.875, 0.1250000000000001, 0.875, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0.9375, 0.125, 0.875, 1, 0.875, 0.984375), BooleanOps.OR)
	.join(Shapes.box(0.1250000000000001, 0.875, 0.875, 0.9375000000000001, 0.96875, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0.06250000000000011, 0.03125, 0.125, 0.1250000000000001, 0.125, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.06250000000000011, 0.875, 0.125, 0.1250000000000001, 0.96875, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.9375, 0.875, 0.015625, 1, 0.984375, 0.984375), BooleanOps.OR)
	.join(Shapes.box(0.9375, 0.015625, 0.015625, 1, 0.125, 0.984375), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.125, 0.90625, 0.9375, 0.875, 0.9375), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.125, 0.0625, 0.9375, 0.875, 0.09375), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.90625, 0.125, 0.9375, 0.9375, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.09375, 0.125, 0.640625, 0.125, 0.359375, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.09375, 0.640625, 0.640625, 0.125, 0.875, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.09375, 0.640625, 0.125, 0.125, 0.875, 0.375), BooleanOps.OR)
	.join(Shapes.box(0.09375, 0.125, 0.125, 0.125, 0.359375, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0.96875, 0.125, 0.125, 1, 0.359375, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0.96875, 0.125, 0.640625, 1, 0.359375, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.96875, 0.640625, 0.640625, 1, 0.875, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.96875, 0.640625, 0.125, 1, 0.875, 0.375), BooleanOps.OR)
	.join(Shapes.box(0, 0, 0.875, 0.1250000000000001, 0.125, 1), BooleanOps.OR)
	.join(Shapes.box(0, 0, 0, 0.1250000000000001, 0.125, 0.125), BooleanOps.OR)
	.join(Shapes.box(0, 0.875, 0, 0.1250000000000001, 1, 0.125), BooleanOps.OR)
	.join(Shapes.box(0, 0.875, 0.875, 0.1250000000000001, 1, 1), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.0625, 0.125, 0.9375, 0.09375, 0.875), BooleanOps.OR)




val up =  Shapes.empty()
	.join(Shapes.box(0.03125, 0.06249999999999989, 0.03125, 0.125, 0.8749999999999999, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.06249999999999989, 0.03125, 0.96875, 0.8749999999999999, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.8749999999999999, 0.125, 0.96875, 0.9374999999999999, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.06249999999999989, 0.875, 0.96875, 0.8749999999999999, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0.875, 2.7755575615628914e-17, 0.125, 0.984375, 0.06250000000000003, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.03125, 0.8749999999999999, 0.125, 0.125, 0.9374999999999999, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.015625, 2.7755575615628914e-17, 0.125, 0.125, 0.06250000000000003, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.03125, 0.06249999999999989, 0.875, 0.125, 0.8749999999999999, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.8749999999999999, 0.03125, 0.875, 0.9374999999999999, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.8749999999999999, 0.875, 0.875, 0.9374999999999999, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0.015625, 2.7755575615628914e-17, 0.875, 0.984375, 0.06250000000000003, 0.984375), BooleanOps.OR)
	.join(Shapes.box(0.015625, 2.7755575615628914e-17, 0.015625, 0.984375, 0.06250000000000003, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.0625, 0.0625, 0.125, 0.09375, 0.875, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.90625, 0.0625, 0.125, 0.9375, 0.875, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.0625, 0.90625, 0.875, 0.875, 0.9375), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.875, 0.125, 0.359375, 0.90625, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.875, 0.640625, 0.359375, 0.90625, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.625, 0.875, 0.640625, 0.875, 0.90625, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.640625, 0.875, 0.125, 0.875, 0.90625, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0.640625, 0, 0.125, 0.875, 0.03125, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0.125, 0, 0.125, 0.359375, 0.03125, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0.125, 0, 0.640625, 0.359375, 0.03125, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.625, 0, 0.640625, 0.875, 0.03125, 0.875), BooleanOps.OR)
	.join(Shapes.box(0, 0.8749999999999999, 0, 0.125, 1, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.8749999999999999, 0, 1, 1, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.8749999999999999, 0.875, 1, 1, 1), BooleanOps.OR)
	.join(Shapes.box(0, 0.8749999999999999, 0.875, 0.125, 1, 1), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.0625, 0.0625, 0.875, 0.875, 0.09375), BooleanOps.OR)

	return shape
}


//north south east west up down



val down =  Shapes.empty()
	.join(Shapes.box(0.03125, 0.1250000000000001, 0.875, 0.125, 0.9375000000000001, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.1250000000000001, 0.875, 0.96875, 0.9375000000000001, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.06250000000000011, 0.125, 0.96875, 0.1250000000000001, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.1250000000000001, 0.03125, 0.96875, 0.9375000000000001, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.875, 0.9375, 0.125, 0.984375, 1, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.03125, 0.06250000000000011, 0.125, 0.125, 0.1250000000000001, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.015625, 0.9375, 0.125, 0.125, 1, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.03125, 0.1250000000000001, 0.03125, 0.125, 0.9375000000000001, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.06250000000000011, 0.875, 0.875, 0.1250000000000001, 0.96875), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.06250000000000011, 0.03125, 0.875, 0.1250000000000001, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.015625, 0.9375, 0.015625, 0.984375, 1, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.015625, 0.9375, 0.875, 0.984375, 1, 0.984375), BooleanOps.OR)
	.join(Shapes.box(0.0625, 0.125, 0.125, 0.09375, 0.9375, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.90625, 0.125, 0.125, 0.9375, 0.9375, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.125, 0.0625, 0.875, 0.9375, 0.09375), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.09375, 0.640625, 0.359375, 0.125, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.09375, 0.125, 0.359375, 0.125, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0.625, 0.09375, 0.125, 0.875, 0.125, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0.640625, 0.09375, 0.640625, 0.875, 0.125, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.640625, 0.96875, 0.640625, 0.875, 1, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.96875, 0.640625, 0.359375, 1, 0.875), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.96875, 0.125, 0.359375, 1, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0.625, 0.96875, 0.125, 0.875, 1, 0.359375), BooleanOps.OR)
	.join(Shapes.box(0, 0, 0.875, 0.125, 0.1250000000000001, 1), BooleanOps.OR)
	.join(Shapes.box(0.875, 0, 0.875, 1, 0.1250000000000001, 1), BooleanOps.OR)
	.join(Shapes.box(0.875, 0, 0, 1, 0.1250000000000001, 0.125), BooleanOps.OR)
	.join(Shapes.box(0, 0, 0, 0.125, 0.1250000000000001, 0.125), BooleanOps.OR)
	.join(Shapes.box(0.125, 0.125, 0.90625, 0.875, 0.9375, 0.9375), BooleanOps.OR)
