<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def pad(self, pad_width, **kwargs):
 """Pad this series to a new size Parameters pad_width : `int`, pair of `ints` number of samples by which to pad each end of the array. Single int to pad both ends by the same amount, or (before, after) `tuple` to give uneven padding **kwargs see :meth:`numpy.pad` for kwarg documentation Returns ------- series : `Series` the padded version of the input See also -------- numpy.pad for details on the underlying functionality """

        # format arguments
        kwargs.setdefault('mode', 'constant')
        if isinstance(pad_width, int):
            pad_width = (pad_width,)
        # form pad and view to this type
        new = numpy.pad(self, pad_width, **kwargs).view(type(self))
        # numpy.pad has stripped all metadata, so copy it over
        new.__metadata_finalize__(self)
        new._unit = self.unit
        # finally move the starting index based on the amount of left-padding
        new.x0 -= self.dx * pad_width[0]
        return new