code: def register(self, app, options):
          
  
          url_prefix = options.get('url_prefix', self.url_prefix)
  
          # Routes
          for future in self.routes:
              # attach the blueprint name to the handler so that it can be
              # prefixed properly in the router
              future.handler.__blueprintname__ = self.name
              # Prepend the blueprint URI prefix if available
              uri = url_prefix + future.uri if url_prefix else future.uri
              app.route(
                  uri=uri[1:] if uri.startswith('//') else uri,
                  methods=future.methods,
                  host=future.host or self.host,
                  strict_slashes=future.strict_slashes,
                  stream=future.stream
                  )(future.handler)
  
          # Middleware
          for future in self.middlewares:
              if future.args or future.kwargs:
                  app.middleware(*future.args,
                                 **future.kwargs)(future.middleware)
              else:
                  app.middleware(future.middleware)
  
          # Exceptions
          for future in self.exceptions:
              app.exception(*future.args, **future.kwargs)(future.handler)
  
          # Static Files
          for future in self.statics:
              # Prepend the blueprint URI prefix if available
              uri = url_prefix + future.uri if url_prefix else future.uri
              app.static(uri, future.file_or_directory,
                         *future.args, **future.kwargs)
  
          # Event listeners
          for event, listeners in self.listeners.items():
              for listener in listeners:
                  app.listener(event)(listener)
docs: Register the blueprint to the mach9 app.