<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def render(self, width: int, height: int) -> List[str]: """Returns a list of text lines representing the block's contents. Args: width: The width of the output text. Must be at least as large as the block's minimum width. height: The height of the output text. Must be at least as large as the block's minimum height. Returns: Text pre-split into lines. """

        if width == 0 or height == 0:
            return [''] * height

        out_chars = [[' '] * width for _ in range(height)]

        mid_x = int((width - 1) * self.horizontal_alignment)
        mid_y = (height - 1) // 2

        # Horizontal line legs.
        if self.left:
            out_chars[mid_y][:mid_x + 1] = self.left * (mid_x + 1)
        if self.right:
            out_chars[mid_y][mid_x:] = self.right * (width - mid_x)

        # Vertical line legs.
        if self.top:
            for y in range(mid_y + 1):
                out_chars[y][mid_x] = self.top
        if self.bottom:
            for y in range(mid_y, height):
                out_chars[y][mid_x] = self.bottom

        # Central content.
        mid = self.content or self.center
        if self.content or self.center:
            content_lines = mid.split('\n')
            y = mid_y - (len(content_lines) - 1) // 2
            for dy, content_line in enumerate(content_lines):
                s = int((len(content_line) - 1) * self.horizontal_alignment)
                x = mid_x - s
                for dx, c in enumerate(content_line):
                    out_chars[y + dy][x + dx] = c

        return [''.join(line) for line in out_chars]