Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Monday, 27 September 2021

The social life of a vampire bat

When one thinks of vampire bats, friendship and cooperation may not be among the qualities that come to mind for these blood-feasting creatures of the night. But maybe they should.

Scientists have provided a deeper understanding of social relationships among vampire bats, showing how those that have forged bonds akin to “friendships” with others will rendezvous with these buddies while foraging for a meal.

Researchers attached small devices to 50 vampire bats to track nighttime foraging in Panama, when these flying mammals drink blood from wounds they inflict upon cattle in pastures. The study involved female bats, known to have stronger social relationships than males.

Among the bats were 23 wild-born individuals that had been kept in captivity for about two years during related research into bat social behavior. Social bonds already had been observed among some of them. After being released back into the wild, the bats were found to often join a “friend” during foraging, possibly coordinating the hunt.

“Each bat maintains its own network of close cooperative social bonds,” said behavioral ecologist Gerald Carter of the Ohio State University and the Smithsonian Tropical Research Institute, who led the research published in the journal PLoS Biology.

Social bonds among vampire bats as they roost in trees include grooming one another and regurgitating blood meals for hungry pals. The study showed that the social bonds formed in roosts extended into the hunt.

“This study opens up an exciting new window into the social lives of these animals,” Carter said.

The researchers suspect that the bats, while almost never departing on foraging forays with their “friends,” link up with them during the hunt – perhaps even recognizing one another’s vocalizations – for mutual benefit. They hypothesize the bats might exchange information about prey location or access to an open wound for feeding.

Vampire bats, which inhabit warmer regions of Latin America and boast wingspans of about 7 inches (18 cm), are the only mammals with a blood-only diet. They reside in colonies ranging from tens to thousands of individuals.

“People’s first reaction to vampire bats is usually, ‘Uh, scary.’ But once you tell them about their complex social lives, they are quite surprised that we can find such behavior that is somewhat similar to what humans do – and which one would maybe expect in primates – in bats,” said study co-author Simon Ripperger, a Smithsonian Tropical Research Institute post-doctoral researcher.

Ripperger called them “amazing creatures” for several reasons.

“Even besides their social lives, vampire bats are quite special: specializing in a diet of 100% blood is already quite rare among vertebrates,” Ripperger said. “They are amazing runners, which you wouldn’t expect in a bat. They have heat sensors in their snouts that help them find a spot to make a bite. They have a protein in their saliva that prevents blood from coagulation, which is actually being used in medical trials to help prevent blood clots in patients who suffered a stroke.”

The bats attack prey from the ground, using their sharp teeth to open a wound, lapping up blood with their tongues.

Carter said there is reason to fear vampire bats because they can transmit rabies to livestock and people.

“But I do think they are beautiful and interesting animals in their own right,” Carter added. “In this way they are a bit like grizzly bears, sharks, rats and venomous snakes: animals that might not help people in any way and might even endanger them, but should still be appreciated for their own sake.”

The post The social life of a vampire bat appeared first on ARY NEWS.



from ScienceTechnology – ARY NEWS https://ift.tt/2ZqQBtG https://ift.tt/eA8V8J


from TechCrunch https://ift.tt/3o84XJX
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support