nfTlWNl rn Ѻq$³*%yNk9S"ܧDֵ7z& j~ =-f06+ꓻ=m'Y7а@j"f3aXpWǑn6$Mýy#|-4 _I'[Lǡ1ł4[o (t^p^ Ѻq$³*%yNk9Sz ] 𓼾,_Ng `z}oDZ p+Ëb58"wU=ث.pF'CnY,H}hi6)K?Yas"e68U}U(鷵DS= ;D%  ->jV"SNl٬B5CT6wџլ$3gUc 9oCw,PPfw\c_lEG`EP)ձ]It&(F/Ul)c}ǾGk57طtRh׫T78 q/CORǨwn~twN/kzvUEE״s-@c EroAh ++|V9LBh[D:⣹:yE]d`Mb߸_:zvk.uoD[WZ |wqt;Aa y^JDKbVحc"C;<{>3o9c 1u<}}iC1ǡXE6^cjֆª3ִ6 AґXL΂Ґ#0Q>ɼ ѺQsr[oL-Q/ WQf)ʙUG n Ix M_,.SjA$屵LǛx[d?̬)G0;Zfj&CccB*ʼn\?q)84!MWµ&3 I]C63O\LxRTâj>`(La PeC\;\4Q3lp6Ryl'L律25J"BZ֜MSByA~dO6>YS.yOѿ)Jp{{TMQ.íRӏӛ?.C6e"\3r^01C0EPָ X$o(U}E hYKJ-|  ~T "2mƽ|%c DP7_Џk Ӎ,B,B~ A5H>Z$Rdڲ KuX*SE5;esD8TstTZDQq*7&0D|-WwU֟f}'ޖ] I oMka<^cSƙ[)7s39嬢 Z(ѱ&d͌et=rpzBYNbOB(~ zHpuÐ{oay! 僜E3chV. _pZhX\. j|$#:@S5)݇1%Ԗ|)nuFi_y$F^lZ{s:Rc @T;ȫbmsnf:Nͽ,9 wEүjf, ֦JaX:,jPo5$YRFKs't gxȷF,.j.ǎd/Z&b1@8U~QFALSE * * Boolean arguments are treated as True or False as appropriate * Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False * If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string * holds the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value * * @param mixed $logical A value or expression that can be evaluated to TRUE or FALSE * Or can be an array of values * * @return array|bool|string the boolean inverse of the argument * If an array of values is passed as an argument, then the returned result will also be an array * with the same dimensions */ public static function NOT($logical = false) { if (is_array($logical)) { return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $logical); } if (is_string($logical)) { $logical = mb_strtoupper($logical, 'UTF-8'); if (($logical == 'TRUE') || ($logical == Calculation::getTRUE())) { return false; } elseif (($logical == 'FALSE') || ($logical == Calculation::getFALSE())) { return true; } return ExcelError::VALUE(); } return !$logical; } /** * @return bool|string */ private static function countTrueValues(array $args, callable $func) { $trueValueCount = 0; $count = 0; $aArgs = Functions::flattenArrayIndexed($args); foreach ($aArgs as $k => $arg) { ++$count; // Is it a boolean value? if (is_bool($arg)) { $trueValueCount += $arg; } elseif (is_string($arg)) { $isLiteral = !Functions::isCellValue($k); $arg = mb_strtoupper($arg, 'UTF-8'); if ($isLiteral && ($arg == 'TRUE' || $arg == Calculation::getTRUE())) { ++$trueValueCount; } elseif ($isLiteral && ($arg == 'FALSE' || $arg == Calculation::getFALSE())) { //$trueValueCount += 0; } else { --$count; } } elseif (is_int($arg) || is_float($arg)) { $trueValueCount += (int) ($arg != 0); } else { --$count; } } return ($count === 0) ? ExcelError::VALUE() : $func($trueValueCount, $count); } }