From 8a631083f50486912b7d5d353cd0c47c4b1f9797 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 5 Feb 2023 16:36:12 +0100 Subject: [PATCH 01/45] Add PagedMergeSort Adds the PagedMergeSort algorithm, a merge sort with O(sqrt n) auxiliary space usage. --- Project.toml | 1 + src/SortingAlgorithms.jl | 435 ++++++++++++++++++++++++++++++++++++++- test/runtests.jl | 6 +- 3 files changed, 438 insertions(+), 4 deletions(-) diff --git a/Project.toml b/Project.toml index 23e0339..928c4e6 100644 --- a/Project.toml +++ b/Project.toml @@ -4,6 +4,7 @@ version = "1.1.0" [deps] DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" [compat] julia = "1" diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 8d36d79..c6e0165 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -8,13 +8,16 @@ using Base.Order import Base.Sort: sort! import DataStructures: heapify!, percolate_down! +import StaticArrays: MVector -export HeapSort, TimSort, RadixSort, CombSort +export HeapSort, TimSort, RadixSort, CombSort, PagedMergeSort, ThreadedPagedMergeSort struct HeapSortAlg <: Algorithm end struct TimSortAlg <: Algorithm end struct RadixSortAlg <: Algorithm end struct CombSortAlg <: Algorithm end +struct PagedMergeSortAlg <: Algorithm end +struct ThreadedPagedMergeSortAlg <: Algorithm end const HeapSort = HeapSortAlg() const TimSort = TimSortAlg() @@ -46,6 +49,52 @@ Characteristics: """ const CombSort = CombSortAlg() +""" + PagedMergeSort + +Indicates that a sorting function should use the paged merge sort +algorithm. Paged merge sort uses is a merge sort, that uses different +merge routines to achieve stable sorting with a scratch space of size O(√n). +The merge routine for merging large subarrays merges +blocks/pages of size O(√n) almost in place, before reordering them using a page table. +At deeper recursion levels, where the scratch space is big enough, +normal merging is used, where one input is copied into the scratch space. +When the scratch space is large enough to hold the complete subarray, +the input is merged interleaved from both sides, which increases performance +for random data. + +Characteristics: + - *stable* does preserve the ordering of elements which + compare equal (e.g. "a" and "A" in a sort of letters which + ignores case). + - *O(√n)* auxilary memory usage. + - *`O(n log n)` garuanteed runtime*. + +## References + - https://www.reddit.com/r/compsci/comments/qc95r7/merge_sort_with_osqrtn_auxiliary_memory/ +(Describes the basic idea, but uses another block reordering scheme.) +""" +const PagedMergeSort = PagedMergeSortAlg() + +""" + ThreadedPagedMergeSort + +Multithreaded version of PagedMergeSort using Threads.nthreads-times the auxilary space. +Uses multithreaded recursion (not multithreaded merging), so the maximum speedup is +limited to O(log n) +Characteristics: + - *stable* does preserve the ordering of elements which + compare equal (e.g. "a" and "A" in a sort of letters which + ignores case). + - *O(√n)* auxilary memory usage. + - *`O(n log n)` garuanteed runtime*. + +## References + - https://www.reddit.com/r/compsci/comments/qc95r7/merge_sort_with_osqrtn_auxiliary_memory/ +(Describes the basic idea, but uses another block reordering scheme.) + - https://en.wikipedia.org/wiki/Merge_sort#Merge_sort_with_parallel_recursion +""" +const ThreadedPagedMergeSort = ThreadedPagedMergeSortAlg() ## Heap sort @@ -626,4 +675,388 @@ else end end +### +# ThreadedPagedMergeSort +### + +# merge v[lo:hiA] and v[hiA+1:hi] ([A;B]) using buffer t[1:1 + hi-lo] +function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer, hi::Integer, hiA::Integer, o::Ordering) where T + @assert lo <= hiA <= hi + loA = lo + loB = hiA + 1 + hiB = hi + + # output array indices + oL = 1 + oR = 1 + hi-lo + + # input array indices + iAL = loA + iBL = loB + iAR = hiA + iBR = hiB + + @inbounds begin + # two ended merge + while iAL < iAR && iBL < iBR + if lt(o,v[iBL], v[iAL]) + t[oL] = v[iBL] + iBL += 1 + else + t[oL] = v[iAL] + iAL += 1 + end + oL +=1 + + if lt(o,v[iAR], v[iBR]) + t[oR] = v[iBR] + iBR -= 1 + else + t[oR] = v[iAR] + iAR -= 1 + end + oR -=1 + end + # cleanup + # regular merge + while iAL <= iAR && iBL <= iBR + if lt(o,v[iBL], v[iAL]) + t[oL] = v[iBL] + iBL += 1 + else + t[oL] = v[iAL] + iAL += 1 + end + oL += 1 + end + # either A or B is empty -> copy remaining items + while iAL <= iAR + t[oL] = v[iAL] + iAL += 1 + oL += 1 + end + while iBL <= iBR + t[oL] = v[iBL] + iBL += 1 + oL += 1 + end + # copy back from t to v + offset = lo-1 + len = 1 + hi - lo + @inbounds for i = 1:len + v[offset+i] = t[i] + end + end +end + +# merge v[lo:lo+lenA-1] and v[lo+lenA:hi] using buffer t[1:lenA] +# based on Base.Sort MergeSort +function merge!(v::AbstractVector{T},t::AbstractVector{T}, lenA::Integer, lo::Integer, hi::Integer, o::Ordering) where T + @inbounds begin + i = 1 + j = lo + while i <= lenA + t[i] = v[j] + i +=1 + j +=1 + end + iA = 1 + k = lo + iB = lo + lenA + while k < iB <= hi + if lt(o,v[iB], t[iA]) + v[k] = v[iB] + iB += 1 + else + v[k] = t[iA] + iA += 1 + end + k += 1 + end + while iA <= lenA + v[k] = t[iA] + k += 1 + iA += 1 + end + end +end + +# macro used for block management in pagedMerge! +macro getNextBlock!() + quote + if iA > nextBlockA * blocksize + lo + currentBlock = nextBlockA + nextBlockA += 1 + else + currentBlock = nextBlockB + nextBlockB += 1 + end + blockLocation[currentBlockIdx] = currentBlock + currentBlockIdx += 1 + end |> esc +end + +# merge v[lo:endA] and v[endA+1:hi] using buffer buf in O(sqrt(n)) space +function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, endA::Integer, hi::Integer, blockLocation::AbstractVector{<:Integer}, o::Ordering) where T + @assert lo < endA < hi + iA = lo + iB = endA + 1 + endB = hi + lenA = endA + 1 - lo + lenB = endB - endA + + # regular merge if buffer is big enough + if lenA <= length(buf) + merge!(v,buf,lenA,lo,hi,o) + return + elseif lenB <= length(buf) + # TODO ? + # does not occur in balanced mergesort where length(A) <= length(B) + error("not implemented") + return + end + + len = hi + 1 - lo + blocksize = isqrt(len) + nBlocks = len ÷ blocksize + @assert length(buf) >= 3blocksize + @assert length(blockLocation) >= nBlocks+1 + + @inline getBlockOffset(block) = (block-1)*blocksize + lo - 1 + + @inbounds begin + ################## + # merge + ################## + # merge into buf until full + oBuf = 1 + while oBuf <= 3blocksize # cannot run out of input elements here + if lt(o, v[iB], v[iA]) # -> merge! would have been used + buf[oBuf] = v[iB] + iB += 1 + else + buf[oBuf] = v[iA] + iA += 1 + end + oBuf += 1 + end + + nextBlockA = 1 + nextBlockB = (endA+blocksize-lo) ÷ blocksize + 1 + blockLocation .= 0 + blockLocation[1:3] = -1:-1:-3 + + oIdx = 1 + currentBlock = 0 + currentBlockIdx = 4 + # more efficient loop while more than blocksize elements of A and B are remaining + while iA < endA-blocksize && iB < endB-blocksize + @getNextBlock! + offset = (currentBlock-1)*blocksize + oIdx = lo + offset + while oIdx <= blocksize+offset + lo - 1 + if lt(o, v[iB], v[iA]) + v[oIdx] = v[iB] + iB += 1 + else + v[oIdx] = v[iA] + iA += 1 + end + oIdx += 1 + end + end + # merge until either A or B is empty + while iA <= endA && iB <= endB + @getNextBlock! + oIdx = 1 + offset = getBlockOffset(currentBlock) + while oIdx <= blocksize && iA <= endA && iB <= endB + if lt(o, v[iB], v[iA]) + v[offset+oIdx] = v[iB] + iB += 1 + else + v[offset+oIdx] = v[iA] + iA += 1 + end + oIdx += 1 + end + end + # copy remaining elements + # either A or B is empty + # copy rest of A + while iA <= endA + if oIdx > blocksize + @getNextBlock! + oIdx = 1 + end + offset = getBlockOffset(currentBlock) + while oIdx <= blocksize && iA <= endA + v[offset + oIdx] = v[iA] + iA += 1 + oIdx += 1 + end + end + # copy rest of B + while iB <= endB + if oIdx > blocksize + @getNextBlock! + oIdx = 1 + end + offset = getBlockOffset(currentBlock) + while oIdx <= blocksize && iB <= endB + v[offset + oIdx] = v[iB] + iB += 1 + oIdx += 1 + end + end + # copy last partial block to end + partialBlockPresent = oIdx <= blocksize + if partialBlockPresent + offset = getBlockOffset(currentBlock) + offset2 = nBlocks*blocksize + lo - 1 + for j = 1:oIdx-1 + v[offset2 + j] = v[offset + j] + end + blockLocation[currentBlockIdx-1] = 0 + end + ######################################### + # calculate location of the 3 free blocks + ######################################### + nFreeBlocksB = nBlocks + 1 - nextBlockB + nFreeBlocksA = 3 - nFreeBlocksB - Int(partialBlockPresent) + freeBlocks = MVector{3,Int}(undef) + i = 1 + for j = 0:nFreeBlocksA-1 + freeBlocks[i] = nextBlockA + j + i += 1 + end + for j = 0:nFreeBlocksB-1 + freeBlocks[i] = nextBlockB + j + i += 1 + end + if partialBlockPresent + freeBlocks[i] = currentBlock + end + freeBlocksIdx = 3 + doneBlockIdx = 1 + currentBlock = freeBlocks[end] + ################## + # rearrange blocks + ################## + while true + blc = blockLocation[currentBlock] # index of block with data belonging to currentBlock + if blc > 0 + # data for currentBlock is in v + offset = getBlockOffset(currentBlock) + offset2 = getBlockOffset(blc) + for j = 1:blocksize + v[offset + j] = v[offset2 + j] + end + blockLocation[currentBlock] = 0 + currentBlock = blc + else + # data for currentBlock is in buf + offset = getBlockOffset(currentBlock) + offset2 = (-blc-1)*blocksize + for j = 1:blocksize + v[offset + j] = buf[offset2 + j] + end + blockLocation[currentBlock] = 0 + if freeBlocksIdx > 1 + # get next free block + freeBlocksIdx -= 1 + currentBlock = freeBlocks[freeBlocksIdx] + else + # no free block remains + # make sure that all blocks are done + while blockLocation[doneBlockIdx] == 0 || blockLocation[doneBlockIdx] == doneBlockIdx + doneBlockIdx += 1 + doneBlockIdx == nBlocks && return + end + # copy misplaced block into buf and continue + currentBlock = blockLocation[doneBlockIdx] + offset = getBlockOffset(currentBlock) + for j = 1:blocksize + buf[j] = v[offset + j] + end + blockLocation[doneBlockIdx] = -1 + end + end + end + end +end + +function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T + len = hi + 1 -lo + if len <= Base.SMALL_THRESHOLD + Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) + return + end + m = Base.midpoint(lo,hi) + pagedmergesort!(v,lo,m,buf,blockLocation,o) + pagedmergesort!(v,m+1,hi,buf,blockLocation,o) + if len <= length(buf) + twoended_merge!(v, buf, lo, hi, m,o) + else + pagedMerge!(v, buf, lo, m, hi, blockLocation, o) + end +end + +function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, bufs, blockLocations, c::Channel, threadingThreshold::Integer, o=Base.Order.Forward) + len = hi + 1 -lo + if len <= Base.SMALL_THRESHOLD + Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) + return + end + m = Base.midpoint(lo,hi) + if len > threadingThreshold + thr = Threads.@spawn threaded_pagedmergesort!(v,lo,m,bufs,blockLocations,c,threadingThreshold,o) + threaded_pagedmergesort!(v,m+1,hi,bufs,blockLocations,c,threadingThreshold,o) + wait(thr) + id = take!(c) + buf = bufs[id] + blockLocation = blockLocations[id] + else + id = take!(c) + buf = bufs[id] + blockLocation = blockLocations[id] + pagedmergesort!(v,lo,m,buf,blockLocation,o) + pagedmergesort!(v,m+1,hi,buf,blockLocation,o) + end + if len <= length(buf) + twoended_merge!(v, buf, lo, hi, m, o) + else + pagedMerge!(v, buf, lo, m, hi, blockLocation, o) + end + put!(c,id) +end + +const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 + +function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PagedMergeSortAlg, o::Ordering) + lo >= hi && return + n = hi + 1 - lo + blocksize = isqrt(n) + buf = Vector{eltype(v)}(undef,3blocksize) + nBlocks = n ÷ blocksize + blockLocation = Vector{Int}(undef,nBlocks+1) + pagedmergesort!(v,lo,hi,buf,blockLocation,o) +end + +function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) + lo >= hi && return + n = hi + 1 - lo + nThreads=Threads.nthreads() + (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && (sort!(v, lo, hi, PagedMergeSort, o); return) + threadingThreshold = max(n ÷ 4nThreads, PAGEDMERGESORT_THREADING_THRESHOLD) + blocksize = isqrt(n) + nBlocks = n ÷ blocksize + bufs = [Vector{eltype(v)}(undef,3blocksize) for _ in 1:nThreads] # allocate buffer for each thread + blockLocation = [Vector{Int}(undef,nBlocks+1) for _ in 1:nThreads] + c = Channel{Int}(nThreads) # channel holds indices of available buffers + for i=1:nThreads + put!(c,i) + end + threaded_pagedmergesort!(v,lo,hi,bufs,blockLocation,c,threadingThreshold,o) +end end # module diff --git a/test/runtests.jl b/test/runtests.jl index 7ea2780..59efff1 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -5,7 +5,7 @@ using Random a = rand(1:10000, 1000) -for alg in [TimSort, HeapSort, RadixSort, CombSort] +for alg in [TimSort, HeapSort, RadixSort, CombSort, PagedMergeSort, ThreadedPagedMergeSort] b = sort(a, alg=alg) @test issorted(b) ix = sortperm(a, alg=alg) @@ -74,7 +74,7 @@ for n in [0:10..., 100, 101, 1000, 1001] @test c == v # stable algorithms - for alg in [TimSort, RadixSort] + for alg in [TimSort, RadixSort, PagedMergeSort, ThreadedPagedMergeSort] p = sortperm(v, alg=alg, order=ord) @test p == pi s = copy(v) @@ -99,7 +99,7 @@ for n in [0:10..., 100, 101, 1000, 1001] v = randn_with_nans(n,0.1) for ord in [Base.Order.Forward, Base.Order.Reverse], - alg in [TimSort, HeapSort, RadixSort, CombSort] + alg in [TimSort, HeapSort, RadixSort, CombSort, PagedMergeSort, ThreadedPagedMergeSort] # test float sorting with NaNs s = sort(v, alg=alg, order=ord) @test issorted(s, order=ord) From e0ebe945a7f73fcd0928ca4b8071ac005e929521 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 7 Feb 2023 09:58:05 +0100 Subject: [PATCH 02/45] Update references --- src/SortingAlgorithms.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index c6e0165..88b3425 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -71,8 +71,8 @@ Characteristics: - *`O(n log n)` garuanteed runtime*. ## References - - https://www.reddit.com/r/compsci/comments/qc95r7/merge_sort_with_osqrtn_auxiliary_memory/ -(Describes the basic idea, but uses another block reordering scheme.) + - https://link.springer.com/chapter/10.1007/BFb0016253 + - https://max-arbuzov.blogspot.com/2021/10/merge-sort-with-osqrtn-auxiliary-memory.html """ const PagedMergeSort = PagedMergeSortAlg() @@ -90,8 +90,8 @@ Characteristics: - *`O(n log n)` garuanteed runtime*. ## References - - https://www.reddit.com/r/compsci/comments/qc95r7/merge_sort_with_osqrtn_auxiliary_memory/ -(Describes the basic idea, but uses another block reordering scheme.) + - https://link.springer.com/chapter/10.1007/BFb0016253 + - https://max-arbuzov.blogspot.com/2021/10/merge-sort-with-osqrtn-auxiliary-memory.html - https://en.wikipedia.org/wiki/Merge_sort#Merge_sort_with_parallel_recursion """ const ThreadedPagedMergeSort = ThreadedPagedMergeSortAlg() From 0d4aa65ad164187d3af7b0fdc8f2b8df9d4d6247 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 7 Feb 2023 09:58:58 +0100 Subject: [PATCH 03/45] Return sorted vectors in sort! --- src/SortingAlgorithms.jl | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 88b3425..a9a0adf 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -989,8 +989,7 @@ end function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD - Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) - return + return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end m = Base.midpoint(lo,hi) pagedmergesort!(v,lo,m,buf,blockLocation,o) @@ -1000,13 +999,13 @@ function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::Ab else pagedMerge!(v, buf, lo, m, hi, blockLocation, o) end + return v end function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, bufs, blockLocations, c::Channel, threadingThreshold::Integer, o=Base.Order.Forward) len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD - Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) - return + return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end m = Base.midpoint(lo,hi) if len > threadingThreshold @@ -1029,25 +1028,27 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b pagedMerge!(v, buf, lo, m, hi, blockLocation, o) end put!(c,id) + return v end const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PagedMergeSortAlg, o::Ordering) - lo >= hi && return + lo >= hi && return v n = hi + 1 - lo blocksize = isqrt(n) buf = Vector{eltype(v)}(undef,3blocksize) nBlocks = n ÷ blocksize blockLocation = Vector{Int}(undef,nBlocks+1) pagedmergesort!(v,lo,hi,buf,blockLocation,o) + return v end function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) - lo >= hi && return + lo >= hi && return v n = hi + 1 - lo nThreads=Threads.nthreads() - (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && (sort!(v, lo, hi, PagedMergeSort, o); return) + (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && return sort!(v, lo, hi, PagedMergeSort, o) threadingThreshold = max(n ÷ 4nThreads, PAGEDMERGESORT_THREADING_THRESHOLD) blocksize = isqrt(n) nBlocks = n ÷ blocksize @@ -1058,5 +1059,6 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMerg put!(c,i) end threaded_pagedmergesort!(v,lo,hi,bufs,blockLocation,c,threadingThreshold,o) + return v end end # module From 4d6e51804c6fc58d3673c12bcab6cd63502a6cd6 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 7 Feb 2023 14:34:42 +0100 Subject: [PATCH 04/45] Make midpoint() backwards compatible --- src/SortingAlgorithms.jl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index a9a0adf..3740395 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -986,12 +986,16 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, end end +# midpoint was added to Base.sort in version 1.4 and later moved to Base +# -> redefine for compatibility with earlier versions +_midpoint(lo::Integer,hi::Integer) = lo + ((hi - lo) >>> 0x01) + function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = Base.midpoint(lo,hi) + m = _midpoint(lo,hi) pagedmergesort!(v,lo,m,buf,blockLocation,o) pagedmergesort!(v,m+1,hi,buf,blockLocation,o) if len <= length(buf) @@ -1007,7 +1011,7 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = Base.midpoint(lo,hi) + m = _midpoint(lo,hi) if len > threadingThreshold thr = Threads.@spawn threaded_pagedmergesort!(v,lo,m,bufs,blockLocations,c,threadingThreshold,o) threaded_pagedmergesort!(v,m+1,hi,bufs,blockLocations,c,threadingThreshold,o) From 58b06fbe1e90e1d9f2f38dc6c228f2539cd0a1bd Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 7 Feb 2023 16:19:15 +0100 Subject: [PATCH 05/45] Use PagedMergeSort when calling ThreadedPagedMergeSort in version < 1.3 --- src/SortingAlgorithms.jl | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 3740395..0c83889 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -1006,6 +1006,20 @@ function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::Ab return v end +const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 + +function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PagedMergeSortAlg, o::Ordering) + lo >= hi && return v + n = hi + 1 - lo + blocksize = isqrt(n) + buf = Vector{eltype(v)}(undef,3blocksize) + nBlocks = n ÷ blocksize + blockLocation = Vector{Int}(undef,nBlocks+1) + pagedmergesort!(v,lo,hi,buf,blockLocation,o) + return v +end + +Base.@static if VERSION >= v"1.3" function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, bufs, blockLocations, c::Channel, threadingThreshold::Integer, o=Base.Order.Forward) len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD @@ -1034,20 +1048,6 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b put!(c,id) return v end - -const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 - -function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PagedMergeSortAlg, o::Ordering) - lo >= hi && return v - n = hi + 1 - lo - blocksize = isqrt(n) - buf = Vector{eltype(v)}(undef,3blocksize) - nBlocks = n ÷ blocksize - blockLocation = Vector{Int}(undef,nBlocks+1) - pagedmergesort!(v,lo,hi,buf,blockLocation,o) - return v -end - function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) lo >= hi && return v n = hi + 1 - lo @@ -1065,4 +1065,8 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMerg threaded_pagedmergesort!(v,lo,hi,bufs,blockLocation,c,threadingThreshold,o) return v end +else + # no multithreading in earlier versions -> use single threaded version instead + sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) = sort!(v, lo, hi, PagedMergeSort, o) +end end # module From ce9ad62b931b8af1c5067ed6c34d3a2f1637033b Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Fri, 10 Feb 2023 09:35:31 +0100 Subject: [PATCH 06/45] Improve style - unify function signatures - remove trailing whitespace - rename variables - always use space after comma in fuction definitions/calls - improve comments --- src/SortingAlgorithms.jl | 113 ++++++++++++++++++++------------------- 1 file changed, 57 insertions(+), 56 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 0c83889..c5dab43 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -680,22 +680,22 @@ end ### # merge v[lo:hiA] and v[hiA+1:hi] ([A;B]) using buffer t[1:1 + hi-lo] -function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer, hi::Integer, hiA::Integer, o::Ordering) where T +function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Integer, o::Ordering) where T @assert lo <= hiA <= hi loA = lo loB = hiA + 1 hiB = hi - - # output array indices + + # output array indices oL = 1 - oR = 1 + hi-lo - + oR = 1 + hi - lo + # input array indices iAL = loA iBL = loB iAR = hiA iBR = hiB - + @inbounds begin # two ended merge while iAL < iAR && iBL < iBR @@ -707,7 +707,7 @@ function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer iAL += 1 end oL +=1 - + if lt(o,v[iAR], v[iBR]) t[oR] = v[iBR] iBR -= 1 @@ -716,7 +716,7 @@ function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer iAR -= 1 end oR -=1 - end + end # cleanup # regular merge while iAL <= iAR && iBL <= iBR @@ -751,7 +751,7 @@ end # merge v[lo:lo+lenA-1] and v[lo+lenA:hi] using buffer t[1:lenA] # based on Base.Sort MergeSort -function merge!(v::AbstractVector{T},t::AbstractVector{T}, lenA::Integer, lo::Integer, hi::Integer, o::Ordering) where T +function merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer, hi::Integer, lenA::Integer, o::Ordering) where T @inbounds begin i = 1 j = lo @@ -782,11 +782,13 @@ function merge!(v::AbstractVector{T},t::AbstractVector{T}, lenA::Integer, lo::In end # macro used for block management in pagedMerge! +# use next block in A (left subarray) if it is free, +# otherwise use next block in B macro getNextBlock!() quote if iA > nextBlockA * blocksize + lo currentBlock = nextBlockA - nextBlockA += 1 + nextBlockA += 1 else currentBlock = nextBlockB nextBlockB += 1 @@ -796,18 +798,18 @@ macro getNextBlock!() end |> esc end -# merge v[lo:endA] and v[endA+1:hi] using buffer buf in O(sqrt(n)) space -function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, endA::Integer, hi::Integer, blockLocation::AbstractVector{<:Integer}, o::Ordering) where T - @assert lo < endA < hi +# merge v[lo:hiA] and v[hiA+1:hi] using buffer buf in O(sqrt(n)) space +function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Integer, blockLocation::AbstractVector{<:Integer}, o::Ordering) where T + @assert lo < hiA < hi iA = lo - iB = endA + 1 - endB = hi - lenA = endA + 1 - lo - lenB = endB - endA + iB = hiA + 1 + hiB = hi + lenA = hiA + 1 - lo + lenB = hiB - hiA # regular merge if buffer is big enough if lenA <= length(buf) - merge!(v,buf,lenA,lo,hi,o) + merge!(v, buf, lo, hi, lenA, o) return elseif lenB <= length(buf) # TODO ? @@ -822,9 +824,9 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, @assert length(buf) >= 3blocksize @assert length(blockLocation) >= nBlocks+1 - @inline getBlockOffset(block) = (block-1)*blocksize + lo - 1 + @inline getBlockOffset(block) = (block-1)*blocksize + lo - 1 - @inbounds begin + @inbounds begin ################## # merge ################## @@ -842,7 +844,7 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, end nextBlockA = 1 - nextBlockB = (endA+blocksize-lo) ÷ blocksize + 1 + nextBlockB = (hiA+blocksize-lo) ÷ blocksize + 1 blockLocation .= 0 blockLocation[1:3] = -1:-1:-3 @@ -850,7 +852,7 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, currentBlock = 0 currentBlockIdx = 4 # more efficient loop while more than blocksize elements of A and B are remaining - while iA < endA-blocksize && iB < endB-blocksize + while iA < hiA-blocksize && iB < hiB-blocksize @getNextBlock! offset = (currentBlock-1)*blocksize oIdx = lo + offset @@ -866,11 +868,11 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, end end # merge until either A or B is empty - while iA <= endA && iB <= endB + while iA <= hiA && iB <= hiB @getNextBlock! oIdx = 1 offset = getBlockOffset(currentBlock) - while oIdx <= blocksize && iA <= endA && iB <= endB + while oIdx <= blocksize && iA <= hiA && iB <= hiB if lt(o, v[iB], v[iA]) v[offset+oIdx] = v[iB] iB += 1 @@ -884,26 +886,26 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, # copy remaining elements # either A or B is empty # copy rest of A - while iA <= endA + while iA <= hiA if oIdx > blocksize @getNextBlock! oIdx = 1 end offset = getBlockOffset(currentBlock) - while oIdx <= blocksize && iA <= endA + while oIdx <= blocksize && iA <= hiA v[offset + oIdx] = v[iA] iA += 1 oIdx += 1 end end # copy rest of B - while iB <= endB + while iB <= hiB if oIdx > blocksize @getNextBlock! oIdx = 1 end offset = getBlockOffset(currentBlock) - while oIdx <= blocksize && iB <= endB + while oIdx <= blocksize && iB <= hiB v[offset + oIdx] = v[iB] iB += 1 oIdx += 1 @@ -936,7 +938,7 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, end if partialBlockPresent freeBlocks[i] = currentBlock - end + end freeBlocksIdx = 3 doneBlockIdx = 1 currentBlock = freeBlocks[end] @@ -946,7 +948,7 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, while true blc = blockLocation[currentBlock] # index of block with data belonging to currentBlock if blc > 0 - # data for currentBlock is in v + # data for currentBlock is in v offset = getBlockOffset(currentBlock) offset2 = getBlockOffset(blc) for j = 1:blocksize @@ -973,7 +975,7 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, doneBlockIdx += 1 doneBlockIdx == nBlocks && return end - # copy misplaced block into buf and continue + # copy misplaced block into buf and continue currentBlock = blockLocation[doneBlockIdx] offset = getBlockOffset(currentBlock) for j = 1:blocksize @@ -983,52 +985,51 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, end end end - end + end end # midpoint was added to Base.sort in version 1.4 and later moved to Base # -> redefine for compatibility with earlier versions -_midpoint(lo::Integer,hi::Integer) = lo + ((hi - lo) >>> 0x01) +_midpoint(lo::Integer, hi::Integer) = lo + ((hi - lo) >>> 0x01) function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = _midpoint(lo,hi) - pagedmergesort!(v,lo,m,buf,blockLocation,o) - pagedmergesort!(v,m+1,hi,buf,blockLocation,o) + m = _midpoint(lo, hi) + pagedmergesort!(v, lo, m, buf, blockLocation, o) + pagedmergesort!(v, m+1, hi, buf, blockLocation, o) if len <= length(buf) - twoended_merge!(v, buf, lo, hi, m,o) + twoended_merge!(v, buf, lo, m, hi, o) else - pagedMerge!(v, buf, lo, m, hi, blockLocation, o) + pagedMerge!(v, buf, lo, m, hi, blockLocation, o) end return v end -const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 - function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PagedMergeSortAlg, o::Ordering) lo >= hi && return v n = hi + 1 - lo blocksize = isqrt(n) - buf = Vector{eltype(v)}(undef,3blocksize) + buf = Vector{eltype(v)}(undef, 3blocksize) nBlocks = n ÷ blocksize - blockLocation = Vector{Int}(undef,nBlocks+1) - pagedmergesort!(v,lo,hi,buf,blockLocation,o) + blockLocation = Vector{Int}(undef, nBlocks+1) + pagedmergesort!(v, lo, hi, buf, blockLocation, o) return v end Base.@static if VERSION >= v"1.3" -function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, bufs, blockLocations, c::Channel, threadingThreshold::Integer, o=Base.Order.Forward) +const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 +function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, bufs, blockLocations, c::Channel, threadingThreshold::Integer, o=Base.Order.Forward) len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = _midpoint(lo,hi) + m = _midpoint(lo, hi) if len > threadingThreshold - thr = Threads.@spawn threaded_pagedmergesort!(v,lo,m,bufs,blockLocations,c,threadingThreshold,o) - threaded_pagedmergesort!(v,m+1,hi,bufs,blockLocations,c,threadingThreshold,o) + thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, bufs, blockLocations, c, threadingThreshold, o) + threaded_pagedmergesort!(v, m+1, hi, bufs, blockLocations, c, threadingThreshold, o) wait(thr) id = take!(c) buf = bufs[id] @@ -1037,15 +1038,15 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b id = take!(c) buf = bufs[id] blockLocation = blockLocations[id] - pagedmergesort!(v,lo,m,buf,blockLocation,o) - pagedmergesort!(v,m+1,hi,buf,blockLocation,o) + pagedmergesort!(v, lo, m, buf, blockLocation, o) + pagedmergesort!(v, m+1, hi, buf, blockLocation, o) end if len <= length(buf) twoended_merge!(v, buf, lo, hi, m, o) else - pagedMerge!(v, buf, lo, m, hi, blockLocation, o) + pagedMerge!(v, buf, lo, m, hi, blockLocation, o) end - put!(c,id) + put!(c, id) return v end function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) @@ -1056,17 +1057,17 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMerg threadingThreshold = max(n ÷ 4nThreads, PAGEDMERGESORT_THREADING_THRESHOLD) blocksize = isqrt(n) nBlocks = n ÷ blocksize - bufs = [Vector{eltype(v)}(undef,3blocksize) for _ in 1:nThreads] # allocate buffer for each thread - blockLocation = [Vector{Int}(undef,nBlocks+1) for _ in 1:nThreads] + bufs = [Vector{eltype(v)}(undef, 3blocksize) for _ in 1:nThreads] # allocate buffer for each thread + blockLocation = [Vector{Int}(undef, nBlocks+1) for _ in 1:nThreads] c = Channel{Int}(nThreads) # channel holds indices of available buffers for i=1:nThreads - put!(c,i) + put!(c, i) end - threaded_pagedmergesort!(v,lo,hi,bufs,blockLocation,c,threadingThreshold,o) + threaded_pagedmergesort!(v, lo, hi, bufs, blockLocation, c, threadingThreshold, o) return v end else - # no multithreading in earlier versions -> use single threaded version instead + # use single threaded function when VERSION < v"1.3" sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) = sort!(v, lo, hi, PagedMergeSort, o) end end # module From 66315f77298121b3960b7ae6397049e26768a721 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 5 Feb 2023 16:36:12 +0100 Subject: [PATCH 07/45] Add PagedMergeSort Adds the PagedMergeSort algorithm, a merge sort with O(sqrt n) auxiliary space usage. --- Project.toml | 1 + src/SortingAlgorithms.jl | 435 ++++++++++++++++++++++++++++++++++++++- test/runtests.jl | 6 +- 3 files changed, 438 insertions(+), 4 deletions(-) diff --git a/Project.toml b/Project.toml index 23e0339..928c4e6 100644 --- a/Project.toml +++ b/Project.toml @@ -4,6 +4,7 @@ version = "1.1.0" [deps] DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" [compat] julia = "1" diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 9f528fa..9b37ad5 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -8,13 +8,16 @@ using Base.Order import Base.Sort: sort! import DataStructures: heapify!, percolate_down! +import StaticArrays: MVector -export HeapSort, TimSort, RadixSort, CombSort +export HeapSort, TimSort, RadixSort, CombSort, PagedMergeSort, ThreadedPagedMergeSort struct HeapSortAlg <: Algorithm end struct TimSortAlg <: Algorithm end struct RadixSortAlg <: Algorithm end struct CombSortAlg <: Algorithm end +struct PagedMergeSortAlg <: Algorithm end +struct ThreadedPagedMergeSortAlg <: Algorithm end function maybe_optimize(x::Algorithm) isdefined(Base.Sort, :InitialOptimizations) ? Base.Sort.InitialOptimizations(x) : x @@ -51,6 +54,52 @@ Characteristics: """ const CombSort = maybe_optimize(CombSortAlg()) +""" + PagedMergeSort + +Indicates that a sorting function should use the paged merge sort +algorithm. Paged merge sort uses is a merge sort, that uses different +merge routines to achieve stable sorting with a scratch space of size O(√n). +The merge routine for merging large subarrays merges +blocks/pages of size O(√n) almost in place, before reordering them using a page table. +At deeper recursion levels, where the scratch space is big enough, +normal merging is used, where one input is copied into the scratch space. +When the scratch space is large enough to hold the complete subarray, +the input is merged interleaved from both sides, which increases performance +for random data. + +Characteristics: + - *stable* does preserve the ordering of elements which + compare equal (e.g. "a" and "A" in a sort of letters which + ignores case). + - *O(√n)* auxilary memory usage. + - *`O(n log n)` garuanteed runtime*. + +## References + - https://www.reddit.com/r/compsci/comments/qc95r7/merge_sort_with_osqrtn_auxiliary_memory/ +(Describes the basic idea, but uses another block reordering scheme.) +""" +const PagedMergeSort = PagedMergeSortAlg() + +""" + ThreadedPagedMergeSort + +Multithreaded version of PagedMergeSort using Threads.nthreads-times the auxilary space. +Uses multithreaded recursion (not multithreaded merging), so the maximum speedup is +limited to O(log n) +Characteristics: + - *stable* does preserve the ordering of elements which + compare equal (e.g. "a" and "A" in a sort of letters which + ignores case). + - *O(√n)* auxilary memory usage. + - *`O(n log n)` garuanteed runtime*. + +## References + - https://www.reddit.com/r/compsci/comments/qc95r7/merge_sort_with_osqrtn_auxiliary_memory/ +(Describes the basic idea, but uses another block reordering scheme.) + - https://en.wikipedia.org/wiki/Merge_sort#Merge_sort_with_parallel_recursion +""" +const ThreadedPagedMergeSort = ThreadedPagedMergeSortAlg() ## Heap sort @@ -631,4 +680,388 @@ else end end +### +# ThreadedPagedMergeSort +### + +# merge v[lo:hiA] and v[hiA+1:hi] ([A;B]) using buffer t[1:1 + hi-lo] +function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer, hi::Integer, hiA::Integer, o::Ordering) where T + @assert lo <= hiA <= hi + loA = lo + loB = hiA + 1 + hiB = hi + + # output array indices + oL = 1 + oR = 1 + hi-lo + + # input array indices + iAL = loA + iBL = loB + iAR = hiA + iBR = hiB + + @inbounds begin + # two ended merge + while iAL < iAR && iBL < iBR + if lt(o,v[iBL], v[iAL]) + t[oL] = v[iBL] + iBL += 1 + else + t[oL] = v[iAL] + iAL += 1 + end + oL +=1 + + if lt(o,v[iAR], v[iBR]) + t[oR] = v[iBR] + iBR -= 1 + else + t[oR] = v[iAR] + iAR -= 1 + end + oR -=1 + end + # cleanup + # regular merge + while iAL <= iAR && iBL <= iBR + if lt(o,v[iBL], v[iAL]) + t[oL] = v[iBL] + iBL += 1 + else + t[oL] = v[iAL] + iAL += 1 + end + oL += 1 + end + # either A or B is empty -> copy remaining items + while iAL <= iAR + t[oL] = v[iAL] + iAL += 1 + oL += 1 + end + while iBL <= iBR + t[oL] = v[iBL] + iBL += 1 + oL += 1 + end + # copy back from t to v + offset = lo-1 + len = 1 + hi - lo + @inbounds for i = 1:len + v[offset+i] = t[i] + end + end +end + +# merge v[lo:lo+lenA-1] and v[lo+lenA:hi] using buffer t[1:lenA] +# based on Base.Sort MergeSort +function merge!(v::AbstractVector{T},t::AbstractVector{T}, lenA::Integer, lo::Integer, hi::Integer, o::Ordering) where T + @inbounds begin + i = 1 + j = lo + while i <= lenA + t[i] = v[j] + i +=1 + j +=1 + end + iA = 1 + k = lo + iB = lo + lenA + while k < iB <= hi + if lt(o,v[iB], t[iA]) + v[k] = v[iB] + iB += 1 + else + v[k] = t[iA] + iA += 1 + end + k += 1 + end + while iA <= lenA + v[k] = t[iA] + k += 1 + iA += 1 + end + end +end + +# macro used for block management in pagedMerge! +macro getNextBlock!() + quote + if iA > nextBlockA * blocksize + lo + currentBlock = nextBlockA + nextBlockA += 1 + else + currentBlock = nextBlockB + nextBlockB += 1 + end + blockLocation[currentBlockIdx] = currentBlock + currentBlockIdx += 1 + end |> esc +end + +# merge v[lo:endA] and v[endA+1:hi] using buffer buf in O(sqrt(n)) space +function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, endA::Integer, hi::Integer, blockLocation::AbstractVector{<:Integer}, o::Ordering) where T + @assert lo < endA < hi + iA = lo + iB = endA + 1 + endB = hi + lenA = endA + 1 - lo + lenB = endB - endA + + # regular merge if buffer is big enough + if lenA <= length(buf) + merge!(v,buf,lenA,lo,hi,o) + return + elseif lenB <= length(buf) + # TODO ? + # does not occur in balanced mergesort where length(A) <= length(B) + error("not implemented") + return + end + + len = hi + 1 - lo + blocksize = isqrt(len) + nBlocks = len ÷ blocksize + @assert length(buf) >= 3blocksize + @assert length(blockLocation) >= nBlocks+1 + + @inline getBlockOffset(block) = (block-1)*blocksize + lo - 1 + + @inbounds begin + ################## + # merge + ################## + # merge into buf until full + oBuf = 1 + while oBuf <= 3blocksize # cannot run out of input elements here + if lt(o, v[iB], v[iA]) # -> merge! would have been used + buf[oBuf] = v[iB] + iB += 1 + else + buf[oBuf] = v[iA] + iA += 1 + end + oBuf += 1 + end + + nextBlockA = 1 + nextBlockB = (endA+blocksize-lo) ÷ blocksize + 1 + blockLocation .= 0 + blockLocation[1:3] = -1:-1:-3 + + oIdx = 1 + currentBlock = 0 + currentBlockIdx = 4 + # more efficient loop while more than blocksize elements of A and B are remaining + while iA < endA-blocksize && iB < endB-blocksize + @getNextBlock! + offset = (currentBlock-1)*blocksize + oIdx = lo + offset + while oIdx <= blocksize+offset + lo - 1 + if lt(o, v[iB], v[iA]) + v[oIdx] = v[iB] + iB += 1 + else + v[oIdx] = v[iA] + iA += 1 + end + oIdx += 1 + end + end + # merge until either A or B is empty + while iA <= endA && iB <= endB + @getNextBlock! + oIdx = 1 + offset = getBlockOffset(currentBlock) + while oIdx <= blocksize && iA <= endA && iB <= endB + if lt(o, v[iB], v[iA]) + v[offset+oIdx] = v[iB] + iB += 1 + else + v[offset+oIdx] = v[iA] + iA += 1 + end + oIdx += 1 + end + end + # copy remaining elements + # either A or B is empty + # copy rest of A + while iA <= endA + if oIdx > blocksize + @getNextBlock! + oIdx = 1 + end + offset = getBlockOffset(currentBlock) + while oIdx <= blocksize && iA <= endA + v[offset + oIdx] = v[iA] + iA += 1 + oIdx += 1 + end + end + # copy rest of B + while iB <= endB + if oIdx > blocksize + @getNextBlock! + oIdx = 1 + end + offset = getBlockOffset(currentBlock) + while oIdx <= blocksize && iB <= endB + v[offset + oIdx] = v[iB] + iB += 1 + oIdx += 1 + end + end + # copy last partial block to end + partialBlockPresent = oIdx <= blocksize + if partialBlockPresent + offset = getBlockOffset(currentBlock) + offset2 = nBlocks*blocksize + lo - 1 + for j = 1:oIdx-1 + v[offset2 + j] = v[offset + j] + end + blockLocation[currentBlockIdx-1] = 0 + end + ######################################### + # calculate location of the 3 free blocks + ######################################### + nFreeBlocksB = nBlocks + 1 - nextBlockB + nFreeBlocksA = 3 - nFreeBlocksB - Int(partialBlockPresent) + freeBlocks = MVector{3,Int}(undef) + i = 1 + for j = 0:nFreeBlocksA-1 + freeBlocks[i] = nextBlockA + j + i += 1 + end + for j = 0:nFreeBlocksB-1 + freeBlocks[i] = nextBlockB + j + i += 1 + end + if partialBlockPresent + freeBlocks[i] = currentBlock + end + freeBlocksIdx = 3 + doneBlockIdx = 1 + currentBlock = freeBlocks[end] + ################## + # rearrange blocks + ################## + while true + blc = blockLocation[currentBlock] # index of block with data belonging to currentBlock + if blc > 0 + # data for currentBlock is in v + offset = getBlockOffset(currentBlock) + offset2 = getBlockOffset(blc) + for j = 1:blocksize + v[offset + j] = v[offset2 + j] + end + blockLocation[currentBlock] = 0 + currentBlock = blc + else + # data for currentBlock is in buf + offset = getBlockOffset(currentBlock) + offset2 = (-blc-1)*blocksize + for j = 1:blocksize + v[offset + j] = buf[offset2 + j] + end + blockLocation[currentBlock] = 0 + if freeBlocksIdx > 1 + # get next free block + freeBlocksIdx -= 1 + currentBlock = freeBlocks[freeBlocksIdx] + else + # no free block remains + # make sure that all blocks are done + while blockLocation[doneBlockIdx] == 0 || blockLocation[doneBlockIdx] == doneBlockIdx + doneBlockIdx += 1 + doneBlockIdx == nBlocks && return + end + # copy misplaced block into buf and continue + currentBlock = blockLocation[doneBlockIdx] + offset = getBlockOffset(currentBlock) + for j = 1:blocksize + buf[j] = v[offset + j] + end + blockLocation[doneBlockIdx] = -1 + end + end + end + end +end + +function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T + len = hi + 1 -lo + if len <= Base.SMALL_THRESHOLD + Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) + return + end + m = Base.midpoint(lo,hi) + pagedmergesort!(v,lo,m,buf,blockLocation,o) + pagedmergesort!(v,m+1,hi,buf,blockLocation,o) + if len <= length(buf) + twoended_merge!(v, buf, lo, hi, m,o) + else + pagedMerge!(v, buf, lo, m, hi, blockLocation, o) + end +end + +function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, bufs, blockLocations, c::Channel, threadingThreshold::Integer, o=Base.Order.Forward) + len = hi + 1 -lo + if len <= Base.SMALL_THRESHOLD + Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) + return + end + m = Base.midpoint(lo,hi) + if len > threadingThreshold + thr = Threads.@spawn threaded_pagedmergesort!(v,lo,m,bufs,blockLocations,c,threadingThreshold,o) + threaded_pagedmergesort!(v,m+1,hi,bufs,blockLocations,c,threadingThreshold,o) + wait(thr) + id = take!(c) + buf = bufs[id] + blockLocation = blockLocations[id] + else + id = take!(c) + buf = bufs[id] + blockLocation = blockLocations[id] + pagedmergesort!(v,lo,m,buf,blockLocation,o) + pagedmergesort!(v,m+1,hi,buf,blockLocation,o) + end + if len <= length(buf) + twoended_merge!(v, buf, lo, hi, m, o) + else + pagedMerge!(v, buf, lo, m, hi, blockLocation, o) + end + put!(c,id) +end + +const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 + +function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PagedMergeSortAlg, o::Ordering) + lo >= hi && return + n = hi + 1 - lo + blocksize = isqrt(n) + buf = Vector{eltype(v)}(undef,3blocksize) + nBlocks = n ÷ blocksize + blockLocation = Vector{Int}(undef,nBlocks+1) + pagedmergesort!(v,lo,hi,buf,blockLocation,o) +end + +function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) + lo >= hi && return + n = hi + 1 - lo + nThreads=Threads.nthreads() + (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && (sort!(v, lo, hi, PagedMergeSort, o); return) + threadingThreshold = max(n ÷ 4nThreads, PAGEDMERGESORT_THREADING_THRESHOLD) + blocksize = isqrt(n) + nBlocks = n ÷ blocksize + bufs = [Vector{eltype(v)}(undef,3blocksize) for _ in 1:nThreads] # allocate buffer for each thread + blockLocation = [Vector{Int}(undef,nBlocks+1) for _ in 1:nThreads] + c = Channel{Int}(nThreads) # channel holds indices of available buffers + for i=1:nThreads + put!(c,i) + end + threaded_pagedmergesort!(v,lo,hi,bufs,blockLocation,c,threadingThreshold,o) +end end # module diff --git a/test/runtests.jl b/test/runtests.jl index 5738105..18355b4 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -5,7 +5,7 @@ using Random a = rand(1:10000, 1000) -for alg in [TimSort, HeapSort, RadixSort, CombSort] +for alg in [TimSort, HeapSort, RadixSort, CombSort, PagedMergeSort, ThreadedPagedMergeSort] b = sort(a, alg=alg) @test issorted(b) ix = sortperm(a, alg=alg) @@ -74,7 +74,7 @@ for n in [0:10..., 100, 101, 1000, 1001] @test c == v # stable algorithms - for alg in [TimSort, RadixSort] + for alg in [TimSort, RadixSort, PagedMergeSort, ThreadedPagedMergeSort] p = sortperm(v, alg=alg, order=ord) @test p == pi s = copy(v) @@ -99,7 +99,7 @@ for n in [0:10..., 100, 101, 1000, 1001] v = randn_with_nans(n,0.1) for ord in [Base.Order.Forward, Base.Order.Reverse], - alg in [TimSort, HeapSort, RadixSort, CombSort] + alg in [TimSort, HeapSort, RadixSort, CombSort, PagedMergeSort, ThreadedPagedMergeSort] # test float sorting with NaNs s = sort(v, alg=alg, order=ord) @test issorted(s, order=ord) From df3343986c1d4363bb955dbff997e1d5025cdc0c Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 7 Feb 2023 09:58:05 +0100 Subject: [PATCH 08/45] Update references --- src/SortingAlgorithms.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 9b37ad5..d8643cd 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -76,8 +76,8 @@ Characteristics: - *`O(n log n)` garuanteed runtime*. ## References - - https://www.reddit.com/r/compsci/comments/qc95r7/merge_sort_with_osqrtn_auxiliary_memory/ -(Describes the basic idea, but uses another block reordering scheme.) + - https://link.springer.com/chapter/10.1007/BFb0016253 + - https://max-arbuzov.blogspot.com/2021/10/merge-sort-with-osqrtn-auxiliary-memory.html """ const PagedMergeSort = PagedMergeSortAlg() @@ -95,8 +95,8 @@ Characteristics: - *`O(n log n)` garuanteed runtime*. ## References - - https://www.reddit.com/r/compsci/comments/qc95r7/merge_sort_with_osqrtn_auxiliary_memory/ -(Describes the basic idea, but uses another block reordering scheme.) + - https://link.springer.com/chapter/10.1007/BFb0016253 + - https://max-arbuzov.blogspot.com/2021/10/merge-sort-with-osqrtn-auxiliary-memory.html - https://en.wikipedia.org/wiki/Merge_sort#Merge_sort_with_parallel_recursion """ const ThreadedPagedMergeSort = ThreadedPagedMergeSortAlg() From b33b4e8b34b6f5c54fbadcc3eccf80f35ef8d842 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 7 Feb 2023 09:58:58 +0100 Subject: [PATCH 09/45] Return sorted vectors in sort! --- src/SortingAlgorithms.jl | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index d8643cd..3c77552 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -994,8 +994,7 @@ end function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD - Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) - return + return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end m = Base.midpoint(lo,hi) pagedmergesort!(v,lo,m,buf,blockLocation,o) @@ -1005,13 +1004,13 @@ function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::Ab else pagedMerge!(v, buf, lo, m, hi, blockLocation, o) end + return v end function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, bufs, blockLocations, c::Channel, threadingThreshold::Integer, o=Base.Order.Forward) len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD - Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) - return + return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end m = Base.midpoint(lo,hi) if len > threadingThreshold @@ -1034,25 +1033,27 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b pagedMerge!(v, buf, lo, m, hi, blockLocation, o) end put!(c,id) + return v end const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PagedMergeSortAlg, o::Ordering) - lo >= hi && return + lo >= hi && return v n = hi + 1 - lo blocksize = isqrt(n) buf = Vector{eltype(v)}(undef,3blocksize) nBlocks = n ÷ blocksize blockLocation = Vector{Int}(undef,nBlocks+1) pagedmergesort!(v,lo,hi,buf,blockLocation,o) + return v end function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) - lo >= hi && return + lo >= hi && return v n = hi + 1 - lo nThreads=Threads.nthreads() - (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && (sort!(v, lo, hi, PagedMergeSort, o); return) + (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && return sort!(v, lo, hi, PagedMergeSort, o) threadingThreshold = max(n ÷ 4nThreads, PAGEDMERGESORT_THREADING_THRESHOLD) blocksize = isqrt(n) nBlocks = n ÷ blocksize @@ -1063,5 +1064,6 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMerg put!(c,i) end threaded_pagedmergesort!(v,lo,hi,bufs,blockLocation,c,threadingThreshold,o) + return v end end # module From a5d5cea07618663c5ce3d595dd8148d22b670f16 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 7 Feb 2023 14:34:42 +0100 Subject: [PATCH 10/45] Make midpoint() backwards compatible --- src/SortingAlgorithms.jl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 3c77552..30305c5 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -991,12 +991,16 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, end end +# midpoint was added to Base.sort in version 1.4 and later moved to Base +# -> redefine for compatibility with earlier versions +_midpoint(lo::Integer,hi::Integer) = lo + ((hi - lo) >>> 0x01) + function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = Base.midpoint(lo,hi) + m = _midpoint(lo,hi) pagedmergesort!(v,lo,m,buf,blockLocation,o) pagedmergesort!(v,m+1,hi,buf,blockLocation,o) if len <= length(buf) @@ -1012,7 +1016,7 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = Base.midpoint(lo,hi) + m = _midpoint(lo,hi) if len > threadingThreshold thr = Threads.@spawn threaded_pagedmergesort!(v,lo,m,bufs,blockLocations,c,threadingThreshold,o) threaded_pagedmergesort!(v,m+1,hi,bufs,blockLocations,c,threadingThreshold,o) From c2ff4406543926bdbf8b95db85d1a91eb6120f2e Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 7 Feb 2023 16:19:15 +0100 Subject: [PATCH 11/45] Use PagedMergeSort when calling ThreadedPagedMergeSort in version < 1.3 --- src/SortingAlgorithms.jl | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 30305c5..89fb479 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -1011,6 +1011,20 @@ function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::Ab return v end +const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 + +function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PagedMergeSortAlg, o::Ordering) + lo >= hi && return v + n = hi + 1 - lo + blocksize = isqrt(n) + buf = Vector{eltype(v)}(undef,3blocksize) + nBlocks = n ÷ blocksize + blockLocation = Vector{Int}(undef,nBlocks+1) + pagedmergesort!(v,lo,hi,buf,blockLocation,o) + return v +end + +Base.@static if VERSION >= v"1.3" function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, bufs, blockLocations, c::Channel, threadingThreshold::Integer, o=Base.Order.Forward) len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD @@ -1039,20 +1053,6 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b put!(c,id) return v end - -const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 - -function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PagedMergeSortAlg, o::Ordering) - lo >= hi && return v - n = hi + 1 - lo - blocksize = isqrt(n) - buf = Vector{eltype(v)}(undef,3blocksize) - nBlocks = n ÷ blocksize - blockLocation = Vector{Int}(undef,nBlocks+1) - pagedmergesort!(v,lo,hi,buf,blockLocation,o) - return v -end - function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) lo >= hi && return v n = hi + 1 - lo @@ -1070,4 +1070,8 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMerg threaded_pagedmergesort!(v,lo,hi,bufs,blockLocation,c,threadingThreshold,o) return v end +else + # no multithreading in earlier versions -> use single threaded version instead + sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) = sort!(v, lo, hi, PagedMergeSort, o) +end end # module From 2da1f83683993baa3bdbb60c5fed1e55dfa4d158 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Fri, 10 Feb 2023 09:35:31 +0100 Subject: [PATCH 12/45] Improve style - unify function signatures - remove trailing whitespace - rename variables - always use space after comma in fuction definitions/calls - improve comments --- src/SortingAlgorithms.jl | 113 ++++++++++++++++++++------------------- 1 file changed, 57 insertions(+), 56 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 89fb479..678211d 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -685,22 +685,22 @@ end ### # merge v[lo:hiA] and v[hiA+1:hi] ([A;B]) using buffer t[1:1 + hi-lo] -function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer, hi::Integer, hiA::Integer, o::Ordering) where T +function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Integer, o::Ordering) where T @assert lo <= hiA <= hi loA = lo loB = hiA + 1 hiB = hi - - # output array indices + + # output array indices oL = 1 - oR = 1 + hi-lo - + oR = 1 + hi - lo + # input array indices iAL = loA iBL = loB iAR = hiA iBR = hiB - + @inbounds begin # two ended merge while iAL < iAR && iBL < iBR @@ -712,7 +712,7 @@ function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer iAL += 1 end oL +=1 - + if lt(o,v[iAR], v[iBR]) t[oR] = v[iBR] iBR -= 1 @@ -721,7 +721,7 @@ function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer iAR -= 1 end oR -=1 - end + end # cleanup # regular merge while iAL <= iAR && iBL <= iBR @@ -756,7 +756,7 @@ end # merge v[lo:lo+lenA-1] and v[lo+lenA:hi] using buffer t[1:lenA] # based on Base.Sort MergeSort -function merge!(v::AbstractVector{T},t::AbstractVector{T}, lenA::Integer, lo::Integer, hi::Integer, o::Ordering) where T +function merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer, hi::Integer, lenA::Integer, o::Ordering) where T @inbounds begin i = 1 j = lo @@ -787,11 +787,13 @@ function merge!(v::AbstractVector{T},t::AbstractVector{T}, lenA::Integer, lo::In end # macro used for block management in pagedMerge! +# use next block in A (left subarray) if it is free, +# otherwise use next block in B macro getNextBlock!() quote if iA > nextBlockA * blocksize + lo currentBlock = nextBlockA - nextBlockA += 1 + nextBlockA += 1 else currentBlock = nextBlockB nextBlockB += 1 @@ -801,18 +803,18 @@ macro getNextBlock!() end |> esc end -# merge v[lo:endA] and v[endA+1:hi] using buffer buf in O(sqrt(n)) space -function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, endA::Integer, hi::Integer, blockLocation::AbstractVector{<:Integer}, o::Ordering) where T - @assert lo < endA < hi +# merge v[lo:hiA] and v[hiA+1:hi] using buffer buf in O(sqrt(n)) space +function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Integer, blockLocation::AbstractVector{<:Integer}, o::Ordering) where T + @assert lo < hiA < hi iA = lo - iB = endA + 1 - endB = hi - lenA = endA + 1 - lo - lenB = endB - endA + iB = hiA + 1 + hiB = hi + lenA = hiA + 1 - lo + lenB = hiB - hiA # regular merge if buffer is big enough if lenA <= length(buf) - merge!(v,buf,lenA,lo,hi,o) + merge!(v, buf, lo, hi, lenA, o) return elseif lenB <= length(buf) # TODO ? @@ -827,9 +829,9 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, @assert length(buf) >= 3blocksize @assert length(blockLocation) >= nBlocks+1 - @inline getBlockOffset(block) = (block-1)*blocksize + lo - 1 + @inline getBlockOffset(block) = (block-1)*blocksize + lo - 1 - @inbounds begin + @inbounds begin ################## # merge ################## @@ -847,7 +849,7 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, end nextBlockA = 1 - nextBlockB = (endA+blocksize-lo) ÷ blocksize + 1 + nextBlockB = (hiA+blocksize-lo) ÷ blocksize + 1 blockLocation .= 0 blockLocation[1:3] = -1:-1:-3 @@ -855,7 +857,7 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, currentBlock = 0 currentBlockIdx = 4 # more efficient loop while more than blocksize elements of A and B are remaining - while iA < endA-blocksize && iB < endB-blocksize + while iA < hiA-blocksize && iB < hiB-blocksize @getNextBlock! offset = (currentBlock-1)*blocksize oIdx = lo + offset @@ -871,11 +873,11 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, end end # merge until either A or B is empty - while iA <= endA && iB <= endB + while iA <= hiA && iB <= hiB @getNextBlock! oIdx = 1 offset = getBlockOffset(currentBlock) - while oIdx <= blocksize && iA <= endA && iB <= endB + while oIdx <= blocksize && iA <= hiA && iB <= hiB if lt(o, v[iB], v[iA]) v[offset+oIdx] = v[iB] iB += 1 @@ -889,26 +891,26 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, # copy remaining elements # either A or B is empty # copy rest of A - while iA <= endA + while iA <= hiA if oIdx > blocksize @getNextBlock! oIdx = 1 end offset = getBlockOffset(currentBlock) - while oIdx <= blocksize && iA <= endA + while oIdx <= blocksize && iA <= hiA v[offset + oIdx] = v[iA] iA += 1 oIdx += 1 end end # copy rest of B - while iB <= endB + while iB <= hiB if oIdx > blocksize @getNextBlock! oIdx = 1 end offset = getBlockOffset(currentBlock) - while oIdx <= blocksize && iB <= endB + while oIdx <= blocksize && iB <= hiB v[offset + oIdx] = v[iB] iB += 1 oIdx += 1 @@ -941,7 +943,7 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, end if partialBlockPresent freeBlocks[i] = currentBlock - end + end freeBlocksIdx = 3 doneBlockIdx = 1 currentBlock = freeBlocks[end] @@ -951,7 +953,7 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, while true blc = blockLocation[currentBlock] # index of block with data belonging to currentBlock if blc > 0 - # data for currentBlock is in v + # data for currentBlock is in v offset = getBlockOffset(currentBlock) offset2 = getBlockOffset(blc) for j = 1:blocksize @@ -978,7 +980,7 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, doneBlockIdx += 1 doneBlockIdx == nBlocks && return end - # copy misplaced block into buf and continue + # copy misplaced block into buf and continue currentBlock = blockLocation[doneBlockIdx] offset = getBlockOffset(currentBlock) for j = 1:blocksize @@ -988,52 +990,51 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, end end end - end + end end # midpoint was added to Base.sort in version 1.4 and later moved to Base # -> redefine for compatibility with earlier versions -_midpoint(lo::Integer,hi::Integer) = lo + ((hi - lo) >>> 0x01) +_midpoint(lo::Integer, hi::Integer) = lo + ((hi - lo) >>> 0x01) function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = _midpoint(lo,hi) - pagedmergesort!(v,lo,m,buf,blockLocation,o) - pagedmergesort!(v,m+1,hi,buf,blockLocation,o) + m = _midpoint(lo, hi) + pagedmergesort!(v, lo, m, buf, blockLocation, o) + pagedmergesort!(v, m+1, hi, buf, blockLocation, o) if len <= length(buf) - twoended_merge!(v, buf, lo, hi, m,o) + twoended_merge!(v, buf, lo, m, hi, o) else - pagedMerge!(v, buf, lo, m, hi, blockLocation, o) + pagedMerge!(v, buf, lo, m, hi, blockLocation, o) end return v end -const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 - function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PagedMergeSortAlg, o::Ordering) lo >= hi && return v n = hi + 1 - lo blocksize = isqrt(n) - buf = Vector{eltype(v)}(undef,3blocksize) + buf = Vector{eltype(v)}(undef, 3blocksize) nBlocks = n ÷ blocksize - blockLocation = Vector{Int}(undef,nBlocks+1) - pagedmergesort!(v,lo,hi,buf,blockLocation,o) + blockLocation = Vector{Int}(undef, nBlocks+1) + pagedmergesort!(v, lo, hi, buf, blockLocation, o) return v end Base.@static if VERSION >= v"1.3" -function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, bufs, blockLocations, c::Channel, threadingThreshold::Integer, o=Base.Order.Forward) +const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 +function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, bufs, blockLocations, c::Channel, threadingThreshold::Integer, o=Base.Order.Forward) len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = _midpoint(lo,hi) + m = _midpoint(lo, hi) if len > threadingThreshold - thr = Threads.@spawn threaded_pagedmergesort!(v,lo,m,bufs,blockLocations,c,threadingThreshold,o) - threaded_pagedmergesort!(v,m+1,hi,bufs,blockLocations,c,threadingThreshold,o) + thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, bufs, blockLocations, c, threadingThreshold, o) + threaded_pagedmergesort!(v, m+1, hi, bufs, blockLocations, c, threadingThreshold, o) wait(thr) id = take!(c) buf = bufs[id] @@ -1042,15 +1043,15 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b id = take!(c) buf = bufs[id] blockLocation = blockLocations[id] - pagedmergesort!(v,lo,m,buf,blockLocation,o) - pagedmergesort!(v,m+1,hi,buf,blockLocation,o) + pagedmergesort!(v, lo, m, buf, blockLocation, o) + pagedmergesort!(v, m+1, hi, buf, blockLocation, o) end if len <= length(buf) twoended_merge!(v, buf, lo, hi, m, o) else - pagedMerge!(v, buf, lo, m, hi, blockLocation, o) + pagedMerge!(v, buf, lo, m, hi, blockLocation, o) end - put!(c,id) + put!(c, id) return v end function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) @@ -1061,17 +1062,17 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMerg threadingThreshold = max(n ÷ 4nThreads, PAGEDMERGESORT_THREADING_THRESHOLD) blocksize = isqrt(n) nBlocks = n ÷ blocksize - bufs = [Vector{eltype(v)}(undef,3blocksize) for _ in 1:nThreads] # allocate buffer for each thread - blockLocation = [Vector{Int}(undef,nBlocks+1) for _ in 1:nThreads] + bufs = [Vector{eltype(v)}(undef, 3blocksize) for _ in 1:nThreads] # allocate buffer for each thread + blockLocation = [Vector{Int}(undef, nBlocks+1) for _ in 1:nThreads] c = Channel{Int}(nThreads) # channel holds indices of available buffers for i=1:nThreads - put!(c,i) + put!(c, i) end - threaded_pagedmergesort!(v,lo,hi,bufs,blockLocation,c,threadingThreshold,o) + threaded_pagedmergesort!(v, lo, hi, bufs, blockLocation, c, threadingThreshold, o) return v end else - # no multithreading in earlier versions -> use single threaded version instead + # use single threaded function when VERSION < v"1.3" sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) = sort!(v, lo, hi, PagedMergeSort, o) end end # module From d6f40dbd1de446d34b52f7e0380aedc52b187f95 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 12 Feb 2023 16:39:49 +0100 Subject: [PATCH 13/45] Rebase and apply initial optimizations --- src/SortingAlgorithms.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 678211d..8dab15a 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -79,7 +79,7 @@ Characteristics: - https://link.springer.com/chapter/10.1007/BFb0016253 - https://max-arbuzov.blogspot.com/2021/10/merge-sort-with-osqrtn-auxiliary-memory.html """ -const PagedMergeSort = PagedMergeSortAlg() +const PagedMergeSort = maybe_optimize(PagedMergeSortAlg()) """ ThreadedPagedMergeSort @@ -99,7 +99,7 @@ Characteristics: - https://max-arbuzov.blogspot.com/2021/10/merge-sort-with-osqrtn-auxiliary-memory.html - https://en.wikipedia.org/wiki/Merge_sort#Merge_sort_with_parallel_recursion """ -const ThreadedPagedMergeSort = ThreadedPagedMergeSortAlg() +const ThreadedPagedMergeSort = maybe_optimize(ThreadedPagedMergeSortAlg()) ## Heap sort @@ -1058,7 +1058,7 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMerg lo >= hi && return v n = hi + 1 - lo nThreads=Threads.nthreads() - (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && return sort!(v, lo, hi, PagedMergeSort, o) + (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && return sort!(v, lo, hi, PagedMergeSortAlg(), o) threadingThreshold = max(n ÷ 4nThreads, PAGEDMERGESORT_THREADING_THRESHOLD) blocksize = isqrt(n) nBlocks = n ÷ blocksize From a25003e08218818d968a4d2fe1ae2040253d97be Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 12 Feb 2023 16:41:19 +0100 Subject: [PATCH 14/45] Remove unused variable in function signatures --- src/SortingAlgorithms.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 8dab15a..576afed 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -1013,7 +1013,7 @@ function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::Ab return v end -function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::PagedMergeSortAlg, o::Ordering) +function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::PagedMergeSortAlg, o::Ordering) lo >= hi && return v n = hi + 1 - lo blocksize = isqrt(n) @@ -1054,7 +1054,7 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b put!(c, id) return v end -function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) +function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::ThreadedPagedMergeSortAlg, o::Ordering) lo >= hi && return v n = hi + 1 - lo nThreads=Threads.nthreads() @@ -1073,6 +1073,6 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMerg end else # use single threaded function when VERSION < v"1.3" - sort!(v::AbstractVector, lo::Integer, hi::Integer, a::ThreadedPagedMergeSortAlg, o::Ordering) = sort!(v, lo, hi, PagedMergeSort, o) + sort!(v::AbstractVector, lo::Integer, hi::Integer, ::ThreadedPagedMergeSortAlg, o::Ordering) = sort!(v, lo, hi, PagedMergeSort, o) end end # module From 88e5b22df2621e2cefb0fbf614eb57d7bc04614f Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 12 Feb 2023 16:48:29 +0100 Subject: [PATCH 15/45] Add algorithms to readme.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 56c9fa9..37e4404 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,15 @@ The `SortingAlgorithms` package provides three sorting algorithms that can be us - [HeapSort] – an unstable, general purpose, in-place, O(n log n) comparison sort that works by heapifying an array and repeatedly taking the maximal element from the heap. - [TimSort] – a stable, general purpose, hybrid, O(n log n) comparison sort that adapts to different common patterns of partially ordered input data. - [CombSort] – an unstable, general purpose, in-place, O(n log n) comparison sort with O(n^2) pathological cases that can attain good efficiency through SIMD instructions and instruction level paralellism on modern hardware. +- [PagedMergeSort] – a stable, general purpose, O(n log n) time and O(sqrt n) space comparison sort. +- [ThreadedPagedMergeSort] – a stable, general purpose, O(n log n) time and O(sqrt n) space comparison sort using multithreaded [parallel recursion]. [HeapSort]: https://en.wikipedia.org/wiki/Heapsort [TimSort]: https://en.wikipedia.org/wiki/Timsort [CombSort]: https://en.wikipedia.org/wiki/Comb_sort +[PagedMergeSort]: https://link.springer.com/chapter/10.1007/BFb0016253 +[ThreadedPagedMergeSort]: https://link.springer.com/chapter/10.1007/BFb0016253 +[parallel recursion]: https://en.wikipedia.org/wiki/Merge_sort#Merge_sort_with_parallel_recursion ## Usage From 436eb795a83e3f0cbe4e0d42cc3484c316a716eb Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 12 Feb 2023 19:17:44 +0100 Subject: [PATCH 16/45] Rename _midpoint to midpoint Co-authored-by: Lilith Orion Hafner --- src/SortingAlgorithms.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 576afed..6a6131b 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -995,7 +995,7 @@ end # midpoint was added to Base.sort in version 1.4 and later moved to Base # -> redefine for compatibility with earlier versions -_midpoint(lo::Integer, hi::Integer) = lo + ((hi - lo) >>> 0x01) +midpoint(lo::Integer, hi::Integer) = lo + ((hi - lo) >>> 0x01) function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T len = hi + 1 -lo From cd72df01e9107ceae3a8fc38e13fb96340e857da Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 12 Feb 2023 19:26:10 +0100 Subject: [PATCH 17/45] Remove unnecessary @inbounds in twoended_merge! Co-authored-by: Lilith Orion Hafner --- src/SortingAlgorithms.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 87f3d83..761f83b 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -748,7 +748,7 @@ function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer # copy back from t to v offset = lo-1 len = 1 + hi - lo - @inbounds for i = 1:len + for i = 1:len v[offset+i] = t[i] end end From 90c0ca6be0f0618d8da02b0c05ff28c7547eb7ef Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 12 Feb 2023 19:28:21 +0100 Subject: [PATCH 18/45] Explain why twoended_merge! is used in comment Co-authored-by: Lilith Orion Hafner --- src/SortingAlgorithms.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 761f83b..7304065 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -685,6 +685,7 @@ end ### # merge v[lo:hiA] and v[hiA+1:hi] ([A;B]) using buffer t[1:1 + hi-lo] +# this is faster than merge! but requires twice as much auxiliary memory. function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Integer, o::Ordering) where T @assert lo <= hiA <= hi loA = lo From 7841b6aeb4b5de55dbb64bc22a483e4c545e369a Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 12 Feb 2023 19:31:49 +0100 Subject: [PATCH 19/45] Use midpoint instead of _midpoint --- src/SortingAlgorithms.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 87f3d83..7e5fa36 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -1002,7 +1002,7 @@ function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::Ab if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = _midpoint(lo, hi) + m = midpoint(lo, hi) pagedmergesort!(v, lo, m, buf, blockLocation, o) pagedmergesort!(v, m+1, hi, buf, blockLocation, o) if len <= length(buf) @@ -1031,7 +1031,7 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = _midpoint(lo, hi) + m = midpoint(lo, hi) if len > threadingThreshold thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, bufs, blockLocations, c, threadingThreshold, o) threaded_pagedmergesort!(v, m+1, hi, bufs, blockLocations, c, threadingThreshold, o) From dab157f7d7962f91c374f08f25056116b8dab0da Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 12 Feb 2023 20:51:08 +0100 Subject: [PATCH 20/45] Fix stability of twoended_merge! --- src/SortingAlgorithms.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 7f9710d..26f9b3b 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -714,7 +714,7 @@ function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer iAL += 1 end oL +=1 - if lt(o,v[iAR], v[iBR]) + if !lt(o,v[iBR], v[iAR]) t[oR] = v[iBR] iBR -= 1 else From ea4eb9ad4fe192e3c24f296be4e4786b91480cbb Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 12 Feb 2023 21:08:47 +0100 Subject: [PATCH 21/45] Change function argument locations to match base.Sort - input array - indices to sort - algorithm - ordering - scratch space - multithreading-specific --- src/SortingAlgorithms.jl | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 26f9b3b..1dc90a1 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -686,7 +686,7 @@ end # merge v[lo:hiA] and v[hiA+1:hi] ([A;B]) using buffer t[1:1 + hi-lo] # this is faster than merge! but requires twice as much auxiliary memory. -function twoended_merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Integer, o::Ordering) where T +function twoended_merge!(v::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Integer, o::Ordering, t::AbstractVector{T}) where T @assert lo <= hiA <= hi loA = lo loB = hiA + 1 @@ -757,7 +757,7 @@ end # merge v[lo:lo+lenA-1] and v[lo+lenA:hi] using buffer t[1:lenA] # based on Base.Sort MergeSort -function merge!(v::AbstractVector{T}, t::AbstractVector{T}, lo::Integer, hi::Integer, lenA::Integer, o::Ordering) where T +function merge!(v::AbstractVector{T}, lo::Integer, hi::Integer, lenA::Integer, o::Ordering, t::AbstractVector{T}) where T @inbounds begin i = 1 j = lo @@ -805,7 +805,7 @@ macro getNextBlock!() end # merge v[lo:hiA] and v[hiA+1:hi] using buffer buf in O(sqrt(n)) space -function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Integer, blockLocation::AbstractVector{<:Integer}, o::Ordering) where T +function pagedMerge!(v::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, blockLocation::AbstractVector{<:Integer}) where T @assert lo < hiA < hi iA = lo iB = hiA + 1 @@ -815,7 +815,7 @@ function pagedMerge!(v::AbstractVector{T}, buf::AbstractVector{T}, lo::Integer, # regular merge if buffer is big enough if lenA <= length(buf) - merge!(v, buf, lo, hi, lenA, o) + merge!(v, lo, hi, lenA, o, buf) return elseif lenB <= length(buf) # TODO ? @@ -998,18 +998,18 @@ end # -> redefine for compatibility with earlier versions midpoint(lo::Integer, hi::Integer) = lo + ((hi - lo) >>> 0x01) -function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, buf::AbstractVector{T}, blockLocation, o=Base.Order.Forward) where T +function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, blockLocation) where T len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end m = midpoint(lo, hi) - pagedmergesort!(v, lo, m, buf, blockLocation, o) - pagedmergesort!(v, m+1, hi, buf, blockLocation, o) + pagedmergesort!(v, lo, m, o, buf, blockLocation) + pagedmergesort!(v, m+1, hi, o, buf, blockLocation) if len <= length(buf) - twoended_merge!(v, buf, lo, m, hi, o) + twoended_merge!(v, lo, m, hi, o, buf) else - pagedMerge!(v, buf, lo, m, hi, blockLocation, o) + pagedMerge!(v, lo, m, hi, o, buf, blockLocation) end return v end @@ -1021,21 +1021,21 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::PagedMergeSortAlg, buf = Vector{eltype(v)}(undef, 3blocksize) nBlocks = n ÷ blocksize blockLocation = Vector{Int}(undef, nBlocks+1) - pagedmergesort!(v, lo, hi, buf, blockLocation, o) + pagedmergesort!(v, lo, hi, o, buf, blockLocation) return v end Base.@static if VERSION >= v"1.3" const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 -function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, bufs, blockLocations, c::Channel, threadingThreshold::Integer, o=Base.Order.Forward) +function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, o::Ordering, bufs, blockLocations, c::Channel, threadingThreshold::Integer) len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end m = midpoint(lo, hi) if len > threadingThreshold - thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, bufs, blockLocations, c, threadingThreshold, o) - threaded_pagedmergesort!(v, m+1, hi, bufs, blockLocations, c, threadingThreshold, o) + thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, o, bufs, blockLocations, c, threadingThreshold) + threaded_pagedmergesort!(v, m+1, hi, o, bufs, blockLocations, c, threadingThreshold) wait(thr) id = take!(c) buf = bufs[id] @@ -1044,13 +1044,13 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, b id = take!(c) buf = bufs[id] blockLocation = blockLocations[id] - pagedmergesort!(v, lo, m, buf, blockLocation, o) - pagedmergesort!(v, m+1, hi, buf, blockLocation, o) + pagedmergesort!(v, lo, m, o, buf, blockLocation) + pagedmergesort!(v, m+1, hi, o, buf, blockLocation) end if len <= length(buf) - twoended_merge!(v, buf, lo, hi, m, o) + twoended_merge!(v, lo, hi, m, o, buf) else - pagedMerge!(v, buf, lo, m, hi, blockLocation, o) + pagedMerge!(v, lo, m, hi, o, buf, blockLocation) end put!(c, id) return v @@ -1069,7 +1069,7 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::ThreadedPagedMerge for i=1:nThreads put!(c, i) end - threaded_pagedmergesort!(v, lo, hi, bufs, blockLocation, c, threadingThreshold, o) + threaded_pagedmergesort!(v, lo, hi, o, bufs, blockLocation, c, threadingThreshold) return v end else From d9fcaef78955f01e0d79ec76f8e93c8d1615ede4 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 12 Feb 2023 21:59:35 +0100 Subject: [PATCH 22/45] Fix midpoint calculation to always round down to make sure the branch elseif lenB <= length(buf) in pagedMerge! is never taken. --- src/SortingAlgorithms.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 1dc90a1..671c755 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -999,11 +999,11 @@ end midpoint(lo::Integer, hi::Integer) = lo + ((hi - lo) >>> 0x01) function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, blockLocation) where T - len = hi + 1 -lo + len = hi + 1 - lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = midpoint(lo, hi) + m = midpoint(lo, hi-1) # hi-1: ensure midpoint is rounded down. OK, because lo < hi is satisfied here pagedmergesort!(v, lo, m, o, buf, blockLocation) pagedmergesort!(v, m+1, hi, o, buf, blockLocation) if len <= length(buf) @@ -1032,7 +1032,7 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, o if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = midpoint(lo, hi) + m = midpoint(lo, hi-1) # hi-1: ensure midpoint is rounded down. OK, because lo < hi is satisfied here if len > threadingThreshold thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, o, bufs, blockLocations, c, threadingThreshold) threaded_pagedmergesort!(v, m+1, hi, o, bufs, blockLocations, c, threadingThreshold) From 7b2a653b24877d464bef9d9d57649a3011050985 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Mon, 13 Feb 2023 20:27:37 +0100 Subject: [PATCH 23/45] Make variable names and function signatures more consistent - always use lo, m, hi in function signatures - rename array indices - use two variables instead of one to clarify if index is absolute or in current block (oIdx -> k, k_block) --- src/SortingAlgorithms.jl | 226 +++++++++++++++++++-------------------- 1 file changed, 110 insertions(+), 116 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 671c755..56b5723 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -681,70 +681,66 @@ else end ### -# ThreadedPagedMergeSort +# PagedMergeSort ### -# merge v[lo:hiA] and v[hiA+1:hi] ([A;B]) using buffer t[1:1 + hi-lo] +# merge v[lo:m] and v[m+1:hi] ([A;B]) using buffer t[1:1+hi-lo] # this is faster than merge! but requires twice as much auxiliary memory. -function twoended_merge!(v::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Integer, o::Ordering, t::AbstractVector{T}) where T - @assert lo <= hiA <= hi - loA = lo - loB = hiA + 1 - hiB = hi - - # output array indices - oL = 1 - oR = 1 + hi - lo +function twoended_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, t::AbstractVector{T}) where T + @assert lo <= m <= hi # input array indices - iAL = loA - iBL = loB - iAR = hiA - iBR = hiB + a_lo = lo + a_hi = m + b_lo = m + 1 + b_hi = hi + # output array indices + k_lo = 1 + k_hi = 1 + hi - lo @inbounds begin # two ended merge # while at least 2 elements remain in both A and B - while iAL < iAR && iBL < iBR - if lt(o,v[iBL], v[iAL]) - t[oL] = v[iBL] - iBL += 1 + while a_lo < a_hi && b_lo < b_hi + if lt(o, v[b_lo], v[a_lo]) + t[k_lo] = v[b_lo] + b_lo += 1 else - t[oL] = v[iAL] - iAL += 1 + t[k_lo] = v[a_lo] + a_lo += 1 end - oL +=1 - if !lt(o,v[iBR], v[iAR]) - t[oR] = v[iBR] - iBR -= 1 + k_lo +=1 + if !lt(o, v[b_hi], v[a_hi]) + t[k_hi] = v[b_hi] + b_hi -= 1 else - t[oR] = v[iAR] - iAR -= 1 + t[k_hi] = v[a_hi] + a_hi -= 1 end - oR -=1 + k_hi -=1 end # regular merge # until either A or B runs out - while iAL <= iAR && iBL <= iBR - if lt(o,v[iBL], v[iAL]) - t[oL] = v[iBL] - iBL += 1 + while a_lo <= a_hi && b_lo <= b_hi + if lt(o, v[b_lo], v[a_lo]) + t[k_lo] = v[b_lo] + b_lo += 1 else - t[oL] = v[iAL] - iAL += 1 + t[k_lo] = v[a_lo] + a_lo += 1 end - oL += 1 + k_lo += 1 end # either A or B is empty -> copy remaining items - while iAL <= iAR - t[oL] = v[iAL] - iAL += 1 - oL += 1 + while a_lo <= a_hi + t[k_lo] = v[a_lo] + a_lo += 1 + k_lo += 1 end - while iBL <= iBR - t[oL] = v[iBL] - iBL += 1 - oL += 1 + while b_lo <= b_hi + t[k_lo] = v[b_lo] + b_lo += 1 + k_lo += 1 end # copy back from t to v offset = lo-1 @@ -755,34 +751,32 @@ function twoended_merge!(v::AbstractVector{T}, lo::Integer, hiA::Integer, hi::In end end -# merge v[lo:lo+lenA-1] and v[lo+lenA:hi] using buffer t[1:lenA] +# merge v[lo:m] and v[m+1:hi] using buffer t[1:1+m-lo] # based on Base.Sort MergeSort -function merge!(v::AbstractVector{T}, lo::Integer, hi::Integer, lenA::Integer, o::Ordering, t::AbstractVector{T}) where T +function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, t::AbstractVector{T}) where T @inbounds begin - i = 1 - j = lo - while i <= lenA + i, j = 1, lo + while j <= m t[i] = v[j] i +=1 j +=1 end - iA = 1 + a, b = 1, m + 1 k = lo - iB = lo + lenA - while k < iB <= hi - if lt(o,v[iB], t[iA]) - v[k] = v[iB] - iB += 1 + while k < b <= hi + if lt(o, v[b], t[a]) + v[k] = v[b] + b += 1 else - v[k] = t[iA] - iA += 1 + v[k] = t[a] + a += 1 end k += 1 end - while iA <= lenA - v[k] = t[iA] + while k < b + v[k] = t[a] k += 1 - iA += 1 + a += 1 end end end @@ -792,7 +786,7 @@ end # otherwise use next block in B macro getNextBlock!() quote - if iA > nextBlockA * blocksize + lo + if a > nextBlockA * blocksize + lo currentBlock = nextBlockA nextBlockA += 1 else @@ -804,18 +798,17 @@ macro getNextBlock!() end |> esc end -# merge v[lo:hiA] and v[hiA+1:hi] using buffer buf in O(sqrt(n)) space -function pagedMerge!(v::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, blockLocation::AbstractVector{<:Integer}) where T - @assert lo < hiA < hi - iA = lo - iB = hiA + 1 - hiB = hi - lenA = hiA + 1 - lo - lenB = hiB - hiA +# merge v[lo:m] and v[m+1:hi] using buffer buf in O(sqrt(n)) space +function pagedMerge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, blockLocation::AbstractVector{<:Integer}) where T + @assert lo < m < hi + a = lo + b = m + 1 + lenA = 1 + m - lo + lenB = hi - m # regular merge if buffer is big enough if lenA <= length(buf) - merge!(v, lo, hi, lenA, o, buf) + merge!(v, lo, m, hi, o, buf) return elseif lenB <= length(buf) # TODO ? @@ -824,11 +817,11 @@ function pagedMerge!(v::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Intege return end - len = hi + 1 - lo + len = lenA + lenB blocksize = isqrt(len) nBlocks = len ÷ blocksize @assert length(buf) >= 3blocksize - @assert length(blockLocation) >= nBlocks+1 + @assert length(blockLocation) >= nBlocks + 1 @inline getBlockOffset(block) = (block-1)*blocksize + lo - 1 @@ -837,92 +830,93 @@ function pagedMerge!(v::AbstractVector{T}, lo::Integer, hiA::Integer, hi::Intege # merge ################## # merge into buf until full - oBuf = 1 - while oBuf <= 3blocksize # cannot run out of input elements here - if lt(o, v[iB], v[iA]) # -> merge! would have been used - buf[oBuf] = v[iB] - iB += 1 + j = 1 + while j <= 3blocksize # cannot run out of input elements here + if lt(o, v[b], v[a]) # -> merge! would have been used + buf[j] = v[b] + b += 1 else - buf[oBuf] = v[iA] - iA += 1 + buf[j] = v[a] + a += 1 end - oBuf += 1 + j += 1 end nextBlockA = 1 - nextBlockB = (hiA+blocksize-lo) ÷ blocksize + 1 + nextBlockB = (m + blocksize-lo) ÷ blocksize + 1 blockLocation .= 0 blockLocation[1:3] = -1:-1:-3 - oIdx = 1 + k = 1 currentBlock = 0 currentBlockIdx = 4 # more efficient loop while more than blocksize elements of A and B are remaining - while iA < hiA-blocksize && iB < hiB-blocksize + while a < m-blocksize && b < hi-blocksize @getNextBlock! offset = (currentBlock-1)*blocksize - oIdx = lo + offset - while oIdx <= blocksize+offset + lo - 1 - if lt(o, v[iB], v[iA]) - v[oIdx] = v[iB] - iB += 1 + k = lo + offset + while k <= blocksize+offset + lo - 1 + if lt(o, v[b], v[a]) + v[k] = v[b] + b += 1 else - v[oIdx] = v[iA] - iA += 1 + v[k] = v[a] + a += 1 end - oIdx += 1 + k += 1 end end # merge until either A or B is empty - while iA <= hiA && iB <= hiB + k_block = 1 + while a <= m && b <= hi @getNextBlock! - oIdx = 1 + k_block = 1 offset = getBlockOffset(currentBlock) - while oIdx <= blocksize && iA <= hiA && iB <= hiB - if lt(o, v[iB], v[iA]) - v[offset+oIdx] = v[iB] - iB += 1 + while k_block <= blocksize && a <= m && b <= hi + if lt(o, v[b], v[a]) + v[offset+k_block] = v[b] + b += 1 else - v[offset+oIdx] = v[iA] - iA += 1 + v[offset+k_block] = v[a] + a += 1 end - oIdx += 1 + k_block += 1 end end # copy remaining elements # either A or B is empty # copy rest of A - while iA <= hiA - if oIdx > blocksize + while a <= m + if k_block > blocksize @getNextBlock! - oIdx = 1 + k_block = 1 end offset = getBlockOffset(currentBlock) - while oIdx <= blocksize && iA <= hiA - v[offset + oIdx] = v[iA] - iA += 1 - oIdx += 1 + while k_block <= blocksize && a <= m + v[offset + k_block] = v[a] + a += 1 + k_block += 1 end end # copy rest of B - while iB <= hiB - if oIdx > blocksize + while b <= hi + if k_block > blocksize @getNextBlock! - oIdx = 1 + k_block = 1 end offset = getBlockOffset(currentBlock) - while oIdx <= blocksize && iB <= hiB - v[offset + oIdx] = v[iB] - iB += 1 - oIdx += 1 + while k_block <= blocksize && b <= hi + v[offset + k_block] = v[b] + b += 1 + k_block += 1 end end # copy last partial block to end - partialBlockPresent = oIdx <= blocksize + partialBlockPresent = k_block <= blocksize if partialBlockPresent offset = getBlockOffset(currentBlock) offset2 = nBlocks*blocksize + lo - 1 - for j = 1:oIdx-1 + for j = 1:k_block-1 v[offset2 + j] = v[offset + j] end blockLocation[currentBlockIdx-1] = 0 @@ -1048,7 +1042,7 @@ function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, o pagedmergesort!(v, m+1, hi, o, buf, blockLocation) end if len <= length(buf) - twoended_merge!(v, lo, hi, m, o, buf) + twoended_merge!(v, lo, m, hi, o, buf) else pagedMerge!(v, lo, m, hi, o, buf, blockLocation) end From 297348f82a10192aded083556af8d0a8394f4982 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 14 Feb 2023 11:16:43 +0100 Subject: [PATCH 24/45] Add compat for StaticArrays Test results: - 0.8.0: fail - 0.8.1: pass - 0.9.0: pass - 0.10.0: pass - 0.11.0: pass - 0.12.0: pass - 1.0.0: pass - 1.5.14: pass --- Project.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Project.toml b/Project.toml index 928c4e6..707065d 100644 --- a/Project.toml +++ b/Project.toml @@ -10,6 +10,7 @@ StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" julia = "1" DataStructures = "0.9, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18" StatsBase = "0.33" +StaticArrays = "0.8.1, 0.9, 0.10, 0.11, 0.12, 1" [extras] Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" From b51c7ce3360b24df3b42c208f82cb0150ed347ad Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 14 Feb 2023 13:24:31 +0100 Subject: [PATCH 25/45] Improve documentation - docstring formatting - full reference - add gif to /docs --- docs/pagedMerge_130_130.gif | Bin 0 -> 804903 bytes src/SortingAlgorithms.jl | 20 ++++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 docs/pagedMerge_130_130.gif diff --git a/docs/pagedMerge_130_130.gif b/docs/pagedMerge_130_130.gif new file mode 100644 index 0000000000000000000000000000000000000000..6d8d310a939f7281b1bb7cef850e0e8fb981f930 GIT binary patch literal 804903 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 NAye3#vuZrAs3bJ?&JmN!q-i|3ci3!9BQmQ}O- zy`NdX)wnrj9V_iy%+c?f%T6WEoM}p1&GQ(w+uXv(xwXrAJSp5~m3^IkD8qdlpE-Qb zJ-pB9Q+7AphJp8zi~FVid6Sd-cvqYv3)*Y@6s==Ltz`$UR|4K8ofPFgCFD9KX5mx0 zyL^GXD8ZY^L;W>5y3_ZzVNE@~jU38Xy}kvurHy&9ZE3!*oYuEc|I71xIV&50FZ;jY zc(ZT1%u8a})BL9y9N8t<&FQbG+j&{#e2+IcocSEXo0{97`r73==IeReHN57%UC<4g ztHs@`lMAd5T_Rar(eJ{nzqXXamb&M4-l5))D7_{^!4ME(5V`|5_kGmyI>>2pufvPG}a#()rC*Ucwi=<&%2;4DaXf{LgJ(x1}1~Q5b~rT#<|3g@>EBsrI-5n&?M- zppiZ@M_Jt2{XpD3cIy2kVn6CVZuU#!-bI2_vbbNB7;YEV|I@)9;KiQP242Zqy_c^T z?NhxN*WSF{{?&1Ptt5W#Pwc);`lTs5rj?oeIDX8>?&E_!B?`aTN&cY{pF5+Swg1?) zAOE)_pM$eq<{jUu-7_z5KK^sQsx80gwOaE50s#pe2oO{Ng22I(f(eooyi$;YLj+$6 zo)}UvO+gtp3X&=4BSpb71psS6l)sZ)D43;Skp=~$BtSp}LO~%N5a1xOu?2z>1Pvlo z$k1UMYxs&9J&H7`(xpb-&0`8Rs?@3Irdqv96|2^*T)TSx3O1}*qgBV6#i!2R*`p*8 zK=^^6L6m|ECZ;r4#ACq}a1m%kprb}XGzE8{(2JnR29zaVBL8^8vdDyjI!YjraTvh~ z89V#FjXM`X-G>D+O#Fy|Z^nW+1S24fz%XLPj1eSJQ1Hou#FGJA##|5u=MtXb%B4FI zA_CI|y;uyg+NNvRJTjxEjo|L>+`Eg&MBu~2Wt<3vcP@AVu7l9FNiU!1Tr+e8sAJ41 zsHR|b#6uP%;8KthxINb0cj1j!5DCNWfS!8nIds5X7r^%%V)o%zP!J~Y=O2Iw2w2b* zyA5HWcruWu;7+Bir4>8$SS1fPGWxLBf(<6LP)P_JfJH2euike!|N!h8y5&|y4 z^qrkI<+RhRnj&E9P%JX#)U;uhWvy4(X3K52-hRvCw%|^cmbGntcARK-6;wf9N~YG= zUx6(en{|v1Ynx+`@kZHinQeBSTgHVp8Uo5O_pWMwu{K>{_9o_^b_43huWy%SW*%_` zp-XUbrBNtfbgj|5-@DjJ%w1w7-kEV<=_T}_d;bW>cfx%2p?PG zXd?nIuUC+l5`tW_g*a!Jn5a9COdR$SZawupE`bt0Ip(!dM1WQ(%WW$c3}ACWo|Soc%_~yZ0AWV-fEqpS1K#Jv<7vnr<(1$ zQAh9o3VUrUwe(W$%91C8PCV)UY_vpyTW!}?iEBMm*k{ju_uiki{r5$cJMFmxZ+cg| zh$$>@!}ZP~y4TQpp8ply2aY5#l0%P@M$#$@rc&BVG>KYs-$e;YfW=?wO< z=2U25(jnQyPF9iw1`RxUYuSyErXvWxM}i@H7u@voFrNK~YAN%M(C(x)Egdap5ke2s zY*x55AwWYM>KO|WU^O}&C~L#vTKB#-l~UyGN;{FE-@HUQF$pP$ahn^&PUoamF|JNa z+#8>s1x3^iu257|6XKYpI4y$CaeCsL-zF!x`}Ua(T-IV~!0kE8QrtvnXUwOu4Sy{h9#4vDYh87p~uvP?~#v1=G)%`)Boo#)Ub~-?i=8B3YY|a(XU_k(+mRzX3K*0Z+!r) z;AB0y*NLK!u&Mjj6u%|S_n-&Iws1FS403F zMH*Al<<2KH#iHPFO32Jz(l)VERh(GWNtq5cQ>C+&2#@+ZN(yhMOGQ;Ci*>9;dXibs zBWhKJGQDqA@0GA*Yf)n9*8jN5)mm`n-YnNr%XAeCm&}aLyu|6ta?0;9!?f5n0j4oz z>eZe8gO|v9c|l;_Gl9iar#2tB%x+E)obH<^1`XK4gkm#bGi;~KZs;_5rm&trqZmGi zh@ySM%(OK$8fpV-I3B*Mpg#K2hpQi0I)q!>-<7<0oTA$FtpG*uC>0huG!=8Tt5ur zu6Vd>cRfp9J60R@CI76Me}zq8d#W8_R?L2f&87pD$xU50Gn_7ttTZQUO^n$%nT-AC zHv=e6&q_A5FNBpkOB=$>dNZ{;oF{MX$>e+zQMv1!Z9i>jWGWv?w^H*VmVt=SCdYQ6 z-W#q_%<+p~45PSQ%x*=OOIzobV2W>xt`!rP#rcjDR!oFk-!9r*_O8^=E~Rdu%NtbO zq1UANU9WeM>RwC2mvc^qwC&hvU#eExsDiwlsNP#VpLQCmk>(?T?`vS?U^T(K+G>9r z?A5zyGOV4PaPyjFVd-Vqlx!XGxQrd*WGj0q$o^J|&2nP&u`8GV^DAVdiLYSJZ^jBV zX233s;}Nd-vHt?}akhbMSRsG=#zod_2{~&)Y@5@yqJ1(y+atnvmN1@GUags1TOc(n z^v+!dq0+$YZh-Q8%miiaLAMCofd@BxZZ1kFQV<0c47zMwK3ksI%jfW7yKX?OGoed* zXznKZ(w3W}$T$7cl27WqhJK@^^=s-v@-)7yzAhuDy1NJJIp?UxquObgw68-c4f1@_4Q?oJ=tOB*0aYF?ORT}uM})CG^ZQmZC5kh z_**xTPs?_A1J>O0MqrQ^X!ph9J>f@oCUy9p!7N97w26f>zNHM$GLF;VD?Bs31uhWT z8XQ9YB>%jaq1MC7|ID|T2QEWjl$1~uL{iBmxX1sd=a4gcx+E7gm9krNL<0`zE}#A8 zVs86S4|uzyb~NvEdTLGoUey5h^voswYEf@$=yOaygHwHURtsP0!G`3lfp-~OyUxE4 zp1N3lU16*XyOeP)d$!y^_V~LM{?j_USCjzapb7;lm2ftROc>2yqv*KRP_XQ~x?2Bm`f)N%L5 zc?jo<9VLVG^luL*L^sH0M}&Gvv4gB;K1x ze>i`F=#TP8h-+bpSfLEFPz#(O7?yZ}|3__(^@sy#irPk4o>*gn7mAsciF( XL&{ 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 z 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

{~6 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%0DLuj^5LVX2IUm~hIZM1Ecd?je{ z2B8yU$z+~NfU=NA>YTRb>%(-DvbG^bzCt#}2;JmDCX13tl#Mx3H>J|T zqAWwm)(WGW+E8FoQI4{;JJU^T-?pe~6|!?8(@XDTvaA_F*|~xAGR7<{>z0J^?cKl=C zp{Fa)4jbCJCzrkNw&Vu=1B&Flnxa{40VUw7HT3Dw3s3@edvRZ=i2iv6I)krn zW=PNsoZ!Sk9=3gM2H=T~(9bx468KTv$xCw!PaN5-%TUZx5uiG zypjbI%o^!A4^WloDAHXp@)Q}cZPfEjue0aR0jjdivoHQ+P2>Px37;ImD>ab;cqM!? z0I$SG3gDIIpBALT21yDtgS|+Kau94J#RUbxCFEUw)`F6%%$vcIQp;YOgOa3)!R_)E zSfEYiSJ_{-Roy&%cGdmVZgw?2TtjwMqv8v;b(6~gJh9sFb9u?UgRM=&ayY(2V`h|M zMZtEat##AB!k|NQRNKSKoRd*otJX98aK|?I(NJaP^|h_#SF9lbp6CF;6H`rO-;N4D z{7Jz?J#9x)U0+KP6v9t#mR{OR>7H)ii)Y7i(od5_c`{I}(!w*8-}K0Jh#^hXb(p{1 z$F-2>n9^oU{AarB_!gluUz03NtHY#1Gk{n6Ax^;Gs;27ehz1{ghGMQ9M)A*-jN0@Z6Dy6MDtwL{ppZ6`Y59?F&_mdPP>WQ=5IOX^`_i zWL=K(4r@B5Ha%{0$Mg9PRKAx%y)+UgCxh?$eSQ*%6Sal~s77c1!jOdep0R<)T0@up zj#tmt58lE5{LY9L_ua4LHv4^KOXPRCB%vY^a=7BSarrlG%*i=ZLCckTflpt6&!S$$MqNOOr=8?kwFnIMtyIKWK?p+`1XDVnbCJqKR__ zQ(4tsiz~O#kz^Oi;8|3EcK=KFOw6q3^|ow;#UcsClw1l=&4jqE&qmfdOW)vlbySEm zJ@rLSpBVLi6nvBZ<-I@exQK}beML8OaEkjI8ERtfJsB8idiv#MYvK@jd9=KLqz8&4 z;&(b2Si0y2K6vFP6i7$0sQ*dPtT|Du@L|+=&#G8BUV~6VF>)p53>m=L5N(@`uLAxI zDHGR5c8M1F#}yBMcwL*qzsJaDO*djaIGBtX-r%hbOSN}#Wk6ptRfwhtIFCL_+vZ>p zx9jzV;utyZS3}U~dgHFY`RiMl5`FHfTD72hM0l?zbw!vwtmctRc(syLr z2>XS$Eg_~VC}Z1%G)>!z3sW6wzir0&LIY>~w zi<%pTfY(yc>Dwd~b2lUQOlxUdlsk_{=SHDts~M;1I|N5_W4^tsS=dy&_=NN0L5S6C z(u`ePuK9^bi`864s=fOv^T3fratJfhPQL z!aN$eTwkAYxM#nxuoS%9&_i{!9l5Z$1ztv>GmbXO7nTm0mYcVzj#oz(mQT-?T2C{M zmkt+Ju6mc+v8lh$6D+P`CoOf5W`3XHTwEitT-4 zPlozrG;(p1(QjsPKr{1XsC;pYvv6?;Lhaf=vbfFfxHtmMbnQ7@+!2#l91Eg$>m*p( zl_6T3NX&F==Um!To>`d6r#@{`UfS1;UO?ApLL2Ot4h)Qdx2@E$y2zz(5N_Z>YbLCE zAeiv^OglB2ZNCFCBm@bn0~fl}@b1!uPPmZ;R@_2$C7)hd??p zl-!_Tn2x#)J`^30F91z4RrEZnARSnyn2FZH4F;Ae>>F!OPG-Y1ir{D{L;^hFjApbG>%<_FS=r#LSGpfj5XkWSz<0-9w17UlRY7)a+O(J}&Nh}0boQ2MI*Q3h*u;fL&0Sj!#g2;e$Vr;2@Gd}zFEI378ek(CX zCu|E5Vm+{xJgl(sq6c22twXr_fNsk?n-^mC-h3#aD?hWi@3H$+o z&SrD+yV=GMfVD7c*1_G}=R){{w#x?XUX;i!!Qa5QR zZ(px&`1vq?-l5sNVVN2LI!gjT=V$=vY}T|t38WLRDuM?EzGF4dbDqvWWB|%n;4Jw1 z=;8PB8$wFk4xGwxr_Ow?;a5di5{pjV#8RR&=9l2%;w}pHLFc|0_#>WNy66b20Va}g zm%)z}z$67%dxYgM&y>9Dh|_WeZ<_FNgvFS6`~$afV?dK6$lUlC`xEH)lnPQyVlVv!V3ji z*RcJPp%JeGXgi_Ea?Mzq`yuio();Ms@u2ykzIb482dumH`) zPdsUEvBPOSzpKMJN22xh<#)L7-^$dgaNv)11q7@9OLz*zX#7 zI3{6#eX(MT#qt#coCOyNy~I+^{faF+;6vE00sx&;9;j6*0CWL2j-t0i09`<5@Fm_1 zbLW$$%0Q+F8hmxRcG8;fa4w(hYg3l4>xru1J1w+?xJ6x56jdSON-rPZ1oVHUCI0bg zNn|}bu1NaGrz-5kgzjk=Ll0~CSSVPU2w=mfFuQ!u!G&9qZv{e)@8c zibst{8PT$-J6$Bd&QTMud&$7koILOW9u!}Y{(w#Wc|4#=-sA(CM4xpi2GArlfF=JoAQd@)uM?lI`W8x{gUQvtu;NoF%K$8f|Gx5>?8n(tMNyU_f@zt_YeQ+U(U%uRC zs%BN0h^b8v6=D{)FCK+%*JK=RGKy~e8S94d{3fkt1WNWa z1DDfMvIjNp2uesJ8nKWr7n-mJKTRdKw~$RlO_;$Fl4%GmS0n9Csw5Y(g= zG9i&$8KR^tH1z@VG(q6dT!kMsrFfPQClO@+{<+Y!G#NVP9hJG-UDUKVNHbcs)l6eg z5G@EsM`{_EfhQW#JTT1&qbpNwlpux!feyFKFxAasT>!yLs-^}_^bUSiN8?n@?y z&W$q^XPUu&z9z;xg0oM_Fo7XdCZ=y2X9+>zfaq3Zb5_AQJTT@{l7X?slg2qL82Dq> zm66pSf%(fs47@PI$Y!l!{;VGCTPbE_Hz2U^{RWNkZdfvOsBF;NJ4Jf7%NRO+7SLZK zJ$LWhGH`Ki&|lzphm8dpxakQPpf%6kW*7}%QVj-UP~r)}@>+>q zl7?g4UnMl#px!EoR(Jx}ny-XG?6ruL?wjafzI>T_>(BCP-bof4g;Jad6-SP#Fwkky zdrm7&vq5x$DKyLE@U_lC3Z}T`G{c#S$Dk`^rtIYO%_n6ZlY0rXl{_$sSYIB2=YbMpb@7 zji`s{4QXuD2bn01ICk`=lBEnvU6W7~p@`nn2tsK>qBK)&(cAhxC@m-Q;OcTlWEdRB-APxLhrc+H5uebX_XwH_kB1Cfj39~j~3}(aWpgmsyqdoe5tfT*r@(`1D_v2Xt$*-X@#81!)gX!|M z1tV#KuKPe9V%g<2+h~13@^RwseR9YypZ3{x)#Uy0QoQ6bW|zl@jOx<7r;#e%}87j`bg&6X*HldczL7B zk{nG(z5of!RpQUJw!GVB#4B%aph)i)Hx28Y$z)$x9%(*@EG7U?l2k6azt8r>vl~&L z{ zYxi5ay2fT%)xJY$wfaew6lg{sZRZ&WJeJ)}HK`I~UJH5_{L46)5{5SsOdZT(dgmq3 zeg^}qSf&BMDpt-XU=_>E4_L*b_XSq5%)EhSgx>S^Ns{|pLhDU88S3Iq7kRF|O($h> z)-8t*D%SaSnuf&?8y$x|Mk@n2YXQV0%6i)rl3C1TY+bRpt#9APTBzeZYHg_vT`n%v z@I2bHRQJ7RWl{Y^Xu|@1x((aSfs+E-gYH&)P~B>e1x5SEBU)Du=Ynfn<-b-HOnhh|wI4~aP$JuquM+YfbY15xA3 z@PBLR;;!wRFd6weMs3;GfyZ15kd25goVt5elwMbn8I{@gQcMBbqXPcOr6iTE>U%$R zk`E8SOnCHqC_nrWkb;awSdW0z!(B&Xj)r-2#czD9#wCdq+$Q{}BY$NoaQj+Lsf;~< zPCKe7pQeJ1d@V4#(F4#KBRIhs!Zg|!GH0P02Afx{7&(h`X!kW=bRm*=Uy@jkJdg4M zRV!x%{r}cXK`~ zdhKmxMhOFmi8hCWispyj-+qj$h_oVC;EqR42SeV+SJ#9s5t&4OMn8JTLVQk+Imbk! zJ0%=*eop4T^F4hd8{HZ*<9K6mzD!c=`ihJwEf3Tld&R8{4RZCr#CC~M zB)c^B6lLlB8(0;%N=u8+pW8`lS`fs=F!jJJnd;f(dkNka+Blb@uHD(Hkbqm<^gUn| ziy|aMR!QYayj&6^&j&65H?5z;A|p&&9e%Hcj*K9=18L{KHeke5Z}vO*eXkZ{^Ob$F(C#z_ndwiVY%oi zA0>Kv>v(y!I3`3(o)S;7eE*x8__u)e2xA%iK>a$VAW)4}eXd)xhB&;!XX~jMt0H?& z4Fb8wz{Lw_4?{qEl;OP!5Q;S+<^{AzL6KFlk}9A*Mm(ALNEk+}u>kGC#{jBL>9==@ zj|H>`y(8=BFoSyf&ZUJg3N>nnoJu`Tw-C)18neKtr<{vgh=-wW#*ELVl5Q3uZ=8k3 zb;&dkxV{ic9n`o6XgYz23L^bhXhH?75l`M~F3XCVkb_Of(ioV_JrSCeL}!yu6QZ~y&6Jh|r}!~XBL%3;R5}``IM1GbmMAxUpD#GgOqLk-PT5o~vT>RgL>j7k zXrciXM85zh25Uu{fDIbaq%hJTBTf@-89@vYA~C?S)mWFc5rc6gN4!j z=ze8n_@`m!@)QmC%P=xt6PP_C1^b4G8JP|=%zo#`ctVE4jS0~_mx`Pq65w9>%9?t{R>K_eQZR_G4DsYha?0W(-De5~HorCv~<`wSe>z;9-U zZqyY(fTKvrMqR))ed4_gF##czLWB7QwT9^R&zryjf`8vvQC?sOYsv)>aC_Zm+%)GU(k-BTH= zo-PO;EHXQ@mZ(hCEFb+@D#d@G)iXa@Uocm`lWwbXNHN;lHdnbo`AwHVZ=?q^S3Q<) zr_Y%-JaRNw+fI3CpsY89#+k1#O}96)e=)d3J>QT3tO=S6qbfGivYAa0 zh7}^HN-UFX=8KzPrAVq$#~HSu-I%*ifYra^0({U}RHT&oN9sd7pXHI7=+2%0Y-+~u z+TRhm!~2gi+51s#R+!NKKhLD_jz6XK?|em(;ywQT>Gnb|@JFLgZ2|K~ju+1b0Olfb zo?P5rapURPnu0!{MZrobo-7y(7Bo3h0_M9qzX*F$7*O1?{+P{|LI%aJFVslWNHjc6 zN!$geEgCYN{!Ps1w=>PM;T$5iSE)CjgS)Z2mFq{l^~tt=7O>ZBbG@3!zI?^K*c$lo zVN_aU_F8)+X?qam+z-?4L{f3;^yh09y&3m>dMUl?(BnDWSzP55_1l;Vv92h4VdS@g zbdeckYucIJOzWo`S*rBkPMF5G2jXp_LVMfLL`$wH(Z4_UhO0%42n@L04>9dpHwDXA zRloZ;JG>h*yhJX3ZPfO;kLihfT|};}6dtFwJKgl&)n4*CeV|PZxd}R_hKKDX(Ev9a zvo8Zb%0HtG^3l>4rTh|EDB)ZPe0ef8~DLbiwgf>=RypH-T)1AEJ zce4EHbc^yrBvW?-Mh%2b3gUI=S#zWP_X~?Ydg-zj$EGUmm6RaEOA5$cfD66c+)3U2 z(yaMZwu;(J&(ex22Nw3y7UG9?6>Udec9r(QO=Z;sI2UVG72^`eQIHbJ(>^+?Atlgyp>KWLz*r>1UsOlAYU-a(m0K{tsi9ZX=p2qR?R- za)MtI(l;D-<0ka2&{6IqyEC*>Ryp5-M)TpXnfF7S{EPYv_WVoQ2RG&X%T^5@I;*b< zuR$yJ_u#*0jomrV>dZyjK%?`Xw#vD1EXn(Oad+`zl&73Qq#pNcZk@CyLJ-8wq!UMY6HSh>=2wZ1{~ zXSY!N&Zwi$D(}mS$GhTKontH~dSC94?0&t-=k&Y&Nqz4?tK*Jgl^_145iXHn2aZG4 zNBV?STwIS%Trx&~I=gIa>_TMC+ktulyiwsBRj}U96 z^%qIWJxskn!fYdQND8(4*#2&YTMW}vT=dIKJy(eg{$={CLs0hhesqNWBXhdB#&-hv z#8H9L=KF-KeTtLLQM$wC%*@4oA}3E0U{4vT<%Q%l{!TD`3^ZqCM9Is5;$oxS7>FR& z3W_zv@f95AoUC(-x{}fHrIZ$|nw|=(!92;Sq6M6;VM7M{aqf=+;AWk#UF1Mi{ZD6#Xf*HGxGwx8NCPK&2piD zH_LMcyjh+z;LY+J0dJOP2Y54x4dBfftpIP94*|T{mIDq3v6N(9LvG;+DX_M%uqxTx zwl-*E-O&TQ8S_U=V)va)s>mNTkgTZmjvwXSFa1Kuq58s9Fr zlQ7Myx|b~6uI3YPwU#w1?rm8&ISP0)N5Gq<&O7K?G%UjbZ>9%attD<}ia?t7#Q|@o z*!J)^_GDDVy!Gr_Fr9Q|ll{=i*<32JeHcshRmT8Dgj1(yuk-iLuWXN;y9p#jf0Pp& zML73R9Hjo^&1y>MqU~%3m_mSDI337^3%J^qtcQ7|6kJClfLu67_*ltmO#B|c+c zuDY7l!6!Ex!_qgKl#q${L6U+?9DU|xUJ!^?p(d~`#o&WDPB{ zWlPefSP>jslk|R#@zvX3LnfWo$-U`jWbwtl5T4q|exGfXzz0e;XOpQ--P@e?@`?_< zlW7(Aci4Ku6kHIK={eFn%;*7mn8joUB5;Rc>w&x%XfiXrdx!Q^{zeXtGnoayze|lB z{>~pW@x?`Y_XX*oY;eIuwngCXGe&&baM(nSZuc%gj+Kd$oyb+Wzeg++E*(cUktZp= zN2EC@h1ed?2L5&au+Nd!>K7y~Jzc#>&>DO3$a8#E_-LYUz>kL zo4Cd*`nzm@{9+SryB@7)RXmwtI-7dp{(4fO;O>&pr z79YFNsQ74Y#6A0UXyG3r z)Kf|>9Pgoy1^-t_27ONa8}`&mY0_X`ACiX>LtWSluR^F8*Plogb~8mi2z|ai{Pd=} zhl`9M+)QcU`PA>YS8dfsU^@E$4&s}92O+J&==!$Lm}HQX%9o9ZjS#UKCSX2gLBK`07?+0EYpr~qMDfdWHSYYUzRGaRsg;HM9s=0c%Kjl!s~gfDLZon&;KHf3gFp`v z#%q=EzNz(}-5z56aMh@tsf~;Ko)R+Gs&Tl}oA-ibJl|@<-y@i(w;l$0N%MR?;`U&)egrTn|^T z*qJ^M!S+_|xmK^iMSqi$@&15@Yap4?hl>1S*6z|LM(U?pocszAN~TGWqlTWTQ~y|Glv$UK4j_A)WYT2*f`aiCg#){Q}WM124%6ga8=JeaUJc_)X-T*})HEx1_oJukPQsWmq zcH{M~2g^%mNVD6<+I?T-^!rACd>=;zpiFisQltQ7;w8CKo#PgP=0J~KtP(YcOx!&H>JKd(n4!5bX z-EC@Y11OVxD?ph*EN+#FJ;^$9E2#nkG}b=1jkWV_V{LcaSR0{$##-&Ru~wb~8f&rJ z##->UvF3fCu$xW){Qt+sx)f-vbpd6f1}GDtu`UG~Yl?q0))hcwU7G9YGn>m*+m9O9aK;5zIys>GWHT8Xe26^zDh7jgyh8%Whi; zsYuUlb;nT@I@2!`x|`#w?6qf<71cCbQfUY~sK_Po{$@L-(!79Np>{uNnj%20w+^wm ze}8qN;uF+G6K!}hIA!JY^C1t>mHVV>^u|vNiMH<<#(qpJde-ka>wH}TxT1R#94-DC zxT0J6b3}vdciB0jD&cgt5^a9*mm9dE8@AHN2* zWSamih0gC)ArOBcHMaiQMZ29JDytO#IDVFbfoFnK#m6)a!O}A+T^(+Mq9fao?%@oU z{cO02|Ex>9kSp$qqJ`*&d2f;IdR}#;K0YmFd{?g!&Tb@3REg?mf4tbq2WI%C*_ZDu z{VxZrV=hD(=v+yF6Q}T)D2*ICde$^qwKxVKHI@TX;|Iz$@g-{vEFyG+9~|-$3L>5| zs1Nk0)=UPL`s6<|V;$mYszGq%F>+=34;sh@g>W=V#T3b#eEbU{>Mo?JkEunR zCqTrFP&caJGv34-KFFJQLhs*`)y3nY%_X@}?-f9NaYRsaX>y?t(%`xna#C~Io5l~~ zFurJ-dNa8lK{Y`{T_m%nnZj738V`~$g8S4|sX3j)zA2rvft<=tQ`Cq>@g|AJ7mPrw7g+DJznM4@0P{zPUu|apD{>-&N}7(=yjdKoZ3(IoX$au&7|%QeL;FI3rPKX{&TxAMm@JKkU^!UyX{PmE)WG8 z6hqIgS0K6`@gT$8M0cwlY+WyJq+v$=xy5n5j*l70C<*NjIhWCaDMLVxSiFlmK$@tZm(dgw9t zg2PMeO|9#H>u?8?3wG(mJ!2l~{aeBm`NMz1Z^WYycw8AHh8pRHy7qhTReuePFjwP2 z4HWwDBxn|IuwKXvf_on$YW0f&WkRQLq?!D1dy8Aje7Hf9w{y_WBBV&@2JC3~ENvlT zSZK;K1xN-hzm@F-bbD(0!JcJZQ0}Uc3Y!LCerCT-+!f(YHH|Fznfs1(52X6nG!gVO zUpaA)+fmmnWBa5~ophfgy2&gbc~Y#CxX)TiVO}15Qffqcz%=G%UN3u64oN(qJ)Spj z#W|_8CH+Q4Bm(Iv_)+bg_|1tc4Ki}JUF%MIXs2=kK_j>8eG~0nU<>IhvX+f#AqN;@ zA!8@lvS|zD;DubsJnpq@ITdn*V-~W`aje>~n;iYm7QWobT74xIb_yn2%*G9|>SSzk z3I{Fb5cOGg^9wsiffsYhajko0nw;Zci+MEftot>ET@Z-HeCDta>p@79ODb})fV{dXwRQxW)W-`CYtpv1GqS|LOT`vr+056ql z;o4$)nxHkXr81*;wzFtq7!t8mZW&@bztse5LM~ODeR^|W`paDn^V~7Jj^O3$>d*)G z-vIM3xMJT&$>873XfFEylfyZG7jlR1j>tdi_da4o z|GMmrrQ?Q>W&C}$hxz=W5Nc0>wCpc*UdZIQ;B;K7HM@7-nhO2C5aG(aVxTW%x)Ydv z57Cy?WN_eIU5j==h-e?{bg15t9w&&Z{d_lpt4Wj~rgCnQQW@+AhFkq*|4};4eg6A+ z>zdyZm>M1xFt*2Db~kqPygFa>@8V}M_P$da94Xt|e@E-t)Rn6$meQt$<) zU{mygkj2Wo7$CXx~4stH+vL@gn_O(Z*4=a&7 zqqg>~Cl*8O?SK9%mbb0J1-P2=?k#e4>@f|0Z;t(I?b!VT$LF}6NL9bM`^r$X>gz9y z#n(N*xgMRg(djAi^fHrEE_dLIEV^{Po=LA6pbin`?S7#Z@pF)7C*ow3!gjEFP%Md~ zcAP63_veV>y>i|uJ}GF#?rSR%sQmbUyFb;Jds4?GyXG2-a$ASdZUWYFv)} znSomQe6J0)8cO2exs#lv@@Fe38s69#)-YaVd*eTx6#~v7%|aIi9e2uPkf1 zd8a)fvw63p-NETwZ*!FQNfWo~g%?us_~LtME?4tui*2;%`PTsM%b(reG`>Hl;wwc@ zhtrNPhsMbr+y9=^WHnu&yZn5;=gd~l#%IK?e8>FONLGL2X^Y>_jE3*=uKwMe5yxqZ z_WR+wdYKNExb%GQ|A%DdnqyYt(e<&|-MrO1wAyc;P>%;b&{)ILnSJw2JSO0Y+uD78 z?Y9($F@ewP)^L`VFmE5j--pm@tm64}2z$55!{SCM+Ozln z7jJLbRad)a-6jwrXo4nqa3{f?1PvbC-QC^Y-95NFEF6M6E4aJ6yR0);o?W%8s?|B? z{q+8c+3tCb(fbHxu3bk8PU5E{lMWDjwSkiSQQ#}`nYA?22KtziAPY|wk9Dpt*3zvY zgN1aYVfQ-X)T{uf##pHGrS3;0b|JQe4^g)0de|6^LVTd;XvWw~YATT0F}yb%8G)_dj1eEuGEX zfB%nlx^Mo8#2jM*mp)0q|MpTS98b0w@iaoUKblmkJgxCVs#r9M zghB3rZPrL4yZ$vU_A2>k5@+x=6TB?BXdYAY8wq&(e7RhylH!(qxss_=34a%f0r^9v z2>qgrvUd(9({)G_ZT<%}vHGb_J@%ny&5uV7TK4B$YA@81Wr8J|VZ5pp0&my-VYK=C<9d|Q6nh^?f zbC_y)R@g;OUQv2Of3}s9Wou!<#$n$-9m%2S@nmDPx6=F;fmlk?5!7?yKxTk`y)~Nm3oVY!{m1Ae}I}ayFSzxR(CqaE8u)-EhX|q?~a0 z)k0!VKKx|$7y;}#y+}^Xccd{gFnhZ3{BMHuV$RL)a^s~rit>^aV?J%iiMg=Woy$tbx{W}a8unge_xzC!r(+*I>y09TiakDRtB22I54kYJs&JqU#JE+R z5Eq44q_>_^GBVtWI%R{NzsPKuIIhYD!X7h&vYsqf>8$E69L}){(;7oapk-UhSz$abBO9u5jMmTxdXk-|(Kjj&i$T%(S+7 z`+IQB(sTa-{{eNE2fh>Rb52e8glxq77XH2O^Mg99bs!JizNPyk?B|z)M&D3~e)_@- zNWPQ)*zr>GeE>%H+H3oy@0b>U{PBRb35c;1-@E*%z|UdJa9~ye;_09Mte4t|V-o^6 z_|hTl-RsD8v;3r>pFsoy>+r3&{9oFlLPbhfP_fwf$uY-5q|kNI2iOE(d_4^nMg-49+NnaJ=>T}q5QVY!I$=x=@`80w9pVli70rCg-Mnni<3DK-hsrKA*qH9{w5 zJhAbW!F#O6VTCtn$)Lj^xs)O?6DrvRhwe=>W_A(D{PEaczr0Un$r2(CF)?e0TWnR% zBDNlA>3?tyxI)>%x+&5ypWb`Jae042y3pFl42=5r;_vj1F4xQ1K)(Os{#k#i_2T;F zw|}lzbvV29|DQ{sk%asqkF%C5ZMKYZ-`}r&o9$2h@?RKGx1dpM7Cmyw&)=d1W=8+b zTObT5=LFFBXT25(|4-f`B2JXK2fbAAKX?nK0R`?s7WFwDafzy^(w~^x&#WnUTxU?$Mq@~dcD&7d%ZG-=4yt(^=eBG zxL$4P0J&P87SMSl(*Qb;`KmzYF<%MjJQ^rMJCCx^&Z7*_c{G#+I*;TMK<9B+4Cp-W z3j5<17YYRfBVdBzJXDkd(UK;6eDNB^McOgQOS4awNjE|M={eH zu6m$(UfFb_NC|z{jgOha>=|^cdDfLS;2eF!=fH+F`)Ap;elA44diM7Z-D^hY98go z)fsf{W&m$71n?FX%V9Ms94BS~ZxIUc78*dVmLNo64)7LYK&~dqgH#tIBV`Wo76||F z7Igq`VGi&XLjZ3<2jpr1Z($Db7NJ0{h7aUw0B>Oq@D{$1B84yiNOi7n{N?HWX@?Xv69>QEVT33&l{<8IqoUxewD2m>Ap8_8R>Gf zTyfmowzk64_Ipcn*X>@w2h0FEq;*wde%Rgqr67G^wu_{jmw zrDcR#_#6DC(p!#!@KyZ9?{{s&KA0rH_3AbW$)@rv{v%=H7Ye=yUAJp*uXnt>`?w*=6Qg(7zTKY{w~JxXjYRJ z;>_*BKBD=m$l3v7LQ|st@1wa<0eZ*;Xd*p=4Cf&cZn>BciU9(d>KMK-60%I6eu)sF z*bI{Q6#N6dVln4F`COz4LPdk=cGdA%&ZIP-dj^%s3KKviBy_gU{p#m3(M6A208t>0 zcvqc-%t6NRoo`s5DmQsl0FEhVfKp$^mUtr9fF-9BJtieO$wztz{{Lu>rW&teya z@>);eflZoQ;W7d%PgiK8L7LUUE}TG6_s0;M%-4j=Q1UGu(V7MsYLHzBy}yolDw{0n z^kon$sg9&?gDk}*qr3R6Cc=~@b( z8>Zek$a`yYYbm{Bn|_fn|TCY51e{GjZs&2&3ssfI8 zur26OGoh|m8K}FquFzLALt|C#0?|9zd$CSJxKpd8$?$ENb-_j^=%Wsy0I) zwJPQtQ}C9GT@8zRiM*r9jK7LQDo8!g{>Es9RK>}cMI$rb(Qv0n*~Jv3kz9A9f1dBm>iPEO%x5vEZDDR|> z#iAI{SEp@d-=In`tq@eftYZ?-rb6zZ5RzD@qgVG)qoajPO@oF8dxN@{;d;aTPonM@ z<(fXss;?D(Y1Blph<)D_LZc1q^pu!CY5$P4AvqE_T?b<`I-A z#k?J;&OV&>iZSJr%=XVZXNaze#s%XBjiK>)B#k~7xDNgq)` zb2Tbk<|u7EYUP`xY1$h52x|#y^`WGhFBezL-tN@erW3P^0wC6SBuRtNiMdTb5PM#@ zq)Exd{9!kUvkpnhVrXLF@>M-|Pq>uL!NlUDKt1mi(oYA3$)#8R_20L`f4WdlE+h8T z^IsuJdx%Z0pucVqd>tX}V>-EtE7%~6fh-dcI=M#T-ylL7Arn$ExlRMjS1}{YMhs1E zFuiV+5R8zGIhfq!3KDFTl1G+HK$zMR@NbmXkC02Dp4t}gX_U1`md_BI+L3$RB<~*~ zpKUs|t0vf_7>}%wA3C+C=ij897okvGGPQ5k)1+F5tXMuYbzt|pS-mGhvHD=@&`q#e za|&4rgfM;N=ijUi81|Z|6PT={UWiTl8&!G1;_!a$|29A7Sa;e*^6=k*jO~{iz~hAP z@8d+ue*YEq|H0#g9*@H=0@>`F*Xqdsc$^fX02Yc+m{POG8t6><-)L=*&voA8P5kfi zya`~Y+ysc$4t|(Pd%yW5I$1JTV>D5$PCbzVs+29MP8X{O9w!=0op{t(6)Wvtun5P6 zic~ArzGwiDaciMnrB}uReVlCNMs5(b{Vo0AFcKsnLQ6mSg2F;0O?9Td#Sd)&kO7*X zO@+>s<6NkAmAC>xh8vm1I26dxIAa4~&>V6*sH$pxvchzQhZ9=*;r&NYakvttpQ;Id zKDoU<-6(LU2Vl_BO8^G7{0oC(2WA-bzXpH|qPsu<$Y5bzH9`Ue6~3;oSpgt}Di;7U zh@dd&GZY4$hr*yBC=40{g+VQ#FsLXL2Bm`vDv+Uqiv4RqP|?N$2r4q5f(jQ9FjJ~< ztrsUp$D$vv^u|FyL5<`3m%nnWpqGL;fw|d zD(0pW_wOioQ@plWcC#!oRS2`gMvH*b4?~Y(Zk#Bz^uq!z{Seg}7o>Z@o8)Ils2CUJ z3x${zhnEjhWtX=>IE+fG?*Ubn%W_CbdebqLVMSZhJF`j?WUOqGAvl?X{ z1oQZDNgVyUX_jDfkch>QdGxXej$Xt1bxuNwy zk$*fyU-O9FZRrUb)Pi=WTX;B zrWp*7B?j9JY6GR8L;wcWA7+pR9w$G6(oZY^gX)2K(16FuHvk5W1Yl6zanXr>yNNGA z=_eF`L3O4SVuS3b2?0SxpoV9-_N$DV#zt`y4MDYa5?R)0ASE^f=IW+L3%0Ii_sNi z_sb?JDfg4#Ywp|^bFghs{^p*UYPajU^{#hR8IjK}n-yTyhhu~ykH@tRDPHsI70b=X z`=NeM$jku23u(YwoWJe)CQR}r8U_9( zh)r%x!Xz9SV{o*D%{WoUBZ(j%rKs4~>NqJbQmVXJ?(Q-hhFrJ2d^yS?+VScH4Kq?Y zMyDb5>w?6#MG+cb<0x&^iKGsJeERrCF@yE-hQw1vKOFGK)BXGm3AgryU5>{xoVpG1t|%eG9&KZpX0ME}Uz-T| zM2!8?5-`HTC>9LR7|W9LGeRfb7YLyn%l^@A^nsa5AmaH?4%aJVWI+@Dn9)DEUj&R1 z=#!+xWFT)%OgZKLv=dOkn&?zGWl-DSRPd0*Nc;&0hu= zUHY0l=I-+pmxGIUyG-tCsd&mgz$FW?2Up#q+|@$h(oz0{^T`k{5GJ^+)A!(HbC9!X zd$b(Xb#QnI&)EhVttf^)+1N^c6T3qIj0+L zf#bLAn56!4{XEqA=wsQoX-a=TI@EUBY1w?4O81;F)V>aLTK{U87RGSs_cY&WEjl9Y z8`hzYL7&qql2SS?RI~`pwo_cjQf*F~hA!tx(jaMyfe&cK-DK17{!3SD=;VbxbZ-Vi zHePRhbk*x^?)=(nVzwc6-q4o|#& zip{o^IU0w|HyM(cNw&Yb77rWHk)=$OZpqa(LNrZTE>eY=4ZV7thwYK4(mT?2ypI}( z+{vag%W#c+k?sfld8V?G({}x6IR?TNrgFk@jRPcH`r|F8^1Rdb0?nKH(gUUn%yCVE z!#R5MGNy{u)AmEkIC{!JQza6(rePy4-F2f=W#7{d!jGD|TDPYvm~qV_ksdmGo~NoJ z8xQqZT$8~T2DO>&M@9;+DKq5;po+#LGY8kym1Bd3cJ^bd1lP13I>RP#bn3_AmW5(z)J?!~7Np>o zja6aPOW$-B=HQk?aAMTY%W)o+;Fe1sMQ=O^Y?sD?-16uxjfXWkE|R9*@>wg4M=hH! z(yrYKcu$P~cye6+!gMbbrZ*XnY`V;4aW9gxG?~ogxGGd|FIKEDnXYKMDs^x#(L6Dk zZRfbIOmHtXq&J-hH(l3)+{-L2O&3=xqGaM?cVy&EN#Oy*a1VVt)$ zkO>!)VsYnSpc2oLV^rbZXEg09lWq0T50NkBtJEJM5(t$$Qm!^%D)(QIw|D`v-&(gX zPNdVUcRd=7Pr%v^4~ z6i4z}n4;vKe!Qjw(Erg%NG45CgM^u(ux)y9JAUu zR8z|8DXIly&{px67Bdxv95tE3Q(Lr7j*Atx-Ukd; zG|zX!S2n^BEKpV6#&B9S?a&QdbiHXWq3(JOKCtRM62i5r!Za2C()U&@^lLXBAkb=k z*mkuZgm)GH+K);+Y|~5DM{_<*lDTME3~73_>fxw3tQh2pL<9g0lqH)H98Da%F*brF zrWV?P2c`)E&hX38v+J;{Ar&d^Gw_#C+M01D&9duhz6V7wntHpr^J0vmzT;Nz zM*8KtYwD=|R8GmV!%kpg#_e7u@gVc*`B?%}w$hVJnw!VsB#H|e2_ z{UQyAfb%?)7yn);PL`MJvPI1D;iSU#g!AmT)H26y!%aEoP0w3i?)w4G_Li%WooBA6 zv1SPO-P!>!&%+kl(%Gsa_m(;e)y{_IeRn<2qdnLYiAn2e(vkPwHrNeTPV4cIl^22M zz3<6{*2^u&Z)GI!y`Es#o__-C#tKn>XnLy%>`I+gdQtv3xms_voxZ;ecppfdtBu&F z4h_)WyOP^!J;>eilD>H#%xb3t@7};i35p8-u(|fOXjTA)E;>}1X&p1`mY;h2XMo_O zHqxgUZWs%2*mt>&_f>5C?D!wNr7zdf&Xk0>C8NXSFE=ncl!Teetv{Qiui?CQ79zqw zr*)oO$9g#@C~`dJ7mdC_a`*9v*mHDj{NyI7`K+)Ma!ibN?Z(IN$)fzD(NV^BTXZmHAUv~F*{k>^0vJyelyxxuA%`RU;1q@y$70~#{d^r?2Q;R7E& z&8I@GHd_qEw)xqr?cvz3T~AybwHtj2oa8L-DNL#}M%uCQND0>p3v$-HQ)O|i(kp_> zu9$5c_IiJMDT#O7TI_7bDuU@fJUCuhWy~asu9#uD93BldD?$Ldi<|s@896~`0?%Fc zSri7B4(}qj+rv@v5IAAw_~BXRNiowS@|5+L=grqZFRz{tMq0jbFccqsC)g>nexlo8 zY57PTIer%T6j1-!i)D9n&6_xz?Q`IdbU5u0`tsYXPz<3$q5v8f!JGhwWjLJ(GR)gG zpKs4>IZ-^Q?0P|?%1I=#V{1Db5k%J?i6ex0l!(JrRp#`gRL+C8Vg-TkUAQ7PJ86tD zm54!t80MZqih)oOVcd#{2zjbz@f=x3O;2AzlE*c>VW$1Ib3vNdG?`J7e8in$vagT| zMOGkc3IL>G&+nQ?_EPSrL}d(+=4WnW?x&U>D;K95xj;nsNT7M93TrpB zsV(Z)sSv1Y7W11Hirc3{%^Qa@RLejd9;W4GXX{P$4c+;ir|oO!2>DI$kqhPRcQ7sG zEv;h+M?D?Dc6-~k!SI)k85cLJ?svXnUd_dwoK?T^-kKfOe#BWkAEa;QI`75f3$q=7 z!+NajrL@Jp02AEcRuA*D0-s3=a7pzzI>g}XupF^E^T_BjZf&>tK?^gOpF>p_rk`&EBdjhjtJ;f$LZSKH;A^#l}+i>>4mcblDDvGV)vV%dl#y+H7&(_yLN zanrIXFI~f$UnbJyUOxY_OK9VQ#{H=>q}=&vo;1Vla)_6JYqjX2?S8k(Gs1DV!M5V@ z_}9&-g9LrPT$^n{Pg}j ztck##^!uSF%Afd^_B%m}Z?EX0{E%|jP$2dV-w7Q~NldB;QSXGgw#$HxcC~d_=ECl3 zaU|Cln`>ynN`mETXP!#6Djz%gLA0G#fegcIpF#_}2t})0FvPRa7~uq&=ii639cCez zvVDUEuEVUQIr#n``&sbELS#uk;xxvaW zV+p-+%k;5#qJj?5$=Qorq`m`U5`3{K6SzcQ6X&8xuIXc{1q@i*3;8(iWm0k{$*3De zuq4aRk~ieYIJ}ES)l?WWMh;2XK2ti3I_P`}eeA~lrrjvzbInM*nYQsw+IZBlm*E$Z z`VLoxvXt!dL}mli7S)lmxSN4oQtRTj0C&iUodQFA<6@y8XUJI0xNQe{El=#Bqn(IUpM1VUMjvgeJS$Krx>oL zis(nhzY*a77g?)}E{FO2uW&fRp*JueO8&c?q=3(6wzLS5aDX%qyci0wFPfaKu+Re53QNkFT15S-`|{~WkyQ1 zKd;lJO2LR^`m6JF^0XRD-0A~XQ;H;oQodr-cCo%nxn)#Oge+%jipg|p(IuO)tt3c%> ze}g&&Xiz5$m6J$8`*!fNeXXxg2(pz;rTv*3a`$Wcx?< zTD&%mpWsMuT$I`vxP`$YU8Rak(QZyCgeu!lb6SjCg)4cM<<0yP)CGit;tVU?fuJt3 z&|y(hOrk#CY6XeNwPhYsax?1yX|-GRnURoRA;;2SS_?r*cHBT2MQRL>l!_qQNI0Ny z-Zs`9y$g%?93@&A3h}7h$*=h6vVU(rdLLNQuAzBY-M8a%^l3bz*`?_uV)>|zf7bPM z14*jI@i&2I+=>;rg{ebtVNJj-tOmG+xo&ilzS#+qWRgP5`O!`(bLPPmwu%v*(@pD>7pidy zkKSeUojT@&H&8Q&8SrVqD31PN>_%+#o1(8EtSUk+gczTezmMC1EYw3F1|K%L?;|Q| zkQbL822#-v8iwlV>PBLc0j7SD{mPhxLv12P${t}GoA9HeHS({-1JVp*vH3K_RI_=y4klw^7Z@=|K1*3nll$5goNp0xK|9Yy&Ocrx=}%LWo{LS+HPt!l+-94> zRz%KqH3u1WU7sL(lr#JW-UEB0ie|jQAZ9~Lp|WK_PeE|s{jU3oFE~H%7iRcR0Y=dn z?-;ZkTqH6+ek#e3rs&-F`oCzTn=m2+Ci0eFQHt5ujU~tA=d&yYiQB4tNV1qHm|dil zB8QnY!IV$o!!r?xxEIf7U@Q`K50Z^#m)GTEE=DTa|567(T%yCQ%=Sbj-9$5C7Q zf|ObXuX9Sn1*6P-N?**&w6Ob~FBwY8<~V(X+4P(BlI5)b@y3R(9!UA9 z{W?JD7jcADFp86oPyTENHJMf@@BMmR??*32599E)Cf#PqhAyJUuMoeqcHF+&J~zQ? zEl)%}O{z~-QVuk+sWdXNAu)sBBN+4x!t~QklxsBK&?YvEPejKg6AOScqdl<=CP2xM zI$fR%rV*MQ2GzL)dj*5Ei(v_li^c-Wgrf`y&D6Jz=|63FOj$J{M(ZppjUgILN>4O< zI^5Vz(dD%cbmr=kwyYB=k{6ExNbSsTrzX|~nO(lC8_U##r}i1^q~(t^R3;LqVgj!2 z>?C-UiKnLTU$b~ww;E{#f@ha6>}CDUwG0@Q@-U`qGbm|~-pV%5qXt}yRGDX)+AegB zE?0so9?d}ks@==mpz2H)3-khk??NZ_lkJFc@Gdo^c_#DgBG^fMhxE-(RvS7R_3 z%cd#9ZJLz)cHp4pe06Hkk+$z($P>>t2&^{Bx}yHaI?=ZE*lmt`=N1g+x}0ZLcM!Ze z7@JGCi=$5;mhx1eR>rdbEvddNUvM|o+;TM;zhtLQemHZ6=kO~MZ^#f!eUUfOp{smp z#oX|Ip@_?I^orZoUh!}VBg3)uq;b6sb9X$Iy~@jLlED& zL8`4QQBiFdA<=ojVtFfl=V3?0%_Y46|ExsO`XKz-Wv~ywwY?=UNEQ2`ZKjR%20;Sj{kP9B zL_sf@8oqi20U6?~mk{6lcZgdp0ny`Z;4|#|_y1N0T)vchaq?39@5?D1(A?Af|E7q; z{pBS2uvTWXY+wKD;7uyqhvS-jq=lSUrtb;gNB@@;kq4-ea>GXnP>kjOlOmSPBrN_C zMLO-;pZS|24k;MS7RnAGoB#820$=-yO`9!4Q$+kl>l39$#dlDx+gFV)>nD!C6{p;& zhf(PE=?)l|k@yW%b3c(ynh5}U%xjaWP(V+W_OKfY=!GkrZO%epPRr*k!1igZCevR) z?+p~tORvA&pRK8B1GH|Aql@i8#i@b~T5&o`0V+;UGti2YCcJ0c(*w)F#tPUo_xbt7 zo1`&M7)+y8{#W>gt3EGD`d58lasW!%Tah1Y{%6X7=6=_>e=Tsu8E!pjHu%SSFgQ7A zJ*2;=e?7FL5pE-_Zs5m8c-dUgMnv9T|3+l`9pFugdnd9P9r_7S%6dZwZycdYSu?0o z*5xk$lZBE4dvd%+z#KYopqs)+4Pe~h@S_M zWj<;TQd#!f3}Lk)UidM9AGJnU=!0xW-yRR!dh#fCi^XL> z*-hR^NL;xoXr`}?s}Ky^&%k>kIdthnB3T1kw=jo!%!(0*UW@h->qQ$+amOX1m2k%a zAVmzfS@EbqbXuiDk#rgkAds|O4_O&@+Th?tb_T~tAp?LO%291z@^#Ao4TQfF*`&eJ5k(g4y!xim?bA9<616+sD}SD zDtVC5a2!HxVFoEfG~Ew39gj4M9`2>ekcBKF%rVp++TPqy4Yzk6yNrr~mlKmNm+p`8 z!d`jfs&Hj(VqE@Fzw z6F(8S+Wk8%S9jD9`g2f@|; z_MPnyGNzpG+g2?;%7#C1ER)_S>RJLH*v4QKT*i=h6mC_QF|MDS zWuCH^QdgIgW}O`_%a zU{P$Gx-xgvSJjvRDb`%sn|Z!g)oNx@D#N%o3CvT`$pIxlA=929(4KmG@jpSM8W8)L_3XqgdxIy#bb(p#pWlCnGEDM25QE(`$TQauCQdu!qaEfPM z){Re8+Cfrqaj(T5#>5_@GSNlWQley7jq4)Ou%`fCW}dR@gZ*0mgmYnssw-AEkP!Gda3n6hGk zJ>9xc&yDt@W>Rl@XBEf{Q5#Qpuy1MI+Si+glE_!AAD+b~CytAb1SM%8(5JdFZCI1? z?H~|B*mzWxlGD|Q4P9T^q<25keE}y9Tk+Mj3?phXR}4T#u5@gv*UZQ`HpE7YYip7& zOPTJnKT^A0%lt~s=l}D>PV3t%lMNfNBTJ`Z5>B?2^A7X>_TWu|>aQI#qb8qO!* z)`@{p3m%7M(6nmyO}Sa=frjtt?_6-W^<%$KS(??DAEe`4x znmeYmPaF=v6VxjW$<5}GnjN}9>Q$D8W{Y^7j{Vc>)s6*b%e2jo!`JFHo;zl%+$DKm zy}V!pcrKMIJDkjv)?qGazqc=eunQ%5L*0?XwUB?G@m7^NY9RZL(eM&S+Lbbo3zz_ECEB%8hZ{@}oa>6U-q4eE!Nr@?nT{w*-R=FP zuRHyYoMM=G*tI$%k-RzAX7QJMLq)2o$Sp3HW<$ox{Pq$!pyS*Y>*hN3W+oGZZf$FO<&n2$=vAxz3-Wf^trmMtRYhp;ls2kVq`DT4;`$rzz{;T)%B_5d>9By~j z%FDu@8tzYr4|g+}?vP-`U#`@zeyn=Ez-QC+LEaW7@O>i_^vefH<(4o2qq;9M5XPtB zSJ0=JS#39h?2p+Y#MMgKq2%lJ3v##`AJ@X}m*8;2IZ*u-!f~!|CnEW_1#$yW`GQCy z&{B*xVmPP!-EMBI~SwGD@ zqESCteXzkG#Xg%dKU1$)&mhzFS=s0pB~meYni(C3VGbq7AZdEcx`=UZQn^ymFK2`K z_55Im;-Uh2pOBdB+}@=9L_dbXf+E~32*-YDX8FEBNo1QzNxF?BJY`wlG5l_Nng)Dn zabGq3fl&2y%3;}%$)s5&_&lVfqDg_%tRmrg|FC}2C$zKy$o?p*varSIYPXwA3Y&v6 zsP>ztgFRr2hUlB0J44G`_L0>rn;Y8}tXitpn@_r*#+#4omJCeK z+CRQ6t?I;Dz=`k1@Exw|*C7@E+JS?EXw?J*jJ9{65a3n~k`CcAbj@-sGIkHg3|9}( zIU-*4abynL_VO?y)zieM1w(2;P&bks}I?A>a=$gT{TS%|Lx)&jJ-MAl}!+kdvKjCrLpDgxVzvZp_+_YPA zvD~=Ye$due?+}HLft|t@A7n@kEkau5z6Fb2{ zuVMRh5v@C#n&#_;o%Th_FCK5w2w-kl`4D(Uy+7b;y+LT`fNhHOqi4!GK>hLibwH&z ze(7g8Rf^7!Hm5#JYFS7S=OBJWzDS?j*sM#!+wbr2rF}&n*WTGubmIw)`QtGW!A2MI zl4e&1Q@If#RLpkKypay$C(-=?ZV;q!kPcz=%lfnhC%_>o9m={%1X*nmcyWK`?J52l z&3?C=CE_exsWbS z{WW?kQa2Wu_f7v}jl*eNLn^`gYmMu}K%6$0?}09ysl{0@*T(^FmSOfB{mvv#z|G=v zVb}-VIz_s*(+0LqhmQ9-E}_=AlhP+8s5MUb9J+OS7Sa_-tqFKDfdZ*LXCz>a+lRVY zz+q4~OTb?@i$*#0Xg+}-rUERSseqx@xB}?HS$hkxa0dB(*m}L<^-8B((;JQ~=#Mu% z3mc&?vQQF%AF2Wzfj_1}5Pkr*!!2GQet;2P5K+P{ZZKKC5pD<-=oTlGuGa}CjA6PT zJDg?v2X+L%2uxnG239kO2xys`I7UN!)9OEEyV zn3RD6LQKokj|WZj+n!a7D?5cm&8oujL(Q@W=~RtsM&H1j*SbrJnP*IEs2YOidjYz| z9H3j0*CRL$8n<17Et*uyhb-cc+Yt0y&gn!fTZNZHE28d?7j)a7x8baQGb4*zg}otI z)aisT=(p-3e1M@T6mUfF1dtD9` z^O0TcE5M`5M<82DU`@nvl+&jHLZ^J%$uHz~rhgpawlPSL;(ReGb?kcSCnfc?_D3^v z;cWh*$Nk3M9pzbVJ+fWtdOOj={T?S9>|wIi?y2y2o+#+~bWj%A?s#)TkooZZ5d93p zM)U$Tis6ZqP!_fDTOL5S{BS0Gg`)ra9hs#Urd-4;#==-6oA>1SkE^*<6nyP~(VG!) zv*>1bVjKth(dCLE=sHn;96xpY*z$RYE|wL~U^IY7UJYg%{J>*54~WdwCedXR!BVjCPZZE5 z6KfFp;BfAnxv53L$R>)AVB=HZr$vR+Ao?0~?o~meMFYzw2AQ()tnb#OJE#}CyE=Do z*VFtm!76@%Ve8iSN|T|vUi^sp!UdeG!IZ-)u_JHmJR_jN5?U{@W`E(hvZ>By%PP4L zZ|kt*r_P~TFF93rVRu5J&c)9v1)j3Cz3Eotp{|EW4P0GVL-f?Xp|Sq#!mzV?`&y0f z0raz#dC~$UT~%O>Weg-QXO6|KDl`BZtF)gqC0J7VQN=P|94}`=?ye%53>wd^n>3=w zQxW%OnaG%uGh}U5mNW)UBwbDF^QtTVlxCTX!I0Mzeo~TQ2Tg`CPw7adE6IIknF^4X z*H+|KQg{cN^0J@O)Lc?jI%A%8iI>+fbXQcFtDCl~n^LpHQ&j6quVm)Fx~o>P=hkWb8;`ZV*SgWQINAz4t~ z$g*w@%rjV%-%5xgyO2Bm~sJm_G`};vr+`*3V~NRI^6LeRf*e9f{$v~&GVAlXcJ_^TCdh`M`tBi zkrl(IQgxZGZuMa#Pvt$t$%uw%`uQ|gBfzGc^vsP0KP0PR6A_omEe8hKLaXD5e{3D= z%!z6)CnwY|&RxdLd8kiYB<0i^WQN~Ch6|V((;CMO$fnqhEHfD4Cb*V3i3h*}Lp2$~ z6uaLiUj5 z80~mzi4~-dCJUG8N_CIa|6E2*$4lGWs<*PLQzyGi&3h zwvBo?xaZKCKgu-EKeV!do=T3)-zH5i^DtEh51FCGrPr#c+fa&ubJug>b?InI|Yg*yi7E^jqBa$GM(c=qY8Ua>jxU@k`nzSUcQ z-RQ)}vK$pDthb55?kuFR9Gw`rskQzB=KbU69p*b=z4d!I(jR`jonLQvjXNXV8+cy4 zeEIKNb}+2O3+)%Oe;+iOXKNe6>i;U6R%SsTG%Szg$Z2d+h^VyRv~p6qp}4N!EEIc5 zV6YHax6U0({PL-dGnm0k=oO9b{vsu6>Ocys?K!S!Tox!Z!K~a&xt4M)hdlO;{(h~A zc;UB1l_hwz61g(9u7Jy8baMGBBfOaO6i}H;uD*X$dZ-nxQj^_LN>8X_g<6~WQ^so= zg)iFm0Vo9$r43)yK;d}8;hb#Mvb_mqI-_oPXX>NrZDKgE4q7%=IlXSGDPxIaH^ZC2#ve*Rv4GP6*@N$~vq@U(YB;Bom>ukLj^42S&z!xW9C}2Wi?u~K-Bvp)3!$q-wyT<95P-dr6x$K2|_zdn9awhB>6-H&>=M<-8 zKun4YYd|Wd1-S+)lqC)M#U%wTO--8xC4(w7WqtE0W)&6BDb!U}L^x&D6AYZdsyjRm zX>Bt$(6-XjX{Ko~+R5!wv(9D&GegV9IK{7 z)Wh7N&gE(K?(ZtlwI&rWT&pHUm)##c&vm!405J3M;q;)S3xKGQp785M>AvQ=Wz7o+H)zF# ze&qU((h3sW(x15{mSr1)jQUP@{^$Bl?=J3!DZl2Y+kSbhwuX&x*$6h<5W~@iwQS4s z>c*77(YxiM=C=EZvK)YCsh7%d-Lls_ZruB|z~j18=ZW8Z`mM&J>8v?2LTxWe7}9*% z1MA6k(bcuwvOh4<)^fElw9I|BBCGj)xvOaDaXK4W;eOrFRnh#|LVnzQzn2*adA`2^ z^W0wAYFPhDY=@McxV*5_d_-sCeKQ?tcXL4igYuDQGnv*19g*;cu8<2B)5?dSRO^9l zmmB3A?1zf34I}b{2fgXNAGx14JTnCkW*gWW1|9jOZeb_lx|OeKmlhnv*rU95dJN91MNsjh}}dwQgM?Q^U0}~)@3Y8OCa~-+aJB(*QF#cZQo50pMr!Cmx|;M(%l10Mwy z*Afh5;`F9e2)f;|k}{BUQKI zXyRhQ*xCxv@_$(8MsLq6tpM>*5S8K`>*Q(^i(@9PS_F2a@`>`#9OlYgfep(Men#UO z$Kx|9rRG}mh@e^DHov|}bNrYi_^dyDaq`~z@sBn!r5^d=3#=9?n{ zSm#R;fOQI_xfR{mtVZ~%0|!UlyMyD~yMv?j-NA9j{2^7$Yn>t>wiv<##1@_1f!Lx! zBM@7Z{SCwx>9*D!Wf<+(6I)*G7RpMAky)i^oXK0K3YtV&#~C=2S*DrPKeS1I8UL0s z$_DbtA`|5L)h3I$^HE8d>-er&jwf@ZEd=v$sN_T7?XKzPkUcrOyfdokQvYc7J(Gg? zaxDA8EoFr=Z?FlrNpYs@pnb_cXBllNPoTn{dokn^Qd<5i9aJ&g0kBU0%5ejLb@se; zsQz*=yzkt33o@+jIsE8QM~@#<=`hTGwNf|kJm=V$&j8$MW&+dGSte*RoWd6kLJykW zm-inuZ%o-cHz^laY`5;TE`Epoh-Y^B@O!||CHH4%Gsou}-z$zUDmnW{Uv4)2UiVzQ zVtw5kf%%QSFG|6Yqd&nQ_V_co3+4OnQ{QV&G)!?;S3g`;e^=jErtQCcsJgN_zg`X- z*^lxy#JY`dLPr}4g;DMHlahYGj#S=M`|By>#pv%zg{*6yayiuw&7d7~ zmgNE0Tu*@V8B#mf*mD7NKJ2;pr4#48)^)4Yw&^CNLB)NR9~dk^OF zkMPt2E``lJflh^lC$+&G0P8fQ>wd&O^nqAf0fT!k5yw?c?#cCMFUglZ(cZOT^nK5< zG30xQu*<^P{l7l4e3=L|g3v(z~$#=XfX z{xCY6B2p>l*2!oV;7<(IlVp#cjG;lN$Ldd);4+wuC6J~^N6fw9W1ft|3ZuWjN%}_U zaw7h!m;Uy*p19cXM8eU77gy*RVv?B?pVp;b{2`ndl?6>C&W64?eL*IwAT*IQ();2U zkG_Zs_C#{m1BN5%3}KCh@stKBh96q`0YGnn}jTH5V zl+{{YvSj`mE^g^5t8y1&f%FWQRH2oZhxsz+Ck>Z=mIRfgl)oxA87@l+0TmYRy)0)R zE|2U1E4NjhZBlrzF0LseEG4(S_v46V*X)p|V+slS;S zI>m-+RM0Au(6e6j5D(Q#Oa4ePvy<*e8>-W>aKvY5lOE=S*Q@q967mYmjO)M~bkUuN zW!hw>JmHO|(oUq>!m>y(9BLcpL~h+CyMThhVJ>}6lpexz%Sd>W7rHZbc$?hX8N4}2 z+WC2^u>2PBRLjROXS$*``8~d=)`ULi7f|81hdNVjY3MGD{cUf5c}}(GO1r#72rHa{ zr#ec)T$nf86fR*?oi%+ftf#_?x5%lkCiHjg810H^=Tl$0q~Edh=neHA819}_V zm9Y7zdnWqc@$iZ$A+_Fl-kU4^`9df=$< zy@-d1D)sF2;5oXhSa`cC-TCxal(g%cR1q~sl9?f_a97Eqb~R@Hnc=7XuF_Bub#~pE z5fThH+5UEQF0YwU8W}fvgop-T+6-!pDcntAvt2`|X=a?G-%aUML{n^bW`ZBXT?L~< zQ}TRfQe4JejYw2WmIMKp3wPIG=+IICuEnbT?pnN}+A6w;Xr7 zwy2Iy8UkS(?qOivp<~d5K)UpM7|*y)ZmY!aH;=&JlA#GM;9sqIxzY$oY@q zo)$$Nb2Q}e;F&;27`?-RgV(#oYBVo!UmX3{2tf45q-~wf!E;OSTl%3wy8$9TdOYrD zf4UXfHlpmzetM^@{{ywp&Nfs0}^pyJ5L<$=5_O^6WNlk^a*=y@-u7wI#Q@h zb8?&ax7P*bwuty2xFzIw7)QsZvZ*(mfbcY0JZD|I>(9)Ehewp{&AM^WpIIqt&tM>d zXg%T8S=)UkulIeMBKRJ<^yGbKjK4tS`#7EtkX7`1`tW~9BQ=^lfJgNH!6Wlg1XwCk z{~?VE+46Py{V}B6K#HfXU@(Ee1CJ|Z$LOBxT&cu^q5r`nThebIKAVf&N&pUylW*q! zFCMWfycbLWSq{YfKX}ABEcv8N+*u?1f8!C3S@+FH#HD(TcPhA_PL(Fid>6nYO-D*? zCW|Vkip_uuj(dOIBjyf|xDf@7{j;g9!02 z*O@1P3jSzze5|c$d8sq>G1FszU_0e)487_2_0hsmd6r@>u7=?0{v3@I&hqc9pk4tB#4i1=t|^t92T6;G^OQi+FqU3>$?=n@pVQ zA)65APJOd%S4?@^oSUU6+d$t#ebd~)0W7=E2RI6Lz7f<0Ci&43gLVZ=qS*GHNh-d^ zMPLZi3&)J*Nc)n}0PH>AtOY($Y7ykps=Qob2vkwJjKZKQsfD}*Rdp;yJ2)}^fqg(@*)z`oB*(Z!#2dEc+zNt)Q!XUkjIMNtNopE-qjyD0vDF! zDXP6ULRD2-HjD@YTI@f$+Ev(NtLI@~tv`U$bmyD$nJ zzr(nL@vGowRHxa`o}*2_<3Oqe5z}D~6vgrQAj1E*tFo%75z^F@@o`}v(nu!A(2&u0>W753r*#J~<^6ux@Y=8=`Q5eoHJ@&}5 zGzY*Va(wOP(q^T-5kN!v$`F7@0$u`mBr#03&Xb#S}s&l9qZ4&v<-9RWv4&;SY*Vq+3KZ z=q6J7rHX!PT?p&^8c%HrEjq9g6gKD?2UqnL?Ya91nIw&;v#Fd0uzk+RuH z*%h#1AJ2#kwOK8EB>=h|%k=NHS#GrFcODC1pD|v&-uV8q3iQ z-JaRF;PGW2gUI*V!he&Ycmgj+bA=w1j-d;2hjfm9W|ew5OsK#W5jdJh5xUd=LWnb3 zY&8FI?@l)l^XvGtk%Duy-FE3c_N4rg!ga~ACM{n!u;fV5SV&pDl`m^1{z!3mPg#w7 zD+^?8xCDyETp6~&oL@d%S|Yhunu5(->^WSP5mH`MDDrvm)jm!VT*s74*FG8w(?MGxIj zt&AjVBH`l~1B~`jN>4smdhzHpN}NTd#aY;tG|w}8o<--5S=coREU<&mVoGo@2=(%<|p2z&A1C^MpYhD_5+RZ<2iHpC**8 z+(`tNWOdFHXXC6qnOc?#;m;g1(#L8=gHeR*1mEr%Nnrrlp|$pe_g>99priH zd7O2iZOe+m**O?BX8plS@Vg1|pEN97n~;w!-!1t5q(4=$2}=`PwbA*LK@x8hQPQ#s z^8AxYGj0>vB)H}b{*%RoYa2b-vgQi=lg*)G8#^nw?uq=9!yj)OzumI#d-ew+K5qNz zTyP_h_##&h*DeXGbt8oD;E*k|hsZG({)MPBjt5Zl)6%(IK)pmF=pUP3z%;>(hcxS;%xtvmUA zm!%0Rpu#kv-C~`~vb1rg(}x>paotgKOSsGJqr zhaoSkn&KU*w_EpH&n~OG#vN+Ug?@ArU)2oaI@V*g{pjJls+~}AY$Opr7|^+@laF=8 zYN&F0=GwMMKbk%Bh06JZe%v?8vdWTbKnyWFTih9sY}Lg$@;0?v=I&{#*mF7}|JAl4 zaLxb4Yv<78vH$m{@bef#YL@r86ssJp0v%Mi@9E!)tdOkm_p?9_V>!O9F>bGbE4wjVjRP8Pr7H%zYyGk z6|8As{IV(}?&$pqIJf%z`3#+g5fLj~bJmDj2{Z%@hBc95I018dMmJ)&Sp~Fym zohs$F=zxc~6l%3vgXPL!+3b;J4(oJ|e#F(^n%#?>J1Y2&7CZd=FJ&m2YYcnBF=${} z>HB5_aTQ{il=HhAwW+x#Dp~V8TjQA|nwVoJ-1ZasoVn~dnJ0T`#imEGY!sgR3k@#o zFk`RZ&Iye{K~LD*>5td&66k|U{e613#z`a-#&!5TBByJxz6Rz9dmO>Lg;6A3*&?nd z{qV=SsH_|3^XAoAFh|y{!&Sv`E>bm9+zypdWoNXJzEJ{e62#T1`R25(o@>#T-KBalOrG+VaW8JI*J7xD zdDF+gJQK)|HOAXb|3pJ>pPH0ZG=TNVttbMUckzwSe2SVglQq~NA`&}IH>AZHY@Q@o zoN9}v&zNZvJzt#RQm?<3_HKN)ILBj8z9idsdEORcc2H)MDNrqFm;G^V$o6v}7xqid z5Ml+pxCn*l(xPa_%kBJ6d<(k;%rXkQg<>|*yTzG8!}g_+dTeI2d@w3{udKZIa<{w| zmbqV1hx@j?CM}-4vJyJwTTxZLw&0M|#U;#ITZ~P?RyRnV#aiFST(MtIsl$9wxk60g z3|%*IaDvUbX5}@_WE!%!ZkJb3wM~XBvbP@%FB&&2{c5WQMxNS_fJRHhn&$JptDG;7 z3BJ|zq9iG6`yNmj)plSdXZ?gxo-EYCs6RgW^>sJUsQxQcGG)yWOToAL;fs38h7s=G zcFr;W#q7E^!IB>*BjU4^?h|iF*c#!|G*#|XN=LCS(sEUB9|+#F1rw!K0jO*?+vx6QkWQeuMJp=r9!`yVMF z0&8(BfvxLh1)Z&XISnR)yJ=UDmY-QC%a=Yi^fbah8b(Zn51JMs!iR19%WcP91gMs? zJU8*y^CHclj?=-CwDyY;mKBkc31J%1-_wew9e*}!ygF}o3%WWl4;oONSI40%*Bks| zm)1}HdZo;czk0pFWSk6s%=7&L1E~ZWvPSg0*X;IZllaYPLJ;c2^xl1eH}{DrLvRYe zpAj}oK7^@-FIk#DF&2;_4OETbFEqz>A{8T4nfyq^vxLt?D)}s4 zEsWvC>Z9;<$>*Ju(Y$}_dzo)1V(2b5X-1-%79Hr_M<;iov7Q!`2A<^<-X~ zz~lA%)`@|1w@@HF!8~Q1bX!wa5(1C4mtH4F%*pa~!sFhDty5y?%e`5KC;9YkQ1i~q zDcr)7gHtx1?`z6yP)~h|lHQ;rnwOUqn@UU!+jt?P|5nXp3TP?cylW{p2%JjGOWAyR zq^V#5nMx^>-elIESJ3I4O05gqWDVC>G+Um^Z0Xx#ht4a4Zl|)kQ?_28Xezl48~-73)RZ4nFu)ep-ohnG~&HkTs4NgA&M|Q$k zm50x2UlafHzb3F~uyNADQX z0DIg=YvJWyHB+5|;b^!|++VL|M?CFPs%&OhA5e$$c|7*1vx26wjVQ(NHjEEK=tFRC z-tp|_qzUJGW-si6J{6mOToTduv|31al8UXmVs%Dz$TSsGX7B%8>j`R;bv6=wzxB{( zAMBjf>bPH1SAz`96t+Lg>joH2Zic`0$tO6!PEGoa`FYqX7WgRb*5u0jcoxBthB8Ds z+_wXNum*<9-%sXk8HHfSV^D@R2sTrONzuxiyAzw}t%i_OTRk@<1O3S}rZo|uGh)#2 zwlH}m*-WR+@e4s0$|iQ= zNkewt3Z#l@&yb?0GryTC=S#+zu9Y;T52kW1+e|ZxpSQ_yfxKeOc4*aS%CWBp>L6^$ z!;2$*ft<}}Z#1FOyzorYm-+q!yW81uhZlCaWH)6yd1;L0Yxx<)E?_NUKA6MbAQcZOs%ZOI^dTFH2R&!UAh` z*B*IgU9W~=W&EH4@Y5b)zG7{FUkb6o5J`S)?jRwG>eluAtg4np&>~yYif*B!TXN-;VofY=O`* zb@G$?A-c56UqdVR z^O~-zUGiH;Ej2B_J)vq|34I{OxB8L7B}8a{f3kR{ng~6+_ehb5hT5pG8S%tr282%P>V?MH{DB5S9tZ zu;}2$=mI@9EzPnV@mR4=gqEa30hu7I2{5--7P2G~_@ zmKTR$eToCzr;h~XrHJtpKWc5zleN5+E5=I7NwIqIO7N|s4t{dl%m$NSi-Kx3R!SA2 z^~<+{3YuX2)Do>t7X21QT^JU)*AY)K# zi#r1-5FWtFTuQOwDHBw7&>_g0o!R1VX;E<*$I3n+v=tZg|LTaJJgn3xnJ5pq=>L0hT@~Kkoq+bcC z$LJ6ikRW#C1Y0!{4zUW^i0tLx3TY&R35%GtcNO(pHPg+bwH|v(XNng8m3n&S|JflKzhtS*#p;`zG>P_x20mHp;m4f3!&aO)OwhQTSiC(N?SPgnM6dC7{uF zw^99kqg+`WKcL0}xQ#L@?GqJgwE%tdOMc0R3uXRyee(kOEB7|Opt0Ze%{K>D**_RQ zs{?MMRn%LuKJWkcZB!o!W0rC!b!N2!w^1}*UEns#XEP50ZlhGB{D33(eSa1qtl9T02-7*`^BW3|Kfl z+E>j1YAhyiZkWDX-^aCkZizu%YUX16sE^Fyv8=aY=zS4^tT0kK`MmHJ>m6FtM}aT% z_3pGt8wxOh?BAsVVNAQChqSRgpiPT7fq2ICaKSV0nK&`bA-qqL#4StlRODqFI`Zth zR!Y*qTB4-7ilB9>j#!j6SkZZ?DA6SFl~uaMrMyjsASB8r4pjZfGRwLCp=~zP_}lGB z&*ckqh_B68+g$wHM>`=QxV~n25x9|d`6#yGoxpf8U(>>*aXI^h`u*hHE^J=8YwVSQ&oU5NRm)~uSab1{m{CsKj#9s_`Z89lYBj*n1%N^yK zTBaIn^i~mHYMgql7-u}AWBbtqiEtV_bvFsRF`BdBkn@}$%8B!Q52~RuT69KXdVOmf zQ*LtdTv0Y$_U%Fqc&$|3;0S<1o;n+>MtqF$Udv@07qE#Jch=uX5(aLgv4A7jJky0; z59pi6@ZIr^QxP&L&ZXAfEAQ&}-FNE1ZPTxxP|-Pn#f1AE>H}J&b|=b2`)3aea2u7U zN@!OHDqXdJN>}uN-@MAIH%drT8qKqXuD*bCwt%N%@@ol4>K9vXVS$(Az-?6au**gL z`j@73&<#GIMM_^D9jT#iEgu4X^PleHt3AgQF++RQ{N*0sWYE)Zrs&7~-Iv;Gfh7K> znDb5Dzda`XX(&w}cJucfrmFcdwVPm2MY z=uB02v28ab--Qh{L*Y&?MuwDdzQKBgx}(>%0d)&(u<{fR3Q93}p35g+OoVU$k=1}M z9QHMrH_0}kPydAj-%z@Cy>*(BKBFRR=#xjiW$vinOBOzb$W&MJ5*|I~`>^2vXuU~| zzb-3+SJ4$wZ`jnX!(Ij*u{)j8?=sSPoya?CL8PfSc&*Ll106Nuoz|Ji*5)zi9n;a) z)Sea5=6eerQ}dYCT=}LYz{xwVkgBP%?XM+71|64%POBYJYKh$Eoe)E4s-CxNitRR{ zCIn8Wl~G2TZ{R$WTtr$*ST`DyEsc|`yfX?LsMiq!qt^bc{GU;?lSzM>MF{O(|D&^(&A7Ogq`P?I&_4T z+?bjMXQS35-c(beUOjbP{+Tij-ty-SpdaPs+D#%J5~c`J9d)Gk(tBuSqcDqsO9>L1 z=~1cZw*Pa1S+_Fm^o`dksqsE2wVmrpwf4HhuQO)7bv#&YCJC>i1j5BAy6 zzjsuxq$Dm;?yvT!dv7($M_L0O=<7aSbc{8idN4TXx_)dIJW4?~tNb;Kx86A=mj8t% zcnBK&YdM=z|5fk6a9{zKW!(>Qb}W^V$WvEPpOV0967Xn=#L4O?s~&I60BS7SlG}9k z3Aqrz%D4yA&F1$LL6MQviM0E_H?Du^NQe(ig6V%7;4P8L+N!|qJlxG+j0wu8rA~!* z|K4U@(pJVAn9g5s)RE{Q(MVI7(c$$l(TWq&QcXp;2A^t6Woe^(Nh9BNL-&o0wT%5z zXR*=w9)usfv5=aa!mYPN3YkOMq+a-jYniklmA11Scpbj! z8zx9&eJGdtU}`I*PmtEbSsp?^wH=KvL?3=ApD#7FlO!#~km~%l*m7z&Gfar7=hF;&j1Je)JKnlFLgdaa|;Q4Sn(Z zzlHRW2V(bh?pgeUUMd1Ewf2nueMzNRP?Y0*^9t*s{O{<0E~$@a^&29bWM5%C{N#xK z580)wvd_Z9D!L=PVzGiJ(PODXp_rS3y|xOUC6ikT`Rlh;i_{E34hFyNXDX;lhAVvu zD|90bay)MoJk9m0`A5n{y^(ecQ0qm5a7CR%y;jqM&i)u}4vkLr8?-ZK@1KaCh&(!# zYrKr3=H@t!c<6Y!&*9FfA%8B+=<*QsDc@8$mMx3+U;*1@ zUAENE>%($e@H(+cR)SGM*Da_k5ovUOOHg)e3=scDen(Wj8L~gM$Gk4WO7_(k&Pzz zj#|2*gQVK}dV)}~)!3(JQ(iBUh=`;5l9cu^fNe3Z`9eKagNv*r10DOKGxD0wxH-z2BT0g;@#n3pdkhTB0ZEu04rt8vxwRVi0 zqN)KPyH0uY7Hw6qCD*H}rqvMP>gLTUzr(!U{I=@WgZiuLw&Nb*n)XwCf0z7=wYHkh zn_pKoUH2aV^NARm{y+1hF9%BdM^#wg_tThGz8~mL6v-ay&-2e79;$249vSPt&K`xs zMRLXvtNuCT^T+Ku6HE7Rawb>tL?Q4^+5pJZE@ua1`at3aGIOjhYTEOVqw-zv6Y(GK z`kwhw@_n_8G2%j!7Kqj_*gE9!&KmkH@y?mX81v72Wd(38`n92QU@Hy}mifN9j8O3} zxh>`hEXVBUaIGXfUglp7(xh(Q45cs;So_GbEV!O4+{v|3phzvamF!^BvX|BX5!}x5 zqZZz2h*{>^ZOSqc+AC>;2>qydu+sXoW`w%^xR>5kr4& z|IHQRY0&w!>Fu8;aTM>f4^Iidk3AHSct8y3TUuslWX*4|JfDToq?nDr6p(zZ^DLBP z#tc)iS>h?|Sr`Z5>bSgs6an~IIFpt+wtllD$=S0A@f7n3l%0Sy1@hTP{uy&zpJpi< zKD3;c{`X(ms+Xwwvn$x;E?zhu{fxTRT!1BMstLbyKpRY2}9 z*|j8}Zt_@#Hi?R!hAp3}Ld*-X4>R+;JD+G{T z6|XY_2r9)Eu_LJVm+ab#U9_kM@ezK0O0sNV6HJ z$C_vrkZsy2h_-5c!j>Xe5+L|QM9WTC!}4dqg_U3v8R!ii0pBap2VmM-yM+Kewfb=z0^UA%{~Ois>7IxaR{J|M14FMJ0& zTEks_6H75V-i8ruJuf$|=R+|#{h^_PHulKAjJ_1{kzZAgO+4kGd%*~8ALf1a=>E&2s~ z!?O1tl1r2u4dLhUMHhIZfBIBkG?w+$)F4K%fpI+djmNLTC^P!W0{-yfJH1vjRl$!q zK;hI$!e`~7Rsw2WFQ>RM5%yH4inB^SMYYmRps>;2NraJ=@ z(Qqk$v+4AxV9~39NDnLqgeRf{t~EI~Q^6deqm}dY+vAktp%E{A8+)gU$?{cjV8>QS zi1A=}hc=&61 z9{F{zqliq?+Ko<};3e9s;2XVjPq+PQDzd}t$zMmg<29zdsM{)p7wHFp=%^w1C<8Rnkmg0zl8#uvtL3IOb@ScT?~>;F zT$UfC@T?y3@{6U@qY0m-e|C_-)~8R9%?w9ZmpSt;{B&O=<3*_Q^2?%RX}TzeR0D$y zh7?`jA%=8Ql?%&M?uZPV3`5BLW~OE4E3!=Df%&a$7vwHuhG%q3Nwx+&iZ&~7ZD>2! z3o~>3b3jj&U0yUb=;dc6_F>w*c$G}Mq9j>`vUqSvWEmt=a(K7oO$2DIG*&FLtRyQ0 zwXj=OS1eRfS&HpzUr^WsVy=enF*DaxfiIb>x)w4k%9-n1D=IqZ{8(#&$Bemdf}Da4 zI?YVM+Q2R(%-Yz0xljcivkY!mk@9`3Z8kCuFW1xh8qJsd#`n zit9$WI=ylBl%}CEFH#wJxMmC$MY$1*$pO%5Telq8>|k&QY|g3Im~Y{I1uBPU(Y#F* zw(OGC(ey1~IwyN6Xq`%6_3q(X`FM51``zm?q-i5jQ%rCzm8Fw%Jxv%QxRK?zEVz?v zXu`i0=Wr{qUDnXqx*yYP()y!hTC8mkx-QmwSd&F9yw|lz-M%xHXd-en2s~UrhaRtp z9Jf$(3ICdAF%>%43F(r$>dM^C_6b-RuEvy2K;T zPa&v=?`WI?k~rW`p|i(k*b>c>coCn%*m%sJs0&CC1%3+WcQ?mHnWs~coqdWBZ#2hw zPby7CocNLH_v(}2W@%c!#K=WX3&KPJ83xA0C~bEO;=E?5SJa8ori~V)b#qi~;KUf) z-xeg@>9U-##8_3Hbz-=H94|64Zsolt^=h-6;6P%0K%?dJV*y#w&cuX|zb)zRlTl0X zC4EZZv7*Hzdn==pl<4KY@tn5h?cI#!dY#ovPC*4_o22BT-&V{LE%NFnNhviv)~xFK z)Y{0T)FyXp7V`{6{j(%+ZsR8NdqE{*;^egLV{5M97A14cNFI zPAsK>>C{d^f}93yGE+n!ZvR%DTr(9AY1tTd6_r~xGtN?qAEWIlhi7W$YI$x)`wU>JsMY)NH{u@g2} zK@vANg*(0T5jI>Wo`rSwJGpwaeM{Hpx0t&@dO)+5yq#v-05Is)Phk@I{=EIW42KWG zVflBfSI3bPhyOOq%4JVw`?owacN5S!-jqy8*T;R(enc6_2QB%yT+3p7r z!(du}Gc=~To~Y>Hhtg*Bug#?>N^9TT+kwY>PCih$|9w#GtUKY}zr7(0XoB}X-naed z?K&u;`1<@mw?_K^S3JHykRw#Im)-3?S8M%mBdblnHkEYgCy%L2s1si(Hq}4D8VT)y zH(x?+Ke&qp)8+gP*60r$f0=nTldIqRk9e#`ub6d)?(kPUrjuUusQN1&8zxsT+}p|j zbr-BzjS9>OB=Em8vicHG{QeuPsR4pD8BTZN@x-@p7u9#c8q>eQn%bxJXOwL)r^yE8 zmF2OkcZWc*=H%usSOdEY);ROt)j3QQdl(1-!5Xd{AXsBua2KqRx(n8{`-E;xR2%`~ zvEM!*9-C4F;_)gV9G;_-J|KsAE@_(1Gm5uXDcsN$OO7BN6Ye z$?wTslV3eX27QW_&4yK~qDjWYs@}}Fw5KJVNyqzegJ|srUmhPK(OWv2-f(6P4<9bO*s&(*$Tie z_s);UHYqE1{Rk?bs~TqZ*O)?`?Il!?Um8`xrbsHBTab|sH3K);tbuK~Z3VRhXImuf zKicW7>N%#gLwUJ|u@9o$=iewp+f9TmV2f*ZRZZ^fMQlwQ)eqTQcP$*8n}cE3 zi&gC;)ean;E1e_kU0#=M9AEBFKR!x97cX^bf27*{x(A1X`E@VeQz6biqNjg;Hj^>= z0^%|E<#7isstFK}kGx!mA6Jk53TE%BJpRh%=lHXWS6snuobhP1VOR|1Z#pWeOYRO& z2aK%63LFRa(<&daJ!T43luyfaOshahgQj7R+1h21*K?bA%6v!*P5(1bo0_q+S!b46 z&u`|l6?{vRV{zwI?~YJZ*+3)VlGpe4`zqe=BWP~Vzemr4z1PFJaW5PaRGkes!GjS# zz`XYOg?&~K#9${s^w4MbAtYYNrmzO$yFl6|2Kd&*k-i7urTDgk#v@$wqfUZizn@*b zxLn6Ii&VnD(r_lO-+d8JNIRL@mI*j@HBJyUT5vhiIbU`o4fwN0k-&8k9-Pprw^x&^ zeRb%-7kGU%q1tu5wQ@vyeM#RRgnC&|bMJ=f%YDq(L70@IDEzPaXk2PS5B)!%Qoii& z1oprRfITqF`Y$*=g`w2$j~+^WO~On1NzW)^E~io26IWXst~2%giSEl@vew!NzF2c~ zx5!kIU(YxNuFYjo{xAEE(d#1dfevH}U=NJF5ZD8INLWBxM5U4VQnTHHxU9MVr6)Yf z)X0J~QDA@$tR885ZBFjfJU|J9N4R90Q<@755+l{ay+q8Z-!>0EJA;P;y&TUu1-@bv zYlM9CH=`qK{))~w^&x@M?8SY7p<8W@ptN>V#@(i&KOR#7xkjch;rt4}Qn~y~ew#2i zH7Wdn*8A3^n6T#ZD{dk1eVSgFu!lA&uAI7hb@ds)cHmcO;-hUE8}QJ4zanBJ@Q8o>OX{@C_BTVJW0*=Sl-v2p-B4tfZ=wN_ z?0AlDDAoo;saBnyfKY`7ZwmO-N{HO;v1AM+V_<4|yuWRqZt6?B@xe2-wQNWN^kwy7 z@Dz_mD;gYqd11b(*wjV~rZ_zX3fNQ_G{uYqLr>{~SJNM%Wy0^It1=DMbUmFh6z|Xh zzBFS+gwT_t($NTp&Y1A>>Z(GuwQPA2y4tDQy2{!*%20&52a%TPftDUGFH$izRl_z; z%YX`slz|edyRc~)Vern1BT`kp#xzY18fOJhiBy7|G|dn^bKFE=rH?q879EXqY`nyZ z2~`?aWjy*Xwa?zBS!>udxc9M$)ipp;>FlHoWj3i28fhrmK>RT;kgji`g&u5)R#yyj zs0c8uvA)XoJqzO!2;O9bUQH7ISavNM-fSgZO_mxXyHyTvaSW@bD0(cnHwgG+!Q1@NYiRl(%m2cjY7djHp+&^VpD|B$#D>+-Z$5r|sW8=<(pST98uRuRG}V=j zUdx2>L;)>k>Pw+??JJ^K1~zP!@v9LMWL~(?EBLr*XRx6{ZG`m9?y)T%QQ$JV%7LqfMCs& z@CK>PC+b3qGvkE)4Kk;(>S7Kv6OL|K4Q@yqsg=% zN6+;!@>`fplQ|+z&yxkY6dT@Txrw9itB71q>2I<=jnfZwK(1s%=|J{9ip;$px zU$Afs!nsADK(OW^ftX?REZ-VFM_#{M%yDeNyY-HP=0W?HzYXueZ1&c7L7i5jSyYR({d zJ@~bkjFntkB|qVwRyqW*>n3QBzo&W6 z{x3uSDS;RIABIlWIUS+A2)@Vn?D;$Ve;ieK^}RMYhTwagJg$JFieV%X*_b1eH+9F* z&4(K$+~@&@{$OXcr@>~jfUP6(+q@gYR0)+OJHrBDIUoR6e>ott>A8gM|3nd!|rH4q;v8Gr4@ zwV4IxXdA7}VAvjiE*^UJ(w7JM#aB65_CWV^uP4N~3wP0guWt(0Rj-r1NPD>aFz5kC zo8O;v#ll1P(Glf!GGKCGW*+e>bWv;(Px75fb)2*jU0lHO%`_^LGhCI-AvSGJIJI zm#5C87NO5^=TDt!1ZYmL0RZlr#Z zt#!qst-5hAQ@93p8tuo?vbdM^s(tfvf3Nf2`Tk+cM8CsP*CQ#- zpK?>?^q^H#9J^E6iu@czgd1`8Pzd{T^}SMz<>==y{KhrFlI))|#98p9eps-fyL1MWCMe;)WE-@Gb}o0fy8Z<>~tRy+9M;U^u?m4pY7=I2Gt^Lb(H5)}5rNTQ{;aAuXFlmSU}2tM5%(w#!00n|2zKms@u$3IYLg-XI3q zFX`=U`w=&7(tgmjzT9>=bQ0Kpw0S?b?dKR^em$P0r|I}L!QItyGA|Vb`8}eE>Nu^l z%Rq{asw;ZSI~jz9 zZgw97aKMU9emIaYyGNuafeD!irU^5{Wbl^2j-L#n?fdS>BOrkbnGC&nVE#m=SrWf^ zGK^Px^@%nq4Ka8!Trg}E4P`ALO@1~RA>6l$=b(ehQM_ctNBuE9*Ixm=!+PX#2U~3B8-?#bNgY3B_ zJ3+>n))r&9pt6N5K{~>!IM`cX(Ug%OtE$jOpb9Wo*$`xIrfdm7qn>-*YGfb1uodnm zQ}vXMyd&$ps~0Hcz(Y;QInTBbTu?QrI2m$-z7zKILMZ?+xMFDAg`*p&hG5R*Jc4dZ zzRFaOaV9K4&Fn}^T&hKZA`56wcjWOhH9pE}6*2)_T$@}I3??k5uHRKM_Epb0Bg_}) zwO0wgRL><&EoG4bDW?i)<>fyt;xDq-e1EBxftgy)Zm}ci zx6C9QPp^g!|Gjon20?-SdMW*M7oCa4VD3p@=MREX;l zn+F~ei$>o)b(=>;tKGUPjE;S0+rLwB_>NF4pOw#cY=^t}u3s%*PMvq2jB)rKRG980 z&35f$)cT*tn4+EQwxVR-eIODsyMHqK<(cQZURo!*{%yd-(hc z7C1uaAE*!Putc*7KLoT((ft1RQc>jt9^n0Q{OA2boUZjN{wKjfHsCj?LQJ5~?40dQ z^!NSpoi4`FzNgRm%n^9MtQB35l^KP}u0!0t4tQmZm!U=qnwDMY2T>Xqvn6H z_MY)<|9#)T+SQgW+ETPyqh^f+QM6|5TCq1l>=m2V-dk*H?=3+Ttyz@Vd$jgeyC}K7 ze#beE^M5|B>(>8%Zs+@Xyy^#B2FOaUpZn+T(a_yh5@)N)K{uFnw2g30maI-!|VufOjhF zcRJpH~v6O7Y%b7g<_ZS6+kT9b&~1!ixl z%Ur0n+@}2-%{X(DuQjga^c|Akt`;y!Kc+r$8}vm`0;BunBHy1uAKVZ6>3>W8v1R}n zJmhgOu}8z>5Q4CxgwQA=(g=aaNcG3JMn8-!+C|IozKFar?Uri~+Wl@4B{Gn|6e&hL zwG<`E;QlgJZUBJBy=8sEn4n(Fmlv;q{__&4>ZrAHQv;sD7^D+6m7ih|B(s`)zh){s z?RlG4PWoA5<7$d)f#u6gn}f50EC+l@;b)iOC+Qj9o3HY7)NF}XGa~@vWooD*S#f^2 z@wA0z!qt;ksj0HP8~M2~?acy^3-x-Tdl1=XaZUkFwxq0JIIJYGc2T>uqFw}3TG?Cz zVJS^)J1;4(K1gM+>Lb$u*mKmf>2+Po;pwPeqrPX)8aR|%rC1$;hD{wzxpy;cK2@qvDO>%Szk}?Z55Z6Q>VSI>1LgIT}vTE!%;V) zqFdfMVVqvxHRCv2-o4=WwBq|xoNh(WT26XJ?^exhMc-cA)5;%*!@8CIr;F*80~ZIg zl~^1;ZPg&b1HIR6ojhNv+U3M&>pFnGD(f%_TRPu}h7fR4ek3Q%J_cNvQNucGCC8JR zx!#CL)6#yIE`3p&(+(%;J0}yywHfGnDJ2qgyrW%Tb@sf>#fg;JU400<<+I{Ii75 zX0m3R4;MV?Th5l+4O%YN`m%g_x11J4F7`&~TXBa=2A6nlt%)m2-WMYVIKn@o#Ka#y z5jY#(&_TTY%Xs(GtpGy;(4V)rrDFUacxe&caeH?QHt0_yVML;7u^PgL82cXIT9ZBE)A*VRa(@nD`#BgkgLy-%WyrDK<>* zi`E10KN8GR0R4^7gtFO9k{iZtu48KasPT^^PtZ`LiK)qxUv6C)`O4u|Y9=%*f22gZ zl%t)FOlUn3(tNA;qCE*s=_${oC5Yo<{r_q`-*I~{&NLhw-eLNJ2U0b2jqrm|qB~B>vuh;laCuFXi28#~%Y)Bn)`O5^_YZzd31SBDftIuQEp-;Dsj0z8^3gmZ#$qY;UgZRzBk|{f7V=!$D#*;yf>((a zat`Oi_xc~^y%^iLJ}bwLClm<_D@#OTRPvxl#dLx2s=R6T5~&|0O6~BeoZhiw1ggZK z8Ln9i887!ZE;E!Y)f|(BqEkWT_Ig&jGmwe;-s1}A&QiU@-ihY(F&k|nYb~NJXxsQ$ zl?U+AqP)=fN;F>WA82jF=&9MuG+qIcARC7RTyf&W5#!S*vYZx|Omqw|lqWVy+ zV0W}QOWnrYj7DcvyBy3CVq9hmYSI}!L87yXb}a&Rv==kS8;Vgo)`>bglN=L`{l{}o z`80Z~3KN*Iv3cOataoIi;ieVxk(2@Nj_q~`&Gc7dwr6)gA{zMVMHc_}QJ4jv2QTu5 z?LVIz+$Wm#(0BiCX#TIG@G}~w8k69dR^M?IZNIz!o+yqozWeO$J-mEb68`@@3QJe6 zFK>*bGJbxaEBnt;IOPrUM1JGp=2)d6a1^%U+Zrer?fD0crxOB8ar8b%SIjlJMR(n) zvaOi-a*cQKa;OBi1^{3@c{eWpjtF4m_suxBX)n-4q=O6YTpxw~w`bL_6U8s$3a%5y zBc-?&0Po_sJ>B5M+*00DzlZtadyAe9ECAqLVyTq|zPR_V4CKnummgQJZA{i$1^ic{ z7zZSZ-M4{6vEB7i_&QO%_rDUwhA`kLY-oC&C^i|>L;v(A1iR4&Je+1SvZRE4*Yu-C zXif!|xw9DSKaH|jRJ%S3Ydz~lFNPcD19%s{YrG5BHQt5(8t*cL0`M+kXTVXoNNj9Db62-ikp{wEWielq5+f*P?%rGEh z9*mez0TRV3K%$u9>Shs;D24-xVlp66e8tgQ1SE>#K%%%8NEGktg%tydVmOc}4g(U! z^O3S8h=RbIwx)|!qt!Qa^gawv`q! z#@Sa6o<_6->jrJ*xPI3%Pn?3mPrtQQ*IzxfQGXo5xI}c9qHx6S%l_R8jmrTB0|u+9 z?OpC`ISS7UM9y?TBQB9V0dlg!HEhfZXzvJ&H zz45E37fs&pW$W@fyuC>-Y=%{$*E}ANPX0&g!&zV(hw9olkB`*7D z*I>ctFZX~FPJMI1K=kjqKh_s#*F%q2%JB6@&UYVTHFEq1-*a%>G3-QMh6EcYyf@K| zepJgp@Oj-H+;*(;r}=9bDaIm}0<0}*K7UT;l-EXyUJl?i%_cA@`ub$p-tVa7=bd8w zcG{DoK#|$^6#v@z<$e!-lcNw()X|1l9ZG4$@bDEw=POxY<2Ru1L2XgzOUEHb&A$xd zZ7foOG1U>u(+t%8MO~nRp>SJvW11zmF3|YBNLO|fy3U4fu9Mhs-yg=$$_2i^qPiaz zY;DYt*zo-YI4&gmw((1EfgW1uK~Pej5tB)S%p-(jV3vdti=2S$J>-FZ;j$qsZ-eYD zw2EJ)mm&KTfj+|V;g9uC4LNT#^j#gR__lsAc)h{@;}7MCcekzq&k*2o19w>LUwytt z{{C(C5s!&;LGv@+U- z&xRhP^S&FbQk7U|#XP1hTZtYnMm>ac*=Wlrf>m?JoGti?v=!aaBk9MZFwqRH4+h}T zM9O1RX+|xTcWAXJ5T%Jyxu)8S|Je8iX+nw6>b@@O1_me%%_Yz{A`zr#&Y_|G4F$DD z9c$Y~LUj{C6Gmew4ObMf{tNu*7^Uv3u5PFV(o~@Ys|6pc8S|qw98ClWu2Ut>{9q<*@z~hx;srAj~jGFz!T9}B2#A~K|L|(M9hSwDT1<5PYN*+yAWvV z#t5unAt&P2I!!%5jrxk{iTFJtGcQR&1C{ZKgi}c~AN589=*dJPF3{|wnV_LI)g+Rn z%goQE(NG^enM6Sh3kVc6GKNkjKazq4B{mwt5R)nNL9mc~L1Q>_GL^Xt7KUmxwna~- zaS@wGbPAd{j!&lZOPNQFHJTt!CNo5X%wtvrO+BclGNrrB8)_yt&CI{@6W)XNl7xon#>aKIP26<~yiDGW&avn#}G;fl~oDWt;xs*T3*wn;5 zpD5jRDTvnFG;=+liq1q7t^Hm!qCcDdG>@Pj6V`QFIGZ!7a|H{}?fP~LO)hbEe_8sn zx5@MO$2~jF&hYeoX1_1#_*mE8i@AOJq`%GVS%1DgXj!zwc}eqeabd&hmJ39iXH_db zQk`1%``d!HtAE|RQz!Dm81EA)xlttEKUA3R9bU0$M4dm~|6l>v5OCprz;pQ5g?Nxx zsw$)P-v=fcmPslZ#Prxw(*+o>6*m2X)=~k7BA%|~-M2qUfhP}guS%;Oc3-JCk;`e* z>#)iTO0j{vJ9J!^b&OX1g`bD5SAHU*o-Sbxf_f_p>Chk zMl9E({<0^$W~~{*!IV!S%xlA(O1Z?v9;oi|3dXjm%VS>4Xr8r+22UH{p0c|z}agK3oBuv-xN*@1wy;pZnW#)fBh_Z3;5Y2zu9J~yJ& zwlEB)0|tOKUTCW?n%)WeV-&_3Mw%1M%yW_x$jzg^1mlIfJ$-#6=D|nsYdR8za87ao z)9_H*Vq+ar>wMD?nfp%|GHybUTV(jArBqShPALX&c+ey zG!ArQ+eIn5#FlNYVW1+-u4x#`wpVl1roHzS{}DU;Hxim3>}|K$p4zwF<$t>0eqTd= zzZ0jwW&4E&n^xUC`m3+J<;9^@MbCOpSw-*m`3(10dftfrKI+p8&i-dQ%m>Xc4}ToA zaL)Xw9;91hclts8Lb!UEidUF-=rv77-Kd=ET-}&b*3&xRIIPDzA?~jSxP~V6PTz%d zFP(aH3TIDx?doSylgjbleB+91k*D(rCET3rn6Ck?+qf-O&uua|THzGnoi@8oO=pxl zO~+U6IL*GLA+KL`e9_XlmcceJu#^?9k6FqUAIMmSsm^0o;3fm$wG@B-rj6`eAIL`I zp-a>REZAAa2eqJsuw`czcH`#-HZM@b)_a zv3mnC0U*9?j}JhG>m(-dku%V_HTom=geo?OzwXyPhhz!bnqVNqW%Te=a$89xltjkWh93H zWFdUd<3k`KA)CTwUHUn-N~jcR?gPg4Hz4f~QMRMGTtpl1C8<^821fIqifzcKYb$5! zj}|_0v6M4{sHKc26iA{rlpSOl+)fhm*(l*^p%C?4Cdy)U^-c8@I78vp!xE)LxMnc~ zS_-=kZf$BchB16DcvxmYX{Fl((Wot;EO$}g(wky^k+C{jE);0>VFRMsv`SeSIJRYU z27gh>L{)8_+|?VFDDJ~HV`D4(6j(2UG6I;pwZ+0N^ij{KS80SWotPlTUi zBdIJ2Xn4L60C?4(UUy&NUA%uS{O@^Uc6<)Jm>W+2e2W%7Jz%!|e~$}3dttoT-u>aD z^JJN2>Hm=5G0u0NY1$8`f^6CC{v(t1KA!F$1nOtm|B&BFs?G=UYY*1{CBHrStW@n^ zHOKwKrLVu!f3Q4G$vWEv6nYt1`SIooJ^v~6nk=-!Zvk{w&ELN;k=OG3gxm01esjVF z_pjx*=eD)RwftU!AKwxL3cZCg?U@Qfwb%0d(Y5@xYq*x*umVn=xai={sT=&Hsi1|JE*V8c(O z_YsDEw>MFS{&!oB4Fev=fs6tl`?wedJyk>*1wUgrHVS!34l)j98Fn@fV>d=o8|R}~ za@E*?aY3o;aX|zZ8WFm#P0`1Cs##pHSnF&&R z6Bri+1LJ}b#!)@SDX<)1T<~Q@4^xP3OOH{yqcJcp_;5ayIlyDL$1ux>fz;wNA-OEe z#~`|1gPgEMU|jG>nCz8ToMNwjJ~AiRvS8V!_mx|w59@p^cNm#zQGq^?$y$x=g~ye) z;5O5>%&Wk8WkRWxAz+0?OuphL`;pR0eSEgEgpPrtt?GIvxq|9;$OSw8Hz~HAltBj1 z^3*AClTB!!_JvK_9D|^3$S=63ZSaOi({B0-^1LEre?X2C^&{2FE^ueF$u8is_rlKq z2E}czmPKlL`)0DkKKph&(cAlNq@_X*+4l|DExM>pbgP?aPc`hn)A(+4^+Y*FIQqP( zj40~mlqPffkuV^Cm=9hkvmAi9_BvrdU)??`V!HLl*^Prf(rHL`;)nByoQ4(msD#`d zp0OFmNS8q+yU4mh{Ze3D@Vlh~y2K=FM}HcQgCS;yn(w$eIbt(_aY1@Oep|T$7$eOd%3c_4)2RlcIyvmQq;Tf?}&bK=lAd__)$YlMA zy%$#{`{>Pc7a)^01Z1+FazDS#&CvejAjA)Rlr^S^6we>63ch~^j0-*o#*QI*AyP*J zx8fgn0Cd$5MX$wsxh#^5i&bH~?-;01nv$HdL*YtTW=&kTFnbs}Wz_O6Y;W3IDN(H?%pYJUd8e{FX8Ccg)|KNH@*HgzO}1N#K^XXz8Hj}wN0{8ais ze-O7Ad04_1MAx4!?$0v#a+)`6^G6PUJ4-(wHE$H=M=l$|t6m9Np17bNd9>oiU1}cO zNW~xdcl|BfO-o*k}{>1^Ru(!+s^T zd8zCr_xnm(+E^>q5M%3877FWhB+YwfAqqfiQ9$1yeN`CW{uX= z<5uImIGR6pPtVkgMsPuToIma~!_truI$vtJWbq_1%M{ZqrqsX!m623ieE;(p7M` zO^Y*)b9CjG^$%|#!-Yjh`8xO36PgpxfN?7?(LSH!io%c`{b0!Soh5{A@!W>Jujkx1)Tw8W_wJ*fra2t>pD@zQJy(PCUza{7 zZC0lH>zkg-52BsFx62$P6?zSEU^#!d>L0#a`}>V_?+=sT{Av#N!{&y|c~a%PQMvh9 z%@?CP)`sGw`PlbQC7$`cB?R`ANqu&C8UDBY#t^XL$>SmZdGeeo&`kc1$*c3tu`NnT z&Cr+3vcmuDDdYXDb1$Km=|0Z!5KY(~;EvF!0VK%BT>t zLZ-1bTj4S@pP#C+t>2=#WP2%BSE<_;NH8O*JNnzOi<4Gd@it>?6LeIjfTt1c2`ou74p_T_rV28p>eg(SX&UMSba?pi1}w!j^QL*K zdqtypns3V!we%+<8*87vh{FnVJQ&D|a{Y27EJA{&d)Bk#n8-GA(!i-3xmi-1xdqvd z+9id#eyJrz@ogG;#ieby=@Prj9Eg>DA{C^t!sTGPFh9eXy0koxoNc?jeMNSoqVHsS zyRt=}Y`eIdD%{$k7n90SKC{?chF)-_si+_D)2V1!i@UW`J1j-BUDws-x#KX$BvjG7 zvDj46c#$(x`L8PQXs^}Iw~~Q0-R8;p8T%FrT&dmHzbf06op==N_TLD*XR6!!xaBL` zUx@40blfv}Q{6>b>s8(N#OX_QH?RL}`uAJ$>9svVxn4EBuiC%V{NQ+SSu?~vqFXmC z&6`ozkNx$uWXC#6X-j17Py#p~uWkyiwy?PR*zZJ%8Hz$&pxE z)Rb#(M*Xy9Eih3yW7B?#p7kHm%a}7+%4nDmKWwgF@Fuvb|M}^Ge&er+=lb=FX}t4| zOOfJN4cBF=#+5>o%#77wr+Lg;rT%lUKh-9*BO~?|cDRDLuRkfTR6xq3LKz)u82g%*40(WXh?v`E<{pKJyPY z-k|mDG}pJ~e51Ct0IV6nKY^?EZKtZb(eo z@Q#>s@Y9`ue})Umkb{0}-wbbn8pO!agZ{LHzepq>i`|bJ4B(eA@=$YoM|Cn7C>rqV z7S8OkIQ76_5U9iGzDolgUBO_m5~1fyJJj6Ngl=w9N}xqK$|29>*^VYX&-_qKpxV-N%9QuQ1w*k` z%S&{ZlhSXmlw*=!=K0-il#v2jz~O{uFBs3>t4PIN%Wp>RMp*?&Nc=TWUh+&vHE0-_ zD`ED^1(4qbafz+Y`2oKhxn`>7*}kgf|+ed z@|?uu(vDYbj`!J&R?Da$6M~8eW)@L9E;GVdlw?LdaGlPRZ*;HH+APO_YTC zgAdhc775XM_i)MwKTfsJcOuut??99TplaD5lXXejROJv`wH(@fi}xH5l?cxMG+O*M z5UNqd7X2`v-tnJ>Eo*3e{*<$&q7j6_Qe>o%7iFp7;Gvp9l~^cLOew8YG8D&&vV1=l zs`9Q^EgF(o^1%kKE{Rc(LyYBVp*A(L&iTrN5=+gG;o9G{q16?MWk$SKIztc*pcYl` z;IgIn3&P*HnpokBvNGJC)@UY2Rt6qg8Qo~o{02r=g@U$C?s*D!N+GW+RIukdT0OSN zn&Mh(b8aE+ek8Is`*_>(U6asI0kW+1MC0=}Z9zccaY+@k;u9vHlZ-S~u8x72txIV4ih6!-DpxU{eFS@05Wxc&158H#ze6fDrWh-~uO6X_xoAevWU&)|2YG^hRUL;plc-9P1pvbhS^%#D-7{Ss7c-BeRp0zd#@T@1s5`jhjHkOxe03j$LS{5vm z8Ko#C^B`UYdUiJv3M;;g)Q0z%B|!nvoM0TaVVVMC4TYsj0-`wv5X~m(j*Eb3=9>>) z3-{PY2H$|9>xAE6m8HDT4uXhv$7R1&(8ythUd~}wgNJ!n5i{B{<0-{;paPbm8 zud|vN4{&L7fJJ`uf~?(VYd1_$MXh?O!`G1iC_M>y04i)#ADAw?)6L&5Y1^okx8|L zo|vQP+a1{5PjnG|MB;ydBGc=aOmBW&7nz~}(M;q1{5CHjn)UO7z-6T5PLrwR2ZKV- z{u)7X2$l}Ev#Jm!GKTxdt{sek4B^Rh# zJV@PGol;X{P91868q;v0R5##I*OUZ}D;tm{MMk$4Ni){f=rx;1oS}Aq{s;u6U46uJwZfL)B?)HZC^lN7?~8kc5LEt zqf!4IIw@ukWa@QK&_HrLDfZOG)aQAlfy_x#91dmrkz3GEfhswkdn(n2I7>Ct8(4uZyd$mAsE6SJ^SjmAdk(Da)X@?HqMNQ zcB;jv(%IdXw*Xe6{c;12qp?RX#BsjFYlYid(7s*WKG}bHam1ssKfYl<153Cjiho}3 zvFj8%lD;Sz-8c}>DVf8ow=Cy-u4|fUU&8ffQ^hr8u-?oi!bEs0W5;74gBHrweG@9Y?n-|?G&69}nAE(x-77S4Nsjn>DD&G&RA_<2*vYf^^0a4QXIY+d57Z~V$L{X5NqyWwQ~p4$-{C-BWbCzwwc<4QZ0P=yQW}`H2Mg9!Wk)JIe?ESaEl&LQGfBX;sr{4W zh*yllC0(43^ya@&ig@uE@e*%%{_`ffm@_Hl`hS-PmVB*3(sEc>hKzg7sNY z21QJo+S7uqrlHgS^(Im%`f(GVF!?Xh-NHLXgZY}Z@VQ=;mAsf@w(QCYZ_z}p#Yl-> z)9AbSLS=#&RPR4IzC*FP-_Wwz8ja(B-b5-b_TBhk;7zpDO>^%e!;0#fn#ds+B`0Wq zZ6uV=l_mdE?q+7ZoT%HJs4}TFox6S$H82nBrvo{@`6fLao#IoM-@TpjY^`3ihX-qe z$KdNX(cH#(t<_o>U|a7=HTmP{mFNlpBVj~(w=bps{Pg#$%xI-nk+!pw!}e}~QsfR$ ziq>fXN|7clKq+c?3Q&p!o&waw5E_7*NJo4FS%LW$X8t)8&L< z$yZMkHOa?Jk-EL+jInw_8^cIrWaHfwSb^o;RCsC+EX}y(rg@U%K#ExgLM7BZQ)#zn zEzal4()6<*zKlgS1Soe$hHQKIb7`yc^SQ86@3^^x{+NLs4|9X>9|+2-%w(bLAQ=WZ=IYVc zZ27gCtTZ;YqtILBbsDglHT0y%#g1xU5F6*`pNgIpapR7+Rxy%jE6y)L1v4DYqP?Y@ zEuqsFoUIY(H0)nNo1R?XqRArco0s*Q_S)iDZ#zU0%4 z4&JuxW-^Iz>}B-(QPcYZd*N8bhMmps0|$pV4e(F=a0(Q{$(LZoN&#wOIb9@QnJkyE z)rjH@Q0{J2Q~*^%4HOIpwMA(U+x0XqkG~nMb-PR%zxcp8XEq-%l{KDB!BXA`7H8}YZzCH-cpn~iTg51ufmyAyaBo1YATn7`&y?1 zxyO1|^i|q=L6*M9W@Gk%$5v^pZQ521md zwD0A+wrJno^F8dv<&}8f8NOTI)x8gV1aF?X;uU=@e_8cO3!o+@0o26Z?;ol1=!kg* z7>FIKWPu#t=^K`|9JQ(du;6ntOMp_;3s8#qC~levJa{}@#R&fL{5?QTj0Px0Pp^#x z5MU%214cp}>HYZi{JT8LA9=lurI9S1%@WmN5?>goqKi5?SgXVJt&M-Zr|QCwQihqS zkx`Dg(Z8a8~GAd;km@rKKjxBBPUqzeM3s{k!g<6dm?uK4PCLZ}D~iA`DbUp>w15r)ICspIXd zM|C%aZNb>IUV^p#4w*NO#Mtx}@wMI2P$9(lKt_%K+SYOp#G_y!v!H!#{pcnR;)58- zN+nodA(R#LlN$IOCBDA+Fiaqbd?4G`pJm}?Du38?e~wc-%PikCI4Y+<*Nnh&Qeqku z2k+0*5PvnMMh!wj`t#-dUk#gT^QDsY7l^jM!aAq&W={Vo$)^BxWuPYAvO8?-qHFuD4)l~GAt%;R3jBawEVSVMJ zex#g7NQrGU?&A_zrtUke3X(`EYw0p#!tzUzz*C!yUO24zJX` zWT^^=J4*u`*v$UQQg;t`)pj^=xOmCYtqpfK5jt`O{*_}O8TsBW;mDonCC|h>($g2< z$eaIHo>h9JccjA+gz{40G#}}kA#~#J{HwqdJn~~n!bxz@E@`J4O=20NUvg)9vSwf*&(@tn!Ac#ZHUX>p+ zT6@)5?xYuCWpX}IyMA0Pows==i*XtwpDXRgZtJoO&C>dv_yFz!+U&w*F6#92Li66u zVxi8X-MLnRt7m=`$-gK>rQ58UvD?`}TK+=Hx(Qy|(E zGLOvLyu2Ry{^@ume|&5v{8NvsW+=Dipk_~KN0j*D?<(D1Q}pEC8r@$i%2t);dd%{I z&&5|}(Vh0-i+v;5#p=lA8KSb~_>j)KRw>J5j{ZXMR43^2TQF{GX+iCbvhs3g4{=!; zodWXlBR-WT1n3)|2tQ`u@!wveJ%3Aa^61{~Ao)%V1@XPR|8`;OAb5c%jTiIJYl`5z z+;ip1=ptaqhwh3~r?%EfZ^;LcUb zQk81$^2EqgN)B}tZ@;2T-$PEdJe!UCs0&c#e1_Lb(B&=O*E6*NH!3^B1soLHBi0~3 zH=k@TcZYKr6r@k>!D14HeWM;@_Sd8H8MA_tJ$`Qnl^f*lT5E%?r%Pe68 zG;RBolhcD~;g7X^v7gqnLS*j6k_+t-zEudU+lY+USN6M3sE#3YKvHm^G>|1!iR z=Iy3HUM$~zchhK6(v+8RWUOZ|;}xZDngwXIy*G;m(t#Q(>OhG+!QlM6S&BmDlt!w4 z#ghW0Ma$W*Wa#iKSUNnF(LBTrU2L8iyyI@1Ws14UV&aFiU``J@f3lu!Cw z_a4aGHBhq6(zee--f*`)SzzNSd2yl5Q%mjJUHyg5!1{Oh-FEiszK4C*`z^;zUOe?e zGja!5CW1&uEaX;y?T`pb`O)C}N6kk=O3eMvql!v4pivFE$m4NsS3S^#fhVowh>5Bm zV%(_E8$4+hZsXMZt32JVPr&3ac*v&In}5nP4L8R>?M`yVKjYt|!23OL%iHZoI9B(x zFLGhle!x$f{M5~nOa62jp%dl0m?)}WyXFSC=XIO<}(J8Ay!2DUKs%U)kMo%hy6tG@Tn%!0nx?%dvh zO}|aEviw`mV7kLiqKr7^GwN+ZZ!S)ojLVb z$_IqVXvUpD^LH!m${vW(O!`i9spCdvpP}YG}@Y+OwLEa4~`p1i1raH*OT+(L$c#3*p_QnQV~4gMPg0 z0kC`zCYA93kcJoGXWFpHGE-)`sb1}qn&kd67=Pc?fX7Mg=R4&VHy_*%`1h$ae*9;6 zNjEsDMV*>x;W;yRW$mw!E# zX8zAq+F39#m1bb@8gLjE0f(Vg4{#WU0f!+=7jPKbt{sN@o9};qs(cdi)35N=_n-c0 zf~3C!;^)+#*gS-Vqy|tU)*k_CTHq0&rbDOzH7!5|sA&sIKuy0-4b1GZ$kly4U$i7I zcs-TImwK`kGfFf?9s8bj%p^`;yUsNJgVd2}f*KE>S)wMLvl&v$w#O_{-{*;0vN2c& zmLiiG$`lK)I0HBvyFe?Be?X=%0x`c~oas>lwBne6R$Pc5`KD2J5FBX5J>=|V35XKu zHOz}+cyF0cs2}#~W2$YhL1E@1(26_aV3LWG?Z}aG|x14OUakTo(-?DEd<=fi%`f4EDK7x#E z*0`OVncco4Kv8}_o64XJh~@G3I&{bQ+&;)-h_<%uVKNVM>`e!z(h50S+2KEUl4PCw zf4_@3?74zB9e#x1ZXflFWj%5pdVT8kdYG5ZhI8bU_719FaYX3YQ^g<>G^9NNI1CeJ zchExy(HRC)Fd@KU_*LGIaJ6mSaT#;01RRF(xyaKg=RKSrz^3LWar=3htsr3MPp_!E z7)D~@wuIs)7hH^1$~0U-mNL1o#+nSc`)B%cPOs)PNqKA(XGB5Py(^>AH!E;d9@}x> z6q{h^g($6EjK-wLUILEX>r*X--Q&G3`XH}^Ko0ER;7(C2;4tg~Q)w@xqJ^WT?XX&> z^I4=me_(n_S6ZuC27tp*Dd2OVRZSrZJ;34?FHQ)8e6M78vABq~iv^QS=C8STt3FB! zKEn^r0UEb?pU9VEaSZPtkgC{&9(*yBXD|AOw6F4KJ9|bd%+PkvF)x5=l$1<0B$l#f zQ09r3k+d#Ld+1tGp34ekYqq`hZr0gJ$4n4dWx(LGEXp~HfWHdLURY&@fkgp7LdLRG=N=4 z4e7WVq{&XW{d}DbpFI+IPe@hsG5Db&1Fru46^O?-y3XL`8o$gR^&0OaH3KGWz083N zk5|@_K1)5n>~>;}M`40KYgWDNDvHOwl24yKm|yPaSdDA_s2-*~9dq2HAfH#^I^S?Lq}j%h)!zqSXE#g_g^=*|u~_)b6Z6 zYb5rUebARtz|a51cuzCY&~Zi(vP zdU?zybEPueiX?o^L{uh&?=<{1Q{puXCA%zf{P4GefY+>yWwK$t(1L$@Qx0Uck)Ucvnz|Jj$)~Z_@s!+mBpM!2k9jF-cxd@NX3s1 zF$MC;GM1~z){YKycJj%CI8+r!Mn}LzAVtY?Rh7fhQ4vYd2XziL=!3B_sX&m5S-F}v z@7TCvCrHhOLtS5WYywIIh6a|a8#|3n>Pvz(6FH!;_^~NiAXq!U915=;o3`x)>!LU` zY)8gs5Jdd?o#h&ihhwuolKh5a9GZv+<8wiQ{Kh7wIyZ-#=4le@&5!R)doEotwge(u zaXasP;t@XyDYCyQhyMM*%@V(@^(t<$P$e};P7@(D>?hxmM36b`Zc z5*PfuS5-0gBX7^jq_$w+ma*d}gIRN49O;i@^~0poH>>;x+5_f)oHF~o*2$*?>!YHa z*(kj?-jTSExPLz?mPT(v3#~`XkuFnjF7-6`FtGM{mwbQkE#pFgsajivWBJ^sP13}~ zT+~Tjsr{~_@5Sg+)c+yuEgPcj`|WQDQ9-&}x&)+S2&Dz78M-?Kl&&U5eozOG02E0|}qj_+@+^;ul)LRlxGsJB)i-{J zTy_w4{9+Ff+tOdT`l{{!i*^^eMe1{v%bjhSs_nZ+zIvS*kZqE_>bnKB;s#UwcZvh% z_TJokr}RshG^$=7F{StXLq_p|}@gGQI0JtnWE$IDBP33>VW#36X#d9U=SJ59#{(o>;1m=Y3!dEeUpo5=vn47oY{3zt<&u3D)6XPN9Of3+&`p~%qk zF|fzIOZ4ANMg*t*%J4j^Ra2I96wUJKnc+kUq&(I}?-cMKAkDGL2=~4DCYM9UXrJbj zRUaQTT9u`WUmM?{m&#FO4S@d;MFaQ`$e{=SVfOQb|A6<8|FH4}@E@9iB11M3C^A5S zA_MIeP-FmFcw@8|K#?Kup~&F=P-M`0C^GOi0YwI!3!unw@K9vvekd{+^%+=Dhn38Q z(WkT+7^bI}abZdyP-Hk7C+-(|;f%>_ z=xIV&R-%_k@wK!>F5*#X(ZT&3dx}W%;6X(Ly-9gR3;nah%66oleT5_jM@7}QY^$HO z2ol8mv>w!(m+9lDqDSe|z!y`~cL0K(G0%R(**p>n;%Zse^Wn-|hc`LGjyjYa>y8J@ zH>wX7DCs*E4(zSl?%?06TTxE1K6JUzME~mCzd-!T!IT_c|9Y-y>AhS&O;vGkk=qpF7M^0_*xY=?Ovz!y{MN_2gZ=*g1pm_%{7^AA2J1DgZi)(8p|8P;Nyn>?&?Dh(Ix^!wcxk5RCj zot?&Rfg-~Yi^s~hb-;gE^|`-=t$xC#@mz=F$9isra~r`nVkK8Rx9*fxuI=KD@AP&u z$^ni5svZu~CMS*y;0RE%dLLxwj>4^~I;++W>c%A8j*#QA2=m&L<1fb@+%rDELa|lb zLcY?*{XH7=$@V?-CC6Tr{0FV-YUK5? zs+|8{?Ge=g&5PAlhQG+T694-vpvZ7J+ktW_2NW3yPzm?aAM?huUi*Ae`=3k(zw-+W zd*?3fKA_0(4gX&1sRVW+9`g$^It6fvRNO<60mx*uns<{^6om=?{QTU-CV~3&0~Y|7 zl>^|iGBW^NR$PppAV|2INip=ZiUk0dEs19Xt1BwDBnPaL-O&qucSp!f5eJ>%f~(!mX_%L5yy#Mfce-JR8GTH&3Hmn3*%Ea|s&;f+SCgjU{I@^*0H zmBqEVp7U7Bd{5!ItBAOf)L7~WTG45UmzWvBSX!5K(MeJ($ZBIWy)n4xXTi0oUEOF# zX;0C9gNUf(r%_lITJg>|FA-<(Xl8wOBIzmp=8Alk%{5&76wR(HgyK~ma;O9; zRo0%w&Rx_oRC@U7ptV4htIU6>Y_a>Gu|brxN@A#d2(`TS8&G1s7_4ZKI;@ylU~kGB ztjznwQM{GG2G<*`f_8Hh{8?b_U>~dwM}3)#PRZJh9H{Y;dYMh6&(a5M;W&MI31fsY z4`vM1nRovz>3G@~V$-CQqfBfK@`?XpG|-?S<&Z3=q{l5-+el@>X{(6^d@=2m1=cvM z*}HHMF7ggE>nA!`2MxXS{;k#AB7Thiz?t=qXf<@@N+`gpTxOqTntBX&FST4gtg}FX zP*2+0whf7-Jfe3w&ArE3R`{DdVon^)eOHB7g=aisFDuRcPg+*REyB%a*L{|gqjl!0$gby% zSGGr$b@oZ?uJ46cPQbDCmwS=DKoajS;aoO(xbVFYLGRo+N1Fm#(f!X_-g&82Hbva< z{b+aZ{G4N(5=qg6_!RGgVlLY#*)O*ON&=jzTnYvbpxcKG3Bzmx+@-I2>t7`1G0^`sNum-7{!qMdLJ!oF?R z#;uwvJ}#&r1qMc%TW50+=QY|Ne@@E!xcNC=&;dCEr(LeaMaP1c@Y&zCPAKDSx>aUP=UShVK@knDqmX5_~H%2kL%$59ry`X0H} z^^nKynH6n&pQ01;m6g%&3a55!;}g%RaKm%2y!Ksl?wg4Nqd%Q2errC)*Xx9|XHC1J z$1Eg&rz!8Rig(3-r_$DKsrs4h1^WL!%ELYiXEBiYeaAo&-W!vo(?hvTDk;6UhJydC z3z(6Sl$=`q=RNB9zcCMK~9ZByk#JTtQ=YMslcJy0`WTOVq=pJTAn% z8f?1@WYR^mFx_lNO6AK*dNZcC)yfTEJJETr_H#KRxXH=hB$Y~y>eWq#>F$+Ft-`Ad zy*_-LO)b6-$j4MV+a@)k5J#^Y(vN1bx@3g@Z9Kf6q+>?FjyB|HTO*lFAdHb37ptZM z(u})I(e;DzO8kx)s>QYUQ;iN$MTR#Q%PWYFyBArDZogJ*BS2V?58CWKR@vnEEd&$B|~M9JBbpo+R|$*FqjY$-6idA8IXZ*ulD>pN|`KzzqE z_6Xa=`Lguty!(ON(%K18jxxeJ@57*9`|z@~#*GDz8ibT%>4{RRrArr z4OhqS0}%Ju^HU%0tm_3tHR6`wFLyTzhuEuckNJFSvYt`4)pTM*{=VwNw-@92PVC~# zlTEJQR@*}j{mU~*S1!go%vA4Nm(2!itLx{S{L4Gab1265L*UGpFGpk%px25M-ttYn z;SlGalI8Pj$azcI-Y}*Nx#gcxw-*Ru<@^BiqA<=bl`>aOszk^ z57LpQS&4^;G_2zo&Pmh%yZVint0TiqGY)ynzd_(PC&Mm*AEiFELDU6wL5=V=bQ?BE zvgTxY{qbW=H8#oCb>sxI)irGSH!0fZwE91i44MpfXnM*eM1+3TSn&mrl(GFIHc5Sp%FJ%5+06|bMJ zviS}eHrZe$ROt2YLki(PY}1J?Ph5M-mru=_ zTjs@2JVszE7kQWMhnh~#%aq2*QPPgfN^bvL4vy>7S*^QsNB<{(jZOD2zoL_T2r6s@ zsJuExxFk9uOoFBf%Nn?I-+$4XY*2{?zD5tPk$ZIUX2W+c{2yE`@CNXIOK81-MK1Bk z@1KKzK0*4)bEW?S2ZnAkiX`%LJ`#RE=cw!jETPGVwx|Jkfivl@LsO}%@iQ=cJr+>VN4j`pv-V}|t0;L)@ zizUuS6o1OKiYyQr)EShY}ppBT*f=zBBeu1Xu? z!^zjq8;pLCujB9L{z+yQM4P=!`B<)8r(OCl+o@@Me5avzW|IPoF17(NJLrZRj4QOq(p zOR|$Px=4#^GrGzvrZT$G+qGDDC?hW|ydc@BD-Q}F^oQUy9i&*vkqN%ZkcMMei3%ODpS;WfkS!51iVv zxsqzAHw8ycJ)E7Ts;BO%ysm3vfup{6!TV)xD?OsTaSYy4(KJG#&(b*HOvzb2DW%WZ zGMfkEj9#o;tZZ1#psYe{nmtte24Phlhl6ufohONu+#P4A2G#J(2^e?R4et_n%)Jy< zO*0KVSEel(^ZR43J3L2Z-x`k2dc+u7A6%{=L$cL|utfoFz25$4isE zI#LaK9I}Q|$^ZHp#*YBvZ)>P*EnTme)PnKR*U`o2UO$ph3n8^wyZ@Ogg%hS0N*-eR zq`yH5tqGv$G^{&9H+P zs>Eo9o7E!Asiht%-(X5oIVZ!718klVsS!;B`)CwpF$RC>DSJwKgeLH#+}r4h$DYcG z!|}oX(G0Y^WD0z-wQ-g*=A^`I@~B4!&fn=Sa+lbA3jauIk=1ei}iH&=y`7{6FJ0jYXAYM?7 z5KPL$)l`(hhpT)h(a0e^-;=^t91V1yD!@4^k&`?aOT^JAAQs#Fz1ddXB5&XWO}Zt6F};25~kc@%IK~W zO`|#uldn}?*!3c5}i7_Tmt*!g@%K!Vs+?U!=S*UnS8xe zcL${A!Az}1)TgXSLC&d0>qQJs%9OID4A=RU#&n@$qh!C{J7w~@W0TlWTr@3vts1kK z2wDa!1MSnT<``^!BeH)KO$0JSsmH%FSg35xltn?eH-l>2ld_!QZns$YF?{AI{nBbR zB}j?nF0I9EGduxT>n`=$XxAfmD0wACRPWHd)?<1!8KHTi*@d__JR)tH9pARj_o%qz zw?ErR?;{lrIQAZCJb`&s1_b=PyPNJO4ZL~wnKbAZ-5d=-&D}Nf#^L?E>VPTtR6CeR z;z`d<7T{!(GPoszz6fKF7QMqI$;f(%i^wEg%Iao~RI$36H&u^W~xPFxM z%=jVv`OJhdI`XW~ zIiz#q0l$u_Ur}>Hhn1V%e~?j8KZKlrS>HpUUs*?qN%68_o<4)4aqJUiWz(dh4`;Kn zH=?p-nH^c#y50?{f^R4Ka3S{Lh^n?DUSw7KZ&WcLwK(C!-Fb~fRDZn{MOJsANQ>2U zKPL2j)$p{{I zEgPYP{=%CPppF&*x{hqwP6(C&TEP&1k==Bkj@G@bC}it?ZV#}JRtWVMJuF3Zz<*Xk zk?^BhG)cs9U?DZSC(LZAs*ET)_3&>K*!=q&9VY&@)$) zN7z6yT_XMynuZAqr_LK}qxfL*B$KBDQ|ttHxWU-`>!|8vZ-^a%Vmgs2=7@$AMK)dt zpUfn-sjw7f6<#>!pMQ$!GSqkR;UYdwXnH*2qeVXHa*Mohk$S9OfqB%h zusr`tLVOVa){E)1@67bPalRo1w73HbZ!rl}Jpbm?aF!~(lK?{#(6<>$pDCz_)+Oe( zS;((6D1s85p`|}9IQZTUfcs99nktxHx{)gy#ZEv04hTE<*;~`W#I!D7OYY?BAzcz^ zdJk13M^L(w4Gkotp@Espqg45&7BpiCeV4a){+)&YWcmQ3H9sAnvTOEa=DMr3*t&>{ z*95}usrAzQY50s%x1UQ;COPKNf^JcJWZ}G?<(9)5F{nKOZmKW5J+M^<=}k9jHAE{{ zSPD@t4lfjuG^NQN*%|8VFLzwjwp#*&o-q9fE*wkUk>f|0!75H_tE<3Ehd8X|K5xN> zuZ528FnfbzdLek?W6pQYSS$09sXD8T#|{JKE8BJ2O|#S|mhJk6S5+Pz+cDfg$7E@B zqq+Sqi_33yadnqqu65zI+Hbjh4V6Xb>vcPK2+I343HOz zpMHCTSr-=(s6d0CEB{|p*28EtfZQejbHJ?^Dm7Ob|HlD$pps=q{MGo;$C(OK#AOYD zLB$M>5Pns>_$GR$;UhYbaqBjM;3bJ&apo(g3hRHep`WyPdQ>q`~9$Lo#aL08^tgX0M-!)RqpQoH zAFO%XsLk(oLAhMu)lg?Bc7V)tt&ihfF4Wv%!`gMyeJSE*qkpg1*84IE9dSlJ@Y{wK zsWQB)Twu5ST8UeyC4S@TFwrc%yVC}8aT@Amdg38w@bP0$KN`ykLd?kpKDI7r3|fAF zUNhTlwTl$}`144ktN#9+N~G!M@fU}Dp-yjcpV=*rW|Gb%|K+QiPK33SBq=JGF5j(k*AVixtXL)bjp<0vgZnxCM=JpLKZ0E4NFp3PRAIPFs3aNRKds=k^-OqzMZNm$i^IPV%Ay|XB#%Zljf8-082M26JddUgtxL} zS|7}_WCbkjQ)bKNk(Xo!pSG6d#GqyXR~!LFY3^6LvVuIQlwN6mmL9USAOcgAy{Ow3 z$yi(nreH6r^ah5qN?{qm%j37wGRxH3NN@YBuOt*d3wyHlepYugD^=9>@kafu`yogP zkXE#mjvCv6L$7>(0$x_RykVDFW$74k)KnMdQvn~X163ksx&i#!Qr=;C+torjXZ!xa z;Zaoul7q{6YsJ>FltI zy25GRIrn3x4%ZCf^gOQ}CYXHp@jJ?5G|wo>VH@ulMg1_(4;n1&x-R;giiUA!zHsLv zc5Y?Yp?94IZo}GRnQkNctI@8bh9`gB#!T9c}l%Mc?1gu?n!KM6GcrgKiEwB_bBrdX?yogP`(t403 zvYK^cD7sdRl`XnnPU$bQQOR*9x>*a70BymP{6X8T`q@G|jrJX&-F6=?>b=cK8nOLe z*oxS}SUHXO;UwY?^mBU1U;Jo(u|xd0=kQMaWc`Ll^w%<$q{Q!SN>%DpbdDT}vm=nP zQFvotBRD!d>CMjRo>4) zV3%7~e(%#&oiKSNCxw$~l>|mb~^- z4{#^?LQA~o_dEj}(xj2gZE5q4S`_j*EUA!Xdrz534-$Dil_%c2rz(&Ei8oR!U}CaW zQx?^TBhf6pdvgFzMrx#L5f^F4fFGHlU=^?MKYID%KpQBcd@$Lppk4?>mw6TbDEh^t zzjOV-w0Z6$AkDn@G!S$!INO0duMWhnFnOXh*G+Lz^I5sVjC5$O4{kyBB>BIt(^D#int$`nL|4`8-Qjo)% zPA045q(rk%GfbC}SDPi5xN&@|G9vwi4g2s?H$yQZn;7QqAXD$?(iAf^!@OMQazY=X zl4;KI?3?mRx5pIUN3$)NN2_0xPDvb&lPPQ^`Uj_CEgYBDW*#-ZJ`8&va|D(1 z*XzJXB@Mre3Q*uK^)L%ax%}hD>XDcsW9<9M6@&$1Wu8uc4KeFtO7$83! zj3*d}`!BURk4!g8-Wz8xgD#FITZL3rX>Knr4p)P@$NW2PeqU^E&Qh+lc^}>^PaFIF z9cM8Py7UYG;*W`GV-o0!?fE76S$6-I&_{w~>%kO#OmrbM&YyEVsp03Q5%yWac>%vH zTj+y`jIL-SIFO&PKQpIz424j-H#5Yt9eg+cEP<15p71(*dNq!foy{TQ4}u%cx^+QNRozO)VO7Hdz2;GUR|nQ{!>RL-W9zSM zdk6SpRg?qbb|H$ZLv}>TvHh`-FR%xF2zu3td!uyHXl`ZyyPNE=w6^P>o+_#PhSz}S zJ1JUb^;dF2-@2YB(qeVrI3ZMLeM}xdcl%$3zjRS$RDFLs!s=4t{OzUBPu_9y;+MQX z_&FTv$Aqye&%TItRtQY$LkwL<<;ODrj4JsoH;k)p61k2@!?X0*l(J z83MDu2w)^}*;t=iaLU}=P;kvUIO{^$UTIly!zrIyXw!w#sCml+lr2>0b8{rJ6<|&y zyb?TQ2t4RT0TYT*V^hM*apg3v8&HIi$U*94w#ZM|?t;i(&JYd!I3Jjx+Aem<7X4ig zOensq)~5lT)z=$={xov{hBiWJ717d(MJsmR<6yQmuf7XO+$4_$?4B7RYnml~HR1-HNE`pv;*~s_#{F~|Y<$PsBKhP( zH5lMtKSC3HjYfhO`~=+;6{Y3%t$KgSi<^pQj5;lg!jG3jHy`DQ%IaxWJ2&Ofti37nb29!MByy zFe7Mfk>M3g_^b-xvSWm0g|x;awErrQ1hvS5+{Yu0r_9Orh2>tSB*a-0=~K+N$VoPh z$2;+xQ*{9c&Mq*N1Gy-XHS(gbkX%@&qi zrND~f1usJ%Fp%`((!I zHwEDY5tV?HN!Tutjp%i&N=Os*%ZY}u*uIEr@XTcHrRxJPTh;S|F#rCW^=l?xH8&EX zf+vq{q~5~S;siAcaRqE;$c5FTw1^5xLv7{g;Oe378hNzSwh98G6Q7fka#@J&6lLMy z{3fCjZcDp&38E0v8KPn#O*@rBI3yhaV@np=stArUFRo1yV@O{ShF!L<#H1H`6ipyZbJ@_D*ZV3lZ+9Lcn+OT zLlk>r-{e=CJ?i)%OWSHAae1#XO_&yTzQp^b8qPtG!ee~#In=#LtC0mOgfHHU9}IX@ z%@f7D3+f{a8G;i0licn*{CH3ay1a)!JJQHj(wD3n419rVBUpQpnR{wwt5%XDIu=7K8(5 zrTa`C*^(Pg>rR#zz`4+37A$`1nIFe(M#hl9cc7CWFWF7T7$wcC%NQfCm~IgPlA13_ zP(>v#Oo6cLGNozfr4^4QJTH; ze9;%DQ(cxk4{&mEa)2mBNpA3jZb?QsID_?zA1{TiM%Os_OAl^~akZ8FJzRJmnSZi6;`8Ca+KAd>K%fcy)!uK5EP3X^_>Ki6@c}l zSJBvy%&2G>qMv?QIp$5t**qDkU)eM(1*@z9ydKWR)jUc^^-Xqtu6Drd;p#Z-UaV?8 zF{7;hdRC@i-FbkXUUS%dDg1Xlo< zE3ip8N!`5Q;$qmm?t#c^Ui0an5}FSH(Fkt_D;c$HgahlkOAlVpdYm~;s}l6kP-H(f zDqG|L7QE8Box?x_cs=$;@WbNfB+;$%!w0YDh6Zs2NCRTGnIQ-C6Bs5$D0aeV#QyYv zjK$9T`EuHR4Nb1JU5-)GwqHyZYlxrB!XAbR%U9d4R?TTUPB$lwB`$Y+ays4~LXB>& zE+uYzaRbkKjBl4bB!6wI2Hil7@1I|FCZgl{p(UB1(0RVbV*U|?#b|3#H^YeWH8yh9FEWn8Cv2nS-YkZjo9T2l`vAd$ubn+P?U3J|Z)0V409? zM=b0 zdxLHxd33GnilLE*Hf{Ze8W>ApB+AB`wvpyRs>R7o%U!O%X9Vm?^~Wf5;k{!UT}NYhR=6bZ@1&@7ZLv{MJ> zbW51eUnnKpLRyg;m2$)tkX}2@EN{&(R+^Ri$#&W!NX_67;!^Wud);+!Ekx0Dr9G3q zekD@tYael?%eK8Cma}&C4sorIzkf(p(~?3J7C^t^?s+h{nU@!d$WA`nz^L|{o*7TC3+2mqownC zSamSx^YurY9$#q$Uw!7NSjUnV?!j955CM9(K?D>2Mkw(i$XslL+$F7B(1<6N$=96x zOs8K$jwej>ry0p^%XbjTX+(tB7HMF>>Cz^JlE{!o$7yOM zl_islZqJ+opCG+@P^(5D2@W-05H&_O;2$y2dgaQ47U=%lKZ*zZBZ>d@kN!_8|M#e( ze?O;|`7Mf!5d7DgCtp5}668-s&ciqW#Z}HT@KR$MN`1~288R@zG?Fanls#PP!Z?=w z!V*>X+GVddPfiI_8Hvv}8LE>Gd)p0 z5{{Jhr_0?wlGfQ`m(D8_mD2Lr)WR2w3#A_SLU+qvSEo_M`I0~=%k$)Tq-Xao+xPFE z-IMw;RpXA^yQ`5|gTQ<2mYl$8I^h*JWWqGf!_(TA5G+UQFTsBe$!3BnynEL}o=bhs z{d68Wx2{F2#cC8m@@XzF@-Rk$E{X$bofjoQ;K>k;?U+Uv%Y#(Ni{YLiD+rf7WzCD{ zBS<$70a45|BuXFX6hP(k(h8E4!1D#ks)J-qDG)ndrX=l8=}cN|&R+B|{lteMUqCdW z=4HCfnbwi%MOpS*(?yw1m=wj?E~mQ1IUe5WEMI&m7FeIUb z;+j+ObP(DS1)!g~)=xdU}E z5?M|4$rjm%=>zXAMzlT z;+}8ttndOUiA;le=va1 z&2V!cq*6UX+QJN9*Heb&VZ@i;jIi-Wfi0>;a^=N$}Gtz-8S%I*GDDx0= zavoq?2dO-|k`wF0k8+tZr$+IT7ugw)_i0n0eS9td_CYEwEa<4c6oi-ouyKP0 z1OBywiX508`ptq#{Xr_h|BU!PdjK0JCg=aLV6*fZ{9G`RT>j@DsWj*Vr`AtdaC&(u zneHT}Ab=_ETVG+0X#BUMAur@o*y+B`_* zXJ(B&tYm9xHl$jNTv9IKV_R85XZ2XCq{0WOR7R>Ng%Ra4XxhFt^#&&tO%-v-DkxbZ z!MP7oxoxZL=M9P5Au0h0*r|R*LW(fXUr5W^sn`IZj0t#68>deuo?^edbcaFv{NzL8crh0*z%;l&Ae z)2Q$Snpc<-Pp0(>%6*Knt}v%Mo9pGp;feQnX+a=4_f3SRE-vc%CJn=Nznsx;X!_Cy z>#FA5hDO>5ovm(5Dv=pN0bG)nk5afG-O;+v z%p>uFPVU2{gbZWZgaN2Atgd?lk#ZmDmEkUIkQ|j9j2QN0Kpy3(&9che%BQQ0>h+$N z*VyRP8;v_^MkPCFHiOqCl82HU!3eqEIMY~3PO9<9kkmN3t}ZcusmR*-zEk#x?ngHrXv# z`4rzh&lLK(o*1=yq1<-iycL#=HFo5SJUQquJ@Ky+_q;eS4BCKWt&l8*8F~w>MT!3KQuVA9J=QNy-f;GkqR9I}w$e8p-Un)>Gnj1U!EiW7 zMbls;d*xdriqfjSQ@zsa0o0qr%GcX^KTG;mK=zHQQj5@rdCVw|+GSp)%DUW0AI{d= z4A9FaQ{bj-IV!v1L|DQRoNecWH(c$00GF^cs0>-rF8UF;BuDJ@Uv=Eli&fP>BlLxK zU5om1eZ%Dtms`}BlXG;xZL#XZ5Kky0t>c%x0{2C|J`IZwW<)v>M zrvR`{)%3mDZS9P>%R|0B*sp1hJz=?V-Yx$gp#SgJ-PSD%^oTbu1x<>#Ec-d$r5%ntlKj9w{E2KNwjVxET-pxgwYl;AQnSd_h>Cw}{_6Qp?bm;) z)dEnqjOG7&NCMHoKte{7pU>08&?QuZj?Djww?8#f`$V2=g2t&M^}I+exPNo)QcOnz z4@WJ8hjIP6@|+ZrnM^2y#X8Qt;gvL*yK2~Z{`%efv^P{V>fvv<*75v2@m~OQ_v(yh z#4*B>j9h9F_!b*jK)jvRUp-Q{U_++jO6FxYux7tyhT2Xh^(tE}T9$E>YD7n#ze7ES zz|@=^h_?%4fMaP3HnET9q{ST7<07^;>2GxuUdzeE`!H@XVtc)nnNdqnw%8(~CYM+6 z2PfthY%y~_!+$3ShL&zwaEQ0csKu%$*)nd^DeEd}tbmhiEw-f$ycBirz$rZimShg; z@&X$F}lhYR*-ZLiyek6-M2QQ;EeTx9pTD(<@d}ou*t0* z(e`VV4}###LdIS8k@Wj_t}BqNYl~g6*V0Zq z3$9wCqESX(c%WRVr&W=yS#G+0@Vd=gv!+9{!iC9RW+VgL(4kSOY7OtFTk#=FI)P(U3uRn8| z>!I#&3YL7i@x)%J`!Pmsq>_Q@jge;;qyO*E(l5;k^GSQjj6TNb8|ahFHur<>K05im zG$ETL>zAA1Nwlum`hcI_EroLoHE*+^)NdISqj8Rp8s1`~ogdH-<4vvnY4%dSwav)! zw5$8wHjC*d&B$C$2!@696Wq@)a8TF#B`y+h=g|X!jD0xhzcTizXwraW8vYZ}*i4X? z$C3Jvh{h?Sh;sx7Ul)klt%Pn%hvdcr;sa=_}(P61N>llNk z?T^CB7tsB&vbWdi@Tlqy&8WfU$BnLh!fgL`xbwjnr~UodZM)Caz-APse4v51%dg|g z`hFwIyNk=6&D5L|YPjF&-L^-L?-6#3anPg4%N*~0;#m`SEKxGL5LD*RDX`Ks`LFqNpboocxg#vBJd2GoChy2bFD>| zmlt<0lvU(UAj>LiH{caj^{4Q%>Ty)8)S796#q!!7dRTegLszVR9pKY7bb)=U8sD2D zs+uO9VU^8epB@5=i9Xe>t9d?^@Y}km6a-2Stg7u~LLUeyZh)#gu+M;J*dtW2+OHP) zz7GzaK@H&0`PTG2d+_D3AYwJWZ03KH`#4<;YWpdJsephY^l$BeNIq~|lGp#OAJXj- zYZ&I3q^cib*%Si;if4Zt#)Qyr>wahwiYJfjGEhHk=q%SyzLf?7ik1%(wzB5!O*6_L zZ<}VdgO?lUAkbSNpqPK(-n?L5-`=1Ce{Egz!=2qLIjPE#eruR2=M&*l*0I zX+7wv2jcZv906@VtIzJ*PE5Ka#Lwypa}dAF89EUcLoPXOmm|;|pcf{6k2v3l(30M4 zmK(SKIWngeznYB#x?;Z(t0aGK_*QSPNMB#K$NAsZuOjhuUf=%?4cg{gyMN&+fx?9s za6V~_PF+HH*j7|WK4qF9SK z-pmgmg}9D>Z%Zaa+3_Qk@0%%>`rMmGcQtZ~ZFB_TWW5Z$AH!8%(&MF;^u+yo<*T2x zLEN4u%Z14kstG)YjkokMgMUQJ0p+kWupEzjLabB6Ci$|0jBwa^q=&{kiqbi`mpl0J zKKvH{A64(+PxT-E|0mH9$;t@X*%`+kAvET2`2XA{S8-W_R54R?+})bm+)33#*%=ZlOjB(9khU=__luY9!QzSu^TWyfh=w zOs#W&$?bZotVuQu>jC3604$d~i78oDHjr2!6>FQ}^xnVU1(6g3;bFX?(_uD(UBW8P z(md%ckBdb5N+^7Yh_ff0ScKeIulsFh-Lh7VR>7A=&6jyOlj)_c)G38pKw?tv>0cIJ zx=oeHfuy|O$##-^`s%R)Bk+eSc51*Jg`*g-m`2pL{$nL*z zMh{j6(R9u9bge>M(g8JB5zX9I_X5$)5_K<;p}Y>8Vmgma-!y|E_)Su{c0s8sNNbc4 zL5ht>OV!Yn+SRI{DhJ9Yty?@)Hd|k=H&bfh=sVcB?_T)|U8X;N_9cH2TJ9UWrPtN0 zRllzt!!g5dY(6zsb+4g1h{;J0AElRn^t3j)-%*paY_i;jtU4p$w-t}F!9d7ZT>+`H zfeQQNXz5XP;LG2R>|0~qsU4%0xm}zN`sb5l9VrP7_~kAu-=;?hysFVEm9C)~hO0ZC z4OvWF?rQ8aOVSNZ6Iqq7?YH!{;sj8$9?srDF-nthsi;N|7mv}HUn}XU=<(6Yx9xay zyWhsqfd#vM#~E|yn~iO2u`Yhse)>0Udq11sd*+dF4oclZDXCvQxb@^o$o*gRR2LJG z5u*9aCQoya+*-eG1{cp`Ju zyJuX_C7s5~^+ir<3i`sM$(}sdz^7A!a+q#je7)WNJ)Im=>sAk^%;Cqr)umrw(g~M@ z&OY9(caSbtOw~Xbkh1?Q5k?9evT57t)x79+5RcI*GN^X$p}%wxa2ag$*xvclr&TqL zv_3!c==Iu~j}M=uiAeKy?dy&cmyY}H%DWPo!Y%l{+=p&$Ko_eD=TeK`Xz0FVk`8{l zhwXTJt_@bI3%|n;iS1W#n{!XQTb|`O0>7yo{w%!LT_c;F_PVk3T}?Eo_3^2D*v|^n zAG0mqhdYf(yow- zZ8*@BpKN?|!UV)R-)IBI{~ zoMvl~b)c#!#oRoLdz3)adf(Y7N25}pvQyKTi=#`!UUQjK&9aH;>&C-4M@Qs*HoHr+ zZw2Z#>WUZd59;QzahD~`zpDG6G&0o=Fg7~z{(Op8QQOJ$NUW|KQsiGZB+Q4d8y1Hj z){RIliSdugItK9nP?Tx;`%Q)FvL4i^iz6nrV>}R3`Z8$9FXO&T$f$Xwn81*=-*rI4 zto;GHVb0m@uwmX6E-tv}!5%0$?Q`BDI1w;?*|;36DbchNZs^gp8jam5v>qFCCA5%W zC@wq;6%9mg!s=R)TUlNRk>!evtLEuOc(&*&ybmM+Bnk5O4qZd6y{wW}CLoJ}G zu0?-ikmjSV;Xtv&-t$(FqwgbaJzR2=M6Zqd1&QxZ#m4WIyK_FX>&$V9I|8qQZ)=&J?r2Ee!u=Ucu{?)6JS2tB z{4wPE!0eWkkkoj2y6brJ!hc~bn>e(7IzRSVVdY{TPBQxBrg!^ z>wQTTQ}Y`fHoqV4Eki_;5GD0x;eJAs43o}aq^^|(Sw)j92RMYPFn)i~KOxH>_wa)? z$r1&k=><*eV3ce9(&Jt|dG5kJ9>-)$s*Mv_fNID3g)PzDJ(d4*OCvsX*^(~nL_u;k zA<;Z+nFKruLTrW-qxqK^#bNTVz2-vipq~}=pCNv)VYjS`9ZhLN6&PL4xu&ChYn^1B6?rQQmSGQpcXV;zq4Dr)|tu4 zSbTb-is)H+`ilxycD%_xwxhbta85HB$H~DJ3!R3z?cdJIqWblE=U)i>i*(z3qgP7+s5;m z*`dS6!O(>7{tn@GHGd=@tO7r1#zT)X~t2a+t5u9%V&K*sciFDhqjd%U2 zei>scrva1Y8-MP{W~>C{CA4HtQLLgCb15fimhRW@iCY$zrM)}u$GJwZx6D(VKk61J z{1eOLZ-&2>+Ih#*HHKDf8NV&9=eY!-oET5ujh}Sb^k1c=ackrK`C&A~_P3?~+u@## zEdjPPi+_`EtAHwv?*A%0ay$GBBm#)Yo@7BBC)k8Qp{Zqu+Y`bke>C^<1Y&74OJ9-? zL?|TAzRWXHC%pIq5doB~*rI3{_|~vu*o!ZSirAqx?lT@r}l-^g2TD zf5?7+^K2X}>Yf{0&v)Gg4^_^N_F7T+UXXf1v z>8GDU&cqeyf{7?6%z{3Uo)|~anvmy45xYcv@?Or;GkuR|01lh0!D;g`q}>X65gcRd zIUk3e-9m}avgd4@+Rc~QDohj3x0z5xYuPVfSF0SrGAX8C06 z0Au+OJmgcH9Ypjk6>Mp~C3y+FXNB-2>8avR&Kk|d1>WWcC50t#MN0F5EPRT!)V;)) ztqjq8##$1;c~V*w5JFj2jOu7E1q9i>)QURHme#&cSz6U~Go!e=hlr}8rjZ^HWKKLl zAif~&S5XfH;uVMti|LAnwYSsdjawmpDNS>jEp0n5qoR4QcDfXG&@o-rvNS|hjka7c z#B6Dz)or^s{i{DCi88C(i5W7hIv(*|Ks)g;TN;I?QFRx!TS z#HhUGC1UKM8+F6DZ74Nj!ZE3zWJE<7y!*LzUe5?j8JAHDPO}_j3C@I0tE5Z@^#wG| zg=1ee%*PVX)-70W1qd!Bh-M2fLfI=x*HV>d1y`~RB_OLFj;%sl(I}ws$nBdYp3RXl z0Sb@M?B?~xq}Jw*cz7#n(+{(ebso^5c6+dCQ}@wZvts)h!&j*7VNp}jzvIfL#5G7ql)9qh6VB)J@0;o$oKsU;$WklfSkgjj2LaM%=*5o=9| z^I}}0J@uB6+EI@;1$I?@m;$7GFg}ulh+%78;j0i&qOyh+9c1!_umDk9%3nq%sSQFp zWi^!U`o=U{In6g`>9t40cJUcg>z z>?FeK+*f&HCtn(Yb0;#n(E1Zh#gRZ0Hl1(7kET$z7)#6;=U?ONnp81QA1V|$IPZ^PB9hvmAQTZS2IqYb5`hWM^;o1xLky+=();+6ic zF>`BYf=Qj1uaj=xpT8p0Ltn@~3%>1S268d&x*>l)=}-|nnK9hi3BGab#ZRmS&=>Z^ zGhS+WFwS$C;RY7g|Fd`GVT*y8W%X}nq4nzolw|&MSog;ddgZE~4v8 zG;-uJa03jq*fdH7D{gju({fa;R7ZE;Vn1?JDYkY^R1rOL(r$P<-T`6t;_7Mkge>;6 zk2veJJ~+N<^3?lHM@Pg10%x*$XNw5YB{Rp1<300_t^^_t{uEL+-;9M>y2_EY>t73G zVh8|#I5C`WT(xuIbFewqVD6`Sna<}j+-kW-&}w+()YTDecvWHG<-8IPJ2uH~5#C!H zD|tj)NqzozeYB0`IwkP&sptAqXR2*QtC-L6c6?hZZP1bb`Qhs|uK~ZyfXg-O+a~W8 zDUN7^x(DSy1)Up@)B58{uTzIUWE08_dti`87fAZnJ2&F4Zxh`++V|x2(G2uoXWlX8 zdFQ=fr+bM;uTz7so>>%n$<^@`fjgvz;;|N}UNY zLS=7yGA1iJAoD+}@Sf(Usrw2urD`krFs1A7BbZ>u&8G!W^AND8S%33k&a_WQGUqt2 z9x`XU-V-TG_Zadi%JZRYX2}iMJY~rbo`O7uha317=S0&t7Z=4koINc}5D{T5fev`E z7Q;%LOY*bcUZ0he=QfM5l@+}AWveXdK(JL*oSl`H)O279F7ElUS0ksI+3V1?hrm6h zBwAkCMdVlB&})F=K=iYnb2JSWLO2^S1s8Rb7N`o;40w!dUhoy=La(HFaJ6h~qAHuV zYtJh`@12Qqw;g`-B95~EvoF9s^{fZq?-01BV#I1X0PtM% zjUuCkrmN)hf6Ue4Zt=7^69RqHc;!)3_AMXCky3i6?wtSI-j7E3ciGZxvp&L50(hn}u0(gU&I3i)+xr5=w!84!#QyZNw+ZhLZb`Hl zRB6(p4u250p^uQEZK6lLZj#~$b8ztHw$zs_yu2oZ38xIt1sblz1fkC->)Ir*Mu$z0 zzdm|?jsG#|l+Wy|qqOPtJDK9cdbx zgb2m@g$KFbk60xhMoNt=kiybrSOf;6OkY@#h6~AZ$R&I*{E+(ybw^I%y*i7|eFoBn zC^_MD*AE8u43FxX=#_6t^AOp?$3^rp{QmbRbig$wF_aMS zWtkR2p`b{Um>B!Tl35n1sNq@5owIDk2(l`gm9=zA{3cIHg_R6ahEj^cRv5MQ71bJu zQmewga~V%6>x>O0_WZTxjrCEs63~SGu(II_hbdVM48evOzdsAse`&0flrbJ=BS1=| zycVvR-afJ_SOZgi>ynf;lfTNn;G_C_Kr?eYzn^y-lyLhTX=WY2uoc5PQ}e1M&cTM* zJwK&TiHOt8!9TQpaaTk=oQx#z0d>C=j)7XV&4?J@p`8STQsaGKvN)B;x`LFidSXLz z0cqE|lDdILO!r8EVEBe&AFDWIHMx)*XH(6`K_X}8Z`PgdVntgeEiAUtLV1-E1!6YM z(nbDKNX4cm!a=K$9tt-`l&YfHMho6+7wh3WXp)kTRhU4_^#iu_$Jsg>rbuOEE=!fx zO2Db&CUr;aL7T8qqKhJ&E z-(Wrb{+SYM9z1BZ#~*%$Q=f<{JpWItQUSK`4XGQp|Ax*kAdchY|1)&1OtM6*ITl2m zChGgW|0$!k>7&*^_t18DjFsD8e63yS@T4bv@;T`zP(yRMHT-^(#4PPBD7g9fTa98w z_TAu85~cbLX}CfVu7?tYZUm-SgdvXCqzZ%@MYhvDO7u#t0C7CczpY#06xob_BgOt# zrrXvm)Q_ZWs@l(RHJmDKWgZcZe|)Hv`erdM5=)W`c#4*L2^glkGLidp{h1UF1Stv4+v7(JzGmUffN3nlA{&aUn-+nf0c=~p}AIkSA zaPruFdDP8xeCuM~b8IYE^ZGV*>yazy%3@)ulsNx=w2X-9p}D^F|2weYbsR|B;(st$ zGd}0LLic&v`&|6?laTX`@%eWfn%qI&=6i^QC_r&J%Eixe2ZbRs>1f^P+ZEAf_FP)mWFFYniwuBaN65CE>j#Iur`ABpD`hy`W=F4PK}A6Km%m_dyj9jHq5 zHrWwZ+n$3ccLSI=Rn4b2TdLYGagVq=v6Ky;woWRwu%q7^v~bqkm1(K|e0yt}=PUm1 z;j`X{F&GrN%%7*70@cFP%!xwPeubR-)pam9iaqPXfnU`8pgYK{>lF3-1-7NS$NYm# za~`}StkV~~KY0wr`MN_jFyn_kpuSfT4_!Z|vUI^eq22?5OlxoXBZl?+(2(!Oof!3D z#PJLj7}BTtj8fAKNocK+=3??=z^2|oJce3`%XaN_xu z_^Ti)EwkGTsnW-sAHzr=_u-hQNs$E-zN5=uxFeqS{81%g2&elz-nEaO^xdQQC?2Q2 z`w4n7Pi8-c3R^7_I8VsXT@i+>X_=Fh=)HJIlMtiG`0enj z5Bh%>fc8+1w=f~jcx2(x9=Tj==3w0G%{MM|1 zIMxT-5q!j&BY09N^@Ro$_GN|H83`th1}x{6)zhp~Wdq!#)XsVv9-Jg)r`e(S!7t1F zh|`yE#)wkp!mI=XU@CUmnrR#EE4+h~FW>46XN_Cgip3(YRUI0JGf)4nNg##QyvK-h zrnO#5p?zMxWB$v~0}hVV2C5!lJHkiUVX(9?9j$CCsGU5kuUg`jCVbaw{e?Ps*~%u# zX9YvYd`creCAr|ip~8y|Va-4jtxpsM_NsKlYN-TTxpXTV3a)4BIn1M<#F^GLwVSna z1++_fa2&J}(zW5Zqb0_O4dr$N%_JJqJXz8$eUEgVxzFhqEKkxo+!qcS=K&vx0fay^>#>tM%o^W%lwhQ?n7C zO=URcZ}!rSrU!Hoi12N<1S;c6uGDI0{2g0YKciJ0@P-v$`8p@jc*RAxWu}YkO~0YR zZrripmdB0<>$K6vfNtXobl0ck+@x%Iy!G7UweQBc@!yElHtg=#{#d_E4vBP8_{?vD zVh&8Va3|Ui5pTjsFU*b#$=Yv|y@}#6G9y&e{ldb$7j{}_h95-Ub$sa@d5AKnuqAI{ zO?eaIY-B-hs@KDS`!-J4-xB))tcP9a=Ld=l3)0=R7S3+h54kN?kEjH{zSyZrs`;?Y z(%JY;&?0lJjG>_?FiitMr( z;`FLYJ0ZP4`e@xC*SWp5i=y$jQHsat>}8r)RbOl1UYrV*-W$zYUp&!UX-0o1#PJ-9-+5$(I%XKN;Yc+yYJLe^B8XoJ&* z$;|`Fc!hF;X*Ir@Mm!nQT?}|6;Jp|`MD~G|Kh1khX}|(c zxOrCm$%_b(c>xwc=aHpBSzHj)kyZi^mJ%r~toWA|DGCw6WJN^EN-{7ULRIZ%Y8kRa zq`bUrXsWED0CR=x-KWHG2*7CN_wc;DW|E$&ympuuRR*q*=N0um7!G0D!Y{R9&@*sw$LQJF2P$XL!02eZA;c39gW+>b3(6hj5$tBBlKyLrYBu zHlI;V=cP2bLegnwVmO3fHQkP`V2|So&8+##o+O6Jiul)kqs4Fte4S1y-^GXh>-)Kv z9@h`BVy=)X*v1$RA*+7SoK74uWXxw=KddWrSqHKr;tiw97!JYItsgpWA1dBBVVE@2 zFsc17E8+trjQ~UdK1SWa%f^}LCF;i6P|TZL0`^tYycdQ;h+&9>E=9^@BQei$%`3T< zvrYdHgr%Iif6M^^bg{}0tZ-Q|ts)z#V58eam(hs+DZvX8+XD)#mTik(8nNw8nH-WG z#1@VCeiwTi>TfSNJ06W6%(m>!xdpWzPxFD)$Og(({PYd%THPM@P-ef1;Qq4k;M#dYinxI=oG*X=UThOU z4hAFT0et{XlVNVS<;R-8NQmhvBzqWPSf6K}e> zFBtJK&e(mC@|aJoai?iV+S65l5? zGCbIjS0>U(l3B=qA}-wfT#hI{=Y=&Zk58{`L}Fsp$Rg`)q>`?PTyh=b3bXm7qP~p= z6ve;7ZBOx1r!X-MaNO)tKFYvpmD+d9hBsDU*~Xa!-qULp4^QHp19w~g!AUiryohXUP)>;D z`zko%AOY9-o-}PUJgUJaZ%xZi;*vrwLTMzI0|D zQ-)A##&IR*Lm;ful&3EeJV}c1p&M%Elv){;B*nC(n<~-iS^(55VA0-GhfQgeNRXCj zdpM|jP*SH7Kno4SH&uDkHL3-mWp`>F^lB)zE3&oAjkUK7Cq;CsxJJwMW!cq^_0*dH zsONLIWx~EOj3V!{Z=@l97G=Y}BC*`ng+nhj1H&njG=P+KnH}Tcw2t38HTd<3c z_q`RUhaHyNOR?*Nf5kOv+fGjE?9;=@1_4AJ+SwUoMcTWG@|p`O-h?XunpGXE{tT&f z+`p8wA--20LC)~!2A zxHr6bnSfn564-@58^|S7x!w!c`-1fnCh1II{Owt^dNx)fE=Eo@48K#LGviBII#!{D zqOTApEq_&`-53zo|`mvNT^CF6`NrME1ra z-dG&Md_iup+#AI%*z$XCG)ae@c_df%)1@d*i4$0~Xr3Nz ztcXK5{G-JFZL4V6z_cfE^4)0+iGqa_%O9R7>954=Qo;%n$!mp}k_>$*R%6sez(GFao6eXM17Lx?_)-eClGKoN)`AR)v68YJhil)`qG$^Pcri3jgsr0B zW;0u51@lp9bxo}ZdpV-ix2zJmpAKHvc&VJsJ2ebBz?)hIM}40NioF)iMp@C=9|DHk zQu=vC!@?9LBXSs5r=n$CDWd{0jTvM>kk8eyafae*-DW!nOXEJIs^hT3j~k6y8b1R; zJ~&buVg&hae$Tq@E+MMF;xk-4>wIX5u`;^(*K}f5#c$MG=RAFM!;snmrci(0Ue->G zm2vo@wwH%W90>B2{rLukI}vpw;!78NKcpDMft3*m@_#7$q4~#D$}afF)vF+gDQ%em z$f$lO#>xmnkE7<(7(qVXb%4N(eFmao-Wh%=Fzvb|4y=qI`8e$(+A6ph;CLyx6dVd^ zS`Ehz6k3Ru!B`nJufUd=ff3~Q1qg4z+(w00bKGb|HsNI$#jqd9kd#f&HZKB}&QCj| zFA%kh#BKwTm|@I<$S&Ek-X$93uUFS;f;t@Z!)Wmt=Fod{85ln!Q01TQmIaCLOrqMv z4c8oVB#yxoo5aPjq0;{HBZ{fk9uJv_bx$Ml!!I}~YYCAu{o9X8zb%=s?Y=$_BuXj>TV|pyQRIKm3$0*WW@q>L zsxnZUgmAZ}mq#k-B_^g6)~|2{Oe&j|?kAUDFmZ*JD8JfIOp53&;E1&Ut{0J*-X~W0 zEKBjFowQu~__7TIN}*z-s+l=izsmPoU)5QF7`nt^Bhq`S;ub-ieUNM`IywnljAO%D zYhTtRHYOjcxoCd6UbYoO>%V$aNt^*#bLqRKLCi4q}=xaf;25usZa87w$`RH9KIS5pu-I)Qhtq>)tA_S zXqe$}){HTns}-oLC3SHXjhPtAJ3@4Z@4VHWHky}6ZMjRs+Di+u%s>^C6^&1Uy+Pqbf+Rz*_1oWr+-bZk|;iDDA7xaT<0K`-YT zVd!Mh{OzQZDS{{F^~=Sp#N!SzPo7wh%*97lOEx*>p$irnG1=znbm)nc!@^gA`T z>B|xhoPBKIuHOIVL8^@}<=@Q+xTafR)-zAz(fWr|5t)Wwjzj38s}yP@p_e0#w#T#L zLPBo8`XX7lO$CR1KTc z!YtQx7)v^DsSitjaS+wp~-KeB8HUF4QrxE{%Ja$&S5n#;uzp2GgBPKN+jSz#nomr4+ z!@e2BkZBop!lEnb$uoFn$EK>zDd>c&N2>JnV?O3D&k@Ee{HGze0r0X9cN zlcv>3(X6J~m?R8io8E~Umpg|{-MXM}&}4AY2A!2wveTeOue@~6xaqho>7 zpmgh~OhuP5rmh1N-YjaX%@Skkax`uE-J^`ru>>8qYz`)Y;kZT&X5fnQsMz_aTOf#9 zF13kY&TL(aA1r9joy<2%+-UgWx4UF|@s;TLO@dd!IQ*uUPF|9GD?dWOA@x?St`wHZ zPmG@U`q_!(L#}6>_+j(d5FyO)3uLugxC`Z#q>v+wxc%4krgM`t@$AQ7VMf5u1x(01 zb|DO)20;`kximw=$7t?biw|c~UyyPQzE??JB(5QsCBYpGmvLXbKSLx#Z;}vc%Wp}B z7LvWC^Dx#i-<+cBL`J{`EO^OFk8;W7IOANoF#46l2{~$j()lnh(I6+}MXw&RKwele z04WQ2r;C#%v0|ncR*)srh)Nx?qT~@)Qtuv2f-D+cX5NF8X7916=QL}V*^ri*jlZkx3_bkqU_5Q`^O|O?K1X)jS>MoLHk+&=tH8-6 zIK$xU<{`o#pUcJ8ak`)DR+TYz#p}q7UyBwg$Yzg9*K&5ljiH9dxl3n&(wS_&O+j^Z zak=(R8!cz2q9;9e-7GUqb{iTS_PTa`5r)(&szA!J!tL`DWpuv!sO4DpPjJ_{2^Q_G zW@qurKx~e=?GCRt(jD&LYe%#DYEA7FG=IWbFBVSE8e4AQx<+&Uox&QrkYPFqbuS%hR|e_la3k>I$=V=^pK;ul!zmwv68Hcc^>J1J!ZAo+&83exc<*V`6pEV+5Zh`(skN*e+WN_{F4Q7 znOekzG~v<@75(kXqxvZu5-=gnG%TzT!MpAMde*=%Z`2`X_ja{6*@usQi){kl5IxHu+nzK^bT3Tw9GQN1h(VRBCDkI6(INjiNHnCdz2Bm+(5d| zsalH)>?)zWFRwgK*UTDF&NzNn4$)JSt?$E|oh~LEt$Ob~JwW*TFj)3vta+N8fWXV( zorGk9*r@}npRUA>I!z)1%aa;>opSzE$L&)s!sl0)Q-9w~b?MW}-x2%sHniWGHh$Jm z$YWtRX}a6R*zeD9Q&s474(FAy>r8jQ?IB3a_#E!`_jvs<@%8%qZDqV_$M5Rx_2fe1 zjCTc=ca9BqX=C=gIaWKfpmW#TbfMdqkLZGn#mQ&G3Etkxi9A!cn+v-maFQE!;T)A0 z#+IUI{*EhdV$p@0Mgjg|Iap!tJ$YQAd7PLh`EoQ*;T@|44jLbL0?wx0!bdv#NlRNv zfx9bl8uwsK3Chg&D=F%p!YkI=HtUQZEF56WsT<*w%qfn|Fxt%55_g%i+@>g4vhUV{ z5$bXCtSB~^NaSg>-=_Z4yqJNB;>7qsSn;QTZ~Ck`%m(SKg%DofVt9@;Wodpwx=%qK zJl&V2G_|(5q%14sdWx+8h*-*s>nPL9icsG`XHDBaWqDO&VtQ%3Ex3o4Cb7l9YtV}# z7;%|jX~hp-!%{?Pa6Dx?@UQ*BiifW4=A^o;HN&|6ze8jK z_=bfU(0rrfTL83^vJ|f$ll2Rz?^ldL*PE)iUDgk)*NH=>w37lLzc96HL&n3Gh#3%g z!Mr`52Y8y;FQFTzoEfeJ7J%ztaLJ=DpmEYirnPZ7z!3BH=qMp%9IhGIv=E(yVHDi1 zgftPk_{IDLgQ#JK*~3$TMkc1xC8MfNJnuA0|s7$i~q2+<($_Nd(E zXMpCrM(wt{VHgF?Ah8on?b=R%(sj$}U>WA^5fvn^KM4nMn3<((@k`+Pm$+Ubo;xj1 z1<6dcciVjP=Pi#UaRzqT4;kh!f2T^`+j$UjX*qxWj2t9lUIpST&trk7#fMz4f`Hr~ zyM{=LQ1w*^Y1jgeewq}C%f|@nk@?%y&LuT!wjo zFdD+Rh@YD#L$&iNTs(jAK?V5>P6G7^*}sbq;fXIexYVOnUMvy!lFL3*O^DS7fL&~w ztdNU(oN@iqqbzbc@wkT^&dW|NaBCMu0e!@faN}f`@3NIwi+WKNA$>jU$J#%vIvAdmwRI}O}o#cE_xh5li_9_N=%pQer zC>u8qwwI6O(`wr*=!$OS`jbf7>uo>3xYC zt9{J6W$@$uIM^Jk3q3d;jNual*V0Gz6)K#@d|Q*>R#O@>IVbT?}Vhbtx~@ZK0G(QRpx~PuZ%&YnWksBX>`Z2 zRXNp;<^pMWs^?OOj_CA(e zSaIv>f7cXngSj18v&ZYd>^HVKfWgWwxCAMB9c|)bTp!zrnCcJsNT_8Dwpfex=>O2i z<@+#qe_aO8cfgb2oj|oZk=WCxxb%d3o;f5Cbx5%BT9dY49QPVoNd_HV!r z1{1H{`)?my_sO35TiF83T2P>beV(KsJP`MIPCx9)< zMz6-$j~O2f*pMoNXI>mmC+T%F^ z$4As=O>gGm@ok5h{*A6{U)9*x+Koj1u2e-|chg*m9R8k)k-s+GMvM6T`Y{+^WGotR zez?%(_PR2#_3&&CwIujMqQUR_PxvvdBX*w76Z_jCDf2dXCS#wh9`KUoniJ#d(3w7( zh2|PjHH^|3(7q?7*JX$!{p87{0nIZ!9X!qsSVK=N2Jr4bntSh-rSLfJ#hy@dy!VDs zR_x7t`ZV58DUq~^qHOvMNixzt`GIO0cb|N?e7L?0>=WbiZ(X3z{e1=z?-N|N4EmKLR!ZWa{A=Utz%!mHj>vWFHeV#H_Prr4?w zwIXcg1)C!5h3#h|67xNL0-{+iBityNj4NG za^~iF1!_S_s1m&r;`c96%GI`QfoU@}5Uu)rsNr4JaXN(hmnh}_f>kH_tP`ique$55 zVN-Pv=2(kKl=AeFV*B%ar8q~`e51BJsrgRlCiX8;$~(ZS*}~h;seDoUgU3;*ZV=Mx z|1VL>2hhI@&}Nz;RzD)^=3PGqP>6qtQV{7m5QB_kB0ZD(eocsJV@ph=r%zm9##$yo z;FrDVHM(KeIrIdee|6%5a~@QIf{Q*$Xb|a%xolhtju8UrA2`-7M+4$vEq3V=w3$we zV`8P=0R7W!72e1~T?zlr<&zNEDqs(6-Y&_Q5ZSC+0#A>1c&4K3m_E2Q6vG_qeHozs zcH5PM#I}27u0;>K40FU|01AOV>g$^oJNgkC1kSc=O`t+2iB{rlscbGVey|S|nS$p? zi9O(bx&Cu3an|)C5c@*?icnATx?k-bKI1&5WZ+5`Y^tCdj=D+ma^^uOahNHNc-rSD z);~k2lIOA2g`{x{3B%YK7jRU_F@12MwE5=ujlE?^JwHZzmgeGK``ziJU91iZ(4T*3 zoA!nH+n;a|{=5fn6EEm$pGAop(UX*=b+OX#JyZHiPu#x#;>pd@7}z?fcO z%CAHcp^ffLw*C~#W^qF)JzrLyX;Ua!4iLe9XxXT{Q@k|cN=oS^S>=z$1c4G^Z7uoy zGBW*625uSi9ECy%MO7D_VURNg;Zh0}&y>Q|80w%A(5(GQXS75&+(8FPsa+d4S~ktI`EopZw6OHBL~NT)d$@G8Hg8lwC(FUG z?QE>N8}zVsvFjbO=`@ZVmIp)COz)oSe%XOm+CZGFPJQ)yXSHjf1;4F;=S=S?sUm#T z$@YM4yyu>0O#wcqE%DZ5Tu4JriZ!P_mZQP%v!f4QmZa%$C}&!plo)hlC)`|U^j5P%=Ch&sqGNK6>_`W>@=kG^U5K& z5%tS59IB@F8_ZSjxW#7A<%HU)BmP84exD~aO#AZKWH(y=`{E6hUMKg_n;7$#mJ~gD zUuJ>E%myp?q($l`{hN3EwKehd2MiLo?IRN({CA5)VzYr~Nw5FeBL9~CuPxGbxGL<;i822%^xF582gDq0)D>haLD{i~%|Fm`U7{-+EXN}+Qo(iIv!^bN4)||w8f!MO4%qvVS4K2`A9jq z!S>an{pvR89DSGe5A_Z|Gkku7AlMN)QlCM`XbN~d)^oLrjHShE{q@YvdVq$-vEjaN z?)r~{@aFtXA%w%N^7dvI@8(0N2!!>VPTKU&P8gc*T7umFV0SU!i-DHF|IlvrPO6OH z(*R$O^>LUjZR=%|+sIhk^fkeQ^V7dKW}q?Su>t7aqm}l~_)8O%-@?&Se9r4^v4D$T zGq#z&XEmvFLD;h?*&#QXd(46laqiH)n^j4hcfzxnnD<$C_BM&A3{FdrDoD7K9-W!% z4SSzZ)07qy+Ws~5gV*5G)L7>Q@02+6y(Vb9CKfC7ql^CfrwF;X3RW7*xR|!?qm|sC z%RQF4U~LPZg0MR@6pP6^J4FR)MmGAZDWskyjA@pX-pnxjbPAUATcxLT8Lyj#Su#Do zfx4UrQ;JNV6z)+LW(Vz46z9YcomnS(NsAQch4X@@9EL?COJ1zTS#hqjTvJJL^jqJO zBAAlz(~_+8vyy@;i)(|t!h%}g(z23}^rDKIJdv`}Tn)Xl>Wckz_VS)@zVsD3&Gy-3MfJI3DW zsa3P32B3c6ZSwT(V{#6bk;wIS;HupZ=f;G4P7^`2`;S@UP%G)$=ClJW`1?z zfSBk6m2v9BSq(FhOEXQg!u!S;hZzlWKAO0-X(5;)umNaTW|2#9nO6962F77lWO;>L z&2w*HmUm_q}HSx)QGf}3RP@nq;V>SR30wC(g9E}4IJfN_`|gT#$m z;3<6W{I{<71wt(dZ`t(Lr7k0G<&R+OFi;Uk{`|h`$9JU3^SH9)()W1pzPn2@e;cAF zO_=@j9sY}XY*Han5YBJ^gbn_^V* zs<$9V=*e+qW5{+(+LaS|5wf8;_I6A9LjY5Z4aWPtu>3#dy=7RGecQe(sUl&43Ia;! z&_jbX5`%PigMiYF(m6CpE1g5m&>)Qi%+M(y-Jo;`vo5`#_rLCEZEM@s`+a?fZ*2UI zYd`k$JRePbl93Qgh>ORypk?=xmj|gOIOSVBpP7EGP{CMrf>$KNWh==hksupa| z(vW-~x#LP(=vY;@6pT96xa*!5&?+_#=q@-XHqxzg8gIQe&sF=BX;H|WHKS;E!_C`a z@Sk;NwJGu5h2XqzL$==PnN8md`I;k!oFsYDM%mT{%LLK(?$RkI78|0qX&8tzY%Ft6 zx`-PXa{sVDmbDUWEx7jVjW>8a`+3KP)X6hdf51P*SZqq*k*m0oY2=a0*obpos>VXb zKfhetlvHj~4MRN6tyHy@)lFARoqSwK9KWf^44jAq9=W<|8@apQYH>G7MS`T;3K31} zNmLUhuSvIL9GJ%vxK9e@iApuX6h?DLk4t1@>@-_}ZDszNu z{f^nvrB1hON_B?Yu7#++?x+z$FoKj#Q!#30+|C_d6a%q3nbjG&Higp!4u2P}Rn< zC*t;h`iuK6-*5Kp<^*xY)Ml8Iah&(E?Ei|^H&}V%B+$!Bbr>5Jy+XV5sb9psCRUZu zg6^KzS6K+~;Fnvl@Cf!B^g1WPf3MQZr46bhex=q&uY<}28JnlWYpGl)#J6-fEfna(G#Q;P8C@CWCL3d*7Rx|gxg~5 zwRW|eC?5>=L^*R9L;W#!gly9@9~zQd38>r5&0NL~+qh8holXK?g`2 zk;bI*8jihJtry)OwZab!!Sl{!XG_fIpl9}2*%GNTqdjd-_)x&yNZ0vrtH}&NswR=&L z_eIE^<%r`8Z5nU3$OcngTAK4*UoIGvK@|4FCo?F+J`=Ddru6Bmn~1j!U9{wO_-dTu z^7Lx_qQqUgL=_?3f)pk)uYx39wHeD;)f)l&6#d9Fx(G{eFNROHxq^iW#_7)rGwo-m z8PeREycjcGYGxR7oB$yE*^5P6Y| z5Ody_+*#(rob;xW(mY9w4oiMfU=vG8#oxtc3Ib(C@lEM0m0FW5yA?I-1m)FD#6E8; zAKxJDs)lHG%Km7nyD&7_fCGG3kBJ>N?zqF&u#jyJgO8Xg!Vok5&5jLEp&4%*f0br% zG%q*#aI_pCn>kv^fjYAdYbS%V{p8Yz^DBm+g|p*1>W)^-QQ^S54&wT#cijX*E$@5q zeF%SbJ&aP~iXn3e`Sq2&()ayfoF3bK4vWCa5AlvSOK3g$lHU@n$)tp&%Dc_^q6(2H1wGB zXlFlLa6Q5})GvDCz&sX%F^0fs4vFLWaySpnb0tn3bTRIzo?X8dXrA4$4t1ew+(^u$ z0B`0;88vRD=4Cf-XVfkL2gAFlynFKojD+@zRM7Zl@8qy<6ovC79QkMN$!NJ2*9G^JNbNz-Ix z{}i0At504&lU0C@d~irwqHudEr&##lV;bEG!%%~i3Tgye+-=Ts(xC8aUp2vxca7Tg znY=FXXi7-;+Do@Ic_YwhY7Fi=t>ClQrjUeB$9^?$ds?n?TLEI1N{H2rtJ=RabkNUUz7hWkqKA^3Eb-(h<<_D@_Aib zIFupavi-f0dtE8}RS*HCLS6Alm{=@}A+oMytmt8)WR?QFbfS#Cz-%4~FPo~wfd^75 zBFc5M%+RHV1BktzI>!}c7R3|Le6#0~8N95%afYK)NVnp8)Juj*@H6yLH*R}9DNr%X%6(FUI-pHGLI z$MCg1Cbac2 zjuNndilcN^6If-v)1+vv+sF;x>{(%?0fv|ybbaF6-*ubdkM)=>3M|WC-yszQ&G8IoiujxI-Rvf`JH73 zklbu6$8vaItfxZ#FN-VDH{1K|2j0IA`yc_=b;kCfn~9wq4op-$<*itnuUKRSAMl?O zU_W}AgvTAnNbLI=Lc=7%e^F^nDzb=&lOl2AP!$yN<;5Lin$8D^{9uOevD@m!9S_~2 zg4m+(5tw@>JR7Z|1GjvUb1s&G{;Uckzj%2cbI+~)B}gV*w*1b+#81UE+`m3Rd~>n$ zn0oNlsw3~W(2y|}_ps{?hg=;kYo{>DhQw7z-w~uGC(7;R(<+T}6nXi4rC5^lCKjq; zOG^o?eH3dNiM7Y2BgfN~m5dyTGm>5>O zm*^myWjZ^7NMcm(hc25%-co+(!cd+oj_r5pZEyl?DBniPc1D8*oZ>%JU=UcYU&6B%7SS%oAH%7Fu^ z&zybl#VCKwX)6cCQQ0DYVST&hGRFs;`-={DpMJ$-mK+ixJowo%}U2iD%j4BE7TGFQsy4?E)k(#n(FQMSI(G-K{3yPv~VxFO2VGTcGw z+JApfU&bjK*aOM??FEtkYjpo8W1g!$R|O5EOli#Xm^WN{p8L(g$he>M3AHArycWsm zL`d+-OUo>IJ&w`InC=r=H_F#WDx*`$xTo|XS+C8UMyIo+PZ^Ub6|7=MX9|K(nG3QM z>?%iRE4oiv;gpJw=+QYi?iqVemZI~)==WCXGmZ&LC3ljs`JUi2uC**BZ;r8rq3$!D z6G~-&m9fPM+;cv>Y~?_wu^;o&=lrBpkkHt%rM2L5LHcY+WaZfMUiY~$AC(FeJ+^X! zdm$>5t&(sswtC$leIc$%^(KX6d<`$;Lc%ipO*+T;I#JJslpB?5w#xVhDc+?_NVaOO z)A%N(%%xm1m0Dr!_!fQ0#QUv@m!sL~H1X3==C?K}wN`KJ#4pQ` z-@5cUTF6RGy_v80-1kj36aQJ5cI)tujFWf77%wNRMg3pLAo{TsZVg~*{jb7I9uQ`5 zO#VB}#JrG5ptz{{Pnh}UVmTPV$uo zbVX7srhJ~Nu^B5h6h3B~tADqG4ADK=`3{7cZMVN+#^Rqaqu%i+%osf4`V(gC|Av`? zyUgYbgMu~dsLxU)H*8IHwvG8JWk!?@pq;6zfkLQqGkA0c;j%Ls;ZuLGC}xO54f$?) zu-u=hA_8k^JR0oGQOsG06Fk}JuP|S{(HA~DK(q#7s4;pX7e|FddB%&nqE}}r^IbU@ z9kJ`H(7lyKjJ7xi<9TuW$A@=!<$rv%Z7e|ZFL=7#!M-DVM@QJTygHO){LP~eqO&^Y zLoaX3Gvyj>bbq*o4I@k<=BEk-_LsPn)O1EL<9{XsQ~E!pi57vab>3kc7Pt>(-=AKI zx4ip+E>dcJlP2L!WI=u$_Jb1hBpqiy`b143TZ_e`$5OGSqaWxNFw}}kHm=jAqCqvySBRPEc>DUw`$u4{jOUUaB~(B!k^`c(0#z)r z%Pg05JY4nAa`Zxe3TqN{iwl5hZswZHcyFm^LA}$nNSc7xh88$uUy8o5+D)H>^6V#U zw+Sbwo$X(tTB3wn&^^>7275@79^WHTQIc!Os7j9d$>d_N-)SfVTGU}KU{URSxl-Ey zf;lVp=Jj@^vD($X4{pHk=R+#(vZsp&%s;btIP`9A%I@645s1fn$Vr1QVp4j(A%y2V z|=+M72a!V8ZJc_>Xcsh^X>|sMzk@krIe|knmIMiOABdTCrq(bydiFpO=JN z3|-F_Dnh~I6vQsm^^}MA---QR`hf{#lJ0s?9UdV}^YB?wH@z4v0+RF{*X2piONgqc zrf<~U*9|@Q-A96qzneVe66hsJ;R>{NH6bT$=*2&fc-XMsykcuh%pWJyV|>G5FQLo_8B{&&f1o zGUi84BtLX3Vl!lssYjyW&MuX825hwaihUE#@9U)vK=BaH)A z4bXHoe$t~Yy8~DCayvGpw$zp%<5P1ZX9yUkI5?G*JW%~Abxjd<+HXfN~nRjw|0TEnf zRE-F;nUxex_ZU@HLno*#Xy;m4$zy8_v)HWqie`q=D{HfrscobN+C~yi{R%}Zeyf$u zUIJm}+=u<`Szo~qjG;S1_M$A;m6d&FS?fdFwF6cVs{!uA`i6Vu4w$%ssTJ-&ow8 zzTfp;uJrZaqph)vSE6PRR{B=t#_gN`oQo+j1-aY7-BbQtk3Fw%;K@pjb%zoax4qI} z1|N^-_;)T|^Aya`_m4dN-<5O)&HGTac`g>e2!%w2Q_!ik<=!FKHd~L=T>`0&vwyct zO9}Ulu$l9ky{vey&;^LzlMw~+wYF)mo2s%3=Zo+tw$o$0D+`PkO19Fs7n$onrlqhI znzQd{tH(`(Y~fC>$}PGpm-H=@%2n|jJH{@E>E0W*nnd$kUp>pF1Wb9J6B(qw2Zg z-47pyiKbAeCry5#&S#1XPV#3>2ZkI0Q>KeERGux5+rolWu9h}xJYO(S?Z(6^u2$F_ z&P~q0Oq^PtH~r*AE7rD?WvsZFcO_~2gc9ia_ucLDQLw35dWfT9B9rXzL9ECq*M>9pW z((W(W`Ka3tgdxORRFxGFh6YY)W)XkF(3Lw3AUl%#jkN{cqi*zR__dPok=7WMY5Hq@_&q>&u1^56qY99n>mz{du>T=DH@^U~^8g?_ zHwOUO`2~<2@jql|0w6m9Y-&CSRgX}_w~wuV7_a>7ROG;l%ZmZ`XTJLp?EAV#@}VxT z4G~{|@vEgU_t$~9u;1g}LWNQW7SkAbM(gDAGkG^GN845`ncd=aW}=M|iL|7R5a^v= zi8H!B&yAC2@Jf!C*e(X34p*9aG%NI@$)CJ%g%-BS(g;{0%XSlhO|ou$c_R)cKiXdqqh)gpWL*6X;In6 z0FWIiVnw#tUMgYp8f0nz+gfU|dwap75PK8&Xmff+_u+mSm(>-AA3;yd?$j!~+yX2>bmMY8DkIu9hZ67pDZqj!O61lCX&RQTQ? zkEs}jO=np0O2&1>mokReNP)vadkivw=QjRMS(#5?%eX>oQZJ*&ZOX!r2ocKOPMp2oQ$UBROCiD^M3f z&(%;B$i=%jW01yrI!=$*hLs+%cUNvK@%ybpm1ys6vPzV9FRUH)ezzt-$!Cvd5$f}; z=>Y0{&{j$4`x8W>;yc(&t>SWsTpaX05)vozLyxMExSmXs#Q2@cI-&hW7Xr|(=gZ>C z{ugRFvHla=m9cJD`%Xjwzm3o;0n?|8Du_Az9TicG%h4hR`uG)=5y^)SJU>jtioQy% zRen_Tet}!o`SmU+Kafo64nB`(9Fg-+)rY@-Bug@N7I;<#V+okv)nt++^B)d*9&Czl zX(K@n84kVQZHnVo{ECWvI1C#%7lR2d7N=Q2haXFs{Z85xV}PL}HiOJA@|na~{Lzu$ zyUb4OY(zm2bks18`B8VV2safvx?9Tp=lG^Dcpnwh5M;i$$|Nk*hJu!NnQtH42#G;a zv7d1)HgHP>C5=#VNm9V&t1SUp5Gp=A$YP1^nSjFSP=a^Y>OAjjen{s~;#(a0Szwc_ zTHsKUp;W=7h8Lff+EB7;P{Ei*Bd;FKP>M`f!LaKEkI~^^svu6`P_Q76S?AySQ&e(&Q*OEnT<6a!@qXSvL z0*jhg8$sT=1KDexMGeOn7ft(raVmPi4d!XdN=OM}Bn#bO3p$`YXbOaVx(lxP0 zE+cc{oyFz6mn_g4WL^n&Nr|)&OF|$rKTEQtP{W%!MGaYyK=YD-KI~QJP#rs`n+AlH zek>!jq)3bi2_favP{QIX7H2N~k_5<$G@6V`q#7EcYvV=B7N!23cEzQ36MXOCWxOM$ z+1(1Im4OrV7I1Yv70bz5R7r)S<~O}HUTw_|J{VI;S;p~fY4h>~ov)_4iRs!@dxAxk zrQ~ioFbpcng{Xe6%JzxQzN}ADi#BOq&C11cX28s%RtuZGQfNmvDx6HA=$h14QMh=b zMvJCIQ|)cY+UyiY(gGpf=}>KFuOGIFkZYGAbMhI8`!U+zFhCA^|D@pi8VznEYapyP zea9e3{)zNd44GS*V%)A;fAjb($O8|10VnxPZ<+GI>#Eksp&+$+Z%DnHGiuTJ*L({czvm#>Qtt!^{KNQ$Mw6vdvT6dkNG-F`V}E_Oe)uV;NXLvTpF*!l7D^CD4W(_wvq<0oXIp>jE< zqxKEQ6kyRXl||EWAAu8UEzxjoYO~3xh7($M(FkK>v*`?hQ^pk0Nb4N4*|LUHR)lDj z)1uk;W`Q$~NzrHzYV(DGhBKa1(U<^Z^B;2p=lo=1(6Aiy<(-CeVX#S0NHWhe;{P=3YVt}U;I?U8|48+8F{~3|6bdH#*(>(#M1v?C7C~1M>O(ZNhX0- zK5kPF`9Ddf)c1m;@PCpFlXSLN%zrwn2l4;UjtcL;J1U3Xza5qEKOL3xKOL3yU##;} z;V;(leef6SQ2fC|y zC)46D)*%D1j!Rfyj^Y`mU(?C#M5VoTmS3~S=zMz=X7Rayi`Ta`beVCcf2&XD-r~Rk zML-+yV+T7<83FA9wb$2-KeY9J;h;W7$#eb)^j_-s(#NbJt#HCQCrVz#3)S>-EV7l~A%hC2}aS~BjI(f>`jH84LCgWVPo*`7t z%#i6iOJ|+zwk|l9<+#0Nt>Bw`vGJJ}59p}q{&ZB&|8!JO{&Z9iUn^`C5a~v472dH$ zZWZBp5o{ObLYr($3XLM|N)v&ODi269O*Z8e?ttKN9AJ-J@GmoMSO&>EHezQ-!2-5nWya0>vp|wL z98#?GIbA3-YP(DalFTxYWIV7*$_+d4^~2tEjJ;N z9GfX{Wa*4Sp5VKU2PrF`7;72NYftKJ07=HfkLc9EES6Gx#;QKVeb&BW=v3FS-B9bh zGY)fpiUWb3N0&z!CSqe@YJ|vBJCKCRa?zR`#<}dpDrUF@HUD;=8LuL8v6#$w+iP9L z0p+Eh9nhw+nM(m+9qBA+)0@)Dw)Hi?CJ^_o_W+c84-pXUvtP?IBXH0NC-znDBx&E+ z@9op_J!E4?ws7RV^ze4*K@>OFSjX%{I6cO zlZcNUqA{-5r;0HFH<|}%@yVO3#Yt?YSCtQ{K9~x>!2VYF6)(HuBe4brF6}hpuG)P^ zvX&p;xr-&5FQCqpxIb=lJ&|lTs0_vzd`WOOx0940KLixKL|_>%NuDws`m)>fwp+0T zmCrn;(>Q~y2J%a| z?Xm~c>AI}?>$bQY9S1X>;#l`|GjlnM4Q3KbS$B@xa=H@_X59+1ZeK0o@Lm|mKJK(` zIo`s6{9yw*o7gsuxGbPR|AEinC2bIo?bt&h17C&%ZEERC*&?Y1a=SZis(80qq5H_Z z25j33X%^OmHe`Oeq;08&9ZL!nS@1cKxkO-7vb;Y@onMqx+1@TW(+pWuI?Jq5f~}!I z3fGjRWYK^UFc)^Rlqg(3)W}0VF5*U()~2&)4&+Z%kl~euW0zGlZBKj&Pkv)PM5;SL zo>X`9t)fMbRX+e*TXf-5O!M#5-+<1+MA_uud$0=QKMRTZpE* zMSQ_@AGoq6C4|a~N4Ry!dD0sYmQKm_g+~;ib%iHLi*I$amLXs`rENv3#ZEcUQMuFB zwW>Mh0Uec3H+xIZ!`yCb86QP)~_}ZU!w;(ecd-S zTwbaoRAjf6dgk4Jc~~fMKGjd{o$L73@%Fa?&MGA!C2 zH1?P1A39|Ge$FDLgscJ>VcpwCMyWJ69SD0W-xI4b=!}^q*<1*X=43X&;! zYK1~w@Ow;VrMCZW5>quR_+*p$Sjh7uVmD8bY^x8_1Ws+s z%As&5Qs4lOA&+>?BwD#uZ>Nk`O27w{Dzr5#dndTePYg^Q$n{*D#xe^dDqh#_94rY< zac}Y21hcmp<6PDBiXp5LD|S)b%`>0AcK57}1%E*x> z?lq}Qj?Adj$g!dH^%G5M*~!?E6U$xwTPC=9@;YDl$v?irmHvUHp~Q6S_jI4w;m4~O zV6FAu3;$RDT5COqB?aJ{f3CFt>#+I%tC(XBgr2Ma|Kc0JpI>Wm@p80X z$OwRMvgKEx7BfsVP_Eqml{kY70W&D~!;)1^S?rRPgg1~0x&%pC+ch1y0d?nTU;S+AToLA^#)hkp2;K?*9or z_x^+){6C=wOI~3sFU6<{z&BI?z6tUt*v;F~-k^yCAf$A%$i7r;06KBIdfMK^>u)Xv%SPT>fx-2D1sAuX24#>L|C^eziDuD{bt1HEr`2Bji z%AnTmib4$oEJVz&E3#Drf-Thy(aW4Zt@O3jwii=gUq2zA?fuFciTV~jAm%V^2jGt@U_F|S!{e?}z2o~r^Es15@SCc@_{bOdL`5A$ z46q<7i_G80WSxx$Rl$serUar5okWQHK^)~Kg!BSkwtjP;hFJDHyxQF<$?&-`zue>mmzxK#A(dRc-0(@YOTf6n3l4sHBq_IZn5zNJlY04X zzM6Njj}7Rq!QWan4;@o8^%<5B-wZNz zU}}VNs2h*zBCn3XZ7}3Ra;@>kxVF#%9O4bCr}ZRRQ`Q)+s^!M3NzJDzFUP0$ zCb>?XaY93Z1Foh3cU9vE(NN;T>wHLNSs2~9RcL27_GR<2s`$xc6(91X&kvEsU&vWh z0|GT(@g-|07?wh^k&LC;ETw8a5t_g1G&N26%D`JJS>3Y$zDZ`V@Ke__1@KLiMTLFf zPWkM%R!aYbk_VjBaHlk(CG;B*D_D(>=%zc;ajOg@*(wR_brP6P6=JVR%_(-``(?k? zbf&Xe3I@*5yCHPa=ih#oWYvrIO_48>A+uGqj~_qmhY#qn+cRV9lVc_(b!)QNv0TdL zaG;#;T9c6un!Mj_et{c^L_p3j&*#>(3L2;aLGYv7O=)5J}-wRnwHl25D5T=G{hgnlB?oXS}l(TC6;1tJM?_kEg+D~Z;>rJ_W7=EYI%=9Ud32-wX zs=mWzb6v^0V)mlkJ6rkl>%I-KuoJWi<+1%^za~iv@``X2OP)TD?F4{toMP%UShL6> z_4}ir5M_m_+gqba=TpOg@EYbPXCTNM{Lp zovuE*p3*JI;0Al0?J~NNjVr_y0#e9L9NjDgsAV!tp|Eyz3l=QIRsd2g9UI+7bPIvt zFh$tW=uR81FlP@)spiqxZm+a3_XJD{!85jp3Kr&F11UGDkL^!(3xiK!%55%V2Mf3& z0(cyd&cv~w>(P(ERWFI|zPMs=jr(v%=>9GL-Ic@G_Pe699Ty+|6mN zKYZdpvE{#5O$}{-z}CN6&0X~(^gpfB@yfs_ng3~>MB>H%@rhaU{^Jwl|A*D&{Noc> z{KIM#|6w)m|7JCuiho&6^gpbI`mci1{fE_L{$({&|FD`oz$eBR{^Ju%{_%;M|N6u^ z|MLy&bkEYnyvvtv%ft0C9@)w^ zKhx9wm8%er_8Y^?)1&5|%65$I%?)0^-n;8?^Uw5zcZxq7-Ow$EQP*2Y5s6RhNGa11 zuob^F{LS>?7EbmZT$PYXrJAJ(X9)n^yu^QH7QxipKt@1VK25_vxoVReEs`)H9m7Tt zoCg&pyO@Xt6Qt2b%Yq|F6D06C=@KDYf}~0OpvJsp1MZN51Zj6>D>Y+px}H$g61r1QF?bB>L3usiug&RIdjA;vfrVe2~coCm!Zujjq3#A zj!ice1HkXM0gKWOk#bJ0`}0wi-k1CKM(sC|x8HqTAX2Jw$ESX4*h!!WC^#rlLN1qw zD$xc#WRCy^r_*7u+KDQlT)&@YMb`OST~;*rTb9aQy#Y`ezRO_YkP?qAc#%*KCFBAq zIKW&&ouwoRyY7gr6rkWlvk%poLBt(&#?>AH3eE?^7`U;XQ-$`F(F&gXv}=qq!oVtL zPixk$7Kkl&twi;@&geb!T$4jv4>z|1j33>C6=>VT)sF~8PQUEf0v4s^>PO5E7xcyvX{??l)*wiP|=MD2RE@QBF&TrO6nZFD_n z5nwe^0IN}NCuyHJMCZ6&pSl37#`pl;K7Dg#JOi+rI)K&K1FU8qU^Tq}tH}pgjc5H5 z7c?+Jf(oA+P;kJ2f@1(EIGZJR6W+1XihPj(6dcvGst`@nmxMSkq@GSzh45>b600;w zJv`+M7C#2&G57_f3CZFE<)Td2cB0OVnjf~;kBj*8ag5*V3oiL9+R_U zZLu>Tw)mdZ8ex*OUoG;zaVO<9yv?UA*$02~j;~IiWI{{2l26r6lUMJFo0e=UT-Cy@ zPKTOQOFn>4%_x~yn-Q+5U=3H(f!AqrXlg2{@Tsd!)M;>JzFc=M9UJ;pSCoCl{6@-J zqMwKl#E++`rb<7aS6Wg6AwsGN@=a(;@Rf>}uoTv9mzJ4nG8z%O^hdK`g*9b{ zp$4gPizj3r&1G>vd;43K$T_?o1TH*+ry6V<9uTas8b1j|v`Msb_(zZz+}lrOI+%F# z0WGt5O{^nvTTA=nuZ$nJ_!zsOi7;qCwwcEw7;mOt1_eoY;=Vc$ zN^?@~-Akk_TEvLKky9EH`ln2TD=!s#@wjP=#J3yhgPbT=cG z$2z7*x7v*gk}d4M(XoHQ9{{3Esm+`K^44$(&#}>ip=OCk4%)Y&c1$T=K{1&pa?jB?cRZ@@Eq;dsbx2Nn^TYv zd;rSQ$XdI9n0EEOM!8;nj`Epz-ogA&6nopz(461VRsEq@X)86)&y$O*#a^QGH}~3} zhBhDkxZ?!t{J8y-5Ykda8cW?x3z?7F;av&A61)bZe(fc+tS&5{oD<53Jxy5zS|^T5 zq=SIV^GSm+{tZ)xPSbt*Fdz9--zGHDp=v0=V&-Qe-+ z)G#i9(c%Y@pr7Xs#S zmO}E{Sm_`080q$7;;(reb;LST3z)~PHtrRGc|4DZQLKl}m%1Em&ksDYS!nx!b5HBS zqiU%uoRthR*idaA7)7m^{ak>1ZQ#?29%``hXnH7HDyrAswQg%nUn0+FXtrp3vdVnG zm%SOWmr&=lvoM6uNrWNyevJ@~z1u^hvwt|>K zZ5fm;vr8BhZDCvMuN~T$i{##;Y^`P87D^apy!N*?r2KA}izPo2+u2BjP?g%`Mv^0K z@&d&ON^%k)rPc*0vk|t1&W^~EjBNi>tK!`B*LEdl*^#BGrLc6%GMF0Xu6?-*N}((P zv7lf9YdY<>ujIcWD39tS);Fu}wF`e+Lkt?&{eTiHGp-w*m2-d}8b($4%sQ4C)i0#q zc5GOVQG|J{XO|f^ZR_(Ep0PBm1rcK^a~3 zmVkp$zl*pQ|9y9{vQo7znK7GQFS$?e`@T#+LT)RXSS8(W42q%7NNB|%w>hXiT4#`( zLe^y{5E!E}5jq&uMvLv>xemJnV^oH~7?t*@LUWJnm>n=irKhH%tTmw(72-B&;xKd) z%Y!etHnkrbLziMrF#_i_Pcqjm)cSU`xnc*u|po82e9us4O zqOTu0t3G0Rn&8kEzak(X4#eqxaf@$SoOl}@bcXZtTKcK@!zOg_j?~Lb4IMGENOZ_z z(91K6Pom^{=+LpQm&dNtB2+Bsus$4`Uzp&hA~ct%@MbBR{UjY>1|%w?GKgj;|C10) z3Mw+UYk8xtUl3%4ib}>YU+vx$;0B?h!==oZ#-9p+FNb1$f@l|3b@+vlLr|wK+PULT zV6lXuSYsTzDcm$ZNxh*sbt$^>$1}XLEJN{fL3AT@&v+Fs2NQ(5=uo`6JP_nyA_orr zfOHzSTKZrTtrUH~#tfI1-C**QAo?DQXIy$hgDLmA=sR6?IgJPgQ!&^K?ZIgrX0rpI zjwBgcl4d|wr2}ajfeelL&p>wG1L<>}42U{ic1MMQ3^X=lZFd@*Gx}?+3M&0@pZB3O ztq^G#6*3o^&LoqTKN2Hbl1F7oAbXo{RQ@Ax{%hu~91Vq%#N1;hwt00WjW*q;bK>V?oXIs}*h_TSUv{(Tip}xqg`38tRHcc#AmTD7xZf+WS z^LC1D-V8OsB5O0l2;IKANsTXj6%{_L2Bu--jrdhCclsAbN8Ych>EkLL5?M`zM<+Q* zQ#1o9cV&so=zH5(sv~bExNTJ3 ztl<|h{DU|9TZ&OVYJk>g*JSNUI!4hh;Iq~@DTg~5^BR}|V^p`9VG&6_c9ke{+DU7g_pXjX+?R%ZoF4z`m*YCBe_*R@O%%D8P z&W5!7OfweGj#Krol=lLrcz!tH>D1wgsRZ`8{TKpyijaV`gP19n4m6$`K7#Is)YmS# zS?W|%YR!e+rdY1ogEs{Vb4Awknte_26ykttM_rJwY>a<0;z8}iq}HzZtWCp!>kzRU z7DBwV?z)`0{CRPc2Yd&t)oHM~sJ7q*l6QZ36JXPjA#xZbq+QgAbt52*6F zIE;%lb4JZz7~g79rYDnI&oy2QnWWdM?tCW~+t^2W_D1Ar^Vlo^vW?or(VKgIP7>vRoW zZJ|j7!`(8T+MP9^qH>iyQS|Y9W+r?v^>sbGnz43w^QG_%x$UWWzH+Oz6b0?LqY|Rh zde2_pVlD!!{^xefitWRq3 zr|G6{dlPsRdi>DkF!c&N8!BC$l7Q_qebmXB69l}-sy=I%p2pN_u+~0TcawIz|hkvq5|Gq~`E!B%2{>2ykn}|L~3VASm zDBAs-gpXPpMKW?E!#f8|i4)nozS?;n5d@S`x9otc-c@pba zZ}Yz?;_%-TamEEjtn-^9R`{DDX8)Tap17ch-T%2C?*0GM4?q0Zez>aB-1~cBSQjxA zeFTp~Cv@P%usZ<3qYo%zW8mT-UflaCh_89?QP9IN<40HzuD+5Bp$h(BphfWTX=d=m zdxjrj+_{4@;g_4Q|A>I>GYm!2t}H!@79y@9is9%mn~T$Y^foI_R+2X{UNo0sK2cWj z1}#FHG-p0aC;0h5l318I-3ud4_l0C=&U2a+JJg)XJEx9igBY!${JiIm8_V?1fv{PU z1j6Qn#D%aC4`o|n5Q`LIS{8|wx5$5*sLKcX;X)vW3I{P1=!f%xe)t)Pp*#UaoC;zn zQqzy6r67hf1?

WwiFLm7Y=N(oTJ@vW4WMx`A`Aclef_9hI(PzJ~$B@jbhwdu6> zo$^TmG1L%Udjs?dqpvLdxT0Wnksh@tW$WgX1v(gid-n0!GDl>*os6Hbgah@qrF z3>6L78xTXi12Gf{h@k=idjn#qNf1LVf*8sbus0xvq5$konVV^xzKa~?utA}O%cu$H zhih1roX!p_1g}F~tTB`DNf)Xcu8Fn_=iTH}K3Z4YzN_HMSE>Y4ZK%wInO3=`MZ!)h zCt_uy9#1DS3%I|1s})5*pQ`YsDmi1P)ooccHHt4e>!6met*G9{W36;H*JGV$GRiZh ze3LC@qYi`P_0vTck9X?>ZuA%F4)$oJ9rVtq=We!$!s)Xiy=le$v3q>p2Ty$Qg}P^= zeH{-MRwI0l1WPbNJsb7HPAA)Ba=xd}r=x}Yk2cSp&d=gWFJY@AFB9Ccyeja0h~UH1 zk_Y%sxP-S4s9(q2Q0jR|{N$ZFx%>=@Il-i0?q`y%cct2y0*x>+mfP zwQODDtO|)mXM1-&aozi&u-5O1y{@JcI;8d$tz$?<7h5kKay6LLz~E;m*V{Uj{1t6o zd!HSABeWlq!Jf4cZQF&=Xj5ZXJgbLr+D4aa(JVrrSHK;tlf<>?I#JI*JC|Cf4`?!! zK&1;3IW6*>G?|i6(%HyTvl2p07GJ1L+90QCMY#r>DN5$eUa4`tiUx-QR5p%?%cyNv zofC$VjewLHU=q~1si1PfaITlb-0IM4D7jb8WqQ*CYCM||d5=Uc-9;xgzG0-i6S7Qu zlTb~d9-?3~$fb2qt}2uV{2a5rGL3T;)u+*r7Y0P!>eu$*qOQmn+K_Tp{6x689z; z*PlvVoF}A1{vu$dGO0T1gE<+KQoNF~6a)fdC=1230)~P(5JORf!Eup;${>akSuS|r z49+k5@6j9WDQjwh7;43+$itr*#85*My~yG(Tui!RABJn=emc_au1X&>jWl2p=LU5% zzPvY{UBiiRkMdsIp=Q=tW<`}MXR?@l29+usP^sFRG8WSsXrfFk*TrJBV5e5&L%OII z=vYhW-l87^3+JfP)YsO-<>T5vpcN5Etaemjo`xt%t&ze;EQ*Y7;f$%OL+7<)6}Qey z5m@z&{EftNt&gh)NlH_vHX@Z|wA<7mhN5`wo>V?%oB^x7Y-SrfxBBrQH>pmr(YAbz zS@*Q>Tm8Vyrt9U8)L42lUq>JuuL(c0;z%Vm-1E1qApfX+gXCM|_spMmPr9h^qGg)C z?s52tTe00)L^SV;*jLN4Xc0BFwX7LzS-k9`B(0Ze{eXPp;l#pD9*<}<+_5+F(`J9< ziTL(igtIQmcij&@jG7z1@|jjl>JG^Eeq%2Rb5Y>?I32zg9O!Dl0DuDQJ@FIG3+v&n<=1@8(*tns+#=Tq@7cZd|kTgiI2o&|m(pv8!H@b_-N zX#PS7QIJ4u_3o(S)DlZzB>FsiclE_<@52=&hf;d?%mQmkjWLpAHNE?G&9&q|f+MF4 zo9>Zv97`GiYe(JS;cpD*(MeMXVjyP+2q3+S8r3kUQKhr=`5fbnOuq^`>__{J z<9v#OjHs7g_PcX*B^-yE=c(MKWpzVb7?JqWBi#b8SFdnM!T^UumCKOyh$h1A5scpD zg2Q>FANZQ)>ZRFW&c3C`8nEgQh7rQVjH)rb8?Q5CWo?4y!o{JC#&89^_Spn=X?RYY zpvkhal9nVG$Po{62Lm}*jThp~QE&T`b*dQ`W$i8oa(G1D7gD_nR7}%frR|!&4|L%+ z%Xn?z1X45kau8_oT?ATm7l9T52(;eXbeQL)`H-4_$b?E;!cFPi@vzu#4jd&@>pIhZatxDzCIzPsug^mr&`}&?)Bbju=*F(l^ z$X-@V5nQ*aJdKpG@mWaI(yLx+1WDFDGknORV=!tCe&ZI6GzDx3?{+qrYf^fgIrM

!|n6cHL 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 literal 0 HcmV?d00001 diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 56b5723..2f0b456 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -69,14 +69,16 @@ the input is merged interleaved from both sides, which increases performance for random data. Characteristics: - - *stable* does preserve the ordering of elements which + - *stable*: does preserve the ordering of elements which compare equal (e.g. "a" and "A" in a sort of letters which ignores case). - - *O(√n)* auxilary memory usage. - - *`O(n log n)` garuanteed runtime*. + - *`O(√n)`* auxilary memory usage. + - *`O(n log n)`* garuanteed runtime. ## References - - https://link.springer.com/chapter/10.1007/BFb0016253 + - Dvořák, S., Ďurian, B. (1986). Towards an efficient merging. In: Gruska, J., Rovan, B., Wiedermann, + J. (eds) Mathematical Foundations of Computer Science 1986. MFCS 1986. Lecture Notes in Computer Science, vol 233. + Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0016253 - https://max-arbuzov.blogspot.com/2021/10/merge-sort-with-osqrtn-auxiliary-memory.html """ const PagedMergeSort = maybe_optimize(PagedMergeSortAlg()) @@ -88,14 +90,16 @@ Multithreaded version of PagedMergeSort using Threads.nthreads-times the auxilar Uses multithreaded recursion (not multithreaded merging), so the maximum speedup is limited to O(log n) Characteristics: - - *stable* does preserve the ordering of elements which + - *stable*: does preserve the ordering of elements which compare equal (e.g. "a" and "A" in a sort of letters which ignores case). - - *O(√n)* auxilary memory usage. - - *`O(n log n)` garuanteed runtime*. + - *`O(√n)`* auxilary memory usage. + - *`O(n log n)`* garuanteed runtime. ## References - - https://link.springer.com/chapter/10.1007/BFb0016253 + - Dvořák, S., Ďurian, B. (1986). Towards an efficient merging. In: Gruska, J., Rovan, B., Wiedermann, + J. (eds) Mathematical Foundations of Computer Science 1986. MFCS 1986. Lecture Notes in Computer Science, vol 233. + Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0016253 - https://max-arbuzov.blogspot.com/2021/10/merge-sort-with-osqrtn-auxiliary-memory.html - https://en.wikipedia.org/wiki/Merge_sort#Merge_sort_with_parallel_recursion """ From 72a95501402b7ff0262ee08fe34de00424d9f243 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 14 Feb 2023 13:37:45 +0100 Subject: [PATCH 26/45] Bump version number --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 707065d..b48f8f0 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "SortingAlgorithms" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.0" +version = "1.1.1" [deps] DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" From 47722cc3992ef49dc0121ea63fea0cf4ce84e1f3 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 14 Feb 2023 13:52:59 +0100 Subject: [PATCH 27/45] Add extra tests for stable sorting algorithms --- test/runtests.jl | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 18355b4..73d327c 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3,9 +3,12 @@ using Test using StatsBase using Random +stable_algorithms = [TimSort, RadixSort, PagedMergeSort, ThreadedPagedMergeSort] +unstable_algorithms = [HeapSort, CombSort] + a = rand(1:10000, 1000) -for alg in [TimSort, HeapSort, RadixSort, CombSort, PagedMergeSort, ThreadedPagedMergeSort] +for alg in [stable_algorithms; unstable_algorithms] b = sort(a, alg=alg) @test issorted(b) ix = sortperm(a, alg=alg) @@ -73,8 +76,7 @@ for n in [0:10..., 100, 101, 1000, 1001] invpermute!(c, pi) @test c == v - # stable algorithms - for alg in [TimSort, RadixSort, PagedMergeSort, ThreadedPagedMergeSort] + for alg in stable_algorithms p = sortperm(v, alg=alg, order=ord) @test p == pi s = copy(v) @@ -84,8 +86,7 @@ for n in [0:10..., 100, 101, 1000, 1001] @test s == v end - # unstable algorithms - for alg in [HeapSort, CombSort] + for alg in unstable_algorithms p = sortperm(v, alg=alg, order=ord) @test isperm(p) @test v[p] == si @@ -99,7 +100,7 @@ for n in [0:10..., 100, 101, 1000, 1001] v = randn_with_nans(n,0.1) for ord in [Base.Order.Forward, Base.Order.Reverse], - alg in [TimSort, HeapSort, RadixSort, CombSort, PagedMergeSort, ThreadedPagedMergeSort] + alg in [stable_algorithms; unstable_algorithms] # test float sorting with NaNs s = sort(v, alg=alg, order=ord) @test issorted(s, order=ord) @@ -117,3 +118,14 @@ for n in [0:10..., 100, 101, 1000, 1001] @test reinterpret(UInt64,vp) == reinterpret(UInt64,s) end end + +for T in (Float64, Int, UInt8) + for alg in stable_algorithms + for ord in [Base.Order.By(identity), Base.Order.By(_ -> 0), Base.Order.By(Base.Fix2(÷, 100))] + for n in vcat(0:31, 40:11:100, 110:51:1000) + v = sort(rand(T, n)) + @test v == sort(v; alg=alg, order=ord) + end + end + end +end From 256d1ffe1bee23c86db0719f44f94231a24e0dc0 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Tue, 14 Feb 2023 19:33:40 +0100 Subject: [PATCH 28/45] Change extra tests to not use all presorted inputs --- test/runtests.jl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 73d327c..1b4d51b 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -123,8 +123,9 @@ for T in (Float64, Int, UInt8) for alg in stable_algorithms for ord in [Base.Order.By(identity), Base.Order.By(_ -> 0), Base.Order.By(Base.Fix2(÷, 100))] for n in vcat(0:31, 40:11:100, 110:51:1000) - v = sort(rand(T, n)) - @test v == sort(v; alg=alg, order=ord) + v = rand(T, n) + # use MergeSort to guarantee stable sorting in Julia 1.0 + @test sort(v, alg=alg, order=ord) == sort(v, alg=MergeSort, order=ord) end end end From a45a05409c4c0ce793aafb0c2ba35247d321896e Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Thu, 16 Feb 2023 07:06:47 +0100 Subject: [PATCH 29/45] Simplify twoended_merge! ...by exploiting the fact that the merge is always balanced. --- src/SortingAlgorithms.jl | 48 +++++++++++++--------------------------- 1 file changed, 15 insertions(+), 33 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 2f0b456..8536cef 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -19,12 +19,12 @@ struct CombSortAlg <: Algorithm end struct PagedMergeSortAlg <: Algorithm end struct ThreadedPagedMergeSortAlg <: Algorithm end -function maybe_optimize(x::Algorithm) +function maybe_optimize(x::Algorithm) isdefined(Base.Sort, :InitialOptimizations) ? Base.Sort.InitialOptimizations(x) : x -end +end const HeapSort = maybe_optimize(HeapSortAlg()) const TimSort = maybe_optimize(TimSortAlg()) -# Whenever InitialOptimizations is defined, RadixSort falls +# Whenever InitialOptimizations is defined, RadixSort falls # back to Base.DEFAULT_STABLE which already incldues them. const RadixSort = RadixSortAlg() @@ -688,24 +688,23 @@ end # PagedMergeSort ### -# merge v[lo:m] and v[m+1:hi] ([A;B]) using buffer t[1:1+hi-lo] -# this is faster than merge! but requires twice as much auxiliary memory. +# merge v[lo:m] and v[m+1:hi] ([A;B]) using buffer t[1:1+hi-lo] +# This is faster than merge! but requires twice as much auxiliary memory. function twoended_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, t::AbstractVector{T}) where T - @assert lo <= m <= hi - + @assert lo ≤ m ≤ hi + @assert abs((m-lo) - (hi-(m+1))) ≤ 1 "twoended_merge! only supports balanced merges" + len = 1 + hi - lo # input array indices a_lo = lo a_hi = m - b_lo = m + 1 + b_lo = m + 1 b_hi = hi # output array indices k_lo = 1 - k_hi = 1 + hi - lo - + k_hi = len @inbounds begin # two ended merge - # while at least 2 elements remain in both A and B - while a_lo < a_hi && b_lo < b_hi + while k_lo <= len ÷ 2 if lt(o, v[b_lo], v[a_lo]) t[k_lo] = v[b_lo] b_lo += 1 @@ -723,32 +722,15 @@ function twoended_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Inte end k_hi -=1 end - # regular merge - # until either A or B runs out - while a_lo <= a_hi && b_lo <= b_hi - if lt(o, v[b_lo], v[a_lo]) - t[k_lo] = v[b_lo] - b_lo += 1 - else - t[k_lo] = v[a_lo] - a_lo += 1 - end - k_lo += 1 - end - # either A or B is empty -> copy remaining items - while a_lo <= a_hi + # if the input length is odd, + # one item remains + if a_lo <= a_hi t[k_lo] = v[a_lo] - a_lo += 1 - k_lo += 1 - end - while b_lo <= b_hi + elseif b_lo <= b_hi t[k_lo] = v[b_lo] - b_lo += 1 - k_lo += 1 end # copy back from t to v offset = lo-1 - len = 1 + hi - lo for i = 1:len v[offset+i] = t[i] end From f66e7993c829e32aece1b0b65605fd0be155d2ba Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sun, 19 Mar 2023 11:23:58 +0100 Subject: [PATCH 30/45] Use function for core merging loop ... to eliminate redundant code. --- src/SortingAlgorithms.jl | 71 +++++++++++++++------------------------- 1 file changed, 26 insertions(+), 45 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 8536cef..ba10efb 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -737,6 +737,23 @@ function twoended_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Inte end end +# core merging loop used throughout PagedMergeSort +Base.@propagate_inbounds function merge!(f::Function, + target::AbstractVector{T}, source_a::AbstractVector{T}, source_b::AbstractVector{T}, + o::Ordering, a::Integer, b::Integer, k::Integer) where T + while f(a,b,k) + if lt(o, source_b[b], source_a[a]) + target[k] = source_b[b] + b += 1 + else + target[k] = source_a[a] + a += 1 + end + k += 1 + end + a,b,k +end + # merge v[lo:m] and v[m+1:hi] using buffer t[1:1+m-lo] # based on Base.Sort MergeSort function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, t::AbstractVector{T}) where T @@ -749,16 +766,8 @@ function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::O end a, b = 1, m + 1 k = lo - while k < b <= hi - if lt(o, v[b], t[a]) - v[k] = v[b] - b += 1 - else - v[k] = t[a] - a += 1 - end - k += 1 - end + f(_,b,k) = k < b <= hi + a,b,k = merge!(f,v,t,v,o,a,b,k) while k < b v[k] = t[a] k += 1 @@ -816,17 +825,7 @@ function pagedMerge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, # merge ################## # merge into buf until full - j = 1 - while j <= 3blocksize # cannot run out of input elements here - if lt(o, v[b], v[a]) # -> merge! would have been used - buf[j] = v[b] - b += 1 - else - buf[j] = v[a] - a += 1 - end - j += 1 - end + a,b,k = merge!((_,_,k) -> k<=3blocksize,buf,v,v,o,a,b,1) nextBlockA = 1 nextBlockB = (m + blocksize-lo) ÷ blocksize + 1 @@ -837,38 +836,20 @@ function pagedMerge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, currentBlock = 0 currentBlockIdx = 4 # more efficient loop while more than blocksize elements of A and B are remaining + while_condition1(offset) = (_,_,k) -> k <= offset + blocksize while a < m-blocksize && b < hi-blocksize @getNextBlock! - offset = (currentBlock-1)*blocksize - k = lo + offset - while k <= blocksize+offset + lo - 1 - if lt(o, v[b], v[a]) - v[k] = v[b] - b += 1 - else - v[k] = v[a] - a += 1 - end - k += 1 - end + offset = getBlockOffset(currentBlock) + a,b,k = merge!(while_condition1(offset),v,v,v,o,a,b,offset+1) end # merge until either A or B is empty - k_block = 1 + while_condition2(offset) = (a,b,k) -> k <= offset + blocksize && a <= m && b <= hi while a <= m && b <= hi @getNextBlock! - k_block = 1 offset = getBlockOffset(currentBlock) - while k_block <= blocksize && a <= m && b <= hi - if lt(o, v[b], v[a]) - v[offset+k_block] = v[b] - b += 1 - else - v[offset+k_block] = v[a] - a += 1 - end - k_block += 1 - end + a,b,k = merge!(while_condition2(offset),v,v,v,o,a,b,offset+1) end + k_block = k - getBlockOffset(currentBlock) # copy remaining elements # either A or B is empty # copy rest of A From bb4e7061c57b415e548181ab6d538413b6c47632 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Wed, 22 Mar 2023 19:16:32 +0100 Subject: [PATCH 31/45] Replace getNextBlock! macro by function and always use "page" instead of "block" --- src/SortingAlgorithms.jl | 257 ++++++++++++++++++++------------------- 1 file changed, 131 insertions(+), 126 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index ba10efb..c8cf847 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -61,7 +61,7 @@ Indicates that a sorting function should use the paged merge sort algorithm. Paged merge sort uses is a merge sort, that uses different merge routines to achieve stable sorting with a scratch space of size O(√n). The merge routine for merging large subarrays merges -blocks/pages of size O(√n) almost in place, before reordering them using a page table. +pages of size O(√n) almost in place, before reordering them using a page table. At deeper recursion levels, where the scratch space is big enough, normal merging is used, where one input is copied into the scratch space. When the scratch space is large enough to hold the complete subarray, @@ -776,25 +776,28 @@ function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::O end end -# macro used for block management in pagedMerge! -# use next block in A (left subarray) if it is free, -# otherwise use next block in B -macro getNextBlock!() - quote - if a > nextBlockA * blocksize + lo - currentBlock = nextBlockA - nextBlockA += 1 - else - currentBlock = nextBlockB - nextBlockB += 1 - end - blockLocation[currentBlockIdx] = currentBlock - currentBlockIdx += 1 - end |> esc +struct Pages + current::Int # current page being merged into + nextA::Int # next possible page in A + nextB::Int # next possible page in B end -# merge v[lo:m] and v[m+1:hi] using buffer buf in O(sqrt(n)) space -function pagedMerge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, blockLocation::AbstractVector{<:Integer}) where T +next_page_A(pages::Pages) = Pages(pages.nextA, pages.nextA + 1, pages.nextB) +next_page_B(pages::Pages) = Pages(pages.nextB, pages.nextA, pages.nextB + 1) + +function next_page!(pageLocations, pages, currentPageIndex, pagesize, lo, a) + if a > pages.nextA * pagesize + lo + pages = next_page_A(pages) + else + pages = next_page_B(pages) + end + pageLocations[currentPageIndex] = pages.current + currentPageIndex += 1 + pages, currentPageIndex +end + +# merge v[lo:m] (A) and v[m+1:hi] (B) using buffer buf in O(sqrt(n)) space +function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, pageLocations::AbstractVector{<:Integer}) where T @assert lo < m < hi a = lo b = m + 1 @@ -813,142 +816,144 @@ function pagedMerge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, end len = lenA + lenB - blocksize = isqrt(len) - nBlocks = len ÷ blocksize - @assert length(buf) >= 3blocksize - @assert length(blockLocation) >= nBlocks + 1 + pagesize = isqrt(len) + nPages = len ÷ pagesize + @assert length(buf) >= 3pagesize + @assert length(pageLocations) >= nPages + 1 - @inline getBlockOffset(block) = (block-1)*blocksize + lo - 1 + @inline page_offset(page) = (page-1)*pagesize + lo - 1 @inbounds begin ################## # merge ################## - # merge into buf until full - a,b,k = merge!((_,_,k) -> k<=3blocksize,buf,v,v,o,a,b,1) - - nextBlockA = 1 - nextBlockB = (m + blocksize-lo) ÷ blocksize + 1 - blockLocation .= 0 - blockLocation[1:3] = -1:-1:-3 - + # merge the first 3 pages into buf + a,b,k = merge!((_,_,k) -> k<=3pagesize,buf,v,v,o,a,b,1) + # initialize variable for merging into pages + pageLocations .= 0 + pageLocations[1:3] = -1:-1:-3 + currentPageIndex = 4 + currentPage = 0 + nextPageA = 1 + nextPageB = (m + pagesize-lo) ÷ pagesize + 1 + pages = Pages(currentPage, nextPageA, nextPageB) k = 1 - currentBlock = 0 - currentBlockIdx = 4 - # more efficient loop while more than blocksize elements of A and B are remaining - while_condition1(offset) = (_,_,k) -> k <= offset + blocksize - while a < m-blocksize && b < hi-blocksize - @getNextBlock! - offset = getBlockOffset(currentBlock) + # more efficient loop while more than pagesize elements of A and B are remaining + while_condition1(offset) = (_,_,k) -> k <= offset + pagesize + while a < m-pagesize && b < hi-pagesize + pages, currentPageIndex = next_page!(pageLocations, pages, currentPageIndex, pagesize, lo, a) + offset = page_offset(pages.current) a,b,k = merge!(while_condition1(offset),v,v,v,o,a,b,offset+1) end # merge until either A or B is empty - while_condition2(offset) = (a,b,k) -> k <= offset + blocksize && a <= m && b <= hi + while_condition2(offset) = (a,b,k) -> k <= offset + pagesize && a <= m && b <= hi while a <= m && b <= hi - @getNextBlock! - offset = getBlockOffset(currentBlock) + pages, currentPageIndex = next_page!(pageLocations, pages, currentPageIndex, pagesize, lo, a) + offset = page_offset(pages.current) a,b,k = merge!(while_condition2(offset),v,v,v,o,a,b,offset+1) end - k_block = k - getBlockOffset(currentBlock) + k_page = k - page_offset(pages.current) # copy remaining elements # either A or B is empty # copy rest of A while a <= m - if k_block > blocksize - @getNextBlock! - k_block = 1 + if k_page > pagesize + pages, currentPageIndex = next_page!(pageLocations, pages, currentPageIndex, pagesize, lo, a) + k_page = 1 end - offset = getBlockOffset(currentBlock) - while k_block <= blocksize && a <= m - v[offset + k_block] = v[a] + offset = page_offset(pages.current) + while k_page <= pagesize && a <= m + v[offset + k_page] = v[a] a += 1 - k_block += 1 + k_page += 1 end end # copy rest of B while b <= hi - if k_block > blocksize - @getNextBlock! - k_block = 1 + if k_page > pagesize + pages, currentPageIndex = next_page!(pageLocations, pages, currentPageIndex, pagesize, lo, a) + k_page = 1 end - offset = getBlockOffset(currentBlock) - while k_block <= blocksize && b <= hi - v[offset + k_block] = v[b] + offset = page_offset(pages.current) + while k_page <= pagesize && b <= hi + v[offset + k_page] = v[b] b += 1 - k_block += 1 + k_page += 1 end end - # copy last partial block to end - partialBlockPresent = k_block <= blocksize - if partialBlockPresent - offset = getBlockOffset(currentBlock) - offset2 = nBlocks*blocksize + lo - 1 - for j = 1:k_block-1 + # copy last partial page to end + partialPagePresent = k_page <= pagesize + if partialPagePresent + offset = page_offset(pages.current) + offset2 = nPages*pagesize + lo - 1 + for j = 1:k_page-1 v[offset2 + j] = v[offset + j] end - blockLocation[currentBlockIdx-1] = 0 + pageLocations[currentPageIndex-1] = 0 end ######################################### - # calculate location of the 3 free blocks + # calculate location of the 3 free pages ######################################### - nFreeBlocksB = nBlocks + 1 - nextBlockB - nFreeBlocksA = 3 - nFreeBlocksB - Int(partialBlockPresent) - freeBlocks = MVector{3,Int}(undef) + nFreePagesB = nPages + 1 - pages.nextB + nFreePagesA = 3 - nFreePagesB - Int(partialPagePresent) + freePages = MVector{3,Int}(undef) i = 1 - for j = 0:nFreeBlocksA-1 - freeBlocks[i] = nextBlockA + j + for j = 0:nFreePagesA-1 + freePages[i] = pages.nextA + j i += 1 end - for j = 0:nFreeBlocksB-1 - freeBlocks[i] = nextBlockB + j + for j = 0:nFreePagesB-1 + freePages[i] = pages.nextB + j i += 1 end - if partialBlockPresent - freeBlocks[i] = currentBlock + if partialPagePresent + freePages[i] = pages.current end - freeBlocksIdx = 3 - doneBlockIdx = 1 - currentBlock = freeBlocks[end] + freePagesIndex = 3 + donePageIndex = 1 + # use currentPage instead of pages.current because + # pages.nextA and pages.nextB are no longer needed + currentPage = freePages[end] ################## - # rearrange blocks + # rearrange pages ################## while true - blc = blockLocation[currentBlock] # index of block with data belonging to currentBlock - if blc > 0 - # data for currentBlock is in v - offset = getBlockOffset(currentBlock) - offset2 = getBlockOffset(blc) - for j = 1:blocksize + plc = pageLocations[currentPage] # page with data belonging to currentPage + if plc > 0 + # data for currentPage is in v + offset = page_offset(currentPage) + offset2 = page_offset(plc) + for j = 1:pagesize v[offset + j] = v[offset2 + j] end - blockLocation[currentBlock] = 0 - currentBlock = blc + pageLocations[currentPage] = 0 + currentPage = plc else - # data for currentBlock is in buf - offset = getBlockOffset(currentBlock) - offset2 = (-blc-1)*blocksize - for j = 1:blocksize + # data for currentPage is in buf + offset = page_offset(currentPage) + offset2 = (-plc-1)*pagesize + for j = 1:pagesize v[offset + j] = buf[offset2 + j] end - blockLocation[currentBlock] = 0 - if freeBlocksIdx > 1 - # get next free block - freeBlocksIdx -= 1 - currentBlock = freeBlocks[freeBlocksIdx] + pageLocations[currentPage] = 0 + if freePagesIndex > 1 + # get next free page + freePagesIndex -= 1 + currentPage = freePages[freePagesIndex] else - # no free block remains - # make sure that all blocks are done - while blockLocation[doneBlockIdx] == 0 || blockLocation[doneBlockIdx] == doneBlockIdx - doneBlockIdx += 1 - doneBlockIdx == nBlocks && return + # no free page remains + # make sure that all pages are done + while pageLocations[donePageIndex] == 0 || pageLocations[donePageIndex] == donePageIndex + donePageIndex += 1 + donePageIndex == nPages && return end - # copy misplaced block into buf and continue - currentBlock = blockLocation[doneBlockIdx] - offset = getBlockOffset(currentBlock) - for j = 1:blocksize + # copy misplaced page into buf and continue + currentPage = pageLocations[donePageIndex] + offset = page_offset(currentPage) + for j = 1:pagesize buf[j] = v[offset + j] end - blockLocation[doneBlockIdx] = -1 + pageLocations[donePageIndex] = -1 end end end @@ -959,18 +964,18 @@ end # -> redefine for compatibility with earlier versions midpoint(lo::Integer, hi::Integer) = lo + ((hi - lo) >>> 0x01) -function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, blockLocation) where T +function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, pageLocations) where T len = hi + 1 - lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end m = midpoint(lo, hi-1) # hi-1: ensure midpoint is rounded down. OK, because lo < hi is satisfied here - pagedmergesort!(v, lo, m, o, buf, blockLocation) - pagedmergesort!(v, m+1, hi, o, buf, blockLocation) + pagedmergesort!(v, lo, m, o, buf, pageLocations) + pagedmergesort!(v, m+1, hi, o, buf, pageLocations) if len <= length(buf) twoended_merge!(v, lo, m, hi, o, buf) else - pagedMerge!(v, lo, m, hi, o, buf, blockLocation) + paged_merge!(v, lo, m, hi, o, buf, pageLocations) end return v end @@ -978,40 +983,40 @@ end function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::PagedMergeSortAlg, o::Ordering) lo >= hi && return v n = hi + 1 - lo - blocksize = isqrt(n) - buf = Vector{eltype(v)}(undef, 3blocksize) - nBlocks = n ÷ blocksize - blockLocation = Vector{Int}(undef, nBlocks+1) - pagedmergesort!(v, lo, hi, o, buf, blockLocation) + pagesize = isqrt(n) + buf = Vector{eltype(v)}(undef, 3pagesize) + nPages = n ÷ pagesize + pageLocations = Vector{Int}(undef, nPages+1) + pagedmergesort!(v, lo, hi, o, buf, pageLocations) return v end Base.@static if VERSION >= v"1.3" const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 -function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, o::Ordering, bufs, blockLocations, c::Channel, threadingThreshold::Integer) +function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, o::Ordering, bufs, pageLocations, c::Channel, threadingThreshold::Integer) len = hi + 1 -lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end m = midpoint(lo, hi-1) # hi-1: ensure midpoint is rounded down. OK, because lo < hi is satisfied here if len > threadingThreshold - thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, o, bufs, blockLocations, c, threadingThreshold) - threaded_pagedmergesort!(v, m+1, hi, o, bufs, blockLocations, c, threadingThreshold) + thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, o, bufs, pageLocations, c, threadingThreshold) + threaded_pagedmergesort!(v, m+1, hi, o, bufs, pageLocations, c, threadingThreshold) wait(thr) id = take!(c) buf = bufs[id] - blockLocation = blockLocations[id] + pageLocations = pageLocations[id] else id = take!(c) buf = bufs[id] - blockLocation = blockLocations[id] - pagedmergesort!(v, lo, m, o, buf, blockLocation) - pagedmergesort!(v, m+1, hi, o, buf, blockLocation) + pageLocations = pageLocations[id] + pagedmergesort!(v, lo, m, o, buf, pageLocations) + pagedmergesort!(v, m+1, hi, o, buf, pageLocations) end if len <= length(buf) twoended_merge!(v, lo, m, hi, o, buf) else - pagedMerge!(v, lo, m, hi, o, buf, blockLocation) + paged_merge!(v, lo, m, hi, o, buf, pageLocations) end put!(c, id) return v @@ -1022,15 +1027,15 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::ThreadedPagedMerge nThreads=Threads.nthreads() (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && return sort!(v, lo, hi, PagedMergeSortAlg(), o) threadingThreshold = max(n ÷ 4nThreads, PAGEDMERGESORT_THREADING_THRESHOLD) - blocksize = isqrt(n) - nBlocks = n ÷ blocksize - bufs = [Vector{eltype(v)}(undef, 3blocksize) for _ in 1:nThreads] # allocate buffer for each thread - blockLocation = [Vector{Int}(undef, nBlocks+1) for _ in 1:nThreads] + pagesize = isqrt(n) + nPages = n ÷ pagesize + bufs = [Vector{eltype(v)}(undef, 3pagesize) for _ in 1:nThreads] # allocate buffer for each thread + pageLocations = [Vector{Int}(undef, nPages+1) for _ in 1:nThreads] c = Channel{Int}(nThreads) # channel holds indices of available buffers for i=1:nThreads put!(c, i) end - threaded_pagedmergesort!(v, lo, hi, o, bufs, blockLocation, c, threadingThreshold) + threaded_pagedmergesort!(v, lo, hi, o, bufs, pageLocations, c, threadingThreshold) return v end else From 0d9e23f93972bcbda30ff1e5c34a5572f176006c Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Wed, 22 Mar 2023 19:53:16 +0100 Subject: [PATCH 32/45] Reduce number of arguments of next_page!() --- src/SortingAlgorithms.jl | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index c8cf847..2b4cb8a 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -777,23 +777,23 @@ function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::O end struct Pages - current::Int # current page being merged into - nextA::Int # next possible page in A - nextB::Int # next possible page in B + current::Int # current page being merged into + currentNumber::Int # number of current page (=index in pageLocations) + nextA::Int # next possible page in A + nextB::Int # next possible page in B end -next_page_A(pages::Pages) = Pages(pages.nextA, pages.nextA + 1, pages.nextB) -next_page_B(pages::Pages) = Pages(pages.nextB, pages.nextA, pages.nextB + 1) +next_page_A(pages::Pages) = Pages(pages.nextA, pages.currentNumber + 1, pages.nextA + 1, pages.nextB) +next_page_B(pages::Pages) = Pages(pages.nextB, pages.currentNumber + 1, pages.nextA, pages.nextB + 1) -function next_page!(pageLocations, pages, currentPageIndex, pagesize, lo, a) +function next_page!(pageLocations, pages, pagesize, lo, a) if a > pages.nextA * pagesize + lo pages = next_page_A(pages) else pages = next_page_B(pages) end - pageLocations[currentPageIndex] = pages.current - currentPageIndex += 1 - pages, currentPageIndex + pageLocations[pages.currentNumber] = pages.current + pages end # merge v[lo:m] (A) and v[m+1:hi] (B) using buffer buf in O(sqrt(n)) space @@ -832,23 +832,23 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer # initialize variable for merging into pages pageLocations .= 0 pageLocations[1:3] = -1:-1:-3 - currentPageIndex = 4 currentPage = 0 + currentPageNumber = 3 nextPageA = 1 nextPageB = (m + pagesize-lo) ÷ pagesize + 1 - pages = Pages(currentPage, nextPageA, nextPageB) + pages = Pages(currentPage, currentPageNumber, nextPageA, nextPageB) k = 1 # more efficient loop while more than pagesize elements of A and B are remaining while_condition1(offset) = (_,_,k) -> k <= offset + pagesize while a < m-pagesize && b < hi-pagesize - pages, currentPageIndex = next_page!(pageLocations, pages, currentPageIndex, pagesize, lo, a) + pages = next_page!(pageLocations, pages, pagesize, lo, a) offset = page_offset(pages.current) a,b,k = merge!(while_condition1(offset),v,v,v,o,a,b,offset+1) end # merge until either A or B is empty while_condition2(offset) = (a,b,k) -> k <= offset + pagesize && a <= m && b <= hi while a <= m && b <= hi - pages, currentPageIndex = next_page!(pageLocations, pages, currentPageIndex, pagesize, lo, a) + pages = next_page!(pageLocations, pages, pagesize, lo, a) offset = page_offset(pages.current) a,b,k = merge!(while_condition2(offset),v,v,v,o,a,b,offset+1) end @@ -858,7 +858,7 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer # copy rest of A while a <= m if k_page > pagesize - pages, currentPageIndex = next_page!(pageLocations, pages, currentPageIndex, pagesize, lo, a) + pages = next_page!(pageLocations, pages, pagesize, lo, a) k_page = 1 end offset = page_offset(pages.current) @@ -871,7 +871,7 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer # copy rest of B while b <= hi if k_page > pagesize - pages, currentPageIndex = next_page!(pageLocations, pages, currentPageIndex, pagesize, lo, a) + pages = next_page!(pageLocations, pages, pagesize, lo, a) k_page = 1 end offset = page_offset(pages.current) @@ -889,7 +889,7 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer for j = 1:k_page-1 v[offset2 + j] = v[offset + j] end - pageLocations[currentPageIndex-1] = 0 + pageLocations[pages.currentNumber] = 0 end ######################################### # calculate location of the 3 free pages @@ -912,7 +912,7 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer freePagesIndex = 3 donePageIndex = 1 # use currentPage instead of pages.current because - # pages.nextA and pages.nextB are no longer needed + # pages.nextA, pages.nextB and page.currentNumber are no longer needed currentPage = freePages[end] ################## # rearrange pages From cb89f11d3cd706ede18b0baac930a031f3e0293e Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Thu, 23 Mar 2023 20:12:07 +0100 Subject: [PATCH 33/45] Refactor page permutation and eliminate dependency on StaticArrays --- Project.toml | 2 - src/SortingAlgorithms.jl | 121 +++++++++++++++++++++------------------ 2 files changed, 65 insertions(+), 58 deletions(-) diff --git a/Project.toml b/Project.toml index b48f8f0..6018b9e 100644 --- a/Project.toml +++ b/Project.toml @@ -4,13 +4,11 @@ version = "1.1.1" [deps] DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" [compat] julia = "1" DataStructures = "0.9, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18" StatsBase = "0.33" -StaticArrays = "0.8.1, 0.9, 0.10, 0.11, 0.12, 1" [extras] Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 2b4cb8a..a57c914 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -8,7 +8,6 @@ using Base.Order import Base.Sort: sort! import DataStructures: heapify!, percolate_down! -import StaticArrays: MVector export HeapSort, TimSort, RadixSort, CombSort, PagedMergeSort, ThreadedPagedMergeSort @@ -786,7 +785,7 @@ end next_page_A(pages::Pages) = Pages(pages.nextA, pages.currentNumber + 1, pages.nextA + 1, pages.nextB) next_page_B(pages::Pages) = Pages(pages.nextB, pages.currentNumber + 1, pages.nextA, pages.nextB + 1) -function next_page!(pageLocations, pages, pagesize, lo, a) +Base.@propagate_inbounds function next_page!(pageLocations, pages, pagesize, lo, a) if a > pages.nextA * pagesize + lo pages = next_page_A(pages) else @@ -796,6 +795,31 @@ function next_page!(pageLocations, pages, pagesize, lo, a) pages end +Base.@propagate_inbounds function copy_page!(v, source, offset, offset2, pagesize) + for j = 1:pagesize + v[offset + j] = source[offset2 + j] + end +end + +# copy correct data into free page currentPage, +# following a permutation cycle until one page is copied from buf +Base.@propagate_inbounds function copy_pages!(v, buf, pageLocations, currentPage, page_offset, pagesize) + while true + plc = pageLocations[currentPage] # page with data belonging to currentPage + pageLocations[currentPage] = 0 + offset = page_offset(currentPage) + if plc > 0 # data for currentPage is in v + offset2 = page_offset(plc) + copy_page!(v, v, offset, offset2, pagesize) + currentPage = plc + else # data for currentPage is in buf + offset2 = (-plc-1)*pagesize + copy_page!(v, buf, offset, offset2, pagesize) + return + end + end +end + # merge v[lo:m] (A) and v[m+1:hi] (B) using buffer buf in O(sqrt(n)) space function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, pageLocations::AbstractVector{<:Integer}) where T @assert lo < m < hi @@ -829,7 +853,7 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer ################## # merge the first 3 pages into buf a,b,k = merge!((_,_,k) -> k<=3pagesize,buf,v,v,o,a,b,1) - # initialize variable for merging into pages + # initialize variables for merging into pages pageLocations .= 0 pageLocations[1:3] = -1:-1:-3 currentPage = 0 @@ -896,66 +920,51 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer ######################################### nFreePagesB = nPages + 1 - pages.nextB nFreePagesA = 3 - nFreePagesB - Int(partialPagePresent) - freePages = MVector{3,Int}(undef) - i = 1 - for j = 0:nFreePagesA-1 - freePages[i] = pages.nextA + j - i += 1 - end - for j = 0:nFreePagesB-1 - freePages[i] = pages.nextB + j - i += 1 - end if partialPagePresent - freePages[i] = pages.current + # nFreePagesA == 0 is impossible: + # the last page in A (partially in B) is always free + if nFreePagesA == 1 + freePages = (pages.nextA, pages.nextB, pages.current) + else # nFreePagesA == 2 + freePages = (pages.nextA, pages.nextA + 1, pages.current) + end + else + # nFreePagesA == 0 is impossible: + # next_page!() only uses nextA if there is MORE THAN one page free in A + # -> if there is exactly one page free in A, nextB is used + # nFreePagesA == 3 is impossible: + # B contains at least 3pagesize elements -> at least one free page will exist in B at some point + # next_page!() never uses nextB if there is more than one page free in A + if nFreePagesA == 1 + freePages = (pages.nextA, pages.nextB, pages.nextB + 1) + else # nFreePagesA == 2 + freePages = (pages.nextA, pages.nextA + 1, pages.nextB) + end end - freePagesIndex = 3 - donePageIndex = 1 - # use currentPage instead of pages.current because - # pages.nextA, pages.nextB and page.currentNumber are no longer needed - currentPage = freePages[end] ################## # rearrange pages ################## + # copy pages belonging to the 3 permutation chains ending with a page in the buffer + for currentPage in freePages + copy_pages!(v, buf, pageLocations, currentPage, page_offset, pagesize) + end + # copy remaining permutation cycles + donePageIndex = 1 while true - plc = pageLocations[currentPage] # page with data belonging to currentPage - if plc > 0 - # data for currentPage is in v - offset = page_offset(currentPage) - offset2 = page_offset(plc) - for j = 1:pagesize - v[offset + j] = v[offset2 + j] - end - pageLocations[currentPage] = 0 - currentPage = plc - else - # data for currentPage is in buf - offset = page_offset(currentPage) - offset2 = (-plc-1)*pagesize - for j = 1:pagesize - v[offset + j] = buf[offset2 + j] - end - pageLocations[currentPage] = 0 - if freePagesIndex > 1 - # get next free page - freePagesIndex -= 1 - currentPage = freePages[freePagesIndex] - else - # no free page remains - # make sure that all pages are done - while pageLocations[donePageIndex] == 0 || pageLocations[donePageIndex] == donePageIndex - donePageIndex += 1 - donePageIndex == nPages && return - end - # copy misplaced page into buf and continue - currentPage = pageLocations[donePageIndex] - offset = page_offset(currentPage) - for j = 1:pagesize - buf[j] = v[offset + j] - end - pageLocations[donePageIndex] = -1 - end + # linear scan through pageLocations to make sure no cycle is missed + while pageLocations[donePageIndex] == 0 || pageLocations[donePageIndex] == donePageIndex + donePageIndex += 1 + donePageIndex == nPages && return + end + # copy misplaced page into buf + # and follow the cycle starting with the newly freed page + currentPage = pageLocations[donePageIndex] + offset = page_offset(currentPage) + for j = 1:pagesize + buf[j] = v[offset + j] end + pageLocations[donePageIndex] = -1 + copy_pages!(v, buf, pageLocations, currentPage, page_offset, pagesize) end end end From 5bcdbb8ecfa1764fad4e7e5f88ee036fbde4b95c Mon Sep 17 00:00:00 2001 From: Lilith Hafner Date: Mon, 10 Apr 2023 13:57:53 -0500 Subject: [PATCH 34/45] Lilith's refactor --- src/SortingAlgorithms.jl | 183 +++++++++++++-------------------------- 1 file changed, 58 insertions(+), 125 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index a57c914..68a75d6 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -763,10 +763,8 @@ function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::O i +=1 j +=1 end - a, b = 1, m + 1 - k = lo f(_,b,k) = k < b <= hi - a,b,k = merge!(f,v,t,v,o,a,b,k) + a,b,k = merge!(f,v,t,v,o,1,m+1,lo) while k < b v[k] = t[a] k += 1 @@ -782,42 +780,24 @@ struct Pages nextB::Int # next possible page in B end -next_page_A(pages::Pages) = Pages(pages.nextA, pages.currentNumber + 1, pages.nextA + 1, pages.nextB) -next_page_B(pages::Pages) = Pages(pages.nextB, pages.currentNumber + 1, pages.nextA, pages.nextB + 1) - Base.@propagate_inbounds function next_page!(pageLocations, pages, pagesize, lo, a) - if a > pages.nextA * pagesize + lo - pages = next_page_A(pages) + pages = if a > pages.nextA * pagesize + lo + Pages(pages.nextA, pages.currentNumber + 1, pages.nextA + 1, pages.nextB) else - pages = next_page_B(pages) + Pages(pages.nextB, pages.currentNumber + 1, pages.nextA, pages.nextB + 1) end pageLocations[pages.currentNumber] = pages.current pages end -Base.@propagate_inbounds function copy_page!(v, source, offset, offset2, pagesize) - for j = 1:pagesize - v[offset + j] = source[offset2 + j] - end -end - -# copy correct data into free page currentPage, -# following a permutation cycle until one page is copied from buf -Base.@propagate_inbounds function copy_pages!(v, buf, pageLocations, currentPage, page_offset, pagesize) - while true - plc = pageLocations[currentPage] # page with data belonging to currentPage - pageLocations[currentPage] = 0 - offset = page_offset(currentPage) - if plc > 0 # data for currentPage is in v - offset2 = page_offset(plc) - copy_page!(v, v, offset, offset2, pagesize) - currentPage = plc - else # data for currentPage is in buf - offset2 = (-plc-1)*pagesize - copy_page!(v, buf, offset, offset2, pagesize) - return - end +Base.@propagate_inbounds function permute_pages!(f, v, pageLocations, page_offset, pagesize, page) + while f(page) + plc = pageLocations[page-3] # plc has data belonging to page + pageLocations[page-3] = page + copyto!(v, page_offset(page)+1, v, page_offset(plc)+1, pagesize) + page = plc end + page end # merge v[lo:m] (A) and v[m+1:hi] (B) using buffer buf in O(sqrt(n)) space @@ -841,9 +821,9 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer len = lenA + lenB pagesize = isqrt(len) - nPages = len ÷ pagesize + nPages = len ÷ pagesize # a partial page at the end does not count @assert length(buf) >= 3pagesize - @assert length(pageLocations) >= nPages + 1 + @assert length(pageLocations) >= nPages - 3 @inline page_offset(page) = (page-1)*pagesize + lo - 1 @@ -852,119 +832,72 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer # merge ################## # merge the first 3 pages into buf - a,b,k = merge!((_,_,k) -> k<=3pagesize,buf,v,v,o,a,b,1) + a,b,_ = merge!((_,_,k) -> k<=3pagesize,buf,v,v,o,a,b,1) # initialize variables for merging into pages - pageLocations .= 0 - pageLocations[1:3] = -1:-1:-3 - currentPage = 0 - currentPageNumber = 3 - nextPageA = 1 - nextPageB = (m + pagesize-lo) ÷ pagesize + 1 - pages = Pages(currentPage, currentPageNumber, nextPageA, nextPageB) - k = 1 + pages = Pages(-17, 0, 1, (m-lo) ÷ pagesize + 2) # first argument is unused # more efficient loop while more than pagesize elements of A and B are remaining while_condition1(offset) = (_,_,k) -> k <= offset + pagesize while a < m-pagesize && b < hi-pagesize pages = next_page!(pageLocations, pages, pagesize, lo, a) offset = page_offset(pages.current) - a,b,k = merge!(while_condition1(offset),v,v,v,o,a,b,offset+1) + a,b,_ = merge!(while_condition1(offset),v,v,v,o,a,b,offset+1) end - # merge until either A or B is empty + # merge until either A or B is empty or the last page is reached + k, offset = nothing, nothing while_condition2(offset) = (a,b,k) -> k <= offset + pagesize && a <= m && b <= hi - while a <= m && b <= hi + while a <= m && b <= hi && pages.currentNumber + 3 < nPages pages = next_page!(pageLocations, pages, pagesize, lo, a) offset = page_offset(pages.current) a,b,k = merge!(while_condition2(offset),v,v,v,o,a,b,offset+1) end - k_page = k - page_offset(pages.current) - # copy remaining elements - # either A or B is empty - # copy rest of A - while a <= m - if k_page > pagesize - pages = next_page!(pageLocations, pages, pagesize, lo, a) - k_page = 1 - end - offset = page_offset(pages.current) - while k_page <= pagesize && a <= m - v[offset + k_page] = v[a] - a += 1 - k_page += 1 - end - end - # copy rest of B - while b <= hi - if k_page > pagesize - pages = next_page!(pageLocations, pages, pagesize, lo, a) - k_page = 1 - end - offset = page_offset(pages.current) - while k_page <= pagesize && b <= hi - v[offset + k_page] = v[b] - b += 1 - k_page += 1 - end - end - # copy last partial page to end - partialPagePresent = k_page <= pagesize - if partialPagePresent - offset = page_offset(pages.current) - offset2 = nPages*pagesize + lo - 1 - for j = 1:k_page-1 - v[offset2 + j] = v[offset + j] - end - pageLocations[pages.currentNumber] = 0 - end - ######################################### - # calculate location of the 3 free pages - ######################################### - nFreePagesB = nPages + 1 - pages.nextB - nFreePagesA = 3 - nFreePagesB - Int(partialPagePresent) - if partialPagePresent - # nFreePagesA == 0 is impossible: - # the last page in A (partially in B) is always free - if nFreePagesA == 1 - freePages = (pages.nextA, pages.nextB, pages.current) - else # nFreePagesA == 2 - freePages = (pages.nextA, pages.nextA + 1, pages.current) - end + # if the last page is reached, merge the remaining elements into the final partial page + if pages.currentNumber + 3 == nPages && a <= m && b <= hi + a,b,k = merge!((a,b,_) -> a <= m && b <= hi,v,v,v,o,a,b,nPages*pagesize+lo) + copyto!(v, k, v, a <= m ? a : b, hi-k+1) else - # nFreePagesA == 0 is impossible: - # next_page!() only uses nextA if there is MORE THAN one page free in A - # -> if there is exactly one page free in A, nextB is used - # nFreePagesA == 3 is impossible: - # B contains at least 3pagesize elements -> at least one free page will exist in B at some point - # next_page!() never uses nextB if there is more than one page free in A - if nFreePagesA == 1 - freePages = (pages.nextA, pages.nextB, pages.nextB + 1) - else # nFreePagesA == 2 - freePages = (pages.nextA, pages.nextA + 1, pages.nextB) + use_a = a <= m + # copy the incomplete page + amt = offset + pagesize - k + 1 + copyto!(v, k, v, use_a ? a : b, amt) + use_a && (a += amt) + use_a || (b += amt) + # copy the remaining full pages + while use_a ? a <= m - pagesize + 1 : b <= hi - pagesize + 1 + pages = next_page!(pageLocations, pages, pagesize, lo, a) + offset = page_offset(pages.current) + copyto!(v, offset+1, v, use_a ? a : b, pagesize) + use_a && (a += pagesize) + use_a || (b += pagesize) end + # copy the final partial page only if sourcing from A. + # If sourcing from B, it is already in place. + use_a && copyto!(v, hi - m + a, v, a, m - a + 1) end + # return vcat(v, 40, buf) ################## # rearrange pages ################## # copy pages belonging to the 3 permutation chains ending with a page in the buffer - for currentPage in freePages - copy_pages!(v, buf, pageLocations, currentPage, page_offset, pagesize) + nextA, nextB = pages.nextA, pages.nextB + + for _ in 1:3 + page = (nextB > nPages ? (nextA += 1) : (nextB += 1)) - 1 + page = permute_pages!(>(3), v, pageLocations, page_offset, pagesize, page) + copyto!(v, page_offset(page)+1, buf, (page-1)*pagesize+1, pagesize) end + # copy remaining permutation cycles - donePageIndex = 1 - while true + for donePageIndex = 5:nPages # linear scan through pageLocations to make sure no cycle is missed - while pageLocations[donePageIndex] == 0 || pageLocations[donePageIndex] == donePageIndex - donePageIndex += 1 - donePageIndex == nPages && return - end - # copy misplaced page into buf - # and follow the cycle starting with the newly freed page - currentPage = pageLocations[donePageIndex] - offset = page_offset(currentPage) - for j = 1:pagesize - buf[j] = v[offset + j] - end - pageLocations[donePageIndex] = -1 - copy_pages!(v, buf, pageLocations, currentPage, page_offset, pagesize) + page = pageLocations[donePageIndex-3] + page == donePageIndex && continue + + # copy the data belonging to donePageIndex into buf + copyto!(buf, 1, v, page_offset(page)+1, pagesize) + + # follow the cycle starting with the newly freed page + permute_pages!(!=(donePageIndex), v, pageLocations, page_offset, pagesize, page) + copyto!(v, page_offset(donePageIndex)+1, buf, 1, pagesize) end end end @@ -995,7 +928,7 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::PagedMergeSortAlg, pagesize = isqrt(n) buf = Vector{eltype(v)}(undef, 3pagesize) nPages = n ÷ pagesize - pageLocations = Vector{Int}(undef, nPages+1) + pageLocations = Vector{Int}(undef, nPages-3) pagedmergesort!(v, lo, hi, o, buf, pageLocations) return v end From 5dab2a116403309735dd0906d8e40a7f675ca65d Mon Sep 17 00:00:00 2001 From: Lilith Hafner Date: Sun, 28 May 2023 07:16:42 -0500 Subject: [PATCH 35/45] Apply @LSchwerdt's suggestions --- src/SortingAlgorithms.jl | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 68a75d6..b923b0a 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -780,11 +780,14 @@ struct Pages nextB::Int # next possible page in B end +next_page_A(pages::Pages) = Pages(pages.nextA, pages.currentNumber + 1, pages.nextA + 1, pages.nextB) +next_page_B(pages::Pages) = Pages(pages.nextB, pages.currentNumber + 1, pages.nextA, pages.nextB + 1) + Base.@propagate_inbounds function next_page!(pageLocations, pages, pagesize, lo, a) - pages = if a > pages.nextA * pagesize + lo - Pages(pages.nextA, pages.currentNumber + 1, pages.nextA + 1, pages.nextB) + if a > pages.nextA * pagesize + lo + pages = next_page_A(pages) else - Pages(pages.nextB, pages.currentNumber + 1, pages.nextA, pages.nextB + 1) + pages = next_page_B(pages) end pageLocations[pages.currentNumber] = pages.current pages @@ -857,10 +860,10 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer else use_a = a <= m # copy the incomplete page - amt = offset + pagesize - k + 1 - copyto!(v, k, v, use_a ? a : b, amt) - use_a && (a += amt) - use_a || (b += amt) + partial_page_size = offset + pagesize - k + 1 + copyto!(v, k, v, use_a ? a : b, partial_page_size) + use_a && (a += partial_page_size) + use_a || (b += partial_page_size) # copy the remaining full pages while use_a ? a <= m - pagesize + 1 : b <= hi - pagesize + 1 pages = next_page!(pageLocations, pages, pagesize, lo, a) @@ -873,7 +876,7 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer # If sourcing from B, it is already in place. use_a && copyto!(v, hi - m + a, v, a, m - a + 1) end - # return vcat(v, 40, buf) + ################## # rearrange pages ################## From 71fc310fff587d88fc738fc218bab8385acf74b1 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Fri, 11 Aug 2023 15:05:54 +0200 Subject: [PATCH 36/45] Simplify check for input lengths in paged_merge! --- src/SortingAlgorithms.jl | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index b923b0a..edb1cd1 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -811,16 +811,12 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer lenA = 1 + m - lo lenB = hi - m + # this function only supports merges with length(A) <= length(B), + # which is guaranteed by pagedmergesort! + @assert lenA <= lenB + # regular merge if buffer is big enough - if lenA <= length(buf) - merge!(v, lo, m, hi, o, buf) - return - elseif lenB <= length(buf) - # TODO ? - # does not occur in balanced mergesort where length(A) <= length(B) - error("not implemented") - return - end + lenA <= length(buf) && return merge!(v, lo, m, hi, o, buf) len = lenA + lenB pagesize = isqrt(len) From 2c9ef24385012babfc78efa9d50a155ec66968c7 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Fri, 11 Aug 2023 15:08:29 +0200 Subject: [PATCH 37/45] Simplifcations use copyto! remove premature variable definitions --- src/SortingAlgorithms.jl | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index edb1cd1..ccb361a 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -740,7 +740,7 @@ end Base.@propagate_inbounds function merge!(f::Function, target::AbstractVector{T}, source_a::AbstractVector{T}, source_b::AbstractVector{T}, o::Ordering, a::Integer, b::Integer, k::Integer) where T - while f(a,b,k) + @inbounds while f(a,b,k) if lt(o, source_b[b], source_a[a]) target[k] = source_b[b] b += 1 @@ -756,21 +756,15 @@ end # merge v[lo:m] and v[m+1:hi] using buffer t[1:1+m-lo] # based on Base.Sort MergeSort function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, t::AbstractVector{T}) where T - @inbounds begin - i, j = 1, lo - while j <= m - t[i] = v[j] - i +=1 - j +=1 - end - f(_,b,k) = k < b <= hi - a,b,k = merge!(f,v,t,v,o,1,m+1,lo) - while k < b - v[k] = t[a] - k += 1 - a += 1 - end - end + copyto!(t, 1, v, lo, m-lo+1) + f(_,b,k) = k < b <= hi + a,b,k = merge!(f, v, t, v, o, 1, m+1, lo) + copyto!(v, k, t, a, b-k) + #while k < b + # v[k] = t[a] + # k += 1 + # a += 1 + #end end struct Pages @@ -806,8 +800,6 @@ end # merge v[lo:m] (A) and v[m+1:hi] (B) using buffer buf in O(sqrt(n)) space function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, pageLocations::AbstractVector{<:Integer}) where T @assert lo < m < hi - a = lo - b = m + 1 lenA = 1 + m - lo lenB = hi - m @@ -831,7 +823,7 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer # merge ################## # merge the first 3 pages into buf - a,b,_ = merge!((_,_,k) -> k<=3pagesize,buf,v,v,o,a,b,1) + a,b,_ = merge!((_,_,k) -> k<=3pagesize,buf,v,v,o,lo,m+1,1) # initialize variables for merging into pages pages = Pages(-17, 0, 1, (m-lo) ÷ pagesize + 2) # first argument is unused # more efficient loop while more than pagesize elements of A and B are remaining @@ -935,7 +927,7 @@ end Base.@static if VERSION >= v"1.3" const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, o::Ordering, bufs, pageLocations, c::Channel, threadingThreshold::Integer) - len = hi + 1 -lo + len = hi + 1 - lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end From 4bbc185951c4e8b8196545696e7f9a84911ee679 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Fri, 11 Aug 2023 15:13:01 +0200 Subject: [PATCH 38/45] Fix indentation --- src/SortingAlgorithms.jl | 90 ++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index ccb361a..c347fa1 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -925,52 +925,52 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::PagedMergeSortAlg, end Base.@static if VERSION >= v"1.3" -const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 -function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, o::Ordering, bufs, pageLocations, c::Channel, threadingThreshold::Integer) - len = hi + 1 - lo - if len <= Base.SMALL_THRESHOLD - return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) - end - m = midpoint(lo, hi-1) # hi-1: ensure midpoint is rounded down. OK, because lo < hi is satisfied here - if len > threadingThreshold - thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, o, bufs, pageLocations, c, threadingThreshold) - threaded_pagedmergesort!(v, m+1, hi, o, bufs, pageLocations, c, threadingThreshold) - wait(thr) - id = take!(c) - buf = bufs[id] - pageLocations = pageLocations[id] - else - id = take!(c) - buf = bufs[id] - pageLocations = pageLocations[id] - pagedmergesort!(v, lo, m, o, buf, pageLocations) - pagedmergesort!(v, m+1, hi, o, buf, pageLocations) - end - if len <= length(buf) - twoended_merge!(v, lo, m, hi, o, buf) - else - paged_merge!(v, lo, m, hi, o, buf, pageLocations) - end - put!(c, id) - return v -end -function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::ThreadedPagedMergeSortAlg, o::Ordering) - lo >= hi && return v - n = hi + 1 - lo - nThreads=Threads.nthreads() - (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && return sort!(v, lo, hi, PagedMergeSortAlg(), o) - threadingThreshold = max(n ÷ 4nThreads, PAGEDMERGESORT_THREADING_THRESHOLD) - pagesize = isqrt(n) - nPages = n ÷ pagesize - bufs = [Vector{eltype(v)}(undef, 3pagesize) for _ in 1:nThreads] # allocate buffer for each thread - pageLocations = [Vector{Int}(undef, nPages+1) for _ in 1:nThreads] - c = Channel{Int}(nThreads) # channel holds indices of available buffers - for i=1:nThreads - put!(c, i) + const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 + function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, o::Ordering, bufs, pageLocations, c::Channel, threadingThreshold::Integer) + len = hi + 1 - lo + if len <= Base.SMALL_THRESHOLD + return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) + end + m = midpoint(lo, hi - 1) # hi-1: ensure midpoint is rounded down. OK, because lo < hi is satisfied here + if len > threadingThreshold + thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, o, bufs, pageLocations, c, threadingThreshold) + threaded_pagedmergesort!(v, m + 1, hi, o, bufs, pageLocations, c, threadingThreshold) + wait(thr) + id = take!(c) + buf = bufs[id] + pageLocations = pageLocations[id] + else + id = take!(c) + buf = bufs[id] + pageLocations = pageLocations[id] + pagedmergesort!(v, lo, m, o, buf, pageLocations) + pagedmergesort!(v, m + 1, hi, o, buf, pageLocations) + end + if len <= length(buf) + twoended_merge!(v, lo, m, hi, o, buf) + else + paged_merge!(v, lo, m, hi, o, buf, pageLocations) + end + put!(c, id) + return v + end + function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::ThreadedPagedMergeSortAlg, o::Ordering) + lo >= hi && return v + n = hi + 1 - lo + nThreads = Threads.nthreads() + (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && return sort!(v, lo, hi, PagedMergeSortAlg(), o) + threadingThreshold = max(n ÷ 4nThreads, PAGEDMERGESORT_THREADING_THRESHOLD) + pagesize = isqrt(n) + nPages = n ÷ pagesize + bufs = [Vector{eltype(v)}(undef, 3pagesize) for _ in 1:nThreads] # allocate buffer for each thread + pageLocations = [Vector{Int}(undef, nPages + 1) for _ in 1:nThreads] + c = Channel{Int}(nThreads) # channel holds indices of available buffers + for i = 1:nThreads + put!(c, i) + end + threaded_pagedmergesort!(v, lo, hi, o, bufs, pageLocations, c, threadingThreshold) + return v end - threaded_pagedmergesort!(v, lo, hi, o, bufs, pageLocations, c, threadingThreshold) - return v -end else # use single threaded function when VERSION < v"1.3" sort!(v::AbstractVector, lo::Integer, hi::Integer, ::ThreadedPagedMergeSortAlg, o::Ordering) = sort!(v, lo, hi, PagedMergeSort, o) From 3a8a53b930325206e795f1e1a39aad0a0fc9160d Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Fri, 11 Aug 2023 15:16:46 +0200 Subject: [PATCH 39/45] Remove superfluous check for small inputs in threaded_pagedmergesort! --- src/SortingAlgorithms.jl | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index c347fa1..911fa62 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -928,9 +928,6 @@ Base.@static if VERSION >= v"1.3" const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, o::Ordering, bufs, pageLocations, c::Channel, threadingThreshold::Integer) len = hi + 1 - lo - if len <= Base.SMALL_THRESHOLD - return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) - end m = midpoint(lo, hi - 1) # hi-1: ensure midpoint is rounded down. OK, because lo < hi is satisfied here if len > threadingThreshold thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, o, bufs, pageLocations, c, threadingThreshold) From a783092d03b55c8aa5f90336f7529cd6644e3179 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Fri, 11 Aug 2023 15:19:05 +0200 Subject: [PATCH 40/45] Improve formatting --- src/SortingAlgorithms.jl | 57 ++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 911fa62..0d95949 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -755,16 +755,11 @@ end # merge v[lo:m] and v[m+1:hi] using buffer t[1:1+m-lo] # based on Base.Sort MergeSort -function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, t::AbstractVector{T}) where T - copyto!(t, 1, v, lo, m-lo+1) - f(_,b,k) = k < b <= hi - a,b,k = merge!(f, v, t, v, o, 1, m+1, lo) - copyto!(v, k, t, a, b-k) - #while k < b - # v[k] = t[a] - # k += 1 - # a += 1 - #end +function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, t::AbstractVector{T}) where {T} + copyto!(t, 1, v, lo, m - lo + 1) + f(_, b, k) = k < b <= hi + a, b, k = merge!(f, v, t, v, o, 1, m + 1, lo) + copyto!(v, k, t, a, b - k) end struct Pages @@ -791,14 +786,14 @@ Base.@propagate_inbounds function permute_pages!(f, v, pageLocations, page_offse while f(page) plc = pageLocations[page-3] # plc has data belonging to page pageLocations[page-3] = page - copyto!(v, page_offset(page)+1, v, page_offset(plc)+1, pagesize) + copyto!(v, page_offset(page) + 1, v, page_offset(plc) + 1, pagesize) page = plc end page end # merge v[lo:m] (A) and v[m+1:hi] (B) using buffer buf in O(sqrt(n)) space -function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, pageLocations::AbstractVector{<:Integer}) where T +function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, pageLocations::AbstractVector{<:Integer}) where {T} @assert lo < m < hi lenA = 1 + m - lo lenB = hi - m @@ -806,7 +801,7 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer # this function only supports merges with length(A) <= length(B), # which is guaranteed by pagedmergesort! @assert lenA <= lenB - + # regular merge if buffer is big enough lenA <= length(buf) && return merge!(v, lo, m, hi, o, buf) @@ -816,35 +811,35 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer @assert length(buf) >= 3pagesize @assert length(pageLocations) >= nPages - 3 - @inline page_offset(page) = (page-1)*pagesize + lo - 1 + @inline page_offset(page) = (page - 1) * pagesize + lo - 1 @inbounds begin ################## # merge ################## # merge the first 3 pages into buf - a,b,_ = merge!((_,_,k) -> k<=3pagesize,buf,v,v,o,lo,m+1,1) + a, b, _ = merge!((_, _, k) -> k <= 3pagesize, buf, v, v, o, lo, m + 1, 1) # initialize variables for merging into pages - pages = Pages(-17, 0, 1, (m-lo) ÷ pagesize + 2) # first argument is unused + pages = Pages(-17, 0, 1, (m - lo) ÷ pagesize + 2) # first argument is unused # more efficient loop while more than pagesize elements of A and B are remaining - while_condition1(offset) = (_,_,k) -> k <= offset + pagesize - while a < m-pagesize && b < hi-pagesize + while_condition1(offset) = (_, _, k) -> k <= offset + pagesize + while a < m - pagesize && b < hi - pagesize pages = next_page!(pageLocations, pages, pagesize, lo, a) offset = page_offset(pages.current) - a,b,_ = merge!(while_condition1(offset),v,v,v,o,a,b,offset+1) + a, b, _ = merge!(while_condition1(offset), v, v, v, o, a, b, offset + 1) end # merge until either A or B is empty or the last page is reached k, offset = nothing, nothing - while_condition2(offset) = (a,b,k) -> k <= offset + pagesize && a <= m && b <= hi + while_condition2(offset) = (a, b, k) -> k <= offset + pagesize && a <= m && b <= hi while a <= m && b <= hi && pages.currentNumber + 3 < nPages pages = next_page!(pageLocations, pages, pagesize, lo, a) offset = page_offset(pages.current) - a,b,k = merge!(while_condition2(offset),v,v,v,o,a,b,offset+1) + a, b, k = merge!(while_condition2(offset), v, v, v, o, a, b, offset + 1) end # if the last page is reached, merge the remaining elements into the final partial page if pages.currentNumber + 3 == nPages && a <= m && b <= hi - a,b,k = merge!((a,b,_) -> a <= m && b <= hi,v,v,v,o,a,b,nPages*pagesize+lo) - copyto!(v, k, v, a <= m ? a : b, hi-k+1) + a, b, k = merge!((a, b, _) -> a <= m && b <= hi, v, v, v, o, a, b, nPages * pagesize + lo) + copyto!(v, k, v, a <= m ? a : b, hi - k + 1) else use_a = a <= m # copy the incomplete page @@ -856,7 +851,7 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer while use_a ? a <= m - pagesize + 1 : b <= hi - pagesize + 1 pages = next_page!(pageLocations, pages, pagesize, lo, a) offset = page_offset(pages.current) - copyto!(v, offset+1, v, use_a ? a : b, pagesize) + copyto!(v, offset + 1, v, use_a ? a : b, pagesize) use_a && (a += pagesize) use_a || (b += pagesize) end @@ -874,7 +869,7 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer for _ in 1:3 page = (nextB > nPages ? (nextA += 1) : (nextB += 1)) - 1 page = permute_pages!(>(3), v, pageLocations, page_offset, pagesize, page) - copyto!(v, page_offset(page)+1, buf, (page-1)*pagesize+1, pagesize) + copyto!(v, page_offset(page) + 1, buf, (page - 1) * pagesize + 1, pagesize) end # copy remaining permutation cycles @@ -884,11 +879,11 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer page == donePageIndex && continue # copy the data belonging to donePageIndex into buf - copyto!(buf, 1, v, page_offset(page)+1, pagesize) + copyto!(buf, 1, v, page_offset(page) + 1, pagesize) # follow the cycle starting with the newly freed page permute_pages!(!=(donePageIndex), v, pageLocations, page_offset, pagesize, page) - copyto!(v, page_offset(donePageIndex)+1, buf, 1, pagesize) + copyto!(v, page_offset(donePageIndex) + 1, buf, 1, pagesize) end end end @@ -897,14 +892,14 @@ end # -> redefine for compatibility with earlier versions midpoint(lo::Integer, hi::Integer) = lo + ((hi - lo) >>> 0x01) -function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, pageLocations) where T +function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, pageLocations) where {T} len = hi + 1 - lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end - m = midpoint(lo, hi-1) # hi-1: ensure midpoint is rounded down. OK, because lo < hi is satisfied here + m = midpoint(lo, hi - 1) # hi-1: ensure midpoint is rounded down. OK, because lo < hi is satisfied here pagedmergesort!(v, lo, m, o, buf, pageLocations) - pagedmergesort!(v, m+1, hi, o, buf, pageLocations) + pagedmergesort!(v, m + 1, hi, o, buf, pageLocations) if len <= length(buf) twoended_merge!(v, lo, m, hi, o, buf) else @@ -919,7 +914,7 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::PagedMergeSortAlg, pagesize = isqrt(n) buf = Vector{eltype(v)}(undef, 3pagesize) nPages = n ÷ pagesize - pageLocations = Vector{Int}(undef, nPages-3) + pageLocations = Vector{Int}(undef, nPages - 3) pagedmergesort!(v, lo, hi, o, buf, pageLocations) return v end From d3ea719ad618f0ca6de112b1316ea7beb1bffaf5 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sat, 12 Aug 2023 15:27:28 +0200 Subject: [PATCH 41/45] Remove ThreadedPagedMergesort --- README.md | 3 -- src/SortingAlgorithms.jl | 74 +--------------------------------------- test/runtests.jl | 2 +- 3 files changed, 2 insertions(+), 77 deletions(-) diff --git a/README.md b/README.md index 37e4404..44b87fc 100644 --- a/README.md +++ b/README.md @@ -10,14 +10,11 @@ The `SortingAlgorithms` package provides three sorting algorithms that can be us - [TimSort] – a stable, general purpose, hybrid, O(n log n) comparison sort that adapts to different common patterns of partially ordered input data. - [CombSort] – an unstable, general purpose, in-place, O(n log n) comparison sort with O(n^2) pathological cases that can attain good efficiency through SIMD instructions and instruction level paralellism on modern hardware. - [PagedMergeSort] – a stable, general purpose, O(n log n) time and O(sqrt n) space comparison sort. -- [ThreadedPagedMergeSort] – a stable, general purpose, O(n log n) time and O(sqrt n) space comparison sort using multithreaded [parallel recursion]. [HeapSort]: https://en.wikipedia.org/wiki/Heapsort [TimSort]: https://en.wikipedia.org/wiki/Timsort [CombSort]: https://en.wikipedia.org/wiki/Comb_sort [PagedMergeSort]: https://link.springer.com/chapter/10.1007/BFb0016253 -[ThreadedPagedMergeSort]: https://link.springer.com/chapter/10.1007/BFb0016253 -[parallel recursion]: https://en.wikipedia.org/wiki/Merge_sort#Merge_sort_with_parallel_recursion ## Usage diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 0d95949..dd81576 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -9,14 +9,13 @@ using Base.Order import Base.Sort: sort! import DataStructures: heapify!, percolate_down! -export HeapSort, TimSort, RadixSort, CombSort, PagedMergeSort, ThreadedPagedMergeSort +export HeapSort, TimSort, RadixSort, CombSort, PagedMergeSort struct HeapSortAlg <: Algorithm end struct TimSortAlg <: Algorithm end struct RadixSortAlg <: Algorithm end struct CombSortAlg <: Algorithm end struct PagedMergeSortAlg <: Algorithm end -struct ThreadedPagedMergeSortAlg <: Algorithm end function maybe_optimize(x::Algorithm) isdefined(Base.Sort, :InitialOptimizations) ? Base.Sort.InitialOptimizations(x) : x @@ -82,28 +81,6 @@ Characteristics: """ const PagedMergeSort = maybe_optimize(PagedMergeSortAlg()) -""" - ThreadedPagedMergeSort - -Multithreaded version of PagedMergeSort using Threads.nthreads-times the auxilary space. -Uses multithreaded recursion (not multithreaded merging), so the maximum speedup is -limited to O(log n) -Characteristics: - - *stable*: does preserve the ordering of elements which - compare equal (e.g. "a" and "A" in a sort of letters which - ignores case). - - *`O(√n)`* auxilary memory usage. - - *`O(n log n)`* garuanteed runtime. - -## References - - Dvořák, S., Ďurian, B. (1986). Towards an efficient merging. In: Gruska, J., Rovan, B., Wiedermann, - J. (eds) Mathematical Foundations of Computer Science 1986. MFCS 1986. Lecture Notes in Computer Science, vol 233. - Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0016253 - - https://max-arbuzov.blogspot.com/2021/10/merge-sort-with-osqrtn-auxiliary-memory.html - - https://en.wikipedia.org/wiki/Merge_sort#Merge_sort_with_parallel_recursion -""" -const ThreadedPagedMergeSort = maybe_optimize(ThreadedPagedMergeSortAlg()) - ## Heap sort function sort!(v::AbstractVector, lo::Int, hi::Int, a::HeapSortAlg, o::Ordering) @@ -918,53 +895,4 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::PagedMergeSortAlg, pagedmergesort!(v, lo, hi, o, buf, pageLocations) return v end - -Base.@static if VERSION >= v"1.3" - const PAGEDMERGESORT_THREADING_THRESHOLD = 2^13 - function threaded_pagedmergesort!(v::AbstractVector, lo::Integer, hi::Integer, o::Ordering, bufs, pageLocations, c::Channel, threadingThreshold::Integer) - len = hi + 1 - lo - m = midpoint(lo, hi - 1) # hi-1: ensure midpoint is rounded down. OK, because lo < hi is satisfied here - if len > threadingThreshold - thr = Threads.@spawn threaded_pagedmergesort!(v, lo, m, o, bufs, pageLocations, c, threadingThreshold) - threaded_pagedmergesort!(v, m + 1, hi, o, bufs, pageLocations, c, threadingThreshold) - wait(thr) - id = take!(c) - buf = bufs[id] - pageLocations = pageLocations[id] - else - id = take!(c) - buf = bufs[id] - pageLocations = pageLocations[id] - pagedmergesort!(v, lo, m, o, buf, pageLocations) - pagedmergesort!(v, m + 1, hi, o, buf, pageLocations) - end - if len <= length(buf) - twoended_merge!(v, lo, m, hi, o, buf) - else - paged_merge!(v, lo, m, hi, o, buf, pageLocations) - end - put!(c, id) - return v - end - function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::ThreadedPagedMergeSortAlg, o::Ordering) - lo >= hi && return v - n = hi + 1 - lo - nThreads = Threads.nthreads() - (n < PAGEDMERGESORT_THREADING_THRESHOLD || nThreads < 2) && return sort!(v, lo, hi, PagedMergeSortAlg(), o) - threadingThreshold = max(n ÷ 4nThreads, PAGEDMERGESORT_THREADING_THRESHOLD) - pagesize = isqrt(n) - nPages = n ÷ pagesize - bufs = [Vector{eltype(v)}(undef, 3pagesize) for _ in 1:nThreads] # allocate buffer for each thread - pageLocations = [Vector{Int}(undef, nPages + 1) for _ in 1:nThreads] - c = Channel{Int}(nThreads) # channel holds indices of available buffers - for i = 1:nThreads - put!(c, i) - end - threaded_pagedmergesort!(v, lo, hi, o, bufs, pageLocations, c, threadingThreshold) - return v - end -else - # use single threaded function when VERSION < v"1.3" - sort!(v::AbstractVector, lo::Integer, hi::Integer, ::ThreadedPagedMergeSortAlg, o::Ordering) = sort!(v, lo, hi, PagedMergeSort, o) -end end # module diff --git a/test/runtests.jl b/test/runtests.jl index 1b4d51b..eb6c8d5 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -3,7 +3,7 @@ using Test using StatsBase using Random -stable_algorithms = [TimSort, RadixSort, PagedMergeSort, ThreadedPagedMergeSort] +stable_algorithms = [TimSort, RadixSort, PagedMergeSort] unstable_algorithms = [HeapSort, CombSort] a = rand(1:10000, 1000) From 3f337f04a47cef461681dd2fe805bc746f3b3f65 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Sat, 12 Aug 2023 15:41:29 +0200 Subject: [PATCH 42/45] Use the name "scratch" instead of "buf" or "t" --- src/SortingAlgorithms.jl | 68 ++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index dd81576..b077bf6 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -664,9 +664,9 @@ end # PagedMergeSort ### -# merge v[lo:m] and v[m+1:hi] ([A;B]) using buffer t[1:1+hi-lo] +# merge v[lo:m] and v[m+1:hi] ([A;B]) using scratch[1:1+hi-lo] # This is faster than merge! but requires twice as much auxiliary memory. -function twoended_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, t::AbstractVector{T}) where T +function twoended_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, scratch::AbstractVector{T}) where T @assert lo ≤ m ≤ hi @assert abs((m-lo) - (hi-(m+1))) ≤ 1 "twoended_merge! only supports balanced merges" len = 1 + hi - lo @@ -682,18 +682,18 @@ function twoended_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Inte # two ended merge while k_lo <= len ÷ 2 if lt(o, v[b_lo], v[a_lo]) - t[k_lo] = v[b_lo] + scratch[k_lo] = v[b_lo] b_lo += 1 else - t[k_lo] = v[a_lo] + scratch[k_lo] = v[a_lo] a_lo += 1 end k_lo +=1 if !lt(o, v[b_hi], v[a_hi]) - t[k_hi] = v[b_hi] + scratch[k_hi] = v[b_hi] b_hi -= 1 else - t[k_hi] = v[a_hi] + scratch[k_hi] = v[a_hi] a_hi -= 1 end k_hi -=1 @@ -701,14 +701,14 @@ function twoended_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Inte # if the input length is odd, # one item remains if a_lo <= a_hi - t[k_lo] = v[a_lo] + scratch[k_lo] = v[a_lo] elseif b_lo <= b_hi - t[k_lo] = v[b_lo] + scratch[k_lo] = v[b_lo] end # copy back from t to v offset = lo-1 for i = 1:len - v[offset+i] = t[i] + v[offset+i] = scratch[i] end end end @@ -730,13 +730,13 @@ Base.@propagate_inbounds function merge!(f::Function, a,b,k end -# merge v[lo:m] and v[m+1:hi] using buffer t[1:1+m-lo] +# merge v[lo:m] and v[m+1:hi] using scratch[1:1+m-lo] # based on Base.Sort MergeSort -function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, t::AbstractVector{T}) where {T} - copyto!(t, 1, v, lo, m - lo + 1) +function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, scratch::AbstractVector{T}) where {T} + copyto!(scratch, 1, v, lo, m - lo + 1) f(_, b, k) = k < b <= hi - a, b, k = merge!(f, v, t, v, o, 1, m + 1, lo) - copyto!(v, k, t, a, b - k) + a, b, k = merge!(f, v, scratch, v, o, 1, m + 1, lo) + copyto!(v, k, scratch, a, b - k) end struct Pages @@ -769,8 +769,8 @@ Base.@propagate_inbounds function permute_pages!(f, v, pageLocations, page_offse page end -# merge v[lo:m] (A) and v[m+1:hi] (B) using buffer buf in O(sqrt(n)) space -function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, pageLocations::AbstractVector{<:Integer}) where {T} +# merge v[lo:m] (A) and v[m+1:hi] (B) using scratch[] in O(sqrt(n)) space +function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, scratch::AbstractVector{T}, pageLocations::AbstractVector{<:Integer}) where {T} @assert lo < m < hi lenA = 1 + m - lo lenB = hi - m @@ -779,13 +779,13 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer # which is guaranteed by pagedmergesort! @assert lenA <= lenB - # regular merge if buffer is big enough - lenA <= length(buf) && return merge!(v, lo, m, hi, o, buf) + # regular merge if scratch is big enough + lenA <= length(scratch) && return merge!(v, lo, m, hi, o, scratch) len = lenA + lenB pagesize = isqrt(len) nPages = len ÷ pagesize # a partial page at the end does not count - @assert length(buf) >= 3pagesize + @assert length(scratch) >= 3pagesize @assert length(pageLocations) >= nPages - 3 @inline page_offset(page) = (page - 1) * pagesize + lo - 1 @@ -794,8 +794,8 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer ################## # merge ################## - # merge the first 3 pages into buf - a, b, _ = merge!((_, _, k) -> k <= 3pagesize, buf, v, v, o, lo, m + 1, 1) + # merge the first 3 pages into scratch + a, b, _ = merge!((_, _, k) -> k <= 3pagesize, scratch, v, v, o, lo, m + 1, 1) # initialize variables for merging into pages pages = Pages(-17, 0, 1, (m - lo) ÷ pagesize + 2) # first argument is unused # more efficient loop while more than pagesize elements of A and B are remaining @@ -840,13 +840,13 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer ################## # rearrange pages ################## - # copy pages belonging to the 3 permutation chains ending with a page in the buffer + # copy pages belonging to the 3 permutation chains ending with a page in the scratch space nextA, nextB = pages.nextA, pages.nextB for _ in 1:3 page = (nextB > nPages ? (nextA += 1) : (nextB += 1)) - 1 page = permute_pages!(>(3), v, pageLocations, page_offset, pagesize, page) - copyto!(v, page_offset(page) + 1, buf, (page - 1) * pagesize + 1, pagesize) + copyto!(v, page_offset(page) + 1, scratch, (page - 1) * pagesize + 1, pagesize) end # copy remaining permutation cycles @@ -855,12 +855,12 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer page = pageLocations[donePageIndex-3] page == donePageIndex && continue - # copy the data belonging to donePageIndex into buf - copyto!(buf, 1, v, page_offset(page) + 1, pagesize) + # copy the data belonging to donePageIndex into scratch + copyto!(scratch, 1, v, page_offset(page) + 1, pagesize) # follow the cycle starting with the newly freed page permute_pages!(!=(donePageIndex), v, pageLocations, page_offset, pagesize, page) - copyto!(v, page_offset(donePageIndex) + 1, buf, 1, pagesize) + copyto!(v, page_offset(donePageIndex) + 1, scratch, 1, pagesize) end end end @@ -869,18 +869,18 @@ end # -> redefine for compatibility with earlier versions midpoint(lo::Integer, hi::Integer) = lo + ((hi - lo) >>> 0x01) -function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, o::Ordering, buf::AbstractVector{T}, pageLocations) where {T} +function pagedmergesort!(v::AbstractVector{T}, lo::Integer, hi::Integer, o::Ordering, scratch::AbstractVector{T}, pageLocations) where {T} len = hi + 1 - lo if len <= Base.SMALL_THRESHOLD return Base.Sort.sort!(v, lo, hi, Base.Sort.InsertionSortAlg(), o) end m = midpoint(lo, hi - 1) # hi-1: ensure midpoint is rounded down. OK, because lo < hi is satisfied here - pagedmergesort!(v, lo, m, o, buf, pageLocations) - pagedmergesort!(v, m + 1, hi, o, buf, pageLocations) - if len <= length(buf) - twoended_merge!(v, lo, m, hi, o, buf) + pagedmergesort!(v, lo, m, o, scratch, pageLocations) + pagedmergesort!(v, m + 1, hi, o, scratch, pageLocations) + if len <= length(scratch) + twoended_merge!(v, lo, m, hi, o, scratch) else - paged_merge!(v, lo, m, hi, o, buf, pageLocations) + paged_merge!(v, lo, m, hi, o, scratch, pageLocations) end return v end @@ -889,10 +889,10 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::PagedMergeSortAlg, lo >= hi && return v n = hi + 1 - lo pagesize = isqrt(n) - buf = Vector{eltype(v)}(undef, 3pagesize) + scratch = Vector{eltype(v)}(undef, 3pagesize) nPages = n ÷ pagesize pageLocations = Vector{Int}(undef, nPages - 3) - pagedmergesort!(v, lo, hi, o, buf, pageLocations) + pagedmergesort!(v, lo, hi, o, scratch, pageLocations) return v end end # module From d2ea0a714d8634b6ddf5dd4ed5b096e45b9bb5de Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Mon, 14 Aug 2023 14:04:52 +0200 Subject: [PATCH 43/45] Use custom _unsafe_copyto! instead of copyto! To work around https://github.com/JuliaLang/julia/issues/50900 --- src/SortingAlgorithms.jl | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index e9cf117..0a3c816 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -685,6 +685,19 @@ end # PagedMergeSort ### +# unsafe version of copyto! +# as workaround for https://github.com/JuliaLang/julia/issues/50900 +function _unsafe_copyto!(dest, doffs, src, soffs, n) + @inbounds for i in 0:n-1 + dest[doffs + i] = src[soffs + i] + end + dest +end + +function _unsafe_copyto!(dest::Array, doffs, src::Array, soffs, n) + unsafe_copyto!(dest, doffs, src, soffs, n) +end + # merge v[lo:m] and v[m+1:hi] ([A;B]) using scratch[1:1+hi-lo] # This is faster than merge! but requires twice as much auxiliary memory. function twoended_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, scratch::AbstractVector{T}) where T @@ -754,10 +767,10 @@ end # merge v[lo:m] and v[m+1:hi] using scratch[1:1+m-lo] # based on Base.Sort MergeSort function merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer, o::Ordering, scratch::AbstractVector{T}) where {T} - copyto!(scratch, 1, v, lo, m - lo + 1) + _unsafe_copyto!(scratch, 1, v, lo, m - lo + 1) f(_, b, k) = k < b <= hi a, b, k = merge!(f, v, scratch, v, o, 1, m + 1, lo) - copyto!(v, k, scratch, a, b - k) + _unsafe_copyto!(v, k, scratch, a, b - k) end struct Pages @@ -784,7 +797,7 @@ Base.@propagate_inbounds function permute_pages!(f, v, pageLocations, page_offse while f(page) plc = pageLocations[page-3] # plc has data belonging to page pageLocations[page-3] = page - copyto!(v, page_offset(page) + 1, v, page_offset(plc) + 1, pagesize) + _unsafe_copyto!(v, page_offset(page) + 1, v, page_offset(plc) + 1, pagesize) page = plc end page @@ -837,25 +850,25 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer # if the last page is reached, merge the remaining elements into the final partial page if pages.currentNumber + 3 == nPages && a <= m && b <= hi a, b, k = merge!((a, b, _) -> a <= m && b <= hi, v, v, v, o, a, b, nPages * pagesize + lo) - copyto!(v, k, v, a <= m ? a : b, hi - k + 1) + _unsafe_copyto!(v, k, v, a <= m ? a : b, hi - k + 1) else use_a = a <= m # copy the incomplete page partial_page_size = offset + pagesize - k + 1 - copyto!(v, k, v, use_a ? a : b, partial_page_size) + _unsafe_copyto!(v, k, v, use_a ? a : b, partial_page_size) use_a && (a += partial_page_size) use_a || (b += partial_page_size) # copy the remaining full pages while use_a ? a <= m - pagesize + 1 : b <= hi - pagesize + 1 pages = next_page!(pageLocations, pages, pagesize, lo, a) offset = page_offset(pages.current) - copyto!(v, offset + 1, v, use_a ? a : b, pagesize) + _unsafe_copyto!(v, offset + 1, v, use_a ? a : b, pagesize) use_a && (a += pagesize) use_a || (b += pagesize) end # copy the final partial page only if sourcing from A. # If sourcing from B, it is already in place. - use_a && copyto!(v, hi - m + a, v, a, m - a + 1) + use_a && _unsafe_copyto!(v, hi - m + a, v, a, m - a + 1) end ################## @@ -867,7 +880,7 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer for _ in 1:3 page = (nextB > nPages ? (nextA += 1) : (nextB += 1)) - 1 page = permute_pages!(>(3), v, pageLocations, page_offset, pagesize, page) - copyto!(v, page_offset(page) + 1, scratch, (page - 1) * pagesize + 1, pagesize) + _unsafe_copyto!(v, page_offset(page) + 1, scratch, (page - 1) * pagesize + 1, pagesize) end # copy remaining permutation cycles @@ -877,11 +890,11 @@ function paged_merge!(v::AbstractVector{T}, lo::Integer, m::Integer, hi::Integer page == donePageIndex && continue # copy the data belonging to donePageIndex into scratch - copyto!(scratch, 1, v, page_offset(page) + 1, pagesize) + _unsafe_copyto!(scratch, 1, v, page_offset(page) + 1, pagesize) # follow the cycle starting with the newly freed page permute_pages!(!=(donePageIndex), v, pageLocations, page_offset, pagesize, page) - copyto!(v, page_offset(donePageIndex) + 1, scratch, 1, pagesize) + _unsafe_copyto!(v, page_offset(donePageIndex) + 1, scratch, 1, pagesize) end end end From 717f9ae6273c3e14136354eae3c4cc4c09e26629 Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Mon, 14 Aug 2023 14:20:55 +0200 Subject: [PATCH 44/45] Fix: pageLocations is initialized with a negative number of elements Occured for small inputs when not using initial optimizations. --- src/SortingAlgorithms.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SortingAlgorithms.jl b/src/SortingAlgorithms.jl index 0a3c816..f6b67e1 100644 --- a/src/SortingAlgorithms.jl +++ b/src/SortingAlgorithms.jl @@ -925,7 +925,7 @@ function sort!(v::AbstractVector, lo::Integer, hi::Integer, ::PagedMergeSortAlg, pagesize = isqrt(n) scratch = Vector{eltype(v)}(undef, 3pagesize) nPages = n ÷ pagesize - pageLocations = Vector{Int}(undef, nPages - 3) + pageLocations = Vector{Int}(undef, max(0, nPages - 3)) pagedmergesort!(v, lo, hi, o, scratch, pageLocations) return v end From d367ee8a17a087c6c54994e9375269782e8334dd Mon Sep 17 00:00:00 2001 From: Lukas Schwerdt Date: Thu, 17 Aug 2023 18:03:19 +0200 Subject: [PATCH 45/45] Add test for small input without initial optimizations --- test/runtests.jl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/runtests.jl b/test/runtests.jl index 78d7282..d5b7935 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -151,3 +151,10 @@ for T in (Float64, Int, UInt8) end end end + +# PagedMergeSort with small input without InitialOptimizations +# (https://github.com/JuliaCollections/SortingAlgorithms.jl/pull/71#discussion_r1292774352) +if isdefined(Base.Sort, :InitialOptimizations) + v = [0,1] + @test sort(v, alg=SortingAlgorithms.PagedMergeSortAlg()) == sort(v, alg=MergeSort) +end