glrb 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gl.rb +3 -2
- data/lib/math/mat.rb +41 -10
- data/lib/math/vec.rb +7 -3
- data/lib/utils/helpers.rb +1 -0
- data/lib/utils/version.rb +1 -1
- metadata +2 -3
- data/test.ppm +0 -64
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32729b8faab82ca32211bf89905d9f405b95e0d5dcef88289e8429fe3f5b980b
|
4
|
+
data.tar.gz: cc9c88592e09288a1b95892e282b6d1d48c7ad12cc07e8179d438694fd26369a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26ff4370b860a1ec2e12c2df95795700b0d47177a35887fac23aa5e243d5777fce8be651d3bfdb60a1267287b2ec1e565eb7601eb2be6c3e9aa7a2a2ded1ef88
|
7
|
+
data.tar.gz: 9c326afa555b58e1a765f3c0a5e8d6e573ad668dddabe42421164e23b1714bf2e997290f06178336703f7b6e2c0e5c4531e7c73b8bcc256cf1114333c86dd585
|
data/lib/gl.rb
CHANGED
@@ -36,8 +36,8 @@ module Glrb
|
|
36
36
|
|
37
37
|
def gl_render (gl, i)
|
38
38
|
gl.i = i
|
39
|
-
gl.FragCoord = vec (i % gl.w).to_f + 0.5, i.to_f / gl.w.to_f + 0.5, 0, 0
|
40
|
-
gl.FragColor = gl.shader.call
|
39
|
+
gl.FragCoord = vec (i % gl.w).to_f + 0.5, gl.h.to_f - i.to_f / gl.w.to_f + 0.5, 0, 0
|
40
|
+
gl.FragColor = gl.shader.call || gl.FragColor
|
41
41
|
end
|
42
42
|
|
43
43
|
def gl_test (gl)
|
@@ -52,6 +52,7 @@ module Glrb
|
|
52
52
|
open(@filename, "wb") do |f|
|
53
53
|
f.puts("P6\n#{gl.w} #{gl.h}\n255")
|
54
54
|
(gl.w.to_i * gl.h.to_i).times do |i|
|
55
|
+
puts "#{i} / #{gl.w.to_i * gl.h.to_i}"
|
55
56
|
col = gl[i].map(->v, i{(v.clamp(0, 1) * 255).to_i})
|
56
57
|
f.write(col.to_a.pack("ccc"))
|
57
58
|
end
|
data/lib/math/mat.rb
CHANGED
@@ -1,26 +1,57 @@
|
|
1
1
|
module Glrb
|
2
2
|
class Mat
|
3
|
-
def initialize(init = [
|
4
|
-
@v = init
|
3
|
+
def initialize(init = [Vec.new, Vec.new, Vec.new], args = 0)
|
4
|
+
@v = init.map{|v| isArr(v) ? Vec.new(v) : v}
|
5
5
|
@n = args
|
6
6
|
@_ = ->(v = @v, n = @n){Vec.new(v, n)}
|
7
7
|
end
|
8
|
-
def to_a() isArr(@v) ? @v : @v[@n] end
|
9
|
-
def to_s() to_a.to_s end
|
8
|
+
def to_a() (isArr(@v) ? @v : @v[@n]) end
|
9
|
+
def to_s() to_a.map(&:to_a).to_s end
|
10
10
|
def size() to_a.size end
|
11
|
-
def sort() @_[->n{to_a.sort}] end
|
12
11
|
def map(_) @_[->n{to_a.map.with_index{|v, i| _[v, i]}}] end
|
13
|
-
def
|
14
|
-
def -(_) map(isNum(_) ? ->v, i{v - _} : ->v, i{v - _[i]}) end
|
15
|
-
def *(_) map(isNum(_) ? ->v, i{v * _} : ->v, i{v * _[i]}) end
|
16
|
-
def /(_) map(isNum(_) ? ->v, i{v / _} : ->v, i{v / _[i]}) end
|
12
|
+
def tr() transpose(self) end
|
17
13
|
def [](_) @v[_] end
|
14
|
+
def +(_) map(!isMat(_) ? ->v, i{v + _} : ->v, i{v + _[i]}) end
|
15
|
+
def -(_) map(!isMat(_) ? ->v, i{v - _} : ->v, i{v - _[i]}) end
|
16
|
+
def %(_) map(isNum(_) ? ->v, i{v % _} : mx(_, ->a, b{a % b})) end
|
17
|
+
def *(_) map(isNum(_) ? ->v, i{v * _} : mx(_, ->a, b{a * b})) end
|
18
|
+
def /(_) map(isNum(_) ? ->v, i{v / _} : mx(_, ->a, b{a / b})) end
|
18
19
|
def <=>(_) @v = _ end
|
19
20
|
def >>(_) _ << @n end
|
20
21
|
def <<(n) @_[@v, n] end
|
21
22
|
def +@() map(->v, i{+v}) end
|
22
23
|
def -@() map(->v, i{-v}) end
|
24
|
+
def x() self[0] end
|
25
|
+
def y() self[1] end
|
26
|
+
def z() self[2] end
|
27
|
+
def xy() @_[->n{v = to_a; [v[0], v[1]]}] end
|
28
|
+
def xz() @_[->n{v = to_a; [v[0], v[2]]}] end
|
29
|
+
def yx() @_[->n{v = to_a; [v[1], v[0]]}] end
|
30
|
+
def yz() @_[->n{v = to_a; [v[1], v[2]]}] end
|
31
|
+
def zx() @_[->n{v = to_a; [v[2], v[0]]}] end
|
32
|
+
def zy() @_[->n{v = to_a; [v[2], v[1]]}] end
|
33
|
+
def xyz() @_[->n{v = to_a; [v[0], v[1], v[2]]}] end
|
34
|
+
def xzy() @_[->n{v = to_a; [v[0], v[2], v[1]]}] end
|
35
|
+
def yxz() @_[->n{v = to_a; [v[1], v[0], v[2]]}] end
|
36
|
+
def yzx() @_[->n{v = to_a; [v[1], v[2], v[0]]}] end
|
37
|
+
def zxy() @_[->n{v = to_a; [v[2], v[0], v[1]]}] end
|
38
|
+
def zyx() @_[->n{v = to_a; [v[2], v[1], v[0]]}] end
|
39
|
+
def mx(v, _) isMat(v) ? mxm(v, _) : mxv(v, _) end
|
40
|
+
def mxv(v, _) ->a, i{ _[a, v].sum } end
|
41
|
+
def mxm(m, _)
|
42
|
+
m = transpose(m)
|
43
|
+
->v, i{
|
44
|
+
v.map(->vv, j{
|
45
|
+
_[v, m[j]].sum
|
46
|
+
})
|
47
|
+
}
|
48
|
+
end
|
23
49
|
end
|
24
50
|
|
25
|
-
def
|
51
|
+
def mat(*init) Mat.new(init) end
|
52
|
+
|
53
|
+
def transpose(m)
|
54
|
+
a = m.to_a
|
55
|
+
Mat.new(a.size.times.map{|i| a[i].size.times.map{|j| a[j][i]}})
|
56
|
+
end
|
26
57
|
end
|
data/lib/math/vec.rb
CHANGED
@@ -10,19 +10,20 @@ module Glrb
|
|
10
10
|
def size() to_a.size end
|
11
11
|
def map(_) @_[->n{to_a.map.with_index{|v, i| _[v, i]}}] end
|
12
12
|
def sum() to_a.sum end
|
13
|
-
def length() Math::sqrt(self
|
13
|
+
def length() Math::sqrt(dot(self)) end
|
14
14
|
def !@() self / length end
|
15
15
|
def [](_) v = to_a; v[_] end
|
16
16
|
def +(_) map(isNum(_) ? ->v, i{v + _} : ->v, i{v + _[i]}) end
|
17
17
|
def -(_) map(isNum(_) ? ->v, i{v - _} : ->v, i{v - _[i]}) end
|
18
18
|
def %(_) map(isNum(_) ? ->v, i{v % _} : ->v, i{v % _[i]}) end
|
19
|
-
def *(_) isNum(_) ?
|
20
|
-
def /(_) isNum(_) ?
|
19
|
+
def *(_) map(isNum(_) ? ->v, i{v * _} : ->v, i{v * _[i]}) end
|
20
|
+
def /(_) map(isNum(_) ? ->v, i{v / _} : ->v, i{v / _[i]}) end
|
21
21
|
def <=>(_) @v = _ end
|
22
22
|
def >>(_) _ << @n end
|
23
23
|
def <<(n) @_[@v, n] end
|
24
24
|
def +@() map(->v, i{+v}) end
|
25
25
|
def -@() map(->v, i{-v}) end
|
26
|
+
def dot(_) map(->v, i{v * _[i]}).sum end
|
26
27
|
def cross(_) @_[->n{ _vec_cross(to_a, _.to_a) }] end
|
27
28
|
def x() self[0] end
|
28
29
|
def y() self[1] end
|
@@ -48,4 +49,7 @@ module Glrb
|
|
48
49
|
a[2] * b[0] - a[0] * b[2],
|
49
50
|
a[0] * b[1] - a[1] * b[0], ]
|
50
51
|
end
|
52
|
+
def dot(a, b) a.dot(b) end
|
53
|
+
def cross(a, b) a.cross(b) end
|
54
|
+
def length(a) a.length end
|
51
55
|
end
|
data/lib/utils/helpers.rb
CHANGED
data/lib/utils/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tseijp
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -72,7 +72,6 @@ files:
|
|
72
72
|
- lib/utils/helpers.rb
|
73
73
|
- lib/utils/version.rb
|
74
74
|
- sig/glrb.rbs
|
75
|
-
- test.ppm
|
76
75
|
homepage: https://tsei.jp
|
77
76
|
licenses:
|
78
77
|
- MIT
|
data/test.ppm
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
P6
|
2
|
-
150.0 150.0
|
3
|
-
255
|
4
|
-
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~~~~~~~}}}}}}}}}}}}|||||||||||||||||||||||||||||||||||||||||||||||||||}}}}}}}}}}}}~~~~~~~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~~~~}}}}}}}}}|||||||||{{{{{{{{{{{{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz{{{{{{{{{{{{|||||||||}}}}}}}}}~~~~~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~~~~}}}}}}|||||||||{{{{{{{{{zzzzzzzzzyyyyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyzzzzzzzzz{{{{{{{{{|||||||||}}}}}}~~~~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~~~~}}}}}}||||||{{{{{{zzzzzzzzzyyyyyyyyyxxxxxxxxxwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxxxxxxxxxyyyyyyyyyzzzzzzzzz{{{{{{||||||}}}}}}~~~~~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}}}}||||||{{{{{{zzzzzzyyyyyyxxxxxxxxxwwwwwwwwwvvvvvvvvvvvvuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuvvvvvvvvvvvvwwwwwwwwwxxxxxxxxxyyyyyyzzzzzz{{{{{{||||||}}}}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}||||||{{{{{{zzzzzzyyyxxxxxxxxxwwwwwwvvvvvvvvvuuuuuuuuutttttttttttttttssssssssssssssssssssssssssssssssstttttttttttttttuuuuuuuuuvvvvvvvvvwwwwwwxxxxxxyyyyyyzzzzzz{{{{{{|||}}}}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~~~~}}}||||||{{{zzzzzzyyyxxxxxxwwwwwwvvvvvvuuuuuuuuutttttttttsssssssssrrrrrrrrrrrrrrrrrrrrrqqqqqqqqqqqqqqqrrrrrrrrrrrrrrrrrrrrrssssssssstttttttttuuuuuuuuuvvvvvvwwwwwwxxxyyyyyyzzzzzz{{{||||||}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~~~~}}}|||{{{{{{zzzyyyyyyxxxwwwwwwvvvvvvuuuuuuttttttsssssssssrrrrrrrrrqqqqqqqqqqqqpppppppppppppppppppppppppppppppppppppppppppppqqqqqqqqqqqqrrrrrrrrrsssssssssttttttuuuuuuvvvvvvwwwxxxxxxyyyyyyzzz{{{||||||}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}|||{{{{{{zzzyyyxxxxxxwwwvvvvvvuuuuuuttttttssssssrrrrrrqqqqqqqqqpppppppppoooooooooooonnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooooooooooopppppppppqqqqqqqqqrrrrrrssssssttttttuuuuuuvvvwwwwwwxxxyyyyyyzzz{{{{{{|||}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}|||{{{{{{zzzyyyxxxxxxwwwvvvvvvuuuttttttssssssrrrqqqqqqpppppppppooooooooonnnnnnnnnmmmmmmmmmmmmmmmmmmlllllllllllllllllllllmmmmmmmmmmmmmmmmmmnnnnnnnnnoooooooooppppppqqqqqqrrrrrrssssssttttttuuuvvvvvvwwwxxxxxxyyyzzz{{{||||||}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}}}}|||{{{zzzyyyxxxxxxwwwvvvuuuuuutttssssssrrrqqqqqqppppppoooooonnnnnnnnnmmmmmmmmmlllllllllkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklllllllllmmmmmmmmmnnnnnnnnnooooooppppppqqqrrrrrrsssssstttuuuuuuvvvwwwxxxxxxyyyzzz{{{|||}}}~~~~~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}|||{{{zzzyyyxxxxxxwwwvvvuuuuuutttsssrrrrrrqqqppppppoooooonnnnnnmmmmmmlllllllllkkkkkkkkkjjjjjjjjjjjjiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiijjjjjjjjjjjjkkkkkkkkklllllllllmmmmmmnnnnnnoooooopppqqqqqqrrrsssssstttuuuuuuvvvwwwxxxyyyyyyzzz{{{|||}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}|||{{{{{{zzzyyyxxxwwwvvvuuuuuutttsssrrrrrrqqqppppppooonnnnnnmmmmmmllllllkkkkkkjjjjjjiiiiiiiiiiiihhhhhhhhhhhhhhhggggggggggggggggggggggggggghhhhhhhhhhhhhhhiiiiiiiiijjjjjjjjjkkkkkkllllllmmmmmmnnnnnnoooppppppqqqrrrrrrssstttuuuuuuvvvwwwxxxyyyzzz{{{|||}}}}}}~~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}|||{{{zzzyyyxxxwwwvvvvvvuuutttsssrrrqqqqqqpppoooooonnnmmmmmmllllllkkkjjjjjjiiiiiiiiihhhhhhggggggggggggfffffffffffffffffffffffffffffffffffffffffffffffffffggggggggghhhhhhhhhiiiiiijjjjjjkkkkkkllllllmmmmmmnnnoooooopppqqqrrrrrrssstttuuuvvvwwwwwwxxxyyyzzz{{{|||}}}~~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttsssrrrrrrqqqpppooonnnnnnmmmllllllkkkjjjjjjiiiiiihhhhhhgggggggggffffffeeeeeeeeeeeeddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeefffffffffggggggggghhhhhhiiiiiijjjkkkkkklllmmmmmmnnnoooooopppqqqrrrsssssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~���������������������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttssssssrrrqqqpppooonnnnnnmmmlllkkkkkkjjjjjjiiihhhhhhggggggffffffeeeeeeeeedddddddddccccccccccccbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccdddddddddeeeeeeeeeffffffgggggghhhhhhiiijjjjjjkkkllllllmmmnnnoooooopppqqqrrrssstttuuuuuuvvvwwwxxxyyyzzz{{{|||}}}���������������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppoooooonnnmmmlllkkkkkkjjjiiiiiihhhggggggffffffeeeeeeddddddccccccbbbbbbbbbbbbaaaaaaaaaaaaaaaaaa```````````````aaaaaaaaaaaaaaaaaabbbbbbbbbcccccccccddddddeeeeeeffffffgggggghhhiiiiiijjjkkkllllllmmmnnnoooppppppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~������������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}|||{{{yyyxxxwwwvvvuuutttsssrrrqqqqqqpppooonnnmmmlllkkkkkkjjjiiihhhhhhgggffffffeeeeeedddccccccbbbbbbbbbaaaaaa````````````_____________________________________________`````````aaaaaaaaabbbbbbccccccddddddeeeeeefffgggggghhhiiiiiijjjkkkllllllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~������������������������������������������������������������������������������������������������������������������������������������������������~~~}}}{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmllllllkkkjjjiiihhhhhhgggfffeeeeeeddddddcccbbbbbbaaaaaa`````````______^^^^^^^^^^^^^^^]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^_________`````````aaaaaabbbbbbcccddddddeeeffffffggghhhiiiiiijjjkkklllmmmnnnnnnooopppqqqrrrssstttuuuvvvwwwxxxzzz{{{|||}}}~~~������������������������������������������������������������������������������������������������������������������������������������������~~~|||{{{zzzyyyxxxwwwvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhhhhgggfffeeeeeedddccccccbbbaaaaaa``````______^^^^^^]]]]]]]]]]]]\\\\\\\\\\\\\\\[[[[[[[[[[[[[[[[[[[[[\\\\\\\\\\\\\\\]]]]]]]]]^^^^^^^^^______``````aaaaaabbbccccccdddeeeeeefffggghhhiiiiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz|||}}}~~~������������������������������������������������������������������������������������������������������������������������������������~~~|||{{{zzzyyyxxxwwwvvvtttsssrrrqqqpppooonnnmmmlllkkkjjjjjjiiihhhgggfffeeeeeedddcccbbbbbbaaa``````______^^^^^^]]]]]]\\\\\\[[[[[[[[[[[[ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[[[[[[[[[\\\\\\\\\]]]]]]^^^^^^______```aaaaaabbbccccccdddeeeffffffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz|||}}}~~~������������������������������������������������������������������������������������������������������������������������������~~~|||{{{zzzyyyxxxvvvuuutttsssrrrqqqpppooonnnmmmlllkkkjjjiiihhhgggfffeeeeeedddcccbbbaaaaaa```______^^^^^^]]]\\\\\\[[[[[[[[[ZZZZZZYYYYYYYYYYYYXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZZ[[[[[[\\\\\\]]]]]]^^^^^^___``````aaabbbbbbcccdddeeefffgggggghhhiiijjjkkklllmmmnnnooopppqqqrrrsssuuuvvvwwwxxxyyyzzz|||}}}~~~������������������������������������������������������������������������������������������������������������������������~~~|||{{{zzzyyyxxxvvvuuutttsssrrrqqqpppooonnnlllkkkjjjiiiiiihhhgggfffeeedddcccbbbaaaaaa```______^^^]]]]]]\\\[[[[[[ZZZZZZYYYYYYYYYXXXXXXWWWWWWWWWWWWWWWVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWWWWWWWWWWXXXXXXXXXYYYYYYYYYZZZZZZ[[[\\\\\\]]]]]]^^^______```aaabbbccccccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttvvvwwwxxxyyyzzz|||}}}~~~������������������������������������������������������������������������������������������������������������������~~~|||{{{zzzyyyxxxvvvuuutttsssrrrqqqooonnnmmmlllkkkjjjiiihhhgggfffeeedddcccbbbbbbaaa```___^^^^^^]]]\\\\\\[[[ZZZZZZYYYYYYXXXXXXWWWWWWVVVVVVVVVVVVUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVWWWWWWWWWXXXXXXYYYYYYZZZ[[[[[[\\\\\\]]]^^^______```aaabbbcccdddeeeffffffggghhhiiijjjkkkmmmnnnooopppqqqrrrssstttvvvwwwxxxyyyzzz|||}}}~~~������������������������������������������������������������������������������������������������������������~~~}}}{{{zzzyyyxxxvvvuuutttsssrrrpppooonnnmmmlllkkkjjjiiihhhgggfffeeedddcccbbbaaa```___^^^^^^]]]\\\[[[[[[ZZZYYYYYYXXXXXXWWWWWWVVVVVVUUUUUUTTTTTTTTTTTTSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTUUUUUUUUUVVVVVVWWWWWWXXXXXXYYYZZZZZZ[[[\\\\\\]]]^^^___``````aaabbbcccdddeeefffggghhhiiijjjkkklllmmmooopppqqqrrrssstttvvvwwwxxxyyyzzz|||}}}~~~���������������������������������������������������������������������������������������������������������~~~}}}{{{zzzyyyxxxvvvuuutttsssqqqpppooonnnmmmlllkkkjjjhhhgggfffeeedddcccbbbaaa``````___^^^]]]\\\[[[[[[ZZZYYYXXXXXXWWWWWWVVVUUUUUUTTTTTTTTTSSSSSSRRRRRRRRRRRRRRRQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRRRRRRRRRSSSSSSSSSTTTTTTUUUUUUVVVVVVWWWWWWXXXYYYYYYZZZ[[[\\\\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnpppqqqrrrssstttvvvwwwxxxyyy{{{|||}}}~~~���������������������������������������������������������������������������������������������������~~~}}}|||zzzyyyxxxvvvuuutttsssqqqpppooonnnmmmllljjjiiihhhgggfffeeedddcccbbbaaa```___^^^]]]\\\[[[[[[ZZZYYYXXXXXXWWWVVVVVVUUUTTTTTTSSSSSSRRRRRRQQQQQQQQQQQQPPPPPPPPPPPPPPPOOOOOOOOOOOOOOOPPPPPPPPPPPPPPPQQQQQQQQQRRRRRRRRRSSSSSSTTTUUUUUUVVVVVVWWWXXXYYYYYYZZZ[[[\\\]]]^^^^^^___```aaabbbcccdddeeefffhhhiiijjjkkklllmmmnnnpppqqqrrrssstttvvvwwwxxxyyy{{{|||}}}������������������������������������������������������������������������������������������������~~~}}}|||zzzyyyxxxwwwuuutttsssrrrpppooonnnmmmkkkjjjiiihhhgggfffeeedddcccbbbaaa```___^^^]]]\\\[[[ZZZYYYXXXXXXWWWVVVUUUUUUTTTSSSSSSRRRRRRQQQQQQPPPPPPOOOOOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQRRRRRRSSSTTTTTTUUUVVVVVVWWWXXXYYYYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhjjjkkklllmmmnnnpppqqqrrrsssuuuvvvwwwxxxzzz{{{|||~~~������������������������������������������������������������������������������������������}}}|||{{{yyyxxxwwwuuutttsssrrrpppooonnnmmmkkkjjjiiihhhgggfffeeecccbbbaaa```___^^^]]]\\\[[[ZZZYYYYYYXXXWWWVVVUUUUUUTTTSSSRRRRRRQQQQQQPPPPPPOOOOOONNNNNNMMMMMMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMMMNNNNNNNNNOOOOOOPPPPPPQQQQQQRRRSSSSSSTTTUUUVVVVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhjjjkkklllmmmnnnpppqqqrrrsssuuuvvvwwwyyyzzz{{{}}}~~~������������������������������������������������������������������������������������~~~|||{{{zzzxxxwwwvvvtttsssrrrpppooonnnmmmkkkjjjiiihhhgggfffdddcccbbbaaa```___^^^]]]\\\[[[ZZZYYYXXXWWWVVVUUUUUUTTTSSSRRRRRRQQQPPPPPPOOONNNNNNMMMMMMMMMLLLLLLKKKKKKKKKKKKKKKJJJJJJJJJJJJJJJJJJKKKKKKKKKKKKKKKLLLLLLLLLMMMMMMNNNNNNOOOOOOPPPPPPQQQRRRSSSSSSTTTUUUVVVWWWWWWXXXYYYZZZ[[[\\\]]]^^^___```aaacccdddeeefffggghhhjjjkkklllmmmnnnpppqqqrrrtttuuuvvvxxxyyyzzz|||}}}~~~���������������������������������������������������������������������������������~~~}}}{{{zzzyyywwwvvvuuusssrrrqqqooonnnmmmllljjjiiihhhgggeeedddcccbbbaaa```___^^^\\\[[[ZZZYYYXXXWWWWWWVVVUUUTTTSSSRRRQQQQQQPPPOOOOOONNNMMMMMMLLLLLLKKKKKKJJJJJJJJJJJJIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJKKKKKKKKKLLLLLLMMMNNNNNNOOOPPPPPPQQQRRRSSSSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbdddeeefffggghhhjjjkkklllmmmooopppqqqrrrtttuuuvvvxxxyyy{{{|||}}}������������������������������������������������������������������������������}}}|||zzzyyyxxxvvvuuutttrrrqqqpppnnnmmmllljjjiiihhhgggeeedddcccbbbaaa```^^^]]]\\\[[[ZZZYYYXXXWWWVVVUUUTTTSSSRRRRRRQQQPPPOOONNNNNNMMMLLLLLLKKKKKKJJJJJJIIIIIIHHHHHHHHHHHHGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHIIIIIIIIIJJJJJJKKKKKKLLLMMMMMMNNNOOOOOOPPPQQQRRRSSSTTTUUUVVVVVVWWWXXXYYY[[[\\\]]]^^^___```aaabbbdddeeefffggghhhjjjkkklllnnnooopppqqqssstttuuuwwwxxxzzz{{{|||~~~������������������������������������������������������������������������~~~|||{{{yyyxxxwwwuuutttrrrqqqpppnnnmmmlllkkkiiihhhgggeeedddcccbbbaaa___^^^]]]\\\[[[ZZZYYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNNNNMMMLLLKKKKKKJJJJJJIIIIIIHHHHHHGGGGGGFFFFFFFFFFFFEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFGGGGGGGGGHHHHHHIIIIIIJJJJJJKKKLLLLLLMMMNNNOOOPPPPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[]]]^^^___```aaabbbdddeeefffgggiiijjjkkklllnnnoooppprrrssstttvvvwwwyyyzzz{{{}}}~~~���������������������������������������������������������������������~~~}}}{{{zzzxxxwwwvvvtttsssqqqpppooommmlllkkkiiihhhgggfffdddcccbbbaaa___^^^]]]\\\[[[ZZZXXXWWWVVVUUUTTTSSSRRRQQQPPPOOOOOONNNMMMLLLKKKKKKJJJIIIIIIHHHGGGGGGFFFFFFFFFEEEEEEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEEEEFFFFFFGGGGGGHHHHHHIIIJJJJJJKKKLLLLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\^^^___```aaabbbdddeeefffgggiiijjjkkkmmmnnnoooqqqrrrsssuuuvvvxxxyyyzzz|||}}}������������������������������������������������������������������}}}|||zzzyyywwwvvvuuusssrrrpppooonnnlllkkkjjjhhhgggfffdddcccbbbaaa___^^^]]]\\\[[[YYYXXXWWWVVVUUUTTTSSSRRRQQQPPPOOONNNMMMLLLKKKKKKJJJIIIHHHHHHGGGFFFFFFEEEEEEDDDDDDCCCCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCDDDDDDEEEEEEFFFFFFGGGGGGHHHIIIIIIJJJKKKLLLMMMNNNNNNOOOPPPQQQRRRSSSTTTVVVWWWXXXYYYZZZ[[[\\\^^^___```aaabbbdddeeefffhhhiiijjjlllmmmnnnpppqqqrrrtttuuuwwwxxxzzz{{{|||~~~������������������������������������������������������������~~~|||{{{yyyxxxvvvuuutttrrrqqqooonnnmmmkkkjjjiiigggfffeeecccbbbaaa___^^^]]]\\\[[[YYYXXXWWWVVVUUUTTTSSSRRRQQQOOOOOONNNMMMLLLKKKJJJIIIHHHHHHGGGFFFEEEEEEDDDDDDCCCCCCBBBBBBAAAAAAAAAAAA@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAAAAAAABBBBBBBBBCCCCCCDDDDDDEEEFFFFFFGGGHHHIIIJJJJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVXXXYYYZZZ[[[\\\^^^___```aaacccdddeeeggghhhiiikkklllmmmooopppqqqssstttvvvwwwyyyzzz{{{}}}~~~������������������������������������������������������������~~~}}}{{{zzzxxxwwwvvvtttsssqqqpppnnnmmmllljjjiiihhhfffeeedddbbbaaa```^^^]]]\\\[[[YYYXXXWWWVVVUUUTTTRRRQQQPPPOOONNNMMMLLLKKKJJJIIIHHHHHHGGGFFFEEEEEEDDDCCCCCCBBBAAAAAAAAA@@@@@@???????????????>>>>>>>>>>>>???????????????@@@@@@@@@AAAAAABBBBBBCCCDDDDDDEEEFFFFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVXXXYYYZZZ[[[\\\^^^___```bbbcccdddfffggghhhjjjkkklllnnnoooqqqrrrsssuuuvvvxxxyyy{{{|||~~~������������������������������������������������������}}}|||zzzyyyxxxvvvuuusssrrrpppooommmlllkkkiiihhhgggeeedddbbbaaa```___]]]\\\[[[YYYXXXWWWVVVUUUSSSRRRQQQPPPOOONNNMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDDDDCCCBBBBBBAAA@@@@@@??????>>>>>>>>>====================================>>>>>>>>>??????@@@@@@AAAAAABBBCCCCCCDDDEEEFFFGGGGGGHHHIIIJJJKKKLLLMMMNNNOOOQQQRRRSSSTTTUUUVVVXXXYYYZZZ[[[]]]^^^___```bbbccceeefffgggiiijjjkkkmmmnnnpppqqqrrrtttuuuwwwxxxzzz{{{}}}~~~������������������������������������������������������~~~}}}{{{zzzxxxwwwuuutttrrrqqqooonnnmmmkkkjjjhhhgggfffdddcccaaa```___]]]\\\[[[ZZZXXXWWWVVVUUUSSSRRRQQQPPPOOONNNLLLKKKJJJIIIHHHGGGFFFFFFEEEDDDCCCBBBAAAAAA@@@??????>>>>>>======<<<<<<<<<<<<;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<======>>>>>>??????@@@@@@AAABBBCCCCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPRRRSSSTTTUUUVVVXXXYYYZZZ[[[]]]^^^___aaabbbccceeefffhhhiiijjjlllmmmoooppprrrsssuuuvvvwwwyyyzzz|||}}}������������������������������������������������}}}|||zzzyyywwwvvvtttsssqqqpppnnnmmmllljjjiiigggfffeeecccbbb```___^^^\\\[[[ZZZXXXWWWVVVUUUSSSRRRQQQPPPOOOMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAAAAA@@@???>>>>>>======<<<<<<;;;;;;::::::::::::999999999999999999::::::::::::;;;;;;;;;<<<<<<===>>>>>>???@@@@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPRRRSSSTTTUUUWWWXXXYYYZZZ\\\]]]^^^```aaabbbdddeeeggghhhjjjkkklllnnnoooqqqrrrtttuuuwwwxxxzzz{{{}}}~~~������������������������������������������������~~~}}}{{{yyyxxxvvvuuusssrrrqqqooonnnlllkkkiiihhhfffeeedddbbbaaa___^^^]]][[[ZZZYYYWWWVVVUUUSSSRRRQQQPPPOOOMMMLLLKKKJJJIIIHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>>>>===<<<<<<;;;:::::::::999999888888888888888888888888888888888888999999999::::::;;;;;;<<<======>>>???@@@@@@AAABBBCCCDDDEEEFFFGGGHHHIIIKKKLLLMMMNNNOOOPPPRRRSSSTTTUUUWWWXXXYYY[[[\\\]]]___```bbbcccdddfffgggiiijjjkkkmmmnnnpppqqqssstttvvvwwwyyyzzz|||}}}������������������������������������������}}}|||zzzyyywwwvvvtttsssqqqpppnnnmmmkkkjjjhhhgggeeedddcccaaa```^^^]]]\\\ZZZYYYXXXVVVUUUTTTRRRQQQPPPOOOMMMLLLKKKJJJIIIGGGFFFEEEDDDCCCBBBAAA@@@??????>>>===<<<;;;;;;:::999999888888777777777666666666666666666666666666666777777777888888999999::::::;;;<<<======>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJLLLMMMNNNOOOPPPRRRSSSTTTVVVWWWXXXZZZ[[[\\\^^^___aaabbbccceeefffhhhiiikkklllnnnoooqqqrrrtttuuuwwwxxxzzz{{{}}}~~~������������������������������������������~~~}}}{{{yyyxxxvvvuuusssrrrpppooommmllljjjiiigggfffeeecccbbb```___]]]\\\[[[YYYXXXVVVUUUTTTRRRQQQPPPOOOMMMLLLKKKJJJHHHGGGFFFEEEDDDCCCBBBAAA@@@???>>>===<<<;;;;;;:::999888888777777666666555555555555444444444444444444555555555555666666777777888888999::::::;;;<<<===>>>>>>???@@@AAABBBDDDEEEFFFGGGHHHIIIJJJLLLMMMNNNOOOQQQRRRSSSUUUVVVWWWYYYZZZ[[[]]]^^^```aaabbbdddeeeggghhhjjjkkkmmmnnnpppqqqssstttvvvwwwyyyzzz|||}}}������������������������������������}}}|||zzzyyywwwvvvtttsssqqqpppnnnmmmkkkjjjhhhgggeeedddbbbaaa___^^^\\\[[[ZZZXXXWWWUUUTTTSSSQQQPPPOOOMMMLLLKKKJJJHHHGGGFFFEEEDDDCCCBBB@@@???>>>======<<<;;;:::999888888777666666555555444444333333333333333333333333333333333333444444444555555666777777888999::::::;;;<<<===>>>???@@@AAABBBCCCDDDFFFGGGHHHIIIJJJLLLMMMNNNPPPQQQRRRTTTUUUVVVXXXYYYZZZ\\\]]]___```bbbccceeefffgggiiijjjlllmmmoooppprrrtttuuuwwwxxxzzz{{{}}}~~~������������������������������������~~~}}}{{{zzzxxxvvvuuusssrrrpppooommmllljjjiiigggfffdddcccaaa```^^^]]]\\\ZZZYYYWWWVVVTTTSSSRRRPPPOOONNNLLLKKKJJJIIIGGGFFFEEEDDDCCCAAA@@@???>>>===<<<;;;:::999888888777666555555444333333333222222111111111111111111111111111111222222222333333444444555666666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDFFFGGGHHHIIIKKKLLLMMMNNNPPPQQQSSSTTTUUUWWWXXXZZZ[[[\\\^^^___aaabbbdddeeeggghhhjjjkkkmmmnnnpppqqqssstttvvvwwwyyy{{{|||~~~������������������������������~~~|||zzzyyywwwvvvtttsssqqqpppnnnmmmkkkiiihhhfffeeecccbbb```___^^^\\\[[[YYYXXXVVVUUUSSSRRRQQQOOONNNMMMKKKJJJIIIGGGFFFEEEDDDBBBAAA@@@???>>>===<<<;;;:::999888777666555444444333222222111111000000000000/////////////////////000000000111111222222333444444555666777777888999:::;;;<<<===???@@@AAABBBCCCDDDFFFGGGHHHIIIKKKLLLMMMOOOPPPRRRSSSTTTVVVWWWYYYZZZ\\\]]]^^^```aaacccdddfffgggiiijjjlllmmmoooqqqrrrtttuuuwwwxxxzzz{{{}}}������������������������������}}}{{{zzzxxxwwwuuutttrrrpppooommmllljjjiiigggfffdddcccaaa```^^^]]][[[ZZZXXXWWWUUUTTTSSSQQQPPPNNNMMMLLLJJJIIIHHHFFFEEEDDDBBBAAA@@@???>>>===;;;:::999888777666555555444333222222111000000//////............------------............//////000000111111222333333444555666777888999:::;;;<<<===>>>@@@AAABBBCCCEEEFFFGGGHHHJJJKKKLLLNNNOOOQQQRRRSSSUUUVVVXXXYYY[[[\\\^^^___aaabbbdddeeeggghhhjjjkkkmmmnnnpppqqqsssuuuvvvxxxyyy{{{|||~~~������������������������������~~~|||{{{yyyxxxvvvtttsssqqqpppnnnmmmkkkjjjhhhfffeeecccbbb```___]]]\\\ZZZYYYWWWVVVTTTSSSRRRPPPOOOMMMLLLKKKIIIHHHFFFEEEDDDCCCAAA@@@???>>><<<;;;:::999888777666555444333222111111000//////......------,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------......///000000111222333444555666777888999:::;;;<<<===>>>@@@AAABBBCCCEEEFFFGGGIIIJJJKKKMMMNNNPPPQQQSSSTTTUUUWWWXXXZZZ[[[]]]^^^```aaacccdddfffgggiiikkklllnnnoooqqqrrrtttuuuwwwyyyzzz|||}}}������������������������}}}|||zzzyyywwwuuutttrrrqqqooommmllljjjiiigggfffdddcccaaa```^^^]]][[[ZZZXXXWWWUUUTTTRRRQQQOOONNNLLLKKKJJJHHHGGGEEEDDDCCCAAA@@@???>>><<<;;;:::999888777666555444333222111000///......---,,,,,,+++++++++************************+++++++++,,,,,,------...///000000111222333444555666777888:::;;;<<<===>>>@@@AAABBBDDDEEEFFFHHHIIIJJJLLLMMMOOOPPPRRRSSSUUUVVVXXXYYY[[[\\\^^^___aaabbbdddeeeggghhhjjjkkkmmmoooppprrrsssuuuvvvxxxzzz{{{}}}~~~������������������������~~~}}}{{{zzzxxxvvvuuusssrrrpppnnnmmmkkkjjjhhhgggeeecccbbb```___]]]\\\ZZZYYYWWWVVVTTTSSSQQQPPPNNNMMMKKKJJJIIIGGGFFFDDDCCCBBB@@@???>>><<<;;;:::999888666555444333222111000///......---,,,++++++******))))))))))))((((((((((((((()))))))))******++++++,,,------...///000111222333444555666777888:::;;;<<<===???@@@AAACCCDDDEEEGGGHHHJJJKKKLLLNNNOOOQQQRRRTTTUUUWWWXXXZZZ[[[]]]^^^```aaacccdddfffhhhiiikkklllnnnoooqqqssstttvvvwwwyyy{{{|||~~~������������������~~~|||{{{yyywwwvvvtttsssqqqooonnnlllkkkiiigggfffdddcccaaa```^^^]]][[[YYYXXXVVVUUUSSSRRRPPPOOOMMMLLLKKKIIIHHHFFFEEECCCBBBAAA???>>>===;;;:::999888666555444333222111000///...---,,,++++++***))))))((((((''''''''''''''''''''''''''''''(((((())))))******+++,,,---...//////000222333444555666777888:::;;;<<<>>>???@@@BBBCCCDDDFFFGGGIIIJJJLLLMMMNNNPPPQQQSSSTTTVVVWWWYYY[[[\\\^^^___aaabbbdddeeegggiiijjjlllmmmoooppprrrtttuuuwwwxxxzzz|||}}}������������������}}}|||zzzxxxwwwuuutttrrrpppooommmllljjjhhhgggeeedddbbbaaa___]]]\\\ZZZYYYWWWVVVTTTSSSQQQPPPNNNMMMKKKJJJHHHGGGEEEDDDBBBAAA@@@>>>===<<<:::999888666555444333222111///...---,,,,,,+++***)))((((((''''''&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&'''(((((()))******+++,,,---...///000111222444555666777999:::;;;===>>>???AAABBBCCCEEEFFFHHHIIIKKKLLLNNNOOOQQQRRRTTTUUUWWWXXXZZZ[[[]]]^^^```bbbccceeefffhhhjjjkkkmmmnnnppprrrsssuuuvvvxxxzzz{{{}}}~~~������������������~~~}}}{{{zzzxxxvvvuuusssqqqpppnnnmmmkkkiiihhhfffeeecccaaa```^^^]]][[[ZZZXXXVVVUUUSSSRRRPPPOOOMMMLLLJJJIIIGGGFFFDDDCCCAAA@@@???===<<<;;;999888777555444333222000///...---,,,+++***)))(((((('''&&&%%%%%%$$$$$$$$$##################$$$$$$$$$%%%%%%&&&''''''((()))***+++,,,---...///000111222444555666777999:::;;;===>>>@@@AAACCCDDDEEEGGGHHHJJJKKKMMMNNNPPPQQQSSSTTTVVVXXXYYY[[[\\\^^^___aaacccdddfffgggiiikkklllnnnoooqqqssstttvvvwwwyyy{{{|||~~~������������������~~~|||{{{yyywwwvvvtttsssqqqooonnnllljjjiiigggfffdddbbbaaa___^^^\\\ZZZYYYWWWVVVTTTSSSQQQPPPNNNLLLKKKIIIHHHFFFEEECCCBBBAAA???>>><<<;;;999888777555444333222000///...---,,,+++***)))((('''&&&%%%%%%$$$######""""""""""""""""""""""""""""""######$$$$$$%%%&&&''''''((()))***+++---...///000111333444555666888999;;;<<<===???@@@BBBCCCEEEFFFHHHIIIKKKLLLNNNOOOQQQRRRTTTUUUWWWXXXZZZ\\\]]]___```bbbdddeeeggghhhjjjlllmmmoooppprrrtttuuuwwwyyyzzz|||~~~������������}}}|||zzzyyywwwuuutttrrrpppooommmllljjjhhhgggeeecccbbb```___]]][[[ZZZXXXWWWUUUTTTRRRPPPOOOMMMLLLJJJIIIGGGFFFDDDCCCAAA@@@>>>===;;;:::999777666444333222000///...---,,,***)))((('''&&&%%%%%%$$$###""""""!!!!!! !!!!!!""""""###$$$$$$%%%&&&'''((()))***+++,,,...///000111333444555777888:::;;;<<<>>>???AAABBBDDDEEEGGGHHHJJJKKKMMMNNNPPPRRRSSSUUUVVVXXXYYY[[[]]]^^^```aaaccceeefffhhhiiikkkmmmnnnppprrrsssuuuwwwxxxzzz{{{}}}������������}}}{{{zzzxxxvvvuuusssrrrpppnnnmmmkkkiiihhhfffeeecccaaa```^^^\\\[[[YYYXXXVVVTTTSSSQQQPPPNNNMMMKKKIIIHHHFFFEEECCCBBB@@@???===<<<:::999888666555333222111///...---,,,***)))((('''&&&%%%$$$###"""!!!!!! !!!!!!"""###$$$%%%&&&'''((()))***+++,,,...///000222333444666777999:::<<<===>>>@@@AAACCCEEEFFFHHHIIIKKKLLLNNNOOOQQQRRRTTTVVVWWWYYYZZZ\\\^^^___aaabbbdddfffgggiiikkklllnnnpppqqqssstttvvvxxxyyy{{{}}}~~~������������~~~}}}{{{yyyxxxvvvtttsssqqqooonnnlllkkkiiigggfffdddbbbaaa___]]]\\\ZZZYYYWWWUUUTTTRRRQQQOOOMMMLLLJJJIIIGGGFFFDDDCCCAAA@@@>>>===;;;:::888777555444222111000...---,,,***)))((('''&&&%%%######"""!!! !!!!!!"""###$$$%%%&&&((()))***+++---...///111222333555666888999;;;<<<>>>???AAABBBDDDEEEGGGHHHJJJLLLMMMOOOPPPRRRSSSUUUWWWXXXZZZ\\\]]]___```bbbdddeeegggiiijjjlllmmmoooqqqrrrtttvvvwwwyyy{{{|||~~~������������~~~|||{{{yyywwwvvvtttrrrqqqooommmllljjjhhhgggeeedddbbb```___]]][[[ZZZXXXVVVUUUSSSRRRPPPNNNMMMKKKJJJHHHGGGEEECCCBBB@@@???===<<<:::999777666444333111000///---,,,+++)))((('''&&&$$$###"""!!! !!!"""###$$$%%%&&&((()))***,,,---...000111333444555777888:::;;;===>>>@@@BBBCCCEEEFFFHHHIIIKKKMMMNNNPPPQQQSSSUUUVVVXXXYYY[[[]]]^^^```bbbccceeefffhhhjjjkkkmmmoooppprrrtttuuuwwwyyyzzz|||~~~������~~~|||zzzyyywwwuuutttrrrpppooommmkkkjjjhhhfffeeecccaaa```^^^\\\[[[YYYXXXVVVTTTSSSQQQOOONNNLLLKKKIIIGGGFFFDDDCCCAAA@@@>>>===;;;999888666555333222000///...,,,+++)))((('''&&&$$$###"""!!! !!!"""###$$$%%%'''((()))+++,,,---///000222333555666888999;;;<<<>>>???AAABBBDDDFFFGGGIIIJJJLLLNNNOOOQQQRRRTTTVVVWWWYYY[[[\\\^^^___aaacccdddfffhhhiiikkkmmmnnnppprrrsssuuuwwwxxxzzz|||}}}������}}}|||zzzxxxwwwuuusssrrrpppnnnmmmkkkiiihhhfffdddcccaaa___^^^\\\ZZZYYYWWWUUUTTTRRRQQQOOOMMMLLLJJJIIIGGGEEEDDDBBBAAA???===<<<:::999777666444333111000...---+++***((('''&&&$$$###"""!!! """###$$$%%%'''(((***+++,,,...///111222444555777888:::<<<===???@@@BBBCCCEEEGGGHHHJJJKKKMMMOOOPPPRRRTTTUUUWWWXXXZZZ\\\]]]___aaabbbdddfffgggiiikkklllnnnpppqqqsssuuuvvvxxxzzz{{{}}}������}}}{{{zzzxxxvvvuuusssqqqpppnnnlllkkkiiigggfffdddbbbaaa___]]]\\\ZZZXXXWWWUUUSSSRRRPPPNNNMMMKKKJJJHHHFFFEEECCCBBB@@@>>>===;;;:::888666555333222000///---,,,***)))'''&&&%%%###"""!!!!!!"""###$$$&&&''')))***,,,---///000222333555666888999;;;<<<>>>@@@AAACCCDDDFFFHHHIIIKKKMMMNNNPPPQQQSSSUUUVVVXXXZZZ[[[]]]___```bbbdddeeegggiiijjjlllnnnoooqqqssstttvvvxxxyyy{{{}}}~~~������~~~}}}{{{yyyxxxvvvtttsssqqqooommmllljjjhhhgggeeecccbbb```___]]][[[ZZZXXXVVVUUUSSSQQQPPPNNNLLLKKKIIIGGGFFFDDDCCCAAA???>>><<<;;;999777666444333111000...,,,+++)))((('''%%%$$$"""!!! !!!"""###%%%&&&((()))+++,,,...///111222444666777999:::<<<===???AAABBBDDDFFFGGGIIIJJJLLLNNNOOOQQQSSSTTTVVVXXXYYY[[[]]]^^^```bbbccceeeggghhhjjjlllmmmoooqqqrrrtttvvvwwwyyy{{{|||~~~������~~~|||{{{yyywwwvvvtttrrrqqqooommmllljjjhhhfffeeecccaaa```^^^\\\[[[YYYWWWVVVTTTSSSQQQOOONNNLLLJJJIIIGGGEEEDDDBBB@@@???===<<<:::888777555444222000///---,,,***)))'''&&&$$$###!!! !!!###$$$%%%'''(((***,,,---///000222333555777888:::;;;===???@@@BBBCCCEEEGGGHHHJJJLLLMMMOOOQQQRRRTTTVVVWWWYYY[[[\\\^^^```aaaccceeefffhhhjjjkkkmmmoooppprrrtttuuuwwwyyyzzz|||~~~~~~|||zzzyyywwwuuutttrrrpppooommmkkkjjjhhhfffeeecccaaa___^^^\\\ZZZYYYWWWUUUTTTRRRPPPOOOMMMKKKJJJHHHGGGEEECCCBBB@@@>>>===;;;999888666555333111000...---+++)))(((&&&%%%###""" """###%%%&&&((()))+++,,,...000111333444666888999;;;<<<>>>@@@AAACCCEEEFFFHHHJJJKKKMMMOOOPPPRRRTTTUUUWWWYYYZZZ\\\^^^___aaacccdddfffhhhiiikkkmmmnnnppprrrsssuuuwwwxxxzzz|||}}}}}}|||zzzxxxwwwuuusssrrrpppnnnmmmkkkiiihhhfffdddcccaaa___^^^\\\ZZZXXXWWWUUUSSSRRRPPPNNNMMMKKKIIIHHHFFFDDDCCCAAA@@@>>><<<;;;999777666444222111///...,,,***)))'''&&&$$$###!!! !!!"""$$$%%%''')))***,,,---///111222444555777999:::<<<>>>???AAACCCDDDFFFHHHIIIKKKMMMNNNPPPRRRSSSUUUWWWXXXZZZ\\\]]]___aaabbbdddfffgggiiikkklllnnnpppqqqsssuuuwwwxxxzzz|||}}}}}}|||zzzxxxwwwuuusssqqqpppnnnlllkkkiiigggfffdddbbbaaa___]]]\\\ZZZXXXWWWUUUSSSQQQPPPNNNLLLKKKIIIGGGFFFDDDBBBAAA???===<<<:::888777555444222000///---+++***((('''%%%###"""
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
!!!###%%%&&&(((***+++---///000222444555777999:::<<<>>>@@@AAACCCEEEFFFHHHJJJKKKMMMOOOPPPRRRTTTVVVWWWYYY[[[\\\^^^```aaaccceeeggghhhjjjlllmmmoooqqqrrrtttvvvxxxyyy{{{}}}~~~~~~}}}{{{yyywwwvvvtttrrrqqqooommmllljjjhhhgggeeecccaaa```^^^\\\[[[YYYWWWVVVTTTRRRPPPOOOMMMKKKJJJHHHFFFEEECCCAAA???>>><<<:::999777555444222000///---+++)))(((&&&$$$###!!!
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|