Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
da9cf0ee
Commit
da9cf0ee
authored
Feb 01, 2013
by
Brett Cannon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #17098: Be more stringent of setting __loader__ on early imported
modules. Also made test more rigorous.
parent
e7387b47
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
310 additions
and
294 deletions
+310
-294
Lib/importlib/_bootstrap.py
Lib/importlib/_bootstrap.py
+5
-2
Lib/test/test_importlib/test_api.py
Lib/test/test_importlib/test_api.py
+6
-0
Python/importlib.h
Python/importlib.h
+299
-292
No files found.
Lib/importlib/_bootstrap.py
View file @
da9cf0ee
...
@@ -1704,10 +1704,13 @@ def _setup(sys_module, _imp_module):
...
@@ -1704,10 +1704,13 @@ def _setup(sys_module, _imp_module):
BYTECODE_SUFFIXES
=
DEBUG_BYTECODE_SUFFIXES
BYTECODE_SUFFIXES
=
DEBUG_BYTECODE_SUFFIXES
module_type
=
type
(
sys
)
module_type
=
type
(
sys
)
for
module
in
sys
.
modules
.
value
s
():
for
name
,
module
in
sys
.
modules
.
item
s
():
if
isinstance
(
module
,
module_type
):
if
isinstance
(
module
,
module_type
):
if
not
hasattr
(
module
,
'__loader__'
):
if
not
hasattr
(
module
,
'__loader__'
):
module
.
__loader__
=
BuiltinImporter
if
name
in
sys
.
builtin_module_names
:
module
.
__loader__
=
BuiltinImporter
elif
_imp
.
is_frozen
(
name
):
module
.
__loader__
=
FrozenImporter
self_module
=
sys
.
modules
[
__name__
]
self_module
=
sys
.
modules
[
__name__
]
for
builtin_name
in
(
'_io'
,
'_warnings'
,
'builtins'
,
'marshal'
):
for
builtin_name
in
(
'_io'
,
'_warnings'
,
'builtins'
,
'marshal'
):
...
...
Lib/test/test_importlib/test_api.py
View file @
da9cf0ee
...
@@ -184,6 +184,12 @@ class StartupTests(unittest.TestCase):
...
@@ -184,6 +184,12 @@ class StartupTests(unittest.TestCase):
if
isinstance
(
module
,
types
.
ModuleType
):
if
isinstance
(
module
,
types
.
ModuleType
):
self
.
assertTrue
(
hasattr
(
module
,
'__loader__'
),
self
.
assertTrue
(
hasattr
(
module
,
'__loader__'
),
'{!r} lacks a __loader__ attribute'
.
format
(
name
))
'{!r} lacks a __loader__ attribute'
.
format
(
name
))
if
name
in
sys
.
builtin_module_names
:
self
.
assertEqual
(
importlib
.
machinery
.
BuiltinImporter
,
module
.
__loader__
)
elif
imp
.
is_frozen
(
name
):
self
.
assertEqual
(
importlib
.
machinery
.
FrozenImporter
,
module
.
__loader__
)
def
test_main
():
def
test_main
():
from
test.support
import
run_unittest
from
test.support
import
run_unittest
...
...
Python/importlib.h
View file @
da9cf0ee
...
@@ -4119,299 +4119,306 @@ unsigned char _Py_M__importlib[] = {
...
@@ -4119,299 +4119,306 @@ unsigned char _Py_M__importlib[] = {
0
,
11
,
12
,
1
,
15
,
2
,
24
,
1
,
12
,
1
,
18
,
1
,
6
,
3
,
12
,
1
,
0
,
11
,
12
,
1
,
15
,
2
,
24
,
1
,
12
,
1
,
18
,
1
,
6
,
3
,
12
,
1
,
23
,
1
,
6
,
1
,
4
,
4
,
35
,
3
,
40
,
2
,
117
,
10
,
0
,
0
,
0
,
95
,
23
,
1
,
6
,
1
,
4
,
4
,
35
,
3
,
40
,
2
,
117
,
10
,
0
,
0
,
0
,
95
,
95
,
105
,
109
,
112
,
111
,
114
,
116
,
95
,
95
,
99
,
2
,
0
,
0
,
0
,
0
,
0
,
95
,
105
,
109
,
112
,
111
,
114
,
116
,
95
,
95
,
99
,
2
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
5
,
0
,
0
,
0
,
13
,
0
,
0
,
0
,
67
,
0
,
0
,
0
,
115
,
229
,
0
,
0
,
1
6
,
0
,
0
,
0
,
13
,
0
,
0
,
0
,
67
,
0
,
0
,
0
,
115
,
24
,
2
,
0
,
0
,
124
,
1
,
0
,
97
,
0
,
0
,
124
,
0
,
0
,
97
,
1
,
0
,
116
,
3
,
0
,
0
,
124
,
1
,
0
,
97
,
0
,
0
,
124
,
0
,
0
,
97
,
1
,
0
,
116
,
1
,
0
,
106
,
2
,
0
,
106
,
3
,
0
,
114
,
33
,
0
,
116
,
4
,
0
,
97
,
5
,
1
,
0
,
106
,
2
,
0
,
106
,
3
,
0
,
114
,
33
,
0
,
116
,
4
,
0
,
97
,
5
,
0
,
110
,
6
,
0
,
116
,
6
,
0
,
97
,
5
,
0
,
116
,
7
,
0
,
116
,
1
,
0
,
0
,
110
,
6
,
0
,
116
,
6
,
0
,
97
,
5
,
0
,
116
,
7
,
0
,
116
,
1
,
0
,
131
,
1
,
0
,
125
,
2
,
0
,
120
,
68
,
0
,
116
,
1
,
0
,
106
,
8
,
0
,
106
,
131
,
1
,
0
,
125
,
2
,
0
,
120
,
119
,
0
,
116
,
1
,
0
,
106
,
8
,
0
,
106
,
9
,
0
,
131
,
0
,
0
,
68
,
93
,
51
,
0
,
125
,
3
,
0
,
116
,
10
,
0
,
124
,
9
,
0
,
131
,
0
,
0
,
68
,
93
,
102
,
0
,
92
,
2
,
0
,
125
,
3
,
0
,
125
,
3
,
0
,
124
,
2
,
0
,
131
,
2
,
0
,
114
,
67
,
0
,
116
,
11
,
0
,
124
,
3
,
4
,
0
,
116
,
10
,
0
,
124
,
4
,
0
,
124
,
2
,
0
,
131
,
2
,
0
,
114
,
67
,
0
,
100
,
1
,
0
,
131
,
2
,
0
,
115
,
118
,
0
,
116
,
12
,
0
,
124
,
3
,
0
,
0
,
116
,
11
,
0
,
124
,
4
,
0
,
100
,
1
,
0
,
131
,
2
,
0
,
115
,
169
,
0
,
95
,
13
,
0
,
113
,
118
,
0
,
113
,
67
,
0
,
113
,
67
,
0
,
87
,
116
,
1
,
0
,
124
,
3
,
0
,
116
,
1
,
0
,
106
,
12
,
0
,
107
,
6
,
0
,
114
,
136
,
0
,
116
,
106
,
8
,
0
,
116
,
14
,
0
,
25
,
125
,
4
,
0
,
120
,
76
,
0
,
100
,
28
,
0
,
13
,
0
,
124
,
4
,
0
,
95
,
14
,
0
,
113
,
166
,
0
,
116
,
0
,
0
,
106
,
15
,
68
,
93
,
68
,
0
,
125
,
5
,
0
,
124
,
5
,
0
,
116
,
1
,
0
,
106
,
8
,
0
,
0
,
124
,
3
,
0
,
131
,
1
,
0
,
114
,
166
,
0
,
116
,
16
,
0
,
124
,
4
,
0
,
107
,
7
,
0
,
114
,
181
,
0
,
116
,
12
,
0
,
106
,
15
,
0
,
124
,
5
,
0
,
131
,
95
,
14
,
0
,
113
,
166
,
0
,
113
,
169
,
0
,
113
,
67
,
0
,
113
,
67
,
0
,
87
,
1
,
0
,
125
,
6
,
0
,
110
,
13
,
0
,
116
,
1
,
0
,
106
,
8
,
0
,
124
,
5
,
116
,
1
,
0
,
106
,
8
,
0
,
116
,
17
,
0
,
25
,
125
,
5
,
0
,
120
,
76
,
0
,
0
,
25
,
125
,
6
,
0
,
116
,
16
,
0
,
124
,
4
,
0
,
124
,
5
,
0
,
124
,
6
,
100
,
28
,
0
,
68
,
93
,
68
,
0
,
125
,
6
,
0
,
124
,
6
,
0
,
116
,
1
,
0
,
0
,
131
,
3
,
0
,
1
,
113
,
142
,
0
,
87
,
100
,
6
,
0
,
100
,
7
,
0
,
103
,
106
,
8
,
0
,
107
,
7
,
0
,
114
,
232
,
0
,
116
,
13
,
0
,
106
,
18
,
0
,
124
,
1
,
0
,
102
,
2
,
0
,
100
,
8
,
0
,
100
,
9
,
0
,
100
,
7
,
0
,
103
,
2
,
6
,
0
,
131
,
1
,
0
,
125
,
7
,
0
,
110
,
13
,
0
,
116
,
1
,
0
,
106
,
8
,
0
,
102
,
2
,
0
,
100
,
10
,
0
,
100
,
9
,
0
,
100
,
7
,
0
,
103
,
2
,
0
,
0
,
124
,
6
,
0
,
25
,
125
,
7
,
0
,
116
,
19
,
0
,
124
,
5
,
0
,
124
,
6
,
102
,
2
,
0
,
102
,
3
,
0
,
125
,
7
,
0
,
120
,
189
,
0
,
124
,
7
,
0
,
68
,
0
,
124
,
7
,
0
,
131
,
3
,
0
,
1
,
113
,
193
,
0
,
87
,
100
,
6
,
0
,
100
,
93
,
169
,
0
,
92
,
2
,
0
,
125
,
8
,
0
,
125
,
9
,
0
,
116
,
17
,
0
,
100
,
7
,
0
,
103
,
1
,
0
,
102
,
2
,
0
,
100
,
8
,
0
,
100
,
9
,
0
,
100
,
7
,
11
,
0
,
100
,
12
,
0
,
132
,
0
,
0
,
124
,
9
,
0
,
68
,
131
,
1
,
0
,
131
,
0
,
103
,
2
,
0
,
102
,
2
,
0
,
100
,
10
,
0
,
100
,
9
,
0
,
100
,
7
,
0
,
1
,
0
,
115
,
56
,
1
,
116
,
18
,
0
,
130
,
1
,
0
,
124
,
9
,
0
,
100
,
13
,
103
,
2
,
0
,
102
,
2
,
0
,
102
,
3
,
0
,
125
,
8
,
0
,
120
,
189
,
0
,
124
,
0
,
25
,
125
,
10
,
0
,
124
,
8
,
0
,
116
,
1
,
0
,
106
,
8
,
0
,
107
,
6
,
8
,
0
,
68
,
93
,
169
,
0
,
92
,
2
,
0
,
125
,
9
,
0
,
125
,
10
,
0
,
116
,
0
,
114
,
98
,
1
,
116
,
1
,
0
,
106
,
8
,
0
,
124
,
8
,
0
,
25
,
125
,
11
,
20
,
0
,
100
,
11
,
0
,
100
,
12
,
0
,
132
,
0
,
0
,
124
,
10
,
0
,
68
,
131
,
0
,
80
,
113
,
13
,
1
,
121
,
60
,
0
,
116
,
12
,
0
,
106
,
15
,
0
,
124
,
8
,
1
,
0
,
131
,
1
,
0
,
115
,
107
,
1
,
116
,
21
,
0
,
130
,
1
,
0
,
124
,
10
,
0
,
131
,
1
,
0
,
125
,
11
,
0
,
124
,
8
,
0
,
100
,
10
,
0
,
107
,
2
,
0
,
0
,
100
,
13
,
0
,
25
,
125
,
11
,
0
,
124
,
9
,
0
,
116
,
1
,
0
,
106
,
8
,
114
,
156
,
1
,
100
,
14
,
0
,
116
,
1
,
0
,
106
,
19
,
0
,
107
,
6
,
0
,
114
,
0
,
107
,
6
,
0
,
114
,
149
,
1
,
116
,
1
,
0
,
106
,
8
,
0
,
124
,
9
,
0
,
156
,
1
,
124
,
9
,
0
,
100
,
15
,
0
,
25
,
125
,
10
,
0
,
110
,
0
,
0
,
80
,
25
,
125
,
12
,
0
,
80
,
113
,
64
,
1
,
121
,
60
,
0
,
116
,
13
,
0
,
106
,
18
,
87
,
113
,
13
,
1
,
4
,
116
,
20
,
0
,
107
,
10
,
0
,
114
,
181
,
1
,
1
,
1
,
0
,
124
,
9
,
0
,
131
,
1
,
0
,
125
,
12
,
0
,
124
,
9
,
0
,
100
,
10
,
0
,
1
,
119
,
13
,
1
,
89
,
113
,
13
,
1
,
88
,
113
,
13
,
1
,
87
,
116
,
20
,
0
,
107
,
2
,
0
,
114
,
207
,
1
,
100
,
14
,
0
,
116
,
1
,
0
,
106
,
22
,
0
,
107
,
100
,
16
,
0
,
131
,
1
,
0
,
130
,
1
,
0
,
121
,
19
,
0
,
116
,
12
,
0
,
106
,
6
,
0
,
114
,
207
,
1
,
124
,
10
,
0
,
100
,
15
,
0
,
25
,
125
,
11
,
0
,
110
,
15
,
0
,
100
,
17
,
0
,
131
,
1
,
0
,
125
,
12
,
0
,
87
,
110
,
24
,
0
,
4
,
0
,
0
,
80
,
87
,
113
,
64
,
1
,
4
,
116
,
23
,
0
,
107
,
10
,
0
,
114
,
232
,
116
,
20
,
0
,
107
,
10
,
0
,
114
,
243
,
1
,
1
,
1
,
1
,
100
,
27
,
0
,
125
,
1
,
1
,
1
,
1
,
119
,
64
,
1
,
89
,
113
,
64
,
1
,
88
,
113
,
64
,
1
,
87
,
12
,
0
,
89
,
110
,
1
,
0
,
88
,
116
,
12
,
0
,
106
,
15
,
0
,
100
,
18
,
0
,
116
,
23
,
0
,
100
,
16
,
0
,
131
,
1
,
0
,
130
,
1
,
0
,
121
,
19
,
0
,
116
,
131
,
1
,
0
,
125
,
13
,
0
,
124
,
8
,
0
,
100
,
8
,
0
,
107
,
2
,
0
,
114
,
13
,
0
,
106
,
18
,
0
,
100
,
17
,
0
,
131
,
1
,
0
,
125
,
13
,
0
,
87
,
110
,
49
,
2
,
116
,
12
,
0
,
106
,
15
,
0
,
100
,
19
,
0
,
131
,
1
,
0
,
125
,
14
,
24
,
0
,
4
,
116
,
23
,
0
,
107
,
10
,
0
,
114
,
38
,
2
,
1
,
1
,
1
,
100
,
0
,
116
,
16
,
0
,
124
,
4
,
0
,
100
,
20
,
0
,
124
,
14
,
0
,
131
,
3
,
0
,
27
,
0
,
125
,
13
,
0
,
89
,
110
,
1
,
0
,
88
,
116
,
13
,
0
,
106
,
18
,
0
,
1
,
110
,
0
,
0
,
116
,
16
,
0
,
124
,
4
,
0
,
100
,
21
,
0
,
124
,
11
,
0
,
100
,
18
,
0
,
131
,
1
,
0
,
125
,
14
,
0
,
124
,
9
,
0
,
100
,
8
,
0
,
107
,
131
,
3
,
0
,
1
,
116
,
16
,
0
,
124
,
4
,
0
,
100
,
17
,
0
,
124
,
12
,
0
,
2
,
0
,
114
,
100
,
2
,
116
,
13
,
0
,
106
,
18
,
0
,
100
,
19
,
0
,
131
,
1
,
131
,
3
,
0
,
1
,
116
,
16
,
0
,
124
,
4
,
0
,
100
,
18
,
0
,
124
,
13
,
0
,
0
,
125
,
15
,
0
,
116
,
19
,
0
,
124
,
5
,
0
,
100
,
20
,
0
,
124
,
15
,
0
,
131
,
3
,
0
,
1
,
116
,
16
,
0
,
124
,
4
,
0
,
100
,
22
,
0
,
124
,
10
,
0
,
131
,
3
,
0
,
1
,
110
,
0
,
0
,
116
,
19
,
0
,
124
,
5
,
0
,
100
,
21
,
0
,
131
,
3
,
0
,
1
,
116
,
16
,
0
,
124
,
4
,
0
,
100
,
23
,
0
,
116
,
22
,
0
,
124
,
12
,
0
,
131
,
3
,
0
,
1
,
116
,
19
,
0
,
124
,
5
,
0
,
100
,
17
,
0
,
124
,
9
,
0
,
131
,
1
,
0
,
131
,
3
,
0
,
1
,
116
,
16
,
0
,
124
,
4
,
0
,
124
,
13
,
0
,
131
,
3
,
0
,
1
,
116
,
19
,
0
,
124
,
5
,
0
,
100
,
18
,
0
,
100
,
24
,
0
,
116
,
23
,
0
,
131
,
0
,
0
,
131
,
3
,
0
,
1
,
116
,
24
,
0
,
124
,
14
,
0
,
131
,
3
,
0
,
1
,
116
,
19
,
0
,
124
,
5
,
0
,
100
,
22
,
0
,
106
,
25
,
0
,
116
,
0
,
0
,
106
,
26
,
0
,
131
,
0
,
0
,
131
,
1
,
0
,
1
,
124
,
11
,
0
,
131
,
3
,
0
,
1
,
116
,
19
,
0
,
124
,
5
,
0
,
100
,
23
,
0
,
124
,
8
,
0
,
100
,
8
,
0
,
107
,
2
,
0
,
114
,
225
,
2
,
116
,
27
,
0
,
106
,
116
,
25
,
0
,
124
,
10
,
0
,
131
,
1
,
0
,
131
,
3
,
0
,
1
,
116
,
19
,
0
,
28
,
0
,
100
,
25
,
0
,
131
,
1
,
0
,
1
,
100
,
26
,
0
,
116
,
24
,
0
,
107
,
124
,
5
,
0
,
100
,
24
,
0
,
116
,
26
,
0
,
131
,
0
,
0
,
131
,
3
,
0
,
1
,
6
,
0
,
114
,
225
,
2
,
100
,
29
,
0
,
116
,
30
,
0
,
95
,
31
,
0
,
113
,
225
,
116
,
27
,
0
,
106
,
28
,
0
,
116
,
0
,
0
,
106
,
29
,
0
,
131
,
0
,
0
,
131
,
2
,
110
,
0
,
0
,
100
,
27
,
0
,
83
,
40
,
30
,
0
,
0
,
0
,
117
,
250
,
0
,
1
,
0
,
1
,
124
,
9
,
0
,
100
,
8
,
0
,
107
,
2
,
0
,
114
,
20
,
3
,
116
,
0
,
0
,
83
,
101
,
116
,
117
,
112
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
30
,
0
,
106
,
31
,
0
,
100
,
25
,
0
,
131
,
1
,
0
,
1
,
100
,
26
,
0
,
116
,
98
,
32
,
98
,
121
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
105
,
110
,
103
,
32
,
110
,
27
,
0
,
107
,
6
,
0
,
114
,
20
,
3
,
100
,
29
,
0
,
116
,
33
,
0
,
95
,
34
,
101
,
101
,
100
,
101
,
100
,
32
,
98
,
117
,
105
,
108
,
116
,
45
,
105
,
110
,
32
,
109
,
0
,
113
,
20
,
3
,
110
,
0
,
0
,
100
,
27
,
0
,
83
,
40
,
30
,
0
,
0
,
0
,
111
,
100
,
117
,
108
,
101
,
115
,
32
,
97
,
110
,
100
,
32
,
105
,
110
,
106
,
101
,
99
,
117
,
250
,
0
,
0
,
0
,
83
,
101
,
116
,
117
,
112
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
105
,
110
,
103
,
32
,
116
,
104
,
101
,
109
,
10
,
32
,
32
,
32
,
32
,
105
,
110
,
116
,
108
,
105
,
98
,
32
,
98
,
121
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
105
,
110
,
116
,
111
,
32
,
116
,
104
,
101
,
32
,
103
,
108
,
111
,
98
,
97
,
108
,
32
,
110
,
97
,
103
,
32
,
110
,
101
,
101
,
100
,
101
,
100
,
32
,
98
,
117
,
105
,
108
,
116
,
45
,
105
,
109
,
101
,
115
,
112
,
97
,
99
,
101
,
46
,
10
,
10
,
32
,
32
,
32
,
32
,
65
,
115
,
110
,
32
,
109
,
111
,
100
,
117
,
108
,
101
,
115
,
32
,
97
,
110
,
100
,
32
,
105
,
110
,
32
,
115
,
121
,
115
,
32
,
105
,
115
,
32
,
110
,
101
,
101
,
100
,
101
,
100
,
32
,
102
,
106
,
101
,
99
,
116
,
105
,
110
,
103
,
32
,
116
,
104
,
101
,
109
,
10
,
32
,
32
,
32
,
111
,
114
,
32
,
115
,
121
,
115
,
46
,
109
,
111
,
100
,
117
,
108
,
101
,
115
,
32
,
97
,
32
,
105
,
110
,
116
,
111
,
32
,
116
,
104
,
101
,
32
,
103
,
108
,
111
,
98
,
97
,
108
,
99
,
99
,
101
,
115
,
115
,
32
,
97
,
110
,
100
,
32
,
95
,
105
,
109
,
112
,
32
,
105
,
32
,
110
,
97
,
109
,
101
,
115
,
112
,
97
,
99
,
101
,
46
,
10
,
10
,
32
,
32
,
32
,
115
,
32
,
110
,
101
,
101
,
100
,
101
,
100
,
32
,
116
,
111
,
32
,
108
,
111
,
97
,
100
,
32
,
65
,
115
,
32
,
115
,
121
,
115
,
32
,
105
,
115
,
32
,
110
,
101
,
101
,
100
,
101
,
32
,
98
,
117
,
105
,
108
,
116
,
45
,
105
,
110
,
10
,
32
,
32
,
32
,
32
,
109
,
111
,
100
,
32
,
102
,
111
,
114
,
32
,
115
,
121
,
115
,
46
,
109
,
111
,
100
,
117
,
108
,
101
,
100
,
117
,
108
,
101
,
115
,
44
,
32
,
116
,
104
,
111
,
115
,
101
,
32
,
116
,
119
,
111
,
115
,
32
,
97
,
99
,
99
,
101
,
115
,
115
,
32
,
97
,
110
,
100
,
32
,
95
,
105
,
109
,
32
,
109
,
111
,
100
,
117
,
108
,
101
,
115
,
32
,
109
,
117
,
115
,
116
,
32
,
98
,
101
,
112
,
32
,
105
,
115
,
32
,
110
,
101
,
101
,
100
,
101
,
100
,
32
,
116
,
111
,
32
,
108
,
32
,
101
,
120
,
112
,
108
,
105
,
99
,
105
,
116
,
108
,
121
,
32
,
112
,
97
,
115
,
115
,
111
,
97
,
100
,
32
,
98
,
117
,
105
,
108
,
116
,
45
,
105
,
110
,
10
,
32
,
32
,
32
,
101
,
100
,
32
,
105
,
110
,
46
,
10
,
10
,
32
,
32
,
32
,
32
,
117
,
10
,
0
,
0
,
32
,
109
,
111
,
100
,
117
,
108
,
101
,
115
,
44
,
32
,
116
,
104
,
111
,
115
,
101
,
32
,
0
,
95
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
95
,
95
,
117
,
3
,
0
,
0
,
0
,
116
,
119
,
111
,
32
,
109
,
111
,
100
,
117
,
108
,
101
,
115
,
32
,
109
,
117
,
115
,
116
,
95
,
105
,
111
,
117
,
9
,
0
,
0
,
0
,
95
,
119
,
97
,
114
,
110
,
105
,
110
,
103
,
32
,
98
,
101
,
32
,
101
,
120
,
112
,
108
,
105
,
99
,
105
,
116
,
108
,
121
,
32
,
112
,
115
,
117
,
8
,
0
,
0
,
0
,
98
,
117
,
105
,
108
,
116
,
105
,
110
,
115
,
117
,
7
,
97
,
115
,
115
,
101
,
100
,
32
,
105
,
110
,
46
,
10
,
10
,
32
,
32
,
32
,
32
,
117
,
0
,
0
,
0
,
109
,
97
,
114
,
115
,
104
,
97
,
108
,
117
,
5
,
0
,
0
,
0
,
112
,
10
,
0
,
0
,
0
,
95
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
95
,
95
,
117
,
3
,
111
,
115
,
105
,
120
,
117
,
1
,
0
,
0
,
0
,
47
,
117
,
2
,
0
,
0
,
0
,
110
,
0
,
0
,
0
,
95
,
105
,
111
,
117
,
9
,
0
,
0
,
0
,
95
,
119
,
97
,
114
,
110
,
116
,
117
,
1
,
0
,
0
,
0
,
92
,
117
,
3
,
0
,
0
,
0
,
111
,
115
,
50
,
99
,
105
,
110
,
103
,
115
,
117
,
8
,
0
,
0
,
0
,
98
,
117
,
105
,
108
,
116
,
105
,
110
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
2
,
0
,
0
,
0
,
3
,
0
,
0
,
0
,
115
,
117
,
7
,
0
,
0
,
0
,
109
,
97
,
114
,
115
,
104
,
97
,
108
,
117
,
5
,
0
,
115
,
0
,
0
,
0
,
115
,
33
,
0
,
0
,
0
,
124
,
0
,
0
,
93
,
23
,
0
,
125
,
0
,
0
,
112
,
111
,
115
,
105
,
120
,
117
,
1
,
0
,
0
,
0
,
47
,
117
,
2
,
0
,
1
,
0
,
116
,
0
,
0
,
124
,
1
,
0
,
131
,
1
,
0
,
100
,
0
,
0
,
107
,
2
,
0
,
0
,
110
,
116
,
117
,
1
,
0
,
0
,
0
,
92
,
117
,
3
,
0
,
0
,
0
,
111
,
0
,
86
,
1
,
113
,
3
,
0
,
100
,
1
,
0
,
83
,
40
,
2
,
0
,
0
,
0
,
105
,
115
,
50
,
99
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
2
,
0
,
0
,
0
,
3
,
1
,
0
,
0
,
0
,
78
,
40
,
1
,
0
,
0
,
0
,
117
,
3
,
0
,
0
,
0
,
108
,
0
,
0
,
0
,
115
,
0
,
0
,
0
,
115
,
33
,
0
,
0
,
0
,
124
,
0
,
0
,
93
,
101
,
110
,
40
,
2
,
0
,
0
,
0
,
117
,
2
,
0
,
0
,
0
,
46
,
48
,
117
,
3
,
23
,
0
,
125
,
1
,
0
,
116
,
0
,
0
,
124
,
1
,
0
,
131
,
1
,
0
,
100
,
0
,
0
,
0
,
0
,
115
,
101
,
112
,
40
,
0
,
0
,
0
,
0
,
40
,
0
,
0
,
0
,
0
,
0
,
107
,
2
,
0
,
86
,
1
,
113
,
3
,
0
,
100
,
1
,
0
,
83
,
40
,
2
,
0
,
117
,
29
,
0
,
0
,
0
,
60
,
102
,
114
,
111
,
122
,
101
,
110
,
32
,
105
,
109
,
112
,
0
,
0
,
105
,
1
,
0
,
0
,
0
,
78
,
40
,
1
,
0
,
0
,
0
,
117
,
3
,
0
,
111
,
114
,
116
,
108
,
105
,
98
,
46
,
95
,
98
,
111
,
111
,
116
,
115
,
116
,
114
,
97
,
0
,
0
,
108
,
101
,
110
,
40
,
2
,
0
,
0
,
0
,
117
,
2
,
0
,
0
,
0
,
46
,
112
,
62
,
117
,
9
,
0
,
0
,
0
,
60
,
103
,
101
,
110
,
101
,
120
,
112
,
114
,
62
,
48
,
117
,
3
,
0
,
0
,
0
,
115
,
101
,
112
,
40
,
0
,
0
,
0
,
0
,
40
,
0
,
187
,
6
,
0
,
0
,
115
,
2
,
0
,
0
,
0
,
6
,
0
,
117
,
25
,
0
,
0
,
0
,
0
,
0
,
0
,
117
,
29
,
0
,
0
,
0
,
60
,
102
,
114
,
111
,
122
,
101
,
110
,
32
,
95
,
115
,
101
,
116
,
117
,
112
,
46
,
60
,
108
,
111
,
99
,
97
,
108
,
115
,
62
,
46
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
98
,
46
,
95
,
98
,
111
,
111
,
116
,
115
,
60
,
103
,
101
,
110
,
101
,
120
,
112
,
114
,
62
,
105
,
0
,
0
,
0
,
0
,
117
,
7
,
116
,
114
,
97
,
112
,
62
,
117
,
9
,
0
,
0
,
0
,
60
,
103
,
101
,
110
,
101
,
120
,
0
,
0
,
0
,
69
,
77
,
88
,
32
,
71
,
67
,
67
,
105
,
1
,
0
,
0
,
0
,
117
,
112
,
114
,
62
,
190
,
6
,
0
,
0
,
115
,
2
,
0
,
0
,
0
,
6
,
0
,
117
,
25
,
30
,
0
,
0
,
0
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
98
,
32
,
114
,
101
,
0
,
0
,
0
,
95
,
115
,
101
,
116
,
117
,
112
,
46
,
60
,
108
,
111
,
99
,
97
,
108
,
113
,
117
,
105
,
114
,
101
,
115
,
32
,
112
,
111
,
115
,
105
,
120
,
32
,
111
,
114
,
32
,
115
,
62
,
46
,
60
,
103
,
101
,
110
,
101
,
120
,
112
,
114
,
62
,
105
,
0
,
0
,
0
,
110
,
116
,
117
,
7
,
0
,
0
,
0
,
95
,
116
,
104
,
114
,
101
,
97
,
100
,
117
,
8
,
0
,
117
,
7
,
0
,
0
,
0
,
69
,
77
,
88
,
32
,
71
,
67
,
67
,
105
,
1
,
0
,
0
,
0
,
0
,
95
,
119
,
101
,
97
,
107
,
114
,
101
,
102
,
117
,
6
,
0
,
0
,
0
,
0
,
0
,
117
,
30
,
0
,
0
,
0
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
98
,
119
,
105
,
110
,
114
,
101
,
103
,
117
,
7
,
0
,
0
,
0
,
95
,
119
,
105
,
110
,
114
,
32
,
114
,
101
,
113
,
117
,
105
,
114
,
101
,
115
,
32
,
112
,
111
,
115
,
105
,
120
,
32
,
101
,
103
,
117
,
3
,
0
,
0
,
0
,
95
,
111
,
115
,
117
,
8
,
0
,
0
,
0
,
112
,
111
,
114
,
32
,
110
,
116
,
117
,
7
,
0
,
0
,
0
,
95
,
116
,
104
,
114
,
101
,
97
,
97
,
116
,
104
,
95
,
115
,
101
,
112
,
117
,
15
,
0
,
0
,
0
,
112
,
97
,
116
,
104
,
100
,
117
,
8
,
0
,
0
,
0
,
95
,
119
,
101
,
97
,
107
,
114
,
101
,
102
,
117
,
6
,
95
,
115
,
101
,
112
,
97
,
114
,
97
,
116
,
111
,
114
,
115
,
117
,
11
,
0
,
0
,
0
,
0
,
0
,
0
,
119
,
105
,
110
,
114
,
101
,
103
,
117
,
7
,
0
,
0
,
0
,
95
,
119
,
95
,
114
,
101
,
108
,
97
,
120
,
95
,
99
,
97
,
115
,
101
,
117
,
4
,
0
,
0
,
0
,
105
,
110
,
114
,
101
,
103
,
117
,
3
,
0
,
0
,
0
,
95
,
111
,
115
,
117
,
8
,
0
,
46
,
112
,
121
,
119
,
117
,
6
,
0
,
0
,
0
,
95
,
100
,
46
,
112
,
121
,
100
,
78
,
0
,
0
,
112
,
97
,
116
,
104
,
95
,
115
,
101
,
112
,
117
,
15
,
0
,
0
,
0
,
112
,
40
,
4
,
0
,
0
,
0
,
117
,
3
,
0
,
0
,
0
,
95
,
105
,
111
,
117
,
9
,
0
,
97
,
116
,
104
,
95
,
115
,
101
,
112
,
97
,
114
,
97
,
116
,
111
,
114
,
115
,
117
,
11
,
0
,
0
,
95
,
119
,
97
,
114
,
110
,
105
,
110
,
103
,
115
,
117
,
8
,
0
,
0
,
0
,
0
,
0
,
0
,
95
,
114
,
101
,
108
,
97
,
120
,
95
,
99
,
97
,
115
,
101
,
117
,
4
,
98
,
117
,
105
,
108
,
116
,
105
,
110
,
115
,
117
,
7
,
0
,
0
,
0
,
109
,
97
,
114
,
0
,
0
,
0
,
46
,
112
,
121
,
119
,
117
,
6
,
0
,
0
,
0
,
95
,
100
,
46
,
112
,
115
,
104
,
97
,
108
,
84
,
40
,
32
,
0
,
0
,
0
,
117
,
4
,
0
,
0
,
0
,
95
,
121
,
100
,
78
,
40
,
4
,
0
,
0
,
0
,
117
,
3
,
0
,
0
,
0
,
95
,
105
,
111
,
105
,
109
,
112
,
117
,
3
,
0
,
0
,
0
,
115
,
121
,
115
,
117
,
5
,
0
,
0
,
0
,
117
,
9
,
0
,
0
,
0
,
95
,
119
,
97
,
114
,
110
,
105
,
110
,
103
,
115
,
117
,
8
,
102
,
108
,
97
,
103
,
115
,
117
,
8
,
0
,
0
,
0
,
111
,
112
,
116
,
105
,
109
,
105
,
0
,
0
,
0
,
98
,
117
,
105
,
108
,
116
,
105
,
110
,
115
,
117
,
7
,
0
,
0
,
0
,
122
,
101
,
117
,
27
,
0
,
0
,
0
,
79
,
80
,
84
,
73
,
77
,
73
,
90
,
69
,
68
,
109
,
97
,
114
,
115
,
104
,
97
,
108
,
84
,
40
,
35
,
0
,
0
,
0
,
117
,
4
,
0
,
95
,
66
,
89
,
84
,
69
,
67
,
79
,
68
,
69
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
0
,
0
,
95
,
105
,
109
,
112
,
117
,
3
,
0
,
0
,
0
,
115
,
121
,
115
,
117
,
5
,
69
,
83
,
117
,
17
,
0
,
0
,
0
,
66
,
89
,
84
,
69
,
67
,
79
,
68
,
69
,
95
,
0
,
0
,
0
,
102
,
108
,
97
,
103
,
115
,
117
,
8
,
0
,
0
,
0
,
111
,
112
,
116
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
23
,
0
,
0
,
0
,
68
,
69
,
66
,
105
,
109
,
105
,
122
,
101
,
117
,
27
,
0
,
0
,
0
,
79
,
80
,
84
,
73
,
77
,
73
,
85
,
71
,
95
,
66
,
89
,
84
,
69
,
67
,
79
,
68
,
69
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
4
,
0
,
0
,
0
,
116
,
121
,
112
,
101
,
117
,
7
,
0
,
0
,
0
,
109
,
111
,
100
,
117
,
108
,
101
,
115
,
117
,
6
,
0
,
0
,
0
,
118
,
97
,
108
,
117
,
101
,
115
,
117
,
10
,
0
,
0
,
0
,
105
,
115
,
105
,
110
,
115
,
116
,
97
,
110
,
99
,
101
,
117
,
7
,
0
,
0
,
0
,
104
,
97
,
115
,
97
,
116
,
116
,
114
,
117
,
15
,
0
,
0
,
0
,
66
,
117
,
105
,
108
,
116
,
105
,
110
,
73
,
109
,
112
,
111
,
114
,
116
,
101
,
114
,
117
,
10
,
0
,
0
,
0
,
95
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
95
,
95
,
117
,
8
,
0
,
0
,
0
,
95
,
95
,
110
,
97
,
109
,
101
,
95
,
95
,
117
,
11
,
0
,
0
,
0
,
108
,
111
,
97
,
100
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
7
,
0
,
0
,
0
,
115
,
101
,
116
,
97
,
116
,
116
,
114
,
117
,
3
,
0
,
0
,
0
,
97
,
108
,
108
,
117
,
14
,
0
,
0
,
0
,
65
,
115
,
115
,
101
,
114
,
116
,
105
,
111
,
110
,
69
,
114
,
114
,
111
,
114
,
117
,
7
,
0
,
0
,
0
,
118
,
101
,
114
,
115
,
105
,
111
,
110
,
117
,
11
,
0
,
0
,
0
,
73
,
109
,
112
,
111
,
114
,
116
,
69
,
114
,
114
,
111
,
114
,
117
,
4
,
0
,
0
,
0
,
78
,
111
,
110
,
101
,
117
,
3
,
0
,
0
,
0
,
115
,
101
,
116
,
117
,
16
,
0
,
0
,
0
,
95
,
109
,
97
,
107
,
101
,
95
,
114
,
101
,
108
,
97
,
120
,
95
,
99
,
97
,
115
,
101
,
117
,
18
,
0
,
0
,
0
,
69
,
88
,
84
,
69
,
78
,
83
,
73
,
79
,
78
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
6
,
0
,
0
,
0
,
101
,
120
,
116
,
101
,
110
,
100
,
117
,
18
,
0
,
0
,
0
,
101
,
120
,
116
,
101
,
110
,
115
,
105
,
111
,
110
,
95
,
115
,
117
,
102
,
102
,
105
,
120
,
101
,
115
,
117
,
15
,
0
,
0
,
0
,
83
,
79
,
85
,
82
,
67
,
69
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
6
,
0
,
0
,
0
,
97
,
112
,
112
,
101
,
110
,
100
,
117
,
4
,
0
,
0
,
0
,
84
,
114
,
117
,
101
,
117
,
21
,
0
,
0
,
0
,
87
,
105
,
110
,
100
,
111
,
119
,
115
,
82
,
101
,
103
,
105
,
115
,
116
,
114
,
121
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
11
,
0
,
0
,
0
,
68
,
69
,
66
,
85
,
71
,
95
,
66
,
85
,
73
,
76
,
68
,
40
,
15
,
0
,
0
,
0
,
117
,
10
,
0
,
0
,
0
,
115
,
121
,
115
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
11
,
0
,
0
,
0
,
95
,
105
,
109
,
112
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
11
,
0
,
0
,
0
,
109
,
111
,
100
,
117
,
108
,
101
,
95
,
116
,
121
,
112
,
101
,
117
,
6
,
0
,
0
,
0
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
11
,
0
,
0
,
0
,
115
,
101
,
108
,
102
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
12
,
0
,
0
,
0
,
98
,
117
,
105
,
108
,
116
,
105
,
110
,
95
,
110
,
97
,
109
,
101
,
117
,
14
,
0
,
0
,
0
,
98
,
117
,
105
,
108
,
116
,
105
,
110
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
10
,
0
,
0
,
0
,
111
,
115
,
95
,
100
,
101
,
116
,
97
,
105
,
108
,
115
,
117
,
10
,
0
,
0
,
0
,
98
,
117
,
105
,
108
,
116
,
105
,
110
,
95
,
111
,
115
,
117
,
15
,
0
,
0
,
0
,
112
,
97
,
116
,
104
,
95
,
115
,
101
,
112
,
97
,
114
,
97
,
116
,
111
,
114
,
115
,
117
,
8
,
0
,
0
,
0
,
112
,
97
,
116
,
104
,
95
,
115
,
101
,
112
,
117
,
9
,
0
,
0
,
0
,
111
,
115
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
13
,
0
,
0
,
0
,
116
,
104
,
114
,
101
,
97
,
100
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
14
,
0
,
0
,
0
,
119
,
101
,
97
,
107
,
114
,
101
,
102
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
13
,
0
,
0
,
0
,
119
,
105
,
110
,
114
,
101
,
103
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
40
,
0
,
0
,
0
,
0
,
40
,
0
,
0
,
0
,
0
,
117
,
29
,
0
,
0
,
0
,
60
,
102
,
114
,
111
,
122
,
101
,
110
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
98
,
46
,
95
,
98
,
111
,
111
,
116
,
115
,
116
,
114
,
97
,
112
,
62
,
117
,
6
,
0
,
0
,
0
,
95
,
115
,
101
,
116
,
117
,
112
,
153
,
6
,
0
,
0
,
115
,
100
,
0
,
0
,
0
,
0
,
9
,
6
,
1
,
6
,
2
,
12
,
1
,
9
,
2
,
6
,
2
,
12
,
1
,
22
,
1
,
15
,
1
,
15
,
1
,
19
,
2
,
13
,
1
,
13
,
1
,
15
,
1
,
18
,
2
,
13
,
1
,
20
,
2
,
48
,
1
,
19
,
2
,
31
,
1
,
10
,
1
,
15
,
1
,
13
,
1
,
4
,
2
,
3
,
1
,
15
,
2
,
27
,
1
,
13
,
1
,
5
,
1
,
13
,
1
,
12
,
2
,
12
,
2
,
3
,
1
,
19
,
1
,
13
,
2
,
11
,
1
,
15
,
2
,
12
,
1
,
15
,
1
,
19
,
2
,
16
,
1
,
16
,
1
,
16
,
1
,
16
,
1
,
22
,
2
,
19
,
1
,
19
,
1
,
12
,
1
,
13
,
1
,
12
,
1
,
117
,
6
,
0
,
0
,
0
,
95
,
115
,
101
,
116
,
117
,
112
,
99
,
2
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
3
,
0
,
0
,
0
,
3
,
0
,
0
,
0
,
67
,
0
,
0
,
0
,
115
,
136
,
0
,
0
,
0
,
116
,
0
,
0
,
124
,
0
,
0
,
124
,
1
,
0
,
131
,
2
,
0
,
1
,
116
,
1
,
0
,
131
,
0
,
0
,
125
,
2
,
0
,
116
,
2
,
0
,
106
,
3
,
0
,
106
,
4
,
0
,
116
,
5
,
0
,
106
,
6
,
0
,
124
,
2
,
0
,
140
,
0
,
0
,
103
,
1
,
0
,
131
,
1
,
0
,
1
,
116
,
2
,
0
,
106
,
7
,
0
,
106
,
8
,
0
,
116
,
9
,
0
,
131
,
1
,
0
,
1
,
116
,
2
,
0
,
106
,
7
,
0
,
106
,
8
,
0
,
116
,
10
,
0
,
131
,
1
,
0
,
1
,
116
,
11
,
0
,
106
,
12
,
0
,
100
,
1
,
0
,
107
,
2
,
0
,
114
,
116
,
0
,
116
,
2
,
0
,
106
,
7
,
0
,
106
,
8
,
0
,
116
,
13
,
0
,
131
,
1
,
0
,
1
,
110
,
0
,
0
,
116
,
2
,
0
,
106
,
7
,
0
,
106
,
8
,
0
,
116
,
14
,
0
,
131
,
1
,
0
,
1
,
100
,
2
,
0
,
83
,
40
,
3
,
0
,
0
,
0
,
117
,
50
,
0
,
0
,
0
,
73
,
110
,
115
,
116
,
97
,
108
,
108
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
98
,
32
,
97
,
115
,
32
,
116
,
104
,
101
,
32
,
105
,
109
,
112
,
108
,
101
,
109
,
101
,
110
,
116
,
97
,
116
,
105
,
111
,
110
,
32
,
111
,
102
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
46
,
117
,
2
,
0
,
0
,
0
,
110
,
116
,
78
,
40
,
15
,
0
,
0
,
0
,
117
,
6
,
0
,
0
,
0
,
95
,
115
,
101
,
116
,
117
,
112
,
117
,
27
,
0
,
0
,
0
,
95
,
103
,
101
,
116
,
95
,
115
,
117
,
112
,
112
,
111
,
114
,
116
,
101
,
100
,
95
,
102
,
105
,
108
,
101
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
115
,
117
,
3
,
0
,
0
,
0
,
115
,
121
,
115
,
117
,
10
,
0
,
0
,
0
,
112
,
97
,
116
,
104
,
95
,
104
,
111
,
111
,
107
,
115
,
117
,
6
,
0
,
0
,
0
,
101
,
120
,
116
,
101
,
110
,
100
,
117
,
10
,
0
,
0
,
0
,
70
,
105
,
108
,
101
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
9
,
0
,
0
,
0
,
112
,
97
,
116
,
104
,
95
,
104
,
111
,
111
,
107
,
117
,
9
,
0
,
0
,
0
,
109
,
101
,
116
,
97
,
95
,
112
,
97
,
116
,
104
,
117
,
6
,
0
,
0
,
0
,
97
,
112
,
112
,
101
,
110
,
100
,
117
,
15
,
0
,
0
,
0
,
66
,
117
,
105
,
108
,
116
,
105
,
110
,
73
,
109
,
112
,
111
,
114
,
116
,
101
,
114
,
117
,
14
,
0
,
0
,
0
,
70
,
114
,
111
,
122
,
101
,
110
,
73
,
109
,
112
,
111
,
114
,
116
,
101
,
114
,
117
,
3
,
0
,
0
,
0
,
95
,
111
,
115
,
117
,
8
,
0
,
0
,
0
,
95
,
95
,
110
,
97
,
109
,
101
,
95
,
95
,
117
,
21
,
0
,
0
,
0
,
87
,
105
,
110
,
100
,
111
,
119
,
115
,
82
,
101
,
103
,
105
,
115
,
116
,
114
,
121
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
10
,
0
,
0
,
0
,
80
,
97
,
116
,
104
,
70
,
105
,
110
,
100
,
101
,
114
,
40
,
3
,
0
,
0
,
0
,
117
,
10
,
0
,
0
,
0
,
115
,
121
,
115
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
11
,
0
,
0
,
0
,
95
,
105
,
109
,
112
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
17
,
0
,
0
,
0
,
115
,
117
,
112
,
112
,
111
,
114
,
116
,
101
,
100
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
115
,
40
,
0
,
0
,
0
,
0
,
40
,
0
,
0
,
0
,
0
,
117
,
29
,
0
,
0
,
0
,
60
,
102
,
114
,
111
,
122
,
101
,
110
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
98
,
46
,
95
,
98
,
111
,
111
,
116
,
115
,
116
,
114
,
97
,
112
,
62
,
117
,
8
,
0
,
0
,
0
,
95
,
105
,
110
,
115
,
116
,
97
,
108
,
108
,
229
,
6
,
0
,
0
,
115
,
16
,
0
,
0
,
0
,
0
,
2
,
13
,
1
,
9
,
1
,
28
,
1
,
16
,
1
,
16
,
1
,
15
,
1
,
19
,
1
,
117
,
8
,
0
,
0
,
0
,
95
,
105
,
110
,
115
,
116
,
97
,
108
,
108
,
78
,
40
,
3
,
0
,
0
,
0
,
117
,
3
,
0
,
0
,
0
,
119
,
105
,
110
,
117
,
6
,
0
,
0
,
0
,
99
,
121
,
103
,
119
,
105
,
110
,
117
,
6
,
0
,
0
,
0
,
100
,
97
,
114
,
119
,
105
,
110
,
40
,
74
,
0
,
0
,
0
,
117
,
7
,
0
,
0
,
0
,
95
,
95
,
100
,
111
,
99
,
95
,
95
,
117
,
27
,
0
,
0
,
0
,
95
,
67
,
65
,
83
,
69
,
95
,
73
,
78
,
83
,
69
,
78
,
83
,
73
,
84
,
73
,
86
,
69
,
95
,
80
,
76
,
65
,
84
,
70
,
79
,
82
,
77
,
83
,
117
,
16
,
0
,
0
,
0
,
95
,
109
,
97
,
107
,
101
,
95
,
114
,
101
,
108
,
97
,
120
,
95
,
99
,
97
,
115
,
101
,
117
,
7
,
0
,
0
,
0
,
95
,
119
,
95
,
108
,
111
,
110
,
103
,
117
,
7
,
0
,
0
,
0
,
95
,
114
,
95
,
108
,
111
,
110
,
103
,
117
,
10
,
0
,
0
,
0
,
95
,
112
,
97
,
116
,
104
,
95
,
106
,
111
,
105
,
110
,
117
,
11
,
0
,
0
,
0
,
95
,
112
,
97
,
116
,
104
,
95
,
115
,
112
,
108
,
105
,
116
,
117
,
18
,
0
,
0
,
0
,
95
,
112
,
97
,
116
,
104
,
95
,
105
,
115
,
95
,
109
,
111
,
100
,
101
,
95
,
116
,
121
,
112
,
101
,
117
,
12
,
0
,
0
,
0
,
95
,
112
,
97
,
116
,
104
,
95
,
105
,
115
,
102
,
105
,
108
,
101
,
117
,
11
,
0
,
0
,
0
,
95
,
112
,
97
,
116
,
104
,
95
,
105
,
115
,
100
,
105
,
114
,
117
,
13
,
0
,
0
,
0
,
95
,
119
,
114
,
105
,
116
,
101
,
95
,
97
,
116
,
111
,
109
,
105
,
99
,
117
,
5
,
0
,
0
,
0
,
95
,
119
,
114
,
97
,
112
,
117
,
4
,
0
,
0
,
0
,
116
,
121
,
112
,
101
,
117
,
8
,
0
,
0
,
0
,
95
,
95
,
99
,
111
,
100
,
101
,
95
,
95
,
117
,
10
,
0
,
0
,
0
,
95
,
99
,
111
,
100
,
101
,
95
,
116
,
121
,
112
,
101
,
117
,
10
,
0
,
0
,
0
,
110
,
101
,
119
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
13
,
0
,
0
,
0
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
95
,
108
,
111
,
99
,
107
,
115
,
117
,
12
,
0
,
0
,
0
,
95
,
98
,
108
,
111
,
99
,
107
,
105
,
110
,
103
,
95
,
111
,
110
,
117
,
12
,
0
,
0
,
0
,
82
,
117
,
110
,
116
,
105
,
109
,
101
,
69
,
114
,
114
,
111
,
114
,
117
,
14
,
0
,
0
,
0
,
95
,
68
,
101
,
97
,
100
,
108
,
111
,
99
,
107
,
69
,
114
,
114
,
111
,
114
,
117
,
11
,
0
,
0
,
0
,
95
,
77
,
111
,
100
,
117
,
108
,
101
,
76
,
111
,
99
,
107
,
117
,
16
,
0
,
0
,
0
,
95
,
68
,
117
,
109
,
109
,
121
,
77
,
111
,
100
,
117
,
108
,
101
,
76
,
111
,
99
,
107
,
117
,
16
,
0
,
0
,
0
,
95
,
103
,
101
,
116
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
95
,
108
,
111
,
99
,
107
,
117
,
19
,
0
,
0
,
0
,
95
,
108
,
111
,
99
,
107
,
95
,
117
,
110
,
108
,
111
,
99
,
107
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
25
,
0
,
0
,
0
,
95
,
99
,
97
,
108
,
108
,
95
,
119
,
105
,
116
,
104
,
95
,
102
,
114
,
97
,
109
,
101
,
115
,
95
,
114
,
101
,
109
,
111
,
118
,
101
,
100
,
117
,
3
,
0
,
0
,
0
,
111
,
114
,
100
,
117
,
17
,
0
,
0
,
0
,
95
,
82
,
65
,
87
,
95
,
77
,
65
,
71
,
73
,
67
,
95
,
78
,
85
,
77
,
66
,
69
,
82
,
117
,
5
,
0
,
0
,
0
,
98
,
121
,
116
,
101
,
115
,
117
,
5
,
0
,
0
,
0
,
114
,
97
,
110
,
103
,
101
,
117
,
12
,
0
,
0
,
0
,
95
,
77
,
65
,
71
,
73
,
67
,
95
,
66
,
89
,
84
,
69
,
83
,
117
,
8
,
0
,
0
,
0
,
95
,
80
,
89
,
67
,
65
,
67
,
72
,
69
,
117
,
15
,
0
,
0
,
0
,
83
,
79
,
85
,
82
,
67
,
69
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
23
,
0
,
0
,
0
,
68
,
69
,
66
,
85
,
71
,
95
,
66
,
89
,
84
,
69
,
67
,
79
,
68
,
69
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
27
,
0
,
0
,
0
,
79
,
80
,
84
,
73
,
77
,
73
,
90
,
69
,
68
,
95
,
66
,
89
,
84
,
69
,
67
,
79
,
68
,
69
,
95
,
83
,
85
,
70
,
90
,
69
,
68
,
95
,
66
,
89
,
84
,
69
,
67
,
79
,
68
,
69
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
4
,
0
,
0
,
0
,
78
,
111
,
110
,
101
,
117
,
17
,
70
,
73
,
88
,
69
,
83
,
117
,
17
,
0
,
0
,
0
,
66
,
89
,
84
,
69
,
67
,
79
,
0
,
0
,
0
,
99
,
97
,
99
,
104
,
101
,
95
,
102
,
114
,
111
,
109
,
95
,
115
,
111
,
68
,
69
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
23
,
0
,
0
,
0
,
117
,
114
,
99
,
101
,
117
,
17
,
0
,
0
,
0
,
115
,
111
,
117
,
114
,
99
,
101
,
95
,
68
,
69
,
66
,
85
,
71
,
95
,
66
,
89
,
84
,
69
,
67
,
79
,
68
,
69
,
95
,
83
,
102
,
114
,
111
,
109
,
95
,
99
,
97
,
99
,
104
,
101
,
117
,
15
,
0
,
0
,
0
,
95
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
4
,
0
,
0
,
0
,
116
,
121
,
112
,
101
,
103
,
101
,
116
,
95
,
115
,
111
,
117
,
114
,
99
,
101
,
102
,
105
,
108
,
101
,
117
,
16
,
117
,
7
,
0
,
0
,
0
,
109
,
111
,
100
,
117
,
108
,
101
,
115
,
117
,
5
,
0
,
0
,
0
,
0
,
0
,
95
,
118
,
101
,
114
,
98
,
111
,
115
,
101
,
95
,
109
,
101
,
115
,
115
,
0
,
105
,
116
,
101
,
109
,
115
,
117
,
10
,
0
,
0
,
0
,
105
,
115
,
105
,
110
,
115
,
97
,
103
,
101
,
117
,
11
,
0
,
0
,
0
,
115
,
101
,
116
,
95
,
112
,
97
,
99
,
107
,
116
,
97
,
110
,
99
,
101
,
117
,
7
,
0
,
0
,
0
,
104
,
97
,
115
,
97
,
116
,
116
,
97
,
103
,
101
,
117
,
10
,
0
,
0
,
0
,
115
,
101
,
116
,
95
,
108
,
111
,
97
,
100
,
114
,
117
,
20
,
0
,
0
,
0
,
98
,
117
,
105
,
108
,
116
,
105
,
110
,
95
,
109
,
111
,
101
,
114
,
117
,
17
,
0
,
0
,
0
,
109
,
111
,
100
,
117
,
108
,
101
,
95
,
102
,
111
,
100
,
117
,
108
,
101
,
95
,
110
,
97
,
109
,
101
,
115
,
117
,
15
,
0
,
0
,
0
,
66
,
114
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
117
,
11
,
0
,
0
,
0
,
95
,
99
,
104
,
117
,
105
,
108
,
116
,
105
,
110
,
73
,
109
,
112
,
111
,
114
,
116
,
101
,
114
,
117
,
10
,
101
,
99
,
107
,
95
,
110
,
97
,
109
,
101
,
117
,
17
,
0
,
0
,
0
,
95
,
114
,
101
,
0
,
0
,
0
,
95
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
95
,
95
,
117
,
9
,
0
,
113
,
117
,
105
,
114
,
101
,
115
,
95
,
98
,
117
,
105
,
108
,
116
,
105
,
110
,
117
,
16
,
0
,
0
,
105
,
115
,
95
,
102
,
114
,
111
,
122
,
101
,
110
,
117
,
14
,
0
,
0
,
0
,
0
,
0
,
0
,
95
,
114
,
101
,
113
,
117
,
105
,
114
,
101
,
115
,
95
,
102
,
114
,
111
,
70
,
114
,
111
,
122
,
101
,
110
,
73
,
109
,
112
,
111
,
114
,
116
,
101
,
114
,
117
,
8
,
122
,
101
,
110
,
117
,
17
,
0
,
0
,
0
,
95
,
102
,
105
,
110
,
100
,
95
,
109
,
111
,
0
,
0
,
0
,
95
,
95
,
110
,
97
,
109
,
101
,
95
,
95
,
117
,
11
,
0
,
0
,
0
,
100
,
117
,
108
,
101
,
95
,
115
,
104
,
105
,
109
,
117
,
15
,
0
,
0
,
0
,
66
,
117
,
108
,
111
,
97
,
100
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
7
,
0
,
0
,
0
,
105
,
108
,
116
,
105
,
110
,
73
,
109
,
112
,
111
,
114
,
116
,
101
,
114
,
117
,
14
,
0
,
115
,
101
,
116
,
97
,
116
,
116
,
114
,
117
,
3
,
0
,
0
,
0
,
97
,
108
,
108
,
117
,
0
,
0
,
70
,
114
,
111
,
122
,
101
,
110
,
73
,
109
,
112
,
111
,
114
,
116
,
101
,
114
,
14
,
0
,
0
,
0
,
65
,
115
,
115
,
101
,
114
,
116
,
105
,
111
,
110
,
69
,
114
,
114
,
117
,
21
,
0
,
0
,
0
,
87
,
105
,
110
,
100
,
111
,
119
,
115
,
82
,
101
,
103
,
105
,
111
,
114
,
117
,
7
,
0
,
0
,
0
,
118
,
101
,
114
,
115
,
105
,
111
,
110
,
117
,
11
,
115
,
116
,
114
,
121
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
13
,
0
,
0
,
0
,
95
,
0
,
0
,
0
,
73
,
109
,
112
,
111
,
114
,
116
,
69
,
114
,
114
,
111
,
114
,
117
,
4
,
76
,
111
,
97
,
100
,
101
,
114
,
66
,
97
,
115
,
105
,
99
,
115
,
117
,
12
,
0
,
0
,
0
,
0
,
0
,
78
,
111
,
110
,
101
,
117
,
3
,
0
,
0
,
0
,
115
,
101
,
116
,
117
,
0
,
83
,
111
,
117
,
114
,
99
,
101
,
76
,
111
,
97
,
100
,
101
,
114
,
117
,
10
,
0
,
16
,
0
,
0
,
0
,
95
,
109
,
97
,
107
,
101
,
95
,
114
,
101
,
108
,
97
,
120
,
95
,
0
,
0
,
70
,
105
,
108
,
101
,
76
,
111
,
97
,
100
,
101
,
114
,
117
,
16
,
0
,
0
,
99
,
97
,
115
,
101
,
117
,
18
,
0
,
0
,
0
,
69
,
88
,
84
,
69
,
78
,
83
,
73
,
0
,
83
,
111
,
117
,
114
,
99
,
101
,
70
,
105
,
108
,
101
,
76
,
111
,
97
,
100
,
101
,
79
,
78
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
6
,
0
,
0
,
0
,
114
,
117
,
20
,
0
,
0
,
0
,
83
,
111
,
117
,
114
,
99
,
101
,
108
,
101
,
115
,
115
,
101
,
120
,
116
,
101
,
110
,
100
,
117
,
18
,
0
,
0
,
0
,
101
,
120
,
116
,
101
,
110
,
70
,
105
,
108
,
101
,
76
,
111
,
97
,
100
,
101
,
114
,
117
,
18
,
0
,
0
,
0
,
69
,
115
,
105
,
111
,
110
,
95
,
115
,
117
,
102
,
102
,
105
,
120
,
101
,
115
,
117
,
15
,
0
,
88
,
84
,
69
,
78
,
83
,
73
,
79
,
78
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
0
,
0
,
83
,
79
,
85
,
82
,
67
,
69
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
19
,
0
,
0
,
0
,
69
,
120
,
116
,
101
,
110
,
115
,
105
,
111
,
110
,
70
,
83
,
117
,
6
,
0
,
0
,
0
,
97
,
112
,
112
,
101
,
110
,
100
,
117
,
4
,
0
,
0
,
105
,
108
,
101
,
76
,
111
,
97
,
100
,
101
,
114
,
117
,
14
,
0
,
0
,
0
,
95
,
78
,
0
,
84
,
114
,
117
,
101
,
117
,
21
,
0
,
0
,
0
,
87
,
105
,
110
,
100
,
111
,
119
,
97
,
109
,
101
,
115
,
112
,
97
,
99
,
101
,
80
,
97
,
116
,
104
,
117
,
15
,
0
,
0
,
115
,
82
,
101
,
103
,
105
,
115
,
116
,
114
,
121
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
0
,
78
,
97
,
109
,
101
,
115
,
112
,
97
,
99
,
101
,
76
,
111
,
97
,
100
,
101
,
114
,
11
,
0
,
0
,
0
,
68
,
69
,
66
,
85
,
71
,
95
,
66
,
85
,
73
,
76
,
68
,
40
,
117
,
10
,
0
,
0
,
0
,
80
,
97
,
116
,
104
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
16
,
0
,
0
,
0
,
117
,
10
,
0
,
0
,
0
,
115
,
121
,
115
,
95
,
109
,
111
,
100
,
10
,
0
,
0
,
0
,
70
,
105
,
108
,
101
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
18
,
117
,
108
,
101
,
117
,
11
,
0
,
0
,
0
,
95
,
105
,
109
,
112
,
95
,
109
,
111
,
100
,
0
,
0
,
0
,
95
,
73
,
109
,
112
,
111
,
114
,
116
,
76
,
111
,
99
,
107
,
67
,
111
,
117
,
108
,
101
,
117
,
11
,
0
,
0
,
0
,
109
,
111
,
100
,
117
,
108
,
101
,
95
,
116
,
110
,
116
,
101
,
120
,
116
,
117
,
13
,
0
,
0
,
0
,
95
,
114
,
101
,
115
,
111
,
108
,
121
,
112
,
101
,
117
,
4
,
0
,
0
,
0
,
110
,
97
,
109
,
101
,
117
,
6
,
0
,
0
,
118
,
101
,
95
,
110
,
97
,
109
,
101
,
117
,
12
,
0
,
0
,
0
,
95
,
102
,
105
,
110
,
0
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
11
,
0
,
0
,
0
,
115
,
101
,
108
,
102
,
100
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
13
,
0
,
0
,
0
,
95
,
115
,
97
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
12
,
0
,
0
,
0
,
98
,
117
,
105
,
108
,
110
,
105
,
116
,
121
,
95
,
99
,
104
,
101
,
99
,
107
,
117
,
8
,
0
,
0
,
0
,
95
,
116
,
105
,
110
,
95
,
110
,
97
,
109
,
101
,
117
,
14
,
0
,
0
,
0
,
98
,
117
,
105
,
69
,
82
,
82
,
95
,
77
,
83
,
71
,
117
,
23
,
0
,
0
,
0
,
95
,
102
,
105
,
110
,
108
,
116
,
105
,
110
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
10
,
0
,
0
,
0
,
100
,
95
,
97
,
110
,
100
,
95
,
108
,
111
,
97
,
100
,
95
,
117
,
110
,
108
,
111
,
99
,
111
,
115
,
95
,
100
,
101
,
116
,
97
,
105
,
108
,
115
,
117
,
10
,
0
,
0
,
0
,
98
,
107
,
101
,
100
,
117
,
14
,
0
,
0
,
0
,
95
,
102
,
105
,
110
,
100
,
95
,
97
,
110
,
117
,
105
,
108
,
116
,
105
,
110
,
95
,
111
,
115
,
117
,
15
,
0
,
0
,
0
,
112
,
97
,
100
,
95
,
108
,
111
,
97
,
100
,
117
,
11
,
0
,
0
,
0
,
95
,
103
,
99
,
100
,
95
,
116
,
104
,
95
,
115
,
101
,
112
,
97
,
114
,
97
,
116
,
111
,
114
,
115
,
117
,
8
,
0
,
105
,
109
,
112
,
111
,
114
,
116
,
117
,
16
,
0
,
0
,
0
,
95
,
104
,
97
,
110
,
100
,
0
,
0
,
112
,
97
,
116
,
104
,
95
,
115
,
101
,
112
,
117
,
9
,
0
,
0
,
0
,
111
,
108
,
101
,
95
,
102
,
114
,
111
,
109
,
108
,
105
,
115
,
116
,
117
,
17
,
0
,
0
,
0
,
115
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
13
,
0
,
0
,
0
,
116
,
104
,
114
,
95
,
99
,
97
,
108
,
99
,
95
,
95
,
95
,
112
,
97
,
99
,
107
,
97
,
103
,
101
,
95
,
101
,
97
,
100
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
14
,
0
,
0
,
0
,
119
,
95
,
117
,
27
,
0
,
0
,
0
,
95
,
103
,
101
,
116
,
95
,
115
,
117
,
112
,
112
,
111
,
101
,
97
,
107
,
114
,
101
,
102
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
13
,
0
,
114
,
116
,
101
,
100
,
95
,
102
,
105
,
108
,
101
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
0
,
0
,
119
,
105
,
110
,
114
,
101
,
103
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
40
,
115
,
117
,
10
,
0
,
0
,
0
,
95
,
95
,
105
,
109
,
112
,
111
,
114
,
116
,
95
,
95
,
0
,
0
,
0
,
0
,
40
,
0
,
0
,
0
,
0
,
117
,
29
,
0
,
0
,
0
,
60
,
102
,
117
,
6
,
0
,
0
,
0
,
95
,
115
,
101
,
116
,
117
,
112
,
117
,
8
,
0
,
0
,
0
,
114
,
111
,
122
,
101
,
110
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
98
,
46
,
95
,
105
,
110
,
115
,
116
,
97
,
108
,
108
,
40
,
0
,
0
,
0
,
0
,
40
,
0
,
0
,
95
,
98
,
111
,
111
,
116
,
115
,
116
,
114
,
97
,
112
,
62
,
117
,
6
,
0
,
0
,
0
,
0
,
0
,
40
,
0
,
0
,
0
,
0
,
117
,
29
,
0
,
0
,
0
,
60
,
102
,
114
,
111
,
95
,
115
,
101
,
116
,
117
,
112
,
153
,
6
,
0
,
0
,
115
,
106
,
0
,
0
,
0
,
0
,
122
,
101
,
110
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
98
,
46
,
95
,
98
,
9
,
6
,
1
,
6
,
2
,
12
,
1
,
9
,
2
,
6
,
2
,
12
,
1
,
28
,
1
,
15
,
111
,
111
,
116
,
115
,
116
,
114
,
97
,
112
,
62
,
117
,
8
,
0
,
0
,
0
,
60
,
109
,
1
,
15
,
1
,
15
,
1
,
12
,
1
,
15
,
1
,
22
,
2
,
13
,
1
,
13
,
1
,
15
,
111
,
100
,
117
,
108
,
101
,
62
,
8
,
0
,
0
,
0
,
115
,
132
,
0
,
0
,
0
,
6
,
1
,
18
,
2
,
13
,
1
,
20
,
2
,
48
,
1
,
19
,
2
,
31
,
1
,
10
,
1
,
15
,
21
,
6
,
3
,
12
,
13
,
12
,
16
,
12
,
13
,
12
,
12
,
12
,
12
,
12
,
10
,
12
,
1
,
13
,
1
,
4
,
2
,
3
,
1
,
15
,
2
,
27
,
1
,
13
,
1
,
5
,
1
,
13
,
6
,
12
,
7
,
15
,
22
,
12
,
8
,
15
,
3
,
12
,
12
,
6
,
2
,
6
,
3
,
22
,
1
,
12
,
2
,
12
,
2
,
3
,
1
,
19
,
1
,
13
,
2
,
11
,
1
,
15
,
2
,
12
,
4
,
19
,
68
,
19
,
23
,
12
,
19
,
12
,
20
,
12
,
100
,
34
,
1
,
37
,
2
,
6
,
1
,
15
,
1
,
19
,
2
,
16
,
1
,
16
,
1
,
16
,
1
,
16
,
1
,
22
,
2
,
19
,
2
,
9
,
2
,
9
,
1
,
9
,
2
,
15
,
27
,
12
,
23
,
12
,
21
,
12
,
8
,
12
,
1
,
19
,
1
,
12
,
1
,
13
,
1
,
12
,
1
,
117
,
6
,
0
,
0
,
0
,
95
,
115
,
13
,
12
,
11
,
12
,
55
,
12
,
18
,
12
,
11
,
12
,
11
,
12
,
17
,
19
,
57
,
19
,
101
,
116
,
117
,
112
,
99
,
2
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
3
,
0
,
0
,
54
,
19
,
50
,
19
,
82
,
22
,
134
,
19
,
29
,
25
,
49
,
25
,
25
,
6
,
3
,
19
,
0
,
3
,
0
,
0
,
0
,
67
,
0
,
0
,
0
,
115
,
136
,
0
,
0
,
0
,
116
,
0
,
45
,
19
,
55
,
19
,
18
,
19
,
91
,
19
,
126
,
19
,
13
,
12
,
9
,
12
,
17
,
12
,
0
,
124
,
0
,
0
,
124
,
1
,
0
,
131
,
2
,
0
,
1
,
116
,
1
,
0
,
131
,
0
,
17
,
6
,
2
,
12
,
50
,
12
,
13
,
18
,
24
,
12
,
34
,
12
,
15
,
12
,
11
,
24
,
0
,
125
,
2
,
0
,
116
,
2
,
0
,
106
,
3
,
0
,
106
,
4
,
0
,
116
,
5
,
0
,
36
,
12
,
76
,
106
,
6
,
0
,
124
,
2
,
0
,
140
,
0
,
0
,
103
,
1
,
0
,
131
,
1
,
0
,
1
,
116
,
2
,
0
,
106
,
7
,
0
,
106
,
8
,
0
,
116
,
9
,
0
,
131
,
1
,
0
,
1
,
116
,
2
,
0
,
106
,
7
,
0
,
106
,
8
,
0
,
116
,
10
,
0
,
131
,
1
,
0
,
1
,
116
,
11
,
0
,
106
,
12
,
0
,
100
,
1
,
0
,
107
,
2
,
0
,
114
,
116
,
0
,
116
,
2
,
0
,
106
,
7
,
0
,
106
,
8
,
0
,
116
,
13
,
0
,
131
,
1
,
0
,
1
,
110
,
0
,
0
,
116
,
2
,
0
,
106
,
7
,
0
,
106
,
8
,
0
,
116
,
14
,
0
,
131
,
1
,
0
,
1
,
100
,
2
,
0
,
83
,
40
,
3
,
0
,
0
,
0
,
117
,
50
,
0
,
0
,
0
,
73
,
110
,
115
,
116
,
97
,
108
,
108
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
98
,
32
,
97
,
115
,
32
,
116
,
104
,
101
,
32
,
105
,
109
,
112
,
108
,
101
,
109
,
101
,
110
,
116
,
97
,
116
,
105
,
111
,
110
,
32
,
111
,
102
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
46
,
117
,
2
,
0
,
0
,
0
,
110
,
116
,
78
,
40
,
15
,
0
,
0
,
0
,
117
,
6
,
0
,
0
,
0
,
95
,
115
,
101
,
116
,
117
,
112
,
117
,
27
,
0
,
0
,
0
,
95
,
103
,
101
,
116
,
95
,
115
,
117
,
112
,
112
,
111
,
114
,
116
,
101
,
100
,
95
,
102
,
105
,
108
,
101
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
115
,
117
,
3
,
0
,
0
,
0
,
115
,
121
,
115
,
117
,
10
,
0
,
0
,
0
,
112
,
97
,
116
,
104
,
95
,
104
,
111
,
111
,
107
,
115
,
117
,
6
,
0
,
0
,
0
,
101
,
120
,
116
,
101
,
110
,
100
,
117
,
10
,
0
,
0
,
0
,
70
,
105
,
108
,
101
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
9
,
0
,
0
,
0
,
112
,
97
,
116
,
104
,
95
,
104
,
111
,
111
,
107
,
117
,
9
,
0
,
0
,
0
,
109
,
101
,
116
,
97
,
95
,
112
,
97
,
116
,
104
,
117
,
6
,
0
,
0
,
0
,
97
,
112
,
112
,
101
,
110
,
100
,
117
,
15
,
0
,
0
,
0
,
66
,
117
,
105
,
108
,
116
,
105
,
110
,
73
,
109
,
112
,
111
,
114
,
116
,
101
,
114
,
117
,
14
,
0
,
0
,
0
,
70
,
114
,
111
,
122
,
101
,
110
,
73
,
109
,
112
,
111
,
114
,
116
,
101
,
114
,
117
,
3
,
0
,
0
,
0
,
95
,
111
,
115
,
117
,
8
,
0
,
0
,
0
,
95
,
95
,
110
,
97
,
109
,
101
,
95
,
95
,
117
,
21
,
0
,
0
,
0
,
87
,
105
,
110
,
100
,
111
,
119
,
115
,
82
,
101
,
103
,
105
,
115
,
116
,
114
,
121
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
10
,
0
,
0
,
0
,
80
,
97
,
116
,
104
,
70
,
105
,
110
,
100
,
101
,
114
,
40
,
3
,
0
,
0
,
0
,
117
,
10
,
0
,
0
,
0
,
115
,
121
,
115
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
11
,
0
,
0
,
0
,
95
,
105
,
109
,
112
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
17
,
0
,
0
,
0
,
115
,
117
,
112
,
112
,
111
,
114
,
116
,
101
,
100
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
115
,
40
,
0
,
0
,
0
,
0
,
40
,
0
,
0
,
0
,
0
,
117
,
29
,
0
,
0
,
0
,
60
,
102
,
114
,
111
,
122
,
101
,
110
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
98
,
46
,
95
,
98
,
111
,
111
,
116
,
115
,
116
,
114
,
97
,
112
,
62
,
117
,
8
,
0
,
0
,
0
,
95
,
105
,
110
,
115
,
116
,
97
,
108
,
108
,
232
,
6
,
0
,
0
,
115
,
16
,
0
,
0
,
0
,
0
,
2
,
13
,
1
,
9
,
1
,
28
,
1
,
16
,
1
,
16
,
1
,
15
,
1
,
19
,
1
,
117
,
8
,
0
,
0
,
0
,
95
,
105
,
110
,
115
,
116
,
97
,
108
,
108
,
78
,
40
,
3
,
0
,
0
,
0
,
117
,
3
,
0
,
0
,
0
,
119
,
105
,
110
,
117
,
6
,
0
,
0
,
0
,
99
,
121
,
103
,
119
,
105
,
110
,
117
,
6
,
0
,
0
,
0
,
100
,
97
,
114
,
119
,
105
,
110
,
40
,
74
,
0
,
0
,
0
,
117
,
7
,
0
,
0
,
0
,
95
,
95
,
100
,
111
,
99
,
95
,
95
,
117
,
27
,
0
,
0
,
0
,
95
,
67
,
65
,
83
,
69
,
95
,
73
,
78
,
83
,
69
,
78
,
83
,
73
,
84
,
73
,
86
,
69
,
95
,
80
,
76
,
65
,
84
,
70
,
79
,
82
,
77
,
83
,
117
,
16
,
0
,
0
,
0
,
95
,
109
,
97
,
107
,
101
,
95
,
114
,
101
,
108
,
97
,
120
,
95
,
99
,
97
,
115
,
101
,
117
,
7
,
0
,
0
,
0
,
95
,
119
,
95
,
108
,
111
,
110
,
103
,
117
,
7
,
0
,
0
,
0
,
95
,
114
,
95
,
108
,
111
,
110
,
103
,
117
,
10
,
0
,
0
,
0
,
95
,
112
,
97
,
116
,
104
,
95
,
106
,
111
,
105
,
110
,
117
,
11
,
0
,
0
,
0
,
95
,
112
,
97
,
116
,
104
,
95
,
115
,
112
,
108
,
105
,
116
,
117
,
18
,
0
,
0
,
0
,
95
,
112
,
97
,
116
,
104
,
95
,
105
,
115
,
95
,
109
,
111
,
100
,
101
,
95
,
116
,
121
,
112
,
101
,
117
,
12
,
0
,
0
,
0
,
95
,
112
,
97
,
116
,
104
,
95
,
105
,
115
,
102
,
105
,
108
,
101
,
117
,
11
,
0
,
0
,
0
,
95
,
112
,
97
,
116
,
104
,
95
,
105
,
115
,
100
,
105
,
114
,
117
,
13
,
0
,
0
,
0
,
95
,
119
,
114
,
105
,
116
,
101
,
95
,
97
,
116
,
111
,
109
,
105
,
99
,
117
,
5
,
0
,
0
,
0
,
95
,
119
,
114
,
97
,
112
,
117
,
4
,
0
,
0
,
0
,
116
,
121
,
112
,
101
,
117
,
8
,
0
,
0
,
0
,
95
,
95
,
99
,
111
,
100
,
101
,
95
,
95
,
117
,
10
,
0
,
0
,
0
,
95
,
99
,
111
,
100
,
101
,
95
,
116
,
121
,
112
,
101
,
117
,
10
,
0
,
0
,
0
,
110
,
101
,
119
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
13
,
0
,
0
,
0
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
95
,
108
,
111
,
99
,
107
,
115
,
117
,
12
,
0
,
0
,
0
,
95
,
98
,
108
,
111
,
99
,
107
,
105
,
110
,
103
,
95
,
111
,
110
,
117
,
12
,
0
,
0
,
0
,
82
,
117
,
110
,
116
,
105
,
109
,
101
,
69
,
114
,
114
,
111
,
114
,
117
,
14
,
0
,
0
,
0
,
95
,
68
,
101
,
97
,
100
,
108
,
111
,
99
,
107
,
69
,
114
,
114
,
111
,
114
,
117
,
11
,
0
,
0
,
0
,
95
,
77
,
111
,
100
,
117
,
108
,
101
,
76
,
111
,
99
,
107
,
117
,
16
,
0
,
0
,
0
,
95
,
68
,
117
,
109
,
109
,
121
,
77
,
111
,
100
,
117
,
108
,
101
,
76
,
111
,
99
,
107
,
117
,
16
,
0
,
0
,
0
,
95
,
103
,
101
,
116
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
95
,
108
,
111
,
99
,
107
,
117
,
19
,
0
,
0
,
0
,
95
,
108
,
111
,
99
,
107
,
95
,
117
,
110
,
108
,
111
,
99
,
107
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
25
,
0
,
0
,
0
,
95
,
99
,
97
,
108
,
108
,
95
,
119
,
105
,
116
,
104
,
95
,
102
,
114
,
97
,
109
,
101
,
115
,
95
,
114
,
101
,
109
,
111
,
118
,
101
,
100
,
117
,
3
,
0
,
0
,
0
,
111
,
114
,
100
,
117
,
17
,
0
,
0
,
0
,
95
,
82
,
65
,
87
,
95
,
77
,
65
,
71
,
73
,
67
,
95
,
78
,
85
,
77
,
66
,
69
,
82
,
117
,
5
,
0
,
0
,
0
,
98
,
121
,
116
,
101
,
115
,
117
,
5
,
0
,
0
,
0
,
114
,
97
,
110
,
103
,
101
,
117
,
12
,
0
,
0
,
0
,
95
,
77
,
65
,
71
,
73
,
67
,
95
,
66
,
89
,
84
,
69
,
83
,
117
,
8
,
0
,
0
,
0
,
95
,
80
,
89
,
67
,
65
,
67
,
72
,
69
,
117
,
15
,
0
,
0
,
0
,
83
,
79
,
85
,
82
,
67
,
69
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
23
,
0
,
0
,
0
,
68
,
69
,
66
,
85
,
71
,
95
,
66
,
89
,
84
,
69
,
67
,
79
,
68
,
69
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
27
,
0
,
0
,
0
,
79
,
80
,
84
,
73
,
77
,
73
,
90
,
69
,
68
,
95
,
66
,
89
,
84
,
69
,
67
,
79
,
68
,
69
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
4
,
0
,
0
,
0
,
78
,
111
,
110
,
101
,
117
,
17
,
0
,
0
,
0
,
99
,
97
,
99
,
104
,
101
,
95
,
102
,
114
,
111
,
109
,
95
,
115
,
111
,
117
,
114
,
99
,
101
,
117
,
17
,
0
,
0
,
0
,
115
,
111
,
117
,
114
,
99
,
101
,
95
,
102
,
114
,
111
,
109
,
95
,
99
,
97
,
99
,
104
,
101
,
117
,
15
,
0
,
0
,
0
,
95
,
103
,
101
,
116
,
95
,
115
,
111
,
117
,
114
,
99
,
101
,
102
,
105
,
108
,
101
,
117
,
16
,
0
,
0
,
0
,
95
,
118
,
101
,
114
,
98
,
111
,
115
,
101
,
95
,
109
,
101
,
115
,
115
,
97
,
103
,
101
,
117
,
11
,
0
,
0
,
0
,
115
,
101
,
116
,
95
,
112
,
97
,
99
,
107
,
97
,
103
,
101
,
117
,
10
,
0
,
0
,
0
,
115
,
101
,
116
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
117
,
17
,
0
,
0
,
0
,
109
,
111
,
100
,
117
,
108
,
101
,
95
,
102
,
111
,
114
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
117
,
11
,
0
,
0
,
0
,
95
,
99
,
104
,
101
,
99
,
107
,
95
,
110
,
97
,
109
,
101
,
117
,
17
,
0
,
0
,
0
,
95
,
114
,
101
,
113
,
117
,
105
,
114
,
101
,
115
,
95
,
98
,
117
,
105
,
108
,
116
,
105
,
110
,
117
,
16
,
0
,
0
,
0
,
95
,
114
,
101
,
113
,
117
,
105
,
114
,
101
,
115
,
95
,
102
,
114
,
111
,
122
,
101
,
110
,
117
,
17
,
0
,
0
,
0
,
95
,
102
,
105
,
110
,
100
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
95
,
115
,
104
,
105
,
109
,
117
,
15
,
0
,
0
,
0
,
66
,
117
,
105
,
108
,
116
,
105
,
110
,
73
,
109
,
112
,
111
,
114
,
116
,
101
,
114
,
117
,
14
,
0
,
0
,
0
,
70
,
114
,
111
,
122
,
101
,
110
,
73
,
109
,
112
,
111
,
114
,
116
,
101
,
114
,
117
,
21
,
0
,
0
,
0
,
87
,
105
,
110
,
100
,
111
,
119
,
115
,
82
,
101
,
103
,
105
,
115
,
116
,
114
,
121
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
13
,
0
,
0
,
0
,
95
,
76
,
111
,
97
,
100
,
101
,
114
,
66
,
97
,
115
,
105
,
99
,
115
,
117
,
12
,
0
,
0
,
0
,
83
,
111
,
117
,
114
,
99
,
101
,
76
,
111
,
97
,
100
,
101
,
114
,
117
,
10
,
0
,
0
,
0
,
70
,
105
,
108
,
101
,
76
,
111
,
97
,
100
,
101
,
114
,
117
,
16
,
0
,
0
,
0
,
83
,
111
,
117
,
114
,
99
,
101
,
70
,
105
,
108
,
101
,
76
,
111
,
97
,
100
,
101
,
114
,
117
,
20
,
0
,
0
,
0
,
83
,
111
,
117
,
114
,
99
,
101
,
108
,
101
,
115
,
115
,
70
,
105
,
108
,
101
,
76
,
111
,
97
,
100
,
101
,
114
,
117
,
18
,
0
,
0
,
0
,
69
,
88
,
84
,
69
,
78
,
83
,
73
,
79
,
78
,
95
,
83
,
85
,
70
,
70
,
73
,
88
,
69
,
83
,
117
,
19
,
0
,
0
,
0
,
69
,
120
,
116
,
101
,
110
,
115
,
105
,
111
,
110
,
70
,
105
,
108
,
101
,
76
,
111
,
97
,
100
,
101
,
114
,
117
,
14
,
0
,
0
,
0
,
95
,
78
,
97
,
109
,
101
,
115
,
112
,
97
,
99
,
101
,
80
,
97
,
116
,
104
,
117
,
15
,
0
,
0
,
0
,
78
,
97
,
109
,
101
,
115
,
112
,
97
,
99
,
101
,
76
,
111
,
97
,
100
,
101
,
114
,
117
,
10
,
0
,
0
,
0
,
80
,
97
,
116
,
104
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
10
,
0
,
0
,
0
,
70
,
105
,
108
,
101
,
70
,
105
,
110
,
100
,
101
,
114
,
117
,
18
,
0
,
0
,
0
,
95
,
73
,
109
,
112
,
111
,
114
,
116
,
76
,
111
,
99
,
107
,
67
,
111
,
110
,
116
,
101
,
120
,
116
,
117
,
13
,
0
,
0
,
0
,
95
,
114
,
101
,
115
,
111
,
108
,
118
,
101
,
95
,
110
,
97
,
109
,
101
,
117
,
12
,
0
,
0
,
0
,
95
,
102
,
105
,
110
,
100
,
95
,
109
,
111
,
100
,
117
,
108
,
101
,
117
,
13
,
0
,
0
,
0
,
95
,
115
,
97
,
110
,
105
,
116
,
121
,
95
,
99
,
104
,
101
,
99
,
107
,
117
,
8
,
0
,
0
,
0
,
95
,
69
,
82
,
82
,
95
,
77
,
83
,
71
,
117
,
23
,
0
,
0
,
0
,
95
,
102
,
105
,
110
,
100
,
95
,
97
,
110
,
100
,
95
,
108
,
111
,
97
,
100
,
95
,
117
,
110
,
108
,
111
,
99
,
107
,
101
,
100
,
117
,
14
,
0
,
0
,
0
,
95
,
102
,
105
,
110
,
100
,
95
,
97
,
110
,
100
,
95
,
108
,
111
,
97
,
100
,
117
,
11
,
0
,
0
,
0
,
95
,
103
,
99
,
100
,
95
,
105
,
109
,
112
,
111
,
114
,
116
,
117
,
16
,
0
,
0
,
0
,
95
,
104
,
97
,
110
,
100
,
108
,
101
,
95
,
102
,
114
,
111
,
109
,
108
,
105
,
115
,
116
,
117
,
17
,
0
,
0
,
0
,
95
,
99
,
97
,
108
,
99
,
95
,
95
,
95
,
112
,
97
,
99
,
107
,
97
,
103
,
101
,
95
,
95
,
117
,
27
,
0
,
0
,
0
,
95
,
103
,
101
,
116
,
95
,
115
,
117
,
112
,
112
,
111
,
114
,
116
,
101
,
100
,
95
,
102
,
105
,
108
,
101
,
95
,
108
,
111
,
97
,
100
,
101
,
114
,
115
,
117
,
10
,
0
,
0
,
0
,
95
,
95
,
105
,
109
,
112
,
111
,
114
,
116
,
95
,
95
,
117
,
6
,
0
,
0
,
0
,
95
,
115
,
101
,
116
,
117
,
112
,
117
,
8
,
0
,
0
,
0
,
95
,
105
,
110
,
115
,
116
,
97
,
108
,
108
,
40
,
0
,
0
,
0
,
0
,
40
,
0
,
0
,
0
,
0
,
40
,
0
,
0
,
0
,
0
,
117
,
29
,
0
,
0
,
0
,
60
,
102
,
114
,
111
,
122
,
101
,
110
,
32
,
105
,
109
,
112
,
111
,
114
,
116
,
108
,
105
,
98
,
46
,
95
,
98
,
111
,
111
,
116
,
115
,
116
,
114
,
97
,
112
,
62
,
117
,
8
,
0
,
0
,
0
,
60
,
109
,
111
,
100
,
117
,
108
,
101
,
62
,
8
,
0
,
0
,
0
,
115
,
132
,
0
,
0
,
0
,
6
,
21
,
6
,
3
,
12
,
13
,
12
,
16
,
12
,
13
,
12
,
12
,
12
,
12
,
12
,
10
,
12
,
6
,
12
,
7
,
15
,
22
,
12
,
8
,
15
,
3
,
12
,
12
,
6
,
2
,
6
,
3
,
22
,
4
,
19
,
68
,
19
,
23
,
12
,
19
,
12
,
20
,
12
,
100
,
34
,
1
,
37
,
2
,
6
,
2
,
9
,
2
,
9
,
1
,
9
,
2
,
15
,
27
,
12
,
23
,
12
,
21
,
12
,
8
,
12
,
13
,
12
,
11
,
12
,
55
,
12
,
18
,
12
,
11
,
12
,
11
,
12
,
17
,
19
,
57
,
19
,
54
,
19
,
50
,
19
,
82
,
22
,
134
,
19
,
29
,
25
,
49
,
25
,
25
,
6
,
3
,
19
,
45
,
19
,
55
,
19
,
18
,
19
,
91
,
19
,
126
,
19
,
13
,
12
,
9
,
12
,
17
,
12
,
17
,
6
,
2
,
12
,
50
,
12
,
13
,
18
,
24
,
12
,
34
,
12
,
15
,
12
,
11
,
24
,
36
,
12
,
79
,
};
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment