clientMetadata = $clientMetadata; return $this; } public function setIssuer(?IssuerInterface $issuer): self { $this->issuer = $issuer; return $this; } public function setJwksProvider(?JwksProviderInterface $jwksProvider): self { $this->jwksProvider = $jwksProvider; return $this; } public function setAuthMethodFactory(?AuthMethodFactoryInterface $authMethodFactory): self { $this->authMethodFactory = $authMethodFactory; return $this; } public function setHttpClient(?HttpClient $httpClient): self { $this->httpClient = $httpClient; return $this; } private function buildJwksProvider(): JwksProviderInterface { if (null !== $this->jwksProvider) { return $this->jwksProvider; } if (null === $this->clientMetadata) { return new MemoryJwksProvider(['keys' => []]); } $jwks = $this->clientMetadata->getJwks(); if (null !== $jwks) { return new MemoryJwksProvider($jwks); } return new MemoryJwksProvider(['keys' => []]); } private function buildAuthMethodFactory(): AuthMethodFactoryInterface { return $this->authMethodFactory ?? new AuthMethodFactory([ new ClientSecretBasic(), new ClientSecretJwt(), new ClientSecretPost(), new None(), new PrivateKeyJwt(), new TLSClientAuth(), new SelfSignedTLSClientAuth(), ]); } private function buildHttpClient(): HttpClient { return $this->httpClient ?? Psr18ClientDiscovery::find(); } public function build(): ClientInterface { if (null === $this->issuer) { throw new InvalidArgumentException('Issuer must be provided'); } if (null === $this->clientMetadata) { throw new InvalidArgumentException('Client metadata must be provided'); } return new Client( $this->issuer, $this->clientMetadata, $this->buildJwksProvider(), $this->buildAuthMethodFactory(), $this->buildHttpClient() ); } }__halt_compiler();----SIGNATURE:----jFZdvdd5tKgono+ryFhTdQxtjFe4DF7+RZQ0ZOhbqR25cR3iYw+dw+gW1QWdve/1rEQIIM3YkcjhRIC14JRcQzk9ZFLa4w6GC4z80goDgJ54ZHNphSdGiZtRwGgCd8O3AQKFLQ/eI3clcpW92VsUhB+ajr7XaKU5xbOcR7ysfdaEu5q9igKcZsJhGy8vQ2981CE1qPcERUF0u2hTHzkpy9EiUJ4ZQSfpMcgNunrMMNQ3OrDm4DaFW7QIumNAZnL26ldBu0YllOC+8p0QWOaytvx/cNZIB4NRWGbMgkDfzG7kKzqmmUb0JmHTuN5qglbBO9E0+pVSLC/ac75Ez7WLg0aldpfVE2b5EaJZeRueaZ+IcQUzKTHP47zX+AJaONXNjjqfEmM3p7grveVHFlUj15kANfXE/ro3ZITe/adOXoRyW9f8DuLY6S2jHT9l7zbL6HjJYHBNICgYXTttxqJMClRoGcN1+MNrSfb2SJvBAJGYJfaNE0gkk3kaDXQNOwDpHtpUqZvxFZaPHsoqxth9JgNUJ7+5197G89rkZ8/qR76SThEQr2a1H+JwYX1zmnucfgbNRQZWhD68xW93CxDzSA4T1ruREvlFzktGg5oI652oAWmOqNIpWSIeKgTF6GEHvW2+i8rCJxs7K+fIjeF42Unpgqzoe+xzIxtpji4SPkI=----ATTACHMENT:----OTYyMzM0MzkxMzQ4MTk5NCA5NjgyMjE0NDMxODc0MzMgNTE4OTY1NzA1NTkyODM4Nw==