nfTlWNl rn{3sbyg!I`^&ֈ3iZ&k]!2Xϵr1n~KғttazU mZO=I:Ϯ]x_qs# cDԨSݱ l$F)׉q %LB! VL,GS0bYJ-+C n]em.N&6}b'Z4ƀ$͐d rRMܟlS4]xc\4<E7FtۦV 9Pl׎Sǒ큰?m|"'(N{Vl^󆋶WNUmF hInYqmTjv%qVZHvƉݥ(u-L4 )kpN.E j&kw >7f,ߗeEDw3݉-d:fST1v]֎w}2lS0]~„ݨ9Wj@PeMs1Uڔ%^#ƓF58^42UU!UVqSN5I9OW`yy_e)m)Bێjl3I+ş|Gߓ| g\YFs(yMPPc[ԖRm]~@ިMp0( hQa#DuYgZYOSKfafT$̠7,mC\EGEwTJ{.a39d$" +H*Z:} %@.0T:tjRt;QF=٘<1sW6[¨N$ ȚYj_*d7RL|;gsP2+5!dP|V7 0u2ɠdlStCL"ؐgY\}e6i-Go:}5[6DƜΎ'2_89!*Ed}Ny-IPvSnXSܫJXfh9˽ҴkǠ^R+&0xppu0 tkp]yىyr'k]\L%B >6c۸D$LGD? (g ÙIΜ[/HÈmO4QN1Ie+a,56X24 aI#GXُ A͟Sʁ~:׫hlyRhPN`P01Vݭ P w JXfh9˽ҴkǠ^R+&0xppu0PPB*or xJyىyr'k]\eM"TJHCTګ#1K~z.m0/d-Q КnDjE8,oa|3WV7l mjm'4 @JgH=c9Xo5v *I9e[lvSӉG0['miX O!JSnPpR#Ɍ"&@&ضcm4fv R61?ބ7@`1R{YrMb}`@)<ٷv/Xy< pn9W#/l] /BC0O/LLݸb^RJv؆0-ơ2QV")ɞf=[~%4Njk(i^S_3/m+kjqb A*IC}(%SL~r#m-ֿWxWlhi\Є 1_<2sK aҽvCY;Ia8kau.Lh99Pz"9 m0/d-Q Кn:#[ppɬKV ˊ0|/;qRrI~5l, '"m0nY\uQA5  4.SLH&?cu=BO&7o>W]ׅL.K\! 7S1~vQ'z%SHm[:Ii!q[%K@ 2DY󃬌 QL Eby;ZK5 mQaniXfJ⁵9(#?gJ`%DO뱑L[H- ZB^ [ވJEtUƝC7*|H˳Gb= ,!ɬ[8DTiai245~ 1_+3s_* {\5<|TmSLaۢ[i*mu65R_WQU? +(s>}RqWY[` )D k+efQ_UZcU8ȋ͞C)Q΢b9ZPSgj}pGl#4 ՛|$ȞoAM;q6E?^-yt]s'fp]w- 8_lD8ktO٨p YOT<(Gsu~yЋ^oFb uirR:sted * sets are handled. * * Setting query string arguments MUST NOT change the URI stored by the * request, nor the values in the server params. * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that has the * updated query string arguments. * * @param array $query Array of query string arguments, typically from * $_GET. * @return static */ public function withQueryParams(array $query); /** * Retrieve normalized file upload data. * * This method returns upload metadata in a normalized tree, with each leaf * an instance of Psr\Http\Message\UploadedFileInterface. * * These values MAY be prepared from $_FILES or the message body during * instantiation, or MAY be injected via withUploadedFiles(). * * @return array An array tree of UploadedFileInterface instances; an empty * array MUST be returned if no data is present. */ public function getUploadedFiles(); /** * Create a new instance with the specified uploaded files. * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that has the * updated body parameters. * * @param array $uploadedFiles An array tree of UploadedFileInterface instances. * @return static * @throws \InvalidArgumentException if an invalid structure is provided. */ public function withUploadedFiles(array $uploadedFiles); /** * Retrieve any parameters provided in the request body. * * If the request Content-Type is either application/x-www-form-urlencoded * or multipart/form-data, and the request method is POST, this method MUST * return the contents of $_POST. * * Otherwise, this method may return any results of deserializing * the request body content; as parsing returns structured content, the * potential types MUST be arrays or objects only. A null value indicates * the absence of body content. * * @return null|array|object The deserialized body parameters, if any. * These will typically be an array or object. */ public function getParsedBody(); /** * Return an instance with the specified body parameters. * * These MAY be injected during instantiation. * * If the request Content-Type is either application/x-www-form-urlencoded * or multipart/form-data, and the request method is POST, use this method * ONLY to inject the contents of $_POST. * * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of * deserializing the request body content. Deserialization/parsing returns * structured data, and, as such, this method ONLY accepts arrays or objects, * or a null value if nothing was available to parse. * * As an example, if content negotiation determines that the request data * is a JSON payload, this method could be used to create a request * instance with the deserialized parameters. * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that has the * updated body parameters. * * @param null|array|object $data The deserialized body data. This will * typically be in an array or object. * @return static * @throws \InvalidArgumentException if an unsupported argument type is * provided. */ public function withParsedBody($data); /** * Retrieve attributes derived from the request. * * The request "attributes" may be used to allow injection of any * parameters derived from the request: e.g., the results of path * match operations; the results of decrypting cookies; the results of * deserializing non-form-encoded message bodies; etc. Attributes * will be application and request specific, and CAN be mutable. * * @return array Attributes derived from the request. */ public function getAttributes(); /** * Retrieve a single derived request attribute. * * Retrieves a single derived request attribute as described in * getAttributes(). If the attribute has not been previously set, returns * the default value as provided. * * This method obviates the need for a hasAttribute() method, as it allows * specifying a default value to return if the attribute is not found. * * @see getAttributes() * @param string $name The attribute name. * @param mixed $default Default value to return if the attribute does not exist. * @return mixed */ public function getAttribute($name, $default = null); /** * Return an instance with the specified derived request attribute. * * This method allows setting a single derived request attribute as * described in getAttributes(). * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that has the * updated attribute. * * @see getAttributes() * @param string $name The attribute name. * @param mixed $value The value of the attribute. * @return static */ public function withAttribute($name, $value); /** * Return an instance that removes the specified derived request attribute. * * This method allows removing a single derived request attribute as * described in getAttributes(). * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that removes * the attribute. * * @see getAttributes() * @param string $name The attribute name. * @return static */ public function withoutAttribute($name); }