Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
f6035080
Commit
f6035080
authored
Sep 04, 2014
by
Nikolay Sivov
Committed by
Alexandre Julliard
Sep 05, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dwrite: Implement AnalyzeLineBreakpoints() using Unicode breaking algorithm.
parent
1183a781
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
1393 additions
and
9 deletions
+1393
-9
Makefile.in
dlls/dwrite/Makefile.in
+1
-0
analyzer.c
dlls/dwrite/analyzer.c
+469
-3
linebreak.c
dlls/dwrite/linebreak.c
+914
-0
analyzer.c
dlls/dwrite/tests/analyzer.c
+8
-6
make_unicode
tools/make_unicode
+1
-0
No files found.
dlls/dwrite/Makefile.in
View file @
f6035080
...
...
@@ -7,5 +7,6 @@ C_SRCS = \
font.c
\
gdiinterop.c
\
layout.c
\
linebreak.c
\
main.c
\
opentype.c
dlls/dwrite/analyzer.c
View file @
f6035080
/*
* Text analyzer
*
* Copyright 2012 Nikolay Sivov for CodeWeavers
* Copyright 2011 Aric Stewart for CodeWeavers
* Copyright 2012, 2014 Nikolay Sivov for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -25,6 +26,8 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
dwrite
);
extern
const
unsigned
short
wine_linebreak_table
[];
enum
scriptcode
{
Script_Arabic
=
0
,
Script_Armenian
=
1
,
...
...
@@ -304,6 +307,415 @@ static HRESULT analyze_script(const WCHAR *text, UINT32 len, IDWriteTextAnalysis
return
IDWriteTextAnalysisSink_SetScriptAnalysis
(
sink
,
pos
,
length
,
&
sa
);
}
struct
linebreaking_state
{
DWRITE_LINE_BREAKPOINT
*
breakpoints
;
UINT32
count
;
};
enum
BreakConditionLocation
{
BreakConditionBefore
,
BreakConditionAfter
};
enum
linebreaking_classes
{
b_BK
=
1
,
b_CR
,
b_LF
,
b_CM
,
b_SG
,
b_GL
,
b_CB
,
b_SP
,
b_ZW
,
b_NL
,
b_WJ
,
b_JL
,
b_JV
,
b_JT
,
b_H2
,
b_H3
,
b_XX
,
b_OP
,
b_CL
,
b_CP
,
b_QU
,
b_NS
,
b_EX
,
b_SY
,
b_IS
,
b_PR
,
b_PO
,
b_NU
,
b_AL
,
b_ID
,
b_IN
,
b_HY
,
b_BB
,
b_BA
,
b_SA
,
b_AI
,
b_B2
,
b_HL
,
b_CJ
,
b_RI
};
/* "Can break" is a weak condition, stronger "may not break" and "must break" override it. Initially all conditions are
set to "can break" and could only be changed once. */
static
inline
void
set_break_condition
(
UINT32
pos
,
enum
BreakConditionLocation
location
,
DWRITE_BREAK_CONDITION
condition
,
struct
linebreaking_state
*
state
)
{
if
(
location
==
BreakConditionBefore
)
{
if
(
state
->
breakpoints
[
pos
].
breakConditionBefore
!=
DWRITE_BREAK_CONDITION_CAN_BREAK
)
return
;
state
->
breakpoints
[
pos
].
breakConditionBefore
=
condition
;
if
(
pos
>
0
)
state
->
breakpoints
[
pos
-
1
].
breakConditionAfter
=
condition
;
}
else
{
if
(
state
->
breakpoints
[
pos
].
breakConditionAfter
!=
DWRITE_BREAK_CONDITION_CAN_BREAK
)
return
;
state
->
breakpoints
[
pos
].
breakConditionAfter
=
condition
;
if
(
pos
+
1
<
state
->
count
)
state
->
breakpoints
[
pos
+
1
].
breakConditionBefore
=
condition
;
}
}
static
inline
WCHAR
get_table_entry
(
const
unsigned
short
*
table
,
WCHAR
ch
)
{
return
table
[
table
[
table
[
ch
>>
8
]
+
((
ch
>>
4
)
&
0x0f
)]
+
(
ch
&
0xf
)];
}
static
HRESULT
analyze_linebreaks
(
const
WCHAR
*
text
,
UINT32
count
,
DWRITE_LINE_BREAKPOINT
*
breakpoints
)
{
struct
linebreaking_state
state
;
short
*
break_class
;
int
i
,
j
;
break_class
=
heap_alloc
(
count
*
sizeof
(
short
));
if
(
!
break_class
)
return
E_OUTOFMEMORY
;
state
.
breakpoints
=
breakpoints
;
state
.
count
=
count
;
/* LB31 - allow breaks everywhere. It will be overridden if needed as
other rules dictate. */
for
(
i
=
0
;
i
<
count
;
i
++
)
{
break_class
[
i
]
=
get_table_entry
(
wine_linebreak_table
,
text
[
i
]);
breakpoints
[
i
].
breakConditionBefore
=
DWRITE_BREAK_CONDITION_CAN_BREAK
;
breakpoints
[
i
].
breakConditionAfter
=
DWRITE_BREAK_CONDITION_CAN_BREAK
;
breakpoints
[
i
].
isWhitespace
=
break_class
[
i
]
==
b_BK
||
break_class
[
i
]
==
b_ZW
||
break_class
[
i
]
==
b_SP
||
isspaceW
(
text
[
i
]);
breakpoints
[
i
].
isSoftHyphen
=
FALSE
;
breakpoints
[
i
].
padding
=
0
;
/* LB1 - resolve some classes. TODO: use external algorithms for these classes. */
switch
(
break_class
[
i
])
{
case
b_AI
:
case
b_SA
:
case
b_SG
:
case
b_XX
:
break_class
[
i
]
=
b_AL
;
break
;
case
b_CJ
:
break_class
[
i
]
=
b_NS
;
break
;
}
}
/* LB2 - never break at the start */
set_break_condition
(
0
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
/* LB3 - always break at the end. This one is ignored. */
for
(
i
=
0
;
i
<
count
;
i
++
)
{
switch
(
break_class
[
i
])
{
/* LB4 - LB6 */
case
b_CR
:
/* LB5 - don't break CR x LF */
if
(
i
<
count
-
1
&&
break_class
[
i
+
1
]
==
b_LF
)
{
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
break
;
}
case
b_LF
:
case
b_NL
:
case
b_BK
:
/* LB4 - LB5 - always break after hard breaks */
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MUST_BREAK
,
&
state
);
/* LB6 - do not break before hard breaks */
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
break
;
/* LB7 - do not break before spaces */
case
b_SP
:
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
break
;
case
b_ZW
:
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
/* LB8 - break before character after zero-width space, skip spaces inbetween */
while
(
i
<
count
-
1
&&
break_class
[
i
+
1
]
==
b_SP
)
i
++
;
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_CAN_BREAK
,
&
state
);
break
;
}
}
/* LB9 - LB10 */
for
(
i
=
0
;
i
<
count
;
i
++
)
{
if
(
break_class
[
i
]
==
b_CM
)
{
if
(
i
>
0
)
{
switch
(
break_class
[
i
-
1
])
{
case
b_SP
:
case
b_BK
:
case
b_CR
:
case
b_LF
:
case
b_NL
:
case
b_ZW
:
break_class
[
i
]
=
b_AL
;
break
;
default:
break_class
[
i
]
=
break_class
[
i
-
1
];
}
}
else
break_class
[
i
]
=
b_AL
;
}
}
for
(
i
=
0
;
i
<
count
;
i
++
)
{
switch
(
break_class
[
i
])
{
/* LB11 - don't break before and after word joiner */
case
b_WJ
:
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
break
;
/* LB12 - don't break after glue */
case
b_GL
:
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
/* LB12a */
if
(
i
>
0
)
{
if
(
break_class
[
i
-
1
]
!=
b_SP
&&
break_class
[
i
-
1
]
!=
b_BA
&&
break_class
[
i
-
1
]
!=
b_HY
)
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
}
break
;
/* LB13 */
case
b_CL
:
case
b_CP
:
case
b_EX
:
case
b_IS
:
case
b_SY
:
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
break
;
/* LB14 */
case
b_OP
:
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
while
(
i
<
count
-
1
&&
break_class
[
i
+
1
]
==
b_SP
)
{
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
i
++
;
}
break
;
/* LB15 */
case
b_QU
:
j
=
i
+
1
;
while
(
j
<
count
-
1
&&
break_class
[
j
]
==
b_SP
)
j
++
;
if
(
break_class
[
j
]
==
b_OP
)
for
(;
j
>
i
;
j
--
)
set_break_condition
(
j
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
break
;
/* LB16 */
case
b_NS
:
j
=
i
-
1
;
while
(
j
>
0
&&
break_class
[
j
]
==
b_SP
)
j
--
;
if
(
break_class
[
j
]
==
b_CL
||
break_class
[
j
]
==
b_CP
)
for
(
j
++
;
j
<=
i
;
j
++
)
set_break_condition
(
j
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
break
;
/* LB17 */
case
b_B2
:
j
=
i
+
1
;
while
(
j
<
count
&&
break_class
[
j
]
==
b_SP
)
j
++
;
if
(
break_class
[
j
]
==
b_B2
)
for
(;
j
>
i
;
j
--
)
set_break_condition
(
j
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
break
;
}
}
for
(
i
=
0
;
i
<
count
;
i
++
)
{
switch
(
break_class
[
i
])
{
/* LB18 - break is allowed after space */
case
b_SP
:
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_CAN_BREAK
,
&
state
);
break
;
/* LB19 - don't break before or after quotation mark */
case
b_QU
:
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
break
;
/* LB20 */
case
b_CB
:
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_CAN_BREAK
,
&
state
);
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_CAN_BREAK
,
&
state
);
break
;
/* LB21 */
case
b_BA
:
case
b_HY
:
case
b_NS
:
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
break
;
case
b_BB
:
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
break
;
/* LB21a */
case
b_HL
:
if
(
i
<
count
-
2
)
switch
(
break_class
[
i
+
1
])
{
case
b_HY
:
case
b_BA
:
set_break_condition
(
i
+
1
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
}
break
;
/* LB22 */
case
b_IN
:
if
(
i
>
0
)
{
switch
(
break_class
[
i
-
1
])
{
case
b_AL
:
case
b_HL
:
case
b_ID
:
case
b_IN
:
case
b_NU
:
set_break_condition
(
i
,
BreakConditionBefore
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
}
}
break
;
}
if
(
i
<
count
-
1
)
{
/* LB23 */
if
((
break_class
[
i
]
==
b_ID
&&
break_class
[
i
+
1
]
==
b_PO
)
||
(
break_class
[
i
]
==
b_AL
&&
break_class
[
i
+
1
]
==
b_NU
)
||
(
break_class
[
i
]
==
b_HL
&&
break_class
[
i
+
1
]
==
b_NU
)
||
(
break_class
[
i
]
==
b_NU
&&
break_class
[
i
+
1
]
==
b_AL
)
||
(
break_class
[
i
]
==
b_NU
&&
break_class
[
i
+
1
]
==
b_HL
))
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
/* LB24 */
if
((
break_class
[
i
]
==
b_PR
&&
break_class
[
i
+
1
]
==
b_ID
)
||
(
break_class
[
i
]
==
b_PR
&&
break_class
[
i
+
1
]
==
b_AL
)
||
(
break_class
[
i
]
==
b_PR
&&
break_class
[
i
+
1
]
==
b_HL
)
||
(
break_class
[
i
]
==
b_PO
&&
break_class
[
i
+
1
]
==
b_AL
)
||
(
break_class
[
i
]
==
b_PO
&&
break_class
[
i
+
1
]
==
b_HL
))
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
/* LB25 */
if
((
break_class
[
i
]
==
b_CL
&&
break_class
[
i
+
1
]
==
b_PO
)
||
(
break_class
[
i
]
==
b_CP
&&
break_class
[
i
+
1
]
==
b_PO
)
||
(
break_class
[
i
]
==
b_CL
&&
break_class
[
i
+
1
]
==
b_PR
)
||
(
break_class
[
i
]
==
b_CP
&&
break_class
[
i
+
1
]
==
b_PR
)
||
(
break_class
[
i
]
==
b_NU
&&
break_class
[
i
+
1
]
==
b_PO
)
||
(
break_class
[
i
]
==
b_NU
&&
break_class
[
i
+
1
]
==
b_PR
)
||
(
break_class
[
i
]
==
b_PO
&&
break_class
[
i
+
1
]
==
b_OP
)
||
(
break_class
[
i
]
==
b_PO
&&
break_class
[
i
+
1
]
==
b_NU
)
||
(
break_class
[
i
]
==
b_PR
&&
break_class
[
i
+
1
]
==
b_OP
)
||
(
break_class
[
i
]
==
b_PR
&&
break_class
[
i
+
1
]
==
b_NU
)
||
(
break_class
[
i
]
==
b_HY
&&
break_class
[
i
+
1
]
==
b_NU
)
||
(
break_class
[
i
]
==
b_IS
&&
break_class
[
i
+
1
]
==
b_NU
)
||
(
break_class
[
i
]
==
b_NU
&&
break_class
[
i
+
1
]
==
b_NU
)
||
(
break_class
[
i
]
==
b_SY
&&
break_class
[
i
+
1
]
==
b_NU
))
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
/* LB26 */
if
(
break_class
[
i
]
==
b_JL
)
{
switch
(
break_class
[
i
+
1
])
{
case
b_JL
:
case
b_JV
:
case
b_H2
:
case
b_H3
:
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
}
}
if
((
break_class
[
i
]
==
b_JV
||
break_class
[
i
]
==
b_H2
)
&&
(
break_class
[
i
+
1
]
==
b_JV
||
break_class
[
i
+
1
]
==
b_JT
))
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
if
((
break_class
[
i
]
==
b_JT
||
break_class
[
i
]
==
b_H3
)
&&
break_class
[
i
+
1
]
==
b_JT
)
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
/* LB27 */
switch
(
break_class
[
i
])
{
case
b_JL
:
case
b_JV
:
case
b_JT
:
case
b_H2
:
case
b_H3
:
if
(
break_class
[
i
+
1
]
==
b_IN
||
break_class
[
i
+
1
]
==
b_PO
)
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
}
if
(
break_class
[
i
]
==
b_PO
)
{
switch
(
break_class
[
i
+
1
])
{
case
b_JL
:
case
b_JV
:
case
b_JT
:
case
b_H2
:
case
b_H3
:
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
}
}
/* LB28 */
if
((
break_class
[
i
]
==
b_AL
&&
break_class
[
i
+
1
]
==
b_AL
)
||
(
break_class
[
i
]
==
b_AL
&&
break_class
[
i
+
1
]
==
b_HL
)
||
(
break_class
[
i
]
==
b_HL
&&
break_class
[
i
+
1
]
==
b_AL
)
||
(
break_class
[
i
]
==
b_HL
&&
break_class
[
i
+
1
]
==
b_HL
))
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
/* LB29 */
if
((
break_class
[
i
]
==
b_IS
&&
break_class
[
i
+
1
]
==
b_AL
)
||
(
break_class
[
i
]
==
b_IS
&&
break_class
[
i
+
1
]
==
b_HL
))
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
/* LB30 */
if
((
break_class
[
i
]
==
b_AL
||
break_class
[
i
]
==
b_HL
||
break_class
[
i
]
==
b_NU
)
&&
break_class
[
i
+
1
]
==
b_OP
)
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
if
(
break_class
[
i
]
==
b_CP
&&
(
break_class
[
i
+
1
]
==
b_AL
||
break_class
[
i
]
==
b_HL
||
break_class
[
i
]
==
b_NU
))
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
/* LB30a */
if
(
break_class
[
i
]
==
b_RI
&&
break_class
[
i
+
1
]
==
b_RI
)
set_break_condition
(
i
,
BreakConditionAfter
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
&
state
);
}
}
heap_free
(
break_class
);
return
S_OK
;
}
static
HRESULT
WINAPI
dwritetextanalyzer_QueryInterface
(
IDWriteTextAnalyzer
*
iface
,
REFIID
riid
,
void
**
obj
)
{
TRACE
(
"(%s %p)
\n
"
,
debugstr_guid
(
riid
),
obj
);
...
...
@@ -361,8 +773,62 @@ static HRESULT WINAPI dwritetextanalyzer_AnalyzeNumberSubstitution(IDWriteTextAn
static
HRESULT
WINAPI
dwritetextanalyzer_AnalyzeLineBreakpoints
(
IDWriteTextAnalyzer
*
iface
,
IDWriteTextAnalysisSource
*
source
,
UINT32
position
,
UINT32
length
,
IDWriteTextAnalysisSink
*
sink
)
{
FIXME
(
"(%p %u %u %p): stub
\n
"
,
source
,
position
,
length
,
sink
);
return
E_NOTIMPL
;
DWRITE_LINE_BREAKPOINT
*
breakpoints
=
NULL
;
WCHAR
*
buff
=
NULL
;
const
WCHAR
*
text
;
HRESULT
hr
;
UINT32
len
;
TRACE
(
"(%p %u %u %p)
\n
"
,
source
,
position
,
length
,
sink
);
if
(
length
==
0
)
return
S_OK
;
/* get some, check for length */
text
=
NULL
;
len
=
0
;
hr
=
IDWriteTextAnalysisSource_GetTextAtPosition
(
source
,
position
,
&
text
,
&
len
);
if
(
FAILED
(
hr
))
return
hr
;
if
(
len
<
length
)
{
UINT32
read
;
buff
=
heap_alloc
(
length
*
sizeof
(
WCHAR
));
if
(
!
buff
)
return
E_OUTOFMEMORY
;
memcpy
(
buff
,
text
,
len
*
sizeof
(
WCHAR
));
read
=
len
;
while
(
read
<
length
&&
text
)
{
text
=
NULL
;
len
=
0
;
hr
=
IDWriteTextAnalysisSource_GetTextAtPosition
(
source
,
read
,
&
text
,
&
len
);
if
(
FAILED
(
hr
))
goto
done
;
memcpy
(
&
buff
[
read
],
text
,
min
(
len
,
length
-
read
)
*
sizeof
(
WCHAR
));
read
+=
len
;
}
text
=
buff
;
}
breakpoints
=
heap_alloc
(
length
*
sizeof
(
*
breakpoints
));
if
(
!
breakpoints
)
{
hr
=
E_OUTOFMEMORY
;
goto
done
;
}
hr
=
analyze_linebreaks
(
text
,
length
,
breakpoints
);
if
(
FAILED
(
hr
))
goto
done
;
hr
=
IDWriteTextAnalysisSink_SetLineBreakpoints
(
sink
,
position
,
length
,
breakpoints
);
done:
heap_free
(
breakpoints
);
heap_free
(
buff
);
return
hr
;
}
static
HRESULT
WINAPI
dwritetextanalyzer_GetGlyphs
(
IDWriteTextAnalyzer
*
iface
,
...
...
dlls/dwrite/linebreak.c
0 → 100644
View file @
f6035080
/* Unicode Line Break Properties */
/* generated from http://www.unicode.org/Public/7.0.0/ucd/LineBreak.txt */
/* DO NOT EDIT!! */
const
unsigned
short
wine_linebreak_table
[
7232
]
=
{
/* level 1 offsets */
0x0100
,
0x0110
,
0x0120
,
0x0130
,
0x0140
,
0x0150
,
0x0160
,
0x0170
,
0x0180
,
0x0190
,
0x01a0
,
0x01b0
,
0x01c0
,
0x01d0
,
0x01e0
,
0x01f0
,
0x0200
,
0x0210
,
0x0220
,
0x0230
,
0x0240
,
0x0110
,
0x0250
,
0x0260
,
0x0270
,
0x0280
,
0x0290
,
0x02a0
,
0x02b0
,
0x02c0
,
0x0110
,
0x02d0
,
0x02e0
,
0x02f0
,
0x0300
,
0x0310
,
0x0320
,
0x0330
,
0x0340
,
0x0350
,
0x0110
,
0x0360
,
0x0110
,
0x0370
,
0x0380
,
0x0390
,
0x03a0
,
0x03b0
,
0x03c0
,
0x03d0
,
0x03e0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x0400
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x03f0
,
0x0410
,
0x03f0
,
0x03f0
,
0x03f0
,
0x0420
,
0x0110
,
0x0430
,
0x0440
,
0x0450
,
0x0460
,
0x0470
,
0x0480
,
0x0490
,
0x04a0
,
0x04b0
,
0x04c0
,
0x04d0
,
0x04e0
,
0x04f0
,
0x0490
,
0x04a0
,
0x04b0
,
0x04c0
,
0x04d0
,
0x04e0
,
0x04f0
,
0x0490
,
0x04a0
,
0x04b0
,
0x04c0
,
0x04d0
,
0x04e0
,
0x04f0
,
0x0490
,
0x04a0
,
0x04b0
,
0x04c0
,
0x04d0
,
0x04e0
,
0x04f0
,
0x0490
,
0x04a0
,
0x04b0
,
0x04c0
,
0x04d0
,
0x04e0
,
0x04f0
,
0x0490
,
0x04a0
,
0x04b0
,
0x04c0
,
0x04d0
,
0x04e0
,
0x04f0
,
0x0490
,
0x0500
,
0x0510
,
0x0510
,
0x0510
,
0x0510
,
0x0510
,
0x0510
,
0x0510
,
0x0510
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x0520
,
0x03f0
,
0x03f0
,
0x0530
,
0x0110
,
0x0540
,
0x0550
,
0x0560
,
/* level 2 offsets */
0x0570
,
0x0580
,
0x0590
,
0x05a0
,
0x05b0
,
0x05c0
,
0x05b0
,
0x05d0
,
0x05e0
,
0x0580
,
0x05f0
,
0x0600
,
0x05b0
,
0x0610
,
0x05b0
,
0x0610
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0620
,
0x0630
,
0x05b0
,
0x05b0
,
0x0580
,
0x0580
,
0x0580
,
0x0580
,
0x0640
,
0x0650
,
0x0660
,
0x0670
,
0x0680
,
0x05b0
,
0x0690
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x06a0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x06b0
,
0x05b0
,
0x06c0
,
0x06b0
,
0x05b0
,
0x06d0
,
0x06e0
,
0x0580
,
0x06f0
,
0x0700
,
0x0710
,
0x0720
,
0x0730
,
0x0740
,
0x0750
,
0x05b0
,
0x05b0
,
0x0760
,
0x0580
,
0x0770
,
0x0780
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0790
,
0x07a0
,
0x07b0
,
0x07c0
,
0x07d0
,
0x05b0
,
0x0580
,
0x07e0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x07f0
,
0x0800
,
0x07b0
,
0x05b0
,
0x0760
,
0x0810
,
0x05b0
,
0x0820
,
0x0830
,
0x0840
,
0x05b0
,
0x0850
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x05b0
,
0x0870
,
0x0860
,
0x0860
,
0x0880
,
0x0580
,
0x0890
,
0x05b0
,
0x05b0
,
0x08a0
,
0x0580
,
0x08b0
,
0x08c0
,
0x05b0
,
0x08d0
,
0x08e0
,
0x08f0
,
0x0900
,
0x0910
,
0x0920
,
0x0930
,
0x0940
,
0x0950
,
0x08e0
,
0x08f0
,
0x0960
,
0x0970
,
0x0980
,
0x0990
,
0x09a0
,
0x09b0
,
0x0690
,
0x08f0
,
0x09c0
,
0x09d0
,
0x09e0
,
0x0930
,
0x09f0
,
0x0a00
,
0x08e0
,
0x08f0
,
0x09c0
,
0x0a10
,
0x0a20
,
0x0930
,
0x0a30
,
0x0a40
,
0x0a50
,
0x0a60
,
0x0a70
,
0x0a80
,
0x0a90
,
0x0990
,
0x0aa0
,
0x0ab0
,
0x0ac0
,
0x08f0
,
0x0ad0
,
0x0ae0
,
0x0af0
,
0x0930
,
0x0b00
,
0x0b10
,
0x0ac0
,
0x08f0
,
0x0b20
,
0x0ae0
,
0x0b30
,
0x0930
,
0x0b40
,
0x0b10
,
0x0ac0
,
0x05b0
,
0x0b50
,
0x0b60
,
0x0b70
,
0x0930
,
0x0b80
,
0x0b90
,
0x0ba0
,
0x05b0
,
0x0bb0
,
0x0bc0
,
0x0bd0
,
0x0990
,
0x0be0
,
0x0bf0
,
0x0c00
,
0x0c00
,
0x0c10
,
0x0c20
,
0x0c30
,
0x0860
,
0x0860
,
0x0c40
,
0x0c50
,
0x0c60
,
0x0c70
,
0x0c80
,
0x0c90
,
0x0860
,
0x0860
,
0x0ca0
,
0x0cb0
,
0x07b0
,
0x0cc0
,
0x0cd0
,
0x05b0
,
0x0ce0
,
0x0cf0
,
0x0d00
,
0x0d10
,
0x0580
,
0x0d20
,
0x0d30
,
0x0d40
,
0x0860
,
0x0860
,
0x0c00
,
0x0c00
,
0x0c00
,
0x0c00
,
0x0d50
,
0x0c00
,
0x0c00
,
0x0c00
,
0x0c00
,
0x0d60
,
0x05b0
,
0x05b0
,
0x0d70
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0d80
,
0x0d80
,
0x0d80
,
0x0d80
,
0x0d80
,
0x0d80
,
0x0d90
,
0x0d90
,
0x0d90
,
0x0d90
,
0x0da0
,
0x0db0
,
0x0db0
,
0x0db0
,
0x0db0
,
0x0db0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0dc0
,
0x0dd0
,
0x05b0
,
0x05b0
,
0x0dc0
,
0x05b0
,
0x05b0
,
0x0de0
,
0x0df0
,
0x0e00
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0df0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0e10
,
0x0e20
,
0x0ce0
,
0x05b0
,
0x0e30
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0e40
,
0x0e50
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0e50
,
0x0e60
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0e70
,
0x0e80
,
0x0e90
,
0x0ea0
,
0x05b0
,
0x0eb0
,
0x05b0
,
0x0ec0
,
0x0e90
,
0x0ed0
,
0x0c00
,
0x0c00
,
0x0c00
,
0x0c00
,
0x0c00
,
0x0ee0
,
0x0ef0
,
0x0e30
,
0x0f00
,
0x0ef0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0a30
,
0x05b0
,
0x05b0
,
0x0f10
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0f20
,
0x05b0
,
0x0840
,
0x0f30
,
0x0f30
,
0x0f40
,
0x0c00
,
0x0f50
,
0x0f60
,
0x0c00
,
0x0c00
,
0x0f70
,
0x0c00
,
0x0f80
,
0x0f90
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0fa0
,
0x0c00
,
0x0c00
,
0x0c00
,
0x0fb0
,
0x0c00
,
0x0fc0
,
0x0ef0
,
0x0ef0
,
0x0f50
,
0x0fd0
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0fe0
,
0x05b0
,
0x05b0
,
0x0ff0
,
0x1000
,
0x1010
,
0x1020
,
0x1030
,
0x1040
,
0x05b0
,
0x1050
,
0x07b0
,
0x05b0
,
0x05b0
,
0x07f0
,
0x1060
,
0x05b0
,
0x05b0
,
0x0ff0
,
0x1070
,
0x1080
,
0x07b0
,
0x05b0
,
0x1090
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0a30
,
0x10a0
,
0x10b0
,
0x10c0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0580
,
0x0580
,
0x0580
,
0x10d0
,
0x05b0
,
0x10e0
,
0x05b0
,
0x05b0
,
0x10e0
,
0x10f0
,
0x05b0
,
0x1100
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1110
,
0x1110
,
0x1120
,
0x05b0
,
0x1130
,
0x1140
,
0x1150
,
0x1160
,
0x1170
,
0x1180
,
0x1190
,
0x11a0
,
0x11b0
,
0x11c0
,
0x0ce0
,
0x11d0
,
0x11e0
,
0x11f0
,
0x0580
,
0x0580
,
0x1200
,
0x1210
,
0x1220
,
0x1230
,
0x05b0
,
0x05b0
,
0x1240
,
0x1250
,
0x1260
,
0x1270
,
0x1260
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1280
,
0x05b0
,
0x05b0
,
0x1290
,
0x12a0
,
0x12b0
,
0x12c0
,
0x12d0
,
0x12e0
,
0x12f0
,
0x05b0
,
0x1300
,
0x1310
,
0x1320
,
0x1330
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1340
,
0x1350
,
0x1360
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1370
,
0x05b0
,
0x05b0
,
0x1380
,
0x0860
,
0x1390
,
0x0860
,
0x13a0
,
0x13a0
,
0x13a0
,
0x13a0
,
0x13a0
,
0x13a0
,
0x13a0
,
0x13a0
,
0x13a0
,
0x13b0
,
0x13a0
,
0x13a0
,
0x13a0
,
0x13a0
,
0x1250
,
0x13a0
,
0x13a0
,
0x13c0
,
0x13a0
,
0x13d0
,
0x13e0
,
0x13f0
,
0x1400
,
0x1410
,
0x1420
,
0x05b0
,
0x1430
,
0x1440
,
0x05b0
,
0x1450
,
0x1460
,
0x05b0
,
0x1470
,
0x1480
,
0x05b0
,
0x1490
,
0x05b0
,
0x14a0
,
0x14b0
,
0x14c0
,
0x14d0
,
0x14e0
,
0x14f0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1500
,
0x1510
,
0x1520
,
0x13a0
,
0x1530
,
0x05b0
,
0x05b0
,
0x1540
,
0x05b0
,
0x1550
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1560
,
0x1570
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1340
,
0x05b0
,
0x1580
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1590
,
0x05b0
,
0x15a0
,
0x05b0
,
0x15b0
,
0x05b0
,
0x15c0
,
0x08f0
,
0x15d0
,
0x0860
,
0x0860
,
0x05b0
,
0x05b0
,
0x0840
,
0x05b0
,
0x05b0
,
0x0840
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x15e0
,
0x15f0
,
0x05b0
,
0x05b0
,
0x0d70
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1600
,
0x1610
,
0x05b0
,
0x1380
,
0x1620
,
0x1620
,
0x1620
,
0x1620
,
0x0580
,
0x0580
,
0x1630
,
0x1640
,
0x1650
,
0x1660
,
0x1670
,
0x0860
,
0x0860
,
0x0860
,
0x1680
,
0x1690
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x16a0
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x16b0
,
0x0860
,
0x16c0
,
0x16d0
,
0x16e0
,
0x16f0
,
0x1700
,
0x1710
,
0x1680
,
0x1720
,
0x1680
,
0x1730
,
0x1740
,
0x1750
,
0x1680
,
0x1720
,
0x1680
,
0x1730
,
0x1760
,
0x1770
,
0x1680
,
0x1780
,
0x1790
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x17a0
,
0x1680
,
0x1680
,
0x17b0
,
0x1680
,
0x1680
,
0x16a0
,
0x17c0
,
0x1680
,
0x17a0
,
0x1680
,
0x1680
,
0x17d0
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x17a0
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1680
,
0x17e0
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x1680
,
0x17f0
,
0x1680
,
0x1680
,
0x1680
,
0x1800
,
0x05b0
,
0x05b0
,
0x1090
,
0x1810
,
0x05b0
,
0x1820
,
0x0860
,
0x05b0
,
0x05b0
,
0x15e0
,
0x1830
,
0x05b0
,
0x1840
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1850
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x0840
,
0x05b0
,
0x1100
,
0x15d0
,
0x0860
,
0x0860
,
0x0860
,
0x1860
,
0x1870
,
0x05b0
,
0x1880
,
0x1890
,
0x05b0
,
0x05b0
,
0x05b0
,
0x18a0
,
0x18b0
,
0x05b0
,
0x05b0
,
0x0ff0
,
0x18c0
,
0x0ef0
,
0x0580
,
0x18d0
,
0x07b0
,
0x05b0
,
0x18e0
,
0x05b0
,
0x18f0
,
0x1900
,
0x0d80
,
0x1910
,
0x0890
,
0x05b0
,
0x05b0
,
0x1920
,
0x1930
,
0x1940
,
0x0c00
,
0x1950
,
0x05b0
,
0x05b0
,
0x1960
,
0x1970
,
0x1980
,
0x1990
,
0x0c00
,
0x0c00
,
0x0c00
,
0x0c00
,
0x0c00
,
0x0c00
,
0x19a0
,
0x19b0
,
0x0760
,
0x19c0
,
0x19d0
,
0x19e0
,
0x1620
,
0x05b0
,
0x05b0
,
0x05b0
,
0x19f0
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x05b0
,
0x05b0
,
0x1a00
,
0x0ef0
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a50
,
0x1a30
,
0x1a10
,
0x1a20
,
0x1a30
,
0x1a40
,
0x1a30
,
0x1a60
,
0x0d90
,
0x1a70
,
0x0db0
,
0x0db0
,
0x1a80
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x1a90
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x0860
,
0x1380
,
0x1aa0
,
0x1ab0
,
0x1ac0
,
0x1ad0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x15d0
,
0x1ae0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1af0
,
0x0860
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1b00
,
0x05b0
,
0x05b0
,
0x0a30
,
0x0860
,
0x0860
,
0x1b10
,
0x0580
,
0x1b20
,
0x1b30
,
0x1b40
,
0x1b50
,
0x1b60
,
0x1b70
,
0x1110
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x05b0
,
0x1b80
,
0x1b90
,
0x1ba0
,
0x1680
,
0x1bb0
,
0x1680
,
0x1bc0
,
0x1bd0
,
0x1be0
,
0x05b0
,
0x1bf0
,
0x05b0
,
0x0840
,
0x1c00
,
0x1c10
,
0x1c20
,
0x1c30
,
/* values */
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0022
,
0x0003
,
0x0001
,
0x0001
,
0x0002
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0008
,
0x0017
,
0x0015
,
0x001d
,
0x001a
,
0x001b
,
0x001d
,
0x0015
,
0x0012
,
0x0014
,
0x001d
,
0x001a
,
0x0019
,
0x0020
,
0x0019
,
0x0018
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0019
,
0x0019
,
0x001d
,
0x001d
,
0x001d
,
0x0017
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x001a
,
0x0014
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x0022
,
0x0013
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x000a
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0006
,
0x0012
,
0x001b
,
0x001a
,
0x001a
,
0x001a
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x0024
,
0x0015
,
0x001d
,
0x0022
,
0x001d
,
0x001d
,
0x001b
,
0x001a
,
0x0024
,
0x0024
,
0x0021
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0015
,
0x0024
,
0x0024
,
0x0024
,
0x0012
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0021
,
0x0024
,
0x0024
,
0x0024
,
0x0021
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x0024
,
0x001d
,
0x0021
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0006
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0006
,
0x0006
,
0x0006
,
0x0006
,
0x0006
,
0x0006
,
0x0006
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0019
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0019
,
0x0022
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001a
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0022
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x0017
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0026
,
0x0026
,
0x0026
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001b
,
0x001b
,
0x001b
,
0x0019
,
0x0019
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0017
,
0x0004
,
0x0011
,
0x0017
,
0x0017
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001b
,
0x001c
,
0x001c
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0017
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0019
,
0x0017
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0022
,
0x0022
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001d
,
0x001d
,
0x001b
,
0x001b
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001b
,
0x001d
,
0x001a
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0004
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001a
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001a
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x001b
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0004
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001a
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x001d
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0022
,
0x0022
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0011
,
0x0023
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0011
,
0x0023
,
0x0011
,
0x0011
,
0x0023
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0023
,
0x0011
,
0x0023
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0023
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0011
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x001d
,
0x0021
,
0x0021
,
0x0021
,
0x0021
,
0x001d
,
0x0021
,
0x0021
,
0x0006
,
0x0021
,
0x0021
,
0x0022
,
0x0006
,
0x0017
,
0x0017
,
0x0017
,
0x0017
,
0x0017
,
0x0006
,
0x001d
,
0x0017
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0022
,
0x0004
,
0x001d
,
0x0004
,
0x001d
,
0x0004
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0022
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0022
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0022
,
0x0022
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x0021
,
0x0021
,
0x0022
,
0x0021
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0006
,
0x0006
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0022
,
0x0022
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x0011
,
0x0011
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x0022
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0022
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x0013
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0022
,
0x0022
,
0x0022
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0022
,
0x0022
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x0011
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0022
,
0x0022
,
0x0016
,
0x0023
,
0x0022
,
0x001d
,
0x0022
,
0x001a
,
0x0023
,
0x0023
,
0x0011
,
0x0011
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0017
,
0x0017
,
0x0022
,
0x0022
,
0x0021
,
0x001d
,
0x0017
,
0x0017
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0006
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0017
,
0x0017
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0023
,
0x0011
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0022
,
0x0022
,
0x001d
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0022
,
0x0022
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x0011
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x0011
,
0x001d
,
0x0011
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0021
,
0x001d
,
0x0011
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0006
,
0x0022
,
0x0022
,
0x0022
,
0x0009
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0022
,
0x0006
,
0x0022
,
0x0022
,
0x0025
,
0x0024
,
0x0024
,
0x001d
,
0x0015
,
0x0015
,
0x0012
,
0x0015
,
0x0015
,
0x0015
,
0x0012
,
0x0015
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001f
,
0x001f
,
0x001f
,
0x0022
,
0x0001
,
0x0001
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0006
,
0x001b
,
0x001b
,
0x001b
,
0x001b
,
0x001b
,
0x001b
,
0x001b
,
0x001b
,
0x001d
,
0x0015
,
0x0015
,
0x0024
,
0x0016
,
0x0016
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0019
,
0x0012
,
0x0013
,
0x0016
,
0x0016
,
0x0016
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0022
,
0x001d
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x001d
,
0x0022
,
0x0022
,
0x0022
,
0x000b
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x0013
,
0x0024
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x0013
,
0x0011
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001b
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001b
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001b
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x001a
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001b
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001b
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001a
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x0024
,
0x001a
,
0x001a
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x0024
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001e
,
0x001e
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x0013
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001e
,
0x001e
,
0x0024
,
0x0024
,
0x001e
,
0x001d
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001e
,
0x001e
,
0x001e
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x0024
,
0x001e
,
0x0024
,
0x0024
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001e
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001e
,
0x001d
,
0x001e
,
0x001e
,
0x001e
,
0x0024
,
0x001e
,
0x001e
,
0x0024
,
0x0024
,
0x0024
,
0x001e
,
0x001e
,
0x0024
,
0x0024
,
0x001e
,
0x0024
,
0x0024
,
0x001e
,
0x001e
,
0x001e
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x001e
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0024
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0024
,
0x0024
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001d
,
0x001d
,
0x001d
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x001d
,
0x0017
,
0x0017
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x0013
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0012
,
0x0013
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0017
,
0x0022
,
0x0022
,
0x0022
,
0x001d
,
0x0017
,
0x0022
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x0022
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0015
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x001d
,
0x0022
,
0x0012
,
0x0022
,
0x001d
,
0x001d
,
0x0015
,
0x0015
,
0x001d
,
0x001d
,
0x0015
,
0x0015
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0017
,
0x001d
,
0x0022
,
0x0022
,
0x001d
,
0x0022
,
0x0022
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0025
,
0x0025
,
0x0022
,
0x0022
,
0x0022
,
0x001d
,
0x0022
,
0x0022
,
0x0012
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0011
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0022
,
0x0013
,
0x0013
,
0x001e
,
0x001e
,
0x0016
,
0x001e
,
0x001e
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x001e
,
0x001e
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0016
,
0x0012
,
0x0013
,
0x0013
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0004
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0016
,
0x0016
,
0x001e
,
0x001e
,
0x001e
,
0x0011
,
0x0027
,
0x001e
,
0x0027
,
0x001e
,
0x0027
,
0x001e
,
0x0027
,
0x001e
,
0x0027
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0027
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0027
,
0x001e
,
0x0027
,
0x001e
,
0x0027
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0027
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0027
,
0x0027
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0016
,
0x0016
,
0x0016
,
0x0016
,
0x001e
,
0x0016
,
0x0027
,
0x001e
,
0x0027
,
0x001e
,
0x0027
,
0x001e
,
0x0027
,
0x001e
,
0x0027
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0027
,
0x0027
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0016
,
0x0027
,
0x0016
,
0x0016
,
0x001e
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0011
,
0x0011
,
0x0011
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0011
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x0024
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0016
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0011
,
0x0011
,
0x0011
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0022
,
0x0017
,
0x0022
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0022
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001b
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0021
,
0x0021
,
0x0017
,
0x0017
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0022
,
0x0022
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0022
,
0x0022
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x000c
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0022
,
0x0022
,
0x0022
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x001d
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x001c
,
0x0011
,
0x0011
,
0x001d
,
0x0022
,
0x0022
,
0x0022
,
0x0023
,
0x0023
,
0x0023
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0023
,
0x0022
,
0x0022
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0022
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x000f
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x000f
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x000f
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x000f
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0010
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x000d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x000e
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0005
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0026
,
0x0004
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x001d
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0011
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0011
,
0x0026
,
0x0011
,
0x0026
,
0x0026
,
0x0011
,
0x0026
,
0x0026
,
0x0011
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0026
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0013
,
0x0012
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001b
,
0x001d
,
0x0011
,
0x0011
,
0x0019
,
0x0013
,
0x0013
,
0x0019
,
0x0019
,
0x0017
,
0x0017
,
0x0012
,
0x0013
,
0x001f
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0004
,
0x0011
,
0x0011
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x001e
,
0x001e
,
0x0012
,
0x0013
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0013
,
0x001e
,
0x0013
,
0x0011
,
0x0016
,
0x0016
,
0x0017
,
0x0017
,
0x001e
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x0012
,
0x0013
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0011
,
0x001e
,
0x001a
,
0x001b
,
0x001e
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x000b
,
0x0011
,
0x0017
,
0x001e
,
0x001e
,
0x001a
,
0x001b
,
0x001e
,
0x001e
,
0x0012
,
0x0013
,
0x001e
,
0x001e
,
0x0013
,
0x001e
,
0x0013
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0016
,
0x0016
,
0x001e
,
0x001e
,
0x001e
,
0x0017
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0012
,
0x001e
,
0x0013
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x001e
,
0x0012
,
0x001e
,
0x0013
,
0x001e
,
0x0012
,
0x0013
,
0x0013
,
0x0012
,
0x0013
,
0x0013
,
0x0016
,
0x001d
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x0027
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0016
,
0x0016
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x001b
,
0x001a
,
0x001e
,
0x001e
,
0x001e
,
0x001a
,
0x001a
,
0x0011
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x001d
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0011
,
0x0004
,
0x0004
,
0x0004
,
0x0007
,
0x0024
,
0x0011
,
0x0011
};
dlls/dwrite/tests/analyzer.c
View file @
f6035080
...
...
@@ -834,13 +834,12 @@ struct linebreaks_test {
};
static
struct
linebreaks_test
linebreaks_tests
[]
=
{
{
{
'A'
,
'-'
,
'B'
,
' '
,
0xad
,
'C'
,
0x58a
,
'D'
,
0x2010
,
'E'
,
0x2012
,
'F'
,
0x2013
,
'\t'
,
0
},
{
{
'A'
,
'-'
,
'B'
,
' '
,
'C'
,
0x58a
,
'D'
,
0x2010
,
'E'
,
0x2012
,
'F'
,
0x2013
,
'\t'
,
0
},
{
{
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
FALSE
,
FALSE
},
{
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
DWRITE_BREAK_CONDITION_CAN_BREAK
,
FALSE
,
FALSE
},
{
DWRITE_BREAK_CONDITION_CAN_BREAK
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
FALSE
,
FALSE
},
{
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
DWRITE_BREAK_CONDITION_CAN_BREAK
,
TRUE
,
FALSE
},
{
DWRITE_BREAK_CONDITION_CAN_BREAK
,
DWRITE_BREAK_CONDITION_CAN_BREAK
,
FALSE
,
TRUE
},
{
DWRITE_BREAK_CONDITION_CAN_BREAK
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
FALSE
,
FALSE
},
{
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
DWRITE_BREAK_CONDITION_CAN_BREAK
,
FALSE
,
FALSE
},
{
DWRITE_BREAK_CONDITION_CAN_BREAK
,
DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
,
FALSE
,
FALSE
},
...
...
@@ -880,8 +879,9 @@ static void compare_breakpoints(const struct linebreaks_test *test, DWRITE_LINE_
}
}
static
void
test_
Set
LineBreakpoints
(
void
)
static
void
test_
Analyze
LineBreakpoints
(
void
)
{
static
const
WCHAR
emptyW
[]
=
{
0
};
const
struct
linebreaks_test
*
ptr
=
linebreaks_tests
;
IDWriteTextAnalyzer
*
analyzer
;
HRESULT
hr
;
...
...
@@ -889,15 +889,17 @@ static void test_SetLineBreakpoints(void)
hr
=
IDWriteFactory_CreateTextAnalyzer
(
factory
,
&
analyzer
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
g_source
=
emptyW
;
hr
=
IDWriteTextAnalyzer_AnalyzeLineBreakpoints
(
analyzer
,
&
analysissource
,
0
,
0
,
&
analysissink
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
while
(
*
ptr
->
text
)
{
g_source
=
ptr
->
text
;
memset
(
g_actual_bp
,
0
,
sizeof
(
g_actual_bp
));
hr
=
IDWriteTextAnalyzer_AnalyzeLineBreakpoints
(
analyzer
,
&
analysissource
,
0
,
lstrlenW
(
g_source
),
&
analysissink
);
todo_wine
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
if
(
hr
==
S_OK
)
compare_breakpoints
(
ptr
,
g_actual_bp
);
ptr
++
;
...
...
@@ -922,7 +924,7 @@ START_TEST(analyzer)
init_call_sequences
(
expected_seq
,
1
);
test_AnalyzeScript
();
test_
Set
LineBreakpoints
();
test_
Analyze
LineBreakpoints
();
IDWriteFactory_Release
(
factory
);
}
tools/make_unicode
View file @
f6035080
...
...
@@ -2274,6 +2274,7 @@ dump_mirroring( "dlls/usp10/mirror.c" );
dump_bracket
(
"dlls/usp10/bracket.c"
);
dump_shaping
(
"dlls/usp10/shaping.c"
);
dump_linebreak
(
"dlls/usp10/linebreak.c"
);
dump_linebreak
(
"dlls/dwrite/linebreak.c"
);
dump_indic
(
"dlls/usp10/indicsyllable.c"
);
dump_intl_nls
(
"loader/l_intl.nls"
);
dump_vertical
(
"dlls/gdi32/vertical.c"
);
...
...
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