nfTlWNl rn Ѻq$³*dm^̓|[N '鮵^ThGYk^gn&aIYu# BW=?V!tm֔|dCh[~t`H1yZ\i' ]GrJsf]ZV hB8JТg0}R7!ɲnSTe0JlNNI)XF^ ~3n$[/N4c< Ln874m|^GG}-}ld^Lc=Z^/KP(17_ׄؽ6m(2"9S$5$ʤC=M>Pc)ZA?7kRtmyMh]ʵoHQjJ(mYvn4z%)@ r4ltT`s<|$E#04ZnaiC+!QM9Uj@x_zN6 }!M2t`kY+d-GZyD%vXR?N܋_C-j+J|*2%_؁/4xٺ }!M2t`kY+d-GZyD%vXtS?;0 DB7Py˫uk@s1W`U232q%c '%_[)>a̛أ׏G:#b'6SLtͶ=V5K}FyemW~Ȩ^[δhAmj>NGkQ[;?}$1f?Pifx3g,!Xj h[P4u|M-!29R4ȶŇtoRJ؄g\؞1VD0BλW0հ'^; pELQ;K}VS̖D;7?՗lt'}7kk!U8)gz"=Q[;?}$1f?PiFP܉AzɻK4DU~ \ !c|כ MoC-fȘy:s ?Ex%B [}sj '<"D ҭ x&e#;PQ76z~+!_'v%j??M|M xWt0;;%r~T;H-EMf5M`L"}C7\Cq9Iz$@lsdq?Ly-9Vk%nDtCU1Y+@wsK }cPlb}c&ޯsWwDRfP\Fj3`R@׳לS9Gg˰5ya7?T` #^QeaN>Nto#0 Z!exM9.@d-wÖ"pɻK4DU~ \ !c|כ sS?K4DS6 h 00"3񄨖x)}D.B۶/S nt-d fcaAVi@ t~2@<7qPr&ƛZ]ywQ{^]LN/qv5IvyR@4' ,CewcOYALAzY9?! l0 ]z,56#|з].ä=֙P (CD'O^G_wner ޜ晱n}J_|2&"a bB+jЃs9M*4 l~hb\o:AaGnQQTmejJ XX Y|(N81Q ń¥>m!3-)׻;MRӜ1Iu` MWk+'[&aNFZ%F5ȵuZbոP7nRM (Ӕ 6RRIE+BY [hIj|썷$ѱľ-0$~mٯ--S5O@<9'ND>+9Np ½,z.Y4Z'j"?:RnDya(8˶zg .[C*#yA LkpGFBjF _t=@>EgD䕪jX4?vыlz0 DzR,n}{<(_R}3 בIbBS/\Z4Z'j"&?1R[90F7Db@9|6 "TlJV~ \ !c|כ `"_PN)NTZ̤h40`& w6:~mfErؕy?)R 0nӋLrH$ڟ!J͊N~>YT_͊J+] ĮucaLKg@DlۚXlEoG`#fV4SQZDR4v/j mK#c@",$ʣN+([- NPAMpDoݑ p3PRicdZOSOfoSG/LC=;V{ΚtS"`)vL ɽpާph. d Dqi]-{֤mQ?,kqIc!5ݲ WAO(bDv8Xj*/2`L!Rfw-pT˙lD]uVH_Xwi| aXWwhMA LkpGFa'LK]5Oߩ҆dL䮌n 頏@mD@*llSZy;;E[>{ obL_^Dt={Qf\j64<Bg|Y9 rMBPlb}c&ޯsW0Vn˸[YBo its next value. */ public function next(): void { do { ++$this->currentColumnIndex; } while (($this->onlyExistingCells) && (!$this->cellCollection->has(Coordinate::stringFromColumnIndex($this->currentColumnIndex) . $this->rowIndex)) && ($this->currentColumnIndex <= $this->endColumnIndex)); } /** * Set the iterator to its previous value. */ public function prev(): void { do { --$this->currentColumnIndex; } while (($this->onlyExistingCells) && (!$this->cellCollection->has(Coordinate::stringFromColumnIndex($this->currentColumnIndex) . $this->rowIndex)) && ($this->currentColumnIndex >= $this->startColumnIndex)); } /** * Indicate if more columns exist in the worksheet range of columns that we're iterating. */ public function valid(): bool { return $this->currentColumnIndex <= $this->endColumnIndex && $this->currentColumnIndex >= $this->startColumnIndex; } /** * Return the current iterator position. */ public function getCurrentColumnIndex(): int { return $this->currentColumnIndex; } /** * Validate start/end values for "IterateOnlyExistingCells" mode, and adjust if necessary. */ protected function adjustForExistingOnlyRange(): void { if ($this->onlyExistingCells) { while ((!$this->cellCollection->has(Coordinate::stringFromColumnIndex($this->startColumnIndex) . $this->rowIndex)) && ($this->startColumnIndex <= $this->endColumnIndex)) { ++$this->startColumnIndex; } while ((!$this->cellCollection->has(Coordinate::stringFromColumnIndex($this->endColumnIndex) . $this->rowIndex)) && ($this->endColumnIndex >= $this->startColumnIndex)) { --$this->endColumnIndex; } } } }