From 7005b213169846a86bbb6a3d01fb79a8723f978a Mon Sep 17 00:00:00 2001 From: danny Date: Thu, 25 Apr 2024 14:16:46 +0330 Subject: [PATCH 1/3] iterator pattern --- .../behavioral patterns/9.3.3-iterator.md | 273 +++++++++++++++++- .../iterator-iterator-comic-1-en.png | Bin 0 -> 49318 bytes .../designPatterns/iterator-problem1.png | Bin 0 -> 1286 bytes .../designPatterns/iterator-problem2.png | Bin 0 -> 6779 bytes .../designPatterns/iterator-solution1.png | Bin 0 -> 17814 bytes 5 files changed, 272 insertions(+), 1 deletion(-) create mode 100644 static/assets/img/content/chapter9/designPatterns/iterator-iterator-comic-1-en.png create mode 100644 static/assets/img/content/chapter9/designPatterns/iterator-problem1.png create mode 100644 static/assets/img/content/chapter9/designPatterns/iterator-problem2.png create mode 100644 static/assets/img/content/chapter9/designPatterns/iterator-solution1.png diff --git a/content/chapter 9/behavioral patterns/9.3.3-iterator.md b/content/chapter 9/behavioral patterns/9.3.3-iterator.md index 3be14df86..8c459b6f6 100644 --- a/content/chapter 9/behavioral patterns/9.3.3-iterator.md +++ b/content/chapter 9/behavioral patterns/9.3.3-iterator.md @@ -3,4 +3,275 @@ title: '9.3.3 الگو Iterator' slug: go-iterator-pattern weight: 176003 --- -الگو Iterator... \ No newline at end of file +## هدف + +الگوي طراحی تکرارکننده (Iterator) یک الگوی رفتاری است که به شما امکان می دهد عناصر یک مجموعه را بدون نمایش ساختار درونی آن (فهرست، پشته، درخت و غیره) پیمایش کنید. + +## مشکل + +مجموعه ها (collections) یکی از پرکاربردترین انواع داده در برنامه نویسی هستند. با این وجود، یک مجموعه فقط یک ظرف برای گروهی از اشیاء است. + +![iterator-problem1](../../../assets/img/content/chapter9/designPatterns/iterator-problem1.png) +(انواع مختلف از collections) + +اکثر مجموعه ها عناصر خود را در لیست های ساده ذخیره می کنند. با این حال، برخی از آنها بر اساس پشته‌ها، درختان، نمودارها و سایر ساختارهای داده پیچیده ساخته شده‌اند. + +اما مهم نیست که یک مجموعه چگونه ساختار یافته باشد، باید روشی برای دسترسی به عناصر آن ارائه دهد تا کدهای دیگر بتوانند از این عناصر استفاده کنند. باید راهی برای مرور هر عنصر از مجموعه بدون دسترسی مکرر به عناصر مشابه وجود داشته باشد. + +اگر مجموعه ای مبتنی بر لیست دارید، این کار ممکن است آسان به نظر برسد. شما فقط روی تمام عناصر حلقه می زنید. اما چگونه عناصر یک ساختار داده پیچیده مانند درخت را به طور متوالی طی کنید؟ به عنوان مثال، ممکن است یک روز فقط با پیمایش عمق اول (depth-first) یک درخت مشکلی نداشته باشید. اما روز بعد ممکن است به پیمایش عرض اول (breadth-first) نیاز داشته باشید. و هفته بعد، ممکن است به چیز دیگری مانند دسترسی تصادفی به عناصر درخت نیاز داشته باشید. + +![iterator-problem2](../../../assets/img/content/chapter9/designPatterns/iterator-problem2.png) +(از یک مجموعه می‌توان به چند روش مختلف عبور کرد.) + +افزودن الگوریتم های پیمایش بیشتر و بیشتر به مجموعه به تدریج مسئولیت اصلی آن که ذخیره کارآمد داده است را تحت الشعاع قرار می دهد. علاوه بر این، برخی الگوریتم‌ها ممکن است برای یک برنامه خاص طراحی شده باشند، بنابراین گنجاندن آنها در یک کلاس عمومی مجموعه عجیب خواهد بود. + +از طرف دیگر، کد کلاینت که قرار است با مجموعه‌های مختلفی کار کند، حتی ممکن است اهمیتی ندهد که آنها عناصر خود را چگونه ذخیره می‌کنند. با این حال، از آنجایی که همه مجموعه‌ها روش‌های مختلفی برای دسترسی به عناصر خود ارائه می‌دهند، شما چاره‌ای جز اتصال کد خود به کلاس‌های مجموعه خاص ندارید. + +## راه‌حل + +ایده اصلی الگوی تکرارکننده (Iterator) این است که رفتار پیمایش یک مجموعه را به یک شیء جداگانه به نام «تکرارکننده» (Iterator) استخراج کند. + +![iterator-solution1](../../../assets/img/content/chapter9/designPatterns/iterator-solution1.png) +(تکرار کننده ها الگوریتم های پیمایش مختلفی را پیاده سازی می کنند. چندین شی تکرارکننده می‌توانند همزمان از یک مجموعه عبور کنند.) + + +یک شیء تکرارکننده علاوه بر پیاده سازی الگوریتم پیمایش، تمام جزئیات پیمایش مانند موقعیت فعلی و تعداد عناصر باقی مانده تا انتها را دربرمی گیرد. به همین دلیل، چندین تکرارکننده می توانند به طور همزمان و مستقل از یکدیگر، یک مجموعه را طی کنند. + +معمولا تکرارکننده‌ها یک روش اصلی برای دریافت عناصر مجموعه ارائه می دهند. کاربر می تواند این روش را تا زمانی که چیزی برنگردد اجرا کند، به این معنی که تکرارکننده تمام عناصر را پیمایش کرده است. + +همه تکرارکننده‌ها باید یک رابط مشترک را پیاده سازی کنند. این کار باعث می شود کد کلاینت با هر نوع مجموعه یا هر الگوریتم پیمایشی سازگار باشد، به شرطی که یک تکرارکننده مناسب وجود داشته باشد. اگر به روش خاصی برای پیمایش یک مجموعه نیاز دارید، فقط یک کلاس تکرارکننده جدید بدون نیاز به تغییر مجموعه یا مشتری ایجاد کنید. + +## نمونه واقعی + +![iterator-comic-1-en](../../../assets/img/content/chapter9/designPatterns/iterator-iterator-comic-1-en.png) + +تصمیم می‌گیرید برای چند روز به شهر رم در ایتالیا سفر کنید و از تمام مناظر و جاذبه های اصلی آن دیدن کنید. اما هنگامی که به آنجا رسیدید، ممکن است زمان زیادی را برای قدم زدن در مسیرهای پر پیچ و خم تلف کنید، بدون اینکه حتی بتوانید نماد باستانی مثل کولوسئوم را پیدا کنید. + +از طرف دیگر، می توانید یک اپلیکیشن راهنمای مجازی برای گوشی هوشمند خود بخرید و از آن برای مسیریابی استفاده کنید. این کار هوشمند و ارزان است و می توانید تا هر زمان که بخواهید در مکان‌های جالبی توقف و دیدن کنید. + +یک راه حل دیگر این است که بخشی از بودجه سفر را صرف استخدام یک راهنمای محلی کنید که شهر را مثل کف دستش بشناسد. راهنما می‌تواند تور را مطابق با سلیقه شما تنظیم کند، هر جاذبه‌ای را به شما نشان دهد و داستان‌های هیجان‌انگیزی تعریف کند. این حتی سرگرم‌کننده‌تر خواهد بود، اما افسوس، گران‌تر هم خواهد بود. + +همه این گزینه‌ها - مسیرهای تصادفی که در ذهن شما به وجود می‌آیند، راهنمای هوشمند گوشی هوشمند یا راهنمای انسانی - به عنوان تکرارکننده‌هایی بر روی مجموعه عظیم مناظر و جاذبه‌های واقع در رم عمل می‌کنند. + +## مثال + +## الگوی طراحی تکرارکننده (Iterator) + +الگوی طراحی تکرارکننده (Iterator) یک الگوی رفتاری است که به شما امکان می دهد عناصر یک مجموعه را بدون نمایش ساختار درونی آن (فهرست، پشته، درخت و غیره) پیمایش کنید. + +**اجزای اصلی:** + +* **رابط تکرارکننده (Iterator Interface):** این اینترفیس عملیات اصلی برای پیمایش در یک مجموعه را تعریف می کند، به طور معمول شامل روش هایی مانند `hasNext()` برای بررسی وجود عناصر بیشتر و `getNext()` برای بازیابی عنصر بعدی. +* **رابط مجموعه (Collection Interface):** این اینترفیس خود مجموعه را نشان می دهد. ممکن است روشی مانند `createIterator()` را اعلام کند که یک شیء تکرارکننده خاص برای نوع مجموعه را برمی‌گرداند. +* **تکرارکننده خاص (Concrete Iterator):** این کلاسی است که رابط `Iterator` را برای یک نوع مجموعه خاص پیاده سازی می کند. این حالت تکرار (مانند موقعیت فعلی) را حفظ می کند و روش هایی مانند `hasNext()` و `getNext()` را ارائه می دهد که خاص ساختار مجموعه است. +* **مجموعه خاص (Concrete Collection):** این کلاسی است که اینترفیس یا رابط `Collection` را برای یک ساختار داده خاص (مانند لیست، درخت) پیاده سازی می کند. این متد `createIterator()` را ارائه می دهد که یک شیء تکرارکننده خاص را برای پیمایش عناصر آن برمی گرداند. + +**مزایا:** + +* **جداسازی:** منطق تکرار را از خود مجموعه جدا می کند و اتصالات ضعیف را ارتقا می دهد و کد را انعطاف پذیرتر و قابل استفاده مجدد می کند. +* **چندین پیمایش:** امکان پیمایش همزمان در یک مجموعه با استفاده از تکرارکننده های مختلف، به طور بالقوه با الگوریتم های پیمایش مختلف را فراهم می کند. +* **اصل بسته-باز:** پیاده سازی های جدید تکرارکننده را می توان برای نیازهای مختلف پیمایش بدون تغییر در کلاس های مجموعه اضافه کرد. + +با استفاده از تکرارکننده‌‌ها، می توانید کدی بنویسید که با مجموعه های مختلف بدون وابستگی به ساختارهای خاص آنها کار می کند. این امر به ترویج کدی تمیزتر و قابل نگهداری تر کمک می کند. + + +# **Mapping** + +جدول زیر نگاشت بین بازیگران نمودار UML و بازیگران پیاده‌سازی واقعی را در "مثال" زیر نشان می‌دهد: + +| | | +|---|---| +|Collection|collection.go| +|Concrete Collection|userCollection.go| +|Iterator|mac.go| +|Concrete Iterator 1|userIterator.go| +|Client|main.go| +## پیاده سازی + +**collection.go** + +```go +package main + +type collection interface { + createIterator() iterator +} +``` + +**userCollection.go** + +```go +package main + +type userCollection struct { + users []*user +} + +func (u *userCollection) createIterator() iterator { + return &userIterator{ + users: u.users, + } +} +``` + +**iterator.go** + +```go +package main + +type iterator interface { + hasNext() bool + getNext() *user +} +``` + +**userIterator.go** + +```go +package main + +type userIterator struct { + index int + users []*user +} + +func (u *userIterator) hasNext() bool { + if u.index < len(u.users) { + return true + } + return false +} + +func (u *userIterator) getNext() *user { + if u.hasNext() { + user := u.users[u.index] + u.index++ + return user + } + return nil +} +``` + +**user.go** + +```go +package main + +type user struct { + name string + age int +} +``` + +**main.go** + +```go +package main + +import "fmt" + +func main() { + user1 := &user{ + name: "a", + age: 30, + } + user2 := &user{ + name: "b", + age: 20, + } + userCollection := &userCollection{ + users: []*user{user1, user2}, + } + iterator := userCollection.createIterator() + for iterator.hasNext() { + user := iterator.getNext() + fmt.Printf("User is %+v\n", user) + } +} +``` + +**Output:** + +```go +User is &{name:a age:30} +User is &{name:b age:20} +``` + +# **Full Working Code:** + +```go +package main + +import "fmt" + +type collection interface { + createIterator() iterator +} + +type userCollection struct { + users []*user +} + +func (u *userCollection) createIterator() iterator { + return &userIterator{ + users: u.users, + } +} + +type iterator interface { + hasNext() bool + getNext() *user +} + +type userIterator struct { + index int + users []*user +} + +func (u *userIterator) hasNext() bool { + if u.index < len(u.users) { + return true + } + return false +} + +func (u *userIterator) getNext() *user { + if u.hasNext() { + user := u.users[u.index] + u.index++ + return user + } + return nil +} + +type user struct { + name string + age int +} + +func main() { + user1 := &user{ + name: "a", + age: 30, + } + user2 := &user{ + name: "b", + age: 20, + } + userCollection := &userCollection{ + users: []*user{user1, user2}, + } + iterator := userCollection.createIterator() + for iterator.hasNext() { + user := iterator.getNext() + fmt.Printf("User is %+v\n", user) + } +} +``` + +**Output:** + +```go +User is &{name:a age:30} +User is &{name:b age:20} +``` \ No newline at end of file diff --git a/static/assets/img/content/chapter9/designPatterns/iterator-iterator-comic-1-en.png b/static/assets/img/content/chapter9/designPatterns/iterator-iterator-comic-1-en.png new file mode 100644 index 0000000000000000000000000000000000000000..927e03597114af179e32eb78b9246ad50456d467 GIT binary patch literal 49318 zcmZs?1yCJL6E=Dd?(Xgm!QCZra1HM65Zn(E+}+(hxC9Hqg1cLAcekJS|Elh-TXm;q zpM83^r+21j)_Qj%loh3s5eN_f001&bMp6|3fB*vkKqffI&k{50Yy3}PMOj{5O4>=j zufOZ#<3mYJWo2#Yll(vF{^23NFo%Vc`?JK#){yZxxS&MqpKw)J@J!kXsUf?H4WAOk^iBnq{RO;KQSpKzPK#Ep}DU8S4&NOWlnx( zNLY}unbH3=KNZq4lRvroH#IX0&?d$nJH6zpiHpwd~sDJza>_|&T z^RxWZh^vQ7Y(muZ-1zL`q`9S;x~BSPc~)*lPzd;wI6B++_IG#nbY^6yhDC%7{p}x{ z{OjrM9vKr}R$2V1@VQfeuy0dqgPns-L2=&5*wEz6SW8>O;K(0vkl&~M@2*bOb>)>c zW&K0F+Il*l&1>y!{xtPjcVl~Pd2R92dtbPCKJouIe_CMY;S-URl$4R-6%zW?R8Ust zwa<@J8N49n}dV>^YhcMva+8B6;)OKXV%!v#Khdx$kfQ$)yc-* z#?jf~vte{nS~8!5o$IQqs0NVKfWnITh@Ji%ub|ImvEmadKO{c!qlp5`mZ>>#0!1U^ z>Oc9vv}E+>qr{8g;I-#JX)B%wPAgkB`Rt>5^FR6HHu~dZ;6F0)AAE?a{omDpVD}$9 z(|rW~`1qg{*EaPCjFjcX<*E3)(35l2m}oDst;U?zz51#2_%U}>*OPxae(-d<2UrCF zy4FFGV(Om2)0rPJP-18j(*)P7F7JUG%n}ul^-ccpoW5D%|8E+03^!p<=%QlFnlqS5 zNA{YpM{>Q^{0Cw8S97loDvM&T?pUhah8>%t)An!6{>)vl5R#v!i}h$|PbF?qY4Fnd zV1)%oKMCuiU1>s>jVE|i-t4LEn1B9`8}kY>JHpOQsOD6oA2M6a%pEdY^babUBn^+~ zN@W3XW!*pf<8*miZRL<)=xWpMJl*)$h&#GMB3yH!KA4&u=(|MLS0A6253om9#|GEd zyDh$dxLgnNH`{uv8&KC*zmrWXd4oo(CNKzxy_>~;Bl^2YNs zc+Obx@bIkeNZws(;N#o}EV8pXqqGV63jdMn|4u^o&h-`maDnh29qMl}?b+&?MGi4X zhJ)^%yKK%*fl|WBjmEiR-%jf_iXaqRp(jmaSASZ^;Rf{BL)P0Y8`83V5auSHVHWL& zTyhG&Y5(-M$-!Df@carCb8G0crQ4cUyrLGM6(W44{1(YsvB!2{Ric9eG)Y*fb3J$NAR{o-$&+p$b7p# zVB6=SZt+cn8%c5&vX5c5TnNFDy0HFnT`^%@K3|-)9L#(!jnh>CFBDjdCFro6r4}z3 zqJjMGCC+;XwgBlBsd-t1_d5+4{w%K(WYq)nN-Ch0Y>LCbCpxJc=eVE##h`Bglr;d- zDxi9(L%HSvUXbVto@s`BXKjosS+g~*A)2C@Pt;u+`+ORm(Vt&IQVL3++pn)wPDB0z zC_W^sq%{?0TL=M;WSP289z9VhFKZki|)ydu6APTqE4ae2t9rD`y79M=+(6VbMIqT_zmfp8TqdW4gefYNhBR-TlE zz-cu5sQ==9+>R>etPX7GCIij!)$pn|?WtubnR5JIGU@x*^g`2;)DdyBfSqqds2}BR z$@8S!z}asg09HJNXD~Z>*!V{_A=d@6VQbOPtXowYk%7bPK?FnWZLF1%9WgNtZ-P-eH1G zFMv%Y83?yq71S_T%PmrK*E2z%ZX#AgKi&Ta6{@8+Z=z74k@TEV;mYCQ9aeZ2`F3Z# zzPByCU)DTm{M)P_FV3+Nz#D&d29;Be_o6#GTYr!K) z)y)u5fJr;cv1|8)(VUvHTle?OeK+0rL#Hp|ef+F_^3QF!tad(Q-<6V5KB;TqY^`_m zA}E=eT=TD0x12YI*fnmjEp+{{D+Z3fBuQKQh%dIUc1>tfR`0*yR<~q_#QF73tOW?8 zAO?UuH2)s{$?UZ?#Dj)yeIf9JXr@Jiu7d{NU#>5=ZaEeFM_`s}(^;AeE7{Rua*n1l zU8o8ncN*9rM5?-qn~!a-CPk~(Ldb?J_I>9m;c5kdWmjaS(&-kkWH=tye>7*hv9n;r zCBpBWEfvWRpy1WT9BuAEPBi};@F=t^`DV+!r}lVZ>ZB0LF&s#O~j z;~u`^av(&RW4AWrW&i%PW_YHqrr4gp_hfxB$Of{-afe|+&G@-oQ(apvUf=0KbN|f! zaac=p5i-A+QxQZI^P=Y1O;Al^$0(fsKpPx3?<9=80dr3p+CSnXylJ6Zb=KH4{2_!W z!Yzsiv1NuarG_gIU9-jp>#4qyR(&N0{$)m60MT-Zx@VL}GhN=tQu)Pk($7(`ct{dH zlj(E_<*Vbp2yhAt&wMd~LxtXY&uB@x8grPR_|mpDjY8Gm7kmw>5kLRu(A)Cs=wN8_ zrjJak>uF)Smk{N-s!03e=3v`srY8eR1WDb&3)7LyUn=?SAPi=h*)qLG2k{) z%I{g`H1-kyaBgUQqWkg1)Tx%2&a^tEkGsBFXW0k7z=*V2b$gb4URF~^H2zOnU=tYL znDT0*R;$j9JhHhZ*YTkvC*WZ$!|CK^>HOQO%Y=uJi(v?q_DNWpi~qil!9PyV-7gZA z+shvwfLr^XwdM6y5nkS<%~c^^x7#xyk>Ksm6K_+w1ohZysknbZaHlhp_EAZ5FkdP< zdQ-roqNZ}ym%7<3&boT^bd!x{$4aPMNGW(3&X+$y;YIL0psiO_N_2qoyc`zHbj2R+ z+dg)67Wk>~2(`&FKR$#qVJ*iQt|#DQ+7{l|6=rQ~a!T-Rtfh&_i#1cX`L&NCgD1ry zu*6LGp$6FGcyY=TmsX+PJ~+5GU^7i@>Y~W7&d;~L>b3V$3Wyz#l@52|&rjEhYHKcG z{}qLE%WROS$C9h2F;PN*u*v!eV|nP*Szsk<1DaTK3#Ya@zRx4+UBx7;e zd~alXy)jjlM;E6s?H-VkL6IWo;1D=I+d0ynCGD^^ZRx%rJK?{zVV3;8LwWTgg7ku~ zG=$_ua@-|++mx^;^+nkh@*%A<{d_Wk&PLhX|LP3T)UzTaq*!KiuFRF^5?XZRUgfrC z(>$xrFw`MYpf%pUY;)dq>xT%CJ`Y?Hr?!U2&{M>s!mW`_EWe?KfvBD6oZ^-L0j)5L zl(6~TI(o^<4wNE4(@BCv7m4}!!U2hA*yrK#)y}!R7CUKcpb!N!YlQS`YFTb|v~VYC z{ghTW*DrHkERl{FH_WDK^~VJG{1TxXgGemee^FC)cQ;Bu(=DeCJAZ8VybW-3OVd!O z372O|W<#KsHmYRk?#!?JZ3SLh9c+2dj)Yb+iMroE6BX9J9gc60+B1@no}cICHWk5H zR{!#9csQAd;QOPVzop+rZ2 zd4>TLSL{WY?G9jYmc8$l5l|D7l35KW^?!si&#FC+R&B$nhX$WSq@xHS_N`qv)}e0Q zJKO|SYDm~I_+5K1A~i}oqAJd8e`iVSSZaJgwYu0i&ui|tqf50pBlRN&oK2pK{-|-+ zv`SZY)Hg^y4`Sln3MmWf$to#XzfvImV1Ta($zwB+y=p$O=S z-AVo!_+k5V36H$+*zC3&K#1Vk{s7Xz)FU5ZB9f8v=%P$A|JVb@5Yd@yH()erw*ydR zV9nyh^&w{@^NpIfpXgExMQ!^#m&dcAmwj5}&++|ELP#r(rC;%~cJ!6`&Md&S++w&$ zF92tYUSMK*R4CllH;;BIDPY}Dxwtai+8zIHqy>~@99}XN1`_(x zNeUoP&1NXE1I?};dGu-2$;+KQ$gRAGcVtvFgPIqQmM z8bS4r&>yE(miOjB$VP?iUSSkdRYqZ2Ei=Bj0pd`tq8aEr$lCNw5FTF|A+3}SXzZ5I z>>Ks+Md3h_NvX30@3yd_oW#WBQX^Y!GSc4rf*C|0kGqT?5wOY@a*E7rq?D+X3Al`L zX=;=KPd$bGvu^!tuOh>Ux2RQqXI_wiIn$%*u;%tUn60W&SC&7jv_7jj4=+Pmd%nXl z_=8~u&3tR84W9Tcq2kLr&oialL&favm06&(-`GxN$)vmb9qLR(#XKfCLBTKf`u)%?GA zi{#BgqbaPD!MGQvx^-I;9CJi1SUck=*NP!Os`xv=m&)vC|B$Xy+r1D$I=BhYABkHP zp3BX-0g2Ze1~RSXJrMw&-E}K$n0$RVu3RoqbSkvMk;|0s6&w!**49^7SJ&6QI$iu_ z+fh5{8tgi~yyXWXtr5fO0ryrM+Y9)t#jM$E|X-the#qQxSG zq2yLP>go73OD9VCZ_|*EzQVld6G9DvgwZU54a`Y&ZnO%ja)=L_c}s&yF5Rfj2lH2) z8TG3cxk}5q(*Jm1E)Vm^L;vEwtP&GU#`T}uw6Cw78MLj9{bZZUTh^&bog8H0Pw!@4 zWZ8Lqc{!r+`DOp~=lkiO_Y8mzc8judU$VG;8}BUENHa8yXy6rKHx*4;9p%xkmztND zo62kagupBA1rSBA26cWVL zhDtVMksJdd_18dR040PW@g9_Kqbpu7(!id`||HXl` zPRave#O>0?6=6<8lH}#tNkF}taaJvvwl0elmO7^a<{Zpxh>YF+Gbpi`-WQ}=-I-01 z{EC0+=PyyG9xaM?h>5=phGQ0Es6GiYyL#A!60XB(Z_O7kJ`zG2${fkP0 zrUZNEnpN)@A`=&g=wKQv9w}1M%z)%&$8<&>IpA8EI(eVzq=zxt2}^ui_+}P!y-1oZ zSM3>mS8?&fCc`e);Y54uGKV;_p=S(6wPWmayJ92^e7YZIOw2g~yj!(Bn z9y811`ZveaCu?uGfDNA2%6&-H*6coKK?^(#BPs^Lj(!BlpV*LJ(hEEEDr;@MdjndX zcn+trogsPmnh_wa!%JbM6c(xb=C=YRQ1?kc`~XdxS+epr-gN9cx-fwD-4D8CCJ5sG z{nIw$S%Kjod{vohMRKr}Y!@0e$`-o>U3*$G)1=@vvk_}S$ib`nM`z_VKQUuQWmohT))Q)_QsZ~T|F z9=tztHFDA_oYdQ>fHSk7r1|(Q8Xuwww#lq@%Km%Bl5$d1&am%Q zPY#SlkVJR{=v9Z0g%TmnG?39};^a%AQo;k{WEdka)f4dGzgs$`K?J{F^dN(A`~|;+ z!2O&|G+_}te@#AG__Bb&%JI}#vjYe6p6gzLuCLnl0^M7Gq|-^%>;hqSmIb(xeib#& z%W(2P2i}i)!E=wTQ6@+iB~`o#W03T)fGsw3Z7-hqYgzRXe`YBl4P0cZPv^+CE;oP- z7+3j4d^>%d77DZNxYU1q?9V973Xz=Ume?+j^E@`plV6tW3q5gyza693JZnhJ6{N&1 z#IudD_rl++NHS@_RKuK{k4jIq&_+Zz1|E-QJPzB7#g%Nw zW{Znn<1MJ7K71${L8Ii@CN5l}llpQcaanb!in{8;CwAJ0&+e-QYFScSrCum&%xNCN z$XmVgS>bm``na4@&`FXC8l38S9W;H04Z*3{GSW~gR^_Uo+cr;wYA7zLV6Z}zk>FQD zg&oG>%|#feKwmW6bLtgr+_M_q@mh0YfX!VxoRaHa1Duhh9uwb^x%E_vNG3Qf^{K|tO$%06<-VhO+AWf!k^ z@jbL!uLmoQ%vOnGnh4poTDOyS=i`x$o+B5vhDvFNBJG1UY2Sxq^c#-6bY3V$anMjt zbM~_PoaLo8u|QkztnmwQE43`pRnDhHXNw71HEZ~a}r7VqyVE)=td zmkqheX^*7#T(1BtK*J!Iwt)Ip#2D6K7}D{ud=uYa5tiK!-)16BX>uyh{87Mf5Nnse zkQ7)tD)BN+76SDN&W3p*W(!%47%Zpsf`PnleS5~-ROFEObk|2Qygcmzq@72s&I<|$ z=I6u>A8%zrn}j2pxS0XavSNoU<- zyr7mykW8Yan9seG%?@`JkM};`V3;kyGaaSmIRg1<|)lk#I7?an{N!K%I>+|$DB4Lz`ngV^^F5~S~Wew6`xJ0%d%2p9i4q8 zuz=kh)R7xiboZ6A9HE1XJ(5IO>}u9+tB%SklR;*S!`et~@b%#YvQ4zG%S8=5_7Gl) zDYD7MhOtgf?lCgB?kQ6*TMUo=re6w(3?V zHz=J%1!Qttn>Mnb0kA1v=wwQ;yXcT#fEC>N+dK*OVq^oGl4WQ;K5d3_009o4!De!d3Ts!mzGa0!yfTzQMS(dcMLhz7deW{Z>F{FXt9W&6mO#6y0IGu zfp17edmD1j?Nt-^eT*R&;~St3Bz##+;g-q2K$R)z zgw%r@wy=q`CGyHtNJfDidWLCXub3`4{Tuy|*zrGnbFbI#)vJ>Q?BYw&dH1kTwT0?X zuHa0`PKb`LEb)&UEfBu~NE<>hRn*vArul zzTzckPJfICVI!A6nD{xNj|op<8823c81d3L&Z}ZmaJJbQBG|1IiC5O52d_8y*jW=K z>>R3ECSAur5Xa-rO9J7m$OPFshO~G1;N_UgEHHY?T8vPsGMx6<>qsT5vhBpX7lNQ) zuCr=)4|%iNK)-&v$K$tn1ltsc8CDt&Q?ZS%dOYGNxjV(-5m zn_v9?bcvbQkpGSRh2dQ62>f4gOUA!69?Da9!L2HbwoKbDFR#SPeV*}TvzILhA2ijo zeLmmc5BJv(|HrB_$$49-sjsroG{f;S9@ejY)z zR;)~L0h+$hKtzU8rok}Fj)lVKQ;gaKGty^De*y6mW4TFLLajLFKOj!Mn?<0=#xTPz zR312R8KXc22m$iqj{>KT+SrSaL%IlhiIzLq&6F^TJaTAu7O@L2N-CfTwTX_3yQ8yT zuP#g@^k7Wrmk%dsGl(BY%`#6$#?dVBR~#!j9>$BIY^g_#J}xL>0J2nK*&C{HVq6l# zOka&SZiw%ened$``0fS(&olE2=c|5Gz~!iQOM~jQy1!YeR z2uG%&{Tn7-cc0+9-;VSWbw^{QSA86NPg2$H%PxWKmo3=AJw&2glV8}sMjQwRkz$~( z==7*m1{2VUjUqO^(Kpe7cXl{K)k46gnG1JhyUaEb3-ZjJ#Unr1$<^Z0d<~&{SJ7vb zkgFt5oYe?q7zB%*xWF3M`WN2u)ep64GRD0rU(XF&G1$4K28UShN`SpFPuo3DM$ixn zK-q%Ap(fBQv@qp_u!$RkEK(escKT@*heZul3(GBFm*`LLj$xsVl$BC!qRVAl*0L)P zo-X?qh1b;+fW#n|lTB&~XpA2k@g3Jkx@_C7wwX}c_<|SdsTx1@>`NbJLyyXP3`17I zk+;S7?>e>Nt_7zx@*n^FbkuUfNGaCMavVF+N=$w54%W}UK%+fU5~@mJ4}{90g&?Q> z1%Nvkt_d@H^QRMw`-vsy)GvKc-et+kfrXJRq|h6bZ#YkpQ3aGoL90sG_K%OE*+6X@6j-c`( z2RHhi1S90}+=BqS(Qc!8y5`WH9i8MEMFj1URp--!|B`z!W>awPclp55uxC;f&*B`7 zDZK_)CQ#ka{Kk;p1`Y1C>Ah?IoMEWNHcj*3^Znxfrs|f}{M%P)t)ceM`0H>!w9OQLYtQZR?>=o`RF%o?>iOZ{ zS7tO5^83Ncc{?kA{*2MEr67{bjkddFYW1fjER2`HH2!0nlTnO+#solY2t}Ukjr^ zsUWlCWiFr|b!^qnzL6+2dvg^KDZV)X1?H@($m@r^9;~RmUvP>z#h1)>sc@{3rABkR zU>54Jg}L{eq-Q`XS}y~r%|`>3Pb@KBM1Wn$ZLpgY;tyKgB{|qY{QK-z5sq)yRM+hQ z65^rn3Z$x*=4FTIJdG8LWX^fJ%ZQCNx0gXRr7ZlAAb~k2Aq|%OQn`1CEK}RP^hLwr zd5It2$@VQUlg3-m7@$Qx3T!oIyU#_U{u1jXJjwx}-iey%z9XAU#9MV0JM-6MnWL?J zXl`Q@R36)k1xlpB;=?vw*apeK%0-jG1iMM0Np+dYRI*$}_R8oL6&gW`C{^i@fuw5T z$y}isA<=o4%Rn^m!j^3RItWD3<;eXe7GQk;iX!#!JzblX#r4{OP0r*+e zl!p*E8}FrfRuiy*G6C^X7(jXQ0pti4ig@`i1FBiO8Hvt_#;x(&Iea7;mp3LnKuCai z_3TKc+se~uQXb-#dsXHNkD;E~s&LhNDq|+|Slx|zFWRYKb_uK0PnflLJO4 zud=S2A70X31~Jf$BW5%DiXkT%9H)LD4_cYb3bgr$u%lPL&ndlt3kZLzQ<;8+s5^pT z4kzp=SI2^?FMxGZN$xsv6?Fpo2El2=8I@V1B@2{>Q@1h8GL(f!cMqiH`vesA&5A7x z^x&ASC6w5PZaK5_4M#7P(aQ#UcMMU;)csDH|1|vx zo>r9IrxG8uz?htdCOCvBbLram&7*JP-M>*0FXlIYr%vaq73f3o<>H1XM%IF&r&;Vc zM#8&iG{%VrM7G~bP7A(c7gDtj9%``Hq=vt_0H97Qlkq(_OB-`SD_om>-9uWrZ|Z80 z_)Z<%g6STA&($~;>fL?DJKE#3#ycCe%Osc)d{ zD_=&j!EQX!Lyqu-@5J4zPDw$q17z&n*d34`3!Jsyg9>bK`@X9(A<1DEGoZw{Us`8v zCe(*aVAHY0kl+&>v3&IzO-tpnuhPSz1&D6Y0LdM^!(4JEDF5I`VOY^EN0%Xjwc%3K zaojzd6@G;C`fmfj{S)k;_*sdH8@5Gur>4HRT6ERpjAFCTZp3rsMGG+#+MTA6kF%Os zS~OE4ch7ocPqt3N&bB2nu=}MK`Q{;#T^>w9r?KF(Xkc+>;`{*9|32(%28GFMlGy>^ z%Rj$mAy6J<70r3lS#(pN<6CIu#8xgwj!~n|QJkP%d@H2j6eQoe$OKHp|27ieK2s}A z)cT11`kfTAUht4mB4oR6%qpMkbvFta;zD?m8~2sA%LxG~h~b>}C_%=Z2!V<(7sQIq zr+F?c0&l9v|BOXml%KZMN3cF}W?E_@@k`04T`C%FaH(w-b?_d#d}gOt4_A~k^sw~Z z>xBa#`My#3V%u3W-Q4f~)4gF`fn-VUMuOgQF)U}{x<(Ur`60Fd^er5j)_jyk%{I34 z{mwAdq5Y3pS46_1ydaC|#A41pz9DSyR7FNqNUI2@=oTtUYul`-3L!)hTngBR6R)HD zyi5vN_g)`t3gS6}#2se!d=LI$D@h~|O363=On*kpN=3xlu z*@ov@-6Tm-itLlJn^EU9zfVG37hCZK>QRD*u-yKgKt4{ud-~&mo!)gVLjY$sRzX!5 zbk>C`Y_GN;STk~#QT6uPqs+<_*+Q#O{m0^meo1q|f`fV-i%fA~)JeNXLmi zPW6GWWO=zVf)!U8HlRgd$$7s7pcn0m%w%Gy-Z&;?yDg_P3gDnDse*4C0DFc6i!8p0 zTt+5MZ?^DqjI>m==l^*&Vdzg7`glfqJpV0t-_`E47`vJA1c!)H8$kLsoTVD$T)R~< z%%#hxn$_@G@$UUQqsArw!s6oMFXQ`#n)t_!VXK*6km##%fm^L=tAfY3h5I(=YM8yJ zB}b$=b;5|ETXiUQ8j@+Twp^TI?o>&$-<54Sp;WNlsta6X^%o$hPyR@Ad=7Th^a2w0E_T%KR0zK zufd4&@jt#meL7}GA3)8(jbfXnX<=MCo{JJw%EO)xi^+&O7#0QqyQb{*1#Q_mN*B3M zNk!UJE5}4*mbCUzR$NlRW7gTYS+sWvxs`5?Fxb+7`<$fLIzH$Do6QREC_DlN7xo>Q z9k*THokCNY@#nWzPcZ!06B3(I*AEvTPX?8^**$9=Zj5~svokL>0UeRleFXxjfO+>j zEL~fjZ>ZwjT`txso3T}}IN-cJAlrvB7y6o}1oTG>o3;!LHLg>+OlH&k(myO~MEPW? z7`CG#WLF>K>Z5BTWxlJ7w|KmHkclKR6V21w2c@}*Y>-7Ti1}#umVYxljU^YgkJZ$rO|;_ z#S$lD%phgj0H3I?GO&$@${4x3an3>7m774zBK%YyknFK1u@pa(jteWyqhU)Q)}cjo z2oq}pjoQv_Fo(FITwI1eMHZ+c_I!vD9EGkNSa3pJ!~&U`X`l)P6XgLMfmT`BlZ6QQ z46H^_<)VZxZvzv}8YTiHVI%={I1oPrjlH)FoLL1OrAB6OA={c{zxzAlg$B`*n0)vO zvd1D9sUcE^umfM6*CFCT@8c~@{U8&Bzc2ECh1I?!t+&XIWcfkef!0 zTiRlJAKg?k4SFWsA0&nA#YO(DR1CkTQm?uo3vX+agbs-x>tRVv8tC7ad9=sc4O9E2 zKO?fb0cuT=f5m8ZjWcnu^r1dV?dgHt5*t}Jo}s2t7DUGMCc8OWMl^g10~qAKtTc^rNAUZjX){851RNC&>h z9241+cD~W5BZ9ancQHh47ZY&HvTT$1>$e;+j1%6C+1kh3&7(dtw@h^>FvrUtJM-lO zD@LS+yj(NxY(Ma#xkh)ppSoCnkVEG^!`MaJH{mJak%J54H$OuYP-@gfOUh zt2%520KkVWoBbspg_2f&a|tPP?sEJQ>ufO}mBh+cnm z=yeeVtJ94PVFwybF`Azz=6S&%|vRkq($RRLC*|+&Mr$U6=$rEjHjKPGv?Rd zDj&U;#;fiZx^;nqj3l2O-*xo# zvI=&D>5Lp=fmGB?J=f*ncB_ddQx1gI_g}STx0mV2PdS0tgTqlirf~LjY&T}R%l&X> zeMwYYt?aGS`WqIq3Kf6yWpiAsQOh}o4X18Y0GrBe#iy)9w)eQWc8(ocbRT=}^7v@p zYCEN@$ZRVOi(X~T@HE{ICpB82#QJM6;PPQW5#(vEpyzV|TqhbR_LIBB@`^+l zQZ!jDu5VCM8d&R;ltG2X*uPMft*Iv$guTDSEAO=(ul z~v%C6sPvNjPY#&}~?{W6WY-0C3Bu1qs zDQTg!ad_i-=NrrJc=hNOFwCXr&H3s0?xOQvlXlO3 zmq$6RJX6QhI|MJLpsbIqh{e{a{CTOeky?ka)$-0~5XC4=u?jO?H$Dywa%h>{`o^tb z88iq(d2BL*^jjYI_%aI#7diSj3ifF4KuxW5%8rFqUnzQXFz}i;<4Z8&m{^sZrOSI) z$T{7O(QX2&JL>lLS-wO}zO@dV5+|1-gj^DiV*ohtqf%AZbg+El)l}==m#A05(rZWu zJLKrhe8bCO0%^~E8##-==~1qyffNa0Hhe&=;~UbCO1nxwct7nhpS1C$q@>2#H)6Ai zcZUn!lySGfb;T4zak4sc?-wa`<9jWe&OF2b4AC1gPHXY@MaGUo6Q0IOBgr$tQ0!W| zg$>Xt*N^XTWvm%qVLTOm%x%bdb+Z=312%f#1%Q?xBnEX`%+pXFsi?A^j05{2b(@5J zJK6-i#lC*7t~UuR;O-Iz4GYK-gY- zWn98mVWIEnsE@^fm=lbiI}-m_;>(A_!;BcxNuQ;~oPFWss-k8VO@=YqO`~hC<(F@i zAvtx7EaA;t3r>`E6wc`h>EcnPuuyOlIwNdCM`65-{vTaLA*Y(9=v=$srm%(R5JL~q zU3H2A&2IyEpjj0d{Jt@SAXyDFJmEad7$R-GaYhu>Qw*)iwV3Nv(7f(zQd2Uz1C+Hr zf_6+0NjTTCKcfHq9e^4cU#t+IL^W<7eax;tD0+f&4jsneR8v~QSyyuMf#v>H4)4e; zbd#rHlg+3>vzs{pvZguXr_)<;peKAu)m3 zdoCMnVa;%WGLSv>Yvm?w)%wAf16H^d!^G}Y*3qN!XcAa2f|gxgn}X%!N;E@r9G~DR z+l#wT8R*8R?KB)8kp5E}7r@7{iVY=IAcqzXDgL7rTC6&}kOJk>gA)Jic|Qdv1ybr> zcVE}%>(0?9b?vDj@<<(MKmjSa3YS+wMFg9Vq41KsbJ)<3HbK zH>#5PYJ5U?Aw1K29kK|vJDuJeW|3z%R+k;cif*1X;!al_jT<@V9nQOcqApyG)%CcR z`B~6hzbsoc&*FJPSdSb)ECmqRx_ajHl_@huQ%!Y*yunaVDh0u5Fu+e$Dp7jScw_4< z0tY%|I55;O#s}I<#V>JxghARp7Q1ceym#gM%+eWQHh>VQVdBN&NvgK&Vh+&xcn zT$J>f@V(oc473ZS?QoUh+4XD@43N~gqE0L^4=hSJ(-WfB)mOm9pWlcsRBB56AT#uq ze{q|QeoJ!peniSRJ0`cquoFqWh!hq#W zuue>ghwW9~LGhB4`tT9MTSA@>dk?jb6F*M?a0RP%*MZlSXFs(&z8#DdS1xFae;e$D zF71W(#&C6X5%w*YCs!q5`c)kgVJ8{Z31CqWN-vbX{Q5Tue%0R2?JA~Fb{$f=TI@@V zwFs(@0DvG#6EeJ#70tu=!j>Y8-W|0e0jqF2`p2fbh&gkCeAXdR&h86GH(*B!FnpwBWwU0_-%c9;y3>g`0`L82&2YpE>z1o zBKuL@+!gx0A3jvZr7#~>vZ%157<`JZ9ESs)sWSbsP9$27E$+skeS$TDj!~;st^V80 z{F3BX=Z28#%U14LCLmRop{FJCqub&YIb>9wf_~5-IuJ2=8rq^Uhf;U@;wr(l%PzGI zQO$j|Ep2WeGy!qhhe5|zjZ*icfrHanS6ot>G+$PK)K%m7DnXHYw+vL&pZ8E!1+>FP z-6BfgY`haBLtu9YPubzRHN04mQ@PHZ=*V<^wKyI3^{V5!$f|_!we+bwZ8?)$GS9X7 z{G%d&=^wL(VC)Nv+Wfsh)CVD?d)key0^U;xuAfJMPUJNoRU6>1|%-E zh}<&YDiO0)^dSw&O zU4p&X?mStGiWmKUx#0$=Mg$lwnF7-(6w&*?T*;z&8ji($g_=LQr~`o~)CF#-pu(Rj z4y)}a+JDIwP8<8HUd7-3wJHvUnw>8E?(v&DEB%Md@b|KN+lsk3JN@_l&R2zxM^a4) zD;4h3kWhvL5U&vsIjIl0iHz5xP-zsjdlrvsGqnmfIQ?Y#@{SA z9_!YW^>6Aw_k6q(CRAf7v~qC{Ej-Qzqg@`-aU(88 zlO6rSo3bV^mn%>1q#{-dynXg&@2Bh2N@nU8y&UJEjGjQBC5xXnD}8bB!n#<0UB|@O zI@x~jvIRU+$>K}WG{A2?-u_9Fto`Fs{725$E+IMyu{x{|I&|%A{K-1Ab){ip_F;&k z^~?pNibV693Im^1DPB^T15}zv0p=iAZq>XRrm7sdT-lF5aC&_&ISs>TucV`b}5ZcA8#1QdRa0VBmVSDlOQ_4BKtN z;{MAoGpL!>dC5atKEu@cjo?;b75OuwtR)kG9A}_H7)rAsH8@43vPj+a+lpFcT1sV> zM^eYas-_T>*+Ozl%Mm&^MUL#;E?W}AM2?C}x_;}`cXhz1lq6A^wWA?JVINd2nFiSTiD z#Us~##;p3H@2&m_7ytW`~I5G`+U*aEiH56NrWwHkz!(lFaB3O&BYeCRfe8txC} z)j7yOH}pPr)#kcp2umeUzx3}cEMF9F65z#lwLp|NXTKu5tM|o~Mi{2mB~9T! zkK*}U!@Sqs!61w*&m9@_dMsTugc98T=LQ5J*3V7WKiLuY~49u5sIx|~-T2JzfEG_LwL(*Ocem!XbuD#*1JYbKo`jE?K z5YEQa%mHU8)&Ww9iZ(t`cIi(8VHe&P+NDpgz!3fjU_ygzys{d;_!SH{DXgahZXn{e zRPY+NM*UIuZIKMBpI`%>;nw7byvzRe->?=3Nco0N7@?aTL*WJV7!I*-=f)X+2fm%O zsHkg8<8G}Tx40cku{Crja-B-|20IunTWCQ6lSOgE=9jrLrEztqv5ODSq(j}=u7KQXCM?^CfY_> zN=gM`kOmfg8_V`4i7v)h5BQ%8GH)BTlh`zaFUYe+DBW zg@PH_kB;0*g^k<6%h{7G|LS6*SH~LG5F*CB_~xPFBWb>U{Wk05LP1<$rMAX`W^%!8 zRD%-XErRJtMO^4$U!scPVOhiivj@Zqij3&I<&YVv-XG@C65Z?TnRc(3*J-m zE7|}8WuT#}{NGT#DXvqUd93*AD|{Y)=HFpl1~d7IVUjzgByE%F6fOv(S<4*yE5p$4QLDM-Q^1Yc{tW2ZJ zLwRvN#2)CqWfRwktCTL5i*!F}5^nWuVjlTl-MSI4Ew!XMuF(NMXGuoU-5KHegoFi7 zafd}q&d*xC)6ThD0MP}FiYU{kk3&26SLTix?T!yrDa<^E;=4i{p=79=&P%na1&K53 z(56?gjUXNX+GEvaQ0xsTs1PyHYN`#|@L|eCN}Yg33p+*jBZC zr?Xm2C4T>t{9_C8nAEE4|8(^(YZF|)HEkp2%${iwQbe4(XZJ8T*j0cAC`WBPb$Kj> z4xdaYw$b>uCTj_EgAyVrCc(|Lxab) zqJY2ykuQAkqX*Jy#{xiM-trT6TAuFbug5Wmvr~@MpT5phg*2tPQ~=Sy*Ufh2lGW@0 zA3kaI9JH3&>q1kwMcSu+r+Nocpn*E%{_Q~1Lf3``kWny?OQ?u%iH{YY6X0`uHDKPr@o&RKD!bTOR zgt@`TAIL2IMPOclTlYkMiCA?(a_xlu+QSbJ*i#si*%<4RmMxu-ivZ5ENS@0V=jixG zKke^Gli#KX;VYWJO2R0bqk~Re0`FT*81YWO%-B zF7dW0^MuF7vIwFm;N>eIcG-S1O-1;dnY^vD<>qkZ$X*n7dhC*3xVl?LKDAFyMG+Jb zX+pZfnix&?YZ_@>#%42yVgg+TL0=i{Xwlnkq6Tey@r$ zXBM1cJ9dsJ8wO0B=B$zeeTtk`ZtTMi7f@lCID}TCMnH z7*zH8OXv?drK0N^@6t35A~57BoLGX4MZh`<25fwugTOU-UBLE*%DQ9CktB=u>i{_O z1pvM}_r8wBL>aoZT1UwC4|r%S!Itoa}8Q^d;> zotOM&QVnptBPg=I`S%Q4anicYTUi#_ORKesJ7J=2ml`Y`e8R$&9dQc6T(jVs%C|E zu;~aRy06KyO}p*-00Ms@UEzhgD2XlsVyGZ!;Qlm~33_zdv6hr8ke(=l1U;%6^zEw* z2l<((tDIf|T}A}`MS^$W4;7UcOBF>C8QkcWaReD{BLVzf8^HSK0Qm9*z;k9w0!WwH zTSG%9z4Y$m$;}M`T$r++>xZS?cV#0&rk zR>_fh^Cv}S0o^nqa}OSmKD&=!-0eibA~2YPjP&@+kad&Ea8)%v0^mDS!+Ya&B5h5m z)>>z~R}gSPJVC(X`zY_79(EW!I_k-RDR=vHZ|~s547=gh<<53*Ym7zjhxj$AZ29EK z)CO~>cH0dA1pQf78jxpHAf+{cK@r`bs*4WC{QRV>Y;h9r5(APdh&U@J3fh(ncV0gdHJqi%-!2`hurRJD28EodvM7mOm$xIz*n}t+gUgWT`|`O z5crF!YJk=>;i>3iL52yceDTm`o!)G=rJ9opJjKe!+_SRTli&{ZI#X>HfWefL#$TTV4B0!jh2^Ts zqbZ*HbTx$)lBB=FA%J>q?%7|59i5UgNm~3Bt3f?Aezgo^3BwqJn4sfOBLT ziSd+E20uA3r0$GIeAej=AF-HwYIe4e3hB*nDhYywj+> z>&%~FGjtPNU#hidZV22tXdbsWsZ@?FhKeSL$ET2Pd}wCZRd{cZzQfD5v+52X!;XFX z+v9R5)jYD@1VGgP#Cj!AQX9Bs&7~N$f6X7zI7z_iOm+GeVE5}Su%RpLRy4;ZWk^Gq zfIK;0@Y1@VyEsJ=bxzZC2cG}FDS+|cha7$IdiMU8p|>9guzo`Tmum^iD>w*-VKy8c zzdh%CW}e>c5ACZ2A9C(bWY?FU5&uRQ+p?-%7x-5IP~hnVONzmw**wF?R?|t2mkC)L zE)x=sP0E;h!25cM%##)S&p&n_gdJdGOd&x5e-ecF+jC@=6!R6cF+R6^_hTW2I=HKnNm#Jw-l=p(pE=7CQL zW>{S1b(hFdk|OCxwx54oV=N_`3Wwe1)=)V1Jd3do?jk=p7#!n8YeKg%+mCK zHvzEpF9F>C^_PM8`+vUgzm|tizafC=y0EWbXF+kXEs%(n2;U?3%q^%Tq5^=nhbhQX z0IXrRr?)oR2V?9}_(-f z`1S2xxXTAUaqGm1Z3o>aRZ}c@$m6|t)&pCiWpxvYz8Qd^|7j2^>%om=ay}!vDjZIu z^Db4BI1ch!Klrxc&#(}CYslZg$g4IOQ4Cf*qCg{m-x$ExLk5D!vL=S?klcsymtQ~P z0#}IqH2};4fB`BEiVJ`@)A{Q1;~s$7<=YfxaJjpHDUo|?qk)h+QAz3mC}UphAygr0 ziGFmnpmND5C_GU!rT)olbot|WHBcpm0LfD6<*Bh*_QBNv+77Hyp?90^Gn2N9EEamZ z5wm4g-`-ueQ|6OEvejy}SS(gUS$1>Z+zperQjQ}m0K+5Yx(^7Bg>suHNn-|l20pZW zflpe$A%K{F7_?lUpT8RvK}yj}3_b`1O~MkJ{@V~W{CSqW^^2~{YNMgxo_xlT92kFZ z0^s<+2GIV;EhMirG*rifADkBY{*WHp|0IA?kWIC z(*U3fNl398;8=p^DR9lHt`5CGrU1Km+~;@Q3lf zNJ0S;PA|+nvOSqx{s@5El+`=Gm#ZE02PM%UXK>;Xrg5x)mD!OrwShVnxt|pr+_h4z8g8yCHz!2>hP}@Xb)c3b#Y^7Jx%t z0P)@Lp8&9Q69C5v$w=8@H=NOIqn)1Wkvp)T=pmT`0Fy}oaGEUMBaw)K5AecP)c)FN z05DrM0rZfvgBCEMHqU?4#Z-`&+$jOyCPsn3P6Ko>oK^8!H5^M72(@fmxD5+|$3Fs~ zt!V{cdlP)w5$JTdIis)Hr?RM@Tvf|Ft6o^LGX<_OmfJkpL4Uo|a+|;0Mo}r$A9sg&aD-92|e0xf%-+<);7)58V<) zg%1dZUJ_hp{Qc$to(~yT#xW$|&*2X;Vrt0ujR3SgCnQRdsWE$Znr3v>+)w0-*j8)) za;`+OgqpFh+Pb!^f){vX|n|rZO0${(Vn4#yx(W?!=0(tdGGbX z-l661Kxc8b&V3fW&CPt)*$=&l=gFosmukJb7J#G6;P%&bhyj|QDH1q9t)d9JOXtuB zii{xrKfJw*Qxoa7#+@pvc9s2BnkuI&r!T`zGkelarvtl1Vv^Sn6phnOI&^4~BlPQ# zG=yx@v2sKdyd6foj5Fg`T%zB<`@O3pND!T~fw=Y!bK4I5crR-`>sc(y@H{5E?U|{H zm8n=Qj9aZNM}c&V$YKYO7@-W+r!IkabT!ETbsxZ|XgOf*;>xF0?;l6PM9;qk;LsTW zypbLny?kZxa(UK-PlwL044`GuM<`C^@v1zAoBe6_?#a?CVSjz=v@tXi(WF^>v8;YEYB(O0Lopa9hzC!`N zU}b_2*SNXdvN1%Z)DQaG`nGQvR7R{PJ#8uJlg%%RxIwegLM^fVxHA!xkHDF+GYPZs z$Fomg2RE1_dpA6^TClb^)}vINx_t@&I~syhv=xqupo_)Ea1rhybQ@k;4kJnyX9~ow zs=hi`*X_FOGpg>T7*Z{pN{skKmi;=RoI0q*pvn?i5{W9q`u9Bme2XrA9l#&Zqiz8> zWF)WN#3k4@ZHxyy{E0%N95;rq4&H7{6Rf5Lslc@NS(zG|8o!>$nA%lR0GG4EQP<%T z2plRSS3e7&E6@So=5LyZF8Z;liSX@j0SK)~v}*{?XCQ5$d+>=h6y@LHP4_OM*F zWlEbFlWZoY`?4-Go@BeaTojm+TC!jV*2DzzS7;)z4*Y!=05{Rf*8w!p`qu%ho(aHv z;{y*cXHttrEgQpwo&H4BhZma5??eM>f*EN8=vF`5Mu#qq^h3CcNmkV$S?#w|SobBGdUNl~I?kA7op@ZM>=>65lX8{mm5IRt;m@4Pi z8jb0tUK%D!^1Puba$O*z&5*iG$`Y|-@~}|SB%gS3DQ2eZx|+%G8bU-YAVPg*0{*@a zfPW(ItNdL+AHQ}Bmd^@c=vv>UidReHY`E9}0H>Fa_!B+25j2-WOr<$o0RV6R%!r4! z(V;%7F&(k*+`!_zTB*@@g@dw4EETbHbJlEs+W|F*I448d1^CmG*RxaYe}d%1%`4vm z5U#tNQPUPPMmwN*mH+MO^Uj@^4oC;dDVNQ1tD5!p=uEiSC4M!eZ5P>CR2aH5bSK zeYgas{uz9;liAt9JjUrbC(PY#>+B69V;2+GqK5)}QZxDcu(WDgF2^K)9nr=@{m=k# zBQ!hmZ2%#Y{C4~0>wG)l;%F2Wt?lQ>E+m^&{pT2l!yPTEy?A=Rb|AVBX3_l7`8F8( zby%T;xNU5l1Aq|Gsaqo$N8-X#!$vI6YgUty8G(p(zq#bsQ`M$lVp5W1+H$q&**ZL@ zCtwHWMG>Rsve zJ;|U;WMZH%Y1Arsd;*rh195(^<&49e^{Ek@hx4GpD2?TG+Q@K2lcE3N{ZI7|C!0^| zbbEHS97zsDlZDGe$!q(2VK$B!RhC$oM+lUZkkOTyb?){ByrYQ$l{@%Ljk_e z@ze8u1Y1Q4pn%6hztY$6^-9nXQlUwjw=a&; z)uAj3d=dWY_}JeHFGJ@BAVmL2xL8Ce!t=O9l(^tCs^}|%@5^f36VzfuU}VYl>b^i2 z-P_~&3d)M2hCW^yg^lO?0T_CN>|niXm>j!jkhMcK%>Mp*7Xcg^JpizZulIuty2GC+ zlm|2Ni6NZ4ay8V`1K&|R@Jn1gw2huzfBx*x#~bv9@NDSaiyqo$+%q|G)3TCRfIqpT z{$|h*b;DVF;~wUG`teJV+f$(%;mW{&4j`0zkKc8lZEkJ9yiK=gi&h&J7QrL>kEfsU zYY*i*>Lkq-5(kIF&z2m2o-2UB-?9uzz}l*y+nz7O9;}!`J?5)KxH~7PN{W!U>`9Cu z$2p#FAy*u3A-D>CUjScx1OdVqv93ukm4D*BWA(ReGM&KJ@ytE^Dc@)& z2l|GFuATxwnDn;z^k`1{z7x?3kp+5530qwH_RBYKk9$Oe!u24ar6~j5nMaY_S_Mmv za|00gvx>dF7U*EYDP2)yQx;UQPFBjYR3|!-{j#dYg*i1XVCdd;ToWO`V&R##m&fIv zUu*yiBN{BO7>km)qbHu8wmt(GrOTi7D%yFK{%rwT;?561;E(qAmJuqz4m?b3 zGoB*xVL^zgwk!}*l1siUSC`1JSst#(1q?edCyI+`EA;&Ve7D^~tk5CKzaSvA8R{m0 z_tMlHqkoW&)`$BBTuEqa@WeRQDS)Dx9h;iP1=x~{E)H8WvweY=N6$}S?job4PfO-U z1Ii$b#sv^=E!bbw-?-6%nb43qPJ5LaPNgl|g0tf30DOF4+W~Gu3xE8+etb`P{PfMs zm)jdXhmy0K67!vHjrr6v=&%Qr^o5;UV#E4~fJ}-Y3TGT$g=pul9*RU%kl6R(h zqJf!Js3-7H8>j^SM6;u#m=ozvsbuhiFm24hE5OU6=f7=8RoTmpVU;kpF2U(W5J83j zF<(vrge|vxr2aTy-j7Wf)Ms>q;^J?9S~`8I%mq8KcBy}oN6?87@udF>w;k{_a718^Xj zXwt<=sNwMkeW5&v6M_%B701cjGZe+qEEg6?1@o{9t`6auz{>-UcS@5*Y_JEnxP+C+ z?gf9yW+b6)2t8LyBE<57Wi90n>TlY3-w3sw8SkIKCSICO;l*siCZ`7QU_NUg6nxP^ zAI(cg3eJ7nB==-{weswUkJctl;Z(Hn_OW!}%XUlBIRXg#FLj}uZu}4^0keb<-K$qq zb-0CSKEv20J)Uxl4PPS7n5PO&HOup1ln}**lQi&MRzycXf+GKsNv7 z6x@v79)by@L<%*lv;U)KBWOu_cQ#4>m;5Cf4MKY@BcKE{c(Pa`y3FV$!iXy4S3Q#v zY@3*pU2ViwUljzOzHSe8U=}_4?f`Bg;j5M4efT}^iWuRhw&FQBY{O}+S%D9_hWpzo zJurv?0CO;xza3UGemfKdEP)9`au8JcLHh?Ahlj!Ws%{}xYr@wG#W7-saTw}vQvP0O zic8>N7~&nv%oXEK&aqDqVBp~k0dp;T+AO^b=&KynCcM#J9q~YToqyR`#(S|z#SCFU z@>~Ig{7Y__4zVt>Xo2U`^}44rL^kD^zzmmdVl#wKl{~q`lyp6=Hq~l1670Z&Xn$n~ z?rK-u2ek7w053u!x*LL201!6Icm+F5vxXBx(5E>STy>*h5Yqu**+`D#&o0XULWtO! zgIRPCd*PZyipxO}&$CdXK229ai4wS6#Xi*EZj4>V6{fgIlYgPhHr8;=S;mDXo;o#v z&Zm{)xn*qq`RMVJH~H{lCw;*R`1Bj+$gM!m1^AsOfN=gBrb_&|hYv|mhD&%tl}L)M z#$1;Wkx9uii3_eRmEwN2R8@qk*WQ6GQ8d1`=XJ3!cpa_&Rv-uoAqinlYkvKC01GV z?hF8)&YEKb310`WiJo>DKxlVs;X~DSVld0MwOzTXMBpt)Q8@r$Xbe!W6QQg0X3- zjj$HIq^O8(x!LOz6hJQ=o(r~f?%I{ml^Vu*oF5BcKP`a26;KWXvX z_$_D$hUN0S0fh74{KFh|D5B=5Db(WmLZxZTa*VEZlCH*xEh@fd%XNiegkf22`onrk z0wtD(!lLNFdh_+@jz8cBXo5TG8oUP0NfGqCD~;*En_fH$;7}G<;=st9p1{|C?FseI zfWjr)_t{7fAvPmZ)T)eIX$6)hVaIVSD9W*k#emDYiz%btbgq%kQUW80#kXcJQ2-M{ zjVlLcZg`|;#2lZZa;!0(>pvZUV2L07JG;eTuHo_c>wU2J1^rCt4j`<5;EB~xMcNvd zfHGV~_ZUVm3ASoVzUS$~!zz)Oda+1UPie-QDigO$7VN;1SZ2}R*g~G&A@%vjvHy!G zvOxB70)f2-{jVZ=(j{kvzOfNpvFF+VniN23&JN>MZw0a_7Wi)U_dgiTYc~$+_xorM zI*f!=m_?ih%B$Q#+!cvwA;f_KbvT|tDBQ>`aS3WwfzXwn{162Y%hNF|=R`M)ar9;~ z@MFD+^Mj`ZaQ%K}`vyx zF88i52x&auvP-^B2xH2+=bMUNwk5sf)_Aj|R((&9N-KuS>RGI$zjP21&ow*H72K>?|qN45MKD z7CjSyu>a0gsX<$PuE-c^7RqpoMtw<++cxnCDJpKWY1$qUR3hsxQAA?8v0}Xx?7)sF zR?w4f0{Cw0>G~677zn+2akM3Ah3>%Y?g;=Qc(C%Z8}@7_|4W;}iJ5VXlXnI~Z2&*|2EZPrCP3pU$R**%Y z2#45Wj-X=BK$|z*#MS(rT4lP~(4k))vVVgi+U`kvJNr%zVCZ)$I8A`b%khAWAmsPj z-{sEs%kayMW6K9|C@{d_|H2Pu3JPxr078g(DMtakh40bs^#Jj{kEl`={RC^SObd%F z;tD0dE|+31uW4?oiGj8DItUvyJu%yl*0w&RN_P4eQt3_EZF8KP*R&GQEkw#opM7q1X1?`Vj|4wc#; z2H!R&I?10B2|;J@$My4f$rsxpcqz)@fAzFKvBETt0+^TD8~oLOIjB_@d1U9*7R!5l z7O{pz2vL0^lRBLUbazPYdAW z2=17vHTe-46f9ks^I~zIsH(s?Mu{;sp4Vf#Db)&&r>EdVxLSc7*cK@i>shovq)_~_HW(1#DHE2&d7LPy} z*l{6zTH8K7fH%h`I+%wt9G_*plxY%GPBlfo7_n2aAM}();%?ZMwOCwYY=+MkcmsA| z6L#Qp2k_9xkM6Z5i%_Qbg0=VsYmw}UJ;6rszvY7?j~zn|L?t>*(T9!$JQEX3_eZ>`oW^qLr7Ur6Bq)1$qA&g06)8RE1F`|ml zi!K280L$%~?KD{?-u-R%S0hmFJgYL}zjh=1f5Cj41;o0W}_xyip zt4@%c57Q*O^%IHE|FxAwsZ3==w{IcNrg4fi9y6N(yYI7QIpuMK(qU}%@ z0K9~~KsX93U?GW6D`4(I2DKxr*+N;sD0UKnDU|(0=tX*&M2i>r?A)A#(Ds4MOU4gQ zUkOR#geg#gz_h4`vE?eC803Ha_tnogyI)G+EQHuXdU-Fir@8ws#jhS=_nnf`fT0+T zyR_=2NEX`T716hlv|M0`#@=Oh15y6U1fkkcXnb&n&a&wl0GZbaIC_}bWeT8dncWBQ zeJ%guIB6#>e=rH>WzTs5xD7&>Rg*Bf6jM!4Ry|u0Ql{HOCQZqdh@cC@q)r$HBnZuFRrXbz z*Y%76JFqPJX#Yib0E|QKf2du{hts>M?I8qXk|8G7A3ff9{1r`f6Cvd893U7hhUK}P z-4$pT4th-(Jaz^E1uCVl#=@9$HLRtjVNpC_(02KM0fRsB0z3c`7jJP7>4;J)WLx!R z1|ys?ZCRFyr)yyr8A@*6L{3#?*uq`bU2s^0tlqNk?x6k4A!>#{o}t_CWhY4+@vc$; zvzXD-*)WxTbsNAJT;aQ=AVh<#a?KoPxbgaM-Hn$62J4i;|NeKo2Uy%g4&qvD!f`}V!Ih_geVaOBJvqMo!R*5Vw{d=5aob=@S&{UzBBvzVmKaYW3M0o& zhM1CEHcdi&67!p8+mc9wPV0@X05|{uiul^$_v5eU>plNRhrowuYjTq!o0&hXldQB5 zs$F2v?*V}J*#U%LDmj0h>huBr(W!Z90WHnJNunJm52(9@m?yj3cto!dP((N8Pf$1ieq1a3?j*hz{ zc|41gGhGL;2c)Y90fXk8-~KwmZN`8>*5?M`Izly`Zz;M`*W(O{m+h(`lw&D9p0e#4 z6VptgWQ#H(_Ckg)v@MDDqg?_}ry6wt@b6usk4K<{iEeyAh+ApjU3}W~{Q;3)^lAu; zxm*bkoDo1(2mri`@c?z(4hy+u!R4?a2?2v;@e_b+Ym~q}c32elh2^XXA;gJG=g^h z4EP4deI4iyGMU#KJ;ztS4O%8nfK|e|0k{cL)S4m4F2hJ_Oc03BjLWv9D7I(1x-G{T z#`K%?>lPRyq`{KtO{gmXj$#SMT+N2Q6|YVfMPK-o8h=MC#_US4Cx3hnMl#g1;~D^{ zp9#Q<)LeGW0Kh5*Fp6sdR9rFN><=_vM*14VRAz|sEkDP!SA-{^M$@L72EX%9$b z-sh?A;OQ~WVD8+i7B~)`BY+3IRc>ZaCf)NBDS`e&Pkk@NgOVJstPCyLIl-)q~wf@D8|^J z>bUFfI1P6Vv7*lp^z_~48ttBt*mN03si)xe5h}LnHh>UY3&!hhDv_Zw{P*j})%n|8 zgm%U~I^VwFzuJy4WX_N4`fzMmt@=Kx$vh)#B{%MxaV7>;^tz~4YVCGRuq5gZfHy#h z+4vg(-+ZMpGra%#n6i!d-G8j5VGRuRP~&=-ij_JOfY<0`5H5`?63VC_{Ql09H1q!dyAQYTS*#~{5S>B3>w#pOeHKXUFi{ z-QC@b8X&k&GA$M8qfu867DBEdTCw>A)J0mtP65sDYCHVyq6V(V@-IF2a6@)*f~!u; z%Ng7UN$$Sy1R$8jyn1^~A`{)%0yQDG4L1De4d4gl@O(lRd@@XATOC%LvJ|(ydc97F z8W$8|YjL7Tb=h#B86h1kgr3M>7Tc2%?=<9RUD&Jau{i zZ{oqwKsr4-mFycFOb*~dT+WtrLFl#IGM@S`z9|OLLUZ;`qP%AJ?)EZ)`VZBZgSGEq zA!G|B7UqqjOmSy-w}sYr&0T)D)eDwm3je?N;K)$LYHki2IQ(mt-`se+^$H$1Gl0+0K1fkha#fa9RT(CN>dSGaOe95!nK2?aC0mk+sj6uW zq^QbqOQI;veK;9}-k%GA1@IibeyS~4Ks}vK65AiPe-C{IP&*5Nmn%0y(VH_pmoVt@ z$M7ijFcXOK9Vr0tDldpZaEP<%W{Ov86s?^`s-6GK7BX7NG;K*U-PHt#AlO2AZI{Lx z+S`RQV41%N8;ofF`yL!cma&pk@%5~Isc)pBThx-K|GNVS4jzdG&A7kaK_9g=GHRNZ zNo+;W4B%6g<@tq$nBw`R;igJ_Vy9$9aW%Oq)QKy^^q3&~CMl)TAcR>JMWchYXCDzV z)mCc({dG0~2ghb+u3$$dGQK@}Uk0zHZ=!F#cMm@0*Bhhb*dwxouguJhO`J}QkT1>9BkELWC@~7PWoIUtNEDz~ zcn)U*07JjXVh|Q;W*@q{Ordgd7h-4GUu4no;9Oyu0vg0HitO$hd}Wu9AqTpY{&^1@ z0f3Eg`WD6`w_Y(2W)CE&r|-fZWM$jj&%0qpq*%^;l1 zn=zX-RY_6evRn0=W<2Iegoz6_k(qc*5g02d!`WiB!;>tQuO`vn$V))i%sDGR; ziq|Jb1}3M*<2X4JrGVc0mo7s1EM)bHt={6wLw_xyadU-F>z#M8&E4Fh0DoNZ(zdZf zL1od!-8E*XvQj`8ZZh_dQx#)u2*zIw_QP+X)D`{&^7 z?8LR~jZl9ykF%y2R7B=;-vdA}<5&gy;Mn&?Q)XlV2C5&8SB2ls1YppPskKr}Rk7oO zB56`lkY!UMu{t9QdR!Nzlp^SLMmU(wl|r9Md%sr}T^7m6mU*;s769{j{(Av9k8ht2 zK+oWWU=6J$+iU1V`Z8S_lb~CUh`EN7)|x?4*g$(ma0aviKzG-Fxa1cN!ns_*FlwuE zWzJahAI=wd0ssXEVR}e3)_4OM?FrXEg{VdOZEc`0Pcwq@0(N3J1v4~V!K!%p*xD+b0g<-5+gsk@P`cWl?n<=?(Y|c$<`nLuHu<@^ z7>Iuu)PCgd00@Zwp%L2nx%To_iT?5loV5H z-nE;I%eayxa2j~Bsbc*|GsxRklZkwwEd%>#|LxhPWsczD_X1GFmrnuUV4&!#T9smO zB6G&4XmZ*~x7$IIt3gh1x`f@~fWQnw?7K=jsl~EH_;`u_$!wCQLelLr+)*j&0rWf(psY-F! zhV56&dhi!*ShTJ;F*4Q@w3*~%m8=VEV;x7tAaoY7na^jyg;dd87Sx>82Uj-QY@7+O_v5_ z5etWD#7fvoaOo_DfJ^Hs0Gtiqm>74Q6y1JTF;ZoB&w^3dFGb8zA5_dI{$^6KJ{?nD>>=~%mtitvSEp{0$0Ps@!QUGA0ky|$C z`H)=yAO27p=sAHShi_gy0l?m(6hkx|2?a*Ihr`vW2iG+{j`d({rk4M8438)ANZ)9} z8t5D77Jyrs@RP6PNnS229M|7>_GX>|z`zh8Z2L@Hm8!ZT*A-Qu0cUKxT=H`k;QEWD=<+4IU2m(}1LHGv& ze^6-%K`1oJwjUaEj%~H)CAoqar%$_w?-1M{ zdqUSrIU%hDGi)Ns@xqn9vB8P{n>V8a|Hr=IN1Je!_z&W7W%XqKqVE%6$??^7vv&Xa z8A@?&Lj)|7GN}rJTDNVY#>xtlDtU@jt1@+lmnF%Q2aXs*UH0R$8Y|W3O;uAHa>?|IUM$AMe7_`nC8g-BLK2WaT84voop{!b zuDEW+ndDek$3mCrc-H*rESJV}4cAIeh5Bz$Gu?ZGeWA$*BYAiF6M#3ct!1+rB7P3& zUyoE0tv!~;UfMFWn5T$e3B~-^5Llz$H8_w(FOERk`&J$Rxy=17fPd{T-WpzrDW=gZo4s8@@y}q`-&o&g5v9vOwt-3 zfh3@S&|gQJnDbq6M(9?YMUV<{c_wsg0NN$-Do)z4EYbg5zm%jxyUBP7jGp8W}>rr5DucLzXk9qTI;>A_Wx6NCQfOj zU%!8l)&T7m*qnEQZ<+>9>tmT;_i>qX}lm6 z0GL0411VkP0eFsAbj=J1^|Td6@FrSXClXPoeY}NcWa>o}rQ{qJG}+d+QYoOi+I z?hlb?J2iXCR0H+ts1QHtsOqT2o+@vGT0Z*7qS1HhKnv~Vq5|vP`DU(k5`P(c_{1uj z2|;Vpeb|cX8O1x9$Ja;5J>|ZkE@7~$fsZtU6lx$n*3#9q8SDA|VZ1w+6m)`U^M1o2 zChTobowi^8X71z(T<|~q59KKW=oPUC=aH(UNBf{*bgUGB8^?5Ha9_K=U+1TyIx2g- z@qHf9v$mX0ZSNJ`+_j^okJi|tr&hPD5`MtXF>=i@aYMG{{^$O{t*K$myUt^LohUOzXX7kzc$>K!v4hC zb9y<)%6T@IY1`lOb?T54%nVSoAhaE=J|sv%Uc}`MAktC_-Y< z0f}(DhmfChN$Ipn8Cp_Ayxs|1ccClvst|Q#MIS!3z8)zhV0jzyaC2f>CN-n2cM{aE0TL*-s~<1lKkdgzAjO8xjGFk&Vyp3=luiXc{phy28ih-@ZN-z=UQYP5p1J- zN9pWWoP+2D4S3_=Bf(z7^qP=LV%`76wt5>S{=5&_pQzoik_HX%Vq@9$Y8aT0D4FHcWa%R&1*@Vnx06CU-SV_RL z09^fg;H>pVSa!WK08RL(QUGJ&6RS{~qgVdJH9$y@vzaiB&_FQyu$sGU&@mFG0MbNp zFeDlF@Q59W)7<2awtyt*8hS}3raa^zJs+N%l=+y=vU=UZZ)#FDlbww|{6;j62BF;| z(0TW^m6D!Q#R+V{2|#}d0Kc$V`tg;2YOJMYQ`G%UT-z^eseN#Z1{|wF&-#aL+zPzA ze)V`JuDI5>K6t7#7tDOEyLi-Q1W}D~0(aqY3_<9`4R;~!{327tyⓈ`V+Na9=-mq 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 QRR91007*qoM6N<$f(M()s{jB1 literal 0 HcmV?d00001 From 81ab9d3ce34c13a4ac23bad858f148e4be3eb547 Mon Sep 17 00:00:00 2001 From: danny Date: Thu, 25 Apr 2024 14:18:51 +0330 Subject: [PATCH 2/3] add number for titles in iterators pattern --- .../behavioral patterns/9.3.3-iterator.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/chapter 9/behavioral patterns/9.3.3-iterator.md b/content/chapter 9/behavioral patterns/9.3.3-iterator.md index 8c459b6f6..23c045e73 100644 --- a/content/chapter 9/behavioral patterns/9.3.3-iterator.md +++ b/content/chapter 9/behavioral patterns/9.3.3-iterator.md @@ -3,11 +3,11 @@ title: '9.3.3 الگو Iterator' slug: go-iterator-pattern weight: 176003 --- -## هدف +## 9.3.3.1-هدف الگوي طراحی تکرارکننده (Iterator) یک الگوی رفتاری است که به شما امکان می دهد عناصر یک مجموعه را بدون نمایش ساختار درونی آن (فهرست، پشته، درخت و غیره) پیمایش کنید. -## مشکل +## 9.3.3.2-مشکل مجموعه ها (collections) یکی از پرکاربردترین انواع داده در برنامه نویسی هستند. با این وجود، یک مجموعه فقط یک ظرف برای گروهی از اشیاء است. @@ -27,7 +27,7 @@ weight: 176003 از طرف دیگر، کد کلاینت که قرار است با مجموعه‌های مختلفی کار کند، حتی ممکن است اهمیتی ندهد که آنها عناصر خود را چگونه ذخیره می‌کنند. با این حال، از آنجایی که همه مجموعه‌ها روش‌های مختلفی برای دسترسی به عناصر خود ارائه می‌دهند، شما چاره‌ای جز اتصال کد خود به کلاس‌های مجموعه خاص ندارید. -## راه‌حل +## 9.3.3.3-راه‌حل ایده اصلی الگوی تکرارکننده (Iterator) این است که رفتار پیمایش یک مجموعه را به یک شیء جداگانه به نام «تکرارکننده» (Iterator) استخراج کند. @@ -41,7 +41,7 @@ weight: 176003 همه تکرارکننده‌ها باید یک رابط مشترک را پیاده سازی کنند. این کار باعث می شود کد کلاینت با هر نوع مجموعه یا هر الگوریتم پیمایشی سازگار باشد، به شرطی که یک تکرارکننده مناسب وجود داشته باشد. اگر به روش خاصی برای پیمایش یک مجموعه نیاز دارید، فقط یک کلاس تکرارکننده جدید بدون نیاز به تغییر مجموعه یا مشتری ایجاد کنید. -## نمونه واقعی +## 9.3.3.4-نمونه واقعی ![iterator-comic-1-en](../../../assets/img/content/chapter9/designPatterns/iterator-iterator-comic-1-en.png) @@ -53,7 +53,7 @@ weight: 176003 همه این گزینه‌ها - مسیرهای تصادفی که در ذهن شما به وجود می‌آیند، راهنمای هوشمند گوشی هوشمند یا راهنمای انسانی - به عنوان تکرارکننده‌هایی بر روی مجموعه عظیم مناظر و جاذبه‌های واقع در رم عمل می‌کنند. -## مثال +## 9.3.3.5-مثال ## الگوی طراحی تکرارکننده (Iterator) @@ -75,7 +75,7 @@ weight: 176003 با استفاده از تکرارکننده‌‌ها، می توانید کدی بنویسید که با مجموعه های مختلف بدون وابستگی به ساختارهای خاص آنها کار می کند. این امر به ترویج کدی تمیزتر و قابل نگهداری تر کمک می کند. -# **Mapping** +## 9.3.3.6-**Mapping** جدول زیر نگاشت بین بازیگران نمودار UML و بازیگران پیاده‌سازی واقعی را در "مثال" زیر نشان می‌دهد: @@ -86,7 +86,7 @@ weight: 176003 |Iterator|mac.go| |Concrete Iterator 1|userIterator.go| |Client|main.go| -## پیاده سازی +## 9.3.3.7-پیاده سازی **collection.go** From 809df333fc85ad12f132bc01653cbcb30ddbcb07 Mon Sep 17 00:00:00 2001 From: danny Date: Thu, 25 Apr 2024 14:36:52 +0330 Subject: [PATCH 3/3] update method text --- content/chapter 9/behavioral patterns/9.3.3-iterator.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/chapter 9/behavioral patterns/9.3.3-iterator.md b/content/chapter 9/behavioral patterns/9.3.3-iterator.md index 23c045e73..7357f2dfa 100644 --- a/content/chapter 9/behavioral patterns/9.3.3-iterator.md +++ b/content/chapter 9/behavioral patterns/9.3.3-iterator.md @@ -61,9 +61,9 @@ weight: 176003 **اجزای اصلی:** -* **رابط تکرارکننده (Iterator Interface):** این اینترفیس عملیات اصلی برای پیمایش در یک مجموعه را تعریف می کند، به طور معمول شامل روش هایی مانند `hasNext()` برای بررسی وجود عناصر بیشتر و `getNext()` برای بازیابی عنصر بعدی. -* **رابط مجموعه (Collection Interface):** این اینترفیس خود مجموعه را نشان می دهد. ممکن است روشی مانند `createIterator()` را اعلام کند که یک شیء تکرارکننده خاص برای نوع مجموعه را برمی‌گرداند. -* **تکرارکننده خاص (Concrete Iterator):** این کلاسی است که رابط `Iterator` را برای یک نوع مجموعه خاص پیاده سازی می کند. این حالت تکرار (مانند موقعیت فعلی) را حفظ می کند و روش هایی مانند `hasNext()` و `getNext()` را ارائه می دهد که خاص ساختار مجموعه است. +* **رابط تکرارکننده (Iterator Interface):** این اینترفیس عملیات اصلی برای پیمایش در یک مجموعه را تعریف می کند، به طور معمول شامل متد (Method) هایی مانند `hasNext()` برای بررسی وجود عناصر بیشتر و `getNext()` برای بازیابی عنصر بعدی. +* **رابط مجموعه (Collection Interface):** این اینترفیس خود مجموعه را نشان می دهد. ممکن است متدی مانند `createIterator()` را اعلام کند که یک شیء تکرارکننده خاص برای نوع مجموعه را برمی‌گرداند. +* **تکرارکننده خاص (Concrete Iterator):** این کلاسی است که رابط `Iterator` را برای یک نوع مجموعه خاص پیاده سازی می کند. این حالت تکرار (مانند موقعیت فعلی) را حفظ می کند و متد هایی مانند `hasNext()` و `getNext()` را ارائه می دهد که خاص ساختار مجموعه است. * **مجموعه خاص (Concrete Collection):** این کلاسی است که اینترفیس یا رابط `Collection` را برای یک ساختار داده خاص (مانند لیست، درخت) پیاده سازی می کند. این متد `createIterator()` را ارائه می دهد که یک شیء تکرارکننده خاص را برای پیمایش عناصر آن برمی گرداند. **مزایا:**