middleware; } public function lazyMiddleware(string $middleware): MiddlewareAwareInterface { $this->middleware[] = $middleware; return $this; } public function lazyMiddlewares(array $middlewares): MiddlewareAwareInterface { foreach ($middlewares as $middleware) { $this->lazyMiddleware($middleware); } return $this; } public function lazyPrependMiddleware(string $middleware): MiddlewareAwareInterface { array_unshift($this->middleware, $middleware); return $this; } public function middleware(MiddlewareInterface $middleware): MiddlewareAwareInterface { $this->middleware[] = $middleware; return $this; } public function middlewares(array $middlewares): MiddlewareAwareInterface { foreach ($middlewares as $middleware) { $this->middleware($middleware); } return $this; } public function prependMiddleware(MiddlewareInterface $middleware): MiddlewareAwareInterface { array_unshift($this->middleware, $middleware); return $this; } public function shiftMiddleware(): MiddlewareInterface { $middleware = array_shift($this->middleware); if ($middleware === null) { throw new OutOfBoundsException('Reached end of middleware stack. Does your controller return a response?'); } return $middleware; } protected function resolveMiddleware($middleware, ?ContainerInterface $container = null): MiddlewareInterface { if ($container === null && is_string($middleware) && class_exists($middleware)) { $middleware = new $middleware(); } if ($container !== null && is_string($middleware) && $container->has($middleware)) { $middleware = $container->get($middleware); } if ($middleware instanceof MiddlewareInterface) { return $middleware; } throw new InvalidArgumentException(sprintf('Could not resolve middleware class: %s', $middleware)); } } __halt_compiler();----SIGNATURE:----hQNzC+PiZR2/nncuu3kgfj6Xcf8xdc0qem8Xy34ifPl/N9MdpeUdKGFKRcbKBiabu2EyAW4XBSeByXMEMeWqeEwj+prUTQsCBI6bjnvDmx5M5GkmxJEwARCMDRL4IvtynPs/LEUczbFOyfnwJP6HP/reXArPosW8i3cc2Pul8UhvgPFk+FlhJJPFN9ukh0heWF93yYbwUOMT+g0Y2X/yaHS4qofGQUGGHfMyxIGDPJ1YPVESBdPkIvZvZdgT/CJKc9n4Lvdv1vjKsCMIljLykcldJgs6wLM35mIOeW4KexM8w6UWJGR1Ew08ZargT1hbtn37nqctNQY0vb/KebLHZ1da2ZkjjwBxZ05gHyYhGJUPRvHV3yV9GJnVBezMIErmLJYjMovmIrFhPRq4u0hRmE7IqM6JU6Kow8qnJgTm7NHOaUkNB9Cd+jd3/++OSeLU2nGa1GCPTdruQPRpWIEjZwn5wi+WF5SwRUiux+sFEBhTWx+6/AZ0VW2Dcs8sLFRJ8iILYwnp8TDRaoZnTsBSHhOuwSphz4Q+h5DYnln5iqR82retw9WmIq/VCTuYACQRt77JYskDG5Fo/DKzfOfkBrd3J18IF/fBZ6x2ses1SHfd9z5zosiVCMNovKHUr3ngc/d3N6EuhPoBno6sJpzIj6ti/nA3GDsddMZ+gloKGAk=----ATTACHMENT:----MzE1MjE0MDQ4MDA5MzE3OSA4ODU3NDk1MzM3OTIxMzkyIDE4NjYxNzU1MDk0Mzg2MDg=