code: def _build_protobuf(self):
          
          pb = _pb_from_query(self._query)
  
          start_cursor = self.next_page_token
          if start_cursor is not None:
              pb.start_cursor = base64.urlsafe_b64decode(start_cursor)
  
          end_cursor = self._end_cursor
          if end_cursor is not None:
              pb.end_cursor = base64.urlsafe_b64decode(end_cursor)
  
          if self.max_results is not None:
              pb.limit.value = self.max_results - self.num_results
  
          if start_cursor is None and self._offset is not None:
              # NOTE: We don't need to add an offset to the request protobuf
              #       if we are using an existing cursor, because the offset
              #       is only relative to the start of the result set, not
              #       relative to each page (this method is called per-page)
              pb.offset = self._offset
  
          return pb
docs: Build a query protobuf.
  
          Relies on the current state of the iterator.
  
          :rtype:
              :class:`.query_pb2.Query`
          :returns: The query protobuf object for the current
                    state of the iterator.