From 7ba101f79dabd71f12c60dbb2808d8bf8968acf4 Mon Sep 17 00:00:00 2001 From: Aliaksandr Skvarniuk Date: Fri, 26 Jan 2024 23:23:04 +0100 Subject: [PATCH 1/7] README.md updated --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 26b4de3..b24a6d5 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ A collection of algorithms for _Distributed Systems_ course (winter semesters 20 #### Synchronized undirected ring 1. Franklin algorithm 1. Hirschberg-Sinclair algorithm +1. Hirschberg-Sinclair algorithm2.0 1. ProbAsFar (Korach-Rotem-Santoro) algorithm #### Synchronized undirected mesh From 013265b375f8a426d0ee8e734c3b94e22baea702 Mon Sep 17 00:00:00 2001 From: Aliaksandr Skvarniuk Date: Fri, 26 Jan 2024 23:25:55 +0100 Subject: [PATCH 2/7] Added everything for sync_hirschberg_sinclair_second_edition except text description. --- Makefile | 1 + ...sync_hirschberg_sinclair_second_edition.go | 39 +++ ...sync_hirschberg_sinclair_second_edition.go | 301 ++++++++++++++++++ test/leader_undirected_ring_test.go | 7 + 4 files changed, 348 insertions(+) create mode 100644 example/leader_undirected_ring_sync_hirschberg_sinclair_second_edition.go create mode 100644 leader/undirected_ring/sync_hirschberg_sinclair_second_edition/sync_hirschberg_sinclair_second_edition.go diff --git a/Makefile b/Makefile index cd3b2da..fe79d32 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,7 @@ leader_undirected_ring_example: go run example/leader_undirected_ring_sync_franklin.go 10 go run example/leader_undirected_ring_sync_prob_as_far.go 10 go run example/leader_undirected_ring_async_hirschberg_sinclair.go 10 + go run example/leader_undirected_ring_async_hirschberg_sinclair_second_edition.go 10 go run example/leader_undirected_ring_async_stages_with_feedback.go 10 go run example/leader_undirected_ring_async_franklin.go 10 go run example/leader_undirected_ring_async_probabilistic_franklin.go 10 3 diff --git a/example/leader_undirected_ring_sync_hirschberg_sinclair_second_edition.go b/example/leader_undirected_ring_sync_hirschberg_sinclair_second_edition.go new file mode 100644 index 0000000..abfae1d --- /dev/null +++ b/example/leader_undirected_ring_sync_hirschberg_sinclair_second_edition.go @@ -0,0 +1,39 @@ +package main + +import ( + pathToCandidate "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/sync_hirschberg_sinclair_second_edition" + "log" + "os" + "strconv" +) + +func main() { + N, _ := strconv.Atoi(os.Args[1]) + if !checkN(N) { + log.Println("Value of N must be more than 0.") + return + } + + argsArr := pathToCandidate.GenerateShuffledArray(N) + pathToCandidate.BuildUndirectedRingAndRun(N, argsArr) +} + +func checkN(N int) bool { + if N < 1 { + return false + } + return true +} + +func checkArgsArr(argsArr []int) bool { + uniqueVals := make(map[int]bool) + + for _, num := range argsArr { + if uniqueVals[num] { + return false + } + uniqueVals[num] = true + } + + return true +} diff --git a/leader/undirected_ring/sync_hirschberg_sinclair_second_edition/sync_hirschberg_sinclair_second_edition.go b/leader/undirected_ring/sync_hirschberg_sinclair_second_edition/sync_hirschberg_sinclair_second_edition.go new file mode 100644 index 0000000..af9c57c --- /dev/null +++ b/leader/undirected_ring/sync_hirschberg_sinclair_second_edition/sync_hirschberg_sinclair_second_edition.go @@ -0,0 +1,301 @@ +package sync_hirschberg_sinclair_second_edition + +import ( + "encoding/json" + "log" + "math/rand" + "runtime" + "sync" + "time" +) + +type ElectionStatus string +type MessageType string + +const ( + CandidateStatus ElectionStatus = "candidate" + LostStatus ElectionStatus = "lost" + WonStatus ElectionStatus = "won" +) +const ( + No MessageType = "no" + Ok MessageType = "ok" + From MessageType = "from" + End MessageType = "end" +) + +type ICandidate interface { + SelectLeader() int +} + +type SendingData struct { + MessageType MessageType + Value int + Num uint64 + Maxnum uint64 +} + +type Candidate struct { + myValue int + myStatus ElectionStatus + leftInput <-chan []byte + leftOutput chan<- []byte + rightInput <-chan []byte + rightOutput chan<- []byte +} + +func (cand *Candidate) Sendboth(dataToSend SendingData) { + jsonToSend, _ := json.Marshal(dataToSend) + cand.sendTo(cand.leftOutput, jsonToSend) + cand.sendTo(cand.rightOutput, jsonToSend) +} + +func (cand *Candidate) GetChanToPrev(replyFromL bool) chan<- []byte { + if replyFromL { + return cand.leftOutput + } + return cand.rightOutput +} + +func (cand *Candidate) GetChanToNext(replyFromL bool) chan<- []byte { + if replyFromL { + return cand.rightOutput + } + return cand.leftOutput +} + +func (cand *Candidate) Sendecho(dataToSend *SendingData, replyFromL bool) { + channel := cand.GetChanToPrev(replyFromL) + jsonToSend, _ := json.Marshal(dataToSend) + cand.sendTo(channel, jsonToSend) +} + +func (cand *Candidate) Sendpass(dataToSend *SendingData, replyFromL bool) { + channel := cand.GetChanToNext(replyFromL) + jsonToSend, _ := json.Marshal(dataToSend) + cand.sendTo(channel, jsonToSend) +} + +func (cand *Candidate) ReceivedMessageIsFrom(receivedData SendingData, replyFromL bool) { + if receivedData.Value < cand.myValue { + dataToSend := cand.InitSendingData(No, receivedData.Value, 0, 0) + cand.Sendecho(&dataToSend, replyFromL) + return + } + if receivedData.Value > cand.myValue { + cand.myStatus = LostStatus + if receivedData.Num+1 < receivedData.Maxnum { + dataToSend := receivedData + dataToSend.Num += 1 + cand.Sendpass(&dataToSend, replyFromL) + } else { + dataToSend := cand.InitSendingData(Ok, receivedData.Value, 0, 0) + cand.Sendecho(&dataToSend, replyFromL) + } + return + } + //value == cand.myValue + cand.myStatus = WonStatus +} + +func (cand *Candidate) ReceivedMessageIsOkOrNo(receivedData SendingData, replyFromL bool) { + if receivedData.Value != cand.myValue { + cand.Sendpass(&receivedData, replyFromL) + } else { + //nice to see you back, my message! + } +} + +func (cand *Candidate) SelectLeader() int { + maxnum := uint64(1) + var jsonReceived []byte + var replyFromL bool + var LReplyed bool + var RReplyed bool + var receivedData SendingData + + dataToSend := cand.InitSendingData(From, cand.myValue, 0, maxnum) + cand.Sendboth(dataToSend) + counter := 0 + final := false + for { + select { + case jsonReceived = <-cand.leftInput: + replyFromL = true + case jsonReceived = <-cand.rightInput: + replyFromL = false + } + _ = json.Unmarshal(jsonReceived, &receivedData) + switch receivedData.MessageType { + case From: + cand.ReceivedMessageIsFrom(receivedData, replyFromL) + if cand.myStatus == WonStatus { + counter++ + if counter == 2 { + dataToSend.MessageType = End + cand.Sendpass(&dataToSend, replyFromL) + } + } + + case No, Ok: + cand.ReceivedMessageIsOkOrNo(receivedData, replyFromL) + if receivedData.MessageType == No { + cand.myStatus = LostStatus + } + if receivedData.Value == cand.myValue { + if replyFromL { + LReplyed = true + } else { + RReplyed = true + } + if LReplyed && RReplyed && cand.myStatus == CandidateStatus { + LReplyed = false + RReplyed = false + maxnum *= 2 + dataToSend := cand.InitSendingData(From, cand.myValue, 0, maxnum) + cand.Sendboth(dataToSend) + } + } + case End: + if cand.myStatus == LostStatus { + cand.Sendpass(&receivedData, replyFromL) + } + final = true + + default: + //nothing to do + } + + if final { + break + } + } + + if cand.myStatus == WonStatus { + return cand.myValue + } else { + return -1 + } +} + +func NewCandidate( + myValue int, + leftInput <-chan []byte, + leftOutput chan<- []byte, + rightInput <-chan []byte, + rightOutput chan<- []byte) ICandidate { + return &Candidate{ + myValue: myValue, + myStatus: CandidateStatus, + leftInput: leftInput, + leftOutput: leftOutput, + rightInput: rightInput, + rightOutput: rightOutput, + } +} + +func (cand *Candidate) sendTo(channel chan<- []byte, jsonToSend []byte) { + go func() { channel <- jsonToSend }() +} + +func (cand *Candidate) InitSendingData(messageType MessageType, value int, num uint64, maxnum uint64) SendingData { + return SendingData{ + MessageType: messageType, + Value: value, + Num: num, + Maxnum: maxnum, + } +} + +func BuildUndirectedRingAndRun(N int, argsArr []int) { + firstInput1 := make(chan []byte) + firstOutput1 := make(chan []byte) + + prevOutput := firstInput1 + prevInput := firstOutput1 + + writeChannel := make(chan int) + var wg sync.WaitGroup + wg.Add(N) + runner := func(candidate ICandidate) { + defer wg.Done() + leader := candidate.SelectLeader() + writeChannel <- leader + } + + //arr := generateShuffledArray(N) + var arrBits []bool + + for it := 0; it < N; it++ { + nextOutput := make(chan []byte) + nextInput := make(chan []byte) + + var input1, input2 <-chan []byte + var output1, output2 chan<- []byte + input1 = prevOutput + output1 = prevInput + input2 = nextInput + output2 = nextOutput + if it == N-1 { + input1 = prevOutput + output1 = prevInput + output2 = firstInput1 + input2 = firstOutput1 + } + + orient := generateRandomBit() + if orient { + input1 = nextInput + output1 = nextOutput + input2 = prevOutput + output2 = prevInput + if it == N-1 { + input2 = prevOutput + output2 = prevInput + output1 = firstInput1 + input1 = firstOutput1 + } + } + arrBits = append(arrBits, orient) + + go runner(NewCandidate(argsArr[it], input1, output1, input2, output2)) + prevOutput = nextOutput + prevInput = nextInput + + } + realLeader := -1 + for it := 0; it < N; it++ { + leader := <-writeChannel + if realLeader < leader { + realLeader = leader + } + } + log.Println(realLeader) + wg.Wait() +} + +func GenerateShuffledArray(N int) []int { + runtime.GOMAXPROCS(1) + arr := make([]int, N) + for i := 0; i < N; i++ { + arr[i] = i + } + + // Shuffle the array + //rand.Seed(time.Now().UnixNano()) + rand.Shuffle(N, func(i, j int) { + arr[i], arr[j] = arr[j], arr[i] + }) + return arr +} + +type randBit struct { + R *rand.Rand +} + +func generateRandomBit() bool { + rB := randBit{ + R: rand.New(rand.NewSource(time.Now().UTC().UnixNano())), + } + return rB.R.Intn(2) == 0 +} diff --git a/test/leader_undirected_ring_test.go b/test/leader_undirected_ring_test.go index 605989f..01091bd 100644 --- a/test/leader_undirected_ring_test.go +++ b/test/leader_undirected_ring_test.go @@ -11,10 +11,17 @@ import ( "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/async_stages_with_feedback" "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/sync_franklin" "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/sync_hirschberg_sinclair" + SecondEdition "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/sync_hirschberg_sinclair_second_edition" "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/sync_prob_as_far" "github.com/krzysztof-turowski/distributed-framework/lib" ) +func TestUndirectedRingAsyncHirschbergSinclairSecondEdition(t *testing.T) { + for n := 1; n < 100; n++ { + arr := SecondEdition.GenerateShuffledArray(n) + SecondEdition.BuildUndirectedRingAndRun(n, arr) + } +} func TestUndirectedRingAsyncHirschbergSinclair(t *testing.T) { checkLogOutput() for n := 2; n <= 100; n++ { From 3b73f056d8cdee76ec96063b14473c329ca92168 Mon Sep 17 00:00:00 2001 From: Aliaksandr Skvarniuk Date: Sat, 27 Jan 2024 03:19:52 +0100 Subject: [PATCH 3/7] Added sync_hirschberg_sinclair_second_edition.pdf and sync_hirschberg_sinclair_second_edition.tex. --- ...ync_hirschberg_sinclair_second_edition.pdf | Bin 0 -> 142996 bytes ...ync_hirschberg_sinclair_second_edition.tex | 166 ++++++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 text/1184415/sync_hirschberg_sinclair_second_edition.pdf create mode 100644 text/1184415/sync_hirschberg_sinclair_second_edition.tex diff --git a/text/1184415/sync_hirschberg_sinclair_second_edition.pdf b/text/1184415/sync_hirschberg_sinclair_second_edition.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3cfdf7a16d806f3dfd7827e240504ff7991c5fd9 GIT binary patch literal 142996 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
P78+wLPvkJo)06Lx`xg5e> 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 myvalue + status <-- "lost" + num <- num + 1 + IF num < maxnum + sendpass ("from", value, num, maxnum) + ELSE + sendeeho ("ok", value) + IF value = myvalue + status <- "won" + + +///besides accepting his own message, which came back to him, +///the processor can play the role of a transit, inactive node +receive_message ("no", value) or ("ok", value) + IF value != myvalue + senpass the message + ELSE + this is a reply the processor was awaiting + +///one from me, just for simle and correct ending +///of this election, eleminating all possible unread messages +receive_message ("end", value): + inform next processor of end + stop process +\end{lstlisting} + +This pseudocode is more suitable for a solution based on maintaining references to neighboring processes. However, in the implementation I provided, solution stuck to to passing information through channels, requiring a slight modification in the code structure. Nevertheless the given pseudocode effectively reflects the algorithm's flow, as much, as it reduces the number of messages). + + +\section*{Correctness} +There is not much to say: +\begin{enumerate} + \item if process is "lost", then it is lesser than some other process, so it is OK, that it become inactive + \item if process is still "candidate", then it is bigger, than met by him. + \item if "from" message comes back to original sender - than it passed all the processes with success, so original sender is greater than each one of the rest. + \item when \(maxnum >= n\) then the algo would end, because somebody would cover all the processes by "from" message. + \item if process is "won", then it received message after it visited all the processes +\end{enumerate} + + +\section*{Proof of complexity} +\subsection*{The worst case} + Note that each active processor by the start of a round $i$(starting with 0) can initiate at most $4*2^i$ messages to be sent. \\ + Another observation gives us on start of round $i$: + \[\textbf{number of "candidate" processes} \leq \ceil*{\frac{n}{2^{i-1} + 1}}\] + It follows from the fact, that if we separate all nodes on blocks of length $2^{i-1} + 1$, then after round $i-1$ only one of nodes(processes) in block could stay active.\\ + + \bigskip + \noindent + It all provides us to the fact that total number of sent messages is bounded from above by: + \[4\cdot(\sum_0^{\ceil*{\log n}} 2^i \cdot \ceil*{\frac{n}{2^{i-1} + 1}}) + \quad\leq\quad 4\cdot(\sum_0^{\ceil{\log n}} 2n) \quad \approx \quad 8\, n \,\log n\] + \subsection*{The "better can't imagine" case} + In case we would have instance of size $2^k$ which look like this: + \[\cdots p_{n-1} < p_0 > p_1 > p_2 \cdots\] + After first round the is possibility, that could happen, that every one but the biggest process ($p_0$), would get "lost" status, what provide us to comlexity: + \[4\cdot n + \sum_0^{\ceil*{\log n}} 2^i \cdot 1 \,\,= \,\, + 4\cdot n + \sum_0^{k} 2^i + \,\, <= \,\, + 4\cdot n + 2 \cdot n\,\, = \,\,\mathcal{O}(n)\] + + +\begin{thebibliography}{9} +\bibitem{article} +Hirschberg, D.S., Sinclair, J.B.: Decentralized extrema-finding in circular configurations of processes. Commun. ACM 23, 627–628 (1980) +\bibitem{article} +LeLann, G. Distributed systems--Towards a formal approach. Inform. Proc. 77, North-Holland Pub. Co., 1977, Amsterdam, pp. 155-160. +\bibitem{article} +Chang, E., and Roberts, R. An improved algorithm for decentralized extrema-fmding in circularly configuraiions of processes. Comm. ACM 22, 5 (May 1979), 281-283. +\end{thebibliography} + +\end{document} \ No newline at end of file From 3918d065c172662afea20e19509bdfb22e25b80d Mon Sep 17 00:00:00 2001 From: Aliaksandr Skvarniuk Date: Wed, 14 Feb 2024 01:40:28 +0100 Subject: [PATCH 4/7] 1. Renamed to async_hirschberg_sinclair_2.pdf 2. Code fitted to framework rules 3. Removed unnecessary quote in README.md 4. Synchronizer has been skipped --- Makefile | 2 +- README.md | 1 - ...rected_ring_async_hirschberg_sinclair_2.go | 13 + .../async_hirschberg_sinclair_2.go | 251 +++++++++++++++ ...sync_hirschberg_sinclair_second_edition.go | 301 ------------------ test/leader_undirected_ring_test.go | 8 +- 6 files changed, 269 insertions(+), 307 deletions(-) create mode 100644 example/leader_undirected_ring_async_hirschberg_sinclair_2.go create mode 100644 leader/undirected_ring/async_hirschberg_sinclair_2/async_hirschberg_sinclair_2.go delete mode 100644 leader/undirected_ring/sync_hirschberg_sinclair_second_edition/sync_hirschberg_sinclair_second_edition.go diff --git a/Makefile b/Makefile index fe79d32..f2cc2f4 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ leader_undirected_ring_example: go run example/leader_undirected_ring_sync_franklin.go 10 go run example/leader_undirected_ring_sync_prob_as_far.go 10 go run example/leader_undirected_ring_async_hirschberg_sinclair.go 10 - go run example/leader_undirected_ring_async_hirschberg_sinclair_second_edition.go 10 + go run example/leader_undirected_ring_async_hirschberg_sinclair_2.go 10 go run example/leader_undirected_ring_async_stages_with_feedback.go 10 go run example/leader_undirected_ring_async_franklin.go 10 go run example/leader_undirected_ring_async_probabilistic_franklin.go 10 3 diff --git a/README.md b/README.md index b24a6d5..26b4de3 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,6 @@ A collection of algorithms for _Distributed Systems_ course (winter semesters 20 #### Synchronized undirected ring 1. Franklin algorithm 1. Hirschberg-Sinclair algorithm -1. Hirschberg-Sinclair algorithm2.0 1. ProbAsFar (Korach-Rotem-Santoro) algorithm #### Synchronized undirected mesh diff --git a/example/leader_undirected_ring_async_hirschberg_sinclair_2.go b/example/leader_undirected_ring_async_hirschberg_sinclair_2.go new file mode 100644 index 0000000..6f33e48 --- /dev/null +++ b/example/leader_undirected_ring_async_hirschberg_sinclair_2.go @@ -0,0 +1,13 @@ +package main + +import ( + "os" + "strconv" + + "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/async_hirschberg_sinclair_2" +) + +func main() { + n, _ := strconv.Atoi(os.Args[len(os.Args)-1]) + async_hirschberg_sinclair_2.Run(n) +} diff --git a/leader/undirected_ring/async_hirschberg_sinclair_2/async_hirschberg_sinclair_2.go b/leader/undirected_ring/async_hirschberg_sinclair_2/async_hirschberg_sinclair_2.go new file mode 100644 index 0000000..200cb29 --- /dev/null +++ b/leader/undirected_ring/async_hirschberg_sinclair_2/async_hirschberg_sinclair_2.go @@ -0,0 +1,251 @@ +package async_hirschberg_sinclair_2 + +import ( + "encoding/json" + "fmt" + "log" + "sync" + + "github.com/krzysztof-turowski/distributed-framework/lib" +) + +type ElectionStatus string +type MessageType string + +const ( + CandidateStatus ElectionStatus = "candidate" + LostStatus ElectionStatus = "lost" + WonStatus ElectionStatus = "won" +) +const ( + No MessageType = "no" + Ok MessageType = "ok" + From MessageType = "from" + End MessageType = "end" +) + +type message struct { + MessageType MessageType + Value int + Num uint64 + Maxnum uint64 +} + +type state struct { + MyStatus ElectionStatus +} + +func initialize(v lib.Node) bool { + s := state{MyStatus: CandidateStatus} + sEncoded, _ := json.Marshal(s) + v.SetState(sEncoded) + + data := message{From, v.GetIndex(), 0, 1} + sendBoth(v, data) + return true +} + +func process(v lib.Node) bool { + maxnum := uint64(1) + var jsonReceived []byte + var chanIndex int + var heardL bool + var heardR bool + var receivedData message + counter := 0 + final := false + var s state + for { + chanIndex, jsonReceived = v.ReceiveAnyMessage() + _ = json.Unmarshal(jsonReceived, &receivedData) + _ = json.Unmarshal(v.GetState(), &s) + + switch receivedData.MessageType { + case From: + receivedMessageIsFrom(v, receivedData, chanIndex) + _ = json.Unmarshal(v.GetState(), &s) + if s.MyStatus == WonStatus { + counter++ + if counter == 2 { + dataToSend := message{End, v.GetIndex(), 0, maxnum} + sendPass(v, &dataToSend, chanIndex) + } + } + + case No, Ok: + receivedMessageIsOkOrNo(v, receivedData, chanIndex) + _ = json.Unmarshal(v.GetState(), &s) + if receivedData.MessageType == No { + s.MyStatus = LostStatus + } + if receivedData.Value == v.GetIndex() { + if chanIndex == 0 { + heardL = true + } else { + heardR = true + } + if heardL && heardR && s.MyStatus == CandidateStatus { + heardL = false + heardR = false + maxnum *= 2 + dataToSend := initSendingData(From, v.GetIndex(), 0, maxnum) + sendBoth(v, dataToSend) + } + } + case End: + if s.MyStatus == LostStatus { + sendPass(v, &receivedData, chanIndex) + } + final = true + + default: + //nothing to do + } + + sEncoded, _ := json.Marshal(s) + v.SetState(sEncoded) + + if final { + break + } + } + + if s.MyStatus == WonStatus { + log.Println("The Leader has index ", v.GetIndex()) + } + return true +} + +func run(v lib.Node, wg *sync.WaitGroup) { + defer wg.Done() + v.StartProcessing() + isFinished := initialize(v) + + isFinished = process(v) + v.FinishProcessing(isFinished) + +} + +func check(vertices []lib.Node) { + var leader lib.Node + var s state + for _, v := range vertices { + _ = json.Unmarshal(v.GetState(), &s) + if s.MyStatus == WonStatus { + leader = v + break + } + } + if leader == nil { + panic("There is no Leader on the undirected ring") + } + for _, v := range vertices { + _ = json.Unmarshal(v.GetState(), &s) + if v != leader { + if s.MyStatus == WonStatus { + panic(fmt.Sprint( + "There is more then one Leader on the undirected ring")) + } + if s.MyStatus == CandidateStatus { + panic(fmt.Sprint("Node ", v.GetIndex(), " has state ", CandidateStatus)) + } + } else { + if s.MyStatus != WonStatus { + panic("There is more then one Leader on the undirected ring") + } + } + } +} + +func Run(n int) (int, int) { + vertices, runner := lib.BuildRing(n) + var wg sync.WaitGroup + wg.Add(n) + for _, v := range vertices { + log.Println("Node", v.GetIndex(), "about to run") + go run(v, &wg) + } + runner.Run(true) + check(vertices) + wg.Wait() + return runner.GetStats() +} + +func sendBoth(v lib.Node, dataToSend message) { + jsonToSend, _ := json.Marshal(dataToSend) + v.SendMessage(0, jsonToSend) + v.SendMessage(1, jsonToSend) +} + +func abs(n int) int { + if n < 0 { + return -n + } + return n +} + +func getChanToPrev(chanIndex int) int { + return chanIndex +} + +func getChanToNext(chanIndex int) int { + return abs(chanIndex - 1) +} + +func sendEcho(v lib.Node, dataToSend *message, chanIndex int) { + channel := getChanToPrev(chanIndex) + jsonToSend, _ := json.Marshal(dataToSend) + v.SendMessage(channel, jsonToSend) +} + +func sendPass(v lib.Node, dataToSend *message, chanIndex int) { + channel := getChanToNext(chanIndex) + jsonToSend, _ := json.Marshal(dataToSend) + v.SendMessage(channel, jsonToSend) +} + +func receivedMessageIsFrom(v lib.Node, receivedData message, chanIndex int) { + if receivedData.Value < v.GetIndex() { + dataToSend := initSendingData(No, receivedData.Value, 0, 0) + sendEcho(v, &dataToSend, chanIndex) + return + } + var s state + _ = json.Unmarshal(v.GetState(), &s) + if receivedData.Value > v.GetIndex() { + s.MyStatus = LostStatus + sEncoded, _ := json.Marshal(s) + v.SetState(sEncoded) + if receivedData.Num+1 < receivedData.Maxnum { + dataToSend := receivedData + dataToSend.Num += 1 + sendPass(v, &dataToSend, chanIndex) + } else { + dataToSend := initSendingData(Ok, receivedData.Value, 0, 0) + sendEcho(v, &dataToSend, chanIndex) + } + return + } + + //value == v.GetIndex() + s.MyStatus = WonStatus + sEncoded, _ := json.Marshal(s) + v.SetState(sEncoded) +} + +func receivedMessageIsOkOrNo(v lib.Node, receivedData message, chanIndex int) { + if receivedData.Value != v.GetIndex() { + sendPass(v, &receivedData, chanIndex) + } else { + //nice to see you back, my message! + } +} + +func initSendingData(messageType MessageType, value int, num uint64, maxnum uint64) message { + return message{ + MessageType: messageType, + Value: value, + Num: num, + Maxnum: maxnum, + } +} diff --git a/leader/undirected_ring/sync_hirschberg_sinclair_second_edition/sync_hirschberg_sinclair_second_edition.go b/leader/undirected_ring/sync_hirschberg_sinclair_second_edition/sync_hirschberg_sinclair_second_edition.go deleted file mode 100644 index af9c57c..0000000 --- a/leader/undirected_ring/sync_hirschberg_sinclair_second_edition/sync_hirschberg_sinclair_second_edition.go +++ /dev/null @@ -1,301 +0,0 @@ -package sync_hirschberg_sinclair_second_edition - -import ( - "encoding/json" - "log" - "math/rand" - "runtime" - "sync" - "time" -) - -type ElectionStatus string -type MessageType string - -const ( - CandidateStatus ElectionStatus = "candidate" - LostStatus ElectionStatus = "lost" - WonStatus ElectionStatus = "won" -) -const ( - No MessageType = "no" - Ok MessageType = "ok" - From MessageType = "from" - End MessageType = "end" -) - -type ICandidate interface { - SelectLeader() int -} - -type SendingData struct { - MessageType MessageType - Value int - Num uint64 - Maxnum uint64 -} - -type Candidate struct { - myValue int - myStatus ElectionStatus - leftInput <-chan []byte - leftOutput chan<- []byte - rightInput <-chan []byte - rightOutput chan<- []byte -} - -func (cand *Candidate) Sendboth(dataToSend SendingData) { - jsonToSend, _ := json.Marshal(dataToSend) - cand.sendTo(cand.leftOutput, jsonToSend) - cand.sendTo(cand.rightOutput, jsonToSend) -} - -func (cand *Candidate) GetChanToPrev(replyFromL bool) chan<- []byte { - if replyFromL { - return cand.leftOutput - } - return cand.rightOutput -} - -func (cand *Candidate) GetChanToNext(replyFromL bool) chan<- []byte { - if replyFromL { - return cand.rightOutput - } - return cand.leftOutput -} - -func (cand *Candidate) Sendecho(dataToSend *SendingData, replyFromL bool) { - channel := cand.GetChanToPrev(replyFromL) - jsonToSend, _ := json.Marshal(dataToSend) - cand.sendTo(channel, jsonToSend) -} - -func (cand *Candidate) Sendpass(dataToSend *SendingData, replyFromL bool) { - channel := cand.GetChanToNext(replyFromL) - jsonToSend, _ := json.Marshal(dataToSend) - cand.sendTo(channel, jsonToSend) -} - -func (cand *Candidate) ReceivedMessageIsFrom(receivedData SendingData, replyFromL bool) { - if receivedData.Value < cand.myValue { - dataToSend := cand.InitSendingData(No, receivedData.Value, 0, 0) - cand.Sendecho(&dataToSend, replyFromL) - return - } - if receivedData.Value > cand.myValue { - cand.myStatus = LostStatus - if receivedData.Num+1 < receivedData.Maxnum { - dataToSend := receivedData - dataToSend.Num += 1 - cand.Sendpass(&dataToSend, replyFromL) - } else { - dataToSend := cand.InitSendingData(Ok, receivedData.Value, 0, 0) - cand.Sendecho(&dataToSend, replyFromL) - } - return - } - //value == cand.myValue - cand.myStatus = WonStatus -} - -func (cand *Candidate) ReceivedMessageIsOkOrNo(receivedData SendingData, replyFromL bool) { - if receivedData.Value != cand.myValue { - cand.Sendpass(&receivedData, replyFromL) - } else { - //nice to see you back, my message! - } -} - -func (cand *Candidate) SelectLeader() int { - maxnum := uint64(1) - var jsonReceived []byte - var replyFromL bool - var LReplyed bool - var RReplyed bool - var receivedData SendingData - - dataToSend := cand.InitSendingData(From, cand.myValue, 0, maxnum) - cand.Sendboth(dataToSend) - counter := 0 - final := false - for { - select { - case jsonReceived = <-cand.leftInput: - replyFromL = true - case jsonReceived = <-cand.rightInput: - replyFromL = false - } - _ = json.Unmarshal(jsonReceived, &receivedData) - switch receivedData.MessageType { - case From: - cand.ReceivedMessageIsFrom(receivedData, replyFromL) - if cand.myStatus == WonStatus { - counter++ - if counter == 2 { - dataToSend.MessageType = End - cand.Sendpass(&dataToSend, replyFromL) - } - } - - case No, Ok: - cand.ReceivedMessageIsOkOrNo(receivedData, replyFromL) - if receivedData.MessageType == No { - cand.myStatus = LostStatus - } - if receivedData.Value == cand.myValue { - if replyFromL { - LReplyed = true - } else { - RReplyed = true - } - if LReplyed && RReplyed && cand.myStatus == CandidateStatus { - LReplyed = false - RReplyed = false - maxnum *= 2 - dataToSend := cand.InitSendingData(From, cand.myValue, 0, maxnum) - cand.Sendboth(dataToSend) - } - } - case End: - if cand.myStatus == LostStatus { - cand.Sendpass(&receivedData, replyFromL) - } - final = true - - default: - //nothing to do - } - - if final { - break - } - } - - if cand.myStatus == WonStatus { - return cand.myValue - } else { - return -1 - } -} - -func NewCandidate( - myValue int, - leftInput <-chan []byte, - leftOutput chan<- []byte, - rightInput <-chan []byte, - rightOutput chan<- []byte) ICandidate { - return &Candidate{ - myValue: myValue, - myStatus: CandidateStatus, - leftInput: leftInput, - leftOutput: leftOutput, - rightInput: rightInput, - rightOutput: rightOutput, - } -} - -func (cand *Candidate) sendTo(channel chan<- []byte, jsonToSend []byte) { - go func() { channel <- jsonToSend }() -} - -func (cand *Candidate) InitSendingData(messageType MessageType, value int, num uint64, maxnum uint64) SendingData { - return SendingData{ - MessageType: messageType, - Value: value, - Num: num, - Maxnum: maxnum, - } -} - -func BuildUndirectedRingAndRun(N int, argsArr []int) { - firstInput1 := make(chan []byte) - firstOutput1 := make(chan []byte) - - prevOutput := firstInput1 - prevInput := firstOutput1 - - writeChannel := make(chan int) - var wg sync.WaitGroup - wg.Add(N) - runner := func(candidate ICandidate) { - defer wg.Done() - leader := candidate.SelectLeader() - writeChannel <- leader - } - - //arr := generateShuffledArray(N) - var arrBits []bool - - for it := 0; it < N; it++ { - nextOutput := make(chan []byte) - nextInput := make(chan []byte) - - var input1, input2 <-chan []byte - var output1, output2 chan<- []byte - input1 = prevOutput - output1 = prevInput - input2 = nextInput - output2 = nextOutput - if it == N-1 { - input1 = prevOutput - output1 = prevInput - output2 = firstInput1 - input2 = firstOutput1 - } - - orient := generateRandomBit() - if orient { - input1 = nextInput - output1 = nextOutput - input2 = prevOutput - output2 = prevInput - if it == N-1 { - input2 = prevOutput - output2 = prevInput - output1 = firstInput1 - input1 = firstOutput1 - } - } - arrBits = append(arrBits, orient) - - go runner(NewCandidate(argsArr[it], input1, output1, input2, output2)) - prevOutput = nextOutput - prevInput = nextInput - - } - realLeader := -1 - for it := 0; it < N; it++ { - leader := <-writeChannel - if realLeader < leader { - realLeader = leader - } - } - log.Println(realLeader) - wg.Wait() -} - -func GenerateShuffledArray(N int) []int { - runtime.GOMAXPROCS(1) - arr := make([]int, N) - for i := 0; i < N; i++ { - arr[i] = i - } - - // Shuffle the array - //rand.Seed(time.Now().UnixNano()) - rand.Shuffle(N, func(i, j int) { - arr[i], arr[j] = arr[j], arr[i] - }) - return arr -} - -type randBit struct { - R *rand.Rand -} - -func generateRandomBit() bool { - rB := randBit{ - R: rand.New(rand.NewSource(time.Now().UTC().UnixNano())), - } - return rB.R.Intn(2) == 0 -} diff --git a/test/leader_undirected_ring_test.go b/test/leader_undirected_ring_test.go index 01091bd..8fee776 100644 --- a/test/leader_undirected_ring_test.go +++ b/test/leader_undirected_ring_test.go @@ -7,19 +7,19 @@ import ( "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/async_franklin" "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/async_hirschberg_sinclair" + "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/async_hirschberg_sinclair_2" "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/async_probabilistic_franklin" "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/async_stages_with_feedback" "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/sync_franklin" "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/sync_hirschberg_sinclair" - SecondEdition "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/sync_hirschberg_sinclair_second_edition" "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/sync_prob_as_far" "github.com/krzysztof-turowski/distributed-framework/lib" ) -func TestUndirectedRingAsyncHirschbergSinclairSecondEdition(t *testing.T) { +func TestUndirectedRingAsyncHirschbergSinclair2(t *testing.T) { + checkLogOutput() for n := 1; n < 100; n++ { - arr := SecondEdition.GenerateShuffledArray(n) - SecondEdition.BuildUndirectedRingAndRun(n, arr) + async_hirschberg_sinclair_2.Run(n) } } func TestUndirectedRingAsyncHirschbergSinclair(t *testing.T) { From 17da885e88da3cdabce7fac99e039a547d832832 Mon Sep 17 00:00:00 2001 From: Aliaksandr Skvarniuk Date: Wed, 14 Feb 2024 01:52:11 +0100 Subject: [PATCH 5/7] 1. Own method of managing multithreading has been replaced by a single-round Synchronizer implemented within the framework. --- ...sync_hirschberg_sinclair_second_edition.go | 39 ------------------- 1 file changed, 39 deletions(-) delete mode 100644 example/leader_undirected_ring_sync_hirschberg_sinclair_second_edition.go diff --git a/example/leader_undirected_ring_sync_hirschberg_sinclair_second_edition.go b/example/leader_undirected_ring_sync_hirschberg_sinclair_second_edition.go deleted file mode 100644 index abfae1d..0000000 --- a/example/leader_undirected_ring_sync_hirschberg_sinclair_second_edition.go +++ /dev/null @@ -1,39 +0,0 @@ -package main - -import ( - pathToCandidate "github.com/krzysztof-turowski/distributed-framework/leader/undirected_ring/sync_hirschberg_sinclair_second_edition" - "log" - "os" - "strconv" -) - -func main() { - N, _ := strconv.Atoi(os.Args[1]) - if !checkN(N) { - log.Println("Value of N must be more than 0.") - return - } - - argsArr := pathToCandidate.GenerateShuffledArray(N) - pathToCandidate.BuildUndirectedRingAndRun(N, argsArr) -} - -func checkN(N int) bool { - if N < 1 { - return false - } - return true -} - -func checkArgsArr(argsArr []int) bool { - uniqueVals := make(map[int]bool) - - for _, num := range argsArr { - if uniqueVals[num] { - return false - } - uniqueVals[num] = true - } - - return true -} From abb6f4b6436cd2f995fc317576a4047a80162bd1 Mon Sep 17 00:00:00 2001 From: Aliaksandr Skvarniuk Date: Wed, 14 Feb 2024 15:34:32 +0100 Subject: [PATCH 6/7] 1. Added adapted hirschberg_sinclair algorithm for directed ring, by simulating behavior of directed ring with "twisting" on base of undirected one. 2. Updated Makefile 3. Added quote in README.md 4. Added implementation of BuildRingWithOriginalTopology for possibility to accomplish task (1). --- Makefile | 1 + README.md | 1 + ...directed_ring_async_hirschberg_sinclair.go | 13 + .../async_hirschberg_sinclair.go | 232 ++++++++++++++++++ lib/lib_graph.go | 18 ++ test/leader_directed_ring_test.go | 6 + 6 files changed, 271 insertions(+) create mode 100644 example/leader_directed_ring_async_hirschberg_sinclair.go create mode 100644 leader/directed_ring/async_hirschberg_sinclair/async_hirschberg_sinclair.go diff --git a/Makefile b/Makefile index f2cc2f4..d27fca7 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,7 @@ leader_directed_ring_example: go run example/leader_directed_ring_sync.go 10 peterson go run example/leader_directed_ring_async.go 10 higham_przytycka go run example/leader_directed_ring_async.go 10 itai_rodeh + go run example/leader_directed_ring_async_hirschberg_sinclair.go 10 leader_undirected_ring_example: go run example/leader_undirected_ring_sync_hirschberg_sinclair.go 10 diff --git a/README.md b/README.md index 26b4de3..2b51d70 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ A collection of algorithms for _Distributed Systems_ course (winter semesters 20 1. Dolev-Klawe-Rodeh algorithm B 1. Itai-Rodeh algorithm 1. Higham-Przytycka algorithm +1. Hirschberg-Sinclair algorithm #### Asynchronous undirected ring 1. Franklin algorithm diff --git a/example/leader_directed_ring_async_hirschberg_sinclair.go b/example/leader_directed_ring_async_hirschberg_sinclair.go new file mode 100644 index 0000000..df0ef8c --- /dev/null +++ b/example/leader_directed_ring_async_hirschberg_sinclair.go @@ -0,0 +1,13 @@ +package main + +import ( + "os" + "strconv" + + "github.com/krzysztof-turowski/distributed-framework/leader/directed_ring/async_hirschberg_sinclair" +) + +func main() { + n, _ := strconv.Atoi(os.Args[len(os.Args)-1]) + async_hirschberg_sinclair.Run(n) +} diff --git a/leader/directed_ring/async_hirschberg_sinclair/async_hirschberg_sinclair.go b/leader/directed_ring/async_hirschberg_sinclair/async_hirschberg_sinclair.go new file mode 100644 index 0000000..1c1a814 --- /dev/null +++ b/leader/directed_ring/async_hirschberg_sinclair/async_hirschberg_sinclair.go @@ -0,0 +1,232 @@ +package async_hirschberg_sinclair + +import ( + "encoding/json" + "fmt" + "github.com/krzysztof-turowski/distributed-framework/lib" + "log" +) + +type ElectionStatus string +type MessageType string + +const ( + CandidateStatus ElectionStatus = "candidate" + LostStatus ElectionStatus = "lost" + WonStatus ElectionStatus = "won" +) +const ( + No MessageType = "no" + Ok MessageType = "ok" + From MessageType = "from" + End MessageType = "end" +) + +type message struct { + MessageType MessageType + Value int + Num uint64 + Maxnum uint64 +} + +type state struct { + MyStatus ElectionStatus +} + +func initialize(v lib.Node) bool { + s := state{MyStatus: CandidateStatus} + sEncoded, _ := json.Marshal(s) + v.SetState(sEncoded) + + data := message{From, v.GetIndex(), 0, 1} + initiateSendingDataClockwise(v, data) + return false +} + +func process(v lib.Node) bool { + maxnum := uint64(1) + var jsonReceived []byte + var chanIndex int + var receivedData message + //counter := 0 + final := false + var s state + for { + chanIndex, jsonReceived = v.ReceiveAnyMessage() + _ = json.Unmarshal(jsonReceived, &receivedData) + _ = json.Unmarshal(v.GetState(), &s) + + switch receivedData.MessageType { + case From: + receivedMessageIsFrom(v, receivedData, chanIndex) + _ = json.Unmarshal(v.GetState(), &s) + if s.MyStatus == WonStatus { + dataToSend := message{End, v.GetIndex(), 0, maxnum} + sendPassClockwise(v, &dataToSend, chanIndex) + } + + case No, Ok: + receivedMessageIsOkOrNo(v, receivedData, chanIndex) + _ = json.Unmarshal(v.GetState(), &s) + if receivedData.MessageType == No { + s.MyStatus = LostStatus + } + if receivedData.Value == v.GetIndex() { + if s.MyStatus == CandidateStatus { + maxnum *= 2 + dataToSend := initSendingData(From, v.GetIndex(), 0, maxnum) + initiateSendingDataClockwise(v, dataToSend) + } + } + case End: + if s.MyStatus == LostStatus { + sendPassClockwise(v, &receivedData, chanIndex) + } + final = true + + default: + //nothing to do + } + + sEncoded, _ := json.Marshal(s) + v.SetState(sEncoded) + + if final { + break + } + } + + if s.MyStatus == WonStatus { + log.Println("The Leader has index ", v.GetIndex()) + } + return true +} + +func run(v lib.Node) { + v.StartProcessing() + isFinished := initialize(v) + + isFinished = process(v) + v.FinishProcessing(isFinished) +} + +func check(vertices []lib.Node) { + var leader lib.Node + var s state + for _, v := range vertices { + _ = json.Unmarshal(v.GetState(), &s) + if s.MyStatus == WonStatus { + leader = v + break + } + } + if leader == nil { + panic("There is no Leader on the undirected ring") + } + for _, v := range vertices { + _ = json.Unmarshal(v.GetState(), &s) + if v != leader { + if s.MyStatus == WonStatus { + panic(fmt.Sprint( + "There is more then one Leader on the undirected ring")) + } + if s.MyStatus == CandidateStatus { + panic(fmt.Sprint("Node ", v.GetIndex(), " has state ", CandidateStatus)) + } + } else { + if s.MyStatus != WonStatus { + panic("There is more then one Leader on the undirected ring") + } + } + } +} + +func Run(n int) (int, int) { + vertices, synchronizer := lib.BuildSynchronizedRingWithOriginalTopology(n) + for _, v := range vertices { + log.Println("Node", v.GetIndex(), "about to run") + go run(v) + } + synchronizer.Synchronize(0) + check(vertices) + + return synchronizer.GetStats() +} + +func initiateSendingDataClockwise(v lib.Node, dataToSend message) { + jsonToSend, _ := json.Marshal(dataToSend) + v.SendMessage(1, jsonToSend) +} + +func abs(n int) int { + if n < 0 { + return -n + } + return n +} + +func getChanToPrev(chanIndex int) int { + return chanIndex +} + +func getChanToNext(chanIndex int) int { + return abs(chanIndex - 1) +} + +func sendReplyCounterclockwise(v lib.Node, dataToSend *message, chanIndex int) { + channel := getChanToPrev(chanIndex) + jsonToSend, _ := json.Marshal(dataToSend) + v.SendMessage(channel, jsonToSend) +} + +func sendPassClockwise(v lib.Node, dataToSend *message, chanIndex int) { + channel := getChanToNext(chanIndex) + jsonToSend, _ := json.Marshal(dataToSend) + v.SendMessage(channel, jsonToSend) +} + +func receivedMessageIsFrom(v lib.Node, receivedData message, chanIndex int) { + if receivedData.Value < v.GetIndex() { + dataToSend := initSendingData(No, receivedData.Value, 0, 0) + sendReplyCounterclockwise(v, &dataToSend, chanIndex) + return + } + var s state + _ = json.Unmarshal(v.GetState(), &s) + if receivedData.Value > v.GetIndex() { + s.MyStatus = LostStatus + sEncoded, _ := json.Marshal(s) + v.SetState(sEncoded) + if receivedData.Num+1 < receivedData.Maxnum { + dataToSend := receivedData + dataToSend.Num += 1 + sendPassClockwise(v, &dataToSend, chanIndex) + } else { + dataToSend := initSendingData(Ok, receivedData.Value, 0, 0) + sendReplyCounterclockwise(v, &dataToSend, chanIndex) + } + return + } + + //value == v.GetIndex() + s.MyStatus = WonStatus + sEncoded, _ := json.Marshal(s) + v.SetState(sEncoded) +} + +func receivedMessageIsOkOrNo(v lib.Node, receivedData message, chanIndex int) { + if receivedData.Value != v.GetIndex() { + sendPassClockwise(v, &receivedData, chanIndex) + } else { + //nice to see you back, my message! + } +} + +func initSendingData(messageType MessageType, value int, num uint64, maxnum uint64) message { + return message{ + MessageType: messageType, + Value: value, + Num: num, + Maxnum: maxnum, + } +} diff --git a/lib/lib_graph.go b/lib/lib_graph.go index 32ed29d..be11924 100644 --- a/lib/lib_graph.go +++ b/lib/lib_graph.go @@ -76,6 +76,24 @@ func BuildRing(n int) ([]Node, Runner) { return vertices, runner } +func BuildRingWithOriginalTopology(n int) ([]Node, Runner) { + vertices, runner := BuildEmptyGraph(n, GetRandomGenerator()) + chans := getSynchronousChannels(2 * n) + for i := 0; i < n; i++ { + addTwoWayConnection( + vertices[i].(*oneWayNode), vertices[(i+1)%n].(*oneWayNode), + chans[2*i], chans[(2*i+1)%(2*n)]) + log.Println("Channel", vertices[i].GetIndex(), "->", vertices[(i+1)%n].GetIndex(), "set up") + log.Println("Channel", vertices[(i+1)%n].GetIndex(), "->", vertices[i].GetIndex(), "set up") + } + return vertices, runner +} + +func BuildSynchronizedRingWithOriginalTopology(n int) ([]Node, Synchronizer) { + vertices, runner := BuildRingWithOriginalTopology(n) + return vertices, asSynchronizer(runner) +} + func BuildSynchronizedRing(n int) ([]Node, Synchronizer) { vertices, runner := BuildRing(n) return vertices, asSynchronizer(runner) diff --git a/test/leader_directed_ring_test.go b/test/leader_directed_ring_test.go index fc31099..a70834d 100644 --- a/test/leader_directed_ring_test.go +++ b/test/leader_directed_ring_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/krzysztof-turowski/distributed-framework/leader/directed_ring/async_higham_przytycka" + "github.com/krzysztof-turowski/distributed-framework/leader/directed_ring/async_hirschberg_sinclair" "github.com/krzysztof-turowski/distributed-framework/leader/directed_ring/async_itah_rodeh" "github.com/krzysztof-turowski/distributed-framework/leader/directed_ring/sync_chang_roberts" "github.com/krzysztof-turowski/distributed-framework/leader/directed_ring/sync_dolev_klawe_rodeh" @@ -13,6 +14,11 @@ import ( "github.com/krzysztof-turowski/distributed-framework/leader/directed_ring/sync_peterson" ) +func TestDirectedRingAsyncHirschbergSinclair(t *testing.T) { + checkLogOutput() + async_hirschberg_sinclair.Run(1000) +} + func TestDirectedRingChangRoberts(t *testing.T) { checkLogOutput() sync_chang_roberts.Run(1000) From bd010e02d2e8e9ad99c0913acc9625f1ac8e9e51 Mon Sep 17 00:00:00 2001 From: Aliaksandr Skvarniuk Date: Wed, 14 Feb 2024 17:19:13 +0100 Subject: [PATCH 7/7] 1. Updated tex and pdf for hirschberg_sinclair algorithm. Added directed ring version. --- ...on.pdf => async_hirschberg_sinclair_2.pdf} | Bin 142996 -> 147325 bytes ...on.tex => async_hirschberg_sinclair_2.tex} | 75 +++++++++++++++--- 2 files changed, 66 insertions(+), 9 deletions(-) rename text/1184415/{sync_hirschberg_sinclair_second_edition.pdf => async_hirschberg_sinclair_2.pdf} (56%) rename text/1184415/{sync_hirschberg_sinclair_second_edition.tex => async_hirschberg_sinclair_2.tex} (68%) diff --git a/text/1184415/sync_hirschberg_sinclair_second_edition.pdf b/text/1184415/async_hirschberg_sinclair_2.pdf similarity index 56% rename from text/1184415/sync_hirschberg_sinclair_second_edition.pdf rename to text/1184415/async_hirschberg_sinclair_2.pdf index 3cfdf7a16d806f3dfd7827e240504ff7991c5fd9..36504ca24b9e03ae49db3954f1a4c245a6150fdf 100644 GIT binary patch delta 65106 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%0Ax5us%r;aYXVxISbyqKdZnVkMx71BG@R<&eEi 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 delta 60854 zcmV)AK*YcO{s@%a2#_QKFgKSGAOa|VwOCn`+qe;apI^b!%TkHOA$Zf3q-wL}iJh9n zn|M-r7*Dn+5t2|t0WuG1XMg=R&<%=|XxUD(FA|PMqxHp6UH@9~| z?y$%Uqa<)1)=n0CewaIH5W`aBJe1C(`(v$^72nOD9{zfJ$8sn4@+3$!weKu{0_J4_ z(%sFo(5=;Oz6it6mGr0Piy(7L-r)Q=4^o%+BA*Piv+1V9d+o1Qq!~$x^gJ$>z1*?(uS1 z;IT9XVt^osk(ha7n#V=#`|g{60#(2(<(#<|2V5zY{0DR!KHmK3fO#(fNX zWgJNJ)@PNz&Wv7Zg4}IX&rHzWm1x=qhsGeVE4kQgPv%fvO#~||4B6=QNc=vZo z{O2EimaGJq`i2(QFi%)R!$OPE0u%}t8dV)}bZ;Xb#(PX$uSPLW_}2VWC$yszn(+Xb zDDc8Og%gP41az4f_?ad6=*K>B2?jKwm!+|#krPZ(FNy3vn0bPK1sFI6J73`ud-+ff zX7fVR6dMx+5O|9SaQ?C82cbI3!cDi*o{ki_M24%B+)x@)y14bdxz1}8ekReM@@YuMgOV}aHjcJ;F(^)Nva8mb(8LmE~>IB8AThh z+gC4$$-ZbBVLTZ&pteqhe+Wvm(8~L6zDS|znh=PEUfid6Q*41}DWLj<&^CrK$(eu(rDbES6psd9SK=ty$z!24caNKZI;UPDxbSA@kfVyBggri$`$>w_z^{gX!KpqgD_O7T_}n``Cdwc9__` z8s`RDLH}e@4VKTK5yK~sxz42zZ8J?3v=3W4)Y2=SnAVI?j zFSjp$V3c@q5{@uh;|mYsw!pugsyUAK#!VF#Hn9XBsAvZ~xfEs5(sXUw_rS^zgIZZq zgCG3&PdAY+AnSR%GRZEE?q2P|KxQ*CI9p=%>zB~7u6Ao9ah@XMgK#rQ8;MGUPMci;bEzy^am_gD~C)=q+9ztsAv%;d+tVFy|N)Is$_0vl`1+Dfem6{UjKw!}pv~u`` zfVMa4@?E-!6OTpF_%#`Po2GoVRnwZngY8Vynzvmon+Z*qSdyQ|A2JO8Gq1Q*bI`AU zqjN0c&`M{foX>O{dF#I6T}h8y^RhKV`yFE4f3JZj8N&AF z;pWqgE*`$a?DwG1&%F>(TDy9}XP)Vu@X-l^#1Nfl4O7H_1_!ZW${|^sGq<<5ct))8zgV{#V?Bh#U>s48 z!6MH%g50aq?spANPhn}ewD^y0sTppIrjJn{Vl+Ryc-H5$nLS&yUGr+paK{U2*D#R} zcSU1&2!W;8fJ}B*UKIe-y%`4o5rhI3UQ|F>9Q`qlLvD2^f9e%^jUOTs)54B_$WS-r z`-jD1sQZM7yW(dFDbZ5nfK5^U`|Z2?H$(Vv{Krd(d&$x>$so9vN;d-fgzjQy+Mj2H z`R?UVR2`?8Z&!_gwwpf}syG(bKqt;M-&exAi@wIZac~E!57|-SKb*48X#MPSm%Y0~ zIxbFU^j$Aw51C0tZuao@&EGG75$j=|RjO&nR>`hdCHNgJUq&2c1TV`&^QOtt^SJ9> zcHK!z{m394U7_~z%s(K?Oc zKo%YO`_*tUweBPmc-By$-cc7*=O=Fd(^ua7ZQeR?)gB=n{C<#6KKJQ^Wf45>bYt&B z^GbDQd;&_`uVk`DB$Jp3CjvA!lfeipe_4;?xDkHuU!nLVZlui-4_%Ah07)>LY!Yk| zY(E5;T?Detwv~}3ua5TgzfTpbsKYIHCYiS&FD6YEi*@sFy#rv((&EQ7-z)z{hxn$|N7Q! zyw%!cJ-N01IJgF!*de-*q4UMZyU9Ip0*jY~O zJY21nNRxyZynFXL%h8e-+q+jaAuC-J(;xuE2W98f{mfXXlXU?)~H4&vz1N!vLHY ziBM;O$ubdVGT5E&KKv90d)NbRLT71kag?XP7;vh>b7kt5TPIZA_(=+5^Npb$5oe*wVv%w<#rzxQ^810}}s{PdxqZRWZde_9I~LIz5W&_JgV0kt-u zC9FrV-r|2v*We^C4-gLB@$}1rNWeZ5t4VL`LKz?a9yBcVKz%9Sdk$K z0pqH~;At_CI>b;d(PrpxJm*a6so{TV9cAkb2miYxb{a_0*4V+|S`Eh=TAW_XyxW>N zc6u&U^gD_ISCy4W^c*o-j`)da=m;;`#L5Tg9XeW^TG^7OM_LCs9MZmixTeeKLBkQr z*i%#sJTjqDzwhHxdPSv!Rh%g*nRQ?8X#>pqe?S{s=Qq2{`_|G5W-?c3x3_;;WU+Jb z%*BH!C@!V~%!@b``z#j5TzP+*8LKB(nq72{nEaNnIAfy!GTT?AS#>+Xsq=KI?q^bQ z0eb3&Anj=Xxqzn>5o>RkAp*@LUl>o@rE0VBK#w&?a_9Ni#vv$0brKCDBtA4epFjZE ze|#C)IV=0(rQj7I%}|l(?v&```q z2Jmo6bczJf977kOMJ%J+%54mwPaH_6W}(VDwl2gdATzM|*U^4s2z6BNGbz%UVElzz4Yzv2g@nHoWc8loVDe?V6v z@}I-1d%z|@VnRFkbsDAI_N8W8<7vaCClHRXb?wI2+}rsU$f4V$ZyD>I;IA4WKdK4UJ5lA-<&9O!!(&I{C& zT1NVIaz9p*?f6v1Z(o_q#KTL`M*uV_+Y4b1ZB1eVsfCt|2K$9T zhX9U-N?X>4g|vc@jN|K;dv+CwqXv=f0y3fBO(rp4Qp39ceLBKuNT;Fb{#Gnz;G%ojoX# zD&@E>`l977hcmO^d~*m#>j+1$&v00u&(EH`qB1*B4s|8f>WIOkAXo;|DW;5o$ zkw7kruBwIPwb$xP36Ix#=M(k3sN3#5)Qv9dcI`!|Lk<#qZ0~04j#-7|-nCw&t3&as z%Od|8Lg2DKQW9}#%LhfA1rPZIlTt+VFb}5)47sXEFH=pHDgr13fgdNb-HI|>I~XBe zYBhm7lsd65Ek(Vas+|N$DUN(Oe_dGm20%v@P(aXZVO3BEo!D=aB%oNkB*9vrW`Rvu z0MPoyjuMuPy#fe1A|wcziCBOtMu0sBsS`Oo3J9dTBqaXHFHHE2@?bf1rcKkN#M7WzRqv+CWncvwcqUL%)bwT5FbTDF}fk2N7B(vA~25M zn5GQ_7yK-I$7T!msw(4ZnZMi+8>+BuS?S`cSY8OU0qqZ^{&Y}Q&+7&wIiopp+_XH@Vn}E z)O&1G%vdjU}YEnRMPaDq{?q>9En!Ae~-lhsbp^t(50cC z-q1-r-{$pXbbnxe5``rx0Mxe8xeo(r-Se^O@kM|)J?ZZ-qb~rRl)wp-2$CN@~TDwAEKQS zi`iuf9yhD346nA^e}F6z0!A^69)c_=zG0J)U2U?;5{^NLUpmv2#m-embbMX+r0m)t zbZt#j9A8#`HDy0NxUp*GPqSiOH^xn9r9T0%{KM*quHlQGs<)-*sWoqcjh?5){b>ds z$ZI@#hyRy`!`q0blMJN+W^v%=hs^#_yWdAf`(ey&sUo188XX0JV(339OnF?uJg5S3 z*+}T+{Om6R$a~n6VT2O`FgKHtQWUe3CHyP`FgcTvQWO$5I5i3{Ol59obZ9alF)%ne zGm_;L1u-%(F*ld-2LdO5jkX0)oY@vF3?aC?hsNFA-Q6A1Km(05(6~DU0>K@E1cJM} zgy8P30YcEAAwYO!X70?~`~Ow%RabR?Ywxw~oVCAdT1pLVR!J)-3y_=>#Eq4cjY9|^ zttw@}$pzrx;AZ3C;6kCL)d9OXfc|4gq16LHUBONep?@)?p&+1t+p|pu==Mxhb%Fqt z+#LX%+yG8KAx?fF4h{ep2Z!K)h)z%;fDF(BYz0td11LE`K&~jX(oW9aP_T`y+jE`& zJOUUj83CMvg8VFhgaafUK~S(I5CTvIy4ivppDS7d9RS)+mSB*Z_kX2e5V3W0a~5J} z_w@8+13J30IYDiI#28rso?tgyfELIV1oZ$}0e+7RPy;%G{u+%9g%+S=3wHg}q3vYt z<_Uy?0M7;ouq6oM`W)g8u>wH>&(#6iiYfqgXAtC1vdW(X7QkPJ1K?!i{5#!W(Z3Uc zA%6q|EiIiKoq-TV z1jtEh0)WpG{xzSgB^2!J=E~*@cKAIb`|mW*$1Dr6l6G=*1VP+fQGWL)1BQYupU>T! z{jbZlhd6mceE);2!4NC!-(y(0JG1LTz%K3}MVY@i&nA?AY&IY_051mz2S1-60OSGy zd0E=B|1O|^k9M$0o2yz?NpA}~11aa{GhyKSE zv#aY$O6#gJ|26X8PAMrTFMuyAFE@adiQyx%_F@{k>=oU>c=-T8C=}?8!tpF6E?!=MFX!_*T7kU&P%(g= z4dUeX90GVA&L3dy1V#CMqkOyocFEtSKM_BFfL;1;#4q?Ps=tu{2Y_AUAH)S<*ZK$X z0N8c@MuN{-fd3!?0K3IM=sBn5--z>B)9j#s!RM^j|AO2AcAI~}=PI`Ug3qmk{{^4x zIQ$Df7jpauaz1wt`4@by>+~=9T-W(;$o*W$#ofsbWM$#-r+okR2>#{yZ!;(7a|HB% zU+}pz*MC7i0Q@t_Wf`s|Rwy2Qk6IfLBioWR+wc8<9?TQ8ruW)WmZk^>CJT=w>pzntldxt6yW~w?3eed|6H~@7O}9WxnIqvjQUVE!y2m_V-j3EN1Jbv zGfzZ?;KoXh#DsJ1g*kV9GmDcu`9z_Vz>MO59LrtgYqZ7n?rz>^y+Vh}wTGC0hS-RR z9PS!tY?{tj>T9YJ;i7NJ$2g^kw;!#^%@&%)Ix&GRJhhbF%OYi?liQ<2hvvc3Wth9u z5pkB9JG4^6hYs4gT|_u}_58&%kDTToP+T>;4ju`7-d4_KLqo*}?A=Z@xFRz?B|5wc zyJiqa==vJ@HFc41iMU|kvtYn~41Gi5Q=mk`5|>53n{lr%&jnRh@BWjM@(`r= z##cIqCt^BNFl58jz!6Sc%3NWD*C+4whX$%}p6tb7NlRm=Untv+)ovN|;Ptp=;b5(q+K`u1WFkL$H2KCUYTFNTXZ(6Zz>NH%z%=3*Z zW>xtlh+0PGj5DX4TR-VTPZZnO)Md948v);9)f~A1G@G(`RSQwOufw)2~WDx&- zD%wscb(UDOkzMbNZNYGVBXhd$FVE_y@4F}u4K(pzK27bIZ0oDBNf$Bb&6u32?eCN2 zb@sJzV`IS2Ns3=Mm}9y2ma0Z*G~bq?cD?hq*7h#hUg);i!XE$hTF{-``Q5;c#?DZD zjhZ`jfl)=&-L~}Ie8|j@%*1kjTd&64TeD(+qUII~_@16QlrOA*B@;fnOyjGsxGN3< zZgv%lJPAX6_B4fF%nu{BQ(!D?kFzCD<6C;Ql@WaKAWADEVaN=@5it^p=3C0-RbHLT ztcRUt_IbdT@66|bW$X!r8dfAl3oTaT4O`dJcxI)z2n#s?3FD4IA%sKG=8Kr)iQ?VX_AHq-qXkwvtPd9+MVj?i+S`!jdVDDj|x{by9$ zV{`Zu1c!Ei`~yh{Qv4<`bFVR^`9`g05Phy&=sdsJID=+9*Ggy#Y>B^+VfQF~ugdl1 z^%yU-N+s@6=mXK0`of`~Ta{ho0b9Q;^KcebUn7@nMd4Cf3z~~*e5>|Hk}E8|sT6}> z+E2$#X-Y@jL*hy5AQ$ifz0gHsRw6oqzazHCCPou~5o1vZs4^=bg4GqP4#39Q2w;3E zNSG?0%Zg_n#ymL}iIB$iqa)ri6TE*nk;4fCtxYLCzWOX?RDL?PAwKzTTwq7T2-fjy zJOZ^NNJisoIrUmIyc@}1yE4^dm$9&-bR0q^(-wIAt-41y%Z2ZUC<3nB#@20Uf( z?Yy{ulyT>12GUswHL|aiZr+u5HDj49&6yhH;}Nx`zG|q-dRTT~YMC1&6*44iWECTG z9_GJEX;EprZx~!MdOs)~P(SE!eRo|Ejni(G!C5#i#2)+;U_;4*H;B@?<{z7np*g{P zjwr~j=L_gc(TsIiIFhewY}!HRhoKavcmeBw?ZUjhU;Z6^MyVksQ1S>K0eRo!){Y%I zHNTP_YDBJq#mG}*y}+#QY+(MzEdaoqY8~ouKx7dO1$*++|A|Lzcj6}dgQ1Zb`Zzu%aD zA&cZjjDEgX+F%V)R{bpYC%5nA@akekyYGzscmFxeBIl)elah#lhT3> z=iNA0xQ{ul@+v{g>P5C|tepLYYOV*|~xnIcTd-#40o&nfZml*Yl?BQB%qj!FQ3<$8d1 zXWkocCha>|4F8)bu)H3hC$JfoaGS=lF2X|u%g0EQ)J$dmfJ5z@mP_UhxT*Mdp<$1h+W_;DhCKEwM#+|>spQ22YLX7v}D{@8$fQ37-E;Dsz z-StzB3}O4$tkzRhQc<4{dQ;GtWi4Vk*KtB9ZSaG)jEQOkwzi3Sykr`P-0HigeQkBHuo<)G}13wUdeZY$5SK4|C zs+k+RK2GqG_hffqcRx`v(q#oti>9(KDOt`*Ghm}~n6A9?sicyyHataAJj1`0_ zp^>QaWD)0AaYOA4PsP`*9E+hsp0^QMG1n-uqHF!b>F+! zqV%{k<2f`~U4P+eJZ$kPwN!D9Od|N9ql92A1YhAXLGlp3A0w_GrS{{kDn3&idW{-9 z`0P~0`qEl%j=fkM^#jaUvJ=+Cm^pBqGH(riN9voK>9tRYNhe`{7JS7k)zK&yrMvd6=w4InThMGY~KRJJXB62BRL0@mJ16uc`_bj8 zs;(1XE#s<`KB`H7+Sc&1H`Esq`98Q)XQQk6imOVGIH5|-b#vz3{RL)V7p+w2ifzor zDh=5p%l4&M?tUc6rPHBu+6t9I&SW*l9A+M%rJQR*3adnSoS$B)mZ9maoqRBB`l8a3 zQ$uk*e*2cqAy0D-)^1pi)-Jb1qXC8UwB5&oYq+XbKWIaLmDy3bIjnVH(3*v6jh#E- zLw~jK{Y@%=0Xu(hrRb;=>wy++Q1t#5B$Z4_s)+Bm9jE$a*K>eal8d%PdQ2NH_kvI_>}lnV{LYX^a|nX? zYi*&eBOxV!kh9jnSko}(kH8(lta6x`ywPP+C*v)!@d9cSlHgvs+!;3!wtv zXnuB6Q-P4CL~-Wr$x+F_TW?s0<)_BQU6g-wZ zy`i!*fNwW&g?m(mk}Q3bt!_BZnOAwB`bv4sWKG0>oJ9$%D;bqAIr0LHMVuR_XV;5A z^*bLmY4;P5@-kZV%`Wv2?)@X`aLTZI5#d{lf)@6qP5JKnHEMu@#;r-I$!m-4-FccD zsAw1CxOhDKN0M8?cOqF%xKg@U-;S2~tJv~*OLvK+ns&7m0U7m0f; zPMiII;-d?Sykp2IUrn{wui*b2k>E&=fR9O^`lkh z(~G{*vj{9&*OASDEE71;UDS_RQ-*hED=0#H7eKDILh)(bwKd=HyuDrd+=cf@5_LiY z`3@C7Kf40=1->qK$+ykuMO(LDDPecyuXP=N6^$vvio9+;ea9+(dTlDqdU-^EAn&hD z^9tyPcDwC_w%BCvPJiZ^h4omS<{bRR28>XxvrRF6Il9W-);CXTU+T4dR+u>VRW}JzF!04X?=8djd z?+3K&2y?!YvjE*nyuq-w->1i*zglSU0a67($A{=SdIs7%M z#6&ZD2kE*qZ_KteTC!ghj8n9bCjEK2Y;|@RJXNd=@5;boyt#vbOCy)glhPG`3b0~9 zcreY!T#a=9+E|n*G2oT`EC2hQI$_E{kf>#5`p*2^NyqMEk z670U#N1D>#{mZRJdXR<|ZvvKfq4kH9)o?uRkGa$F*X=RZ8XugRPlCEtXPM3DS<*31 z`OMi@^?hxZ#)r>_*`ua2zm3@))NA|C{5nyJ^g*3=jfkFa`VzgpU`L35T(VIg;FG1| z>mq3aqcvko!}wOnM@?HvW!;<1&g^}E@?au)BW(Nt*(=5wovDB+Wg|FA{GS>e@Npps zN*V+K3}OL-J9M9lHavQF%$}%_LgBj@J0lHv4@gCA;nZeAfNEGvb)~eiobWpf9tfOk zHXh;!K|Fl*{J{!02?R%fl)o+;)vg|U?Fx3(dB{sT@s_(R)}QtYTVr9}^5rhPFZS#A zuD{cr`CfWz8Z#S3Dt6zCL;eDK0Stm)yPa@%tELqrceGrNOS-gE#SoKN^I>wX?; zml}MwK0dC#Wji!(3imKPiZDhzuuqT0DhSquM)+fe8<~!ORu3(nsz9&IabU}oO0KJ+ zZWP4<3~APO!$i&&_`5!nYL7Z-_|*91{Sc+zicPFXPch*$hBbcw&# z8FLMm`u=Dc+uQfOGOs6#eipYwPKR+1!*%+aY{hPPd^TN!G9?>_+aY5`Q9PFQ`StwV zC4UOSJBMjVrmE+jfk-y0-!OXjkNlSN4NoF2>h=+TA-~b74!({2MIME_nxZ*-==T7{ zFc{f)MUGc<-!nZbqpB@f`iwKZ%0hy-hp-I8C7RQ>pkyk9%{}x#DY!?4UKdI7OUDHm zFq`kEcWF_}f05MdcQcKa*|0+IYM?}3;0W4b3U=RwU-h}N_(E6{l3qi4R1P(qKKWRu z7G0Bn+eCXgO>Bb%b1_7sYd~i^{)R7pNxkdf^5@o^{sdR8*$UB*cvuV{`RbDg09Y+= zW}^J@(c8MyT>FV?S?r$8=JgGU6rcP7%Hz0i0x+WvNxx^3NtM(#EBY0spyUS3uVhtQE0==py@~*Fr#`)ojV%DwS?-_9 z^#P72_9$8(Sc?LiccJYHwMVY0D^V*CM#Xy-Wo$1^fAyLY7Kl(b;oCBf0Y3RV z;Fme9MR2bMj~H)8`V3%vW(Ob?pM@Ge7PqIee6^a6G`Z~NbBawrsh(Tv`Pxb%+a~}c zKW~gRgNtF^Q0y%c#BX4nhlceQ7V*#uN1vXrT}iU!UjAB%{S1{RK$`p=Wy6kt9{O(3 zOI781RLN!|p_@G7u3q$n1SfyIu_`%#&HN3ax7slTNzEFz+K2=b`zs!;kD0n3!1b^K zRc#Z_Vru3~xPI6%Q|+7azL&RZy;dPB=A*2meWkqNyp_O`xeIabC3vM0pfAJh z=Q?7gFV9z1=go;|QI3abzyq&;EMHVd-G9nIeZW1>3MIh8O5mY_pifAqDqSw)kRqgP zQ{W4;1;ED1D9^)=t~rGmeVh{h;A!D?*>OY=O8F4hr_b(~(l^pQK$<4I)xqg@Mt~X&UIm6Rww5|ExC#b%UHZ(Jjyb~yN_~3 zPkqaq{t_0GQN_X`I8)Wk*a5#KXgo3e6YvW`*Gme75B>h^`>O_oh{K+D4!i7BQc+d@ z@Td&QP1+uA`zaTn&GaOH9m~D~_h_rmOsiX2Sxwc#hwv88n&Q#*1)Xg^nL4WE(LGi) zoWK;#G1or50jX)tOM}z7xE47yQt7<=ljmqyh0VfDnFJUjB>du+BBCC!gKFmI@3+N& zB*rKeU~X%Hd6whaPYNy{FVHU8BHvF9q)^FsFmPWtjTXGOi2Tfdm#UFxon{$9OkH=$ zyYUhwhUP#B{nJyWF*5xcn~KsGUWc#9U0xjp4JKPP4eryF^Lf%O7sw}XOD4kEM5^Rw zuR?gulKqLAY<$B7B*st}oeVi%A5Kcnw5(yReqDZ`2XWI-nlk7%;Scf?(U~|)Xcqqf zZ;W%of*~yCZ|s?W)fg@ZbgfUDQJLtD@*v;!Q(~NeY#u^0b|*GnOT6}YHTrk1YDw39U2Qx#6FWYk@MOTs%TCAxIkH7-M97N|&O zgXaUuu>E=+T0RN;!}qdt1mT;EsLBgiix|P={%jq@+3#|HlsRm$Pi_iImeQ;2PQLZU z2j@5li+1iLC!rDKUuxf>>t>0r?{1r^a4D5jmO@v}>Sz z-!AGlp#|Kysa?o`3B9TC%iac@cHz~>>}4nR&pB}X`_iUSytaLQla(G;#|^$suazO+ z+3^pkpKh^#q!g3o(tW-kw&Uep8us@>*-KYxJWhJ8_|!p~ZcyL%i03wC3&=+n6+jj4 z|3)?q_7Y;9vmU3jjrCHx1hZoal zhLr-D-@%QF^_2!|e%$B|eR&^BmF9y#r2B(D{X$}YZ1Yu?9PfML$Km1uVI6G#>WT~I z>U&8Wp9HFeM00D7PndQ)D=u^192u%_RsEgE7HkMv^3oV?>vhWmr923T*FSKjsl%Ny z$Lw%M2n7|Eyt?OxYc}i2zm_9?MGBLkwGc5UQa~qsbkV}k)h#qd1>QUh^p!Zk-1OX$ zi(&qMe2W%&hTH|M%4dchaYI8Xe4?v)Kzl{BYBkCOkf~HP98osdk2Ey4wHm1Crx@Q_ zKk?3n0TyfQGY^{gP9*JMm5zQvc#*&X)Yk+9VZ1lrr;al@)4b;z3Bb|K+$@?{HIzy?Nv`bVIm~zzZRWO`Wn}#8a8JCX5HRFq-Cb^jio}XcV zdbn-zDPlu9>xDhAN_65UgFKCJ(91 zc=Rsaujsk*w_i7I<0FT=#*HD9(0YAo2!4(O|5gv=Q(Kk=6!1A6zUK~Gh$!af3)?~I~%TpM+m-hSA9?)4}B=(;8@^*{}eJEgqs zlsTV`R>m$TE_buq7I23nOrI1y>2mL!0257DJP9jJ=~C5HRJG^1Pa2kgkR4(k^X>ws zMiqTtC;T4QoYt}Y9H)#5c?nGM5UL`zBaLC#$9%t*6(V21sH;yEs~PjeonZ$F@uqZa zcI2(g;d96jHq8rx`qP-WFw}+aBw_|mwKFx78ZJB{~Ih#$~yt#htGzyiF&G*wM8tJm9GkO(TTT^Tn|q8`+rYd5+g z^7BTJmW%v_`%R=}z)vozT{^dywY`_-J9C|Rh8It9-}EHL>!6x~>H%z6T+z+_aelQG zj3Zu_MJ^7s!G}z7gf}>OXIyH0gv>tMT4RQcs)jO%Rmv)VY2&j|E|`4U14k$1>ibCk z)zzghPOXm#C8HKxGnlTfYldgk{hXDcpI}^2T8t;qySJuwvMMc9GYKsSJ!T!2&*~_s zcKv;6xO=-f_?V9RzF>Ue07sUv9vAh)MAiAKymlGs{bYkKYFzVl4^Al*c=Kg2Z@B$T z;z%w0-EFpi62eD4GF%bJ%=(K+w2P%muOUG@&!@)gSEoRRDBK;%^UbP(~ zx^$JHt_k5vE1gwKG+U65elMKAR@-JtR<7!927JIKZzyD_{foDf41 zwh;NY#uT@AYl2yzobL1&fhUy@BGPf;adg0%BaK6xYKdMZWrn z4vtBGr88LEk@%bp=}=amN(k2Ew59a7bVqjr`5?IgdrdpkM!cI3Z?J=LqDSw; z=7nF_#Kfqb@n8w-8TO@iqwrkp8R;cT3ThpHDYsJL6wHNTq_pW{mM1r>6%Y`UsJW|`J!1L4o`1NMk_!R2VL8EDuVyRq4LC>s~ ztpCUcCsx<(@}5y-u-MkNEm)jhVQ|5w#AvN7`%aO)3h7uk@R|dEvrAr#r@C(|SHy8T)HpOL(p3gxVei+Odd= zPn5o}ii;>sSQ`#0amQA7=6nag^J9$L9*WSn-ud0x0l;|m}QE(oHDA7vB z#8s>Y#$zU*)=ir!Gri3URj!hJ1i5a1YSCw{;x2RAi=dlMyF3v>?*xJGUt2rAAk#Be z%twkC!(xje8EmKoyyyE7E+FM?E+>@CloRLIcg2v{()e@^itsamE0fu&wMZwZL82lP zy}{69ZtgDo0upYbZ%NyStG)XuWB%4FRid{SYsUs(F2HixQc|45sVqW!p7J7px>v)X z@{E4!RX@o8@&}`;+K)}R4?Ou3xxK7uSZ%%KmP_Gw1{R*w%}!ufY=!~% zjb=F_dKk;vOSX9zB}9a)WN3e|krt-6o5S!)NNR*ZtaYjo+j{z3_c&3l0hK~*1bb96 zT?daJaVm~Hw+%9h#SqqQM94UQE;>xb59UWNxF$aP*iYJQz?%3ZGR*=Lq8Vo6Ek_8rF$G~ zw}6(w&ahB9SKA0TdWEomO*qx(B>$IN_mkl-!xXNv!;K}&OdKT$8(7m1vSd7fUdMLW z=9uei8{czSi<{B%z|)#3I&%5Z*EqxPpfg#$VI11`jL6{inkB@N+ub3@0x6tr^)DHz z86Kkvvattplk&G$P{CRyx&CMzHpw%qcJT5d5^uQ9F*EaAy4~e}2ecgO@oBd;Sw!k@ z96VDe%y!qhaI$&~+pPh^Nl!s|-{GSr*L!E5+&=L*GL4Y$o8`!L%v}ewqT>y7a?E&~ z&vI$9Ydy-B(Dk7`|BvIw+NulBy(k53&`%X|$`%w)CvS724HFuKeQwYi7k@d8&CZug z?Liu97^D|6UH@2rb3bhOBBto+AX31ulsqEqJwtQ)Kms>|-%lvvH13Pr_=}m_g%tCa zItI(uSUdU`GNL<#e04srXDohAo8Kbk;?!TEr=oCmOrexvs3wIUjAO;EN6-nTI&-pI z|J*#pu54)Icq<$G9eoJnmCvLd~Z*mkj`4K%l?W&$(1L&NZ6(oQ%uZZ5W~f*|oadkgRcwsamZVBcw6Lc1&>L*7JOb^l?0WXb?ICJ;>#ERrlVJ>skC^IO=cmB;b#;mfR zvXJ5|1;}@<&SH+Hf1hYt!72H)$hU|46;X}`W_p$ww(m=Y<4|U%YF~fDm^HEA8+z?Y z2dUn|BHk2!^)at~Kv^fE*emLi#a|e^g>aiEr(GgmcL0;z^+TLe*0``{a}e!C~vrX z(QeZBz}%+Mm1B|q!JF(5zG4mj6)v0Ygzg=V5c(Ux+-ikX&6kZO7BCY&12sEmJId*T z*pXx$!QMl1e_RT(8i;7umMi637KZ$69(9HVoyV^0Q1n)QA5xSbUWwf{vUvMN*n*2^ zE`^WRo*qM7GTFEd;nINVrZ=`G8Vc%3Hb8pf!v^|(xk^pj_B4J@api?V6F1J!?NSU; zuVA`-{fgD(lX747=tw!(!4#BF#%i_r>7oTFCQND&f9+*&28hJRGdUcb7kUb|2gf6< zKxOEd+ZTkIPuEMBPl%slBRMk)#%q6~X{MbR-Po{9IZVeNk`Z4KSdd5?fZ)Xh#4|oa<=CjfeWh)6#Z^jPPMFi9{&!3P!HQ zB2T`2GQYyCv=loli8%=k8&W&zR8o>un@tl{e=kdX;oWiz-(0Wc4MiLOyvQhKbPk=& zSD-^v4nv||=nOb}gxV(6M~^`M7m`Fym45lK5`m3T(5Qwa>gvgb8hqPr8fy8s71#l_ zxAx_6U7O@i{veWNoHXoLq}bks@)kR@%TN}a_qC`LSdzR33wJnl@9hIMd6AZ$?4Ja* ze+j^fp3*-DNk%VZTR4)+10G6vG?z?1?Ju#e?oeb1-XtI-REWZC5Yk4Hlfp9_rNSEdHl61 zTx}u|o z!rnfyKt&Y~LygiP4?2|7qT3SL@%7$K#AX8LM=@|`XxszPsL8G4pvoyfnrVN_FYHN_n0B^P z{{4fYT)Du?*;p)9vKYa^<{ATAGAqW{d`6sMAemiDtU9ivfZWk)Cko*k+ZR6z@5>wx zO|81pz$dse1GeVeh+m-D42v6T7vgTAx?&9j!*_Q3_@mnFL1u#MvANw@f97S%c_?hG zH=bP)`0B)>Y~f;p{=L|{qmN9it_&hyrDcj9#V3h7#@m>KyVMZO6zVgy+Ff9fT`I4=&tLel8YK1`KrsQ%?YEg-> zLd&X!Fck+XPRH(p%gj&ye}jTm%J10+-}`XVX1SskvuTNvjN3ikxSMR z^W?~KidF4?6$!ug>W9JR_KX%2oDkw<%Kb{BA9M*jMUR`NgPF{dy|blF8EQXdw$a#j8gpXXHX1fI8naOw+je8y_L=UzzqkAS{(r4=R@R!# zb>q7IJVQpLpiC!dY-IDup$22LP5Sz8-`f0VNofQbdb#Lmsc!Oh4BU}j|G`X57E2X26f zfs45@K$adLWorX;geMcWwR3kcH#Ktth54Va07@e&023D%2kl?(06}Y@gSnA`4M5hw z$qZ->ifCkD1yHs%G6y=j{}%-%ubGpR9XA7mtE(%$fwd#Ot%E5a6)nKk+{p}}e*|;{ zI=BFh0ly0d$Qf7z|E`Q4o(!O3X72d6T-nyd$<@FC2mlGJ%#DCHjvxAZq<1v8 z`duQ!ZyHdSMQx0QZLO_=HcpQ4zw;9@cK{lJ+V0Nq_hcbSI99%2_pgjQSW@N_jn_k7;4)~Xnf9bavRDrjr zovj_f1XKjj+uQ^Q`UmgnXy5__I5{{2y*>Y}_-_Qy!~`%lH*x|P0!__r;Qz3L#6Xk3 zF=+S>=57EjM$qmt0T_S({pXtwXuXVWZLHk?nEy3j1~qXRK|wj1zbpQaPDses4d6+~ z$_SuiW@7{}{a!K-&=>Fjf2L6|F#jiwfB8z~QErvJ&<<(~zh{O35R0RPP; zXA9a|Ab|4El4~=vF&cqBnEszv{V$jQzYYJ*@_$?M|DBMSvz66fYRbR#{~xu1wYio1 zKL((sb#?+BfUGU(3~c_lsXFlQqm>03n>$^-00q76}ZA`8Hf73>DM=^6Zps|9v zlablq+w!+u_4k!oncDyrY#q&iKUM&Apwav<9q6=-EJ2SBN6L3=f6XW+8Egy z|2{EhHg%-{{vZwje}nKJ#0g*!`GdFs45I%*9E<=4u|J3jz##qyF#{MR{vZ|rgXAB? z3Sf}>gFv}R|3RQ!Wd0yfF0y|RC>Oau2$YNbe-I}q7ll6v6kX{L0!3H;gFw+${vc3v z)&C$aP&|V_2o%ro4+7O^=wM)E2?V_{Oq~A6S^gvcd+YzBe*h(D^dH0qA~UkJ0!{pX zB&@8zCDzt|0{&hF2IGH0P)Oh(22g8&{}q9W85A3|90rbNe@67%$KDxqQh#Vb-7xtB zK?WxOf~>!x`M)?p_zz@b`3+tEWWn@X@Q0l3x4Ese!@r_|3{3w8LHvKRV+FO_%-zlm zX!9=%knCUae;GkDu>2PU_3huafSPLkuUbG2`$NSBaVb?Og0+iwJP`By91e?aDrpclv=2T+oK=s?e51}8HI z;J;Q1RI!t*?Y|sA9d!N|1U28~Ul5e0>%TSy`s-~2+U5VjfBkj<0^NW{@QZV{Mm#|lwLvZS)q;4gbUS08rpb2HQ>f@X z7adxie;<+GeWj|(2v~Et75qBb^t^?I@QQuDWj`~luBMV4dl%!#a!hj#DUBkuOSw{&SFWNt@s zw~AdF;kk5*E?PB8+rMarEY~n|7MmExi4Gr@e;W1N?fuNn?KEok_#2^A91XnpaWqSz zr{+5Imxo!8m2wqk#||7)98GL|$Q#s=Nper2{Uj-@dC%g)<-P^CAH0Qx*+{g>%XA;; z_nFhH%#|W-8oO&;Mi$$cwsXD$f++C%(6$q5N*dAi9EjyHs+#p8(VS{nEP?p@Z6-o1 ze=WCaohBB^AAfO8eSZVYAZeH#`89QVKGoT;3=Z|t-GwCoydP{F+UoRHFXHdz|7hyU zL@jEj6|ua;osORjUFtLn(V-5MME^kh%jGNQGqgc4uV=u8&?7F>W&tCkCMR?^_{hgo zwj8gEFWwdP=W=c9Gbr;`uBbYJZ-MM`e{Y8E$>-+1#_kd%iC*hqquRwQt`MHG%6%S*$2wT|{M6_c(eUIJ zsi#$ib`fh&6M%;;DizWyj+|(If6FiJYV8wcRK%-EMANFOt6<%)k2UEteZaNjfe|Pn zl6S2vjOcu0#}a^o5{isfnL--$x4DEYi%pMAfk(oarcafQ+O@0bH@v}RpR_wPz)9Cc z_`_5W;U;#U*}rB_xryg0+Vq#89e{U7~QV~U& z1b+^IHQGmsgazB;ouxn@sEtXwP(o8+5zQqEqT{YXp+H%Goe)HpdS68kz1UMLEHwru z|G&?6Tim-~iYA2_?Z{4v8=3ae_2*|Y8?9cqPfBxKMm1lJ!(n{C6f0O)~SAF)q>KUVN z*C-N~aSgxhQda6gHd}+Sd?d!jlYI?4aZdZb8vx;uZ9kYs%!2dj4l*%QWlBSuepwp( zaFD8#7E63c+S4FRSW`$ms}-IA-+hS^IYOEuq?=iuaat|8l3h}Pl+^0!;IX`kE&*#@ zs{{LJ1~@txdEbu)(HG-2$>ul>ITh82r?Xl_{pPCao!%m&n zO#Kb1w+pFk@{Ox~tay#TCto@d(})Utc>Hcd``k3!se+upWb4a#&-IfHjLMN~Yr<{| zX^yd+ws2E=!PqbP+qrRpLUm?0!hKGAA{pbU$}K$GBcE+1e>H}v0ijO<`4I<}?VYk*3<7k){z;rGt_xkA>bVlY_T^-RdH z3rWVXB?Ip4cL5#0Rsr~8NX0?eGB#|=m#*X`bVt+GRaxR5_r+X?*q;U{;yiS0v5#SskC4lkJ8zrf7%fFyOx=)J7${DgR~ z=F5r}q;>h*Pml2^F<%%sRIAd5GU6^NzDgj}f|^i_y3j}OJvFLWsAc7WC376w+%x~x zqBA8_f6OM#!q#T7=zhr3R)tLZ{Z<*MNk6xHsBhSMT4SHp!cegKudWqys*qF^-fmn1 za~|Mv3dd~SnMpg5^D+uE|VTO zs-qZs)!C!yeVS!V1k|P5{n4mZF|suMhIW1-e>|Qmr6X|u6^bmF`)X=D3%M<$VbjP+ zsFm{c@>%QVv@M*RWpf09$K4^prrDpgKdlQ8i>*IOi`}c_8a}1OwW;}kv7)pxt?bPF zWjIw4y+YKqUpkvKJFLC&@?gNK$b?lr;sYq-+O$_IY$_Tl1jIY)TAt)N8h=T*LH3C2 ze}sKkk-t~KJ@-*2%L7N}3(9$^142Y$UTL6yub2#(GDQ7stEZi<(c+UPFe-A;4!r5#VaCmq6ORXHYADb&qOoGl8rJ0C! zg5&gBtoh0d%!aOsG)4fYl7dq?ATGAqN0E`*6@*^mR3ZYO?J^!34m<4vS2r9~jZJZQ z-4!;`%F*Th1Ps)V*?P-AlEmxpHqHn6$IZJVpsa@-&X7*iYrQ04}3P}P~l+{RC5_LJ8Drmxm<(e-X>?l<+nP$n~p zbx1sXu#=1ITrNA2GVw#=Qg0V}i|HMNxWY*>Y??HLD}tGKVhGN2)SfQ;#YtQB+N}w-kX>2R;BnwN+ zodVZ9*Rf`_BUdOmh5l9r0n)LtZ1{1Xv zzjon?QI{^8t6*M4@9W9|ZjJTwW%UCKLX^o=zRUfT=7_0+rBOG3QCrUkuBj+6_Fi&v z-H9xJ`zL#vpIqldihImc|wCKIs+=RkvEX33zdL8beG;8b6v}H!__XELm$i&eVM9!e;wE*g96oD@E^UN z&ta%8n`bg>%RhJXSQD<9Qb>K#9IOT3P949ZclBLe+GwspQl~b5D!ChSyg9c`M>iDk zjB}qufF%+ZCXDpNGJ>U7_tk7TJ|oy=#IiwHH?#{jbyP?(CZ(IyzO5RYNhg=#wQGk$ zZF+BohUoRfC%ukyfB%twuqUa3#$>GD!@bxgkZ?n-4rC^S3dnwj5arUe!T;_#~F zWmt!Rc-VW69Wgi!0e58`pNrsZh}4P)D_fztgYpD8 z!lX8j0iKol7VD6cc#!^p=*yQfHO6~ZVIi#9}UasmL86Zz18cZp#OWZIN zX_1}yv?@0_M-#*ydz<{Z36)5>blB0!!yc{OE2+%uaUxs>4=lQF)r%u#dX$88@s)%O ztlE#Sr9?!STHt&KX6Y9-K3)hc*kF`7Bz@4kKDJr*?}9~Y zlYicF5|o3clR>gcicIE*)?3BY)eBxSMUSud$-?Z5f8mMNC#aq{DV7!rT|H+9_B3=Z z6IR7F!Sf~VTeU0N#f9LO<@ruib%ZozKGYXpGDP#dQ^uh{)ctY8z3l`gRbwG=i0)SQ zJy4XAQGAGJ>?g*OqCLcylKwBY5C8`ul$l2nSjwc5WPc3>eYK*zn64*TbXWkX6tSFPWX-A>e|F{-^_0GKr-Dh8Y47YCbEu` z?`8-;tE;|vKi}3jHfi+KN9!W^&CHWoe~k7MNwl3s%1gY#4vu~y)O%=%Vo9IH%L>8;zf%7vg``!^i|=|3f6-3e zbMDQwLf6o-XJQ_VXjRJDr!hN&eO(0q1+yc0OGy39#?$mIyZcAP3QlMDWm1RBq?N0$ z&hRGQM)ut_Y@O~tL@z5kvzd>0_Z`Q`sympN_n!97cqm3lyV{{wt6 zwYFFL2^dVia_9Z^9y)REu#Jlze~-Yd;B*O1ZL%2E6PJY!Fao3rk1bv7^i956DiKoB2uU};PfA;j=i6LqR z;dMQFWb+(;oi)6Mslp~q?@5Hu+YW|i*QC^x%ZwENvA7ppN8n8ML4QGa>W8@WEe~56 zOo40vQ8U!Gq=WsLU@?n{V8EINin(*SU)RcZ_hswk+3^&rhQo&ge36@5?wIIb#su$_ z3L#ej34%^2h(~m#v9#z^f15uIN(%;mnr)7AY0VTlzriZ+VRK2x;{>7fs7RL>d?wv? zH62W7kPp<_gm8<*v+obgcZZUsOnPgv_`oJpR4UnFRPXI&M$kbT=OMC*raImg>)Nal zP1E{PuE{-iw%0RW(3`>3epzqjy9n&S>j&3&z88SN^@1utCd8Oqe-7KPOY779#g2E% zkmWx4q;GJZi~4NYR9Zd(@kreQF<^T8#>)Sh zS*I(OwOAr;G%tPrGEKL0!d?bwTbq%hdUEB1cvl!7Kf%Fwe@xX^aFr@y6PpF`v$#T# zgZRKxBt(gqf!XOrwzvQK!ExuC-;*VmIsDk~t4}E5_goIB%wJ5kRg-BDj8`l1#85Z>y>Zh9|x!fI6 zc9&XZTonzJe{hl|>`IyBH`cMD(>?xluyKmp zyuml04dD8Tnuye_SMtxFpWk~=7705<3}E%C3wi`_kH@8Q1O>CPlT;^RUh@T9_ZcpWMMM6`PXkR+UE*xwX;UnWv0G8I_{ z40+s0n!XUSToEddaF<#bqMR&|H91Mey<^}T%9VdR&A@k1TlMe4anq^(0n@@qwRx7^ zS+C<~f0g+F$!6R3L2EB}LX77FtsHqV1)6zDgm#UbVyEP##LVdR1Yrli3ipY?g4h|> zp4=P4JLS)vD~vU~*{kb{;jMgKg2{D&0?157rv`NQ0Xc|Ptp+t+qina&?1Cs z$~B2%ObCNtSKT3KAVe!c1M5AyW^T_}TBfw&e;XE@PF`O%HrVuIu*7`y(%m|v10hwj zydo(+$Jh6V28j#2SDpL7E{UK`m>RUVe9QODJ*cMl1Tn}r`;CiQlF=J;x?Y>ua{&YP zj79aAN8iPu^R`%q3FOFPLGX>jTJaE-Xlxkg`+#TF!i+~(s>*Xyw1{C0`x)+aV+)eP ze;-xL7-44b?E4W4Gg=&Nk?4L1#KTKNigUzl5m$IAPJ}}2mOkzPG%r0Iy@CV0^Lu1w z>y*(V3c3AEN@uNGin;_@&SK`yl@XYGKH?j3#Q4wbiqA`*9eTtj>*bbf1D91mo8dqLN9Q*%evt4uWGBYu^I3w&*_Rm zby~}-ysDj_xj#Y${958SqPZnouYo&}YhD&oX5$LE5A6I79$lJ6+&$Nm@!fP^<)CF{ zTi38ey%!c{iL#cO6cFVKQ+~fsg%J^zuobL}E=S~0(XHW8$Xggfj^&WdBWNrse~hQk z5a#aMu=)GryuPIa(=LDozpDgW0qEi1mG9 zYDDymd0|3Afuj?vir_?JTYZqOR%{SeR5os2Cv89|d^4LA6-?)XnT%KQ$L^-jE~J_6 z2Eo?B$Z@rAem}{teoy0XcCM2_fB0bLkLHJjwy<0d38Si>HXg&??8-Vs0_PiYj)Bg>p(-MG<%MwgoTh^6aJb#(f(VxB^6b^U3>yy112Cd(sG%%fgL3WKPQ? zbHU9F(7VbsP3oOUT1{xV0Hh;C%P|Qd62oamctRiX2Lw@`FQo(nsZesse^X*D7#-K! z#+9$e%rJo$YxrY!sJMB4ZYc5=Gk7auUEi>I;XY3a1vI! zNRrC14T7q$&C)rcXuZ=6spbTK;eGt1DAJD-7H4_qr}eWVleh1ue|5to;YF%!30O20 z(CJ$#Mk#Qrx8uVI_Pazif2Kfaey1L3ZLR;toLqg1R@t{FtO4YLnmokI)NFpeCS6po zCwE1m3~2Nhh>B}j0z;N+ym4<6kj}GVqixU3Az${G0Z5Ph%tpGqeTXg@-ChwAvO9N- z<~#bK%SD11j`US!JhOcysUAbyIc07h1%1+BgSiJ!S(OK(5!}1qe>Es+vgiX+TAU7b z%%KM}Yl+d_ZNCgF=>_wWSPe|skt^?l{$}wy2NiO8nO^rIB4ZA^2DZw8W53NE~2|!Mh6^jYfqqGwr6|p z@gLR@>-fC0dK!VPe^ISH6?^1!%Qoka^}tqE&!2lI55f7k8k5sGD2Gr-cMC<4t>*dc z)N{F}!tH8r7Mx55v+ujaD+aZyuJTbeke4B! zksu$*zm;40#IhVF-{GTA&oo7we8Uy5DGX1v+(a)AYeydz>H5$vg8tEgil7-2(|a$i z;fUzbS_^5YG|WyH;&6jF5QvsWEjnIYSEHk?q28ixi4*S_Ce%%PBB_W}JEnQeB)Ptl zs7QgAYO9h}f5#eRfZC!DH?a|YtQK%92FGi4b?0j;(ZGXft<086O!g?DHzI7M5m-k& zT{2GWt`uJ%B2+S;X;T>bLY;_SY|)K4AGgaFMOA)eU^gt|h2f4g(tFCzx9+S>Oj<>$ zF4VGec_~;%?zL!8gdjUb!`VQe$1v68V0mL)zD0GSe_7^5{iMhLW}?NTzKs-pg_iFb zs!Od2X2rs-?7rdZ3ANI`^A>rd#px||q}(^*`r1-_XPkCf_J+#;G@ux{QUcq9I%$`c zfe}o@3c#G~_TL~Px>HE5-ii4xEHLWX^~5a-D-bU?bK+ZaPx#@=jyYx{=+)P=_6xbt zavUSse|3@x7($iD513;;M@DoQ>qWnE=k=NEX=jH67B7|8r43tgTl%? zunBJClTkX%8mk<4J35_m{aaBTO<^q5rYUTu=`xa#MXy7hI0UE4Y9BR6)kiq?nX(U4 z_oXKV7c2$yiFIN^a?KZgmJe5UWEe9BZH1x2d59!YS74OB!XO zwsQf`$Yzf;t)SMSr*6662pk>8=FkK=?=M-_BZ*!G?p>S`HXU|J#k5!%GV!(tF?VgW zj~EWYl(a+gazRwz^j)mil4s9u2x8&Te^KdeeS^CQ?F3L#!xbQZ=-0`Smaf5P8~j3g zqgD#rXfBcB?iBg~t0^3oIr;83U~ySBG&XEb`R%=f&)zrMAJvqWcYPLQRu&!}_QSmDG<4a+m_|@`J=ZesB;(*3mVV7@6SEQ4FBZ(_vKj zlUiInrsb3Q823&qK(7#8#ACF?SSM6dNpo0$D~79aqH)QVABxY2OAJ1MGnkYlxZ;Ol zhyWTUgT0=b;6k|_L-Mq*jY8&xX-ZO%KH7_XKe;1b4-V!Nvs-!`!hLkl>VKFH)<} zlA@H^FOvj_F(%leAth5K@P(X(y7YXAiCyZ~tB=k`urDB(itdEWutWf7BL|ugw%Ryz zA`*B{DZuFQ4QUUDE867Xf40ibc4x!;8Q=s-tr{_7V9>ufe#~MGv*qZT3_x2`Dtb{N z9am`>ei>P)EPp43EoW3pB9NhKsu8Nd;p=O)J%=|kLbQrbzai&^+NzOj688Nm23Gem zFG!!cZLg*StS^M@_C-DPm{{W@a>;Y8rQiSe{A14fmR9KY5tlY zw$rnFqy}@DevxGvtoRQ#mNw#@Od&rKt7vcu8`UtR^C}dQI|wPxenpZgE?ZRBXen0{ zO~kooHlT2tpy_+*rD86HXcPUe2=%I6Czc*5kZKo%p} z+D7tn!LP`h*KjL4f1go~W9_KK$aTV{4R;xRwtK32$X(@e5sKZXx~b0wXH*2+n(c+1 z^RIFhJ6m($-dE*=2YF!tAGY%xiuh;Br92guW82z3(`LB`xLMr$V|f8t~JeBLi0rA&%j${#Lt zKc#lFA&yzeWzqO*=Oa1zrbRjZ-Khnl552yo^fB3K$^WG~(RnWY4M45}AiVuJLzLXtDML z$eF9;GGLt_f18UJ%-=fFeyEQ8-NjEToe;oC_6fxgM{BqqFFmAok4bP|) zn!v9$ZiqWUSK;2@KJC$hAw3X&k{n=z7UFy9`dCT}f%?mXBuhd=s8DVv8RgixbHZUCWq56D&NdbCJlI5c(5RWPH`zZ2Wk6Kze8N8Y|l1lQ62+`>6 zMcHbK^#SyhYC4PF`;XWT9P7m+r;SsL2JV{f81hjK6gq%qV>lfVq7M2)>(G4IQe4gjv|dA{}5?;$}n1A`#k#~c8dwydx=zIT5YwmnW9aRPfHxc ze~L^_6EK(%sa6BOaPjW7G9>EF(b$DljW!6SzwFGVrB*I8R zE~HVS{>)cx6GD3jxna8~4vZ3=nbg%~q@`JB=pTF@B-;D1%2nn1qa7NV9e)rz?$(Q} zNqaFp=PDisYW_ZJPSSbVyq9a3K{b~eeowFld-@{F)LtTva6=nC0R48~IPF-2hAJQv8%#TRXY^gL@ zD;OE%m}3I>sGko5l!h-)5FE#@dwbV81I9;Wlmhu3_em4W{1%R<;2xU@44iRye~DN_ zWwVxWrVgFv4ERFnu}7KWwhVl??zkp(z1Ugq&?bbxNY?E29ZxifSA zLQ;tQw3r=>IJw`tlP;dEoZdwrkie({<#YYrl5YA^M>E?HVn4qG?VanHd0^Vrl5Vo2 z=c`GgjP4M*7h0M{M5@v&FMAE+S3`qP)i3DDF_h2qA40R^@xsH}bCgx)e~wfFzR=R< z&{n$laz9}j0Wte<5R?4RR1$|gM2M+3{orly?(58+J@QuC=-aHVd8GnYpa=OevE$BP z?});Hu^mkO9T^OgaVLu}FO3%2uo{L>$MED|jD~2s?6$X|?)6xndw95|L*6tQW8U2x z!Z1;Bi;=1eP1AA7DORg%fA$T3mujUX3<>VZ0AKGD#!2rB-NTqMJp;e7xc`lG~(c5VDJbY1>Ji-p-YYTG`7#R zbYmRTHbkU?Y@IpOeJz`k3HNUcSAw*Tna8zy@Rd`GMwHS|=F&iVy*eXrlN0HFa4g0r@p zjUm)?YnBnXBvkmliYym`tum793G@eB>+#`#uPK6i+CwHsbvgRT?aSL_@1Xm}3h zq>>%u%fbt+w))ybJa*@REt}ZM-cbpCr|f__I0oV_$#eaSe+P_PoQoqibB(w}A&mzC zTLE$$XO*FDeP^Kpiu-x-nhpKI7HUwO+ay+Q{^CSGL+*h&gAGI@BX>fPaB4rg z6w~cb{KD%7f0R1dm)6U9A53N))j2}832ppS>E(kgtX5~kYMtr@#GD#M>|a;I@L}Di z5j+_F=?ov zd1ZTsKCz`N`%|4X$2q$}+?z;Z_JoCQsFiuTCR9@Lv9Z?lr>skiM>t{e?Q|C9V!=rAGtH3=0Htk4kQf!7)pLK3+a|LE3pL|PuY!*(yEdpp}29!3s?I* zRBpx+w^}qzK2uQt%0m|6Zze&92(d%|>+Xr&Xuct8LV1Ve_1wA>Pu~=mkOktfSx5C& zy0Ud{x|9dJcXI#qJ~`6!$9sxoWeK%Ur4C;ze~%nkq{R{WJxx~NJC46(JZV4p{^&w= zQD?YWL}1+)XQhF~pF1_G9GVc{c%YruB zf5;r_aJm@bPbYMziXPpC?SZEXod)_X`*qDKA#!?1CYYAgAi~7N?cOhP*e^T&ah>`W z=J*B4hPUKsEPk-pF>Gc>|B&uLACK8b7s!KlkW7bND+Z)-{)+J?5)()HY5M7aU-I6A zYf!k;%?J}M6QVYS4M3o~AA@ym(f-yYfBY@fee=54GWv2p(HdHttv+bnZPr5@`WQ^f z{A9X!w7bkh05i=v#+%7Vt5Xx{0;%F3MxC1f}pqr=ZXa8S_1qyQVZYxlzlk)ioS0tafl7r$^KpBz@<2)I~fZf0?UL zN$!sOsyDXOacM#+U)=j1TU8trvk*>8F}=>=$M~J^kI7M~#;O}&ubz*29kpp+lg{wv zhZTP4pj|yRX_dHCc*7Hl)936PI&yd@u1iKRQ{CWW(>zU*oP_q8pcffcH*3A}Nyn~_ z4n=r#-BiPc!zm;_o22$o+oZ7Me~)HpYVAa7bO2nz=fUChY}L<1cPb4I_AP9(UMR5b zURpg+SD_~F!_`LS1S`%Gl4>)?#n`Dh!d3_J!|BN$>S{}P;xd`6IyAPmT=Btr#)B)b z_|@C+iNu`_D8=x~h&b|NkUm6(=Mk+3B#PM{Z>rqCb0ocG+g`yF%vUzve{p2S)qG}~ zu0(z9?q5Vu>anXQ78Imt5`P#PixO-4l4;C^_%x=Q-vp8Erw55WI4&*Gn29X`EI;Kb zApPWhDx@z-CC^HH)5s0MaG-eB%{9R}#-uos`L&E#JYe~b{YSz*BzXW7PrpXF@zwB` zc7tz~w*zo;+<^#H-c`E9f1HKYfHv++MG2rqh>89b1%&MN_%#5`3a3ddk{1`aww5*N za9$k>7|Hc^zR1cG$){l)t(B5jU1&0_d2}P9H-`{}_uW0kP^`MCMNijFw)WzaGlL{9 zdx6HRxSxcPsNwcT(-*ng% zNP-^tMwb|n7%IC+T-up1h4-1>qNv`D#2+nGIEUJ-GfT~wjqO{qo1Ov3J$+2Vss9;C z|CO!|1y$f(uEWZ#p!Eat2Zgp|DYP9O{82|HgC9@%Md~KPh=ho@0fxX5vqhXS8c2!w zdSMSJOlH*f9QNBTf4S&TBLkY0tLZ6TXKX%$_G=}i<)Iw!&K4ynW^YkTIi{)(Yh z>GQ6k;6XdXtkqc-8QW`}eK@*dZ&Bh!bk|3KmKdcGzk#^cnUAkYT z9FP@47Mcdk^7Fr_mh`QwEk36x3MS~hpb-^8>7JOY-hNsme~mU)P21+6W!jxc_89Xh zRosyJPMa0owX>R+Ak|tRM1*^`tUh8iHfd=2lgmFDN(D&&3NK zfi?$LvyWN9e3rg*XgwZ>6{q#}jY5guqSj{b1FQL3k+c}OTfZx}7=)+_V}%NF`q??h z!#HYWDA^}ue-4c)WHx?eS^ECkn&Ykgi8j)7#KIgO4Q7njZ#0kX6v5LoVNYl%-2snj z_-or@KV&xrJ9a59)+wjZ%*BSGDx~#Ou**1M5Cxppz%}_ZIr8jTKqbx7rO#vem1%7M z%!n6cV#((Z^=Ki;kiI^O;e1!-)zCGn$5O<}YHs)fe=<){9300T(y*aHf+s7`@$9q% z2c`NGhiJbjCvIEHX^J0Anv&d*>ggKJ0L1Yt(UFg|gQA;<<}@S4x56_}yYzXu53gPM zWoNJ=2@)G2)KcZ|vQqr~W8vyZMvae!Kgp*X7OS~R=542z*Ys`c?iiAUYkskBemwT` zx^bEvf7&!Ygl{*itgDA0fgm8TONHG`&Q7@3MP!IRV{+5)F6B`ETbc^8!Gu-LY ze-LoAj>aEsG#X4%0G>S;t6?y(m_{5a@&?+gYXo9fh9Z?GS#Y(pTO9Pn(>ln4TKU&F zP@dZPucVzIbk046R~(xYVuam?ZNM+bv8j}hf7v>)WoPN9VY{LP65gX+Ai4!UVH5GX zHh=H{=3zV-J|{?DdNYmhP<971rH-j@e|PB{G}|qcIq#*MBg%oRw0(0|JtxMHEF>O*EBcO zIA5$22R}&?ioWAJyn(jFV{6e@oFrQa%Vdsb!BXv`OedYbB{g=geoKh(<#g;Ke+v3t z|9}EU%BJgp zzchD>WAQG0t(?J9(|0j;qKi!_~WW)Q_|B&q5or*VA-^CyjjiDLe4~KPv_F)yDN#K%nbue#$7a?f5fS_qx>m=X9+J3 zhZf0t#w?(|WGzOWA->IkK3pP75sYH42e@?Rf0iO@L0bMi0DclU2A8tzsJg9#oBwmo z92h=|FmoMo(WhMTQz0pHti!JWZ>$tiZ`)9Df`%1KiZ_;)mQ*M(mKf1y%=1-y+4yv(~bm}<$V~b_U4wM}_Kh-a1k?EwF9n*1K zPGwZ4D?V@yc(>_|qX z4XdFgbe@Ipe-o9nF3Y>yeRe5S+75q`?7ST+C}WOOcbb2+CQZY$$W#^62Vny14y(@i zDq=Im;0kvkjg7Q~nraMFrQbtXO$vY(59#*A7o{?%cufp=`QQfl1&fwVuc}57#W35t zmF*IjEGKdnScuh)L~n~I?E0>o5It|I>GOwd!+BCde``3D;Yfw0F-_zf1pU|>ZcB*U zi}SpjTn*=Iu@CO_DoNbvw|K$5>ptBUlFc*Ji*=vwba`?~qUU)gu~so0FYOA?@2 z-r9?%L(@KOg@4B#w_gboHd*0JW)3KOx;?c|Lz7QeJRWiRp4*k4WyX^`yxw761tgY{ zA!cBjCm@I!ue#V9u7?EU!<*zgxdje)ZW-iK}1 z!R>As$bWLolP0>saz4mNWAzQKsp>&(%Epl4*=}@R#BFu6+X(r^!dww&N0u26*+6Im z#TGdVM(kWFb9!5z{;lW6Ec_ZW_wgV7dqq;(j_bkP;N29kI)*!$l~WIf5@V+}R&nRP z;aGE46x?cE@}Y-xZNN#6s2dU0!HdDE9agS0GJp55!#KKV2imF6nX7b79X9+SE=k|+ zThs*H+tn5&962sS!4xs!B7!HI@@O_7&Tlj_+w@y*+Rd;K`eb~PbafDoTYv$d6lW8T znf;X@t{+7cL&w@EqX!$_P#*7X1>X86#|v%5Jm}w81te{-^Cpc1Upl-{F}@3jrKgWw zKYxUqaOgmum@DZZFUx2sZEH7$$y7h4s8-KsoZMzGl5clTeBU1OK#<)#UoL1}%OCJ5 zxHyszxpq&jE|Xj$u72RQM3z|7gKKfTT^jvbw-qSd4r{sX=zqVJ6mGX``Os&^C6TW> zZ)xSS6KS3ZbZl5s|7gBtD8(Ls9T4j9{eNXnGYjIa`MasQ^kuQT@O+A-&x`0z*xmV9 z(VT{}y<~~Tx}%0Cr+&9Tx{&l*X3hQT)o9cBLZ9J0%Y8;IYq5WzE`(dxs!!Js208PG zCGT{T{uwkd6U?@J(x~7a6os_fCW#Oe2EXj1%CFq?8EL+6kI3tQ^2$Y)$>2wia^oR#qUmkqZQ{@N z9GYV{c(~@F{0j2{@=rhkG~vPrHKOUV3MC5YzF2lc$8Ab}j`bl@Tx~3hHf(2HHnr|? z24fj9t@d~3b#jo+6O5l1mAT$oihrCI1*~K9dT&$oJz+wH-sC}L1CeEF8}9a|)j0Kx zx%8B(^}>mk&cT+)3k7O8P-x%wFp}Vrzf49%Oj}UQPb~cKtVWIlgKuN~E}-6y^r5%{ zK{V(BCyf6buimiT0|4DHO8$ful+DSqEBcf(Bm+MGouNa|;YzyC>&7b=c7M#j$BeT4 zLI7gPl)SkFxe&}?($aSVJ|r3?YJ*PeX^=eA$U7&Oug-L-+^@iW*sNPn)uaIoEpaus zaBcS!Ig3gC=UmjqZh=o=DM!MV+6UfW-@z{zx*LDx$DC%K;1CzCxQ;{*P6VRqFUMau z_IMEk-l52U5t+t zum=X{`7-j%96u5^C4Xc!s$>OxHfEs-)pBjSInp%;B)lR%CO;sGj7mwDz!zpqZXl!H zPqJd|QerTr$0L%yG0>u?YK2cjco~Y;A;|5h-J>h>QY&r19o4NTM&VsA!$D~(g6)_R zr{%wg?XdoylL7_nSo)(%c6EVg6C*!^;O_K%7XOyo65)M7D1Yt-U=WXl7R`ihu?4FW zx6KgBBUG5HmYVX=IL#m@fb%^8qQ)Fiwg^VY3b}ZeB)Z6IuyYRV4{)e36}S9*$oH*o zRRxbFH5zP_dG`QtIRTTo@xfQ)C9Uo6*&Db1=FGyua;TazrMIw3WG0oGN79Qg44uzW z@-SD(u>6#wJ%6W>tF?%}bwX0&m;3b;r?%)>7VAaKbo`UC zlXK5k+a~J;Y_L^M({R4zgzTPXm8L>!(LB7y#ikrJ&!!A|l*kWoiW(yg9IrJh9 zAHop{x&c4^6*XrPAJxHwFZid{rDU%gWLq4)zqmIIR2No?6kC7JH1bEdeN2J+m$dhe zO7EB5tA8k)?_yJXG(~CQaD9vwxSN+<}y0se5Aijxckbau45kh#>g; z0Kpeamg7eoe5s`$86y_N%6G3r8uwoZ60~Ias}V%%1y5pzr5h8kU3W9*L~);81H~qv!|c3f3BaGPV2(+ zqJMq=SQTF$&l{09_mnsm*%RLIE1bs)W5zp(dtUd!s9hicR@w_LYNjad?PbP+0rvj{ zR~M-0N7E2q2+Eayf>yEn;e{NFOyA6V8I93dqNHSy0~XfSK-%(iQwl-%K>Qb=j>ax_ zOV3yU%C9OI`@Eh4u67Hb`sVJ_MCY=A%6|#hsO)P|-&{iC)zHD53?)b*D3JOVGPOX8 zm6&200JfvZo$gGM-LsgvQ*(~-mi;$$Ln~w2!LV~gE9V5*jAeT$YrN}rAv5e&?L_|k z)v5rbF;8@gQ?yZ<5KjOAM+D0}%a2iOJ9B)?8E%UU$u6_9 znyMCn$>9bZgrX5Bh~~Y>vggnQlU*}^l27HGASgdR4E>N1Wk3UP;^LwP|4(%`gfV8p zJ3$$cg{foxpTLXB%32$3tN6$xpnp5wrI3XaAqr2>c?gBkf1tH%PBgnr^mO%D$CD62 z_Gd-=$HQww`MEC0ca@Qrk?yX^WtL_=O$WsxY0nV(K7Fl-1{} zTB;M63om^N#7Ex(hM`jRbrDc^u~ z%;6oHn$Il>HWb^6OCbaK?q%I5?AW@J9Ls8$h)^KXGZf7GG}!+67-xtxM;MaDu0%r` ze8P8;7j39gi)Gkj^CLI9vZt7Tlj;A$NNT;9d5inz%dJ3xCcfkk9m7~N9 zcrbyg7xD6#6jA*A?-yaF;Eu0R7&VNy5QBYO&CXv$fq1Ye${WM(Uoi}lG9bAB&UpypS6PnYzgZyfT<9~4 zAVNfzir+DC#6gz1)h1Jn2zY>_B=LQ?uU65`DWm;PyVjS;H#Y*9 znfG(7d)hC8GxpaWBew!rAJNE%A|#c<{kRL;x(S#TR3Pg!zxXX68KT+YO!WTm9aQ=~ z?(jgul*?wr24-*#Vc^o8SPxE^b=ITP?%H;v5)~ZIZ*j7BS${$h2WZ|T;jSi{bHKY;^q@5{k~j+I-!5H2{w61h{y;_h zxJ5Y%;+C3|Yq$(fK|RyMLSlq$}De2o$cda|pa(>5)K!lDXJulWH&krsZiL730(wttFhW_a;lx z!uH}SxATvrTZjp?(bzFAE794wJ!31FE5?O}RbSdt)tV0nfUrV~K3NIU%D-=Dck6cHx-Pg5RbO_RlG46tHW}5W{ z%|wQirXZux%;~--S;ufqgI1u6M3U(2Y5NOCn0&iWXmYr0e5pwvpjpE?!J0!NuAXe1 zT|Hn#X@9lLzw`^&Fm#*^vOBk}f`X0JC;Hv!HD}sJ1_~iZ6$f5PQdht`n_JmdH{knHYy3 ziJ+RtqiDe7*LJ0G&>3MvObDYXUTGieY%sa|uzzxzPm&lw7{D96VF5z9l0qMT9b8pQ ze?w`W8IE~KiAs!Pl^D#tzpNQpY8=p@hP;?hzCkaTK#y$0+_+j1xyJ2I-cUfWcd6_RQ|U}GnoSUABWupY-Ky}R~Qm~?rDZ0PC#D7=OYk#(fv z4YVlq+zlIghElT%!x#WMo+7y%!d;m5tbYtD4p{P3GkW#lXK zdH|7Q6Wl+ne~p&oH5KQ6FU51LU$1*bcesldj5%OE?CWYls&#pbVBk#OBSfdJcnDy&7_QAT9rf~A9&H~rAn+EAi;V=`81(n}W zs^O9i?Ybc0Qnc61*K72-PYZP2N$-v}T!W)sQ!Vy-WxW zTF^S+sBAB^!Ht}O;N#M-b=C%twM6AsEvH>waE0R;R58636onPnYuzQCy6Kz#q>hgl z_Rfhkx}CKnSV8=AH8c}w6`YwJpazd`)JX>5)K?61z`i0skgwmc3rNZoG=D6~3^>KH zwcFyW`Dd>N|CIX1SK?&nEfs-h#=20O z?U=HSLDz!D78i?|IjZo-`4(B3eZaV%!mdCWmw@PHoHKGmC%?~?X7{W544%uk&W%yr z+DyjOpG7nDvp)aScDlABZhv%-9Mk9FASCeCQGLI zx{R+t=ki!rW8ZBt?c3ZtV4f3&mY{O|T2#fMxR)ebw((aXD#hwJHh+0@_Pff}>bp(& zinxyxs#|f96+~k(Adt*1d!^0?yhUsgwh7SJb6GPhH2Y;7 z$%m7eJ8kOxeqrY?=B4V`3DXnc(Z+I(>Kogm<7-=NZrHMvZ^ZnW^Hdi28Qm ztS3z!t#HO*@d`!pXi!E9vq{2-vhn*CLV)=G`u4H=_O$)s4+stE^8HRyr|UHC21AK4A>|wlE+3ANQ9pzNC4xq*MxV8-C2$M@4y_DKn{;r0K?R=-|Mq0c{9}B9y ze_eotPbzPeN)Tc=M~x%oigfbFgUfk%&)>)|S)l!Et&Ma?{C0MpH<@t0Ce|cr=GJ2U z9(a1bcVbRqi+`I&nyUh}RL55V29B-9;@N&L0`K?cMyeUlH+t|*#HC>Rsz$6NJ;(b$ zB86lQd@kZ>5wHy(nG(UYA?GQl&WAuj2OXjJUyhrFN8T$$8K#!Ol8~bGq4GdS2MkTy zu$T7;?88XtBe|a!8diT|F6!X8sUDNnWazT*eu zh)gByaW1hTgo|DkDX|>d%f(Z?*B=scO}#8GEM?G>~yhhZFp5e_- z_c&Qw+ke4KJrlcWWi`HKTN364-vhw?VdX)1qUZsNX8e;9^UdO@>&%a0ho|2c!s%Zr zkA=wr86-3rN=l!3S6LVaXyw8eeL=_sOWb?L10HM5m6K^BY&5YbUrVO_WSipbFL6Mc zxem8^97j+iml`=1e|qukR3ygMh}mb=uMsuOv(D1arC5`b$hW&PC_;r|O0^)$a;Glvx(NwU!~^${d!f9*6^v>*#?FGcgcT;AK?; z?SIIkt)z>n66T&kOM1|&(QpTE>pmO`B`(~^Y&A((rB;3=lWCN}i{q&Ou@MJfY-4Xlh4gy1^JZIMW4}WzZnrvFET3F4CjxQ}8{d+XZ}^QCu^m zceJz+P)Nre?M4C(Gzx@}^eRu0?zAgxuPnHdQd>WrZMN+u5)0W)9K*nrmW`R*07G?t zySeiC@=)h*wx%qzo4P*a_KHu^QzJ(GH0KA^9%X+4{>o8!-@P(kE{QY>-QxDhIe$Xk zY6)A3(0>4PVG<}uK6rQ4>HK$k01#IaChpl)RlH3U6vm`x$zgXOcj7?4T)+IqH{4TNcj1O=SLE?0Cj zQO``!8h>03+Q{4zkGg7qhc3p0clthVomr|~2_8MY1ZB*(wEIzV?}3=`ktA2YO_1UaYQlivBIgf__&|xIQ%M3ZDwXMO2l;Ky$=`2!;}6FnW@lDDk*m9x?6)| zD(o`_o|w0Ecc4}?tOH~kzPjuQ>xZV8i%y(}d78++#p{fiP+2x^P_{*PtU&Pg6Dl}dnNQ22&Y1u+{|!!0 zaQ>;-n?#x|S*I*urg}TO6U~D_$Jy>2l)AR6oyoqD(egTby}TeYYk71 zis=uK62`YX7E?q*30%RhV*IkmTZw7J)7+*=JzoUjoPLGDyXL5$bIUfB5AEgGHxb=Ox~)vXj$qB9 zz8ET#y*G2FM@+3$t?VN}f25a$TR|m&C?mCykVP7vR(~DzUv0Iu48ql|-M0Akmc=Bq zCzhJgR4hO6Y>okS?)gTB?iBSL(;WoCc?)4YMZBd0h8W?dM|9jRsfa)>7TyiiPcUi+ zi0h6&g6x)Ca0%KKJ}CRfeWkL#sj_ub`H4gjX#z;|X^O2(5@~8WrqD-CY7X3BzI_@w zGZ$-ZFMpr4UX6en@Elv@{9PtxQ_EcrIl5P6;#@;eSKJr4!T|e`ktFYPUaZMvTX*t4DqN zfVC3_N56$YAaNA4SWZU~V<}6!da$X8khoruadiQ+2W=aU`A8YJ2m)~Gg z?_@Q+Q~C`Fr+vJN#p+{u%H2Buu&h16+ckFRjfmYEoA>Hobn)(`v?7Wu5M2E>LEkdR_LN%Z*0HFeR}9eUnK2Gs8X*?<1c zTzSFUaNzI9KI1sKi(Rex2Cw@XyR+!~x{|i?Q;d;5b?hamJti`tS0*i!p`?~+OjT5Z zb7hjH@PDVGVqy=l7=v4pAIGRo>NT(>h{2_`i{{BtY0_JNR7ud=?$BXiDP~mOzRm0#D9{ zX|;ED;@r$WAZ^3fj;x$Cb$==H1+@{N7WMKhSHG3jRcL_geB2*_qwi)%P z6w^Fvp1P^FMTaTO=qVQv`I-{*tnAq&`_$x+pQFLdzyGEuNy7A2&5Qj)IF^US{v^#5 zNnqGG2!G|#SO+X*3F3(W2?M)ZnI2W+Im^oG0VZ_*@0fdp?b@GwpMOZcwlEP_vWZTu zgH?I>ictDq(O#;Wb3MaE2#$dG%(+0X`kS5^ zcCm^Y))b}Ay?tN7H8d8DcQgH1kl>9eblgq^bZ*UsO_m|1dxN>3x6`df9-9)lr^!7@ z=;b{5J_HHe?}+ej!GHUGOYH2+Sr@&DEhGqdEj$$K5`CzMWER zSfcU!VWnyHx^q7a8)ue=OBNBCa@J__-T?HLbG^I`)L(Mul>ZxYs=3ONOID>@7xq2A z2fp|GU=ipL+0HmD0_SCq%CRURBh0W~^TPuq3Gk$@3EcI5`#>t=m!$Rvke;nsLzYn; z4iPlqWD%$fqFa+; zgcAZXF_V!}6t`Vp0gN63GBcBrQWUrUeE|_40x~s|kx~@5CY=G{8v-&nlaW#r6EZO~ zGYT(EWo~D5Xfhx%GB!3hlI0WyF*7+fF_-ZN0w;fsw*^pK+ZHW~yOW>+8clF_cXxt2 zG!BhB1PvbC-3hM29fG?CC%C&qczxuaoO}PTdat^Q?lEo6G1r)T7nGz*s`SF9AY-5e z$j+IbnSqH1AS$n>#tmR%Vr5`rVnL#$RI_xp0sd`9qErVuI$473c>Wb2>IgJ)2HV7p zoWXx_@*q2ajEfC`nH9jy!NbhS!^8w&VPfL`Paw#V2OwtTYH13PX8_26?0`;4l%gPe z4@XOL3uo{#|M>~{U_uRG=H}+4`!gLNYzuU>G%>OR$QwCZ0Byl1ni$ytR6!<|KxdEt zD)E8O!r9rLhmq0E&5gmx)`92QacT{UgxG#tDA} z&Np&3va~TW1_%7vxe-7@SQ%ghCipi!Clg0YduJyGCrg_@C^G(020UePJ5y1Rtu4^b z*$L^7{=_UDfhORwdoccWv(|PXH#@JtftjV9so5VSOkM05KiXM3xB#Wa{tf|~kbc|D zfzAMSCMG5>R%QUu0RVJ2v0(h8yqbT9J@8NGpJp%vA1`~5J-`f10_bCD1_Xa0c{v%m z0s+pBE?sgAu%%pOf5~E0meXcOFN|B)xl<<*DTq|>;LfgYET3IyOsh7tXUx7!*7Y}GO;t6fd4T6 zKMVcOl>a|{|54@tCh`AmNW#U&=1=#BKmGq7w~?)-jmO^sV9B~TgXJ#|0xyBx|AuM+ z|5{mjpsA&c?f-hEosGb2AZ&kUZu8F=EuADR-GQb`md+*?e+uI-^T$6{%*N6Vs04Dd z{NtGdpl4=c`X3*7uS~4L&kZNA9{+R!!E5v1CyLvdfK30`FBWzVfRUr4kp~hJSVk=D z>;Nxj@FJQ5-TzcDfRVut%s`0o{f?1zjA-TjhX!mf|9JR=1@t=v+=s>QuD~O=@UXW4+Wjj6 zY_t3q1W&^HUl7dfcTXH(3O0Xe;hkrH53=a5LZSb>(5%l|Xa4h&$^e;EKWBcE3 zaIQW0bzo-$G;{uKW&Ydx*E0WO22;1UarxZ|E10N*3&O=y%5X zXDD|xQmE;@emH-&yF8-7CsJ2s1gtyW3MUTrV61G3f4C7^B6;yTYOaS5X^B^Eee!-b zh*g=|X+>I`#Q8o^a3oyUPlWi6UQKA%`^CXq-QOCz8M0G`GRMJ%3r#5x``)cj(!H*~ zbb0ji{EqT&6^AVHbLljF)W=9&|KeH7T;t3+JTf?EdLn-W8mx17^x2!+8LaGyR}z_6 zS|p$2DAqzR?G2VM4|ATY--B@OwtN-l0Kz$rT*8@wf%X5$i9=R*}pRp8Aa_%;Kd zwX$>DuERY-7*ASAR$y%qG4q)MLS<^k7(3a z$(w)aA0Dk}>>1^6=sH1Ulbr8E_gZM+PQ(j>_+VicMNCO2>@3q8up7SMPiD{Ni~;Zmytrq;)BLllf<3^Xd=%CPD)n^S-3u{1|z2KbSGt zNxFTQRNGyn+*Pki17jdJ?y;>oY);coN-lrGD`EP^foHzY34HOanrQ+ z9UhO~K=#FA$u|q&gmW94U*0rRAz<_&*)uUI!pxJD{G}+^byeG?Z5={;mrQ@X_oMhw z_M=c{Ev7DeRLO|)fAxQaJxn;k#hli02DqlCCJcWS2vFbcXDzW!eXZoi?G8B4 zn$nUC(aTL>XxHP0y_=lsqytn821E!3doJ57J=A~aJYcBZaN=%o5Jj`x>4 zFH)dPW%&eZ<$L?+WXMaT77xMEU(x!aLpNBL57MaLC}N}}wQ`(i3<-ZwgAmXUbeD1E zGOQ?H%*r#yq1^`#j#c5(;g=#Ek5^YZO5QO2;^oh>;jP~8^~;f;k`@2~L=PIskPvOZ zuhm7jUYANI>hlc0RrKz3VbK3MrGUBTaz&8gW^8yo#ofX#P+M@nhF~fq6O2;bcg}Qj zeWe*wbUs96f13@XGwy$UwYq^#3_IkqPoht`SafMf^!^5kN$pcE3XHTDB1tfZ6@M=N zBh;u{_#)y^dtv8N7((kvKj&xs`@xi#4!DWsW9pzN z<;#Y38Y#nBA`-BX#+R2q*;DpLv}QwgzuU*fbHB$s^Uk~%6Vj0$Ck>N_AZOoY z8}cd_|9V5GS8RV@mlwdNd9z~ZMliz^O&m5PZJ{>XCQ%*o)7ZIcG=b`|M}*2R#}?f% z*+fVABg}$b*{Dz^^pF?@Xdd5jVX}S@|QH8) z8R3b#8Sey#rdcAG47?W}c9M(!b_vJ^r^~2&Y+3#D{ZE6}YpJ7zlEI`SBB|kM_WJSI zkl1|BDc@DZa=i22QQ6l%L9GT2CG*?kotvWXxAU)t!>|rmiS4|)9tOyFz7!|)<03!|V4moH?V4vnDhrp{6CrWd^KG`q9+6mascVPq%l(XPAtU7i z>6_O#2vgE>5?_=MwLP7uoRf93319slapKcb#-wBpGi(_ZJQHa<{W;L-*o#MsUc=vS zkGbZiaCfV4s838>DTdMuTyC;NNoST1}f}`Z5u=r6y5D=u@C98dyU*LKRoLyPI z8WD6J+;?2={FKAucPrQUWYl zHqsrMQ;J%5&ph{owX~w!Gyb`@#4>gBr3lIF=Vp>~lQ&f7v3BhTZ<@)agT5+pa;kF%**jW@S0Eda@ zK5IJV+E|MoLSncp_Mq6}Oi~d&{hIj90So@y!+U%wxLyf<)S<5SIIketm*r^VVTwwl zB$RLKi>2Hh2s+-_eEx5ATYNzpdfR^~BRM|&_Pk0`ikwLB$e8L40fP|jnr(Yh6sm=S z>s3;*eqw8gzCX<{M-x$Ms~!P{TB5wwffFAI-udz9vnV5N!HhqevpS=1;ds~{GJAb}EDo3fx7aKppGAKSy`dn-4rz1%jnxcFS z`xu7fYZ+;XDRj2^*yg04JDpDu-Q6G03px}zGQua zpRTu^vriQ9Jn30gp3uX0e>7^3=_Dt|##2pi4Oxi&y7R6UR$iABl>+eSz7KCQG>V!E z++u0I_2LKR2*A3)Oj3PedTCy7P2dH7u4H1?Qy)j@XE7Oua8MF*Ak?hsCP+Czj+{Kn^qYKH$!CXWrJY) z6`(WUxl7G@+v1s0;bwM2%YN<=-&Nk# zUp{8bF_OG*25=%UWHfGF0AcSY+KYo?szO2tjix1ic7pNtd(a(gbCG=Ss8P!F_$U%# z&#PEm8VU&cUR;0qE*BJ(u)Xty2cIPgtP4hw8Q_()D!xz65G(SQw6=?=WW1xU_zEgN zP(Q5hJy-p;%hwl>!fVv8Ow1hV;>i>$+eb;HGUN(rXU-ezRq1+TUDi){I=St;7-l!3 z9}FMX#U-@XTB>#1IM?)Hk)YE3{72#k=K&HbO|47%)(U@4nli#mrZe|=>QV7iXVFeK zUUMTdX7)Zk9kV(c2E>hh?Wo;?QEB5Z<~T8PPHr1&QB-ALi?m0ZUZ}-_r7G}0JC_1c zzKwF^HKF?Uu-`3w6U-o3tjwvO7=V4+?CybIw+`JV3V!FvK>aPzrv5fJanRkM7MEBs zRJlT9ij{vQ7(VTTP07{~DpC0El()a)f-${B(%zIFL(;oSl}shEw+Vc+HCtj&iW_3E zP3d}KJ(WFjuq6C2j611=d0l8X-Lj_`12+}b1%~q*LlS}J$_B&INI&1g+C4caRkgM> zmKl6VF<+D^XR@Fn}xtAukxR6?=cO70^dPv-E^>Nt8t?hB{u84nGm2{NwgZ3DFAFM8m#Z=u$!qnJeFR~H*>2W8 z`R9L!pPRlt`oZbWyHHFawNOx!RD1)2PqPb&KGS&T_ZDjny%F1wOhH2hCO@XDkD?O= z(1RepUB`krLffg=y_7`~$~AS!*F^iIS*-$p0k7gh85R7Xvs*rDV$v2I;X}+DhU~|Z zg~MVf>F7RfKm@jI3v0F*5qMh`z$7K0NZEf?kXSd<5i}yt2qMSIL>YLn>SOl6nvC81 zc;gs3~m+hO+5|<|d+=&ctluo~5r&g`R)cir>st{fe49tiR9z+zGuI#k+=m~%8 zGhm))bAIl>ILW!2wMk}jOL|3Om32T;`}wdk5rtJT+N)a*In(BO_9f2dU1^9OrEwvQ z{fl|#3JIqq0wHy~^UrFX4fU`oh1`zCU%ms1`b8lrdy%uKL{P4V;bqURhEpN7=t%vc znmHCtB`?VWjyN@)Jb~OmLT1%#1<`-w4GNRp#d}JWF!a$kHxwj2MRaPp@^CES6QYW% z&+56rZ2rXi0aYl@O_zNCM1$xcG%xoI)WjuFj z)p8S|CY@CHlTvnZ)GG*x6D7kBgWeWEyk5Lj)GnV3v~=nF7Ws*5guH=7jk$kw8gyEE z?ee2_I@7gM53}47Ti4liJ!iyUyf8$BhD(_Kp!!98y@YTLsdB99lMOBCRUh2)UOIxO81!Sy*3Ea(E|Bp`fI1@FO_D^kLt% zrs=kr3|%c7LR1IvtJAxr9j(Z1+Mn5*6YDxzgmUKf+rC)^a(oEaXwj$$l6uLtez_ME}d8ow)*4t|u6haMIFby5R{N z=X-p)yCjFlnp~??IJQ18ho66Wl<_wCpZ_I;aQo+ zG;a)!1t`lk3dd0Kc?nH(^YM;#D%asbDFf-UBI>$onpF@k zY3g*7ab%^G1~FfWV&uky3dq=8SDFiZetdQH>uuE@xFLl_+L;?YeOlKNx|a(Nd*k(K z)OEcjmewCWVqAen3nzYr*1=Nm9^sTxUygc>*dDX z6J7<6s@qmIRzMcXTe#nCXDd;ieVFvhCfvOYFn`LM)Su7C9ehFTE0~QN@jj_(`EYD% zJ-9>AdCY&9JHFBqCFM7p0PQd#^WLpoQ!w9}!vkJTyklrBva~baX|{ThvgF4#*?YW zj{JD@Wv9$Gt$;P-(oQ&aj_QC8q`AljxUPSuT@cO>SROl=m~LZR-{@V6w@Ys*)BD-G z-T0!?p1aZxr}fLTwZ~nmhFjfhQso_Y+#LZSKWnAuFnq%Y4(%Osp7FZ)tnYM2*sT+v z7jk>mp-DN&2ztdVUGRca7sAE~6CDx_DI6efqmNyY(P2jvK9j>UrUadM6swR<=evKA zMm|PvPrc?hi>$$58J{bFI!BC_Pj5PGlAm0z^Xoh2YqqKgDR?~>7%gm3`>1247tCdh zB`)QRMt8+VY$mIFZD{C9)G)3t4G#_;PxY!&-9^miM~PF*u4u$MY%&hrfOQ)~@LUsh z{I8w+T;KbF7nE-~HU~e!2_L?cR#bmQ=5mx`ZDE)iHp4nntgBb-IFebsu)qIcH-Msd z4)B9ElWIPAC=AYM92o`OEtk*^=r>Eg34;MVpes-vd_8@OV*<^fjf#r&HrAfSAMJV% zSzZ%4(qM|8LZfCiui{JP2Vr)jBGZrbCKI`gAr>QdAF!IDhAHe3sk5^_?C*a>ysDBL z?4c0HV_X$cRvL@o4GaJzZ=FuJRkp9~$pSTGSa!9jO1pUvaT4(uQC)m8Y+erU$SP^! zKtD4SJrRGxFi?btDEN!yX4OH~Dd5B1sz)DJqpA$qTW7&0CW|7^m-{lS&=pZjpq)NF`AEqvY}xWm!SK z+2L4=3zno9^6ROpv;+D#23}h;WhAJj3)51*SHV?kVGiVT0nu`@-c-&@8< z5HX{)*Q^3H$eNSD~3 zV6n+mkUYQffB{$>&whXMQV$#*f7YuBW=&Fg1>MoGQ4c)ganv*8Mvz61Hb!IIl;g*l zrs+pCJ8Rye#9@aZOHH@e0q{ZqGO;>`ZRs)_m&%(SJo?gbGSUQueU34;f`wJ&LPXie z5%zYOAqQ|ylPM7@FstU&P|r?`VrSpRJFfg zBTLMnUL-|O=u(aPCKLko9=%gHFNom*@tYq_){`>LjdFoAIlz-*djZ4o$CyM^D!O!* zrZ+K1KHh6if&0W(v}#BgHmUFjQ+`--*gNDhDwHN&zI-H(sKkt-AG$Rn-Nva30zC-6 z6LNRM(&BthTit&XHc!leyTA9fu5OgSXfnxKW^a)VKd*8b{5HfW_+{CV$Yc?=6 zdEpr3^YFl2Jlfh+ zaq)#1kw8=WOipZ8_PW^no{oS-gZ2h9+|U>qN{|Y!(|~_*TJpWlR4vz8q`vchtMA-c z>}YzQU@s`lC86W40DCe)Qa2Q-PUZg9=cmS~z`oSMg`HD)Cc(4D!;Nj*wr$(ClZ~A( zwr$(CZ95xlV;g(&zc{!%7t>F7%{)DK)m1f9zxOv1!gN=j+ivXTXU?R~6CC;6U4S`x zYte!2sguCvc91l0X1hkV4Ew%Ihfxi>r(BJNFH3mvG!Kl%W<2yw=0Rk;vF?5! za2w1s0C3qNR@b~FA{S9W5?Mb7dh=*F78X2MBiX@Bt`6%px%Z6EZ$tZw0O?rZpv1!Llyz#= z&OznRQC`MXpLceFYBFzmyxSa|{SK7p(xYM^V1!x&B5%hr2z00`>i(Fq(^VB^(UB=D zIiNY<&>6GaN*Jz~L#Yz9sON7Tj?|aUWFbiPvD6WRLngXf7zE|jT6`hPi0w{ubiwaM zd0djkF)Y)$TN9Y9lOJ+yZW~u_$m3ML86^gp3ub5PqSabTWbj!Se8)FKPco5 zU>LiUx?C_EiAsZ=MO%4pzlO6B;XV~%d=j<~UkF|`3MVU{#LeyQe!qHE4^kud308O; zs0?kP*+GQZK;8AvBL+LNgy~HI%O&N9HEo;+Xb{bI<7=3NS(AZ$n#5mp&@pw9>zcok z(y)A~n>_Bta_(x?#m%xX>)aW#wyU?z0EX44MGh9E;GX0sMHo{iTRJb9w0y${Gh7|N z=R=R-kTjQ5gu=yfL)Fm>$+=J7PhyMHzUSi#U-8=jrR%ja(!rUlPe&8%YpvorqG~Ze z*bijE;o0voP+XP$kQc&KisGI~=8&YdPe0t9r-R=j&I2jW5i($zk%EA%Y#CU60L(w7 zSZIM(B@uv58Q$kOe0$fs!Lx<!P}}tE|R=g4z0nw@5OL ztF~K2<}?LVX7p%Lo_v*nC~8S*<)u1moAaa9^j3UH7&>gcjJE4zaOgsoDjF|%9e7A+ z$0@a>u+al#mAN*WMuNeC-ALF))Up!i;trBk;Dsi+fVpAsXiKQU;Vrf^ ziO4cyMwojrxE;?brSg= z`bXOZ%HN_uUCmM(W?)O32hrz*+M46K!tVZ=ba$3bUqtg?SabT0o5wCiJ>s#Rq{2%Z zAoP1d%wXL?^HxRofF5~5J4q}R?jtldLs+JMYz;nTqRb1?!>FpB(d-v5McQG!$Ayw| z`xq|kh2)lryApmU#JX~-tL(Rdw}{#)XFIxBwQUg%5sF#xDOWUvo@C9S4Z)!7)xil# zTEOz*u@LLt50v=#T`-}13Sq(vpVBwEHoS5cQrqKGcKl`*AhtyU;jrSDxI?K?0z#uf z)2DQoDkX&u^+Dj&YK`By#coL1tLVC{tX9Mp36+m#Y6Sx}r`|zd>h{j9*@QF12pxj# zB=o=eo(LI3=hKD_Dm1b6{Y zXd9d|gP_uIRLC6peTZe=_QvXBw#xNj`;^RLfq|10ppR<&)FFw6|DOjkA(fPhl+u!>z3z`={-v8gj=`PTnv z!m#D^y*WNzs@i$1U;OY(N(H0?6PF!|$4Sc&n0DC=xpKod(m~Vy5`r97nW5l2`50|~Ul36Y3h?aq{>QKC+uo6fBAB&hKX4q1-@bUc`UdhPF7~ zON!ONbKQ~Wx53PAH!tdHGCcCyTTrC?w<&E2fKoYO)vh@pBk6AAq_(ZO1t0uG-qp*) z$Y-RXc}n566cLX+a&rsk z0Bl?_0Pt)UzKWvWE{0_~%j2pAGBfG!y`d*{z5Lx@(Tkf@m3HktKrDj7b>WhWBirl& zua`>1d8PE>frP9mwVha=+t7pO4(UTwi;i zq01Cyw_geCjJ13SaA~@@s_YySivvE-fKyzYYxCwpyY^wxXl4+=E;Cpc_iaHNu+d+l>+DDclnQ>sCjqc z-?e4om4v|}Lmo$^1|7}hZgGg*cD#tva#z>u<6f+h_dRJ0c8r)W|J_H7Nc2{qhC$JB z!aj6FD(}ppavrH}Sm8j6%~Gu~oZyvv{D#Mj2o&~Q$S?z!LK)J; z(O0iTYgZz)%cJ9M{%!hX8*tH#L(=4Ex8hsra`5j68`mT7appG_=zbzQ;Oo7N<)J=2 z92W=(EjK76MiEILgkybx-Fb$a*rOv6Z?zNiE{XjA_Bb9#L2hp%}|=( z&xsEknRsm?Q9EfLVj?uh^+cn_n!cxlP>T|ZdKD}AFF^>A49R0N7KDIvLcVE=rGA1I z;nY?HAuxvwmt}{Tqr{IW?#j%$i*?A?KKn9(Z{dqO)$DRy6|LRx$J8ww%sgyf<0ark zEEE(x;LS?^(m<`$647Tx*RlS%RaX_w0S9ApfWHg#7-xX2CzbQ}C;5gc)7ui#g4j%` zR%MJ!XF=tKNOI`h7VCSFZ3H{LFpcw9qob|3*Rl*3{~58!M^l^|fPvzz%Za%?igV&c zwf(5b@g%|1(zls#IxKndsk)5r{)~YiJpdJg#iS&s1$G*S|F6S)!$cuX59*(p)7@uJ z9L=0rlc-@usUi1MGZR_@zxBzzv$wk$egZ7!X-xV9+IpMS-q}MG&lS(&?@X1xWVzAY zR$&vrzed=*Ic^AJfE@mKJpAoZ{ZUWJQ3oPRJt855fd&U7?FSdf4IlO6pD@$| z7U5dq=4#!|M7b{{%aeH(%Ijz*;p`DtT5%nwjpeXH(W59wV`D;}GwC~;LAWJaNZ@;)g1rH&dgMZW zt_Vr=8sNccnvJBePH=TKq^s?JG}kJROOv)|A=2$W#EIH!&xQ2b6S#k1qG)aGO?P9{ zr4R>eme0IEH)OBNjv`CeRjrFwl@e(Y`**6lu9xt{Ro^Gji{@(YUn@m!Dhhq4StV~* zQdHVXbAcl=V9k_?$Qb1%nYbef8erbgn0vx%bhehVU7HexzpZlMH;oKBv&sj;T9zROx$lRM}~ z_>w%~T3PF>tln=Kj|Ic+8YKA(49wwtOgtCs1ZD*TU|1HEHPkkaZvprn$)c!iI+I#1uHx{|0fs;~J~c;LhD!_mk`(BJE!>A^1%p%lNXJ14PKpI& z=qN_YS@t}dez@Z+>hjG7ELPy+UmMxOV`wXOZ3;xqEv_^BUxO#BjKCOT#!>Z9qWjw$>OfXL zOoD8zP@fvzd}M!8d^Y)%YbUeYDGxc>1UQ~PCs754^owaGDr&Trak*{MuRzlc?!pOL z0Wqao>(MNKd}AId2wmScsv67=vu7U8fMV&u7|||wf@JG?bRD+R^;W_{W4Iq+j1)!q z6_Cm8B*5l>i$OjSsl2tTUyfT*`Jft~EpA-3!P=0Z&>*xDQ(T0hH1%8d?;1xBRip@u zqy@5#xQD#M)3~uNDUKGm3$~lo38DX{0*pdI3g9{^AoY0`=_Fgl$EOPh;Mn-sk7Noh zQD_!bBMSr%O?*G`rNwMVX6!yyh3>QBo(u|wTz&nbZQ!ddUiZl97r!Zuoh(BPY-gPC zPq4S4ixXWU=A}v`XFE@GFxxl0yyn# z&}X}Sw{xhH*T)A*p&L|1S>W|+iR_}-9}X^=ZZ`Kvo2vnjk`28V!}IidYC?J}181V1 zDynIs=-W1T3{5}-QrJ(ndSGHs7ng`kZnh`qFP<@_tuHqo2ZGbOClCVS zFZ|$mc9?O@GZeP6=vBdgOI*@BW@HG_6s;TcO)1t#(ca+uW1rIV1h|!3!a^?-EVE4+ zq2E+HXY*Z7Om~dQ>^1fcyM+o}>_OUBY(g|D5@5Wrt+If+y?j=`4;8V7H9k!p8(@O- z{v{Pq>N|0=R=@Dq5?BYK>>$lzXw5DW{!L64Ybg?{$L=kvey2GtutnW|$qhJnYznai z1<#r`*U{La19|G@1aN4b_=v}kYEX@Fa)EO_IUP}%8g5;c=EZ2xcvzO^dzvc41#%Ep zSFuY_xO{fu-k==uIDgE;2D*EQTff25JYtXCQ^TJ~8I{>Hp9ZG3dQPbtmXNh{Xzf2c zLi5rTYPC;1)xjHIE_uHs+)K$$;wQH^UZUxn)fym*U#O8<3-I_D@D}cuBiMP5_yt4| zk^SN7dO57FA>2qL4TT|0r+AoP0%>m$lP(ZAhh z)6kfy>S;RcgX`2zD$o5a4NFmGLwr?tsq#*#YNuiY{D(11fSHpgpCKN~wS#MQL__Fr zNt9-x(Gz+mC*bNg_`j_gK@*Q33^{7?Ugu{EytFi|E)z zWj=LYRz%qZf3O9m*zVqRUux;^oh7MDySFwGrp~=`Bzq0rqL3G82E=TXYh( ziY9(OdbYPnRtyxrh*abK$PKie$REg+-t=`+*AwNiCScAV5N!Awpoa1NWkTw2ahUwz z2S9?rFMt=gljE++d)4ha?T!-YZTP2WuKlqf~FQr zHKs$IXHSk2Y(_gy=vXTYrcg=f!7 z-~!}O*P~IZTt6LG;?#NWvW2-Ch$8D9Qs1!_#>~bxJ(yQpArp5}H>q<+(OhtQgNybO zb$$RBEWG^=Ek+Td*9TbU!e=Or+Iiw=Nyf(r3=B$MR)-p@)u3@rxrs-&;Up*9=i%%b z53!xiSkm@#JBKU^hQo-T@%b3$2prp!E`a;0R3Jw5NbJc8I67QZk3_G-6T3)KNgt?X z3{?fz6a#wy!y%Nlx%>%JW=l>CiX}PA9;IiM%*iuLRKrBl5t?CKS3Kx!r3lwy?0|}Z z3)PX9!3!H^k~$4*7aIu7wEe4SU3BV(FkoeMTp#_Fv#X|^XhdkZuX~9mL}%GHO~4=V zRxT7R_2}rtX?!V+3cvNC^7jGUmZ|NGeU9jK9X;(o9Hc~uWOtrG!>d}tRghynl~RQL z)KYYDD^jd|W}*5;=kqmRxo0jKe=9FGIr5V?Nvm*sHtWj4LwvYs9=L*v+o_!EN6!`EG ziF;+jTWB8PvTu|c$!Du#9h|Zy*g`4YZxuS8EVr9a;%%^KUaLwXRwTRdl9r*qxFQl- z9N{u4&hI-Il_<)L%#&#&#n_hbtbPOrk6bNn4XhcWJ0V{<@_fvzD9qy~E=p@@POo6|f1OMJhfRwQXT9I}Mj&(jmwpP@M9d-|NJ&2qkgc*w`h{G@~z_Q-1 zZoHtOuY7{Y(kN$KO)`DNzL^LDM$}=wB|oDzGDilk_e*_TgeXrwmRy)0fJ8t$coY-w zUGye#x9#r18!rLSZ4vIp&uszi;OWS2OMA$;73GL`*xWes@>-nTQ|E2i&5aF>qu@9Q z8Win6+5blXVVD=F;4xyFbF|_$cJmL^6~`7cv;~f9`S{7>(-EeGA$gUf-U_ay39h>| z5SiSb*QX?qd6=A#o0>8Q;6VIY61ezEzGAxsTAgeo=)}afx=d?NVmfGumb}Bdu~KcX zW=;8SP3bIh_u?rX>?#sb6POqsVOW(PU2r#^kCr?zBxHTdy2Dl=?GE|^TQHgu%_gVH zHco=Y(I8D!vzNoxUj)xOu?keD5=gKnnh@JC(K#y09Zdd#z1Q*rkeg-ew~<);nTxqa z{!D{D)xZ5^ATbh_K;=v$LjLE%(@?74T9&u91 zno91`E9?Gl6b6L&RkSMCB+yH%305?!6_*3Ac2Fx{VRsQ>*b%F>I^rZQ{925MySJ$% zmcxc>g$_VeJM={>nTy$tk7rNlTn>iAvO=j4>xflDha_iJ($FHbOn#PbN#0rqw@`riSsrOR%q^-BaYX zD~|-u+6!_`7F-FdtkHHr0#P$>p(N(lu-;whs1eK>CVoJH#VEiGkb0wbW3);Aic)7_b}w<)zvp znAIY0>$M7;)%ARv#<=>zhxx{*-Qknl{6^Ql2Xoop4i}&2@N_hia0Pxaqh-azRTmNE zcuuCYu^^oxB)(4&X$e{i7llHwC&2b{O|-=4>jq$8jg5`p_k@?TeKLcva55Q+YD7PT zk8_4EWufBgiw$zk-okd%SipAWEqFT7W+^XN^Y}TOB6E-`mdZFqh>+j z(702f9H}R{^LPZGi5LDAXtE7-Qkb(Az;nkkIwxM@ajIfY%|Hzg)QvM#HWg)U{4Ju+ zF&HtPh47ij$?I$`28+6c0Eh23K}%&BLB~5y>{M)*?Btmv*$T~5mc;V1 z_?$ZhJibBf|3jIKJ{2_Ge@?jTU^mof5a++1^Yiu8b;?)&_{b z=i+KmxVTFSl%GllaJngdMJ3D7hPX&)%cL(_HB~E7aqm#2Fb#o^rJSudJb?TW1FOO~ zfQg|o13qnSW)~a#9@+Wu`m<6o9dB4itT8&0^8|K%?m0HnB&3w5WZozT10^bBK9R8` zd-Q&W_7!B|c$!e?tkD+{r|%u_1r8`1z5;iLAMY!90M`D?3c6TgGE#8?8-eT_8|v{rnB zK2H6P>bzKFOleT8uMFibu)nlxtQJRt+kFnW8uN8N8nl&un9>580UKe{+I+x_#KqkK z`3(5Rsu@2+;gO!Uq*b@Ga{#D(om8bSJMo-*OVZH=136s|^O2>R&;4=zjXqs?Lt-wa zoT|0`RPp|O<4yR`wDZhvXS+4_XG1JOn|p!T?N!B|k|L-O{l$>%Ac$hbI0EcF%_kx* zHy3z>$ho*Nn|Z7|=W!9pZH8#dAeU^~$+PcwXG&q)jTd5l{VaCRM=s#W!)>P2oUDi? z#Gs5GHFZl_=l#q$erKsru!G@nkz##_HPQJDI%l6O_0j z^y2xYOJP9n3~OqJG1`gFV(Mw^PR>xF3#JUa~(%)Wu8Es{GqbkM;DqKm?dwCs=ltXp zSC+iQ=Xs}j;uaQBH`PoE)3prrp$`j3_b#km*a&NAYwrM}NP#WSmbMSDNC5%v%|b3P zer9wy(l2c4uv{L?o)h>-*NP4%bG-+NqYtr{__lNYY?Cd`7PY3&brrr^{{4){f6@D)t=O+^9mB8)^;i}7qaK~dtd&A3! z974HeD+u5T*NEj3d32*0PxuL$^~$#OC(xR4SZ#SmSa^Ti*&-n5GpRW=FL@#s5&ueY zk@u>aCBgi5(#wG$>vLByxW4QT=9o4n!0pQc6NJ|<|a>NT~a{w^m?YI1!c3y9<{={&Hg$?^}e6^wWA(qT4FOL!Mn( zadA?~w&o<^ne!7O<36ocDP<5(yNx^`YS!klQ&UEg|bW))~Auz9mQNsExB>? zWXNu*L3f~-BTz$sI2iP<3w)pazM0|g;n+AZg-S4o`|`mL1IboVzje6yYGw2DqeJai zC3sO-J9OkRSToCj{RaXr_gV1+BtcE`BSUVxfB+!@1z}-nLxcfg1x9RIPSw&kLO+=C=l<)gF}VSy0+Y{8ZGvju9~ zCN2m8Xwr5!N*gR8$RH>PD^uG%3CI#?(#8==TPp>~4hRS62tH_9I64Si+5jDh z3po=r2O~2R8zYl86*PmKgQ=*Iiy0xMC^s`BGb`i&+)UG<2MK3qVIpKCbTGDt=H-QE zQ1$$6M#!LGY^~yA2hAW)$nul_iCZ~2yAU$7vHnjg$n?Wr8Gxh$YvP>F;{>bIoNf57HTqLz zlTA~X(mF@;OjMgIbCcuBCf+4u`JiQ&RG9M`$&>yb;s~lW(j}#Dv@A)L%~yjbKo_Al z!meeP`q6?nuFqTq$dW>p(gd+JP-sx0Eb_agS@{>Wtjkn7TQ99$D@-$vfhvL^I_jI^$Q-s zSn4{vT6@_Z*hr>OI`hl5JGuDm(5y+|i>fvl%B|xNds(xMX)kOSsN&8pQ}W3YK<#6P zeWTSItD0bjFb&m>T6963|LwGy1KTP{3>Mf}BN%uSKxM))pU8XiTS zP>!PY!6Wj+(N!9I@Zst?cbyw>=E6@BJO`AGmk=fJ=a%zi!b%7TvbK{3$fAssLI_I9 zv0x!*97fQ4ClOe1kSR$6fve4+_$sdUMP$PSEFK2f)4!LMX#jPWGLr^Yo_rFDG^P?2 zMqb_t9^SMK`R#%tK_Lst(Rjz_y{n`K^Im)84%`B+FIK=k#NACp0}E@@6wj@BsrQs7 z2yXvG*M%)5hDpa;4ed)^A(8xkz2hu$C^~z?*oz*E?T3o9dfOy%5XlwbEQLt=UK@D) zDtG4-1V;>rpJbKuAuKuqH7>YKxFl0$XZVDJ|n-@S+EhLe#fof2~d z`Y;Fl)9%jXd&4;CdRX}!Do?NZDI5}5JYP4C=gNCPtmxfP;F%|N0^_${6ETV`za#s0 zY%^bu~V2i8KgcF^zT-L?SOX!?E!mtKw^J`*~?8-~hO0F$b3lD`va zF_MHI%>!@R&Xu0Xl8TTm1KrngvH=k#=l{wNPh18nR;t8O=*N)tA|ZvWE)OR04wSC) zM~p-k7K9X=?N^>u2JKg?SnBMc*=mNtwZ>P1NQJH|eSvYdO`lY~&xh?0u5m@yd@Ss9ZVB7RU& zSrXu)G)D@Oc!liQeUkm`kD4q=MfQJ&#SCR>O8+udqagMBRexT6XL)bIc_HQXcp>Fw zMIq&RL?M9s^qj}q`@{Bfr(~eLz!FfSGhDa~&*Cw42FFJCxW-i9Cw;5YeVx{J{o83J z*9yf3tF2@`n%v~}iEEqxZ-G$8YFpYUUGANFqB#2X%3kSh*S_uN&B3<1u>0LGJDW=O z8f~4H+AF`i^9|Lj!Zxahf9ke6N-d4nG|*qq6$|3XGOo%GR|B8eG%Y~(3AcxtuS!cf zXiX#MOq)9&>9yDCIxX$BewA+nz_rnLrb%!Hzb&-hc@A#5baGR>8os_h1fHeAbJH4d zK~RC2)5>{4hyd&?de96iR$gX=Ozc0vC=Eg#CPEfMrXQoSgM-VDk@3e{Dnm0!*_%83 ztp4LW|FaS$)ZrE9WEbHSW@BaHVB}(BW)Ws(Au|q*s33cqwnI4j4oEZ{+oVv;%l9-S%ig2pFu67SZJ06pV zu3SN++_K_QR`Rm?%!*dlcAp_XFc7|bSL9*hrkBNe*Z1a2RJ1lw5^<%8jEIW0Trz+G z)Kt)XSW}yQ3MU@CSGHfS6keqZoPV6?EzUVWXgtX0mtPGKv=+drC_b3D9d1Ms#GMel zMDdq<0WNhua%DcY^&bARFy68=iNF9SYbELPmuJ=?-Yq2eK9h?O z$74Ur-w^)4VP%X!L5yHSx3J=dsJTO!6vsuF1_K^RM!(2aBi+8Hlj1|E(nGb(n@bdMF%k_C8exS**%FPJBoQ@|*Qb)-Ym)cg z#jk{k+!4wDVpVTMt=l$6x|N$Jy5&$OC=-=PizLMpqKPH2#F!&Z|JPD2Ei&Zyr}s(t r8?-%FxaR+qP=AW4|2apUU5uPuJe p_1 > p_2 \cdots\] + \begin{equation} + \cdots p_{n-1} < p_0 > p_1 > p_2 \cdots + \end{equation} After first round the is possibility, that could happen, that every one but the biggest process ($p_0$), would get "lost" status, what provide us to comlexity: - \[4\cdot n + \sum_0^{\ceil*{\log n}} 2^i \cdot 1 \,\,= \,\, + \begin{equation} + 4\cdot n + \sum_0^{\ceil*{\log n}} 2^i \cdot 1 \,\,= \,\, 4\cdot n + \sum_0^{k} 2^i \,\, <= \,\, - 4\cdot n + 2 \cdot n\,\, = \,\,\mathcal{O}(n)\] + 4\cdot n + 2 \cdot n\,\, = \,\,\mathcal{O}(n) + \end{equation} +\bigskip + +\section*{Algorithm: Directed Ring} +To fit Hirschberg-Sinclair algorithm to directed ring we need to provide the ability to receive a response to initiated messages, because of which we will adhere to the method of "twisting" the cycle. \\ +We are using structure of undirected ring with unshuffled topology simulating directed ring by initiating sending messages only clockwise.\\ + +\begin{lstlisting} +The Algorithm + +The Pseudocode is the same as in "Algorithm: Undirected Ring" with only two differences. + +1. sendboth ("from", myvalue, 0, maxnum) is replaced with: +sendClockwise ("from", myvalue, 0, maxnum) +2. await both replies (but react to other messages) is replaced with: +await reply (but react to other messages) + +\end{lstlisting} + +\section*{Correctness} +The proof of correctness is the same as in "Algorithm: Undirected Ring". + + +\section*{Proof of complexity} +\subsection*{The worst case} + Note that each active processor by the start of a round $i$(starting with 0) can initiate process in which at most $2*2^i$ messages would be about to sent. \\ + Another observation gives us on start of round $i > 2$: + \begin{equation} + \textbf{number of "candidate" processes} \leq \ceil*{\frac{n}{2^{i-2} + 1}} + \end{equation} + It follows from the fact, that if we separate all nodes on blocks of length $2^{i-2} + 1$, then after round $i-1$ only one of nodes(processes) in block could stay active.\\ + + + \bigskip + \noindent + It all provides us to the fact that total number of sent messages is bounded from above by: + \begin{equation} + 2\cdot(\sum_0^{\ceil*{\log n}} 2^i \cdot \ceil*{\frac{n}{2^{i-2} + 1}}) + \quad \leq \quad + 4\cdot2\cdot(\sum_0^{\ceil*{\log n}} 2^i \cdot \ceil*{\frac{n}{2 \cdot(2^{i-2} + 1)}}) + \quad\leq\quad + 8\cdot(\sum_0^{\ceil*{\log n}} 2^i \cdot \ceil*{\frac{n}{2^{i-1} + 1}}) + \quad\leq\quad + 16\, n \,\log n + \end{equation} + Where the last transition comes from (2). + \subsection*{The best case} + Example and proof are exactly the same as in "Algorithm: Undirected Ring".\\ + So the number of sent messages is bounded from below by \mathcal{O}(n). +\bigskip + \begin{thebibliography}{9}