summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Buesch <mb@bu3sch.de>2011-01-18 17:16:11 +0100
committerMichael Buesch <mb@bu3sch.de>2011-01-18 17:16:11 +0100
commit20f6e4324b0e65c9dd3ce89dacb3cd3eb77b2da3 (patch)
tree0c0edde8a63881e962de4d9d1aeece054aa84ea9
parent96837e42125921820e7eb0201f64546c3043249f (diff)
downloadtoprammer-20f6e4324b0e65c9dd3ce89dacb3cd3eb77b2da3.tar.xz
toprammer-20f6e4324b0e65c9dd3ce89dacb3cd3eb77b2da3.zip
Put OSC freq into TOP. Always flush commands on exit.
Signed-off-by: Michael Buesch <mb@bu3sch.de>
-rw-r--r--README-DEVELOPERS.lyx9
-rw-r--r--README-DEVELOPERS.ps863
-rw-r--r--libtoprammer/chip_unitest.py2
-rw-r--r--libtoprammer/toprammer_main.py34
4 files changed, 487 insertions, 421 deletions
diff --git a/README-DEVELOPERS.lyx b/README-DEVELOPERS.lyx
index 4fe9fcb..8786b24 100644
--- a/README-DEVELOPERS.lyx
+++ b/README-DEVELOPERS.lyx
@@ -135,6 +135,15 @@ Reads the programmer identification and versioning string and returns it.
\end_layout
\begin_layout Subsection
+getOscillatorHz()
+\end_layout
+
+\begin_layout Standard
+Returns the frequency (in Hz) of the oscillator connected to the FPGA clk
+ pin.
+\end_layout
+
+\begin_layout Subsection
getBufferRegSize()
\end_layout
diff --git a/README-DEVELOPERS.ps b/README-DEVELOPERS.ps
index b171e75..b8ae4dd 100644
--- a/README-DEVELOPERS.ps
+++ b/README-DEVELOPERS.ps
@@ -1,7 +1,7 @@
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.98 Copyright 2009 Radical Eye Software
%%Title: README-DEVELOPERS.dvi
-%%CreationDate: Sun Jan 16 23:14:46 2011
+%%CreationDate: Tue Jan 18 17:15:15 2011
%%Pages: 7
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
@@ -11,7 +11,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -o README-DEVELOPERS.ps README-DEVELOPERS.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2011.01.16:2314
+%DVIPSSource: TeX output 2011.01.18:1715
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -516,8 +516,8 @@ E0000003E3E0000003E7C0000001E7C0000001F7C0000001F780000000FF80000000FF80
87E000007E0FE000007E1FC000007FFF8000003FFF0000001FFE0000000FFC00000007E0
00000027367EA32C>I E
%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb ecbx1200 12 56
-/Fb 56 123 df<0000000FFF0003FF00000001FFFFC03FFFC000000FFFFFF1FFFFE00000
+%DVIPSBitmapFont: Fb ecbx1200 12 58
+/Fb 58 123 df<0000000FFF0003FF00000001FFFFC03FFFC000000FFFFFF1FFFFE00000
7FFFFFFFFFFFF00001FFF803FFFE1FF80003FF8003FFF81FFC000FFF0007FFF03FFC001F
FE000FFFE03FFC003FFC000FFFE03FFC003FF8000FFFC03FFC007FF0000FFFC03FFC007F
F0000FFFC01FF800FFF0000FFF801FF800FFE00007FF8007E000FFE00003FF80018000FF
@@ -807,394 +807,431 @@ E000000001FFF00003FFE000000001FFF00001FFF000000001FFF00000FFF800000001FF
F000007FFC00000001FFF000003FFE00000003FFF000001FFF80000003FFF000000FFFC0
000007FFF0000007FFF000000FFFF0000001FFFE00003FFFF0000000FFFFF001FF9FF000
00003FFFFFFFFF0FF000000007FFFFFFFC03F000000001FFFFFFF000F0000000001FFFFF
-C000300000000000FFFC000000004C467AC458>I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0
-FFFFFFFFE0FFFFFFFFE0001FFF0000001FFF0000001FFF0000001FFF0000001FFF000000
-1FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001F
-FF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF
+C000300000000000FFFC000000004C467AC458>I<FFFFFFFF8003FFFFFFFEFFFFFFFF80
+03FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFE00
+3FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000
+FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE
+00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF8
+00003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE0000
+0000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF80000
+3FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000
+FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFF
+FFFFFFFFFFF800003FFFFFFFFFFFFFF800003FFFFFFFFFFFFFF800003FFFFFFFFFFFFFF8
+00003FFFFFFFFFFFFFF800003FFE00000000FFF800003FFE00000000FFF800003FFE0000
+0000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF80000
+3FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000
+FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE
+00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF8
+00003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE0000
+0000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF80000
+3FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000
+FFF800FFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFF
+FF8003FFFFFFFEFFFFFFFF8003FFFFFFFE4F447CC358>I<FFFFFFFFE0FFFFFFFFE0FFFF
+FFFFE0FFFFFFFFE0FFFFFFFFE0001FFF0000001FFF0000001FFF0000001FFF0000001FFF
0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF00
00001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000
001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF000000
1FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001F
FF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF
-0000001FFF0000001FFF0000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFF
-E023447DC32A>73 D<FFFFFFFFF0000000FFFFFFFFF0000000FFFFFFFFF0000000FFFFFF
-FFF0000000FFFFFFFFF0000000003FFE0000000000003FFE0000000000003FFE00000000
-00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE
-0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000
-00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE
-0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000
-00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE
-0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000
-00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE
-0000000000003FFE0000000780003FFE0000000780003FFE0000000780003FFE00000007
-80003FFE0000000F80003FFE0000000F00003FFE0000000F00003FFE0000000F00003FFE
-0000000F00003FFE0000001F00003FFE0000001F00003FFE0000001F00003FFE0000003F
-00003FFE0000003F00003FFE0000007E00003FFE0000007E00003FFE000000FE00003FFE
-000001FE00003FFE000003FE00003FFE000007FE00003FFE00001FFE00003FFE00007FFE
-00003FFE0003FFFE00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC00FFFFFF
-FFFFFFFC00FFFFFFFFFFFFFC0039447CC343>76 D<FFFFFF00000001FFFFFEFFFFFF8000
-0001FFFFFEFFFFFFC0000001FFFFFEFFFFFFC0000001FFFFFEFFFFFFE0000001FFFFFE00
-3FFFF0000000007800003FFFF8000000007800003DFFFC000000007800003DFFFE000000
-007800003CFFFE000000007800003C7FFF000000007800003C3FFF800000007800003C1F
-FFC00000007800003C0FFFE00000007800003C07FFF00000007800003C07FFF800000078
-00003C03FFF80000007800003C01FFFC0000007800003C00FFFE0000007800003C007FFF
-0000007800003C003FFF8000007800003C003FFFC000007800003C001FFFC00000780000
-3C000FFFE000007800003C0007FFF000007800003C0003FFF800007800003C0001FFFC00
-007800003C0000FFFE00007800003C0000FFFF00007800003C00007FFF00007800003C00
-003FFF80007800003C00001FFFC0007800003C00000FFFE0007800003C000007FFF00078
-00003C000007FFF8007800003C000003FFF8007800003C000001FFFC007800003C000000
-FFFE007800003C0000007FFF007800003C0000003FFF807800003C0000001FFFC0780000
-3C0000001FFFE07800003C0000000FFFE07800003C00000007FFF07800003C00000003FF
-F87800003C00000001FFFC7800003C00000000FFFE7800003C00000000FFFF7800003C00
-0000007FFF7800003C000000003FFFF800003C000000001FFFF800003C000000000FFFF8
-00003C0000000007FFF800003C0000000003FFF800003C0000000003FFF800003C000000
-0001FFF800003C0000000000FFF800003C00000000007FF800003C00000000003FF80000
-3C00000000001FF800003C00000000001FF800003C00000000000FF800003C0000000000
-07F800FFFFFF0000000003F800FFFFFF0000000001F800FFFFFF0000000000F800FFFFFF
-00000000007800FFFFFF000000000078004F447CC358>78 D<FFFFFFFFFFFF000000FFFF
-FFFFFFFFF00000FFFFFFFFFFFFFE0000FFFFFFFFFFFFFF8000FFFFFFFFFFFFFFE000001F
-FF00000FFFF000001FFF000001FFF800001FFF0000007FFC00001FFF0000003FFE00001F
-FF0000001FFF00001FFF0000000FFF80001FFF0000000FFF80001FFF0000000FFFC0001F
-FF00000007FFC0001FFF00000007FFC0001FFF00000007FFE0001FFF00000007FFE0001F
+0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF00
+00001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000
+001FFF0000001FFF0000001FFF0000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FF
+FFFFFFE023447DC32A>I<FFFFFFFFF0000000FFFFFFFFF0000000FFFFFFFFF0000000FF
+FFFFFFF0000000FFFFFFFFF0000000003FFE0000000000003FFE0000000000003FFE0000
+000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000000000
+3FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000
+000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000000000
+3FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000
+000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000000000
+3FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000
+000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000000000
+3FFE0000000000003FFE0000000780003FFE0000000780003FFE0000000780003FFE0000
+000780003FFE0000000F80003FFE0000000F00003FFE0000000F00003FFE0000000F0000
+3FFE0000000F00003FFE0000001F00003FFE0000001F00003FFE0000001F00003FFE0000
+003F00003FFE0000003F00003FFE0000007E00003FFE0000007E00003FFE000000FE0000
+3FFE000001FE00003FFE000003FE00003FFE000007FE00003FFE00001FFE00003FFE0000
+7FFE00003FFE0003FFFE00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC00FF
+FFFFFFFFFFFC00FFFFFFFFFFFFFC0039447CC343>76 D<FFFFFF00000001FFFFFEFFFFFF
+80000001FFFFFEFFFFFFC0000001FFFFFEFFFFFFC0000001FFFFFEFFFFFFE0000001FFFF
+FE003FFFF0000000007800003FFFF8000000007800003DFFFC000000007800003DFFFE00
+0000007800003CFFFE000000007800003C7FFF000000007800003C3FFF80000000780000
+3C1FFFC00000007800003C0FFFE00000007800003C07FFF00000007800003C07FFF80000
+007800003C03FFF80000007800003C01FFFC0000007800003C00FFFE0000007800003C00
+7FFF0000007800003C003FFF8000007800003C003FFFC000007800003C001FFFC0000078
+00003C000FFFE000007800003C0007FFF000007800003C0003FFF800007800003C0001FF
+FC00007800003C0000FFFE00007800003C0000FFFF00007800003C00007FFF0000780000
+3C00003FFF80007800003C00001FFFC0007800003C00000FFFE0007800003C000007FFF0
+007800003C000007FFF8007800003C000003FFF8007800003C000001FFFC007800003C00
+0000FFFE007800003C0000007FFF007800003C0000003FFF807800003C0000001FFFC078
+00003C0000001FFFE07800003C0000000FFFE07800003C00000007FFF07800003C000000
+03FFF87800003C00000001FFFC7800003C00000000FFFE7800003C00000000FFFF780000
+3C000000007FFF7800003C000000003FFFF800003C000000001FFFF800003C000000000F
+FFF800003C0000000007FFF800003C0000000003FFF800003C0000000003FFF800003C00
+00000001FFF800003C0000000000FFF800003C00000000007FF800003C00000000003FF8
+00003C00000000001FF800003C00000000001FF800003C00000000000FF800003C000000
+000007F800FFFFFF0000000003F800FFFFFF0000000001F800FFFFFF0000000000F800FF
+FFFF00000000007800FFFFFF000000000078004F447CC358>78 D<00000007FFC0000000
+000000FFFFFE000000000007FFFFFFC0000000001FFFFFFFF0000000007FFE00FFFC0000
+0001FFF0001FFF00000007FF800003FFC000000FFF000001FFE000001FFC0000007FF000
+003FF80000003FF800007FF00000001FFC0000FFF00000001FFE0001FFE00000000FFF00
+03FFC000000007FF8003FFC000000007FF8007FF8000000003FFC007FF8000000003FFC0
+0FFF0000000001FFE00FFF0000000001FFE01FFF0000000001FFF01FFE0000000000FFF0
+3FFE0000000000FFF83FFE0000000000FFF83FFE0000000000FFF87FFE0000000000FFFC
+7FFC00000000007FFC7FFC00000000007FFC7FFC00000000007FFC7FFC00000000007FFC
+FFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFE
+FFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFE
+FFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFE
+FFFC00000000007FFE7FFC00000000007FFC7FFE0000000000FFFC7FFE0000000000FFFC
+7FFE0000000000FFFC3FFE0000000000FFF83FFE0000000000FFF83FFF0000000001FFF8
+1FFF0000000001FFF01FFF0000000001FFF01FFF8000000003FFF00FFF8000000003FFE0
+0FFF8000000003FFE007FFC000000007FFC003FFC000000007FF8003FFE00000000FFF80
+01FFF00000001FFF0000FFF80000003FFE00007FFC0000007FFC00003FFE000000FFF800
+001FFF000001FFF000000FFFC00007FFE0000007FFF0001FFFC0000001FFFE00FFFF0000
+0000FFFFFFFFFE000000003FFFFFFFF80000000007FFFFFFC00000000000FFFFFE000000
+00000007FFC000000047467AC454>I<FFFFFFFFFFFF000000FFFFFFFFFFFFF00000FFFF
+FFFFFFFFFE0000FFFFFFFFFFFFFF8000FFFFFFFFFFFFFFE000001FFF00000FFFF000001F
+FF000001FFF800001FFF0000007FFC00001FFF0000003FFE00001FFF0000001FFF00001F
+FF0000000FFF80001FFF0000000FFF80001FFF0000000FFFC0001FFF00000007FFC0001F
+FF00000007FFC0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001F
FF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001F
-FF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFC0001F
-FF00000007FFC0001FFF0000000FFF80001FFF0000000FFF80001FFF0000000FFF00001F
-FF0000001FFF00001FFF0000003FFE00001FFF0000007FFC00001FFF000001FFF800001F
-FF00000FFFF000001FFFFFFFFFFFC000001FFFFFFFFFFF0000001FFFFFFFFFFC0000001F
-FFFFFFFFC00000001FFF000000000000001FFF000000000000001FFF000000000000001F
+FF00000007FFE0001FFF00000007FFE0001FFF00000007FFC0001FFF00000007FFC0001F
+FF0000000FFF80001FFF0000000FFF80001FFF0000000FFF00001FFF0000001FFF00001F
+FF0000003FFE00001FFF0000007FFC00001FFF000001FFF800001FFF00000FFFF000001F
+FFFFFFFFFFC000001FFFFFFFFFFF0000001FFFFFFFFFFC0000001FFFFFFFFFC00000001F
+FF000000000000001FFF000000000000001FFF000000000000001FFF000000000000001F
FF000000000000001FFF000000000000001FFF000000000000001FFF000000000000001F
FF000000000000001FFF000000000000001FFF000000000000001FFF000000000000001F
FF000000000000001FFF000000000000001FFF000000000000001FFF000000000000001F
FF000000000000001FFF000000000000001FFF000000000000001FFF000000000000001F
FF000000000000001FFF000000000000001FFF000000000000001FFF000000000000001F
-FF000000000000001FFF000000000000FFFFFFFFE000000000FFFFFFFFE000000000FFFF
-FFFFE000000000FFFFFFFFE000000000FFFFFFFFE00000000043447DC34D>80
-D<FFFFFFFFFFF800000000FFFFFFFFFFFFC0000000FFFFFFFFFFFFF8000000FFFFFFFFFF
-FFFE000000FFFFFFFFFFFFFF800000001FFF00003FFFE00000001FFF000003FFF0000000
-1FFF000000FFF80000001FFF0000007FFC0000001FFF0000003FFE0000001FFF0000001F
-FF0000001FFF0000001FFF0000001FFF0000001FFF8000001FFF0000000FFF8000001FFF
-0000000FFF8000001FFF0000000FFFC000001FFF0000000FFFC000001FFF0000000FFFC0
-00001FFF0000000FFFC000001FFF0000000FFFC000001FFF0000000FFFC000001FFF0000
-000FFFC000001FFF0000000FFF8000001FFF0000000FFF8000001FFF0000001FFF000000
-1FFF0000001FFF0000001FFF0000003FFE0000001FFF0000003FFC0000001FFF0000007F
-FC0000001FFF000001FFF00000001FFF000007FFE00000001FFF00003FFF800000001FFF
-FFFFFFFF000000001FFFFFFFFFF8000000001FFFFFFFFFE0000000001FFFFFFFFFF80000
-00001FFF0000FFFC000000001FFF00003FFF000000001FFF00000FFF800000001FFF0000
-07FFC00000001FFF000003FFE00000001FFF000003FFE00000001FFF000001FFF0000000
-1FFF000001FFF00000001FFF000000FFF80000001FFF000000FFF80000001FFF000000FF
-F80000001FFF000000FFF80000001FFF000000FFF80000001FFF000000FFF80000001FFF
-000000FFF80000001FFF000000FFFC0000001FFF000000FFFC0000001FFF000000FFFC00
-00001FFF000000FFFC0000001FFF000000FFFC0000001FFF000000FFFC0000001FFF0000
-00FFFC000F001FFF000000FFFE000F001FFF000000FFFE000F001FFF0000007FFE000F00
-1FFF0000007FFF001F001FFF0000003FFF001EFFFFFFFFE0001FFF803EFFFFFFFFE0000F
-FFE0FCFFFFFFFFE00007FFFFF8FFFFFFFFE00001FFFFF0FFFFFFFFE000007FFFE0000000
-0000000007FF8050457DC354>82 D<0000FFE0001C000007FFFE003C00003FFFFF807C00
-00FFFFFFE0FC0001FFFFFFF9FC0003FF801FFFFC0007FC0001FFFC000FF800007FFC001F
-F000003FFC003FE000000FFC003FC0000007FC007FC0000003FC007F80000003FC007F80
-000001FC007F80000000FC00FF80000000FC00FF800000007C00FF800000007C00FFC000
-00007C00FFC00000007C00FFE00000003C00FFF00000003C00FFF80000003C00FFFC0000
-0000007FFE00000000007FFFE0000000007FFFFE000000003FFFFFF00000003FFFFFFF00
-00001FFFFFFFE000001FFFFFFFFC00000FFFFFFFFE000007FFFFFFFF800003FFFFFFFFC0
-0001FFFFFFFFE000007FFFFFFFF000001FFFFFFFF8000007FFFFFFFC000000FFFFFFFC00
-00000FFFFFFE00000000FFFFFE0000000007FFFF00000000007FFF00000000003FFF0000
-0000000FFF800000000007FF800000000003FF80F000000003FF80F000000001FF80F000
-000001FF80F000000000FF80F000000000FF80F800000000FF80F800000000FF80F80000
-0000FF00FC00000000FF00FC00000000FF00FE00000001FF00FF00000001FE00FF800000
-03FE00FFC0000003FC00FFE0000007FC00FFF800000FF800FFFF00003FF000FFFFF800FF
-E000FE7FFFFFFFC000FC1FFFFFFF0000F807FFFFFC0000F000FFFFF00000E00007FF8000
-0031467AC43E>I<FFFFFFFF000000FFFFFFFFFFFFFF000000FFFFFFFFFFFFFF000000FF
-FFFFFFFFFFFF000000FFFFFFFFFFFFFF000000FFFFFF003FFE0000000000FC00003FFF00
-00000000FC00001FFF0000000000F800001FFF8000000001F800000FFF8000000001F000
-000FFFC000000001F000000FFFC000000003F0000007FFC000000003E0000007FFE00000
-0007E0000003FFE000000007C0000003FFF00000000FC0000001FFF00000000F80000001
-FFF80000000F80000001FFF80000001F80000000FFFC0000001F00000000FFFC0000003F
-000000007FFC0000003E000000007FFE0000007E000000003FFE0000007C000000003FFF
-0000007C000000003FFF000000FC000000001FFF800000F8000000001FFF800001F80000
-00000FFF800001F0000000000FFFC00003F00000000007FFC00003E00000000007FFE000
-03E00000000007FFE00007E00000000003FFF00007C00000000003FFF0000FC000000000
-01FFF0000F800000000001FFF8001F800000000000FFF8001F000000000000FFFC003F00
-00000000007FFC003E0000000000007FFE003E0000000000007FFE007E0000000000003F
-FE007C0000000000003FFF00FC0000000000001FFF00F80000000000001FFF81F8000000
-0000000FFF81F00000000000000FFFC1F00000000000000FFFC3F000000000000007FFC3
-E000000000000007FFE7E000000000000003FFE7C000000000000003FFFFC00000000000
-0001FFFF8000000000000001FFFF8000000000000001FFFF8000000000000000FFFF0000
-000000000000FFFF00000000000000007FFE00000000000000007FFE0000000000000000
-3FFC00000000000000003FFC00000000000000003FFC00000000000000001FF800000000
-000000001FF800000000000000000FF000000000000000000FF0000000000000000007E0
-000000000000000007E00000000050457EC355>86 D<FFFFFFFE007FFFFFFF0000FFFFFE
+FF000000000000FFFFFFFFE000000000FFFFFFFFE000000000FFFFFFFFE000000000FFFF
+FFFFE000000000FFFFFFFFE00000000043447DC34D>I<FFFFFFFFFFF800000000FFFFFF
+FFFFFFC0000000FFFFFFFFFFFFF8000000FFFFFFFFFFFFFE000000FFFFFFFFFFFFFF8000
+00001FFF00003FFFE00000001FFF000003FFF00000001FFF000000FFF80000001FFF0000
+007FFC0000001FFF0000003FFE0000001FFF0000001FFF0000001FFF0000001FFF000000
+1FFF0000001FFF8000001FFF0000000FFF8000001FFF0000000FFF8000001FFF0000000F
+FFC000001FFF0000000FFFC000001FFF0000000FFFC000001FFF0000000FFFC000001FFF
+0000000FFFC000001FFF0000000FFFC000001FFF0000000FFFC000001FFF0000000FFF80
+00001FFF0000000FFF8000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000
+003FFE0000001FFF0000003FFC0000001FFF0000007FFC0000001FFF000001FFF0000000
+1FFF000007FFE00000001FFF00003FFF800000001FFFFFFFFFFF000000001FFFFFFFFFF8
+000000001FFFFFFFFFE0000000001FFFFFFFFFF8000000001FFF0000FFFC000000001FFF
+00003FFF000000001FFF00000FFF800000001FFF000007FFC00000001FFF000003FFE000
+00001FFF000003FFE00000001FFF000001FFF00000001FFF000001FFF00000001FFF0000
+00FFF80000001FFF000000FFF80000001FFF000000FFF80000001FFF000000FFF8000000
+1FFF000000FFF80000001FFF000000FFF80000001FFF000000FFF80000001FFF000000FF
+FC0000001FFF000000FFFC0000001FFF000000FFFC0000001FFF000000FFFC0000001FFF
+000000FFFC0000001FFF000000FFFC0000001FFF000000FFFC000F001FFF000000FFFE00
+0F001FFF000000FFFE000F001FFF0000007FFE000F001FFF0000007FFF001F001FFF0000
+003FFF001EFFFFFFFFE0001FFF803EFFFFFFFFE0000FFFE0FCFFFFFFFFE00007FFFFF8FF
+FFFFFFE00001FFFFF0FFFFFFFFE000007FFFE00000000000000007FF8050457DC354>82
+D<0000FFE0001C000007FFFE003C00003FFFFF807C0000FFFFFFE0FC0001FFFFFFF9FC00
+03FF801FFFFC0007FC0001FFFC000FF800007FFC001FF000003FFC003FE000000FFC003F
+C0000007FC007FC0000003FC007F80000003FC007F80000001FC007F80000000FC00FF80
+000000FC00FF800000007C00FF800000007C00FFC00000007C00FFC00000007C00FFE000
+00003C00FFF00000003C00FFF80000003C00FFFC00000000007FFE00000000007FFFE000
+0000007FFFFE000000003FFFFFF00000003FFFFFFF0000001FFFFFFFE000001FFFFFFFFC
+00000FFFFFFFFE000007FFFFFFFF800003FFFFFFFFC00001FFFFFFFFE000007FFFFFFFF0
+00001FFFFFFFF8000007FFFFFFFC000000FFFFFFFC0000000FFFFFFE00000000FFFFFE00
+00000007FFFF00000000007FFF00000000003FFF00000000000FFF800000000007FF8000
+00000003FF80F000000003FF80F000000001FF80F000000001FF80F000000000FF80F000
+000000FF80F800000000FF80F800000000FF80F800000000FF00FC00000000FF00FC0000
+0000FF00FE00000001FF00FF00000001FE00FF80000003FE00FFC0000003FC00FFE00000
+07FC00FFF800000FF800FFFF00003FF000FFFFF800FFE000FE7FFFFFFFC000FC1FFFFFFF
+0000F807FFFFFC0000F000FFFFF00000E00007FF80000031467AC43E>I<FFFFFFFF0000
+00FFFFFFFFFFFFFF000000FFFFFFFFFFFFFF000000FFFFFFFFFFFFFF000000FFFFFFFFFF
+FFFF000000FFFFFF003FFE0000000000FC00003FFF0000000000FC00001FFF0000000000
+F800001FFF8000000001F800000FFF8000000001F000000FFFC000000001F000000FFFC0
+00000003F0000007FFC000000003E0000007FFE000000007E0000003FFE000000007C000
+0003FFF00000000FC0000001FFF00000000F80000001FFF80000000F80000001FFF80000
+001F80000000FFFC0000001F00000000FFFC0000003F000000007FFC0000003E00000000
+7FFE0000007E000000003FFE0000007C000000003FFF0000007C000000003FFF000000FC
+000000001FFF800000F8000000001FFF800001F8000000000FFF800001F0000000000FFF
+C00003F00000000007FFC00003E00000000007FFE00003E00000000007FFE00007E00000
+000003FFF00007C00000000003FFF0000FC00000000001FFF0000F800000000001FFF800
+1F800000000000FFF8001F000000000000FFFC003F0000000000007FFC003E0000000000
+007FFE003E0000000000007FFE007E0000000000003FFE007C0000000000003FFF00FC00
+00000000001FFF00F80000000000001FFF81F80000000000000FFF81F00000000000000F
+FFC1F00000000000000FFFC3F000000000000007FFC3E000000000000007FFE7E0000000
+00000003FFE7C000000000000003FFFFC000000000000001FFFF8000000000000001FFFF
+8000000000000001FFFF8000000000000000FFFF0000000000000000FFFF000000000000
+00007FFE00000000000000007FFE00000000000000003FFC00000000000000003FFC0000
+0000000000003FFC00000000000000001FF800000000000000001FF80000000000000000
+0FF000000000000000000FF0000000000000000007E0000000000000000007E000000000
+50457EC355>86 D<FFFFFFFE007FFFFFFF0000FFFFFEFFFFFFFE007FFFFFFF0000FFFFFE
FFFFFFFE007FFFFFFF0000FFFFFEFFFFFFFE007FFFFFFF0000FFFFFEFFFFFFFE007FFFFF
-FF0000FFFFFEFFFFFFFE007FFFFFFF0000FFFFFE007FFC0000003FFE000000007C00007F
-FE0000003FFF000000007C00003FFE0000001FFF000000007800003FFF0000001FFF0000
-00007800003FFF0000001FFF80000000F800001FFF0000000FFF80000000F000001FFF80
-00000FFFC0000001F000000FFF80000007FFC0000001E000000FFF80000007FFC0000001
-E000000FFFC0000007FFE0000003E0000007FFC0000007FFE0000003C0000007FFE00000
-07FFE0000003C0000007FFE000000FFFF0000007C0000003FFE000000FFFF00000078000
-0003FFF000000FFFF800000F80000001FFF000001EFFF800000F00000001FFF000001EFF
-F800000F00000001FFF800003EFFFC00001F00000000FFF800003C7FFC00001E00000000
-FFFC00003C7FFC00001E000000007FFC00007C7FFE00003C000000007FFC0000783FFE00
-003C000000007FFE0000783FFF00007C000000003FFE0000F01FFF000078000000003FFE
-0000F01FFF000078000000003FFF0001F01FFF8000F8000000001FFF0001E00FFF8000F0
-000000001FFF8001E00FFF8000F0000000000FFF8003E00FFFC001E0000000000FFF8003
-C007FFC001E0000000000FFFC003C007FFE003E00000000007FFC0078003FFE003C00000
-000007FFC0078003FFE003C00000000007FFE00F8003FFF007C00000000003FFE00F0001
-FFF007800000000003FFF00F0001FFF007800000000001FFF01F0001FFF80F0000000000
-01FFF01E0000FFF80F000000000001FFF81E0000FFFC1F000000000000FFF83C00007FFC
-1E000000000000FFF83C00007FFC1E000000000000FFFC7C00007FFE3E0000000000007F
-FC7800003FFE3C0000000000007FFE7800003FFF3C0000000000003FFEF800003FFF7800
-00000000003FFEF000001FFF780000000000003FFFF000001FFFF80000000000001FFFE0
-00000FFFF00000000000001FFFE000000FFFF00000000000001FFFE000000FFFF0000000
-0000000FFFC0000007FFE00000000000000FFFC0000007FFE000000000000007FFC00000
-07FFC000000000000007FF80000003FFC000000000000007FF80000003FFC00000000000
-0003FF00000001FF8000000000000003FF00000001FF8000000000000003FF00000001FF
-8000000000000001FE00000000FF0000000000000001FE00000000FF0000000000000000
-FC000000007E0000000000000000FC000000007E0000000000000000FC000000007E0000
-00000000000078000000003C000000006F457EC374>I<7FFFFFFFC003FFFFFF807FFFFF
-FFC003FFFFFF807FFFFFFFC003FFFFFF807FFFFFFFC003FFFFFF807FFFFFFFC003FFFFFF
-80000FFFE0000001F800000007FFE0000003F000000007FFF0000007F000000003FFF800
-0007E000000001FFFC00000FC000000001FFFC00001F8000000000FFFE00003F80000000
-007FFF00003F00000000003FFF00007E00000000003FFF8000FC00000000001FFFC001FC
-00000000000FFFE001F800000000000FFFE003F0000000000007FFF007E0000000000003
-FFF80FE0000000000001FFFC0FC0000000000001FFFC1F80000000000000FFFE3F000000
-000000007FFF7F000000000000003FFF7E000000000000003FFFFC000000000000001FFF
-F8000000000000000FFFF8000000000000000FFFF00000000000000007FFF00000000000
-000003FFF80000000000000001FFF80000000000000001FFFC0000000000000000FFFE00
-000000000000007FFF0000000000000000FFFF0000000000000000FFFF80000000000000
-01FFFFC000000000000003FFFFC000000000000007FFFFE000000000000007E7FFF00000
-000000000FC3FFF80000000000001F83FFF80000000000003F81FFFC0000000000003F00
-FFFE0000000000007E007FFE000000000000FC007FFF000000000001FC003FFF80000000
-0001F8001FFFC00000000003F0001FFFC00000000007E0000FFFE0000000000FE00007FF
-F0000000000FC00003FFF0000000001F800003FFF8000000003F000001FFFC000000003F
-000000FFFE000000007E000000FFFE00000000FC0000007FFF00000001FC0000003FFF80
-000001F80000001FFF80000003F00000001FFFC0000007E00000000FFFE000000FE00000
-0007FFF000FFFFFFE00003FFFFFFFCFFFFFFE00003FFFFFFFCFFFFFFE00003FFFFFFFCFF
-FFFFE00003FFFFFFFCFFFFFFE00003FFFFFFFC4E447DC355>I<1FFFFFFFFFFFFE1FFFFF
-FFFFFFFE1FFFFFFFFFFFFE1FFFFFFFFFFFFE1FFFFFFFFFFFFE1FFFF80001FFFC1FFF8000
-01FFF81FFC000003FFF81FF8000007FFF01FF0000007FFE01FE000000FFFE01FC000001F
-FFC03F8000001FFF803F8000003FFF803F0000007FFF003F0000007FFE003E000000FFFE
-003E000001FFFC003E000001FFF8003C000003FFF8003C000007FFF0003C000007FFE000
-3C00000FFFE0003C00001FFFC0000000001FFF80000000003FFF00000000007FFF000000
-00007FFE0000000000FFFC0000000001FFFC0000000001FFF80000000003FFF000000000
-07FFF00000000007FFE0000000000FFFC0000000001FFFC0000000001FFF80000000003F
-FF00000000007FFF00000000007FFE0000000000FFFC00000F0001FFFC00000F0001FFF8
-00000F0003FFF000000F0007FFF000000F000FFFE000001F000FFFC000001F001FFFC000
-001E003FFF8000001E003FFF0000001E007FFF0000003E00FFFE0000003E00FFFC000000
-3E01FFFC0000007E03FFF80000007E03FFF0000000FE07FFF0000001FE0FFFE0000003FE
-0FFFC0000007FE1FFFC000000FFE3FFF8000003FFE3FFF000000FFFC7FFF00000FFFFCFF
-FFFFFFFFFFFCFFFFFFFFFFFFFCFFFFFFFFFFFFFCFFFFFFFFFFFFFCFFFFFFFFFFFFFC3844
-7AC344>90 D<0001FFE0000000001FFFFE000000007FFFFF80000001FFFFFFE0000003FE
-007FF8000007FC001FFC000007FE000FFE00000FFF0007FF00000FFF0007FF00000FFF00
-03FF80000FFF0003FF80000FFF0003FF80000FFF0001FFC00007FE0001FFC00003FC0001
-FFC00000F00001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
-C000000003FFFFC0000000FFFFFFC0000007FFFFFFC000003FFFF1FFC00000FFFC01FFC0
-0003FFE001FFC00007FF8001FFC0001FFE0001FFC0003FFC0001FFC0003FF80001FFC000
-7FF80001FFC0007FF00001FFC000FFF00001FFC000FFE00001FFC000FFE00001FFC000FF
-E00001FFC000FFE00003FFC000FFE00003FFC000FFF00007FFC0007FF8000FFFC0007FF8
-001FFFF0003FFE003EFFFFC01FFF80FC7FFFC007FFFFF87FFFC003FFFFE01FFFC0007FFF
-8007FFC0000FFC00000000322F7DAD36>97 D<007FC000000000FFFFC000000000FFFFC0
-00000000FFFFC000000000FFFFC000000000FFFFC00000000003FFC00000000001FFC000
+FF0000FFFFFE007FFC0000003FFE000000007C00007FFE0000003FFF000000007C00003F
+FE0000001FFF000000007800003FFF0000001FFF000000007800003FFF0000001FFF8000
+0000F800001FFF0000000FFF80000000F000001FFF8000000FFFC0000001F000000FFF80
+000007FFC0000001E000000FFF80000007FFC0000001E000000FFFC0000007FFE0000003
+E0000007FFC0000007FFE0000003C0000007FFE0000007FFE0000003C0000007FFE00000
+0FFFF0000007C0000003FFE000000FFFF000000780000003FFF000000FFFF800000F8000
+0001FFF000001EFFF800000F00000001FFF000001EFFF800000F00000001FFF800003EFF
+FC00001F00000000FFF800003C7FFC00001E00000000FFFC00003C7FFC00001E00000000
+7FFC00007C7FFE00003C000000007FFC0000783FFE00003C000000007FFE0000783FFF00
+007C000000003FFE0000F01FFF000078000000003FFE0000F01FFF000078000000003FFF
+0001F01FFF8000F8000000001FFF0001E00FFF8000F0000000001FFF8001E00FFF8000F0
+000000000FFF8003E00FFFC001E0000000000FFF8003C007FFC001E0000000000FFFC003
+C007FFE003E00000000007FFC0078003FFE003C00000000007FFC0078003FFE003C00000
+000007FFE00F8003FFF007C00000000003FFE00F0001FFF007800000000003FFF00F0001
+FFF007800000000001FFF01F0001FFF80F000000000001FFF01E0000FFF80F0000000000
+01FFF81E0000FFFC1F000000000000FFF83C00007FFC1E000000000000FFF83C00007FFC
+1E000000000000FFFC7C00007FFE3E0000000000007FFC7800003FFE3C0000000000007F
+FE7800003FFF3C0000000000003FFEF800003FFF780000000000003FFEF000001FFF7800
+00000000003FFFF000001FFFF80000000000001FFFE000000FFFF00000000000001FFFE0
+00000FFFF00000000000001FFFE000000FFFF00000000000000FFFC0000007FFE0000000
+0000000FFFC0000007FFE000000000000007FFC0000007FFC000000000000007FF800000
+03FFC000000000000007FF80000003FFC000000000000003FF00000001FF800000000000
+0003FF00000001FF8000000000000003FF00000001FF8000000000000001FE00000000FF
+0000000000000001FE00000000FF0000000000000000FC000000007E0000000000000000
+FC000000007E0000000000000000FC000000007E000000000000000078000000003C0000
+00006F457EC374>I<7FFFFFFFC003FFFFFF807FFFFFFFC003FFFFFF807FFFFFFFC003FF
+FFFF807FFFFFFFC003FFFFFF807FFFFFFFC003FFFFFF80000FFFE0000001F800000007FF
+E0000003F000000007FFF0000007F000000003FFF8000007E000000001FFFC00000FC000
+000001FFFC00001F8000000000FFFE00003F80000000007FFF00003F00000000003FFF00
+007E00000000003FFF8000FC00000000001FFFC001FC00000000000FFFE001F800000000
+000FFFE003F0000000000007FFF007E0000000000003FFF80FE0000000000001FFFC0FC0
+000000000001FFFC1F80000000000000FFFE3F000000000000007FFF7F00000000000000
+3FFF7E000000000000003FFFFC000000000000001FFFF8000000000000000FFFF8000000
+000000000FFFF00000000000000007FFF00000000000000003FFF80000000000000001FF
+F80000000000000001FFFC0000000000000000FFFE00000000000000007FFF0000000000
+000000FFFF0000000000000000FFFF8000000000000001FFFFC000000000000003FFFFC0
+00000000000007FFFFE000000000000007E7FFF00000000000000FC3FFF8000000000000
+1F83FFF80000000000003F81FFFC0000000000003F00FFFE0000000000007E007FFE0000
+00000000FC007FFF000000000001FC003FFF800000000001F8001FFFC00000000003F000
+1FFFC00000000007E0000FFFE0000000000FE00007FFF0000000000FC00003FFF0000000
+001F800003FFF8000000003F000001FFFC000000003F000000FFFE000000007E000000FF
+FE00000000FC0000007FFF00000001FC0000003FFF80000001F80000001FFF80000003F0
+0000001FFFC0000007E00000000FFFE000000FE000000007FFF000FFFFFFE00003FFFFFF
+FCFFFFFFE00003FFFFFFFCFFFFFFE00003FFFFFFFCFFFFFFE00003FFFFFFFCFFFFFFE000
+03FFFFFFFC4E447DC355>I<1FFFFFFFFFFFFE1FFFFFFFFFFFFE1FFFFFFFFFFFFE1FFFFF
+FFFFFFFE1FFFFFFFFFFFFE1FFFF80001FFFC1FFF800001FFF81FFC000003FFF81FF80000
+07FFF01FF0000007FFE01FE000000FFFE01FC000001FFFC03F8000001FFF803F8000003F
+FF803F0000007FFF003F0000007FFE003E000000FFFE003E000001FFFC003E000001FFF8
+003C000003FFF8003C000007FFF0003C000007FFE0003C00000FFFE0003C00001FFFC000
+0000001FFF80000000003FFF00000000007FFF00000000007FFE0000000000FFFC000000
+0001FFFC0000000001FFF80000000003FFF00000000007FFF00000000007FFE000000000
+0FFFC0000000001FFFC0000000001FFF80000000003FFF00000000007FFF00000000007F
+FE0000000000FFFC00000F0001FFFC00000F0001FFF800000F0003FFF000000F0007FFF0
+00000F000FFFE000001F000FFFC000001F001FFFC000001E003FFF8000001E003FFF0000
+001E007FFF0000003E00FFFE0000003E00FFFC0000003E01FFFC0000007E03FFF8000000
+7E03FFF0000000FE07FFF0000001FE0FFFE0000003FE0FFFC0000007FE1FFFC000000FFE
+3FFF8000003FFE3FFF000000FFFC7FFF00000FFFFCFFFFFFFFFFFFFCFFFFFFFFFFFFFCFF
+FFFFFFFFFFFCFFFFFFFFFFFFFCFFFFFFFFFFFFFC38447AC344>90
+D<0001FFE0000000001FFFFE000000007FFFFF80000001FFFFFFE0000003FE007FF80000
+07FC001FFC000007FE000FFE00000FFF0007FF00000FFF0007FF00000FFF0003FF80000F
+FF0003FF80000FFF0003FF80000FFF0001FFC00007FE0001FFC00003FC0001FFC00000F0
+0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000003
+FFFFC0000000FFFFFFC0000007FFFFFFC000003FFFF1FFC00000FFFC01FFC00003FFE001
+FFC00007FF8001FFC0001FFE0001FFC0003FFC0001FFC0003FF80001FFC0007FF80001FF
+C0007FF00001FFC000FFF00001FFC000FFE00001FFC000FFE00001FFC000FFE00001FFC0
+00FFE00003FFC000FFE00003FFC000FFF00007FFC0007FF8000FFFC0007FF8001FFFF000
+3FFE003EFFFFC01FFF80FC7FFFC007FFFFF87FFFC003FFFFE01FFFC0007FFF8007FFC000
+0FFC00000000322F7DAD36>97 D<007FC000000000FFFFC000000000FFFFC000000000FF
+FFC000000000FFFFC000000000FFFFC00000000003FFC00000000001FFC00000000001FF
+C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0
+0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000
00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000
-000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000
-0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000
-01FFC00000000001FFC00FF8000001FFC0FFFF800001FFC3FFFFE00001FFCFFFFFF80001
-FFDFC03FFC0001FFFF000FFE0001FFFC0003FF0001FFF80001FF8001FFF00001FFC001FF
-E00000FFE001FFC00000FFE001FFC000007FF001FFC000007FF001FFC000007FF801FFC0
-00003FF801FFC000003FF801FFC000003FF801FFC000003FFC01FFC000003FFC01FFC000
-003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC00000
-3FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003F
-F801FFC000003FF801FFC000007FF801FFC000007FF001FFC000007FF001FFC000007FF0
-01FFC00000FFE001FFE00000FFC001FFF00001FFC001FFF80003FF8001FF7C0007FF0001
-FE3E000FFE0001FC1FC07FFC0001F80FFFFFF00001F003FFFFC00001E000FFFF00000000
-001FF0000036467DC43E>I<00003FFC00000001FFFFC000000FFFFFF000003FFFFFFC00
-007FF003FE0000FFC001FF0003FF8003FF0007FF0007FF8007FE0007FF800FFE0007FF80
-1FFC0007FF801FFC0007FF803FF80007FF803FF80003FF007FF80001FE007FF800007800
-7FF0000000007FF000000000FFF000000000FFF000000000FFF000000000FFF000000000
-FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000
-FFF000000000FFF0000000007FF8000000007FF8000000007FF8000000003FF800000000
-3FFC000003C03FFC000003C01FFE000007C00FFE000007800FFF00000F8007FF80001F00
-03FFC0003E0001FFF0007C00007FFC03F800003FFFFFF000000FFFFFC0000003FFFF0000
-00003FF800002A2F7CAD32>I<0000000003FE0000000007FFFE0000000007FFFE000000
-0007FFFE0000000007FFFE0000000007FFFE00000000001FFE00000000000FFE00000000
-000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000000000
-0FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000F
-FE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE
-0000003FE00FFE000003FFFC0FFE00000FFFFF8FFE00003FFFFFCFFE0000FFF807FFFE00
-01FFC001FFFE0003FF80007FFE0007FF00003FFE000FFE00001FFE000FFC00000FFE001F
-FC00000FFE003FF800000FFE003FF800000FFE003FF800000FFE007FF800000FFE007FF0
-00000FFE007FF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000
-000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF00000
-0FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE007FF000000FFE007FF000000F
-FE007FF000000FFE007FF800000FFE003FF800000FFE003FF800000FFE001FFC00001FFE
-001FFC00001FFE000FFE00003FFE0007FE00007FFE0003FF0000FFFF0001FFC003FFFFFC
-00FFF01FEFFFFC007FFFFF8FFFFC001FFFFE0FFFFC0007FFF80FFFFC00007FC00FF80036
-467CC43E>I<00003FF800000003FFFF8000000FFFFFE000003FFFFFF000007FF83FF800
-00FFC007FC0001FF8003FE0003FF0001FF0007FE0000FF800FFC0000FF801FFC00007FC0
-1FF800007FC03FF800003FE03FF800003FE07FF800003FE07FF000003FE07FF000003FF0
-7FF000001FF0FFF000001FF0FFF000001FF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF0
-FFFFFFFFFFF0FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000
-7FF0000000007FF0000000007FF8000000007FF8000000003FF8000000003FF8000000F0
-1FFC000000F01FFC000001F00FFE000001E007FF000003E003FF800007C001FFC0000F80
-00FFF0003F00007FFE01FE00001FFFFFFC000007FFFFF0000001FFFFC00000001FFE0000
-2C2F7DAD33>I<000000FF8000000FFFE000007FFFF00001FFFFF80003FF8FFC000FFE0F
-FE001FFC1FFE001FF81FFE003FF81FFE007FF01FFE007FF01FFE007FF00FFC00FFE00FFC
-00FFE003F000FFE000C000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000
-FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000FFFFFFF800FFFF
-FFF800FFFFFFF800FFFFFFF800FFFFFFF80000FFE0000000FFE0000000FFE0000000FFE0
+000001FFC00FF8000001FFC0FFFF800001FFC3FFFFE00001FFCFFFFFF80001FFDFC03FFC
+0001FFFF000FFE0001FFFC0003FF0001FFF80001FF8001FFF00001FFC001FFE00000FFE0
+01FFC00000FFE001FFC000007FF001FFC000007FF001FFC000007FF801FFC000003FF801
+FFC000003FF801FFC000003FF801FFC000003FFC01FFC000003FFC01FFC000003FFC01FF
+C000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC0
+00003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FF801FFC000
+003FF801FFC000007FF801FFC000007FF001FFC000007FF001FFC000007FF001FFC00000
+FFE001FFE00000FFC001FFF00001FFC001FFF80003FF8001FF7C0007FF0001FE3E000FFE
+0001FC1FC07FFC0001F80FFFFFF00001F003FFFFC00001E000FFFF00000000001FF00000
+36467DC43E>I<00003FFC00000001FFFFC000000FFFFFF000003FFFFFFC00007FF003FE
+0000FFC001FF0003FF8003FF0007FF0007FF8007FE0007FF800FFE0007FF801FFC0007FF
+801FFC0007FF803FF80007FF803FF80003FF007FF80001FE007FF8000078007FF0000000
+007FF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000
+00FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000
+00FFF0000000007FF8000000007FF8000000007FF8000000003FF8000000003FFC000003
+C03FFC000003C01FFE000007C00FFE000007800FFF00000F8007FF80001F0003FFC0003E
+0001FFF0007C00007FFC03F800003FFFFFF000000FFFFFC0000003FFFF000000003FF800
+002A2F7CAD32>I<0000000003FE0000000007FFFE0000000007FFFE0000000007FFFE00
+00000007FFFE0000000007FFFE00000000001FFE00000000000FFE00000000000FFE0000
+0000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000
+00000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000
+000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000003FE0
+0FFE000003FFFC0FFE00000FFFFF8FFE00003FFFFFCFFE0000FFF807FFFE0001FFC001FF
+FE0003FF80007FFE0007FF00003FFE000FFE00001FFE000FFC00000FFE001FFC00000FFE
+003FF800000FFE003FF800000FFE003FF800000FFE007FF800000FFE007FF000000FFE00
+7FF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FF
+F000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF0
+00000FFE00FFF000000FFE00FFF000000FFE007FF000000FFE007FF000000FFE007FF000
+000FFE007FF800000FFE003FF800000FFE003FF800000FFE001FFC00001FFE001FFC0000
+1FFE000FFE00003FFE0007FE00007FFE0003FF0000FFFF0001FFC003FFFFFC00FFF01FEF
+FFFC007FFFFF8FFFFC001FFFFE0FFFFC0007FFF80FFFFC00007FC00FF80036467CC43E>
+I<00003FF800000003FFFF8000000FFFFFE000003FFFFFF000007FF83FF80000FFC007FC
+0001FF8003FE0003FF0001FF0007FE0000FF800FFC0000FF801FFC00007FC01FF800007F
+C03FF800003FE03FF800003FE07FF800003FE07FF000003FE07FF000003FF07FF000001F
+F0FFF000001FF0FFF000001FF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFF
+F0FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000007FF0000000
+007FF0000000007FF8000000007FF8000000003FF8000000003FF8000000F01FFC000000
+F01FFC000001F00FFE000001E007FF000003E003FF800007C001FFC0000F8000FFF0003F
+00007FFE01FE00001FFFFFFC000007FFFFF0000001FFFFC00000001FFE00002C2F7DAD33
+>I<000000FF8000000FFFE000007FFFF00001FFFFF80003FF8FFC000FFE0FFE001FFC1F
+FE001FF81FFE003FF81FFE007FF01FFE007FF01FFE007FF00FFC00FFE00FFC00FFE003F0
+00FFE000C000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000
+FFE0000000FFE0000000FFE0000000FFE0000000FFE00000FFFFFFF800FFFFFFF800FFFF
+FFF800FFFFFFF800FFFFFFF80000FFE0000000FFE0000000FFE0000000FFE0000000FFE0
000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000
0000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000
00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000
FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF
-E0000000FFE000007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE00027467D
-C522>I<0000FFE0007E00000FFFFE03FF80003FFFFF8FFF8000FFFFFFFFFFC001FFC07F
-FF3FC003FF001FF83FC007FE000FFC3FC00FFC0007FE1F801FFC0007FF0F001FF80003FF
-00001FF80003FF00003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80
-003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80001FF80003FF0000
-1FF80003FF00001FFC0007FF00000FFC0007FE000007FE000FFC000003FF001FF8000001
-FFC07FF0000003FFFFFFE0000003FFFFFF800000078FFFFE0000000780FFE00000000F80
-00000000000F8000000000000F8000000000000F8000000000000FC000000000000FE000
-000000000FF000000000000FFFFFFFC000000FFFFFFFFC000007FFFFFFFF800007FFFFFF
-FFE00003FFFFFFFFF00001FFFFFFFFFC0000FFFFFFFFFC0003FFFFFFFFFE000FFFFFFFFF
-FF001FF000007FFF003FC0000007FF007F80000001FF807F80000000FF80FF00000000FF
-80FF000000007F80FF000000007F80FF000000007F80FF000000007F80FF80000000FF80
-7F80000000FF007FC0000001FF003FE0000003FE001FF0000007FC000FFE00003FF80007
-FFC001FFF00001FFFFFFFFC000007FFFFFFF0000000FFFFFF8000000007FFF0000003242
-7DAC38>I<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC0
-00000000FFFFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC000
-00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000
-000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000
-0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC007FE0000
-01FFC03FFF800001FFC0FFFFE00001FFC1FFFFF80001FFC7F03FFC0001FFCF801FFC0001
-FFDF000FFE0001FFDE000FFE0001FFFC000FFE0001FFF80007FF0001FFF00007FF0001FF
-F00007FF0001FFE00007FF0001FFE00007FF0001FFE00007FF0001FFC00007FF0001FFC0
+E000007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE00027467DC522>I<00
+00FFE0007E00000FFFFE03FF80003FFFFF8FFF8000FFFFFFFFFFC001FFC07FFF3FC003FF
+001FF83FC007FE000FFC3FC00FFC0007FE1F801FFC0007FF0F001FF80003FF00001FF800
+03FF00003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003
+FF80003FF80003FF80003FF80003FF80003FF80003FF80001FF80003FF00001FF80003FF
+00001FFC0007FF00000FFC0007FE000007FE000FFC000003FF001FF8000001FFC07FF000
+0003FFFFFFE0000003FFFFFF800000078FFFFE0000000780FFE00000000F800000000000
+0F8000000000000F8000000000000F8000000000000FC000000000000FE000000000000F
+F000000000000FFFFFFFC000000FFFFFFFFC000007FFFFFFFF800007FFFFFFFFE00003FF
+FFFFFFF00001FFFFFFFFFC0000FFFFFFFFFC0003FFFFFFFFFE000FFFFFFFFFFF001FF000
+007FFF003FC0000007FF007F80000001FF807F80000000FF80FF00000000FF80FF000000
+007F80FF000000007F80FF000000007F80FF000000007F80FF80000000FF807F80000000
+FF007FC0000001FF003FE0000003FE001FF0000007FC000FFE00003FF80007FFC001FFF0
+0001FFFFFFFFC000007FFFFFFF0000000FFFFFF8000000007FFF00000032427DAC38>I<
+007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FF
+FFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
+C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0
+0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000
+00000001FFC00000000001FFC00000000001FFC00000000001FFC007FE000001FFC03FFF
+800001FFC0FFFFE00001FFC1FFFFF80001FFC7F03FFC0001FFCF801FFC0001FFDF000FFE
+0001FFDE000FFE0001FFFC000FFE0001FFF80007FF0001FFF00007FF0001FFF00007FF00
+01FFE00007FF0001FFE00007FF0001FFE00007FF0001FFC00007FF0001FFC00007FF0001
+FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF
+C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0
0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000
07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007
-FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF
-0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00
-01FFC00007FF0001FFC00007FF0001FFC00007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFF
-FFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFE37457CC43E>I<007C0001FF0003FF80
-07FFC007FFC00FFFE00FFFE00FFFE00FFFE00FFFE007FFC007FFC003FF8001FF00007C00
-000000000000000000000000000000000000000000000000000000000000007FC07FFFC0
-7FFFC07FFFC07FFFC07FFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0
-01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0
-01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0
-01FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18467CC520>I<007FC000FFFFC000
-FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001FFC00001FFC00001FFC000
-01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
-01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
-01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
-01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
-01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
-01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80
-FFFFFF80FFFFFF80FFFFFF80FFFFFF8019457CC420>108 D<007F8007FE00000FFC0000
-FFFF803FFFC0007FFF8000FFFF80FFFFF001FFFFE000FFFF81FFFFF803FFFFF000FFFF87
-F01FFC0FE03FF800FFFF8FC00FFE1F801FFC0003FF9F000FFF3E001FFE0001FF9E0007FF
-3C000FFE0001FFBC0007FF78000FFE0001FFF80003FFF00007FF0001FFF80003FFF00007
-FF0001FFF00003FFE00007FF0001FFE00003FFC00007FF0001FFE00003FFC00007FF0001
-FFE00003FFC00007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC000
+FF0001FFC00007FF0001FFC00007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFF
+FEFFFFFF83FFFFFEFFFFFF83FFFFFE37457CC43E>I<007C0001FF0003FF8007FFC007FF
+C00FFFE00FFFE00FFFE00FFFE00FFFE007FFC007FFC003FF8001FF00007C000000000000
+00000000000000000000000000000000000000000000000000007FC07FFFC07FFFC07FFF
+C07FFFC07FFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
+C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18467CC520>I<007FC000FFFFC000FFFFC000FF
+FFC000FFFFC000FFFFC00003FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
+FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
+FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
+FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
+FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
+FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
+FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FF
+FFFF80FFFFFF80FFFFFF8019457CC420>108 D<007F8007FE00000FFC0000FFFF803FFF
+C0007FFF8000FFFF80FFFFF001FFFFE000FFFF81FFFFF803FFFFF000FFFF87F01FFC0FE0
+3FF800FFFF8FC00FFE1F801FFC0003FF9F000FFF3E001FFE0001FF9E0007FF3C000FFE00
+01FFBC0007FF78000FFE0001FFF80003FFF00007FF0001FFF80003FFF00007FF0001FFF0
+0003FFE00007FF0001FFE00003FFC00007FF0001FFE00003FFC00007FF0001FFE00003FF
+C00007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007
+FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001
+FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC000
03FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF80
0007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF
0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FF
C00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003
-FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF8000
-07FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF00
-01FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF00FFFFFF
-81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFF
-FF03FFFFFEFFFFFF81FFFFFF03FFFFFE572D7CAC5E>I<007F8007FE0000FFFF803FFF80
-00FFFF80FFFFE000FFFF81FFFFF800FFFF87F03FFC00FFFF8F801FFC0003FF9F000FFE00
-01FF9E000FFE0001FFBC000FFE0001FFF80007FF0001FFF00007FF0001FFF00007FF0001
-FFE00007FF0001FFE00007FF0001FFE00007FF0001FFC00007FF0001FFC00007FF0001FF
+FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF00FFFFFF81FFFFFF03
+FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFE
+FFFFFF81FFFFFF03FFFFFE572D7CAC5E>I<007F8007FE0000FFFF803FFF8000FFFF80FF
+FFE000FFFF81FFFFF800FFFF87F03FFC00FFFF8F801FFC0003FF9F000FFE0001FF9E000F
+FE0001FFBC000FFE0001FFF80007FF0001FFF00007FF0001FFF00007FF0001FFE00007FF
+0001FFE00007FF0001FFE00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00
+01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001
+FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF
C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0
0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000
-07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007
-FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF
-0001FFC00007FF0001FFC00007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFE
-FFFFFF83FFFFFEFFFFFF83FFFFFE372D7CAC3E>I<00001FFC0000000001FFFFC0000000
-07FFFFF00000001FFFFFFC0000007FF80FFF000000FFC001FF800001FF8000FFC00003FE
-00003FE00007FE00003FF0000FFC00001FF8000FF800000FF8001FF800000FFC001FF800
-000FFC003FF800000FFE003FF0000007FE007FF0000007FF007FF0000007FF007FF00000
-07FF007FF0000007FF00FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007
-FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF
-80FFF0000007FF807FF0000007FF007FF0000007FF007FF0000007FF007FF0000007FF00
-3FF800000FFE003FF800000FFE001FF800000FFC001FFC00001FFC000FFC00001FF80007
-FE00003FF00007FE00003FF00003FF8000FFE00001FFC001FFC000007FF80FFF0000003F
-FFFFFE0000000FFFFFF800000001FFFFC0000000001FFC000000312F7DAD38>I<007FC0
-0FF80000FFFFC0FFFF8000FFFFC3FFFFE000FFFFCFFFFFF800FFFFDFC03FFC00FFFFFF00
-1FFE0003FFFC0007FF0001FFF80003FF8001FFF00003FFC001FFE00001FFE001FFC00001
-FFE001FFC00000FFF001FFC00000FFF001FFC000007FF801FFC000007FF801FFC000007F
-F801FFC000007FF801FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC
-01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01
-FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000007FF801FFC000007FF801FF
-C000007FF801FFC000007FF001FFC00000FFF001FFC00000FFF001FFC00001FFE001FFE0
-0001FFC001FFF00003FFC001FFF80007FF8001FFFC000FFF0001FFFE001FFE0001FFDFC0
-7FFC0001FFCFFFFFF00001FFC3FFFFC00001FFC0FFFF000001FFC01FF0000001FFC00000
-000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000
-0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000
-01FFC00000000001FFC000000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FF
-FFFF80000000FFFFFF8000000036407DAC3E>I<00003FE0001E000003FFFC003E00000F
-FFFF007E00003FFFFF807E0000FFF80FE0FE0001FFE003F1FE0003FFC001F1FE0007FF80
-00FBFE000FFF00007FFE000FFE00003FFE001FFE00001FFE003FFC00001FFE003FFC0000
-0FFE003FF800000FFE007FF800000FFE007FF800000FFE007FF800000FFE00FFF000000F
-FE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE
-00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00
-FFF000000FFE007FF800000FFE007FF800000FFE007FF800000FFE007FF800000FFE003F
-FC00000FFE003FFC00000FFE001FFE00001FFE001FFE00003FFE000FFF00007FFE0007FF
-0000FFFE0003FF8001FFFE0001FFE003EFFE0000FFF01FCFFE00007FFFFF8FFE00001FFF
-FE0FFE000003FFF80FFE0000007FC00FFE00000000000FFE00000000000FFE0000000000
-0FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000F
-FE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE
-0000000007FFFFFC00000007FFFFFC00000007FFFFFC00000007FFFFFC00000007FFFFFC
-36407CAC3B>I<007F807F00FFFF81FFE0FFFF83FFF0FFFF8FFFF8FFFF8F8FFCFFFF9F1F
-FE03FFBE1FFE01FFBC1FFE01FFF81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F8
-01FFE001E001FFE0000001FFE0000001FFE0000001FFC0000001FFC0000001FFC0000001
+07FF0001FFC00007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FF
+FFFEFFFFFF83FFFFFE372D7CAC3E>I<00001FFC0000000001FFFFC000000007FFFFF000
+00001FFFFFFC0000007FF80FFF000000FFC001FF800001FF8000FFC00003FE00003FE000
+07FE00003FF0000FFC00001FF8000FF800000FF8001FF800000FFC001FF800000FFC003F
+F800000FFE003FF0000007FE007FF0000007FF007FF0000007FF007FF0000007FF007FF0
+000007FF00FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF000
+0007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF00000
+07FF807FF0000007FF007FF0000007FF007FF0000007FF007FF0000007FF003FF800000F
+FE003FF800000FFE001FF800000FFC001FFC00001FFC000FFC00001FF80007FE00003FF0
+0007FE00003FF00003FF8000FFE00001FFC001FFC000007FF80FFF0000003FFFFFFE0000
+000FFFFFF800000001FFFFC0000000001FFC000000312F7DAD38>I<007FC00FF80000FF
+FFC0FFFF8000FFFFC3FFFFE000FFFFCFFFFFF800FFFFDFC03FFC00FFFFFF001FFE0003FF
+FC0007FF0001FFF80003FF8001FFF00003FFC001FFE00001FFE001FFC00001FFE001FFC0
+0000FFF001FFC00000FFF001FFC000007FF801FFC000007FF801FFC000007FF801FFC000
+007FF801FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC00000
+3FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003F
+FC01FFC000003FFC01FFC000003FFC01FFC000007FF801FFC000007FF801FFC000007FF8
+01FFC000007FF001FFC00000FFF001FFC00000FFF001FFC00001FFE001FFE00001FFC001
+FFF00003FFC001FFF80007FF8001FFFC000FFF0001FFFE001FFE0001FFDFC07FFC0001FF
+CFFFFFF00001FFC3FFFFC00001FFC0FFFF000001FFC01FF0000001FFC00000000001FFC0
+0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000
+00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000
+000001FFC000000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF800000
+00FFFFFF8000000036407DAC3E>I<00003FE0001E000003FFFC003E00000FFFFF007E00
+003FFFFF807E0000FFF80FE0FE0001FFE003F1FE0003FFC001F1FE0007FF8000FBFE000F
+FF00007FFE000FFE00003FFE001FFE00001FFE003FFC00001FFE003FFC00000FFE003FF8
+00000FFE007FF800000FFE007FF800000FFE007FF800000FFE00FFF000000FFE00FFF000
+000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF00000
+0FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000F
+FE007FF800000FFE007FF800000FFE007FF800000FFE007FF800000FFE003FFC00000FFE
+003FFC00000FFE001FFE00001FFE001FFE00003FFE000FFF00007FFE0007FF0000FFFE00
+03FF8001FFFE0001FFE003EFFE0000FFF01FCFFE00007FFFFF8FFE00001FFFFE0FFE0000
+03FFF80FFE0000007FC00FFE00000000000FFE00000000000FFE00000000000FFE000000
+00000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000
+000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000000007
+FFFFFC00000007FFFFFC00000007FFFFFC00000007FFFFFC00000007FFFFFC36407CAC3B
+>I<007F807F00FFFF81FFE0FFFF83FFF0FFFF8FFFF8FFFF8F8FFCFFFF9F1FFE03FFBE1F
+FE01FFBC1FFE01FFF81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801FFE001E0
+01FFE0000001FFE0000001FFE0000001FFC0000001FFC0000001FFC0000001FFC0000001
FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FF
C0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0
-000001FFC0000001FFC0000001FFC0000001FFC0000001FFC00000FFFFFFE000FFFFFFE0
-00FFFFFFE000FFFFFFE000FFFFFFE000272D7DAC2E>I<001FFC038000FFFF878003FFFF
-FF800FFFFFFF801FF003FF803FC000FF803F80003F807F00001F807E00001F80FE00000F
-80FE00000F80FE00000780FF00000780FF00000780FF80000780FFE0000000FFFE000000
-7FFFF000007FFFFF00003FFFFFC0003FFFFFF0001FFFFFFC000FFFFFFE0003FFFFFF0001
-FFFFFF80007FFFFF80000FFFFFC000003FFFC0000003FFE0000000FFE0F000003FE0F000
-003FE0F800001FE0F800000FE0F800000FE0FC00000FE0FC00000FE0FE00000FC0FF0000
-1FC0FF00001FC0FF80003F80FFE0007F00FFF803FE00FFFFFFFC00FCFFFFF800F03FFFE0
-00E007FE0000232F7CAD2C>I<0001E000000001E000000001E000000001E000000001E0
-00000003E000000003E000000003E000000003E000000007E000000007E00000000FE000
-00000FE00000001FE00000001FE00000003FE00000007FE0000000FFE0000003FFE00000
-0FFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF8000FFE0000000FFE0000000
+000001FFC0000001FFC0000001FFC0000001FFC00000FFFFFFE000FFFFFFE000FFFFFFE0
+00FFFFFFE000FFFFFFE000272D7DAC2E>I<001FFC038000FFFF878003FFFFFF800FFFFF
+FF801FF003FF803FC000FF803F80003F807F00001F807E00001F80FE00000F80FE00000F
+80FE00000780FF00000780FF00000780FF80000780FFE0000000FFFE0000007FFFF00000
+7FFFFF00003FFFFFC0003FFFFFF0001FFFFFFC000FFFFFFE0003FFFFFF0001FFFFFF8000
+7FFFFF80000FFFFFC000003FFFC0000003FFE0000000FFE0F000003FE0F000003FE0F800
+001FE0F800000FE0F800000FE0FC00000FE0FC00000FE0FE00000FC0FF00001FC0FF0000
+1FC0FF80003F80FFE0007F00FFF803FE00FFFFFFFC00FCFFFFF800F03FFFE000E007FE00
+00232F7CAD2C>I<0001E000000001E000000001E000000001E000000001E000000003E0
+00000003E000000003E000000003E000000007E000000007E00000000FE00000000FE000
+00001FE00000001FE00000003FE00000007FE0000000FFE0000003FFE000000FFFFFFF80
+FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF8000FFE0000000FFE0000000FFE0000000
FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF
E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0
-000000FFE0000000FFE0000000FFE0000000FFE0000000FFE001E000FFE001E000FFE001
-E000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E000FFE003E0
-00FFF003C0007FF003C0007FF007C0003FF80F80001FFC1F00000FFFFF000007FFFC0000
-01FFF80000003FE00023407EBE2C>I<007FC00001FF00FFFFC003FFFF00FFFFC003FFFF
-00FFFFC003FFFF00FFFFC003FFFF00FFFFC003FFFF0003FFC0000FFF0001FFC00007FF00
+000000FFE0000000FFE0000000FFE0000000FFE001E000FFE001E000FFE001E000FFE001
+E000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E000FFE003E000FFF003C0
+007FF003C0007FF007C0003FF80F80001FFC1F00000FFFFF000007FFFC000001FFF80000
+003FE00023407EBE2C>I<007FC00001FF00FFFFC003FFFF00FFFFC003FFFF00FFFFC003
+FFFF00FFFFC003FFFF00FFFFC003FFFF0003FFC0000FFF0001FFC00007FF0001FFC00007
+FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF
+0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00
01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001
FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF
-C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0
-0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000
-07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0000F
-FF0001FFC0000FFF0001FFC0001FFF0001FFC0001FFF0001FFC0003FFF0000FFC0003FFF
-0000FFE0007FFF80007FE001F7FFFE007FF807E7FFFE003FFFFFC7FFFE000FFFFF07FFFE
-0003FFFE07FFFE00007FF007FC00372E7CAC3E>I<FFFFFF0003FFFCFFFFFF0003FFFCFF
-FFFF0003FFFCFFFFFF0003FFFCFFFFFF0003FFFC01FFE000003E0000FFE000003C0000FF
-F000003C00007FF000007800007FF800007800007FF80000F800003FF80000F000003FFC
-0001F000001FFC0001E000001FFE0003E000000FFE0003C000000FFF0007C0000007FF00
-0780000007FF800F80000003FF800F00000003FFC00F00000003FFC01F00000001FFE01E
-00000001FFE03E00000000FFE03C00000000FFF07C000000007FF078000000007FF8F800
-0000003FF8F0000000003FFDF0000000001FFDE0000000001FFFE0000000000FFFC00000
-00000FFFC0000000000FFFC00000000007FF800000000007FF800000000003FF00000000
-0003FF000000000001FE000000000001FE000000000000FC000000000000FC0000000000
-0078000000362C7EAB3B>I<FFFFFF0003FFFCFFFFFF0003FFFCFFFFFF0003FFFCFFFFFF
-0003FFFCFFFFFF0003FFFC01FFE000003E0000FFE000003C0000FFF000003C00007FF000
-007800007FF800007800007FF80000F800003FF80000F000003FFC0001F000001FFC0001
-E000001FFE0003E000000FFE0003C000000FFF0007C0000007FF000780000007FF800F80
-000003FF800F00000003FFC00F00000003FFC01F00000001FFE01E00000001FFE03E0000
-0000FFE03C00000000FFF07C000000007FF078000000007FF8F8000000003FF8F0000000
-003FFDF0000000001FFDE0000000001FFFE0000000000FFFC0000000000FFFC000000000
-0FFFC00000000007FF800000000007FF800000000003FF000000000003FF000000000001
-FE000000000001FE000000000000FC000000000000FC0000000000007800000000000078
-000000000000F8000000000000F0000000000001F0000000000001E00000001F0003E000
-00003F8003C00000007FC007C0000000FFE00780000000FFE00F80000000FFE00F000000
-00FFE01F00000000FFE03E00000000FFC07C000000007FC1F8000000007F07F000000000
-3FFFE0000000001FFFC00000000007FF000000000001FC000000000036407EAB3B>121
+C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0000FFF0001FFC0
+000FFF0001FFC0001FFF0001FFC0001FFF0001FFC0003FFF0000FFC0003FFF0000FFE000
+7FFF80007FE001F7FFFE007FF807E7FFFE003FFFFFC7FFFE000FFFFF07FFFE0003FFFE07
+FFFE00007FF007FC00372E7CAC3E>I<FFFFFF0003FFFCFFFFFF0003FFFCFFFFFF0003FF
+FCFFFFFF0003FFFCFFFFFF0003FFFC01FFE000003E0000FFE000003C0000FFF000003C00
+007FF000007800007FF800007800007FF80000F800003FF80000F000003FFC0001F00000
+1FFC0001E000001FFE0003E000000FFE0003C000000FFF0007C0000007FF000780000007
+FF800F80000003FF800F00000003FFC00F00000003FFC01F00000001FFE01E00000001FF
+E03E00000000FFE03C00000000FFF07C000000007FF078000000007FF8F8000000003FF8
+F0000000003FFDF0000000001FFDE0000000001FFFE0000000000FFFC0000000000FFFC0
+000000000FFFC00000000007FF800000000007FF800000000003FF000000000003FF0000
+00000001FE000000000001FE000000000000FC000000000000FC00000000000078000000
+362C7EAB3B>I<FFFFFF0003FFFCFFFFFF0003FFFCFFFFFF0003FFFCFFFFFF0003FFFCFF
+FFFF0003FFFC01FFE000003E0000FFE000003C0000FFF000003C00007FF000007800007F
+F800007800007FF80000F800003FF80000F000003FFC0001F000001FFC0001E000001FFE
+0003E000000FFE0003C000000FFF0007C0000007FF000780000007FF800F80000003FF80
+0F00000003FFC00F00000003FFC01F00000001FFE01E00000001FFE03E00000000FFE03C
+00000000FFF07C000000007FF078000000007FF8F8000000003FF8F0000000003FFDF000
+0000001FFDE0000000001FFFE0000000000FFFC0000000000FFFC0000000000FFFC00000
+000007FF800000000007FF800000000003FF000000000003FF000000000001FE00000000
+0001FE000000000000FC000000000000FC00000000000078000000000000780000000000
+00F8000000000000F0000000000001F0000000000001E00000001F0003E00000003F8003
+C00000007FC007C0000000FFE00780000000FFE00F80000000FFE00F00000000FFE01F00
+000000FFE03E00000000FFC07C000000007FC1F8000000007F07F0000000003FFFE00000
+00001FFFC00000000007FF000000000001FC000000000036407EAB3B>121
D<1FFFFFFFFF801FFFFFFFFF801FFFFFFFFF801FFFFFFFFF801FFC001FFF001FE0003FFE
001FC0003FFE001F80007FFC001F0000FFF8003F0001FFF0003E0001FFF0003E0003FFE0
003E0007FFC0003C000FFF80003C000FFF80003C001FFF00003C003FFE00003C007FFC00
@@ -2994,17 +3031,17 @@ FFC00003FC7F800007FC3F000007FC00000007FC00000007F800000007F80000000FF800
800000003F000000007C00000000F800000000F000000001E000000003C0000000078000
00000F00000C001E00000C003C00000C0038000018007000001800E000001801C0000018
038000003807000000300E000000701FFFFFFFF01FFFFFFFF03FFFFFFFF07FFFFFFFF0FF
-FFFFFFE0FFFFFFFFE0FFFFFFFFE026427BC131>I<000007FC0000003FFF000000FFFFC0
-0003FC03E00007E000F0001FC00038003F000058007E0001FC00FE0003FC00FC0007FC01
-F80007FC03F00007FC03F00007FC07E00003F80FE00001F00FE00000001FC00000001FC0
-0000001FC00000003F800000003F800000003F800000007F800000007F800000007F007F
-80007F01FFF0007F0780FC00FF0E003E00FF1C001F80FF38000FC0FF700007E0FF600007
-E0FFE00003F0FFC00003F8FFC00001F8FFC00001FCFF800001FCFF800000FEFF800000FE
-FF800000FEFF000000FFFF000000FFFF000000FFFF000000FF7F000000FF7F000000FF7F
-000000FF7F000000FF7F000000FF7F800000FF3F800000FF3F800000FF3F800000FE1F80
-0000FE1F800001FE1FC00001FC0FC00001FC0FC00003F807E00003F807E00007F003F000
-07E001F8000FC000FC001F80007E003F00003F80FE00000FFFF8000003FFE0000000FF80
-0028447CC131>54 D<000FFFFFFE000FFFFFFE000FFFFFFE000003FF80000001FF000000
+FFFFFFE0FFFFFFFFE0FFFFFFFFE026427BC131>I<0000FF00000007FFE000001FFFF800
+007F00FE0000FC003F0001F0001F8003E0000FC003C00007E007C00003F00F800001F00F
+800001F00F000001F81F000000F81F000000F81F000000F81F000000F81F800000F81F80
+0000F81FC00001F81FC00001F01FE00001F00FF00003E00FFC0003E007FE0007C007FF80
+0F8003FFC01F0001FFF03E0001FFF87800007FFEF000003FFFC000001FFFC0000007FFE0
+000003FFF8000007FFFC00001E7FFF00007C1FFF8000F80FFFC001E003FFE003C001FFF0
+07C0007FF80F80003FFC1F00000FFC3E000007FE3E000001FE7C000000FE7C000000FF7C
+0000007FF80000003FF80000003FF80000001FF80000001FF80000001FF80000001FF800
+00001FFC0000001E7C0000003E7C0000003E7E0000003C3E0000007C1F000000F81F8000
+01F00FC00003E007E00007C003F8001F8000FF00FF00003FFFFC00000FFFF0000001FF80
+0028447CC131>56 D<000FFFFFFE000FFFFFFE000FFFFFFE000003FF80000001FF000000
00FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000
FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF
00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00
@@ -3346,7 +3383,7 @@ ifelse
%%Page: 1 1
TeXDict begin 1 0 bop 1038 872 a Fh(T)-11 b(oprammer)45
b(-)g(Dev)l(elop)t(ers)h(guide)1583 1307 y Fg(Jan)m(uary)33
-b(16,)f(2011)515 1659 y Ff(1)131 b(De\034nitions)515
+b(18,)f(2011)515 1659 y Ff(1)131 b(De\034nitions)515
1841 y Fe(DUT)42 b Fd(Device)19 b(Under)f(T)-7 b(est.)34
b(The)18 b(device)h(put)g(in)n(to)f(the)h(ZIF)f(so)r(c)n(k)n(et)f(of)i
(the)g(programmer)515 2004 y Fe(VPP)42 b Fd(Programming)26
@@ -3378,66 +3415,68 @@ y Fd(Reads)27 b(the)h(programmer)d(iden)n(ti\034cation)i(and)g(v)n
(ersioning)f(string)h(and)g(returns)g(it.)1926 5255 y(1)p
eop end
%%Page: 2 2
-TeXDict begin 2 1 bop 515 523 a Fb(3.2)112 b(getBu\033erRegSize\(\))515
-676 y Fd(Returns)27 b(the)h(size)f(of)h(the)g(\020bu\033er)f
-(register\021.)515 909 y Fb(3.3)112 b
-(cmdReadBu\033erReg\(nrBytes=all\))515 1062 y Fd(Reads)31
-b(the)h(\020bu\033er)g(register\021)37 b(from)31 b(the)h(micro)r(con)n
-(troller.)47 b(That)32 b(register)e(is)i(used)g(for)515
-1162 y(bu\033ering)g(of)g(data)g(fetc)n(hed)h(from)f(the)g(FPGA.)i(If)f
-(nrBytes)e(is)h(not)h(sp)r(eci\034ed,)g(it)g(reads)515
-1261 y(the)28 b(whole)f(register.)515 1494 y Fb(3.4)112
-b(cmdReadBu\033erReg8\(\))515 1647 y Fd(Same)26 b(as)h
-(cmdReadBu\033erReg\(\),)f(but)i(just)f(returns)g(a)f(8bit)h(in)n(t)g
-(whic)n(h)g(w)n(as)f(formed)g(b)n(y)515 1746 y(the)i(\034rst)f(1)g(b)n
-(yte)h(of)f(the)h(register.)515 1979 y Fb(3.5)112 b
-(cmdReadBu\033erReg16\(\))515 2132 y Fd(Same)33 b(as)g
-(cmdReadBu\033erReg\(\),)h(but)g(just)g(returns)f(a)g(16bit)g(in)n(t)h
-(whic)n(h)f(w)n(as)f(formed)515 2232 y(b)n(y)27 b(the)h(\034rst)f(2)g
-(b)n(ytes)h(of)f(the)h(register)e(\(little)j(endian\).)515
-2464 y Fb(3.6)112 b(cmdReadBu\033erReg32\(\))515 2617
+TeXDict begin 2 1 bop 515 523 a Fb(3.2)112 b(getOscillatorHz\(\))515
+676 y Fd(Returns)26 b(the)g(frequency)g(\(in)g(Hz\))h(of)f(the)h
+(oscillator)d(connected)i(to)g(the)g(FPGA)i(clk)e(pin.)515
+905 y Fb(3.3)112 b(getBu\033erRegSize\(\))515 1058 y
+Fd(Returns)27 b(the)h(size)f(of)h(the)g(\020bu\033er)f(register\021.)
+515 1286 y Fb(3.4)112 b(cmdReadBu\033erReg\(nrBytes=all\))515
+1439 y Fd(Reads)31 b(the)h(\020bu\033er)g(register\021)37
+b(from)31 b(the)h(micro)r(con)n(troller.)47 b(That)32
+b(register)e(is)i(used)g(for)515 1539 y(bu\033ering)g(of)g(data)g(fetc)
+n(hed)h(from)f(the)g(FPGA.)i(If)f(nrBytes)e(is)h(not)h(sp)r(eci\034ed,)
+g(it)g(reads)515 1638 y(the)28 b(whole)f(register.)515
+1867 y Fb(3.5)112 b(cmdReadBu\033erReg8\(\))515 2020
+y Fd(Same)26 b(as)h(cmdReadBu\033erReg\(\),)f(but)i(just)f(returns)g(a)
+f(8bit)h(in)n(t)g(whic)n(h)g(w)n(as)f(formed)g(b)n(y)515
+2120 y(the)i(\034rst)f(1)g(b)n(yte)h(of)f(the)h(register.)515
+2348 y Fb(3.6)112 b(cmdReadBu\033erReg16\(\))515 2501
y Fd(Same)33 b(as)g(cmdReadBu\033erReg\(\),)h(but)g(just)g(returns)f(a)
-g(32bit)g(in)n(t)h(whic)n(h)f(w)n(as)f(formed)515 2717
-y(b)n(y)27 b(the)h(\034rst)f(4)g(b)n(ytes)h(of)f(the)h(register)e
-(\(little)j(endian\).)515 2949 y Fb(3.7)112 b(cmdReadBu\033erReg48\(\))
-515 3102 y Fd(Same)33 b(as)g(cmdReadBu\033erReg\(\),)h(but)g(just)g
+g(16bit)g(in)n(t)h(whic)n(h)f(w)n(as)f(formed)515 2601
+y(b)n(y)27 b(the)h(\034rst)f(2)g(b)n(ytes)h(of)f(the)h(register)e
+(\(little)j(endian\).)515 2829 y Fb(3.7)112 b(cmdReadBu\033erReg32\(\))
+515 2982 y Fd(Same)33 b(as)g(cmdReadBu\033erReg\(\),)h(but)g(just)g
+(returns)f(a)g(32bit)g(in)n(t)h(whic)n(h)f(w)n(as)f(formed)515
+3082 y(b)n(y)27 b(the)h(\034rst)f(4)g(b)n(ytes)h(of)f(the)h(register)e
+(\(little)j(endian\).)515 3310 y Fb(3.8)112 b(cmdReadBu\033erReg48\(\))
+515 3463 y Fd(Same)33 b(as)g(cmdReadBu\033erReg\(\),)h(but)g(just)g
(returns)f(a)g(48bit)g(in)n(t)h(whic)n(h)f(w)n(as)f(formed)515
-3202 y(b)n(y)27 b(the)h(\034rst)f(6)g(b)n(ytes)h(of)f(the)h(register)e
-(\(little)j(endian\).)515 3434 y Fb(3.8)112 b(cmdSetVPPV)-9
-b(oltage\(v)m(oltage\))515 3588 y Fd(Set)30 b(VPP)i(\(programming)c(v)n
+3563 y(b)n(y)27 b(the)h(\034rst)f(6)g(b)n(ytes)h(of)f(the)h(register)e
+(\(little)j(endian\).)515 3791 y Fb(3.9)112 b(cmdSetVPPV)-9
+b(oltage\(v)m(oltage\))515 3944 y Fd(Set)30 b(VPP)i(\(programming)c(v)n
(oltage\))h(to)h(the)g(sp)r(eci\034ed)h(v)n(oltage.)43
-b(V)-7 b(oltage)29 b(is)h(a)g(\035oating)515 3687 y(p)r(oin)n(t)d(n)n
-(um)n(b)r(er.)515 3920 y Fb(3.9)112 b(cmdSetV)m(CCXV)-9
-b(oltage\(v)m(oltage\))515 4073 y Fd(Set)28 b(V)n(CCX)g(\(DUT)g(supply)
+b(V)-7 b(oltage)29 b(is)h(a)g(\035oating)515 4044 y(p)r(oin)n(t)d(n)n
+(um)n(b)r(er.)515 4272 y Fb(3.10)112 b(cmdSetV)m(CCXV)-9
+b(oltage\(v)m(oltage\))515 4425 y Fd(Set)28 b(V)n(CCX)g(\(DUT)g(supply)
g(v)n(oltage\))e(to)h(the)h(sp)r(eci\034ed)g(v)n(oltage.)35
-b(V)-7 b(oltage)27 b(is)h(a)f(\035oating)515 4173 y(p)r(oin)n(t)g(n)n
-(um)n(b)r(er.)515 4405 y Fb(3.10)112 b(cmdLoadGNDLa)m(y)m(out\(la)m(y)m
-(outID\))515 4558 y Fd(Load)33 b(a)i(ZIF-so)r(c)n(k)n(et)e(GND-la)n(y)n
+b(V)-7 b(oltage)27 b(is)h(a)f(\035oating)515 4525 y(p)r(oin)n(t)g(n)n
+(um)n(b)r(er.)515 4753 y Fb(3.11)112 b(cmdLoadGNDLa)m(y)m(out\(la)m(y)m
+(outID\))515 4907 y Fd(Load)33 b(a)i(ZIF-so)r(c)n(k)n(et)e(GND-la)n(y)n
(out.)57 b(Y)-7 b(ou)35 b(usually)f(don't)h(w)n(an)n(t)f(to)g(call)g
-(this)h(directly)-7 b(.)515 4658 y(Use)27 b(an)h(autogenerated)d(la)n
+(this)h(directly)-7 b(.)515 5006 y(Use)27 b(an)h(autogenerated)d(la)n
(y)n(out)i(instead.)1926 5255 y(2)p eop end
%%Page: 3 3
-TeXDict begin 3 2 bop 515 523 a Fb(3.11)112 b(cmdLoadVPPLa)m(y)m
+TeXDict begin 3 2 bop 515 523 a Fb(3.12)112 b(cmdLoadVPPLa)m(y)m
(out\(la)m(y)m(outID\))515 676 y Fd(Load)35 b(a)g(ZIF-so)r(c)n(k)n(et)f
(VPP-la)n(y)n(out.)62 b(Y)-7 b(ou)36 b(usually)f(don't)h(w)n(an)n(t)f
(to)h(call)f(this)h(directly)-7 b(.)515 776 y(Use)27
b(an)h(autogenerated)d(la)n(y)n(out)i(instead.)515 1008
-y Fb(3.12)112 b(cmdLoadV)m(CCXLa)m(y)m(out\(la)m(y)m(outID\))515
+y Fb(3.13)112 b(cmdLoadV)m(CCXLa)m(y)m(out\(la)m(y)m(outID\))515
1162 y Fd(Load)34 b(a)h(ZIF-so)r(c)n(k)n(et)f(V)n(CC-la)n(y)n(out.)59
b(Y)-7 b(ou)36 b(usually)f(don't)g(w)n(an)n(t)g(to)g(call)g(this)h
(directly)-7 b(.)515 1261 y(Use)27 b(an)h(autogenerated)d(la)n(y)n(out)
-i(instead.)515 1494 y Fb(3.13)112 b(cmdEnableZifPullups\(enable\))515
+i(instead.)515 1494 y Fb(3.14)112 b(cmdEnableZifPullups\(enable\))515
1647 y Fd(Enable)32 b(\(T)-7 b(rue\))33 b(or)f(disable)g(\(F)-7
b(alse\))32 b(the)h(pullups)g(for)f(all)g(signals)f(on)h(the)h(ZIF)f
(so)r(c)n(k)n(et.)515 1746 y(Default)c(is)f(disabled.)515
-1979 y Fb(3.14)112 b(cmdFPGA)-12 b(W)j(rite\(address,)35
+1979 y Fb(3.15)112 b(cmdFPGA)-12 b(W)j(rite\(address,)35
b(b)m(yte\))515 2132 y Fd(W)-7 b(rites)30 b(a)h(b)n(yte)f(to)h(the)g
(FPGA)g(using)g(\020address\021)k(for)30 b(address)g(latc)n(hing)g(and)
g(\020b)n(yte\021)37 b(as)515 2232 y(pa)n(yload)26 b(data.)39
b(Note)28 b(that)h(address)e(0x10)f(is)i(fast-trac)n(k)n(ed)f(and)h
(uses)g(one)f(b)n(yte)i(less)e(on)515 2331 y(the)h(USB)g(bus.)36
b(So)28 b(it)g(is)f(p)r(oten)n(tially)g(faster.)515 2564
-y Fb(3.15)112 b(cmdFPGARead\(address\))515 2717 y Fd(Reads)29
+y Fb(3.16)112 b(cmdFPGARead\(address\))515 2717 y Fd(Reads)29
b(a)h(b)n(yte)g(from)f(the)i(FPGA)g(and)f(puts)g(it)g(in)n(to)g(the)h
(bu\033er)f(register.)42 b(\020address\021)35 b(is)515
2816 y(used)21 b(for)g(address)f(latc)n(hing)g(on)h(the)h(FPGA.)h(The)e
@@ -3457,7 +3496,7 @@ b(getBuf-)515 3315 y(ferRegSize\(\))33 b(to)g(get)g(the)g(size)g(of)g
b(that)i(ad-)515 3514 y(dress)38 b(0x10)g(is)i(fast-trac)n(k)n(ed)d
(and)j(uses)f(one)g(b)n(yte)h(less)f(on)g(the)h(USB)g(bus.)73
b(So)39 b(it)h(is)515 3613 y(p)r(oten)n(tially)27 b(faster.)515
-3846 y Fb(3.16)112 b(cmdDela)m(y\(seconds\))515 3999
+3846 y Fb(3.17)112 b(cmdDela)m(y\(seconds\))515 3999
y Fd(Send)41 b(a)f(dela)n(y)f(command)h(to)g(the)h(programmer.)73
b(The)41 b(Programmer)d(will)j(p)r(erform)515 4099 y(the)35
b(dela)n(y)-7 b(.)58 b(A)35 b(v)-5 b(alue)35 b(up)g(to)g(0.5)f(seconds)
@@ -3467,7 +3506,7 @@ r(ossible)f(w)n(ait)g(in)n(terv)-5 b(al)30 b(v)-5 b(alue.)45
b(Use)30 b(this)h(for)f(short)515 4298 y(\(microsecond)g(or)g(lo)n(w)g
(millisecond\))h(dela)n(ys.)47 b(Note)31 b(that)g(this)g(do)r(es)g
(_not_)f(\035ush)i(the)515 4398 y(command)27 b(queue.)515
-4630 y Fb(3.17)112 b(hostDela)m(y\(seconds\))515 4783
+4630 y Fb(3.18)112 b(hostDela)m(y\(seconds\))515 4783
y Fd(Sends)23 b(all)g(queued)g(commands)f(to)h(the)g(device)g(and)g(w)n
(aits)f(for)h(\020seconds\021.)33 b(\020seconds\021)c(is)22
b(a)515 4883 y(\035oating)j(p)r(oin)n(t)h(n)n(um)n(b)r(er.)37
diff --git a/libtoprammer/chip_unitest.py b/libtoprammer/chip_unitest.py
index bec8379..e21f824 100644
--- a/libtoprammer/chip_unitest.py
+++ b/libtoprammer/chip_unitest.py
@@ -141,7 +141,7 @@ class Chip_Unitest(Chip):
return inputs
def getOscFreq(self):
- return 24000000 # Hz
+ return self.top.getOscillatorHz()
def setOscDivider(self, div):
self.top.cmdFPGAWrite(0x12, div & 0xFF)
diff --git a/libtoprammer/toprammer_main.py b/libtoprammer/toprammer_main.py
index e4e91e3..e0aaae3 100644
--- a/libtoprammer/toprammer_main.py
+++ b/libtoprammer/toprammer_main.py
@@ -271,7 +271,7 @@ class TOP:
self.cmdFPGARead(0xFD)
self.cmdFPGARead(0xFE)
self.cmdFPGARead(0xFF)
- data = self.cmdReadBufferReg()
+ data = self.cmdReadBufferReg(3)
gotID = ord(data[0]) | (ord(data[1]) << 8)
if gotID == 0xFEFD or gotID == 0xFFFF:
gotID = 0
@@ -321,6 +321,7 @@ class TOP:
self.printDebug("Reading signature from chip...")
self.checkChip()
sig = self.chip.readSignature()
+ self.flushCommands()
self.printDebug("Done reading %d bytes." % len(sig))
return sig
@@ -329,12 +330,14 @@ class TOP:
self.printDebug("Erasing chip...")
self.checkChip()
self.chip.erase()
+ self.flushCommands()
def testChip(self):
"""Run a unit-test on the chip."""
self.printDebug("Running chip unit-test...")
self.checkChip()
self.chip.test()
+ self.flushCommands()
self.printInfo("Chip unit-test terminated successfully.")
def readProgmem(self):
@@ -342,6 +345,7 @@ class TOP:
self.printDebug("Reading program memory from chip...")
self.checkChip()
image = self.chip.readProgmem()
+ self.flushCommands()
self.printDebug("Done reading %d bytes." % len(image))
return image
@@ -350,6 +354,7 @@ class TOP:
self.printDebug("Writing %d bytes of program memory to chip..." % len(image))
self.checkChip()
self.chip.writeProgmem(image)
+ self.flushCommands()
self.printDebug("Done writing image.")
def readEEPROM(self):
@@ -357,6 +362,7 @@ class TOP:
self.printDebug("Reading EEPROM from chip...")
self.checkChip()
image = self.chip.readEEPROM()
+ self.flushCommands()
self.printDebug("Done reading %d bytes." % len(image))
return image
@@ -365,6 +371,7 @@ class TOP:
self.printDebug("Writing %d bytes of EEPROM to chip..." % len(image))
self.checkChip()
self.chip.writeEEPROM(image)
+ self.flushCommands()
self.printDebug("Done writing image.")
def readFuse(self):
@@ -372,6 +379,7 @@ class TOP:
self.printDebug("Reading fuses from chip...")
self.checkChip()
image = self.chip.readFuse()
+ self.flushCommands()
self.printDebug("Done reading %d bytes." % len(image))
return image
@@ -380,6 +388,7 @@ class TOP:
self.printDebug("Writing %d bytes of fuses to chip..." % len(image))
self.checkChip()
self.chip.writeFuse(image)
+ self.flushCommands()
self.printDebug("Done writing image.")
def readLockbits(self):
@@ -387,6 +396,7 @@ class TOP:
self.printDebug("Reading lock-bits from chip...")
self.checkChip()
image = self.chip.readLockbits()
+ self.flushCommands()
self.printDebug("Done reading %d bytes." % len(image))
return image
@@ -395,6 +405,7 @@ class TOP:
self.printDebug("Writing %d bytes of lock-bits to chip..." % len(image))
self.checkChip()
self.chip.writeLockbits(image)
+ self.flushCommands()
self.printDebug("Done writing image.")
def readRAM(self):
@@ -402,6 +413,7 @@ class TOP:
self.printDebug("Reading RAM from chip...")
self.checkChip()
image = self.chip.readRAM()
+ self.flushCommands()
self.printDebug("Done reading %d bytes." % len(image))
return image
@@ -410,6 +422,7 @@ class TOP:
self.printDebug("Writing %d bytes of RAM to the chip..." % len(image))
self.checkChip()
self.chip.writeRAM(image)
+ self.flushCommands()
self.printDebug("Done writing the image.")
def __cmdDelay_4usec(self):
@@ -440,6 +453,11 @@ class TOP:
self.flushCommands()
time.sleep(seconds)
+ def getOscillatorHz(self):
+ """Returns the FPGA oscillator frequency, in Hz.
+ The oscillator is connected to the FPGA clk pin."""
+ return 24000000
+
def getBufferRegSize(self):
"""Returns the size (in bytes) of the buffer register."""
return 64
@@ -457,32 +475,32 @@ class TOP:
def cmdReadBufferReg8(self):
"""Read a 8bit value from the buffer register."""
- stat = self.cmdReadBufferReg()
+ stat = self.cmdReadBufferReg(1)
stat = ord(stat[0])
return stat
def cmdReadBufferReg16(self):
"""Read a 16bit value from the buffer register."""
- stat = self.cmdReadBufferReg()
+ stat = self.cmdReadBufferReg(2)
stat = ord(stat[0]) | (ord(stat[1]) << 8)
return stat
def cmdReadBufferReg24(self):
"""Read a 24bit value from the buffer register."""
- stat = self.cmdReadBufferReg()
+ stat = self.cmdReadBufferReg(3)
stat = ord(stat[0]) | (ord(stat[1]) << 8) | (ord(stat[2]) << 16)
return stat
def cmdReadBufferReg32(self):
"""Read a 32bit value from the buffer register."""
- stat = self.cmdReadBufferReg()
+ stat = self.cmdReadBufferReg(4)
stat = ord(stat[0]) | (ord(stat[1]) << 8) | \
(ord(stat[2]) << 16) | (ord(stat[3]) << 24)
return stat
def cmdReadBufferReg48(self):
"""Read a 48bit value from the buffer register."""
- stat = self.cmdReadBufferReg()
+ stat = self.cmdReadBufferReg(6)
stat = ord(stat[0]) | (ord(stat[1]) << 8) | \
(ord(stat[2]) << 16) | (ord(stat[3]) << 24) | \
(ord(stat[4]) << 32) | (ord(stat[5]) << 40)
@@ -491,8 +509,8 @@ class TOP:
def cmdRequestVersion(self):
"""Returns the device ID and versioning string."""
self.queueCommand("\x0E\x11\x00\x00")
- data = self.cmdReadBufferReg()
- return data[0:16].strip()
+ data = self.cmdReadBufferReg(16)
+ return data.strip()
def cmdFPGAInitiateConfig(self):
"""Initiate a configuration sequence on the FPGA."""
bues.ch cgit interface