nfTlWNl rn Ѻq$³*}DќEFDeP:@?7 ~ CѶ7וi r!#6u (GrJsf]ZV h-!LN "r6`;/66ո#y*'@jV,5$hEPF8N|% d]GOogyuly޵@AT:1#G )"wmg{؎R,cb-)d7aO  T8=wZ 7rkaJ?^oVeL1qR379\^luYTl,ñ#'0U7zur WiQ*{iƴ~BI9/}XsD*8cb-)d妞OWbq)`UEmlʘ-^V_,O)њYRj@;KOLuARxV izIFIkʆd>nF{ݚy{Jn_(aР|/8=wZ 7rk똤"+{@d1LXc\*DlSBFS-_>:b378 o0kOĹ@͜C2T|ٕh] #w}VFe>kKЉ&Nma܎{fMy9б&_iA$YR;o]ʘW͋Jӌo:+g\^V_,O)њܔ"C[H5@$zX732l UBcb-)dw^)yzj0;^L?YbCG nӉkc+b0 Ѭ*>7ϑ5JN8=wZ 7rkMMޙ!b׌>4xPK}p>4VqOۿ7Y~h%AwJp95v2zC|N㴨@ $I]a 7 ˛ZO ZHU\h~&olM `NlF ZHU\h~&olMN? t~d78vȆ|VNi]{10>I{R]B_̝L ZHU\h~&olM:+V+ :~xgᏜ%RQ|`C }/{1r[E}$ X4h<^cK=EQNĞ'"PLbsI0uBFHPٗ\铣?G-!󺳞>-p [k7BUk BL;-Ur@# ~dzv!W}w*_"bB./w:U?[G[R$H#6yf &Grgfe%6dYpЧִyNt] ,&yܥ̣&ς\\Аj9L+&W97I.u2Ft(xc'C "#):{R]pȹTIt<.Dcv SYWaYq9Sdc}I$HsY\2iUst9qUSD'+0, )GNY\2iUst9q ߊW P\^:A1qkF# e䮱+I{Æb ;g4+ $דgXBh?;J.Vt"F#q3b߱:Y\2iUst9qPt\S~j<X~Hb2ϊ\$v¡"T^CGPJB-_S`s."lsWaYq9Sd-Ѝ>^LO{hhQWaYq9Sd.jlL@vԘ;'pc?N8O_ހ}R Iq΃q<6Y{[pʋ 'O4g^%́^ӄ%_qzIILrJi63i0'_GHF`RuZ4*@ݎ$Jo $fZO{7[5ˊ1-,_#-9zy** Tk3{U45`V-Tݏ8UNXVy;fՐΘ_`׶FN(mTނk49_ic@d\KF9 *goWTr=#:YgsbqiB]3O_6ٚϏn,5Qw p--[ٿh<"R-*SVR~XPk_t.x?3q|+& _k橺؏\%)%:u~ͦ{+$2װz`\LFއ]XG4m-y*nkTp$uP?q IDZU$rL!~ڼDn~HmW\fY5lJs "rL?M~4w)=IA#: fUS~&K+iYG@adF.:538K\4ȝؖϽC;HL$*׃)$x}SA g̒TBЩPf/q`)Oq@vBufaߵ#9=Mϡӏ(PbYq*DiHR]0g IjRVρߨKlϰJ8WVT.=Mm+s"ŴJWjPfUJxШĎ? =@ 4ZDQq*7&s%]wcu=BO&7tIl7酀1[;cqLZ9oiΗ`fC(UNlW v֞ιmW^O:/ Rא5cMnomⲄeOdsv[H@:^,Ⱥoa@;`&Bkn1mvKn)]O9n$\p Y;Vn[ynl!No6-& Lo85;%X;/r, dm ;S9gsetConditionType($type) { $this->conditionType = $type; return $this; } /** * Get Operator type. * * @return string */ public function getOperatorType() { return $this->operatorType; } /** * Set Operator type. * * @param string $type Conditional operator type, see self::OPERATOR_* * * @return $this */ public function setOperatorType($type) { $this->operatorType = $type; return $this; } /** * Get text. * * @return string */ public function getText() { return $this->text; } /** * Set text. * * @param string $text * * @return $this */ public function setText($text) { $this->text = $text; return $this; } /** * Get StopIfTrue. * * @return bool */ public function getStopIfTrue() { return $this->stopIfTrue; } /** * Set StopIfTrue. * * @param bool $stopIfTrue * * @return $this */ public function setStopIfTrue($stopIfTrue) { $this->stopIfTrue = $stopIfTrue; return $this; } /** * Get Conditions. * * @return (bool|float|int|string)[] */ public function getConditions() { return $this->condition; } /** * Set Conditions. * * @param (bool|float|int|string)[]|bool|float|int|string $conditions Condition * * @return $this */ public function setConditions($conditions) { if (!is_array($conditions)) { $conditions = [$conditions]; } $this->condition = $conditions; return $this; } /** * Add Condition. * * @param bool|float|int|string $condition Condition * * @return $this */ public function addCondition($condition) { $this->condition[] = $condition; return $this; } /** * Get Style. * * @return Style */ public function getStyle() { return $this->style; } /** * Set Style. * * @return $this */ public function setStyle(Style $style) { $this->style = $style; return $this; } /** * get DataBar. * * @return null|ConditionalDataBar */ public function getDataBar() { return $this->dataBar; } /** * set DataBar. * * @return $this */ public function setDataBar(ConditionalDataBar $dataBar) { $this->dataBar = $dataBar; return $this; } /** * Get hash code. * * @return string Hash code */ public function getHashCode() { return md5( $this->conditionType . $this->operatorType . implode(';', $this->condition) . $this->style->getHashCode() . __CLASS__ ); } /** * Implement PHP __clone to create a deep clone, not just a shallow copy. */ public function __clone() { $vars = get_object_vars($this); foreach ($vars as $key => $value) { if (is_object($value)) { $this->$key = clone $value; } else { $this->$key = $value; } } } /** * Verify if param is valid condition type. */ public static function isValidConditionType(string $type): bool { return in_array($type, self::CONDITION_TYPES); } }