aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorDavid Friedman <dmail@google.com>2014-06-14 00:37:45 -0700
committerAndrew Hsieh <andrewhsieh@google.com>2014-07-17 15:41:27 +0800
commite8ce43ddce2a589f7e8de6b603f23767110970b0 (patch)
tree215106f20a94268a237f693c5987f2ff7e6f96aa /docs
parent426f4ee8a8c3be97122c1a6bf5f58dbd9486bbc9 (diff)
downloadndk-e8ce43ddce2a589f7e8de6b603f23767110970b0.tar.gz
NDK Programmer's Guide; NDK Getting Started
Change-Id: I918162aa0a9c2e18dd4c999ef21465df1b761705
Diffstat (limited to 'docs')
-rw-r--r--docs/Additional library docs/libc/libc/CHANGES.text (renamed from docs/text/system/libc/CHANGES.text)0
-rw-r--r--docs/Additional library docs/libc/libc/OVERVIEW.text (renamed from docs/text/system/libc/OVERVIEW.text)0
-rw-r--r--docs/Additional library docs/libc/libc/SYSV-IPC.text (renamed from docs/text/system/libc/SYSV-IPC.text)0
-rw-r--r--docs/Additional library docs/openmaxal/OpenMAX_AL_1_0_1_Specification.pdf (renamed from docs/openmaxal/OpenMAX_AL_1_0_1_Specification.pdf)bin2127206 -> 2127206 bytes
-rw-r--r--docs/Additional library docs/openmaxal/chart3.png (renamed from docs/openmaxal/chart3.png)bin42576 -> 42576 bytes
-rw-r--r--docs/Additional library docs/openmaxal/chart4.png (renamed from docs/openmaxal/chart4.png)bin8351 -> 8351 bytes
-rw-r--r--docs/Additional library docs/openmaxal/index.html (renamed from docs/openmaxal/index.html)0
-rw-r--r--docs/Additional library docs/opensles/OpenSL_ES_Specification_1.0.1.pdf (renamed from docs/opensles/OpenSL_ES_Specification_1.0.1.pdf)bin4543570 -> 4543570 bytes
-rw-r--r--docs/Additional library docs/opensles/chart1.png (renamed from docs/opensles/chart1.png)bin44772 -> 44772 bytes
-rw-r--r--docs/Additional library docs/opensles/chart2.png (renamed from docs/opensles/chart2.png)bin36428 -> 36428 bytes
-rw-r--r--docs/Additional library docs/opensles/index.html (renamed from docs/opensles/index.html)0
-rw-r--r--docs/Additional library docs/renderscript/RenderScript_8h_source.html (renamed from docs/renderscript/RenderScript_8h_source.html)4
-rw-r--r--docs/Additional library docs/renderscript/annotated.html (renamed from docs/renderscript/annotated.html)0
-rw-r--r--docs/Additional library docs/renderscript/bc_s.png (renamed from docs/renderscript/bc_s.png)bin677 -> 677 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Allocation.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Allocation.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Allocation.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1Allocation.png)bin562 -> 562 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1BaseObj.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1BaseObj.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1BaseObj.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1BaseObj.png)bin6509 -> 6509 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Byte2.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Byte2.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Byte3.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Byte3.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Byte4.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Byte4.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Double2.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Double2.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Double3.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Double3.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Double4.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Double4.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Element.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Element.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Element.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1Element.png)bin544 -> 544 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Element_1_1Builder.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Element_1_1Builder.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1FieldPacker.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1FieldPacker.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Float2.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Float2.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Float3.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Float3.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Float4.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Float4.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Int2.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Int2.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Int3.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Int3.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Int4.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Int4.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Long2.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Long2.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Long3.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Long3.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Long4.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Long4.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1RS.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1RS.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Sampler.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Sampler.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Sampler.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1Sampler.png)bin561 -> 561 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Script.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Script.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Script.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1Script.png)bin5216 -> 5216 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptC.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptC.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptC.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptC.png)bin765 -> 765 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.png)bin4596 -> 4596 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.png)bin1164 -> 1164 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.png)bin1158 -> 1158 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.png)bin1147 -> 1147 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.png)bin1221 -> 1221 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.png)bin1227 -> 1227 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.png)bin1228 -> 1228 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.png)bin1204 -> 1204 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.png)bin1127 -> 1127 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.png)bin1214 -> 1214 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Script_1_1FieldBase.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Script_1_1FieldBase.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Short2.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Short2.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Short3.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Short3.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Short4.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Short4.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Type.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Type.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Type.png (renamed from docs/renderscript/classandroid_1_1RSC_1_1Type.png)bin549 -> 549 bytes
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Type_1_1Builder.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1Type_1_1Builder.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UByte2.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1UByte2.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UByte3.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1UByte3.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UByte4.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1UByte4.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UInt2.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1UInt2.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UInt3.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1UInt3.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UInt4.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1UInt4.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ULong2.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ULong2.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ULong3.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ULong3.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ULong4.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1ULong4.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UShort2.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1UShort2.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UShort3.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1UShort3.html)0
-rw-r--r--docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UShort4.html (renamed from docs/renderscript/classandroid_1_1RSC_1_1UShort4.html)0
-rw-r--r--docs/Additional library docs/renderscript/classes.html (renamed from docs/renderscript/classes.html)0
-rw-r--r--docs/Additional library docs/renderscript/closed.png (renamed from docs/renderscript/closed.png)bin126 -> 126 bytes
-rw-r--r--docs/Additional library docs/renderscript/doxygen.css (renamed from docs/renderscript/doxygen.css)43
-rw-r--r--docs/Additional library docs/renderscript/doxygen.png (renamed from docs/renderscript/doxygen.png)bin3942 -> 3942 bytes
-rw-r--r--docs/Additional library docs/renderscript/files.html (renamed from docs/renderscript/files.html)0
-rw-r--r--docs/Additional library docs/renderscript/functions.html (renamed from docs/renderscript/functions.html)0
-rw-r--r--docs/Additional library docs/renderscript/functions_func.html (renamed from docs/renderscript/functions_func.html)0
-rw-r--r--docs/Additional library docs/renderscript/hierarchy.html (renamed from docs/renderscript/hierarchy.html)0
-rw-r--r--docs/Additional library docs/renderscript/index.html (renamed from docs/renderscript/index.html)0
-rw-r--r--docs/Additional library docs/renderscript/jquery.js (renamed from docs/renderscript/jquery.js)1
-rw-r--r--docs/Additional library docs/renderscript/nav_f.png (renamed from docs/renderscript/nav_f.png)bin159 -> 159 bytes
-rw-r--r--docs/Additional library docs/renderscript/nav_h.png (renamed from docs/renderscript/nav_h.png)bin97 -> 97 bytes
-rw-r--r--docs/Additional library docs/renderscript/open.png (renamed from docs/renderscript/open.png)bin118 -> 118 bytes
-rw-r--r--docs/Additional library docs/renderscript/rsCppStructs_8h_source.html (renamed from docs/renderscript/rsCppStructs_8h_source.html)460
-rw-r--r--docs/Additional library docs/renderscript/tab_a.png (renamed from docs/renderscript/tab_a.png)bin140 -> 140 bytes
-rw-r--r--docs/Additional library docs/renderscript/tab_b.png (renamed from docs/renderscript/tab_b.png)bin178 -> 178 bytes
-rw-r--r--docs/Additional library docs/renderscript/tab_h.png (renamed from docs/renderscript/tab_h.png)bin192 -> 192 bytes
-rw-r--r--docs/Additional library docs/renderscript/tab_s.png (renamed from docs/renderscript/tab_s.png)bin189 -> 189 bytes
-rw-r--r--docs/Additional library docs/renderscript/tabs.css (renamed from docs/renderscript/tabs.css)0
-rw-r--r--docs/Change_Log.html195
-rw-r--r--docs/Getting_Started/html/bc_s.pngbin0 -> 676 bytes
-rw-r--r--docs/Getting_Started/html/bdwn.pngbin0 -> 147 bytes
-rw-r--r--docs/Getting_Started/html/closed.pngbin0 -> 132 bytes
-rw-r--r--docs/Getting_Started/html/doxygen.css1356
-rw-r--r--docs/Getting_Started/html/doxygen.pngbin0 -> 3779 bytes
-rw-r--r--docs/Getting_Started/html/dynsections.js96
-rw-r--r--docs/Getting_Started/html/ftv2blank.pngbin0 -> 86 bytes
-rw-r--r--docs/Getting_Started/html/ftv2cl.pngbin0 -> 453 bytes
-rw-r--r--docs/Getting_Started/html/ftv2doc.pngbin0 -> 746 bytes
-rw-r--r--docs/Getting_Started/html/ftv2folderclosed.pngbin0 -> 616 bytes
-rw-r--r--docs/Getting_Started/html/ftv2folderopen.pngbin0 -> 597 bytes
-rw-r--r--docs/Getting_Started/html/ftv2lastnode.pngbin0 -> 86 bytes
-rw-r--r--docs/Getting_Started/html/ftv2link.pngbin0 -> 746 bytes
-rw-r--r--docs/Getting_Started/html/ftv2mlastnode.pngbin0 -> 246 bytes
-rw-r--r--docs/Getting_Started/html/ftv2mnode.pngbin0 -> 246 bytes
-rw-r--r--docs/Getting_Started/html/ftv2mo.pngbin0 -> 403 bytes
-rw-r--r--docs/Getting_Started/html/ftv2node.pngbin0 -> 86 bytes
-rw-r--r--docs/Getting_Started/html/ftv2ns.pngbin0 -> 388 bytes
-rw-r--r--docs/Getting_Started/html/ftv2plastnode.pngbin0 -> 229 bytes
-rw-r--r--docs/Getting_Started/html/ftv2pnode.pngbin0 -> 229 bytes
-rw-r--r--docs/Getting_Started/html/ftv2splitbar.pngbin0 -> 314 bytes
-rw-r--r--docs/Getting_Started/html/ftv2vertline.pngbin0 -> 86 bytes
-rw-r--r--docs/Getting_Started/html/images/Figure_1.pngbin0 -> 53939 bytes
-rwxr-xr-xdocs/Getting_Started/html/images/Figure_2.pngbin0 -> 148927 bytes
-rwxr-xr-xdocs/Getting_Started/html/images/Figure_3.pngbin0 -> 66920 bytes
-rw-r--r--docs/Getting_Started/html/index.html124
-rw-r--r--docs/Getting_Started/html/jquery.js31
-rwxr-xr-xdocs/Getting_Started/html/menu_Add_Native_Support.pngbin0 -> 148927 bytes
-rw-r--r--docs/Getting_Started/html/nav_f.pngbin0 -> 153 bytes
-rw-r--r--docs/Getting_Started/html/nav_g.pngbin0 -> 95 bytes
-rw-r--r--docs/Getting_Started/html/nav_h.pngbin0 -> 98 bytes
-rw-r--r--docs/Getting_Started/html/open.pngbin0 -> 123 bytes
-rw-r--r--docs/Getting_Started/html/pages.html48
-rw-r--r--docs/Getting_Started/html/sync_off.pngbin0 -> 853 bytes
-rw-r--r--docs/Getting_Started/html/sync_on.pngbin0 -> 845 bytes
-rw-r--r--docs/Getting_Started/html/tab_a.pngbin0 -> 142 bytes
-rw-r--r--docs/Getting_Started/html/tab_b.pngbin0 -> 169 bytes
-rw-r--r--docs/Getting_Started/html/tab_h.pngbin0 -> 177 bytes
-rw-r--r--docs/Getting_Started/html/tab_s.pngbin0 -> 184 bytes
-rw-r--r--docs/Getting_Started/html/tabs.css60
-rw-r--r--docs/Programmers_Guide/html/bc_s.pngbin0 -> 676 bytes
-rw-r--r--docs/Programmers_Guide/html/bdwn.pngbin0 -> 147 bytes
-rw-r--r--docs/Programmers_Guide/html/closed.pngbin0 -> 132 bytes
-rw-r--r--docs/Programmers_Guide/html/doxygen.css1356
-rw-r--r--docs/Programmers_Guide/html/doxygen.pngbin0 -> 3779 bytes
-rw-r--r--docs/Programmers_Guide/html/dynsections.js96
-rw-r--r--docs/Programmers_Guide/html/ftv2blank.pngbin0 -> 86 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2cl.pngbin0 -> 453 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2doc.pngbin0 -> 746 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2folderclosed.pngbin0 -> 616 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2folderopen.pngbin0 -> 597 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2lastnode.pngbin0 -> 86 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2link.pngbin0 -> 746 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2mlastnode.pngbin0 -> 246 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2mnode.pngbin0 -> 246 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2mo.pngbin0 -> 403 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2node.pngbin0 -> 86 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2ns.pngbin0 -> 388 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2plastnode.pngbin0 -> 229 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2pnode.pngbin0 -> 229 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2splitbar.pngbin0 -> 314 bytes
-rw-r--r--docs/Programmers_Guide/html/ftv2vertline.pngbin0 -> 86 bytes
-rw-r--r--docs/Programmers_Guide/html/images/NDK_build_string.pngbin0 -> 73157 bytes
-rw-r--r--docs/Programmers_Guide/html/index.html157
-rw-r--r--docs/Programmers_Guide/html/jquery.js72
-rw-r--r--docs/Programmers_Guide/html/md_1__concepts__concepts.html420
-rw-r--r--docs/Programmers_Guide/html/md_2__samples__samples.html83
-rw-r--r--docs/Programmers_Guide/html/md_2__samples_sample--hellojni.html139
-rw-r--r--docs/Programmers_Guide/html/md_2__samples_sample--nativeactivity.html235
-rw-r--r--docs/Programmers_Guide/html/md_2__samples_samples-teapot.html276
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html180
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__building__chapter_1-section_8__android_8mk.html713
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__building__chapter_1-section_8_ndk-build.html247
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html213
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__building_building.html86
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html127
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html149
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_m_i_p_s.html87
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_x86-64.html88
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_x86.html111
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html477
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__instruction_sets_and__c_p_us.html94
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__debugging__n_d_k-_g_d_b.html162
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__debugging__n_d_k-_s_t_a_c_k.html118
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__debugging_debugging.html78
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html197
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html132
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html238
-rw-r--r--docs/Programmers_Guide/html/md_3__key__topics__libraries_libraries.html83
-rw-r--r--docs/Programmers_Guide/html/md_4__additional__info__a_n_d_r_o_i_d-_a_t_o_m_i_c_s.html92
-rw-r--r--docs/Programmers_Guide/html/md_4__additional__info__additional__info.html95
-rw-r--r--docs/Programmers_Guide/html/md_4__additional__info__i_m_p_o_r_t-_m_o_d_u_l_e.html193
-rw-r--r--docs/Programmers_Guide/html/md_4__additional__info__l_i_c_e_n_s_e_s.html70
-rw-r--r--docs/Programmers_Guide/html/md_4__additional__info__n_d_k-_d_e_p_e_n_d_s.html103
-rw-r--r--docs/Programmers_Guide/html/md_4__additional__info__s_y_s_t_e_m-_i_s_s_u_e_s.html106
-rw-r--r--docs/Programmers_Guide/html/md__t_o_c.html135
-rw-r--r--docs/Programmers_Guide/html/md__t_o_c_new.html91
-rw-r--r--docs/Programmers_Guide/html/nav_f.pngbin0 -> 153 bytes
-rw-r--r--docs/Programmers_Guide/html/nav_g.pngbin0 -> 95 bytes
-rw-r--r--docs/Programmers_Guide/html/nav_h.pngbin0 -> 98 bytes
-rw-r--r--docs/Programmers_Guide/html/navtree.css142
-rw-r--r--docs/Programmers_Guide/html/navtree.js559
-rw-r--r--docs/Programmers_Guide/html/navtreeindex0.js35
-rw-r--r--docs/Programmers_Guide/html/open.pngbin0 -> 123 bytes
-rw-r--r--docs/Programmers_Guide/html/pages.html101
-rw-r--r--docs/Programmers_Guide/html/resize.js91
-rw-r--r--docs/Programmers_Guide/html/sync_off.pngbin0 -> 853 bytes
-rw-r--r--docs/Programmers_Guide/html/sync_on.pngbin0 -> 845 bytes
-rw-r--r--docs/Programmers_Guide/html/tab_a.pngbin0 -> 142 bytes
-rw-r--r--docs/Programmers_Guide/html/tab_b.pngbin0 -> 169 bytes
-rw-r--r--docs/Programmers_Guide/html/tab_h.pngbin0 -> 177 bytes
-rw-r--r--docs/Programmers_Guide/html/tab_s.pngbin0 -> 184 bytes
-rw-r--r--docs/Programmers_Guide/html/tabs.css60
-rw-r--r--docs/Start_Here.html171
-rw-r--r--docs/sidenav.html51
-rw-r--r--docs/text/ANDROID-ATOMICS.text67
-rw-r--r--docs/text/ANDROID-MK.text879
-rw-r--r--docs/text/APPLICATION-MK.text283
-rw-r--r--docs/text/CHANGES.text2860
-rw-r--r--docs/text/CPLUSPLUS-SUPPORT.text302
-rw-r--r--docs/text/CPU-ARCH-ABIS.text402
-rw-r--r--docs/text/CPU-ARM-NEON.text127
-rw-r--r--docs/text/CPU-FEATURES.text196
-rw-r--r--docs/text/CPU-MIPS.text65
-rw-r--r--docs/text/CPU-X86-64.text66
-rw-r--r--docs/text/CPU-X86.text128
-rw-r--r--docs/text/DEVELOPMENT.text295
-rw-r--r--docs/text/HOWTO.text117
-rw-r--r--docs/text/IMPORT-MODULE.text236
-rw-r--r--docs/text/INSTALL.text58
-rw-r--r--docs/text/LICENSES.text11
-rw-r--r--docs/text/NATIVE-ACTIVITY.text132
-rw-r--r--docs/text/NDK-BUILD.text143
-rw-r--r--docs/text/NDK-DEPENDS.text79
-rw-r--r--docs/text/NDK-GDB.text229
-rw-r--r--docs/text/NDK-STACK.text86
-rw-r--r--docs/text/OVERVIEW.text350
-rw-r--r--docs/text/PREBUILTS.text141
-rw-r--r--docs/text/STABLE-APIS.text432
-rw-r--r--docs/text/STANDALONE-TOOLCHAIN.text355
-rw-r--r--docs/text/SYSTEM-ISSUES.text102
-rw-r--r--docs/tools/README67
-rwxr-xr-xdocs/tools/ndk-markdown-substitutions.py238
246 files changed, 10621 insertions, 8752 deletions
diff --git a/docs/text/system/libc/CHANGES.text b/docs/Additional library docs/libc/libc/CHANGES.text
index 4f4bbee4d..4f4bbee4d 100644
--- a/docs/text/system/libc/CHANGES.text
+++ b/docs/Additional library docs/libc/libc/CHANGES.text
diff --git a/docs/text/system/libc/OVERVIEW.text b/docs/Additional library docs/libc/libc/OVERVIEW.text
index d02ae573a..d02ae573a 100644
--- a/docs/text/system/libc/OVERVIEW.text
+++ b/docs/Additional library docs/libc/libc/OVERVIEW.text
diff --git a/docs/text/system/libc/SYSV-IPC.text b/docs/Additional library docs/libc/libc/SYSV-IPC.text
index 0c2584474..0c2584474 100644
--- a/docs/text/system/libc/SYSV-IPC.text
+++ b/docs/Additional library docs/libc/libc/SYSV-IPC.text
diff --git a/docs/openmaxal/OpenMAX_AL_1_0_1_Specification.pdf b/docs/Additional library docs/openmaxal/OpenMAX_AL_1_0_1_Specification.pdf
index a3380fd76..a3380fd76 100644
--- a/docs/openmaxal/OpenMAX_AL_1_0_1_Specification.pdf
+++ b/docs/Additional library docs/openmaxal/OpenMAX_AL_1_0_1_Specification.pdf
Binary files differ
diff --git a/docs/openmaxal/chart3.png b/docs/Additional library docs/openmaxal/chart3.png
index ca596af4d..ca596af4d 100644
--- a/docs/openmaxal/chart3.png
+++ b/docs/Additional library docs/openmaxal/chart3.png
Binary files differ
diff --git a/docs/openmaxal/chart4.png b/docs/Additional library docs/openmaxal/chart4.png
index 51b215955..51b215955 100644
--- a/docs/openmaxal/chart4.png
+++ b/docs/Additional library docs/openmaxal/chart4.png
Binary files differ
diff --git a/docs/openmaxal/index.html b/docs/Additional library docs/openmaxal/index.html
index 2746066d0..2746066d0 100644
--- a/docs/openmaxal/index.html
+++ b/docs/Additional library docs/openmaxal/index.html
diff --git a/docs/opensles/OpenSL_ES_Specification_1.0.1.pdf b/docs/Additional library docs/opensles/OpenSL_ES_Specification_1.0.1.pdf
index fe6b26636..fe6b26636 100644
--- a/docs/opensles/OpenSL_ES_Specification_1.0.1.pdf
+++ b/docs/Additional library docs/opensles/OpenSL_ES_Specification_1.0.1.pdf
Binary files differ
diff --git a/docs/opensles/chart1.png b/docs/Additional library docs/opensles/chart1.png
index 0365466bf..0365466bf 100644
--- a/docs/opensles/chart1.png
+++ b/docs/Additional library docs/opensles/chart1.png
Binary files differ
diff --git a/docs/opensles/chart2.png b/docs/Additional library docs/opensles/chart2.png
index 4e9dca43e..4e9dca43e 100644
--- a/docs/opensles/chart2.png
+++ b/docs/Additional library docs/opensles/chart2.png
Binary files differ
diff --git a/docs/opensles/index.html b/docs/Additional library docs/opensles/index.html
index 66cc73242..66cc73242 100644
--- a/docs/opensles/index.html
+++ b/docs/Additional library docs/opensles/index.html
diff --git a/docs/renderscript/RenderScript_8h_source.html b/docs/Additional library docs/renderscript/RenderScript_8h_source.html
index 3da21a288..73f0d5629 100644
--- a/docs/renderscript/RenderScript_8h_source.html
+++ b/docs/Additional library docs/renderscript/RenderScript_8h_source.html
@@ -41,12 +41,12 @@
<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016
+<a name="l00016"></a>00016
<a name="l00028"></a>00028 <span class="preprocessor">#ifndef ANDROID_RENDERSCRIPT_H</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#define ANDROID_RENDERSCRIPT_H</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span>
<a name="l00031"></a>00031 <span class="preprocessor">#include &quot;rsCppStructs.h&quot;</span>
-<a name="l00032"></a>00032
+<a name="l00032"></a>00032
<a name="l00033"></a>00033 <span class="preprocessor">#ifdef RS_SERVER</span>
<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#define RS_VERSION 19</span>
<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
diff --git a/docs/renderscript/annotated.html b/docs/Additional library docs/renderscript/annotated.html
index ce110cdce..ce110cdce 100644
--- a/docs/renderscript/annotated.html
+++ b/docs/Additional library docs/renderscript/annotated.html
diff --git a/docs/renderscript/bc_s.png b/docs/Additional library docs/renderscript/bc_s.png
index e4018628b..e4018628b 100644
--- a/docs/renderscript/bc_s.png
+++ b/docs/Additional library docs/renderscript/bc_s.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Allocation.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Allocation.html
index 7e8ab3d5c..7e8ab3d5c 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Allocation.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Allocation.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Allocation.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Allocation.png
index dd0b1541f..dd0b1541f 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Allocation.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Allocation.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1BaseObj.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1BaseObj.html
index 7251bf6dc..7251bf6dc 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1BaseObj.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1BaseObj.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1BaseObj.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1BaseObj.png
index 7a52194ad..7a52194ad 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1BaseObj.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1BaseObj.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Byte2.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Byte2.html
index 5cd58cd24..5cd58cd24 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Byte2.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Byte2.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Byte3.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Byte3.html
index f8d1d737f..f8d1d737f 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Byte3.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Byte3.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Byte4.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Byte4.html
index 215b8cc62..215b8cc62 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Byte4.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Byte4.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Double2.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Double2.html
index f416b8e01..f416b8e01 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Double2.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Double2.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Double3.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Double3.html
index d28801e86..d28801e86 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Double3.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Double3.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Double4.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Double4.html
index 0b7d8d93b..0b7d8d93b 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Double4.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Double4.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Element.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Element.html
index 4a6238c1f..4a6238c1f 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Element.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Element.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Element.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Element.png
index 26537bf9b..26537bf9b 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Element.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Element.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Element_1_1Builder.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Element_1_1Builder.html
index 763d54b5f..763d54b5f 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Element_1_1Builder.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Element_1_1Builder.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1FieldPacker.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1FieldPacker.html
index db9b03b1a..db9b03b1a 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1FieldPacker.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1FieldPacker.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Float2.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Float2.html
index de2d00bed..de2d00bed 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Float2.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Float2.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Float3.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Float3.html
index 0c81b01fb..0c81b01fb 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Float3.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Float3.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Float4.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Float4.html
index da35348fa..da35348fa 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Float4.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Float4.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Int2.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Int2.html
index 6ef475379..6ef475379 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Int2.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Int2.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Int3.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Int3.html
index aa6e46d9e..aa6e46d9e 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Int3.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Int3.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Int4.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Int4.html
index 093bc23ee..093bc23ee 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Int4.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Int4.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Long2.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Long2.html
index a73f626a7..a73f626a7 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Long2.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Long2.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Long3.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Long3.html
index 0e9067aed..0e9067aed 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Long3.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Long3.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Long4.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Long4.html
index 2b94f8e61..2b94f8e61 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Long4.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Long4.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1RS.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1RS.html
index 059e5d70a..059e5d70a 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1RS.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1RS.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Sampler.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Sampler.html
index 7a3c191dc..7a3c191dc 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Sampler.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Sampler.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Sampler.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Sampler.png
index 7172cc31b..7172cc31b 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Sampler.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Sampler.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Script.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Script.html
index 7fea34a36..7fea34a36 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Script.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Script.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Script.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Script.png
index 2e1895dcc..2e1895dcc 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Script.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Script.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptC.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptC.html
index b8f764612..b8f764612 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptC.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptC.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptC.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptC.png
index 5e563155e..5e563155e 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptC.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptC.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.html
index e3109df12..e3109df12 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.png
index 652af9960..652af9960 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html
index 589b89135..589b89135 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.png
index ce869bbee..ce869bbee 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.html
index e47b1ec74..e47b1ec74 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.png
index eb027b980..eb027b980 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlend.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.html
index cf05c3344..cf05c3344 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.png
index aeba27537..aeba27537 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicBlur.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html
index 120bc9f17..120bc9f17 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.png
index 50d4a88ba..50d4a88ba 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.html
index a8a1dca1d..a8a1dca1d 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.png
index 0303d9b9f..0303d9b9f 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.html
index 4f7973fc9..4f7973fc9 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.png
index 40900a097..40900a097 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.html
index 38be5770d..38be5770d 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.png
index f5f4bfd25..f5f4bfd25 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html
index 1f0228405..1f0228405 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.png
index 94d8aa43f..94d8aa43f 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicLUT.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html
index 3c173db56..3c173db56 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.png
index 030914efb..030914efb 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Script_1_1FieldBase.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Script_1_1FieldBase.html
index 18f1e6387..18f1e6387 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Script_1_1FieldBase.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Script_1_1FieldBase.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Short2.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Short2.html
index e0d0236af..e0d0236af 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Short2.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Short2.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Short3.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Short3.html
index 402c83119..402c83119 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Short3.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Short3.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Short4.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Short4.html
index 28edccb3c..28edccb3c 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Short4.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Short4.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Type.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Type.html
index 13ad0a815..13ad0a815 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Type.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Type.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Type.png b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Type.png
index 302de05d4..302de05d4 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Type.png
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Type.png
Binary files differ
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1Type_1_1Builder.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Type_1_1Builder.html
index 916418166..916418166 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1Type_1_1Builder.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1Type_1_1Builder.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1UByte2.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UByte2.html
index 3e4340e1a..3e4340e1a 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1UByte2.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UByte2.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1UByte3.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UByte3.html
index 7581e5171..7581e5171 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1UByte3.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UByte3.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1UByte4.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UByte4.html
index 914691f9f..914691f9f 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1UByte4.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UByte4.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1UInt2.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UInt2.html
index c584e3f63..c584e3f63 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1UInt2.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UInt2.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1UInt3.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UInt3.html
index fa5b88078..fa5b88078 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1UInt3.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UInt3.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1UInt4.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UInt4.html
index 2789e77e6..2789e77e6 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1UInt4.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UInt4.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ULong2.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ULong2.html
index 18c79ab1a..18c79ab1a 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ULong2.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ULong2.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ULong3.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ULong3.html
index 636c4dd73..636c4dd73 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ULong3.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ULong3.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1ULong4.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ULong4.html
index 4a90b9a33..4a90b9a33 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1ULong4.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1ULong4.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1UShort2.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UShort2.html
index ffde43a5a..ffde43a5a 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1UShort2.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UShort2.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1UShort3.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UShort3.html
index a17d43b23..a17d43b23 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1UShort3.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UShort3.html
diff --git a/docs/renderscript/classandroid_1_1RSC_1_1UShort4.html b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UShort4.html
index a6e0ff0b7..a6e0ff0b7 100644
--- a/docs/renderscript/classandroid_1_1RSC_1_1UShort4.html
+++ b/docs/Additional library docs/renderscript/classandroid_1_1RSC_1_1UShort4.html
diff --git a/docs/renderscript/classes.html b/docs/Additional library docs/renderscript/classes.html
index 6d2100f9f..6d2100f9f 100644
--- a/docs/renderscript/classes.html
+++ b/docs/Additional library docs/renderscript/classes.html
diff --git a/docs/renderscript/closed.png b/docs/Additional library docs/renderscript/closed.png
index b7d4bd9fe..b7d4bd9fe 100644
--- a/docs/renderscript/closed.png
+++ b/docs/Additional library docs/renderscript/closed.png
Binary files differ
diff --git a/docs/renderscript/doxygen.css b/docs/Additional library docs/renderscript/doxygen.css
index 22c7b5c10..dcd0fa530 100644
--- a/docs/renderscript/doxygen.css
+++ b/docs/Additional library docs/renderscript/doxygen.css
@@ -216,7 +216,7 @@ p.formulaDsp {
}
img.formulaDsp {
-
+
}
img.formulaInl {
@@ -274,20 +274,20 @@ span.charliteral {
color: #008080
}
-span.vhdldigit {
- color: #ff00ff
+span.vhdldigit {
+ color: #ff00ff
}
-span.vhdlchar {
- color: #000000
+span.vhdlchar {
+ color: #000000
}
-span.vhdlkeyword {
- color: #700070
+span.vhdlkeyword {
+ color: #700070
}
-span.vhdllogic {
- color: #ff0000
+span.vhdllogic {
+ color: #ff0000
}
/* @end */
@@ -439,9 +439,9 @@ table.memberdecls {
}
.memdoc, dl.reflist dd {
- border-bottom: 1px solid #A8B8D9;
- border-left: 1px solid #A8B8D9;
- border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
padding: 2px 5px;
background-color: #FBFCFD;
border-top-width: 0;
@@ -488,18 +488,18 @@ dl.reflist dd {
.params, .retval, .exception, .tparams {
border-spacing: 6px 2px;
-}
+}
.params .paramname, .retval .paramname {
font-weight: bold;
vertical-align: top;
}
-
+
.params .paramtype {
font-style: italic;
vertical-align: top;
-}
-
+}
+
.params .paramdir {
font-family: "courier new",courier,monospace;
vertical-align: top;
@@ -751,7 +751,7 @@ div.summary
padding-right: 5px;
width: 50%;
text-align: right;
-}
+}
div.summary a
{
@@ -838,19 +838,19 @@ dl.bug
vertical-align: bottom;
border-collapse: separate;
}
-
+
#projectlogo img
-{
+{
border: 0px none;
}
-
+
#projectname
{
font: 300% Tahoma, Arial,sans-serif;
margin: 0px;
padding: 2px 0px;
}
-
+
#projectbrief
{
font: 120% Tahoma, Arial,sans-serif;
@@ -943,4 +943,3 @@ dl.citelist dd {
word-wrap: break-word; /* IE 5.5+ */
}
}
-
diff --git a/docs/renderscript/doxygen.png b/docs/Additional library docs/renderscript/doxygen.png
index 635ed52fc..635ed52fc 100644
--- a/docs/renderscript/doxygen.png
+++ b/docs/Additional library docs/renderscript/doxygen.png
Binary files differ
diff --git a/docs/renderscript/files.html b/docs/Additional library docs/renderscript/files.html
index 571193faa..571193faa 100644
--- a/docs/renderscript/files.html
+++ b/docs/Additional library docs/renderscript/files.html
diff --git a/docs/renderscript/functions.html b/docs/Additional library docs/renderscript/functions.html
index 922971326..922971326 100644
--- a/docs/renderscript/functions.html
+++ b/docs/Additional library docs/renderscript/functions.html
diff --git a/docs/renderscript/functions_func.html b/docs/Additional library docs/renderscript/functions_func.html
index 89b8ba50d..89b8ba50d 100644
--- a/docs/renderscript/functions_func.html
+++ b/docs/Additional library docs/renderscript/functions_func.html
diff --git a/docs/renderscript/hierarchy.html b/docs/Additional library docs/renderscript/hierarchy.html
index f7da54847..f7da54847 100644
--- a/docs/renderscript/hierarchy.html
+++ b/docs/Additional library docs/renderscript/hierarchy.html
diff --git a/docs/renderscript/index.html b/docs/Additional library docs/renderscript/index.html
index e3558b431..e3558b431 100644
--- a/docs/renderscript/index.html
+++ b/docs/Additional library docs/renderscript/index.html
diff --git a/docs/renderscript/jquery.js b/docs/Additional library docs/renderscript/jquery.js
index c052173a8..47aa27982 100644
--- a/docs/renderscript/jquery.js
+++ b/docs/Additional library docs/renderscript/jquery.js
@@ -51,4 +51,3 @@ jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.bro
* @version 1.3.2
*/
;(function($){var o=$.scrollTo=function(a,b,c){o.window().scrollTo(a,b,c)};o.defaults={axis:'y',duration:1};o.window=function(){return $($.browser.safari?'body':'html')};$.fn.scrollTo=function(l,m,n){if(typeof m=='object'){n=m;m=0}n=$.extend({},o.defaults,n);m=m||n.speed||n.duration;n.queue=n.queue&&n.axis.length>1;if(n.queue)m/=2;n.offset=j(n.offset);n.over=j(n.over);return this.each(function(){var a=this,b=$(a),t=l,c,d={},w=b.is('html,body');switch(typeof t){case'number':case'string':if(/^([+-]=)?\d+(px)?$/.test(t)){t=j(t);break}t=$(t,this);case'object':if(t.is||t.style)c=(t=$(t)).offset()}$.each(n.axis.split(''),function(i,f){var P=f=='x'?'Left':'Top',p=P.toLowerCase(),k='scroll'+P,e=a[k],D=f=='x'?'Width':'Height';if(c){d[k]=c[p]+(w?0:e-b.offset()[p]);if(n.margin){d[k]-=parseInt(t.css('margin'+P))||0;d[k]-=parseInt(t.css('border'+P+'Width'))||0}d[k]+=n.offset[p]||0;if(n.over[p])d[k]+=t[D.toLowerCase()]()*n.over[p]}else d[k]=t[p];if(/^\d+$/.test(d[k]))d[k]=d[k]<=0?0:Math.min(d[k],h(D));if(!i&&n.queue){if(e!=d[k])g(n.onAfterFirst);delete d[k]}});g(n.onAfter);function g(a){b.animate(d,m,n.easing,a&&function(){a.call(this,l)})};function h(D){var b=w?$.browser.opera?document.body:document.documentElement:a;return b['scroll'+D]-b['client'+D]}})};function j(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
-
diff --git a/docs/renderscript/nav_f.png b/docs/Additional library docs/renderscript/nav_f.png
index 1b07a1620..1b07a1620 100644
--- a/docs/renderscript/nav_f.png
+++ b/docs/Additional library docs/renderscript/nav_f.png
Binary files differ
diff --git a/docs/renderscript/nav_h.png b/docs/Additional library docs/renderscript/nav_h.png
index 01f5fa6a5..01f5fa6a5 100644
--- a/docs/renderscript/nav_h.png
+++ b/docs/Additional library docs/renderscript/nav_h.png
Binary files differ
diff --git a/docs/renderscript/open.png b/docs/Additional library docs/renderscript/open.png
index 7b35d2c2c..7b35d2c2c 100644
--- a/docs/renderscript/open.png
+++ b/docs/Additional library docs/renderscript/open.png
Binary files differ
diff --git a/docs/renderscript/rsCppStructs_8h_source.html b/docs/Additional library docs/renderscript/rsCppStructs_8h_source.html
index a1617d6cb..789304ad4 100644
--- a/docs/renderscript/rsCppStructs_8h_source.html
+++ b/docs/Additional library docs/renderscript/rsCppStructs_8h_source.html
@@ -41,25 +41,25 @@
<a name="l00013"></a>00013 <span class="comment"> * See the License for the specific language governing permissions and</span>
<a name="l00014"></a>00014 <span class="comment"> * limitations under the License.</span>
<a name="l00015"></a>00015 <span class="comment"> */</span>
-<a name="l00016"></a>00016
+<a name="l00016"></a>00016
<a name="l00017"></a>00017 <span class="preprocessor">#ifndef ANDROID_RSCPPSTRUCTS_H</span>
<a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define ANDROID_RSCPPSTRUCTS_H</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span>
<a name="l00020"></a>00020 <span class="preprocessor">#include &quot;rsDefines.h&quot;</span>
<a name="l00021"></a>00021 <span class="preprocessor">#include &quot;util/RefBase.h&quot;</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include &quot;rsDispatch.h&quot;</span>
-<a name="l00023"></a>00023
+<a name="l00023"></a>00023
<a name="l00024"></a>00024 <span class="preprocessor">#include &lt;vector&gt;</span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;string&gt;</span>
-<a name="l00026"></a>00026
+<a name="l00026"></a>00026
<a name="l00031"></a>00031 <span class="preprocessor">#define RS_CPU_ALLOCATION_ALIGNMENT 16</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span>
<a name="l00033"></a>00033 <span class="keyword">namespace </span>android {
<a name="l00034"></a>00034 <span class="keyword">namespace </span>RSC {
-<a name="l00035"></a>00035
+<a name="l00035"></a>00035
<a name="l00036"></a>00036 <span class="keyword">typedef</span> void (*ErrorHandlerFunc_t)(uint32_t errorNum, <span class="keyword">const</span> <span class="keywordtype">char</span> *errorText);
<a name="l00037"></a>00037 <span class="keyword">typedef</span> void (*MessageHandlerFunc_t)(uint32_t msgNum, <span class="keyword">const</span> <span class="keywordtype">void</span> *msgData, <span class="keywordtype">size_t</span> msgLen);
-<a name="l00038"></a>00038
+<a name="l00038"></a>00038
<a name="l00039"></a>00039 <span class="keyword">class </span>RS;
<a name="l00040"></a>00040 <span class="keyword">class </span>BaseObj;
<a name="l00041"></a>00041 <span class="keyword">class </span>Element;
@@ -68,79 +68,79 @@
<a name="l00044"></a>00044 <span class="keyword">class </span>Script;
<a name="l00045"></a>00045 <span class="keyword">class </span>ScriptC;
<a name="l00046"></a>00046 <span class="keyword">class </span>Sampler;
-<a name="l00047"></a>00047
+<a name="l00047"></a>00047
<a name="l00053"></a>00053 <span class="keyword">enum</span> RSError {
-<a name="l00054"></a>00054 RS_SUCCESS = 0,
-<a name="l00055"></a>00055 RS_ERROR_INVALID_PARAMETER = 1,
-<a name="l00056"></a>00056 RS_ERROR_RUNTIME_ERROR = 2,
-<a name="l00057"></a>00057
-<a name="l00058"></a>00058 RS_ERROR_INVALID_ELEMENT = 3,
+<a name="l00054"></a>00054 RS_SUCCESS = 0,
+<a name="l00055"></a>00055 RS_ERROR_INVALID_PARAMETER = 1,
+<a name="l00056"></a>00056 RS_ERROR_RUNTIME_ERROR = 2,
+<a name="l00057"></a>00057
+<a name="l00058"></a>00058 RS_ERROR_INVALID_ELEMENT = 3,
<a name="l00059"></a>00059 RS_ERROR_MAX = 9999
-<a name="l00060"></a>00060
+<a name="l00060"></a>00060
<a name="l00061"></a>00061 };
-<a name="l00062"></a>00062
+<a name="l00062"></a>00062
<a name="l00066"></a>00066 <span class="keyword">enum</span> RSYuvFormat {
-<a name="l00067"></a>00067 RS_YUV_NONE = 0,
-<a name="l00068"></a>00068 RS_YUV_YV12 = 1,
-<a name="l00069"></a>00069 RS_YUV_NV21 = 2,
+<a name="l00067"></a>00067 RS_YUV_NONE = 0,
+<a name="l00068"></a>00068 RS_YUV_YV12 = 1,
+<a name="l00069"></a>00069 RS_YUV_NV21 = 2,
<a name="l00070"></a>00070 RS_YUV_MAX = 3
<a name="l00071"></a>00071 };
-<a name="l00072"></a>00072
+<a name="l00072"></a>00072
<a name="l00076"></a>00076 <span class="keyword">enum</span> RSInitFlags {
-<a name="l00077"></a>00077 RS_INIT_SYNCHRONOUS = 1,
-<a name="l00078"></a>00078 RS_INIT_LOW_LATENCY = 2,
+<a name="l00077"></a>00077 RS_INIT_SYNCHRONOUS = 1,
+<a name="l00078"></a>00078 RS_INIT_LOW_LATENCY = 2,
<a name="l00079"></a>00079 RS_INIT_MAX = 4
<a name="l00080"></a>00080 };
-<a name="l00081"></a>00081
+<a name="l00081"></a>00081
<a name="l00085"></a><a class="code" href="classandroid_1_1RSC_1_1RS.html">00085</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1RS.html">RS</a> : <span class="keyword">public</span> android::RSC::LightRefBase&lt;RS&gt; {
-<a name="l00086"></a>00086
+<a name="l00086"></a>00086
<a name="l00087"></a>00087 <span class="keyword">public</span>:
<a name="l00088"></a>00088 <a class="code" href="classandroid_1_1RSC_1_1RS.html">RS</a>();
<a name="l00089"></a>00089 <span class="keyword">virtual</span> ~<a class="code" href="classandroid_1_1RSC_1_1RS.html">RS</a>();
-<a name="l00090"></a>00090
+<a name="l00090"></a>00090
<a name="l00098"></a>00098 <span class="keywordtype">bool</span> <a class="code" href="classandroid_1_1RSC_1_1RS.html#a04fd7161619e7b2ede4e54a14064097f">init</a>(std::string name, uint32_t flags = 0);
-<a name="l00099"></a>00099
+<a name="l00099"></a>00099
<a name="l00106"></a>00106 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1RS.html#a3e91e22835c85d230eba3ff1d20455a5">setErrorHandler</a>(ErrorHandlerFunc_t func);
-<a name="l00107"></a>00107
+<a name="l00107"></a>00107
<a name="l00113"></a><a class="code" href="classandroid_1_1RSC_1_1RS.html#aeb1f7ac6b745b64d56ea07f92d4003b1">00113</a> ErrorHandlerFunc_t <a class="code" href="classandroid_1_1RSC_1_1RS.html#aeb1f7ac6b745b64d56ea07f92d4003b1">getErrorHandler</a>() { <span class="keywordflow">return</span> mErrorFunc; }
-<a name="l00114"></a>00114
+<a name="l00114"></a>00114
<a name="l00121"></a>00121 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1RS.html#a37d0314f4a5f861da12355b4ca5ffee6">setMessageHandler</a>(MessageHandlerFunc_t func);
-<a name="l00122"></a>00122
+<a name="l00122"></a>00122
<a name="l00128"></a><a class="code" href="classandroid_1_1RSC_1_1RS.html#a5f1336fbd31c78a97a7bc9fdeccc6020">00128</a> MessageHandlerFunc_t <a class="code" href="classandroid_1_1RSC_1_1RS.html#a5f1336fbd31c78a97a7bc9fdeccc6020">getMessageHandler</a>() { <span class="keywordflow">return</span> mMessageFunc; }
-<a name="l00129"></a>00129
+<a name="l00129"></a>00129
<a name="l00135"></a>00135 RSError <a class="code" href="classandroid_1_1RSC_1_1RS.html#a44f4660452aee0b1dbd747e383e531be">getError</a>();
-<a name="l00136"></a>00136
+<a name="l00136"></a>00136
<a name="l00141"></a>00141 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1RS.html#aff0d61c3a1fa1432a07dae0db14569c4">finish</a>();
-<a name="l00142"></a>00142
+<a name="l00142"></a>00142
<a name="l00143"></a>00143 RsContext getContext() { <span class="keywordflow">return</span> mContext; }
<a name="l00144"></a>00144 <span class="keywordtype">void</span> throwError(RSError error, <span class="keyword">const</span> <span class="keywordtype">char</span> *errMsg);
-<a name="l00145"></a>00145
+<a name="l00145"></a>00145
<a name="l00146"></a>00146 <span class="keyword">static</span> dispatchTable* dispatch;
-<a name="l00147"></a>00147
+<a name="l00147"></a>00147
<a name="l00148"></a>00148 <span class="keyword">private</span>:
<a name="l00149"></a>00149 <span class="keyword">static</span> <span class="keywordtype">bool</span> usingNative;
<a name="l00150"></a>00150 <span class="keyword">static</span> <span class="keywordtype">bool</span> initDispatch(<span class="keywordtype">int</span> targetApi);
-<a name="l00151"></a>00151
+<a name="l00151"></a>00151
<a name="l00152"></a>00152 <span class="keywordtype">bool</span> <a class="code" href="classandroid_1_1RSC_1_1RS.html#a04fd7161619e7b2ede4e54a14064097f">init</a>(std::string &amp;name, <span class="keywordtype">int</span> targetApi, uint32_t flags);
<a name="l00153"></a>00153 <span class="keyword">static</span> <span class="keywordtype">void</span> * threadProc(<span class="keywordtype">void</span> *);
-<a name="l00154"></a>00154
+<a name="l00154"></a>00154
<a name="l00155"></a>00155 <span class="keyword">static</span> <span class="keywordtype">bool</span> gInitialized;
<a name="l00156"></a>00156 <span class="keyword">static</span> pthread_mutex_t gInitMutex;
-<a name="l00157"></a>00157
+<a name="l00157"></a>00157
<a name="l00158"></a>00158 pthread_t mMessageThreadId;
<a name="l00159"></a>00159 pid_t mNativeMessageThreadId;
<a name="l00160"></a>00160 <span class="keywordtype">bool</span> mMessageRun;
-<a name="l00161"></a>00161
+<a name="l00161"></a>00161
<a name="l00162"></a>00162 RsDevice mDev;
<a name="l00163"></a>00163 RsContext mContext;
<a name="l00164"></a>00164 RSError mCurrentError;
-<a name="l00165"></a>00165
+<a name="l00165"></a>00165
<a name="l00166"></a>00166 ErrorHandlerFunc_t mErrorFunc;
<a name="l00167"></a>00167 MessageHandlerFunc_t mMessageFunc;
<a name="l00168"></a>00168 <span class="keywordtype">bool</span> mInit;
-<a name="l00169"></a>00169
+<a name="l00169"></a>00169
<a name="l00170"></a>00170 std::string mCacheDir;
-<a name="l00171"></a>00171
+<a name="l00171"></a>00171
<a name="l00172"></a>00172 <span class="keyword">struct </span>{
<a name="l00173"></a>00173 sp&lt;const Element&gt; U8;
<a name="l00174"></a>00174 sp&lt;const Element&gt; U8_2;
@@ -183,7 +183,7 @@
<a name="l00211"></a>00211 sp&lt;const Element&gt; F64_3;
<a name="l00212"></a>00212 sp&lt;const Element&gt; F64_4;
<a name="l00213"></a>00213 sp&lt;const Element&gt; BOOLEAN;
-<a name="l00214"></a>00214
+<a name="l00214"></a>00214
<a name="l00215"></a>00215 sp&lt;const Element&gt; ELEMENT;
<a name="l00216"></a>00216 sp&lt;const Element&gt; TYPE;
<a name="l00217"></a>00217 sp&lt;const Element&gt; ALLOCATION;
@@ -194,21 +194,21 @@
<a name="l00222"></a>00222 sp&lt;const Element&gt; PROGRAM_VERTEX;
<a name="l00223"></a>00223 sp&lt;const Element&gt; PROGRAM_RASTER;
<a name="l00224"></a>00224 sp&lt;const Element&gt; PROGRAM_STORE;
-<a name="l00225"></a>00225
+<a name="l00225"></a>00225
<a name="l00226"></a>00226 sp&lt;const Element&gt; A_8;
<a name="l00227"></a>00227 sp&lt;const Element&gt; RGB_565;
<a name="l00228"></a>00228 sp&lt;const Element&gt; RGB_888;
<a name="l00229"></a>00229 sp&lt;const Element&gt; RGBA_5551;
<a name="l00230"></a>00230 sp&lt;const Element&gt; RGBA_4444;
<a name="l00231"></a>00231 sp&lt;const Element&gt; RGBA_8888;
-<a name="l00232"></a>00232
+<a name="l00232"></a>00232
<a name="l00233"></a>00233 sp&lt;const Element&gt; YUV;
-<a name="l00234"></a>00234
+<a name="l00234"></a>00234
<a name="l00235"></a>00235 sp&lt;const Element&gt; MATRIX_4X4;
<a name="l00236"></a>00236 sp&lt;const Element&gt; MATRIX_3X3;
<a name="l00237"></a>00237 sp&lt;const Element&gt; MATRIX_2X2;
<a name="l00238"></a>00238 } mElements;
-<a name="l00239"></a>00239
+<a name="l00239"></a>00239
<a name="l00240"></a>00240 <span class="keyword">struct </span>{
<a name="l00241"></a>00241 sp&lt;const Sampler&gt; CLAMP_NEAREST;
<a name="l00242"></a>00242 sp&lt;const Sampler&gt; CLAMP_LINEAR;
@@ -224,32 +224,32 @@
<a name="l00252"></a>00252 <span class="keyword">friend</span> <span class="keyword">class </span>Element;
<a name="l00253"></a>00253 <span class="keyword">friend</span> <span class="keyword">class </span>ScriptC;
<a name="l00254"></a>00254 };
-<a name="l00255"></a>00255
+<a name="l00255"></a>00255
<a name="l00259"></a><a class="code" href="classandroid_1_1RSC_1_1BaseObj.html">00259</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1BaseObj.html">BaseObj</a> : <span class="keyword">public</span> android::RSC::LightRefBase&lt;BaseObj&gt; {
<a name="l00260"></a>00260 <span class="keyword">public</span>:
<a name="l00261"></a>00261 <span class="keywordtype">void</span> * getID() <span class="keyword">const</span>;
<a name="l00262"></a>00262 <span class="keyword">virtual</span> ~<a class="code" href="classandroid_1_1RSC_1_1BaseObj.html">BaseObj</a>();
<a name="l00263"></a>00263 <span class="keyword">virtual</span> <span class="keywordtype">void</span> updateFromNative();
<a name="l00264"></a>00264 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> equals(sp&lt;const BaseObj&gt; obj);
-<a name="l00265"></a>00265
+<a name="l00265"></a>00265
<a name="l00266"></a>00266 <span class="keyword">protected</span>:
<a name="l00267"></a>00267 <span class="keywordtype">void</span> *mID;
<a name="l00268"></a>00268 <a class="code" href="classandroid_1_1RSC_1_1RS.html">RS</a>* mRS;
<a name="l00269"></a>00269 std::string mName;
-<a name="l00270"></a>00270
+<a name="l00270"></a>00270
<a name="l00271"></a>00271 <a class="code" href="classandroid_1_1RSC_1_1BaseObj.html">BaseObj</a>(<span class="keywordtype">void</span> *<span class="keywordtype">id</span>, sp&lt;RS&gt; rs);
<a name="l00272"></a>00272 <span class="keywordtype">void</span> checkValid();
-<a name="l00273"></a>00273
+<a name="l00273"></a>00273
<a name="l00274"></a>00274 <span class="keyword">static</span> <span class="keywordtype">void</span> * getObjID(sp&lt;const BaseObj&gt; o);
-<a name="l00275"></a>00275
+<a name="l00275"></a>00275
<a name="l00276"></a>00276 };
-<a name="l00277"></a>00277
+<a name="l00277"></a>00277
<a name="l00293"></a><a class="code" href="classandroid_1_1RSC_1_1Allocation.html">00293</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Allocation.html">Allocation</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1BaseObj.html">BaseObj</a> {
<a name="l00294"></a>00294 <span class="keyword">protected</span>:
<a name="l00295"></a>00295 sp&lt;const Type&gt; mType;
<a name="l00296"></a>00296 uint32_t mUsage;
<a name="l00297"></a>00297 sp&lt;Allocation&gt; mAdaptedAllocation;
-<a name="l00298"></a>00298
+<a name="l00298"></a>00298
<a name="l00299"></a>00299 <span class="keywordtype">bool</span> mConstrainedLOD;
<a name="l00300"></a>00300 <span class="keywordtype">bool</span> mConstrainedFace;
<a name="l00301"></a>00301 <span class="keywordtype">bool</span> mConstrainedY;
@@ -260,129 +260,129 @@
<a name="l00306"></a>00306 uint32_t mSelectedZ;
<a name="l00307"></a>00307 uint32_t mSelectedLOD;
<a name="l00308"></a>00308 RsAllocationCubemapFace mSelectedFace;
-<a name="l00309"></a>00309
+<a name="l00309"></a>00309
<a name="l00310"></a>00310 uint32_t mCurrentDimX;
<a name="l00311"></a>00311 uint32_t mCurrentDimY;
<a name="l00312"></a>00312 uint32_t mCurrentDimZ;
<a name="l00313"></a>00313 uint32_t mCurrentCount;
-<a name="l00314"></a>00314
+<a name="l00314"></a>00314
<a name="l00315"></a>00315 <span class="keywordtype">void</span> * getIDSafe() <span class="keyword">const</span>;
<a name="l00316"></a>00316 <span class="keywordtype">void</span> updateCacheInfo(sp&lt;const Type&gt; t);
-<a name="l00317"></a>00317
+<a name="l00317"></a>00317
<a name="l00318"></a>00318 <a class="code" href="classandroid_1_1RSC_1_1Allocation.html">Allocation</a>(<span class="keywordtype">void</span> *<span class="keywordtype">id</span>, sp&lt;RS&gt; rs, sp&lt;const Type&gt; t, uint32_t usage);
-<a name="l00319"></a>00319
+<a name="l00319"></a>00319
<a name="l00320"></a>00320 <span class="keywordtype">void</span> validateIsInt32();
<a name="l00321"></a>00321 <span class="keywordtype">void</span> validateIsInt16();
<a name="l00322"></a>00322 <span class="keywordtype">void</span> validateIsInt8();
<a name="l00323"></a>00323 <span class="keywordtype">void</span> validateIsFloat32();
<a name="l00324"></a>00324 <span class="keywordtype">void</span> validateIsObject();
-<a name="l00325"></a>00325
+<a name="l00325"></a>00325
<a name="l00326"></a>00326 <span class="keyword">virtual</span> <span class="keywordtype">void</span> updateFromNative();
-<a name="l00327"></a>00327
+<a name="l00327"></a>00327
<a name="l00328"></a>00328 <span class="keywordtype">void</span> validate2DRange(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h);
<a name="l00329"></a>00329 <span class="keywordtype">void</span> validate3DRange(uint32_t xoff, uint32_t yoff, uint32_t zoff,
<a name="l00330"></a>00330 uint32_t w, uint32_t h, uint32_t d);
-<a name="l00331"></a>00331
+<a name="l00331"></a>00331
<a name="l00332"></a>00332 <span class="keyword">public</span>:
-<a name="l00333"></a>00333
+<a name="l00333"></a>00333
<a name="l00338"></a><a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a5475e41c9a50ece302e238e06e5ba8f4">00338</a> sp&lt;const Type&gt; <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a5475e41c9a50ece302e238e06e5ba8f4">getType</a>()<span class="keyword"> const </span>{
<a name="l00339"></a>00339 <span class="keywordflow">return</span> mType;
<a name="l00340"></a>00340 }
-<a name="l00341"></a>00341
+<a name="l00341"></a>00341
<a name="l00346"></a>00346 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a542d29449331bff6c8506b13c4daefeb">syncAll</a>(RsAllocationUsageType srcLocation);
<a name="l00347"></a>00347 <span class="keywordtype">void</span> ioSendOutput();
<a name="l00348"></a>00348 <span class="keywordtype">void</span> ioGetInput();
-<a name="l00349"></a>00349
+<a name="l00349"></a>00349
<a name="l00357"></a>00357 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a3c9f32ff3070f8a38e3a8c6e58ed7a82">generateMipmaps</a>();
-<a name="l00358"></a>00358
+<a name="l00358"></a>00358
<a name="l00365"></a>00365 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#ae10efeb0624dbdf7f32c013f8eff2c74">copy1DRangeFrom</a>(uint32_t off, <span class="keywordtype">size_t</span> count, <span class="keyword">const</span> <span class="keywordtype">void</span> *data);
-<a name="l00366"></a>00366
+<a name="l00366"></a>00366
<a name="l00374"></a>00374 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#ae10efeb0624dbdf7f32c013f8eff2c74">copy1DRangeFrom</a>(uint32_t off, <span class="keywordtype">size_t</span> count, sp&lt;const Allocation&gt; data, uint32_t dataOff);
-<a name="l00375"></a>00375
+<a name="l00375"></a>00375
<a name="l00382"></a>00382 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a70125eb0577744f64512da1f6bdec69e">copy1DRangeTo</a>(uint32_t off, <span class="keywordtype">size_t</span> count, <span class="keywordtype">void</span> *data);
-<a name="l00383"></a>00383
+<a name="l00383"></a>00383
<a name="l00388"></a>00388 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#ab3c6154ae194a83c7f639012d256d62d">copy1DFrom</a>(<span class="keyword">const</span> <span class="keywordtype">void</span>* data);
-<a name="l00389"></a>00389
+<a name="l00389"></a>00389
<a name="l00394"></a>00394 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a6d2c79bd8b2f9a7b7036ae78e4b48ec4">copy1DTo</a>(<span class="keywordtype">void</span>* data);
-<a name="l00395"></a>00395
+<a name="l00395"></a>00395
<a name="l00405"></a>00405 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#aa4a59cd1098771c205bbd23d4f3b1065">copy2DRangeFrom</a>(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h,
<a name="l00406"></a>00406 <span class="keyword">const</span> <span class="keywordtype">void</span> *data);
-<a name="l00407"></a>00407
+<a name="l00407"></a>00407
<a name="l00417"></a>00417 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a7522ec325ad4b30948b8b060b7750517">copy2DRangeTo</a>(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h,
<a name="l00418"></a>00418 <span class="keywordtype">void</span> *data);
-<a name="l00419"></a>00419
+<a name="l00419"></a>00419
<a name="l00430"></a>00430 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#aa4a59cd1098771c205bbd23d4f3b1065">copy2DRangeFrom</a>(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h,
<a name="l00431"></a>00431 sp&lt;const Allocation&gt; data, uint32_t dataXoff, uint32_t dataYoff);
-<a name="l00432"></a>00432
+<a name="l00432"></a>00432
<a name="l00442"></a>00442 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a5bb1d1b53dcc255beea566c50d34c3eb">copy2DStridedFrom</a>(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h,
<a name="l00443"></a>00443 <span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> stride);
-<a name="l00444"></a>00444
+<a name="l00444"></a>00444
<a name="l00450"></a>00450 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a5bb1d1b53dcc255beea566c50d34c3eb">copy2DStridedFrom</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> stride);
-<a name="l00451"></a>00451
+<a name="l00451"></a>00451
<a name="l00461"></a>00461 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#ad4f2ce90d548f22d950002c9942833ca">copy2DStridedTo</a>(uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h,
<a name="l00462"></a>00462 <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> stride);
-<a name="l00463"></a>00463
+<a name="l00463"></a>00463
<a name="l00469"></a>00469 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#ad4f2ce90d548f22d950002c9942833ca">copy2DStridedTo</a>(<span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> stride);
-<a name="l00470"></a>00470
-<a name="l00471"></a>00471
+<a name="l00470"></a>00470
+<a name="l00471"></a>00471
<a name="l00483"></a>00483 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#ac0fe786fd3dc0d5e2278b6071ff78d84">copy3DRangeFrom</a>(uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t w,
<a name="l00484"></a>00484 uint32_t h, uint32_t d, <span class="keyword">const</span> <span class="keywordtype">void</span>* data);
-<a name="l00485"></a>00485
+<a name="l00485"></a>00485
<a name="l00499"></a>00499 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#ac0fe786fd3dc0d5e2278b6071ff78d84">copy3DRangeFrom</a>(uint32_t xoff, uint32_t yoff, uint32_t zoff,
<a name="l00500"></a>00500 uint32_t w, uint32_t h, uint32_t d,
<a name="l00501"></a>00501 sp&lt;const Allocation&gt; data,
<a name="l00502"></a>00502 uint32_t dataXoff, uint32_t dataYoff, uint32_t dataZoff);
-<a name="l00503"></a>00503
+<a name="l00503"></a>00503
<a name="l00512"></a>00512 <span class="keyword">static</span> sp&lt;Allocation&gt; <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a983b914efa208763b4b58db62586f138">createTyped</a>(sp&lt;RS&gt; rs, sp&lt;const Type&gt; type,
<a name="l00513"></a>00513 RsAllocationMipmapControl mipmaps, uint32_t usage);
-<a name="l00514"></a>00514
+<a name="l00514"></a>00514
<a name="l00525"></a>00525 <span class="keyword">static</span> sp&lt;Allocation&gt; <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a983b914efa208763b4b58db62586f138">createTyped</a>(sp&lt;RS&gt; rs, sp&lt;const Type&gt; type,
<a name="l00526"></a>00526 RsAllocationMipmapControl mipmaps, uint32_t usage, <span class="keywordtype">void</span> * pointer);
-<a name="l00527"></a>00527
+<a name="l00527"></a>00527
<a name="l00535"></a>00535 <span class="keyword">static</span> sp&lt;Allocation&gt; <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#a983b914efa208763b4b58db62586f138">createTyped</a>(sp&lt;RS&gt; rs, sp&lt;const Type&gt; type,
<a name="l00536"></a>00536 uint32_t usage = RS_ALLOCATION_USAGE_SCRIPT);
<a name="l00545"></a>00545 <span class="keyword">static</span> sp&lt;Allocation&gt; <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#afd281c4fccca4bf1f69dd2cbdfafb96c">createSized</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e, <span class="keywordtype">size_t</span> count,
<a name="l00546"></a>00546 uint32_t usage = RS_ALLOCATION_USAGE_SCRIPT);
-<a name="l00547"></a>00547
+<a name="l00547"></a>00547
<a name="l00557"></a>00557 <span class="keyword">static</span> sp&lt;Allocation&gt; <a class="code" href="classandroid_1_1RSC_1_1Allocation.html#aa20d012e4df254a06c595527e9203e75">createSized2D</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e,
<a name="l00558"></a>00558 <span class="keywordtype">size_t</span> x, <span class="keywordtype">size_t</span> y,
<a name="l00559"></a>00559 uint32_t usage = RS_ALLOCATION_USAGE_SCRIPT);
-<a name="l00560"></a>00560
-<a name="l00561"></a>00561
+<a name="l00560"></a>00560
+<a name="l00561"></a>00561
<a name="l00562"></a>00562 };
-<a name="l00563"></a>00563
+<a name="l00563"></a>00563
<a name="l00584"></a><a class="code" href="classandroid_1_1RSC_1_1Element.html">00584</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Element.html">Element</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1BaseObj.html">BaseObj</a> {
<a name="l00585"></a>00585 <span class="keyword">public</span>:
<a name="l00586"></a>00586 <span class="keywordtype">bool</span> isComplex();
-<a name="l00587"></a>00587
+<a name="l00587"></a>00587
<a name="l00595"></a><a class="code" href="classandroid_1_1RSC_1_1Element.html#a3bc7d03d3f6d1b130592e4192aeeedc9">00595</a> <span class="keywordtype">size_t</span> <a class="code" href="classandroid_1_1RSC_1_1Element.html#a3bc7d03d3f6d1b130592e4192aeeedc9">getSubElementCount</a>() {
<a name="l00596"></a>00596 <span class="keywordflow">return</span> mVisibleElementMap.size();
<a name="l00597"></a>00597 }
-<a name="l00598"></a>00598
+<a name="l00598"></a>00598
<a name="l00604"></a>00604 sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#a5a23869e7d2a8c22e0d70bf5a90448d1">getSubElement</a>(uint32_t index);
-<a name="l00605"></a>00605
+<a name="l00605"></a>00605
<a name="l00612"></a>00612 <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="classandroid_1_1RSC_1_1Element.html#adb8f953d025b4ea03dd19678c69d4f5a">getSubElementName</a>(uint32_t index);
-<a name="l00613"></a>00613
+<a name="l00613"></a>00613
<a name="l00620"></a>00620 <span class="keywordtype">size_t</span> <a class="code" href="classandroid_1_1RSC_1_1Element.html#a004e582191292906e3c20cca7c38ff71">getSubElementArraySize</a>(uint32_t index);
-<a name="l00621"></a>00621
+<a name="l00621"></a>00621
<a name="l00627"></a>00627 uint32_t <a class="code" href="classandroid_1_1RSC_1_1Element.html#adaf83e7649e7fd0dfe4b8e2c884bfa5a">getSubElementOffsetBytes</a>(uint32_t index);
-<a name="l00628"></a>00628
+<a name="l00628"></a>00628
<a name="l00633"></a><a class="code" href="classandroid_1_1RSC_1_1Element.html#a8534de74929342ed32f271ddfd446a5a">00633</a> RsDataType <a class="code" href="classandroid_1_1RSC_1_1Element.html#a8534de74929342ed32f271ddfd446a5a">getDataType</a>()<span class="keyword"> const </span>{
<a name="l00634"></a>00634 <span class="keywordflow">return</span> mType;
<a name="l00635"></a>00635 }
-<a name="l00636"></a>00636
+<a name="l00636"></a>00636
<a name="l00641"></a><a class="code" href="classandroid_1_1RSC_1_1Element.html#aa30bc1b991015ac6c1915229e04a9cca">00641</a> RsDataKind <a class="code" href="classandroid_1_1RSC_1_1Element.html#aa30bc1b991015ac6c1915229e04a9cca">getDataKind</a>()<span class="keyword"> const </span>{
<a name="l00642"></a>00642 <span class="keywordflow">return</span> mKind;
<a name="l00643"></a>00643 }
-<a name="l00644"></a>00644
+<a name="l00644"></a>00644
<a name="l00649"></a><a class="code" href="classandroid_1_1RSC_1_1Element.html#a5368abfd727463499d49775733cb0cf6">00649</a> <span class="keywordtype">size_t</span> <a class="code" href="classandroid_1_1RSC_1_1Element.html#a5368abfd727463499d49775733cb0cf6">getSizeBytes</a>()<span class="keyword"> const </span>{
<a name="l00650"></a>00650 <span class="keywordflow">return</span> mSizeBytes;
<a name="l00651"></a>00651 }
-<a name="l00652"></a>00652
+<a name="l00652"></a>00652
<a name="l00657"></a><a class="code" href="classandroid_1_1RSC_1_1Element.html#abdae22ce17b81b9c931f02481302ca46">00657</a> uint32_t <a class="code" href="classandroid_1_1RSC_1_1Element.html#abdae22ce17b81b9c931f02481302ca46">getVectorSize</a>()<span class="keyword"> const </span>{
<a name="l00658"></a>00658 <span class="keywordflow">return</span> mVectorSize;
<a name="l00659"></a>00659 }
-<a name="l00660"></a>00660
+<a name="l00660"></a>00660
<a name="l00666"></a>00666 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#a03eb94692c2a7ffd8353373ef416876b">BOOLEAN</a>(sp&lt;RS&gt; rs);
<a name="l00672"></a>00672 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#a685e0e76cedd4d457f20fe4e36ab00b8">U8</a>(sp&lt;RS&gt; rs);
<a name="l00678"></a>00678 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#a253a510dd720bade6324e94dd2bf6064">I8</a>(sp&lt;RS&gt; rs);
@@ -405,7 +405,7 @@
<a name="l00780"></a>00780 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#a22d97b36faf9a6e5cb68a8154e2b0d6b">RGBA_5551</a>(sp&lt;RS&gt; rs);
<a name="l00786"></a>00786 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#aaba22a166b24a8cc18bea2f1b2c05b65">RGBA_4444</a>(sp&lt;RS&gt; rs);
<a name="l00792"></a>00792 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#a3499096cd7c11fea3711d61f39fdc3b4">RGBA_8888</a>(sp&lt;RS&gt; rs);
-<a name="l00793"></a>00793
+<a name="l00793"></a>00793
<a name="l00799"></a>00799 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#ab61e4800f47caea120ec50ca0fb57505">F32_2</a>(sp&lt;RS&gt; rs);
<a name="l00805"></a>00805 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#a97d4c34ac8c682c112b4f2cf894142d3">F32_3</a>(sp&lt;RS&gt; rs);
<a name="l00811"></a>00811 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#a388d2e9812c4ff4610de74a40a49467e">F32_4</a>(sp&lt;RS&gt; rs);
@@ -440,15 +440,15 @@
<a name="l00985"></a>00985 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#ae86d34af397b300dc5bcd2bb853ae799">MATRIX_4X4</a>(sp&lt;RS&gt; rs);
<a name="l00991"></a>00991 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#a6fece5a3cfdbeec8c6956363efd2abda">MATRIX_3X3</a>(sp&lt;RS&gt; rs);
<a name="l00997"></a>00997 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#a437926b22d3c5daa3faa27e7a20df272">MATRIX_2X2</a>(sp&lt;RS&gt; rs);
-<a name="l00998"></a>00998
+<a name="l00998"></a>00998
<a name="l00999"></a>00999 <span class="keywordtype">void</span> updateFromNative();
-<a name="l01000"></a>01000
+<a name="l01000"></a>01000
<a name="l01007"></a>01007 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#afaf1fb2fb0c2ad977867ef5ac098a4b6">createUser</a>(sp&lt;RS&gt; rs, RsDataType dt);
<a name="l01015"></a>01015 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#a12061ba6e9db8bfefeddb934123e8fc7">createVector</a>(sp&lt;RS&gt; rs, RsDataType dt, uint32_t size);
<a name="l01023"></a>01023 <span class="keyword">static</span> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Element.html#aeeca0087ef6e895d76b3048828f0e481">createPixel</a>(sp&lt;RS&gt; rs, RsDataType dt, RsDataKind dk);
-<a name="l01024"></a>01024
+<a name="l01024"></a>01024
<a name="l01030"></a>01030 <span class="keywordtype">bool</span> <a class="code" href="classandroid_1_1RSC_1_1Element.html#a66e7b5cccf8f7296bc049308d3990d66">isCompatible</a>(sp&lt;const Element&gt;e) <span class="keyword">const</span>;
-<a name="l01031"></a>01031
+<a name="l01031"></a>01031
<a name="l01037"></a><a class="code" href="classandroid_1_1RSC_1_1Element_1_1Builder.html">01037</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Element_1_1Builder.html">Builder</a> {
<a name="l01038"></a>01038 <span class="keyword">private</span>:
<a name="l01039"></a>01039 <a class="code" href="classandroid_1_1RSC_1_1RS.html">RS</a>* mRS;
@@ -456,14 +456,14 @@
<a name="l01041"></a>01041 std::vector&lt;std::string&gt; mElementNames;
<a name="l01042"></a>01042 std::vector&lt;uint32_t&gt; mArraySizes;
<a name="l01043"></a>01043 <span class="keywordtype">bool</span> mSkipPadding;
-<a name="l01044"></a>01044
+<a name="l01044"></a>01044
<a name="l01045"></a>01045 <span class="keyword">public</span>:
<a name="l01046"></a>01046 <a class="code" href="classandroid_1_1RSC_1_1Element_1_1Builder.html">Builder</a>(sp&lt;RS&gt; rs);
<a name="l01047"></a>01047 ~<a class="code" href="classandroid_1_1RSC_1_1Element_1_1Builder.html">Builder</a>();
<a name="l01048"></a>01048 <span class="keywordtype">void</span> add(sp&lt;Element&gt; e, std::string &amp;name, uint32_t arraySize = 1);
<a name="l01049"></a>01049 sp&lt;const Element&gt; create();
<a name="l01050"></a>01050 };
-<a name="l01051"></a>01051
+<a name="l01051"></a>01051
<a name="l01052"></a>01052 <span class="keyword">protected</span>:
<a name="l01053"></a>01053 <a class="code" href="classandroid_1_1RSC_1_1Element.html">Element</a>(<span class="keywordtype">void</span> *<span class="keywordtype">id</span>, sp&lt;RS&gt; rs,
<a name="l01054"></a>01054 std::vector&lt;sp&lt;Element&gt; &gt; &amp;elements,
@@ -472,54 +472,54 @@
<a name="l01057"></a>01057 <a class="code" href="classandroid_1_1RSC_1_1Element.html">Element</a>(<span class="keywordtype">void</span> *<span class="keywordtype">id</span>, sp&lt;RS&gt; rs, RsDataType dt, RsDataKind dk, <span class="keywordtype">bool</span> norm, uint32_t size);
<a name="l01058"></a>01058 <a class="code" href="classandroid_1_1RSC_1_1Element.html">Element</a>(sp&lt;RS&gt; rs);
<a name="l01059"></a>01059 <span class="keyword">virtual</span> ~<a class="code" href="classandroid_1_1RSC_1_1Element.html">Element</a>();
-<a name="l01060"></a>01060
+<a name="l01060"></a>01060
<a name="l01061"></a>01061 <span class="keyword">private</span>:
<a name="l01062"></a>01062 <span class="keywordtype">void</span> updateVisibleSubElements();
-<a name="l01063"></a>01063
+<a name="l01063"></a>01063
<a name="l01064"></a>01064 std::vector&lt;sp&lt;Element&gt; &gt; mElements;
<a name="l01065"></a>01065 std::vector&lt;std::string&gt; mElementNames;
<a name="l01066"></a>01066 std::vector&lt;uint32_t&gt; mArraySizes;
<a name="l01067"></a>01067 std::vector&lt;uint32_t&gt; mVisibleElementMap;
<a name="l01068"></a>01068 std::vector&lt;uint32_t&gt; mOffsetInBytes;
-<a name="l01069"></a>01069
+<a name="l01069"></a>01069
<a name="l01070"></a>01070 RsDataType mType;
<a name="l01071"></a>01071 RsDataKind mKind;
<a name="l01072"></a>01072 <span class="keywordtype">bool</span> mNormalized;
<a name="l01073"></a>01073 <span class="keywordtype">size_t</span> mSizeBytes;
<a name="l01074"></a>01074 <span class="keywordtype">size_t</span> mVectorSize;
<a name="l01075"></a>01075 };
-<a name="l01076"></a>01076
+<a name="l01076"></a>01076
<a name="l01077"></a><a class="code" href="classandroid_1_1RSC_1_1FieldPacker.html">01077</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1FieldPacker.html">FieldPacker</a> {
<a name="l01078"></a>01078 <span class="keyword">protected</span>:
<a name="l01079"></a>01079 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* mData;
<a name="l01080"></a>01080 <span class="keywordtype">size_t</span> mPos;
<a name="l01081"></a>01081 <span class="keywordtype">size_t</span> mLen;
-<a name="l01082"></a>01082
+<a name="l01082"></a>01082
<a name="l01083"></a>01083 <span class="keyword">public</span>:
<a name="l01084"></a>01084 <a class="code" href="classandroid_1_1RSC_1_1FieldPacker.html">FieldPacker</a>(<span class="keywordtype">size_t</span> len)
<a name="l01085"></a>01085 : mPos(0), mLen(len) {
<a name="l01086"></a>01086 mData = <span class="keyword">new</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>[len];
<a name="l01087"></a>01087 }
-<a name="l01088"></a>01088
+<a name="l01088"></a>01088
<a name="l01089"></a>01089 <span class="keyword">virtual</span> ~<a class="code" href="classandroid_1_1RSC_1_1FieldPacker.html">FieldPacker</a>() {
<a name="l01090"></a>01090 <span class="keyword">delete</span> [] mData;
<a name="l01091"></a>01091 }
-<a name="l01092"></a>01092
+<a name="l01092"></a>01092
<a name="l01093"></a>01093 <span class="keywordtype">void</span> align(<span class="keywordtype">size_t</span> v) {
<a name="l01094"></a>01094 <span class="keywordflow">if</span> ((v &amp; (v - 1)) != 0) {
<a name="l01095"></a>01095 <span class="comment">// ALOGE(&quot;Non-power-of-two alignment: %zu&quot;, v);</span>
<a name="l01096"></a>01096 <span class="keywordflow">return</span>;
<a name="l01097"></a>01097 }
-<a name="l01098"></a>01098
+<a name="l01098"></a>01098
<a name="l01099"></a>01099 <span class="keywordflow">while</span> ((mPos &amp; (v - 1)) != 0) {
<a name="l01100"></a>01100 mData[mPos++] = 0;
<a name="l01101"></a>01101 }
<a name="l01102"></a>01102 }
-<a name="l01103"></a>01103
+<a name="l01103"></a>01103
<a name="l01104"></a>01104 <span class="keywordtype">void</span> reset() {
<a name="l01105"></a>01105 mPos = 0;
<a name="l01106"></a>01106 }
-<a name="l01107"></a>01107
+<a name="l01107"></a>01107
<a name="l01108"></a>01108 <span class="keywordtype">void</span> reset(<span class="keywordtype">size_t</span> i) {
<a name="l01109"></a>01109 <span class="keywordflow">if</span> (i &gt;= mLen) {
<a name="l01110"></a>01110 <span class="comment">// ALOGE(&quot;Out of bounds: i (%zu) &gt;= len (%zu)&quot;, i, mLen);</span>
@@ -527,7 +527,7 @@
<a name="l01112"></a>01112 }
<a name="l01113"></a>01113 mPos = i;
<a name="l01114"></a>01114 }
-<a name="l01115"></a>01115
+<a name="l01115"></a>01115
<a name="l01116"></a>01116 <span class="keywordtype">void</span> skip(<span class="keywordtype">size_t</span> i) {
<a name="l01117"></a>01117 <span class="keywordtype">size_t</span> res = mPos + i;
<a name="l01118"></a>01118 <span class="keywordflow">if</span> (res &gt; mLen) {
@@ -536,15 +536,15 @@
<a name="l01121"></a>01121 }
<a name="l01122"></a>01122 mPos = res;
<a name="l01123"></a>01123 }
-<a name="l01124"></a>01124
+<a name="l01124"></a>01124
<a name="l01125"></a>01125 <span class="keywordtype">void</span>* getData()<span class="keyword"> const </span>{
<a name="l01126"></a>01126 <span class="keywordflow">return</span> mData;
<a name="l01127"></a>01127 }
-<a name="l01128"></a>01128
+<a name="l01128"></a>01128
<a name="l01129"></a>01129 <span class="keywordtype">size_t</span> getLength()<span class="keyword"> const </span>{
<a name="l01130"></a>01130 <span class="keywordflow">return</span> mLen;
<a name="l01131"></a>01131 }
-<a name="l01132"></a>01132
+<a name="l01132"></a>01132
<a name="l01133"></a>01133 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;
<a name="l01134"></a>01134 <span class="keywordtype">void</span> add(T t) {
<a name="l01135"></a>01135 align(<span class="keyword">sizeof</span>(t));
@@ -553,7 +553,7 @@
<a name="l01138"></a>01138 mPos += <span class="keyword">sizeof</span>(t);
<a name="l01139"></a>01139 }
<a name="l01140"></a>01140 }
-<a name="l01141"></a>01141
+<a name="l01141"></a>01141
<a name="l01142"></a>01142 <span class="comment">/*</span>
<a name="l01143"></a>01143 <span class="comment"> void add(rs_matrix4x4 m) {</span>
<a name="l01144"></a>01144 <span class="comment"> for (size_t i = 0; i &lt; 16; i++) {</span>
@@ -573,7 +573,7 @@
<a name="l01158"></a>01158 <span class="comment"> }</span>
<a name="l01159"></a>01159 <span class="comment"> }</span>
<a name="l01160"></a>01160 <span class="comment"> */</span>
-<a name="l01161"></a>01161
+<a name="l01161"></a>01161
<a name="l01162"></a>01162 <span class="keywordtype">void</span> add(sp&lt;BaseObj&gt; obj) {
<a name="l01163"></a>01163 <span class="keywordflow">if</span> (obj != NULL) {
<a name="l01164"></a>01164 add((uint32_t) (uintptr_t) obj-&gt;getID());
@@ -582,11 +582,11 @@
<a name="l01167"></a>01167 }
<a name="l01168"></a>01168 }
<a name="l01169"></a>01169 };
-<a name="l01170"></a>01170
+<a name="l01170"></a>01170
<a name="l01188"></a><a class="code" href="classandroid_1_1RSC_1_1Type.html">01188</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Type.html">Type</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1BaseObj.html">BaseObj</a> {
<a name="l01189"></a>01189 <span class="keyword">protected</span>:
<a name="l01190"></a>01190 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Allocation.html">Allocation</a>;
-<a name="l01191"></a>01191
+<a name="l01191"></a>01191
<a name="l01192"></a>01192 uint32_t mDimX;
<a name="l01193"></a>01193 uint32_t mDimY;
<a name="l01194"></a>01194 uint32_t mDimZ;
@@ -595,52 +595,52 @@
<a name="l01197"></a>01197 <span class="keywordtype">bool</span> mDimFaces;
<a name="l01198"></a>01198 <span class="keywordtype">size_t</span> mElementCount;
<a name="l01199"></a>01199 sp&lt;const Element&gt; mElement;
-<a name="l01200"></a>01200
+<a name="l01200"></a>01200
<a name="l01201"></a>01201 <a class="code" href="classandroid_1_1RSC_1_1Type.html">Type</a>(<span class="keywordtype">void</span> *<span class="keywordtype">id</span>, sp&lt;RS&gt; rs);
-<a name="l01202"></a>01202
+<a name="l01202"></a>01202
<a name="l01203"></a>01203 <span class="keywordtype">void</span> calcElementCount();
<a name="l01204"></a>01204 <span class="keyword">virtual</span> <span class="keywordtype">void</span> updateFromNative();
-<a name="l01205"></a>01205
+<a name="l01205"></a>01205
<a name="l01206"></a>01206 <span class="keyword">public</span>:
-<a name="l01207"></a>01207
+<a name="l01207"></a>01207
<a name="l01212"></a><a class="code" href="classandroid_1_1RSC_1_1Type.html#ac4ad2c5b3c9a4758b356b2152f03d4e8">01212</a> RSYuvFormat <a class="code" href="classandroid_1_1RSC_1_1Type.html#ac4ad2c5b3c9a4758b356b2152f03d4e8">getYuvFormat</a>()<span class="keyword"> const </span>{
<a name="l01213"></a>01213 <span class="keywordflow">return</span> mYuvFormat;
<a name="l01214"></a>01214 }
-<a name="l01215"></a>01215
+<a name="l01215"></a>01215
<a name="l01220"></a><a class="code" href="classandroid_1_1RSC_1_1Type.html#a258364640b18256c338178b056fcc2d6">01220</a> sp&lt;const Element&gt; <a class="code" href="classandroid_1_1RSC_1_1Type.html#a258364640b18256c338178b056fcc2d6">getElement</a>()<span class="keyword"> const </span>{
<a name="l01221"></a>01221 <span class="keywordflow">return</span> mElement;
<a name="l01222"></a>01222 }
-<a name="l01223"></a>01223
+<a name="l01223"></a>01223
<a name="l01228"></a><a class="code" href="classandroid_1_1RSC_1_1Type.html#ad324073e4cb9144f225fbea6074b3564">01228</a> uint32_t <a class="code" href="classandroid_1_1RSC_1_1Type.html#ad324073e4cb9144f225fbea6074b3564">getX</a>()<span class="keyword"> const </span>{
<a name="l01229"></a>01229 <span class="keywordflow">return</span> mDimX;
<a name="l01230"></a>01230 }
-<a name="l01231"></a>01231
+<a name="l01231"></a>01231
<a name="l01236"></a><a class="code" href="classandroid_1_1RSC_1_1Type.html#ae3f2a8d78737664290c9da35e5afc284">01236</a> uint32_t <a class="code" href="classandroid_1_1RSC_1_1Type.html#ae3f2a8d78737664290c9da35e5afc284">getY</a>()<span class="keyword"> const </span>{
<a name="l01237"></a>01237 <span class="keywordflow">return</span> mDimY;
<a name="l01238"></a>01238 }
-<a name="l01239"></a>01239
+<a name="l01239"></a>01239
<a name="l01244"></a><a class="code" href="classandroid_1_1RSC_1_1Type.html#a6640a753fb08cb9413559021b3f37665">01244</a> uint32_t <a class="code" href="classandroid_1_1RSC_1_1Type.html#a6640a753fb08cb9413559021b3f37665">getZ</a>()<span class="keyword"> const </span>{
<a name="l01245"></a>01245 <span class="keywordflow">return</span> mDimZ;
<a name="l01246"></a>01246 }
-<a name="l01247"></a>01247
+<a name="l01247"></a>01247
<a name="l01252"></a><a class="code" href="classandroid_1_1RSC_1_1Type.html#ac0e02c8a4926a35f6237b00d3af3f829">01252</a> <span class="keywordtype">bool</span> <a class="code" href="classandroid_1_1RSC_1_1Type.html#ac0e02c8a4926a35f6237b00d3af3f829">hasMipmaps</a>()<span class="keyword"> const </span>{
<a name="l01253"></a>01253 <span class="keywordflow">return</span> mDimMipmaps;
<a name="l01254"></a>01254 }
-<a name="l01255"></a>01255
+<a name="l01255"></a>01255
<a name="l01260"></a><a class="code" href="classandroid_1_1RSC_1_1Type.html#adc58082d46bfc33efc0232b2a85b5278">01260</a> <span class="keywordtype">bool</span> <a class="code" href="classandroid_1_1RSC_1_1Type.html#adc58082d46bfc33efc0232b2a85b5278">hasFaces</a>()<span class="keyword"> const </span>{
<a name="l01261"></a>01261 <span class="keywordflow">return</span> mDimFaces;
<a name="l01262"></a>01262 }
-<a name="l01263"></a>01263
+<a name="l01263"></a>01263
<a name="l01268"></a><a class="code" href="classandroid_1_1RSC_1_1Type.html#a0fa390504b01957f1f9fe9e34899621c">01268</a> <span class="keywordtype">size_t</span> <a class="code" href="classandroid_1_1RSC_1_1Type.html#a0fa390504b01957f1f9fe9e34899621c">getCount</a>()<span class="keyword"> const </span>{
<a name="l01269"></a>01269 <span class="keywordflow">return</span> mElementCount;
<a name="l01270"></a>01270 }
-<a name="l01271"></a>01271
+<a name="l01271"></a>01271
<a name="l01276"></a><a class="code" href="classandroid_1_1RSC_1_1Type.html#a046466fc4156806d9d133d38af965380">01276</a> <span class="keywordtype">size_t</span> <a class="code" href="classandroid_1_1RSC_1_1Type.html#a046466fc4156806d9d133d38af965380">getSizeBytes</a>()<span class="keyword"> const </span>{
<a name="l01277"></a>01277 <span class="keywordflow">return</span> mElementCount * mElement-&gt;getSizeBytes();
<a name="l01278"></a>01278 }
-<a name="l01279"></a>01279
+<a name="l01279"></a>01279
<a name="l01289"></a>01289 <span class="keyword">static</span> sp&lt;const Type&gt; <a class="code" href="classandroid_1_1RSC_1_1Type.html#a26a26f44a40ffa8cc650152c3f834989">create</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e, uint32_t dimX, uint32_t dimY, uint32_t dimZ);
-<a name="l01290"></a>01290
+<a name="l01290"></a>01290
<a name="l01291"></a><a class="code" href="classandroid_1_1RSC_1_1Type_1_1Builder.html">01291</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Type_1_1Builder.html">Builder</a> {
<a name="l01292"></a>01292 <span class="keyword">protected</span>:
<a name="l01293"></a>01293 <a class="code" href="classandroid_1_1RSC_1_1RS.html">RS</a>* mRS;
@@ -651,10 +651,10 @@
<a name="l01298"></a>01298 <span class="keywordtype">bool</span> mDimMipmaps;
<a name="l01299"></a>01299 <span class="keywordtype">bool</span> mDimFaces;
<a name="l01300"></a>01300 sp&lt;const Element&gt; mElement;
-<a name="l01301"></a>01301
+<a name="l01301"></a>01301
<a name="l01302"></a>01302 <span class="keyword">public</span>:
<a name="l01303"></a>01303 <a class="code" href="classandroid_1_1RSC_1_1Type_1_1Builder.html">Builder</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
-<a name="l01304"></a>01304
+<a name="l01304"></a>01304
<a name="l01305"></a>01305 <span class="keywordtype">void</span> setX(uint32_t value);
<a name="l01306"></a>01306 <span class="keywordtype">void</span> setY(uint32_t value);
<a name="l01307"></a>01307 <span class="keywordtype">void</span> setZ(uint32_t value);
@@ -663,12 +663,12 @@
<a name="l01310"></a>01310 <span class="keywordtype">void</span> setFaces(<span class="keywordtype">bool</span> value);
<a name="l01311"></a>01311 sp&lt;const Type&gt; create();
<a name="l01312"></a>01312 };
-<a name="l01313"></a>01313
+<a name="l01313"></a>01313
<a name="l01314"></a>01314 };
-<a name="l01315"></a>01315
+<a name="l01315"></a>01315
<a name="l01319"></a><a class="code" href="classandroid_1_1RSC_1_1Script.html">01319</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Script.html">Script</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1BaseObj.html">BaseObj</a> {
<a name="l01320"></a>01320 <span class="keyword">private</span>:
-<a name="l01321"></a>01321
+<a name="l01321"></a>01321
<a name="l01322"></a>01322 <span class="keyword">protected</span>:
<a name="l01323"></a>01323 <a class="code" href="classandroid_1_1RSC_1_1Script.html">Script</a>(<span class="keywordtype">void</span> *<span class="keywordtype">id</span>, sp&lt;RS&gt; rs);
<a name="l01324"></a>01324 <span class="keywordtype">void</span> forEach(uint32_t slot, sp&lt;const Allocation&gt; in, sp&lt;const Allocation&gt; out,
@@ -677,8 +677,8 @@
<a name="l01327"></a>01327 <span class="keywordtype">void</span> setVar(uint32_t index, <span class="keyword">const</span> <span class="keywordtype">void</span> *, <span class="keywordtype">size_t</span> len) <span class="keyword">const</span>;
<a name="l01328"></a>01328 <span class="keywordtype">void</span> setVar(uint32_t index, sp&lt;const BaseObj&gt; o) <span class="keyword">const</span>;
<a name="l01329"></a>01329 <span class="keywordtype">void</span> invoke(uint32_t slot, <span class="keyword">const</span> <span class="keywordtype">void</span> *v, <span class="keywordtype">size_t</span> len) <span class="keyword">const</span>;
-<a name="l01330"></a>01330
-<a name="l01331"></a>01331
+<a name="l01330"></a>01330
+<a name="l01331"></a>01331
<a name="l01332"></a>01332 <span class="keywordtype">void</span> invoke(uint32_t slot)<span class="keyword"> const </span>{
<a name="l01333"></a>01333 invoke(slot, NULL, 0);
<a name="l01334"></a>01334 }
@@ -697,59 +697,59 @@
<a name="l01347"></a>01347 <span class="keywordtype">void</span> setVar(uint32_t index, <span class="keywordtype">bool</span> v)<span class="keyword"> const </span>{
<a name="l01348"></a>01348 setVar(index, &amp;v, <span class="keyword">sizeof</span>(v));
<a name="l01349"></a>01349 }
-<a name="l01350"></a>01350
+<a name="l01350"></a>01350
<a name="l01351"></a>01351 <span class="keyword">public</span>:
<a name="l01352"></a><a class="code" href="classandroid_1_1RSC_1_1Script_1_1FieldBase.html">01352</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Script_1_1FieldBase.html">FieldBase</a> {
<a name="l01353"></a>01353 <span class="keyword">protected</span>:
<a name="l01354"></a>01354 sp&lt;const Element&gt; mElement;
<a name="l01355"></a>01355 sp&lt;Allocation&gt; mAllocation;
-<a name="l01356"></a>01356
+<a name="l01356"></a>01356
<a name="l01357"></a>01357 <span class="keywordtype">void</span> init(sp&lt;RS&gt; rs, uint32_t dimx, uint32_t usages = 0);
-<a name="l01358"></a>01358
+<a name="l01358"></a>01358
<a name="l01359"></a>01359 <span class="keyword">public</span>:
<a name="l01360"></a>01360 sp&lt;const Element&gt; getElement() {
<a name="l01361"></a>01361 <span class="keywordflow">return</span> mElement;
<a name="l01362"></a>01362 }
-<a name="l01363"></a>01363
+<a name="l01363"></a>01363
<a name="l01364"></a>01364 sp&lt;const Type&gt; getType() {
<a name="l01365"></a>01365 <span class="keywordflow">return</span> mAllocation-&gt;getType();
<a name="l01366"></a>01366 }
-<a name="l01367"></a>01367
+<a name="l01367"></a>01367
<a name="l01368"></a>01368 sp&lt;const Allocation&gt; getAllocation() {
<a name="l01369"></a>01369 <span class="keywordflow">return</span> mAllocation;
<a name="l01370"></a>01370 }
-<a name="l01371"></a>01371
+<a name="l01371"></a>01371
<a name="l01372"></a>01372 <span class="comment">//void updateAllocation();</span>
<a name="l01373"></a>01373 };
<a name="l01374"></a>01374 };
-<a name="l01375"></a>01375
+<a name="l01375"></a>01375
<a name="l01379"></a><a class="code" href="classandroid_1_1RSC_1_1ScriptC.html">01379</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ScriptC.html">ScriptC</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1Script.html">Script</a> {
<a name="l01380"></a>01380 <span class="keyword">protected</span>:
<a name="l01381"></a>01381 <a class="code" href="classandroid_1_1RSC_1_1ScriptC.html">ScriptC</a>(sp&lt;RS&gt; rs,
<a name="l01382"></a>01382 <span class="keyword">const</span> <span class="keywordtype">void</span> *codeTxt, <span class="keywordtype">size_t</span> codeLength,
<a name="l01383"></a>01383 <span class="keyword">const</span> <span class="keywordtype">char</span> *cachedName, <span class="keywordtype">size_t</span> cachedNameLength,
<a name="l01384"></a>01384 <span class="keyword">const</span> <span class="keywordtype">char</span> *cacheDir, <span class="keywordtype">size_t</span> cacheDirLength);
-<a name="l01385"></a>01385
+<a name="l01385"></a>01385
<a name="l01386"></a>01386 };
-<a name="l01387"></a>01387
+<a name="l01387"></a>01387
<a name="l01392"></a><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">01392</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1Script.html">Script</a> {
<a name="l01393"></a>01393 <span class="keyword">protected</span>:
<a name="l01394"></a>01394 sp&lt;const Element&gt; mElement;
<a name="l01395"></a>01395 <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a>(sp&lt;RS&gt; rs, <span class="keywordtype">int</span> <span class="keywordtype">id</span>, sp&lt;const Element&gt; e);
<a name="l01396"></a>01396 <span class="keyword">virtual</span> ~<a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a>();
<a name="l01397"></a>01397 };
-<a name="l01398"></a>01398
+<a name="l01398"></a>01398
<a name="l01405"></a><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html">01405</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html">ScriptIntrinsic3DLUT</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a> {
<a name="l01406"></a>01406 <span class="keyword">private</span>:
<a name="l01407"></a>01407 <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html">ScriptIntrinsic3DLUT</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
<a name="l01408"></a>01408 <span class="keyword">public</span>:
<a name="l01415"></a>01415 <span class="keyword">static</span> sp&lt;ScriptIntrinsic3DLUT&gt; <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html#ae20e9165cc0bbef03d0d7b99ae238758">create</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
-<a name="l01416"></a>01416
+<a name="l01416"></a>01416
<a name="l01422"></a>01422 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html#ac33f9e12362112f24560205389db2eff">forEach</a>(sp&lt;Allocation&gt; ain, sp&lt;Allocation&gt; aout);
-<a name="l01423"></a>01423
+<a name="l01423"></a>01423
<a name="l01429"></a>01429 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic3DLUT.html#a14e28c25094206e8f49b42682d682927">setLUT</a>(sp&lt;Allocation&gt; lut);
<a name="l01430"></a>01430 };
-<a name="l01431"></a>01431
+<a name="l01431"></a>01431
<a name="l01435"></a><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicBlend.html">01435</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicBlend.html">ScriptIntrinsicBlend</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a> {
<a name="l01436"></a>01436 <span class="keyword">private</span>:
<a name="l01437"></a>01437 <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicBlend.html">ScriptIntrinsicBlend</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
@@ -771,7 +771,7 @@
<a name="l01529"></a>01529 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicBlend.html#a858f1780417ac702b26becaae865f736">forEachAdd</a>(sp&lt;Allocation&gt; in, sp&lt;Allocation&gt; out);
<a name="l01535"></a>01535 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicBlend.html#aeb8ee656f6d3ac2d21a4e2ca74f25cd9">forEachSubtract</a>(sp&lt;Allocation&gt; in, sp&lt;Allocation&gt; out);
<a name="l01536"></a>01536 };
-<a name="l01537"></a>01537
+<a name="l01537"></a>01537
<a name="l01542"></a><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicBlur.html">01542</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicBlur.html">ScriptIntrinsicBlur</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a> {
<a name="l01543"></a>01543 <span class="keyword">private</span>:
<a name="l01544"></a>01544 <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicBlur.html">ScriptIntrinsicBlur</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
@@ -781,7 +781,7 @@
<a name="l01562"></a>01562 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicBlur.html#ae8e448c1a7cf4505ce9008cdd20bcfed">forEach</a>(sp&lt;Allocation&gt; out);
<a name="l01567"></a>01567 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicBlur.html#ad25f4cb45a95a01f1e9adfeb6e0d810b">setRadius</a>(<span class="keywordtype">float</span> radius);
<a name="l01568"></a>01568 };
-<a name="l01569"></a>01569
+<a name="l01569"></a>01569
<a name="l01577"></a><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html">01577</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html">ScriptIntrinsicColorMatrix</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a> {
<a name="l01578"></a>01578 <span class="keyword">private</span>:
<a name="l01579"></a>01579 <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html">ScriptIntrinsicColorMatrix</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
@@ -789,14 +789,14 @@
<a name="l01586"></a>01586 <span class="keyword">static</span> sp&lt;ScriptIntrinsicColorMatrix&gt; <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html#a9cea306b067bead29220cfebabc2860a">create</a>(sp&lt;RS&gt; rs);
<a name="l01593"></a>01593 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html#aaaa3afb31ff042eb463d9ce2fa983c49">forEach</a>(sp&lt;Allocation&gt; in, sp&lt;Allocation&gt; out);
<a name="l01599"></a>01599 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html#a6f8e4e4acb841f80b99e00f66f424413">setAdd</a>(<span class="keywordtype">float</span>* add);
-<a name="l01600"></a>01600
+<a name="l01600"></a>01600
<a name="l01607"></a>01607 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html#aab9cee1734186c000b27950a4919bfac">setColorMatrix3</a>(<span class="keywordtype">float</span>* m);
<a name="l01614"></a>01614 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html#a9f9a613dc01b1c32436f517f1256d7c1">setColorMatrix4</a>(<span class="keywordtype">float</span>* m);
<a name="l01619"></a>01619 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html#ae85ce011c6a36f662b641981c48bc78d">setGreyscale</a>();
<a name="l01624"></a>01624 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html#aa8a64388a63db69f8054092ce64c7b73">setRGBtoYUV</a>();
<a name="l01629"></a>01629 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicColorMatrix.html#aa91f50c71c2800b062d659989cf6c722">setYUVtoRGB</a>();
<a name="l01630"></a>01630 };
-<a name="l01631"></a>01631
+<a name="l01631"></a>01631
<a name="l01635"></a><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.html">01635</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.html">ScriptIntrinsicConvolve3x3</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a> {
<a name="l01636"></a>01636 <span class="keyword">private</span>:
<a name="l01637"></a>01637 <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.html">ScriptIntrinsicConvolve3x3</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
@@ -806,7 +806,7 @@
<a name="l01656"></a>01656 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.html#a1452800d1d0c8850d1a16af98e422478">forEach</a>(sp&lt;Allocation&gt; out);
<a name="l01661"></a>01661 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicConvolve3x3.html#a7e078b7dd03ed4ef95359e5c8aa4221a">setCoefficients</a>(<span class="keywordtype">float</span>* v);
<a name="l01662"></a>01662 };
-<a name="l01663"></a>01663
+<a name="l01663"></a>01663
<a name="l01667"></a><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.html">01667</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.html">ScriptIntrinsicConvolve5x5</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a> {
<a name="l01668"></a>01668 <span class="keyword">private</span>:
<a name="l01669"></a>01669 <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.html">ScriptIntrinsicConvolve5x5</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
@@ -816,7 +816,7 @@
<a name="l01688"></a>01688 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.html#ab7ffe13967fd33f3fce8a8e48dc1c9f6">forEach</a>(sp&lt;Allocation&gt; out);
<a name="l01693"></a>01693 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicConvolve5x5.html#a32a6051b732023e668807616f87c17dd">setCoefficients</a>(<span class="keywordtype">float</span>* v);
<a name="l01694"></a>01694 };
-<a name="l01695"></a>01695
+<a name="l01695"></a>01695
<a name="l01699"></a><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.html">01699</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.html">ScriptIntrinsicHistogram</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a> {
<a name="l01700"></a>01700 <span class="keyword">private</span>:
<a name="l01701"></a>01701 <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.html">ScriptIntrinsicHistogram</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
@@ -828,7 +828,7 @@
<a name="l01747"></a>01747 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.html#a8a9c2cab4f07c66a9a167fab07da9897">forEach</a>(sp&lt;Allocation&gt; ain);
<a name="l01758"></a>01758 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicHistogram.html#a0d92ce93a488ae86c5acaeefc380ec98">forEach_dot</a>(sp&lt;Allocation&gt; ain);
<a name="l01759"></a>01759 };
-<a name="l01760"></a>01760
+<a name="l01760"></a>01760
<a name="l01766"></a><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html">01766</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html">ScriptIntrinsicLUT</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a> {
<a name="l01767"></a>01767 <span class="keyword">private</span>:
<a name="l01768"></a>01768 sp&lt;Allocation&gt; LUT;
@@ -836,7 +836,7 @@
<a name="l01770"></a>01770 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> mCache[1024];
<a name="l01771"></a>01771 <span class="keywordtype">void</span> setTable(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> base, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* lutValues);
<a name="l01772"></a>01772 <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html">ScriptIntrinsicLUT</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
-<a name="l01773"></a>01773
+<a name="l01773"></a>01773
<a name="l01774"></a>01774 <span class="keyword">public</span>:
<a name="l01785"></a>01785 <span class="keyword">static</span> sp&lt;ScriptIntrinsicLUT&gt; <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html#aeb5f4cdbd9d71858413b5835685b2eb3">create</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
<a name="l01793"></a>01793 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html#a3774786291f4b145652ce795e9d9521c">forEach</a>(sp&lt;Allocation&gt; ain, sp&lt;Allocation&gt; aout);
@@ -846,18 +846,18 @@
<a name="l01821"></a>01821 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html#ad5cf5d3a61ad299eac6d40947ac4f872">setAlpha</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> base, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> length, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* lutValues);
<a name="l01822"></a>01822 <span class="keyword">virtual</span> ~<a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicLUT.html">ScriptIntrinsicLUT</a>();
<a name="l01823"></a>01823 };
-<a name="l01824"></a>01824
+<a name="l01824"></a>01824
<a name="l01832"></a><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html">01832</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html">ScriptIntrinsicYuvToRGB</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsic.html">ScriptIntrinsic</a> {
<a name="l01833"></a>01833 <span class="keyword">private</span>:
<a name="l01834"></a>01834 <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html">ScriptIntrinsicYuvToRGB</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
<a name="l01835"></a>01835 <span class="keyword">public</span>:
<a name="l01846"></a>01846 <span class="keyword">static</span> sp&lt;ScriptIntrinsicYuvToRGB&gt; <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html#adc5488f3137b97a1d76f5765fcb333fd">create</a>(sp&lt;RS&gt; rs, sp&lt;const Element&gt; e);
<a name="l01852"></a>01852 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html#a7a57038de7d52c53956029dc9dc51dde">setInput</a>(sp&lt;Allocation&gt; in);
-<a name="l01853"></a>01853
+<a name="l01853"></a>01853
<a name="l01860"></a>01860 <span class="keywordtype">void</span> <a class="code" href="classandroid_1_1RSC_1_1ScriptIntrinsicYuvToRGB.html#a82cc7e843804e20d728c2158cfa481f7">forEach</a>(sp&lt;Allocation&gt; out);
-<a name="l01861"></a>01861
+<a name="l01861"></a>01861
<a name="l01862"></a>01862 };
-<a name="l01863"></a>01863
+<a name="l01863"></a>01863
<a name="l01874"></a><a class="code" href="classandroid_1_1RSC_1_1Sampler.html">01874</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Sampler.html">Sampler</a> : <span class="keyword">public</span> <a class="code" href="classandroid_1_1RSC_1_1BaseObj.html">BaseObj</a> {
<a name="l01875"></a>01875 <span class="keyword">private</span>:
<a name="l01876"></a>01876 <a class="code" href="classandroid_1_1RSC_1_1Sampler.html">Sampler</a>(sp&lt;RS&gt; rs, <span class="keywordtype">void</span>* <span class="keywordtype">id</span>);
@@ -867,16 +867,16 @@
<a name="l01880"></a>01880 RsSamplerValue mWrapT;
<a name="l01881"></a>01881 RsSamplerValue mWrapR;
<a name="l01882"></a>01882 <span class="keywordtype">float</span> mAniso;
-<a name="l01883"></a>01883
+<a name="l01883"></a>01883
<a name="l01884"></a>01884 <span class="keyword">public</span>:
<a name="l01894"></a>01894 <span class="keyword">static</span> sp&lt;Sampler&gt; <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#a579e236fabaca164d0639bcb9c95a169">create</a>(sp&lt;RS&gt; rs, RsSamplerValue min, RsSamplerValue mag, RsSamplerValue wrapS, RsSamplerValue wrapT, <span class="keywordtype">float</span> anisotropy);
-<a name="l01895"></a>01895
+<a name="l01895"></a>01895
<a name="l01899"></a>01899 RsSamplerValue <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#a22c6f5b3bf6e430a0295ab99f65f3dca">getMinification</a>();
<a name="l01903"></a>01903 RsSamplerValue <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#acaa10a3d84d99cd68d2274cbb427abb9">getMagnification</a>();
<a name="l01907"></a>01907 RsSamplerValue <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#aaa21bc15543fcf02bbd688c38e14080f">getWrapS</a>();
<a name="l01911"></a>01911 RsSamplerValue <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#a9515051eeea23c062d29ca8361114919">getWrapT</a>();
<a name="l01915"></a>01915 <span class="keywordtype">float</span> <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#ac4f94713027d23277a520f27f1522624">getAnisotropy</a>();
-<a name="l01916"></a>01916
+<a name="l01916"></a>01916
<a name="l01925"></a>01925 <span class="keyword">static</span> sp&lt;const Sampler&gt; <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#a0518c8081002dd7c5633c85a79e9c2f6">CLAMP_NEAREST</a>(sp&lt;RS&gt; rs);
<a name="l01934"></a>01934 <span class="keyword">static</span> sp&lt;const Sampler&gt; <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#a06c0a2b5a1c589855bdfa568ab3af5d7">CLAMP_LINEAR</a>(sp&lt;RS&gt; rs);
<a name="l01943"></a>01943 <span class="keyword">static</span> sp&lt;const Sampler&gt; <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#a3eab76d9b2f713959e69e54dc5041ba8">CLAMP_LINEAR_MIP_LINEAR</a>(sp&lt;RS&gt; rs);
@@ -886,283 +886,283 @@
<a name="l01979"></a>01979 <span class="keyword">static</span> sp&lt;const Sampler&gt; <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#aa1d8a9143f4e82182c11605d85c9deec">MIRRORED_REPEAT_NEAREST</a>(sp&lt;RS&gt; rs);
<a name="l01988"></a>01988 <span class="keyword">static</span> sp&lt;const Sampler&gt; <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#a56e9fa97beed1f3f0cf9baf23c2125b7">MIRRORED_REPEAT_LINEAR</a>(sp&lt;RS&gt; rs);
<a name="l01997"></a>01997 <span class="keyword">static</span> sp&lt;const Sampler&gt; <a class="code" href="classandroid_1_1RSC_1_1Sampler.html#adb6b89babff823202d1c5a112e6124ac">MIRRORED_REPEAT_LINEAR_MIP_LINEAR</a>(sp&lt;RS&gt; rs);
-<a name="l01998"></a>01998
+<a name="l01998"></a>01998
<a name="l01999"></a>01999 };
-<a name="l02000"></a>02000
+<a name="l02000"></a>02000
<a name="l02001"></a><a class="code" href="classandroid_1_1RSC_1_1Byte2.html">02001</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Byte2.html">Byte2</a> {
<a name="l02002"></a>02002 <span class="keyword">public</span>:
<a name="l02003"></a>02003 int8_t x, y;
-<a name="l02004"></a>02004
+<a name="l02004"></a>02004
<a name="l02005"></a>02005 <a class="code" href="classandroid_1_1RSC_1_1Byte2.html">Byte2</a>(int8_t initX, int8_t initY)
<a name="l02006"></a>02006 : x(initX), y(initY) {}
<a name="l02007"></a>02007 <a class="code" href="classandroid_1_1RSC_1_1Byte2.html">Byte2</a>() : x(0), y(0) {}
<a name="l02008"></a>02008 };
-<a name="l02009"></a>02009
+<a name="l02009"></a>02009
<a name="l02010"></a><a class="code" href="classandroid_1_1RSC_1_1Byte3.html">02010</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Byte3.html">Byte3</a> {
<a name="l02011"></a>02011 <span class="keyword">public</span>:
<a name="l02012"></a>02012 int8_t x, y, z;
-<a name="l02013"></a>02013
+<a name="l02013"></a>02013
<a name="l02014"></a>02014 <a class="code" href="classandroid_1_1RSC_1_1Byte3.html">Byte3</a>(int8_t initX, int8_t initY, int8_t initZ)
<a name="l02015"></a>02015 : x(initX), y(initY), z(initZ) {}
<a name="l02016"></a>02016 <a class="code" href="classandroid_1_1RSC_1_1Byte3.html">Byte3</a>() : x(0), y(0), z(0) {}
<a name="l02017"></a>02017 };
-<a name="l02018"></a>02018
+<a name="l02018"></a>02018
<a name="l02019"></a><a class="code" href="classandroid_1_1RSC_1_1Byte4.html">02019</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Byte4.html">Byte4</a> {
<a name="l02020"></a>02020 <span class="keyword">public</span>:
<a name="l02021"></a>02021 int8_t x, y, z, w;
-<a name="l02022"></a>02022
+<a name="l02022"></a>02022
<a name="l02023"></a>02023 <a class="code" href="classandroid_1_1RSC_1_1Byte4.html">Byte4</a>(int8_t initX, int8_t initY, int8_t initZ, int8_t initW)
<a name="l02024"></a>02024 : x(initX), y(initY), z(initZ), w(initW) {}
<a name="l02025"></a>02025 <a class="code" href="classandroid_1_1RSC_1_1Byte4.html">Byte4</a>() : x(0), y(0), z(0), w(0) {}
<a name="l02026"></a>02026 };
-<a name="l02027"></a>02027
+<a name="l02027"></a>02027
<a name="l02028"></a><a class="code" href="classandroid_1_1RSC_1_1UByte2.html">02028</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1UByte2.html">UByte2</a> {
<a name="l02029"></a>02029 <span class="keyword">public</span>:
<a name="l02030"></a>02030 uint8_t x, y;
-<a name="l02031"></a>02031
+<a name="l02031"></a>02031
<a name="l02032"></a>02032 <a class="code" href="classandroid_1_1RSC_1_1UByte2.html">UByte2</a>(uint8_t initX, uint8_t initY)
<a name="l02033"></a>02033 : x(initX), y(initY) {}
<a name="l02034"></a>02034 <a class="code" href="classandroid_1_1RSC_1_1UByte2.html">UByte2</a>() : x(0), y(0) {}
<a name="l02035"></a>02035 };
-<a name="l02036"></a>02036
+<a name="l02036"></a>02036
<a name="l02037"></a><a class="code" href="classandroid_1_1RSC_1_1UByte3.html">02037</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1UByte3.html">UByte3</a> {
<a name="l02038"></a>02038 <span class="keyword">public</span>:
<a name="l02039"></a>02039 uint8_t x, y, z;
-<a name="l02040"></a>02040
+<a name="l02040"></a>02040
<a name="l02041"></a>02041 <a class="code" href="classandroid_1_1RSC_1_1UByte3.html">UByte3</a>(uint8_t initX, uint8_t initY, uint8_t initZ)
<a name="l02042"></a>02042 : x(initX), y(initY), z(initZ) {}
<a name="l02043"></a>02043 <a class="code" href="classandroid_1_1RSC_1_1UByte3.html">UByte3</a>() : x(0), y(0), z(0) {}
<a name="l02044"></a>02044 };
-<a name="l02045"></a>02045
+<a name="l02045"></a>02045
<a name="l02046"></a><a class="code" href="classandroid_1_1RSC_1_1UByte4.html">02046</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1UByte4.html">UByte4</a> {
<a name="l02047"></a>02047 <span class="keyword">public</span>:
<a name="l02048"></a>02048 uint8_t x, y, z, w;
-<a name="l02049"></a>02049
+<a name="l02049"></a>02049
<a name="l02050"></a>02050 <a class="code" href="classandroid_1_1RSC_1_1UByte4.html">UByte4</a>(uint8_t initX, uint8_t initY, uint8_t initZ, uint8_t initW)
<a name="l02051"></a>02051 : x(initX), y(initY), z(initZ), w(initW) {}
<a name="l02052"></a>02052 <a class="code" href="classandroid_1_1RSC_1_1UByte4.html">UByte4</a>() : x(0), y(0), z(0), w(0) {}
<a name="l02053"></a>02053 };
-<a name="l02054"></a>02054
+<a name="l02054"></a>02054
<a name="l02055"></a><a class="code" href="classandroid_1_1RSC_1_1Short2.html">02055</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Short2.html">Short2</a> {
<a name="l02056"></a>02056 <span class="keyword">public</span>:
<a name="l02057"></a>02057 <span class="keywordtype">short</span> x, y;
-<a name="l02058"></a>02058
+<a name="l02058"></a>02058
<a name="l02059"></a>02059 <a class="code" href="classandroid_1_1RSC_1_1Short2.html">Short2</a>(<span class="keywordtype">short</span> initX, <span class="keywordtype">short</span> initY)
<a name="l02060"></a>02060 : x(initX), y(initY) {}
<a name="l02061"></a>02061 <a class="code" href="classandroid_1_1RSC_1_1Short2.html">Short2</a>() : x(0), y(0) {}
<a name="l02062"></a>02062 };
-<a name="l02063"></a>02063
+<a name="l02063"></a>02063
<a name="l02064"></a><a class="code" href="classandroid_1_1RSC_1_1Short3.html">02064</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Short3.html">Short3</a> {
<a name="l02065"></a>02065 <span class="keyword">public</span>:
<a name="l02066"></a>02066 <span class="keywordtype">short</span> x, y, z;
-<a name="l02067"></a>02067
+<a name="l02067"></a>02067
<a name="l02068"></a>02068 <a class="code" href="classandroid_1_1RSC_1_1Short3.html">Short3</a>(<span class="keywordtype">short</span> initX, <span class="keywordtype">short</span> initY, <span class="keywordtype">short</span> initZ)
<a name="l02069"></a>02069 : x(initX), y(initY), z(initZ) {}
<a name="l02070"></a>02070 <a class="code" href="classandroid_1_1RSC_1_1Short3.html">Short3</a>() : x(0), y(0), z(0) {}
<a name="l02071"></a>02071 };
-<a name="l02072"></a>02072
+<a name="l02072"></a>02072
<a name="l02073"></a><a class="code" href="classandroid_1_1RSC_1_1Short4.html">02073</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Short4.html">Short4</a> {
<a name="l02074"></a>02074 <span class="keyword">public</span>:
<a name="l02075"></a>02075 <span class="keywordtype">short</span> x, y, z, w;
-<a name="l02076"></a>02076
+<a name="l02076"></a>02076
<a name="l02077"></a>02077 <a class="code" href="classandroid_1_1RSC_1_1Short4.html">Short4</a>(<span class="keywordtype">short</span> initX, <span class="keywordtype">short</span> initY, <span class="keywordtype">short</span> initZ, <span class="keywordtype">short</span> initW)
<a name="l02078"></a>02078 : x(initX), y(initY), z(initZ), w(initW) {}
<a name="l02079"></a>02079 <a class="code" href="classandroid_1_1RSC_1_1Short4.html">Short4</a>() : x(0), y(0), z(0), w(0) {}
<a name="l02080"></a>02080 };
-<a name="l02081"></a>02081
+<a name="l02081"></a>02081
<a name="l02082"></a><a class="code" href="classandroid_1_1RSC_1_1UShort2.html">02082</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1UShort2.html">UShort2</a> {
<a name="l02083"></a>02083 <span class="keyword">public</span>:
<a name="l02084"></a>02084 uint16_t x, y;
-<a name="l02085"></a>02085
+<a name="l02085"></a>02085
<a name="l02086"></a>02086 <a class="code" href="classandroid_1_1RSC_1_1UShort2.html">UShort2</a>(uint16_t initX, uint16_t initY)
<a name="l02087"></a>02087 : x(initX), y(initY) {}
<a name="l02088"></a>02088 <a class="code" href="classandroid_1_1RSC_1_1UShort2.html">UShort2</a>() : x(0), y(0) {}
<a name="l02089"></a>02089 };
-<a name="l02090"></a>02090
+<a name="l02090"></a>02090
<a name="l02091"></a><a class="code" href="classandroid_1_1RSC_1_1UShort3.html">02091</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1UShort3.html">UShort3</a> {
<a name="l02092"></a>02092 <span class="keyword">public</span>:
<a name="l02093"></a>02093 uint16_t x, y, z;
-<a name="l02094"></a>02094
+<a name="l02094"></a>02094
<a name="l02095"></a>02095 <a class="code" href="classandroid_1_1RSC_1_1UShort3.html">UShort3</a>(uint16_t initX, uint16_t initY, uint16_t initZ)
<a name="l02096"></a>02096 : x(initX), y(initY), z(initZ) {}
<a name="l02097"></a>02097 <a class="code" href="classandroid_1_1RSC_1_1UShort3.html">UShort3</a>() : x(0), y(0), z(0) {}
<a name="l02098"></a>02098 };
-<a name="l02099"></a>02099
+<a name="l02099"></a>02099
<a name="l02100"></a><a class="code" href="classandroid_1_1RSC_1_1UShort4.html">02100</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1UShort4.html">UShort4</a> {
<a name="l02101"></a>02101 <span class="keyword">public</span>:
<a name="l02102"></a>02102 uint16_t x, y, z, w;
-<a name="l02103"></a>02103
+<a name="l02103"></a>02103
<a name="l02104"></a>02104 <a class="code" href="classandroid_1_1RSC_1_1UShort4.html">UShort4</a>(uint16_t initX, uint16_t initY, uint16_t initZ, uint16_t initW)
<a name="l02105"></a>02105 : x(initX), y(initY), z(initZ), w(initW) {}
<a name="l02106"></a>02106 <a class="code" href="classandroid_1_1RSC_1_1UShort4.html">UShort4</a>() : x(0), y(0), z(0), w(0) {}
<a name="l02107"></a>02107 };
-<a name="l02108"></a>02108
+<a name="l02108"></a>02108
<a name="l02109"></a><a class="code" href="classandroid_1_1RSC_1_1Int2.html">02109</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Int2.html">Int2</a> {
<a name="l02110"></a>02110 <span class="keyword">public</span>:
<a name="l02111"></a>02111 <span class="keywordtype">int</span> x, y;
-<a name="l02112"></a>02112
+<a name="l02112"></a>02112
<a name="l02113"></a>02113 <a class="code" href="classandroid_1_1RSC_1_1Int2.html">Int2</a>(<span class="keywordtype">int</span> initX, <span class="keywordtype">int</span> initY)
<a name="l02114"></a>02114 : x(initX), y(initY) {}
<a name="l02115"></a>02115 <a class="code" href="classandroid_1_1RSC_1_1Int2.html">Int2</a>() : x(0), y(0) {}
<a name="l02116"></a>02116 };
-<a name="l02117"></a>02117
+<a name="l02117"></a>02117
<a name="l02118"></a><a class="code" href="classandroid_1_1RSC_1_1Int3.html">02118</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Int3.html">Int3</a> {
<a name="l02119"></a>02119 <span class="keyword">public</span>:
<a name="l02120"></a>02120 <span class="keywordtype">int</span> x, y, z;
-<a name="l02121"></a>02121
+<a name="l02121"></a>02121
<a name="l02122"></a>02122 <a class="code" href="classandroid_1_1RSC_1_1Int3.html">Int3</a>(<span class="keywordtype">int</span> initX, <span class="keywordtype">int</span> initY, <span class="keywordtype">int</span> initZ)
<a name="l02123"></a>02123 : x(initX), y(initY), z(initZ) {}
<a name="l02124"></a>02124 <a class="code" href="classandroid_1_1RSC_1_1Int3.html">Int3</a>() : x(0), y(0), z(0) {}
<a name="l02125"></a>02125 };
-<a name="l02126"></a>02126
+<a name="l02126"></a>02126
<a name="l02127"></a><a class="code" href="classandroid_1_1RSC_1_1Int4.html">02127</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Int4.html">Int4</a> {
<a name="l02128"></a>02128 <span class="keyword">public</span>:
<a name="l02129"></a>02129 <span class="keywordtype">int</span> x, y, z, w;
-<a name="l02130"></a>02130
+<a name="l02130"></a>02130
<a name="l02131"></a>02131 <a class="code" href="classandroid_1_1RSC_1_1Int4.html">Int4</a>(<span class="keywordtype">int</span> initX, <span class="keywordtype">int</span> initY, <span class="keywordtype">int</span> initZ, <span class="keywordtype">int</span> initW)
<a name="l02132"></a>02132 : x(initX), y(initY), z(initZ), w(initW) {}
<a name="l02133"></a>02133 <a class="code" href="classandroid_1_1RSC_1_1Int4.html">Int4</a>() : x(0), y(0), z(0), w(0) {}
<a name="l02134"></a>02134 };
-<a name="l02135"></a>02135
+<a name="l02135"></a>02135
<a name="l02136"></a><a class="code" href="classandroid_1_1RSC_1_1UInt2.html">02136</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1UInt2.html">UInt2</a> {
<a name="l02137"></a>02137 <span class="keyword">public</span>:
<a name="l02138"></a>02138 uint32_t x, y;
-<a name="l02139"></a>02139
+<a name="l02139"></a>02139
<a name="l02140"></a>02140 <a class="code" href="classandroid_1_1RSC_1_1UInt2.html">UInt2</a>(uint32_t initX, uint32_t initY)
<a name="l02141"></a>02141 : x(initX), y(initY) {}
<a name="l02142"></a>02142 <a class="code" href="classandroid_1_1RSC_1_1UInt2.html">UInt2</a>() : x(0), y(0) {}
<a name="l02143"></a>02143 };
-<a name="l02144"></a>02144
+<a name="l02144"></a>02144
<a name="l02145"></a><a class="code" href="classandroid_1_1RSC_1_1UInt3.html">02145</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1UInt3.html">UInt3</a> {
<a name="l02146"></a>02146 <span class="keyword">public</span>:
<a name="l02147"></a>02147 uint32_t x, y, z;
-<a name="l02148"></a>02148
+<a name="l02148"></a>02148
<a name="l02149"></a>02149 <a class="code" href="classandroid_1_1RSC_1_1UInt3.html">UInt3</a>(uint32_t initX, uint32_t initY, uint32_t initZ)
<a name="l02150"></a>02150 : x(initX), y(initY), z(initZ) {}
<a name="l02151"></a>02151 <a class="code" href="classandroid_1_1RSC_1_1UInt3.html">UInt3</a>() : x(0), y(0), z(0) {}
<a name="l02152"></a>02152 };
-<a name="l02153"></a>02153
+<a name="l02153"></a>02153
<a name="l02154"></a><a class="code" href="classandroid_1_1RSC_1_1UInt4.html">02154</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1UInt4.html">UInt4</a> {
<a name="l02155"></a>02155 <span class="keyword">public</span>:
<a name="l02156"></a>02156 uint32_t x, y, z, w;
-<a name="l02157"></a>02157
+<a name="l02157"></a>02157
<a name="l02158"></a>02158 <a class="code" href="classandroid_1_1RSC_1_1UInt4.html">UInt4</a>(uint32_t initX, uint32_t initY, uint32_t initZ, uint32_t initW)
<a name="l02159"></a>02159 : x(initX), y(initY), z(initZ), w(initW) {}
<a name="l02160"></a>02160 <a class="code" href="classandroid_1_1RSC_1_1UInt4.html">UInt4</a>() : x(0), y(0), z(0), w(0) {}
<a name="l02161"></a>02161 };
-<a name="l02162"></a>02162
+<a name="l02162"></a>02162
<a name="l02163"></a><a class="code" href="classandroid_1_1RSC_1_1Long2.html">02163</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Long2.html">Long2</a> {
<a name="l02164"></a>02164 <span class="keyword">public</span>:
<a name="l02165"></a>02165 int64_t x, y;
-<a name="l02166"></a>02166
+<a name="l02166"></a>02166
<a name="l02167"></a>02167 <a class="code" href="classandroid_1_1RSC_1_1Long2.html">Long2</a>(int64_t initX, int64_t initY)
<a name="l02168"></a>02168 : x(initX), y(initY) {}
<a name="l02169"></a>02169 <a class="code" href="classandroid_1_1RSC_1_1Long2.html">Long2</a>() : x(0), y(0) {}
<a name="l02170"></a>02170 };
-<a name="l02171"></a>02171
+<a name="l02171"></a>02171
<a name="l02172"></a><a class="code" href="classandroid_1_1RSC_1_1Long3.html">02172</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Long3.html">Long3</a> {
<a name="l02173"></a>02173 <span class="keyword">public</span>:
<a name="l02174"></a>02174 int64_t x, y, z;
-<a name="l02175"></a>02175
+<a name="l02175"></a>02175
<a name="l02176"></a>02176 <a class="code" href="classandroid_1_1RSC_1_1Long3.html">Long3</a>(int64_t initX, int64_t initY, int64_t initZ)
<a name="l02177"></a>02177 : x(initX), y(initY), z(initZ) {}
<a name="l02178"></a>02178 <a class="code" href="classandroid_1_1RSC_1_1Long3.html">Long3</a>() : x(0), y(0), z(0) {}
<a name="l02179"></a>02179 };
-<a name="l02180"></a>02180
+<a name="l02180"></a>02180
<a name="l02181"></a><a class="code" href="classandroid_1_1RSC_1_1Long4.html">02181</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Long4.html">Long4</a> {
<a name="l02182"></a>02182 <span class="keyword">public</span>:
<a name="l02183"></a>02183 int64_t x, y, z, w;
-<a name="l02184"></a>02184
+<a name="l02184"></a>02184
<a name="l02185"></a>02185 <a class="code" href="classandroid_1_1RSC_1_1Long4.html">Long4</a>(int64_t initX, int64_t initY, int64_t initZ, int64_t initW)
<a name="l02186"></a>02186 : x(initX), y(initY), z(initZ), w(initW) {}
<a name="l02187"></a>02187 <a class="code" href="classandroid_1_1RSC_1_1Long4.html">Long4</a>() : x(0), y(0), z(0), w(0) {}
<a name="l02188"></a>02188 };
-<a name="l02189"></a>02189
+<a name="l02189"></a>02189
<a name="l02190"></a><a class="code" href="classandroid_1_1RSC_1_1ULong2.html">02190</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ULong2.html">ULong2</a> {
<a name="l02191"></a>02191 <span class="keyword">public</span>:
<a name="l02192"></a>02192 uint64_t x, y;
-<a name="l02193"></a>02193
+<a name="l02193"></a>02193
<a name="l02194"></a>02194 <a class="code" href="classandroid_1_1RSC_1_1ULong2.html">ULong2</a>(uint64_t initX, uint64_t initY)
<a name="l02195"></a>02195 : x(initX), y(initY) {}
<a name="l02196"></a>02196 <a class="code" href="classandroid_1_1RSC_1_1ULong2.html">ULong2</a>() : x(0), y(0) {}
<a name="l02197"></a>02197 };
-<a name="l02198"></a>02198
+<a name="l02198"></a>02198
<a name="l02199"></a><a class="code" href="classandroid_1_1RSC_1_1ULong3.html">02199</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ULong3.html">ULong3</a> {
<a name="l02200"></a>02200 <span class="keyword">public</span>:
<a name="l02201"></a>02201 uint64_t x, y, z;
-<a name="l02202"></a>02202
+<a name="l02202"></a>02202
<a name="l02203"></a>02203 <a class="code" href="classandroid_1_1RSC_1_1ULong3.html">ULong3</a>(uint64_t initX, uint64_t initY, uint64_t initZ)
<a name="l02204"></a>02204 : x(initX), y(initY), z(initZ) {}
<a name="l02205"></a>02205 <a class="code" href="classandroid_1_1RSC_1_1ULong3.html">ULong3</a>() : x(0), y(0), z(0) {}
<a name="l02206"></a>02206 };
-<a name="l02207"></a>02207
+<a name="l02207"></a>02207
<a name="l02208"></a><a class="code" href="classandroid_1_1RSC_1_1ULong4.html">02208</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1ULong4.html">ULong4</a> {
<a name="l02209"></a>02209 <span class="keyword">public</span>:
<a name="l02210"></a>02210 uint64_t x, y, z, w;
-<a name="l02211"></a>02211
+<a name="l02211"></a>02211
<a name="l02212"></a>02212 <a class="code" href="classandroid_1_1RSC_1_1ULong4.html">ULong4</a>(uint64_t initX, uint64_t initY, uint64_t initZ, uint64_t initW)
<a name="l02213"></a>02213 : x(initX), y(initY), z(initZ), w(initW) {}
<a name="l02214"></a>02214 <a class="code" href="classandroid_1_1RSC_1_1ULong4.html">ULong4</a>() : x(0), y(0), z(0), w(0) {}
<a name="l02215"></a>02215 };
-<a name="l02216"></a>02216
+<a name="l02216"></a>02216
<a name="l02217"></a><a class="code" href="classandroid_1_1RSC_1_1Float2.html">02217</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Float2.html">Float2</a> {
<a name="l02218"></a>02218 <span class="keyword">public</span>:
<a name="l02219"></a>02219 <span class="keywordtype">float</span> x, y;
-<a name="l02220"></a>02220
+<a name="l02220"></a>02220
<a name="l02221"></a>02221 <a class="code" href="classandroid_1_1RSC_1_1Float2.html">Float2</a>(<span class="keywordtype">float</span> initX, <span class="keywordtype">float</span> initY)
<a name="l02222"></a>02222 : x(initX), y(initY) {}
<a name="l02223"></a>02223 <a class="code" href="classandroid_1_1RSC_1_1Float2.html">Float2</a>() : x(0), y(0) {}
<a name="l02224"></a>02224 };
-<a name="l02225"></a>02225
+<a name="l02225"></a>02225
<a name="l02226"></a><a class="code" href="classandroid_1_1RSC_1_1Float3.html">02226</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Float3.html">Float3</a> {
<a name="l02227"></a>02227 <span class="keyword">public</span>:
<a name="l02228"></a>02228 <span class="keywordtype">float</span> x, y, z;
-<a name="l02229"></a>02229
+<a name="l02229"></a>02229
<a name="l02230"></a>02230 <a class="code" href="classandroid_1_1RSC_1_1Float3.html">Float3</a>(<span class="keywordtype">float</span> initX, <span class="keywordtype">float</span> initY, <span class="keywordtype">float</span> initZ)
<a name="l02231"></a>02231 : x(initX), y(initY), z(initZ) {}
<a name="l02232"></a>02232 <a class="code" href="classandroid_1_1RSC_1_1Float3.html">Float3</a>() : x(0.f), y(0.f), z(0.f) {}
<a name="l02233"></a>02233 };
-<a name="l02234"></a>02234
+<a name="l02234"></a>02234
<a name="l02235"></a><a class="code" href="classandroid_1_1RSC_1_1Float4.html">02235</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Float4.html">Float4</a> {
<a name="l02236"></a>02236 <span class="keyword">public</span>:
<a name="l02237"></a>02237 <span class="keywordtype">float</span> x, y, z, w;
-<a name="l02238"></a>02238
+<a name="l02238"></a>02238
<a name="l02239"></a>02239 <a class="code" href="classandroid_1_1RSC_1_1Float4.html">Float4</a>(<span class="keywordtype">float</span> initX, <span class="keywordtype">float</span> initY, <span class="keywordtype">float</span> initZ, <span class="keywordtype">float</span> initW)
<a name="l02240"></a>02240 : x(initX), y(initY), z(initZ), w(initW) {}
<a name="l02241"></a>02241 <a class="code" href="classandroid_1_1RSC_1_1Float4.html">Float4</a>() : x(0.f), y(0.f), z(0.f), w(0.f) {}
<a name="l02242"></a>02242 };
-<a name="l02243"></a>02243
+<a name="l02243"></a>02243
<a name="l02244"></a><a class="code" href="classandroid_1_1RSC_1_1Double2.html">02244</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Double2.html">Double2</a> {
<a name="l02245"></a>02245 <span class="keyword">public</span>:
<a name="l02246"></a>02246 <span class="keywordtype">double</span> x, y;
-<a name="l02247"></a>02247
+<a name="l02247"></a>02247
<a name="l02248"></a>02248 <a class="code" href="classandroid_1_1RSC_1_1Double2.html">Double2</a>(<span class="keywordtype">double</span> initX, <span class="keywordtype">double</span> initY)
<a name="l02249"></a>02249 : x(initX), y(initY) {}
<a name="l02250"></a>02250 <a class="code" href="classandroid_1_1RSC_1_1Double2.html">Double2</a>() : x(0), y(0) {}
<a name="l02251"></a>02251 };
-<a name="l02252"></a>02252
+<a name="l02252"></a>02252
<a name="l02253"></a><a class="code" href="classandroid_1_1RSC_1_1Double3.html">02253</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Double3.html">Double3</a> {
<a name="l02254"></a>02254 <span class="keyword">public</span>:
<a name="l02255"></a>02255 <span class="keywordtype">double</span> x, y, z;
-<a name="l02256"></a>02256
+<a name="l02256"></a>02256
<a name="l02257"></a>02257 <a class="code" href="classandroid_1_1RSC_1_1Double3.html">Double3</a>(<span class="keywordtype">double</span> initX, <span class="keywordtype">double</span> initY, <span class="keywordtype">double</span> initZ)
<a name="l02258"></a>02258 : x(initX), y(initY), z(initZ) {}
<a name="l02259"></a>02259 <a class="code" href="classandroid_1_1RSC_1_1Double3.html">Double3</a>() : x(0), y(0), z(0) {}
<a name="l02260"></a>02260 };
-<a name="l02261"></a>02261
+<a name="l02261"></a>02261
<a name="l02262"></a><a class="code" href="classandroid_1_1RSC_1_1Double4.html">02262</a> <span class="keyword">class </span><a class="code" href="classandroid_1_1RSC_1_1Double4.html">Double4</a> {
<a name="l02263"></a>02263 <span class="keyword">public</span>:
<a name="l02264"></a>02264 <span class="keywordtype">double</span> x, y, z, w;
-<a name="l02265"></a>02265
+<a name="l02265"></a>02265
<a name="l02266"></a>02266 <a class="code" href="classandroid_1_1RSC_1_1Double4.html">Double4</a>(<span class="keywordtype">double</span> initX, <span class="keywordtype">double</span> initY, <span class="keywordtype">double</span> initZ, <span class="keywordtype">double</span> initW)
<a name="l02267"></a>02267 : x(initX), y(initY), z(initZ), w(initW) {}
<a name="l02268"></a>02268 <a class="code" href="classandroid_1_1RSC_1_1Double4.html">Double4</a>() : x(0), y(0), z(0), w(0) {}
<a name="l02269"></a>02269 };
-<a name="l02270"></a>02270
+<a name="l02270"></a>02270
<a name="l02271"></a>02271 }
-<a name="l02272"></a>02272
+<a name="l02272"></a>02272
<a name="l02273"></a>02273 }
-<a name="l02274"></a>02274
+<a name="l02274"></a>02274
<a name="l02275"></a>02275 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
diff --git a/docs/renderscript/tab_a.png b/docs/Additional library docs/renderscript/tab_a.png
index 2d99ef23f..2d99ef23f 100644
--- a/docs/renderscript/tab_a.png
+++ b/docs/Additional library docs/renderscript/tab_a.png
Binary files differ
diff --git a/docs/renderscript/tab_b.png b/docs/Additional library docs/renderscript/tab_b.png
index b2c3d2be3..b2c3d2be3 100644
--- a/docs/renderscript/tab_b.png
+++ b/docs/Additional library docs/renderscript/tab_b.png
Binary files differ
diff --git a/docs/renderscript/tab_h.png b/docs/Additional library docs/renderscript/tab_h.png
index c11f48f19..c11f48f19 100644
--- a/docs/renderscript/tab_h.png
+++ b/docs/Additional library docs/renderscript/tab_h.png
Binary files differ
diff --git a/docs/renderscript/tab_s.png b/docs/Additional library docs/renderscript/tab_s.png
index 978943ac8..978943ac8 100644
--- a/docs/renderscript/tab_s.png
+++ b/docs/Additional library docs/renderscript/tab_s.png
Binary files differ
diff --git a/docs/renderscript/tabs.css b/docs/Additional library docs/renderscript/tabs.css
index 21920562a..21920562a 100644
--- a/docs/renderscript/tabs.css
+++ b/docs/Additional library docs/renderscript/tabs.css
diff --git a/docs/Change_Log.html b/docs/Change_Log.html
new file mode 100644
index 000000000..5bd98aee0
--- /dev/null
+++ b/docs/Change_Log.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html>
+
+<html>
+ <head>
+ <h2>Change List</h2>
+ <h3>Android NDK, Revision 10</a> <em>(July 2014)</em></h3>
+ </p>
+ <div class="toggle-content-toggleme">
+ <dl>
+ <dt>Important changes:</dt>
+ <dd>
+ <ul>
+ <li>Added 3 new ABIs, all 64-bit: arm64-v8a, x86_64, mips64.</li> Note that:
+ <ul>
+ <li>GCC 4.9 is the default compiler for 64-bit ABIs. Clang is currently version 3.4.
+<code>NDK_TOOLCHAIN_VERSION=clang</code>
+ may not work for arm64-v8a and mips64.</li>
+ <li>Android API level L is the first level with 64-bit support. Note that this API
+level is a temporary one, and only for L-preview. An actual API level number will replace it at
+L-release.</li>
+ <li>This release includes now includes <code>all32</code> and <code>all64</code>
+settings for <code>APP_ABI</code>.
+ <ul>
+ <li><code>APP_ABI=all32</code> is equivalent to
+<code>APP_ABI=armeabi,armeabi-v7a,x86,mips</code>.</li>
+ <li><code>APP_ABI=all64</code> is equivalent to
+<code>APP_ABI=arm64-v8a,x86_64,mips64</code>.</li>
+ <li><code>APP_ABI=all</code> selects all ABIs.</li>
+ </ul>
+ <li>The new GNU libstdc++ in Android-L contains all <code>&lt;tr1/cmath&gt;</code>
+Before defining your own math function, check <code>_GLIBCXX_USE_C99_MATH_TR1</code> to see a
+function with that name already exists, in order to avoid "multiple definition" errors from the
+linker.</li>
+ <li>The cpu-features library has been updated for the ARMv8 kernel. The existing
+cpu-features library may fail to detect the presence of NEON on the ARMv8 platform. Recompile your
+code with the new version.</li>
+ </ul>
+ <li>Added a new <code>platforms/android-L/</code> API directory. It includes:</li>
+ <ul>
+ <li>Updated Bionic headers, which had not changed from Android API levels 3
+(Cupcake) to 19 (KitKat). This new version, for level L, is to be synchronized with AOSP.</li>
+ <li>New media APIs and a native-codec sample.</li>
+ <li>An updated <code>Android.h</code> header for SLES/OpenSLES, enabling support for
+single-precision, floating-point audio format in AudioPlayer.</li>
+ <li>GLES 3.1 and AEP extensions to <code>libGLESv3.so.</code></li>
+ <li>GLES2 and GLES3 headers updated to the latest official Khronos versions.</li>
+ </ul>
+ <li>Added GCC 4.9 compilers to the 32-/64-bit ABIs. GCC 4.9 is the default (only) compiler
+for 64-bit ABIs, as previously mentioned. For 32-bit ABIs, you must explcitly enable GCC 4.9, as
+GCC 4.6 is still the default.</li>
+ <ul>
+ <li>For ndk-build, enable 32-bit, GCC 4.9 building either by adding
+<code>NDK_TOOLCHAIN_VERSION=4.9</code> to <code>Application.mk</code>, or exporting it as an
+environment variable from the command line.</li>
+ <li>For a standalone toolchain, use the <code> --toolchain=</code> option in the
+<code>make-standalone-toolchain.sh</code> script. For example: <code>--toolchain=arm-linux-androideabi-4.9.</code></li>
+ </ul>
+ <li>Upgraded GDB to version 7.6 in GCC 4.8/4.9 and x86*. Since GDB is still at version GDB-7.3.x in
+GCC 4.6 (the default for ARM and MIPS), you must set
+<code>NDK_TOOLCHAIN_VERSION=4.8</code> or <code>4.9</code> to enable ndk-gdb to select GDB 7.6.</li>
+ <li>Added the <code>-mssse3</code> build option to provide SSSE3 support, and made it the default for ABI x86
+(upgrading from SSE3). The image released by Google does not contain SSSE3 instructions.</li>
+ <li>Updated GCC 4.8 to 4.8.3.</li>
+ <li>Improved ARM libc++ EH support by switching from gabi++ to libc++abi. For details, see the "C++ Support" section of the documentation.
+ Note that:</li>
+ <ul>
+ <li>All tests except for locale now pass for Clang 3.4 and GCC 4.8. For more
+information, see the "C++ Support" section of the documentation.</li>
+ <li>The libc++ libraries for X86 and MIPS libc++ still use gabi++.</li>
+ <li>GCC 4.7 and later can now use &lt;atomic&gt;.</li>
+ <li>You must add <code>-fno-strict-aliasing</code> if you use <code> &lt;list&gt;</code>, because <code>__list_imp::_end</code>_ breaks
+ TBAA rules. (Issue <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61571">61571</a>.)</li>
+ <li>As of GCC 4.6, LIBCXX_FORCE_REBUILD:=true no longer rebuilds libc++. Rebuilding it
+requires the use of a different compiler. Note that Clang 3.3 is untested.</li>
+ </ul>
+ <li>mclinker is now version 2.7, and has aarch64 Linux support.</li>
+ <li>Added precompiled header support for headers specified by <code>LOCAL_PCH</code>. (Issue <a href="http://b.android.com/25412">25412</a>).</li>
+ </dd>
+ <dl>
+
+
+ <dt>Important bug fixes:</dt>
+ <dd>
+ <ul>
+ <li>Fixed libc++ so that it now compiles <code>std::feof</code>, etc. (Issue <a
+href="http://b.android.com/66668">66668</a>).</li>
+ <li>Fixed a Clang 3.3/3.4 atomic library call that caused crashes in some of the libc++
+tests for ABI armeabi.</li>
+ <li>Fixed Clang 3.4 crashes that were occurring on reading precompiled headers. (Issue <a
+href="http://b.android.com/66657">66657</a>).</li>
+ <li>Fixed the Clang 3.3/3.4 <code>-O3</code> assert on:</li>
+ <code>llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode*
+llvm::MDBuilder::createBranchWeights(llvm::ArrayRef<unsigned int>): Assertion Weights.size() >= 2
+&& "Need at least two branch weights!"</code> (Issue <a href="http://b.android.com/57381">57381</a>).
+ <li>Fixed the following Clang 3.3/3.4 crash:</li>
+ <code>Assertion failed: (!Fn && "cast failed but able to resolve overload expression!!"), function CheckCXXCStyleCast, file
+Volumes/data/ndk-toolchain/src/llvm-3.3/llvm/tools/clang/lib/Sema/SemaCast.cpp, line 2018</code>.
+(Issue <a href="http://b.android.com/66950">66950</a>).
+ </ul>
+ </dd>
+
+ <dt>Other bug fixes:</dt>
+ <dd>
+ <ul>
+ <li>Fixed headers:</li>
+ <ul>
+ <li>Fixed 32-bit <code>ssize_t</code> to be <code>int</code> instead of <code>long
+int</code>.</li>
+ <li>Fixed <code>WCHAR_MIN</code> and <code>WCHAR_MAX</code> so that they they take
+appropriate signs according to the architecture they're running on:</li>
+ <ul>
+ <li>X86/MIPS: signed.
+ <li>ARM: unsigned.
+ <li>To force X86/MIPS to default to unsigned, use
+<code>-D__WCHAR_UNSIGNED__</code>.</li>
+ <li>To force <code>wchar_t</code> to be 16 bits, use <code>-fshort-wchar</code>.</li>
+ </ul>
+ <li>Removed non-existent symbols from 32-bit <code>libc.so</code>, and added <code>pread64</code>,
+<code>pwrite64</code>, <code>ftruncate64</code> for
+Android API level 12 and higher. (Issue <a href="http://b.android.com/69319">69319</a>). For more
+information, see the commit message accompanying AOSP change list
+ <a href="https://android-review.googlesource.com/#/c/94137">94137</a>.</li>
+ </ul>
+ <li>Fixed GCC warning about redefinition of <code>putchar</code>. Warning message reads:</li>
+ <code>include/stdio.h:236:5: warning: conflicts with previous declaration here
+[-Wattributes] int putchar(int);</code> (Change list <a
+href="https://android-review.googlesource.com/#/c/91185">91185</a>).
+ <li>Fixed <code>make-standalone-toolchain.sh --stl=libc++</code> so that it:</li>
+ <ul>
+ <li>Copies <code>cxxabi.h</code>. (Issue <a
+href="http://b.android.com/68001">68001</a>).</li>
+ <li>Runs in directories other than the NDK install directory. (Issues <a
+href="http://b.android.com/67690">67690</a> and <a href="http://b.android.com/68647">68647</a>).</li>
+ </ul>
+ <li>Fixed GCC/Windows to quote arguments only when necessary for spawning processes in
+external programs. This change decreases the likelihood of exceeding the 32K length limit.</li>
+ <li>Fixed an issue that made it impossible to adjust the <code>APP_PLATFORM</code>
+environment variable.</li>
+ <li>Fixed the implementation of <code>IsSystemLibrary()</code> in crazy_linker so that it
+uses <code>strrchr()</code>
+ instead of <code>strchr()</code> to find the library path's true basename.</li>
+ <li>Fixed native-audio's inability to build in debug mode.</li>
+ <li>Fixed gdb's inability to print extreme floating-point numbers. (Issue <a
+href="http://b.android.com/69203">69203</a>).</li>
+ <li>Fixed Clang 3.4 inability to compile with <code>-Wl,-shared</code> (as opposed to
+<code>-shared</code>, which
+ had no compilation issues). The problem was that Clang added <code>-pie</code> for Android
+targets if neither <code>-shared</code> nor <code>-static</code> existed. This behavior, which was
+incorrect, caused the linker to complain that <code>-shared</code> and <code>-pie</code> could not
+co-exist.</li>
+
+ </ul>
+ </dd>
+ <dt>Other changes:</dt>
+ <dd>
+ <ul>
+ <li>Added <code>arm_neon.h</code> to the x86 toolchain so that it now emulates ~47% of
+Neon. There is currently no support for 64-bit types. For more information, see the section on ARM
+Neon intrinsics support in the x86 documentation.</li>
+ <li>Ported ARM/GOT_PREL optimization (present in GCC 4.6 built from the GCC google branch) to
+ARM GCC 4.8/4.9. This optimization sometimes reduces instruction count when accessing global
+variables. As an example, see the build.sh script in
+<code>$NDK/tests/build/b14811006-GOT_PREL-optimization/</code>.</li>
+ <li>Added ARM version for STL gabi++, stlport, and libc++. They now have both it and Thumb
+mode.</li>
+ <li>It is now possible to call the make-standalone-toolchain.sh script with
+<code>--toolchain=x86_64-linux-android-4.9</code>, which is equivalent to
+<code>--toolchain=x86_64-4.9</code>.</li>
+ </dd>
+ </ul>
+ </dl>
+ </div>
+</div>
+
+A comprehensive change list, going through all previous releases of the NDK, can be found at the <a href="http://developer.android.com/tools/sdk/ndk/index.html">Android developer website.</a><br>
+ <br>
+
+ <div id="copyright">
+
+ Except as noted, this content is
+ licensed under <a href="http://creativecommons.org/licenses/by/2.5/">
+ Creative Commons Attribution 2.5</a>. For details and
+ restrictions, see the <a href="http://developer.android.com/license.html">Content
+ License</a>.
+ <div id="footerlinks">
+
+ <p>
+ <a href="http://developer.android.com/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+ <a href="http://developer.android.com/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+ <a href="http://developer.android.com/support.html">Support</a>
+ </p>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/docs/Getting_Started/html/bc_s.png b/docs/Getting_Started/html/bc_s.png
new file mode 100644
index 000000000..224b29aa9
--- /dev/null
+++ b/docs/Getting_Started/html/bc_s.png
Binary files differ
diff --git a/docs/Getting_Started/html/bdwn.png b/docs/Getting_Started/html/bdwn.png
new file mode 100644
index 000000000..940a0b950
--- /dev/null
+++ b/docs/Getting_Started/html/bdwn.png
Binary files differ
diff --git a/docs/Getting_Started/html/closed.png b/docs/Getting_Started/html/closed.png
new file mode 100644
index 000000000..98cc2c909
--- /dev/null
+++ b/docs/Getting_Started/html/closed.png
Binary files differ
diff --git a/docs/Getting_Started/html/doxygen.css b/docs/Getting_Started/html/doxygen.css
new file mode 100644
index 000000000..cdafb5fea
--- /dev/null
+++ b/docs/Getting_Started/html/doxygen.css
@@ -0,0 +1,1356 @@
+/* The standard CSS for doxygen 1.8.5 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+div.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+ margin-top: 2px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #ffffff;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 0px;
+ margin: 0px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+div.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: bold;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-topleft: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view when not used as main index */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+ padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.note
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #505050;
+}
+
+dl.todo
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 20px 10px 10px;
+ width: 200px;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
diff --git a/docs/Getting_Started/html/doxygen.png b/docs/Getting_Started/html/doxygen.png
new file mode 100644
index 000000000..3ff17d807
--- /dev/null
+++ b/docs/Getting_Started/html/doxygen.png
Binary files differ
diff --git a/docs/Getting_Started/html/dynsections.js b/docs/Getting_Started/html/dynsections.js
new file mode 100644
index 000000000..10420e745
--- /dev/null
+++ b/docs/Getting_Started/html/dynsections.js
@@ -0,0 +1,96 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function(){
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l<level+1) {
+ i.attr('src','ftv2folderopen.png');
+ a.attr('src','ftv2mnode.png');
+ $(this).show();
+ } else if (l==level+1) {
+ i.attr('src','ftv2folderclosed.png');
+ a.attr('src','ftv2pnode.png');
+ $(this).show();
+ } else {
+ $(this).hide();
+ }
+ });
+ updateStripes();
+}
+
+function toggleFolder(id)
+{
+ //The clicked row
+ var currentRow = $('#row_'+id);
+ var currentRowImages = currentRow.find("img");
+
+ //All rows after the clicked row
+ var rows = currentRow.nextAll("tr");
+
+ //Only match elements AFTER this one (can't hide elements before)
+ var childRows = rows.filter(function() {
+ var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+ return this.id.match(re);
+ });
+
+ //First row is visible we are HIDING
+ if (childRows.filter(':first').is(':visible')===true) {
+ currentRowImages.filter("[id^=arr]").attr('src', 'ftv2pnode.png');
+ currentRowImages.filter("[id^=img]").attr('src', 'ftv2folderclosed.png');
+ rows.filter("[id^=row_"+id+"]").hide();
+ } else { //We are SHOWING
+ //All sub images
+ var childImages = childRows.find("img");
+ var childImg = childImages.filter("[id^=img]");
+ var childArr = childImages.filter("[id^=arr]");
+
+ currentRow.find("[id^=arr]").attr('src', 'ftv2mnode.png'); //open row
+ currentRow.find("[id^=img]").attr('src', 'ftv2folderopen.png'); //open row
+ childImg.attr('src','ftv2folderclosed.png'); //children closed
+ childArr.attr('src','ftv2pnode.png'); //children closed
+ childRows.show(); //show all children
+ }
+ updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+ var rows = $('tr.inherit.'+id);
+ var img = $('tr.inherit_header.'+id+' img');
+ var src = $(img).attr('src');
+ if (rows.filter(':first').is(':visible')===true) {
+ rows.css('display','none');
+ $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ rows.css('display','table-row'); // using show() causes jump in firefox
+ $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+}
diff --git a/docs/Getting_Started/html/ftv2blank.png b/docs/Getting_Started/html/ftv2blank.png
new file mode 100644
index 000000000..63c605bb4
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2blank.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2cl.png b/docs/Getting_Started/html/ftv2cl.png
new file mode 100644
index 000000000..132f6577b
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2cl.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2doc.png b/docs/Getting_Started/html/ftv2doc.png
new file mode 100644
index 000000000..17edabff9
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2doc.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2folderclosed.png b/docs/Getting_Started/html/ftv2folderclosed.png
new file mode 100644
index 000000000..bb8ab35ed
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2folderclosed.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2folderopen.png b/docs/Getting_Started/html/ftv2folderopen.png
new file mode 100644
index 000000000..d6c7f676a
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2folderopen.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2lastnode.png b/docs/Getting_Started/html/ftv2lastnode.png
new file mode 100644
index 000000000..63c605bb4
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2lastnode.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2link.png b/docs/Getting_Started/html/ftv2link.png
new file mode 100644
index 000000000..17edabff9
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2link.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2mlastnode.png b/docs/Getting_Started/html/ftv2mlastnode.png
new file mode 100644
index 000000000..0b63f6d38
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2mlastnode.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2mnode.png b/docs/Getting_Started/html/ftv2mnode.png
new file mode 100644
index 000000000..0b63f6d38
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2mnode.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2mo.png b/docs/Getting_Started/html/ftv2mo.png
new file mode 100644
index 000000000..4bfb80f76
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2mo.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2node.png b/docs/Getting_Started/html/ftv2node.png
new file mode 100644
index 000000000..63c605bb4
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2node.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2ns.png b/docs/Getting_Started/html/ftv2ns.png
new file mode 100644
index 000000000..72e3d71c2
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2ns.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2plastnode.png b/docs/Getting_Started/html/ftv2plastnode.png
new file mode 100644
index 000000000..c6ee22f93
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2plastnode.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2pnode.png b/docs/Getting_Started/html/ftv2pnode.png
new file mode 100644
index 000000000..c6ee22f93
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2pnode.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2splitbar.png b/docs/Getting_Started/html/ftv2splitbar.png
new file mode 100644
index 000000000..fe895f2c5
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2splitbar.png
Binary files differ
diff --git a/docs/Getting_Started/html/ftv2vertline.png b/docs/Getting_Started/html/ftv2vertline.png
new file mode 100644
index 000000000..63c605bb4
--- /dev/null
+++ b/docs/Getting_Started/html/ftv2vertline.png
Binary files differ
diff --git a/docs/Getting_Started/html/images/Figure_1.png b/docs/Getting_Started/html/images/Figure_1.png
new file mode 100644
index 000000000..322df6ca6
--- /dev/null
+++ b/docs/Getting_Started/html/images/Figure_1.png
Binary files differ
diff --git a/docs/Getting_Started/html/images/Figure_2.png b/docs/Getting_Started/html/images/Figure_2.png
new file mode 100755
index 000000000..e305b9f2e
--- /dev/null
+++ b/docs/Getting_Started/html/images/Figure_2.png
Binary files differ
diff --git a/docs/Getting_Started/html/images/Figure_3.png b/docs/Getting_Started/html/images/Figure_3.png
new file mode 100755
index 000000000..70c162f20
--- /dev/null
+++ b/docs/Getting_Started/html/images/Figure_3.png
Binary files differ
diff --git a/docs/Getting_Started/html/index.html b/docs/Getting_Started/html/index.html
new file mode 100644
index 000000000..3f1b7f05e
--- /dev/null
+++ b/docs/Getting_Started/html/index.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Native Development Kit ("NDK")
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Getting Started with the NDK</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This document explains how to:</p>
+<ul>
+<li><a href=#install>Get and install the NDK.</a></li>
+<li><a href=#configure>Configure your system and the Eclipse and the Android Development Tools (“ADT”) for use with it.</a></li>
+<li><a href=#verify>Verify, using a simple sample, that everything is working as expected.</a></li>
+</ul>
+<p>Note that this document assumes that you are already familiar with Java-based Android development. For more information on that topic, see the <a href="http://developer.android.com">Android developer site</a>.</p>
+<a id=install></a>
+<h2>Installation</h2>
+<p>To install and configure the NDK, follow the steps below:
+<ol type="1">
+<li>To use the NDK, you must first have the <a href="http://developer.android.com/sdk/index.html">Android SDK</a> installed.</li>
+<li>Next, <a href="http://developer.android.com/tools/sdk/ndk/index.html">download</a> and unzip the NDK, making sure to download the correct version for your development platform. You may place the unzipped directory anywhere on your local drive.</li>
+<li><b>If you are building from the command line,</b> open a terminal window, and update your <code>PATH</code> environment variable with the location of the directory that contains the NDK.</li>
+</ol>
+<ul style="list-style: none; ">
+<li>
+<p class="startli">For example, in bash:</p>
+<p class="endli"></p>
+</li>
+<li>
+<p class="startli"></p>
+<pre class="fragment">export PATH=$PATH:~/Android_SDK/NDK/<android-ndk-version>
+</pre><p class="endli"></p>
+</li>
+<li>
+<p class="startli">Or, in Windows:</p>
+<p class="endli"></p>
+</li>
+<li>
+<p class="startli"></p>
+<pre class="fragment">set PATH=%PATH%;C:/Android_SDK/NDK/android-ndk-r10
+</pre> </li>
+</ul>
+<a id=configure></a>
+<h2>Configuring Eclipse</h2>
+<p>Eclipse must know where the NDK is in order to use it when building your app.Follow these steps to set the location of the NDK:</p>
+<ol type="1">
+<li>Launch Eclipse, which is installed as part of the Android SDK.</li>
+<li>Open <b>Preferences</b>.</li>
+<li>In the pane on the left side of the <em>Preferences</em> window, select <strong>Android &gt; NDK</strong>. The <em>Android</em> section expands, revealing a number of subsections.</li>
+<li>Select <b>NDK</b>. In the pane on the right side of the <em>Preferences</em> window, browse to the directory that contains the NDK.
+
+<li>Click <b>OK</b> to return to the <em>Package Explorer</em> display.</li>
+</ol>
+<a id=verify></a>
+<h2>Verification</h2>
+<h3>Eclipse</h3>
+<p> To confirm that you have installed the NDK, set it up correctly, and properly configure Eclipse, follow these steps:</p>
+<ol type="1">
+<li>Import the hello-jni sample from `&lt;ndk&gt;/samples/’, as you would any other Android project.</li>
+<li>In the <em>Project Explorer</em> pane, right-click the project name (<em>HelloJni</em>). A context menu appears.</li>
+<li>From the context menu, select <b>Android Tools</b> &gt; <b>Add Native Support</b>, as shown in Figure 2. The <em>Add Android Native Support</em> window appears.</li>
+
+<div class="image">
+<img src="./images/Figure_2.png" alt="Adding native support" align="left" width="660"/>
+</div>
+<p style="clear:both"><b>Figure 1.</b> Adding native support to your project</p>
+
+<li>Accept the default library name (“hello-jni”), and click <b>Finish</b>.</li>
+<li>Build and execute the application.</li>
+</ol>
+<h3>Command line</h3>
+Follow these steps to build from the command line:
+
+<ol type="1">
+<li>Change to the root directory of your project.</li>
+<li>Execute ndk-build to build the native component of your app.<br/>
+</li>
+
+<pre class="fragment">$ ndk-build
+</pre>
+ </code></p>
+
+<li>Build and install your project as you would a regular Android app written in Java. For more information, see <a href="http://developer.android.com/tools/building/index.html">Building and Running</a> and <a href="http://developer.android.com/tools/building/building-cmdline.html">Building and Running from the Command Line</a>.</li>
+</ol>
+<p>If you have successfully installed and configured the NDK, the screen on your target device looks as shown in Figure 3.</p>
+<div class="image">
+<img src="./images/Figure_3.png" alt="successful launch screen" align="left" width="220"/>
+</div>
+<p style="clear:both"><b>Figure 2.</b> Target-device screen after successful launch </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Jun 16 2014 21:28:06 for Native Development Kit ("NDK") by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/docs/Getting_Started/html/jquery.js b/docs/Getting_Started/html/jquery.js
new file mode 100644
index 000000000..c197801c5
--- /dev/null
+++ b/docs/Getting_Started/html/jquery.js
@@ -0,0 +1,31 @@
+/*!
+ * jQuery JavaScript Library v1.7.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Mon Nov 21 21:11:03 2011 -0500
+ */
+(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))
+}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;
+if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false
+}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1
+},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);
+ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;
+if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)
+}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b
+})}})(window);
diff --git a/docs/Getting_Started/html/menu_Add_Native_Support.png b/docs/Getting_Started/html/menu_Add_Native_Support.png
new file mode 100755
index 000000000..e305b9f2e
--- /dev/null
+++ b/docs/Getting_Started/html/menu_Add_Native_Support.png
Binary files differ
diff --git a/docs/Getting_Started/html/nav_f.png b/docs/Getting_Started/html/nav_f.png
new file mode 100644
index 000000000..72a58a529
--- /dev/null
+++ b/docs/Getting_Started/html/nav_f.png
Binary files differ
diff --git a/docs/Getting_Started/html/nav_g.png b/docs/Getting_Started/html/nav_g.png
new file mode 100644
index 000000000..2093a237a
--- /dev/null
+++ b/docs/Getting_Started/html/nav_g.png
Binary files differ
diff --git a/docs/Getting_Started/html/nav_h.png b/docs/Getting_Started/html/nav_h.png
new file mode 100644
index 000000000..33389b101
--- /dev/null
+++ b/docs/Getting_Started/html/nav_h.png
Binary files differ
diff --git a/docs/Getting_Started/html/open.png b/docs/Getting_Started/html/open.png
new file mode 100644
index 000000000..30f75c7ef
--- /dev/null
+++ b/docs/Getting_Started/html/open.png
Binary files differ
diff --git a/docs/Getting_Started/html/pages.html b/docs/Getting_Started/html/pages.html
new file mode 100644
index 000000000..0bdcf90f1
--- /dev/null
+++ b/docs/Getting_Started/html/pages.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Related Pages</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Related Pages</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="md__getting__started.html" target="_self">Getting Started with the NDK</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Mon Jun 16 2014 20:33:34 for NDK Programmer&#39;s Guide by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/docs/Getting_Started/html/sync_off.png b/docs/Getting_Started/html/sync_off.png
new file mode 100644
index 000000000..3b443fc62
--- /dev/null
+++ b/docs/Getting_Started/html/sync_off.png
Binary files differ
diff --git a/docs/Getting_Started/html/sync_on.png b/docs/Getting_Started/html/sync_on.png
new file mode 100644
index 000000000..e08320fb6
--- /dev/null
+++ b/docs/Getting_Started/html/sync_on.png
Binary files differ
diff --git a/docs/Getting_Started/html/tab_a.png b/docs/Getting_Started/html/tab_a.png
new file mode 100644
index 000000000..3b725c41c
--- /dev/null
+++ b/docs/Getting_Started/html/tab_a.png
Binary files differ
diff --git a/docs/Getting_Started/html/tab_b.png b/docs/Getting_Started/html/tab_b.png
new file mode 100644
index 000000000..e2b4a8638
--- /dev/null
+++ b/docs/Getting_Started/html/tab_b.png
Binary files differ
diff --git a/docs/Getting_Started/html/tab_h.png b/docs/Getting_Started/html/tab_h.png
new file mode 100644
index 000000000..fd5cb7054
--- /dev/null
+++ b/docs/Getting_Started/html/tab_h.png
Binary files differ
diff --git a/docs/Getting_Started/html/tab_s.png b/docs/Getting_Started/html/tab_s.png
new file mode 100644
index 000000000..ab478c95b
--- /dev/null
+++ b/docs/Getting_Started/html/tab_s.png
Binary files differ
diff --git a/docs/Getting_Started/html/tabs.css b/docs/Getting_Started/html/tabs.css
new file mode 100644
index 000000000..9cf578f23
--- /dev/null
+++ b/docs/Getting_Started/html/tabs.css
@@ -0,0 +1,60 @@
+.tabs, .tabs2, .tabs3 {
+ background-image: url('tab_b.png');
+ width: 100%;
+ z-index: 101;
+ font-size: 13px;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+.tabs2 {
+ font-size: 10px;
+}
+.tabs3 {
+ font-size: 9px;
+}
+
+.tablist {
+ margin: 0;
+ padding: 0;
+ display: table;
+}
+
+.tablist li {
+ float: left;
+ display: table-cell;
+ background-image: url('tab_b.png');
+ line-height: 36px;
+ list-style: none;
+}
+
+.tablist a {
+ display: block;
+ padding: 0 20px;
+ font-weight: bold;
+ background-image:url('tab_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color: #283A5D;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+ outline: none;
+}
+
+.tabs3 .tablist a {
+ padding: 0 10px;
+}
+
+.tablist a:hover {
+ background-image: url('tab_h.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+ text-decoration: none;
+}
+
+.tablist li.current a {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
diff --git a/docs/Programmers_Guide/html/bc_s.png b/docs/Programmers_Guide/html/bc_s.png
new file mode 100644
index 000000000..224b29aa9
--- /dev/null
+++ b/docs/Programmers_Guide/html/bc_s.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/bdwn.png b/docs/Programmers_Guide/html/bdwn.png
new file mode 100644
index 000000000..940a0b950
--- /dev/null
+++ b/docs/Programmers_Guide/html/bdwn.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/closed.png b/docs/Programmers_Guide/html/closed.png
new file mode 100644
index 000000000..98cc2c909
--- /dev/null
+++ b/docs/Programmers_Guide/html/closed.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/doxygen.css b/docs/Programmers_Guide/html/doxygen.css
new file mode 100644
index 000000000..cdafb5fea
--- /dev/null
+++ b/docs/Programmers_Guide/html/doxygen.css
@@ -0,0 +1,1356 @@
+/* The standard CSS for doxygen 1.8.5 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+div.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+ margin-top: 2px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #ffffff;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 0px;
+ margin: 0px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+div.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: bold;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-topleft: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view when not used as main index */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+ padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.note
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #505050;
+}
+
+dl.todo
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 20px 10px 10px;
+ width: 200px;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
diff --git a/docs/Programmers_Guide/html/doxygen.png b/docs/Programmers_Guide/html/doxygen.png
new file mode 100644
index 000000000..3ff17d807
--- /dev/null
+++ b/docs/Programmers_Guide/html/doxygen.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/dynsections.js b/docs/Programmers_Guide/html/dynsections.js
new file mode 100644
index 000000000..10420e745
--- /dev/null
+++ b/docs/Programmers_Guide/html/dynsections.js
@@ -0,0 +1,96 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function(){
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l<level+1) {
+ i.attr('src','ftv2folderopen.png');
+ a.attr('src','ftv2mnode.png');
+ $(this).show();
+ } else if (l==level+1) {
+ i.attr('src','ftv2folderclosed.png');
+ a.attr('src','ftv2pnode.png');
+ $(this).show();
+ } else {
+ $(this).hide();
+ }
+ });
+ updateStripes();
+}
+
+function toggleFolder(id)
+{
+ //The clicked row
+ var currentRow = $('#row_'+id);
+ var currentRowImages = currentRow.find("img");
+
+ //All rows after the clicked row
+ var rows = currentRow.nextAll("tr");
+
+ //Only match elements AFTER this one (can't hide elements before)
+ var childRows = rows.filter(function() {
+ var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+ return this.id.match(re);
+ });
+
+ //First row is visible we are HIDING
+ if (childRows.filter(':first').is(':visible')===true) {
+ currentRowImages.filter("[id^=arr]").attr('src', 'ftv2pnode.png');
+ currentRowImages.filter("[id^=img]").attr('src', 'ftv2folderclosed.png');
+ rows.filter("[id^=row_"+id+"]").hide();
+ } else { //We are SHOWING
+ //All sub images
+ var childImages = childRows.find("img");
+ var childImg = childImages.filter("[id^=img]");
+ var childArr = childImages.filter("[id^=arr]");
+
+ currentRow.find("[id^=arr]").attr('src', 'ftv2mnode.png'); //open row
+ currentRow.find("[id^=img]").attr('src', 'ftv2folderopen.png'); //open row
+ childImg.attr('src','ftv2folderclosed.png'); //children closed
+ childArr.attr('src','ftv2pnode.png'); //children closed
+ childRows.show(); //show all children
+ }
+ updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+ var rows = $('tr.inherit.'+id);
+ var img = $('tr.inherit_header.'+id+' img');
+ var src = $(img).attr('src');
+ if (rows.filter(':first').is(':visible')===true) {
+ rows.css('display','none');
+ $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ rows.css('display','table-row'); // using show() causes jump in firefox
+ $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+}
diff --git a/docs/Programmers_Guide/html/ftv2blank.png b/docs/Programmers_Guide/html/ftv2blank.png
new file mode 100644
index 000000000..63c605bb4
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2blank.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2cl.png b/docs/Programmers_Guide/html/ftv2cl.png
new file mode 100644
index 000000000..132f6577b
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2cl.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2doc.png b/docs/Programmers_Guide/html/ftv2doc.png
new file mode 100644
index 000000000..17edabff9
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2doc.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2folderclosed.png b/docs/Programmers_Guide/html/ftv2folderclosed.png
new file mode 100644
index 000000000..bb8ab35ed
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2folderclosed.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2folderopen.png b/docs/Programmers_Guide/html/ftv2folderopen.png
new file mode 100644
index 000000000..d6c7f676a
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2folderopen.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2lastnode.png b/docs/Programmers_Guide/html/ftv2lastnode.png
new file mode 100644
index 000000000..63c605bb4
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2lastnode.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2link.png b/docs/Programmers_Guide/html/ftv2link.png
new file mode 100644
index 000000000..17edabff9
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2link.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2mlastnode.png b/docs/Programmers_Guide/html/ftv2mlastnode.png
new file mode 100644
index 000000000..0b63f6d38
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2mlastnode.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2mnode.png b/docs/Programmers_Guide/html/ftv2mnode.png
new file mode 100644
index 000000000..0b63f6d38
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2mnode.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2mo.png b/docs/Programmers_Guide/html/ftv2mo.png
new file mode 100644
index 000000000..4bfb80f76
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2mo.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2node.png b/docs/Programmers_Guide/html/ftv2node.png
new file mode 100644
index 000000000..63c605bb4
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2node.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2ns.png b/docs/Programmers_Guide/html/ftv2ns.png
new file mode 100644
index 000000000..72e3d71c2
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2ns.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2plastnode.png b/docs/Programmers_Guide/html/ftv2plastnode.png
new file mode 100644
index 000000000..c6ee22f93
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2plastnode.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2pnode.png b/docs/Programmers_Guide/html/ftv2pnode.png
new file mode 100644
index 000000000..c6ee22f93
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2pnode.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2splitbar.png b/docs/Programmers_Guide/html/ftv2splitbar.png
new file mode 100644
index 000000000..fe895f2c5
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2splitbar.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/ftv2vertline.png b/docs/Programmers_Guide/html/ftv2vertline.png
new file mode 100644
index 000000000..63c605bb4
--- /dev/null
+++ b/docs/Programmers_Guide/html/ftv2vertline.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/images/NDK_build_string.png b/docs/Programmers_Guide/html/images/NDK_build_string.png
new file mode 100644
index 000000000..6a6954a1b
--- /dev/null
+++ b/docs/Programmers_Guide/html/images/NDK_build_string.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/index.html b/docs/Programmers_Guide/html/index.html
new file mode 100644
index 000000000..f370cec16
--- /dev/null
+++ b/docs/Programmers_Guide/html/index.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('index.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">NDK Programmer's Guide Documentation</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><ul style="list-style: none; ">
+<li>
+<a href="/md_1__concepts__concepts.html">1. Concepts</a> <ul style="list-style: none; ">
+<li>
+<a href="./md_1__concepts__concepts.html#bb">Before Beginning</a> </li>
+<li>
+<a href="./md_1__concepts__concepts.html#intro">Introduction</a> </li>
+<li>
+<a href="./md_1__concepts__concepts.html#hiw">How It Works</a> <ul style="list-style: none; ">
+<li>
+<a href="./md_1__concepts__concepts.html#mc">Main Components</a> </li>
+<li>
+<a href="./md_1__concepts__concepts.html#fl">Flow</a> </li>
+</ul>
+</li>
+<li>
+<a href="./md_1__concepts__concepts.html#naa">Native Activities and Applications</a> </li>
+</ul>
+</li>
+<li>
+<a href="./md_2__samples__samples.html">2. Samples</a> <ul style="list-style: none; ">
+<li>
+<a href="./md_2__samples_sample--hellojni.html">hello-jni</a> </li>
+<li>
+<a href="./md_2__samples_sample--nativeactivity.html">native-activity</a> </li>
+<li>
+<a href="./md_2__samples_samples-teapot.html">Teapot</a> </li>
+</ul>
+</li>
+<li>
+<a href="./md_3__key__topics__building_building.html">3. Building</a> <ul style="list-style: none; ">
+<li>
+<a href="./md_3__key__topics__building__chapter_1-section_8_ndk-build.html">ndk-build</a> </li>
+<li>
+<a href="./md_3__key__topics__building__chapter_1-section_8__android_8mk.html">Android.mk</a> </li>
+<li>
+<a href="./md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html">Application.mk</a> </li>
+<li>
+<a href="./md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html">Standalone Toolchain</a> </li>
+</ul>
+</li>
+<li>
+<a href="./md_3__key__topics__debugging_debugging.html">4. Debugging</a> <ul style="list-style: none; ">
+<li>
+<a href="./md_3__key__topics__debugging__n_d_k-_g_d_b.html">ndk-gdb and ndk-gdb-py</a> </li>
+<li>
+<a href="./md_3__key__topics__debugging__n_d_k-_s_t_a_c_k.html">ndk-stack</a> </li>
+</ul>
+</li>
+<li>
+<a href="./md_3__key__topics__c_p_u__support__instruction_sets_and__c_p_us.html">5. Architectures and CPUs</a> <ul style="list-style: none; ">
+<li>
+<a href="./md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html">ABI Management</a> </li>
+<li>
+<a href="./md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html">Neon</a> </li>
+<li>
+<a href="./md_3__key__topics__c_p_u__support__c_p_u-_m_i_p_s.html">Mips</a> </li>
+<li>
+<a href="./md_3__key__topics__c_p_u__support__c_p_u-_x86.html">x86</a> </li>
+<li>
+<a href="md_3__key__topics__c_p_u__support__c_p_u-_x86-64.html">x86-64</a> </li>
+<li>
+<a href="./md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html">CPU Features</a> </li>
+</ul>
+</li>
+<li>
+<a href="./md_3__key__topics__libraries_libraries.html">6. Libraries</a> <ul style="list-style: none; ">
+<li>
+<a href="./md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html">Stable APIs</a> </li>
+<li>
+<a href="./md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html">C++ Support</a> </li>
+<li>
+<a href="./md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html">Prebuilt Libraries</a> </li>
+</ul>
+</li>
+<li>
+<a href="./md_4__additional__info__additional__info.html">7. Additional Information</a> <ul style="list-style: none; ">
+<li>
+<a href="./md_4__additional__info__a_n_d_r_o_i_d-_a_t_o_m_i_c_s.html">Atomics</a> </li>
+<li>
+<a href="./md_4__additional__info__i_m_p_o_r_t-_m_o_d_u_l_e.html">Importing Modules (Sharing Code Made Easy)</a> </li>
+<li>
+<a href="./md_4__additional__info__n_d_k-_d_e_p_e_n_d_s.html">ndk-depends</a> </li>
+<li>
+<a href="./md_4__additional__info__s_y_s_t_e_m-_i_s_s_u_e_s.html">Android System Image Issues</a> </li>
+<li>
+<a href="./md_4__additional__info__l_i_c_e_n_s_e_s.html">Licenses</a> </li>
+</ul>
+</li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/jquery.js b/docs/Programmers_Guide/html/jquery.js
new file mode 100644
index 000000000..daead15df
--- /dev/null
+++ b/docs/Programmers_Guide/html/jquery.js
@@ -0,0 +1,72 @@
+/*!
+ * jQuery JavaScript Library v1.7.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Mon Nov 21 21:11:03 2011 -0500
+ */
+(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))
+}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;
+if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false
+}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1
+},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);
+ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;
+if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)
+}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b
+})}})(window);
+/*!
+ * jQuery UI 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h<j.length;h++){if(e.options[j[h][0]]){j[h][1].apply(e.element,f)}}}},contains:function(f,e){return document.compareDocumentPosition?f.compareDocumentPosition(e)&16:f!==e&&f.contains(e)},hasScroll:function(h,f){if(a(h).css("overflow")==="hidden"){return false}var e=(f&&f==="left")?"scrollLeft":"scrollTop",g=false;if(h[e]>0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*!
+ * jQuery UI Widget 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*!
+ * jQuery UI Mouse 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ */
+(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;
+p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*!
+ * jQuery hashchange event - v1.3 - 7/21/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ *
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);
+(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode=="BackCompat"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case"object":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(""),function(q,r){var s=r=="x"?"Left":"Top",u=s.toLowerCase(),p="scroll"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css("margin"+s))||0;g[p]-=parseInt(k.css("border"+s+"Width"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r=="x"?"width":"height"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)=="%"?parseFloat(t)/100*n:t}if(/^\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i=="x"?"Width":"Height",e="scroll"+h;if(!c(j).is("html,body")){return j[e]-c(j)[h.toLowerCase()]()}var g="client"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery);
diff --git a/docs/Programmers_Guide/html/md_1__concepts__concepts.html b/docs/Programmers_Guide/html/md_1__concepts__concepts.html
new file mode 100644
index 000000000..b3f6c4563
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_1__concepts__concepts.html
@@ -0,0 +1,420 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Concepts</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_1__concepts__concepts.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Concepts </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><ul style="list-style: none; ">
+<li>
+<a href="#bb">Before Beginning</a> </li>
+<li>
+<a href="#intro">Introduction</a> </li>
+<li>
+<a href="#hiw">How It Works</a> <ul style="list-style:none;">
+<li>
+<a href="#mc">Main Components</a> </li>
+<ul>
+<li>
+<a href="#ndk">ndk-build</a> </li>
+<li>
+<a href="#jav">Java</a> </li>
+<li>
+<a href="#nshl">Native shared libraries</a> </li>
+<li>
+<a href="#nstl">Native static libraries</a> </li>
+<li>
+<a href="#jni">Java Native Interface (JNI)</a> </li>
+<li>
+<a href="#abi">Application Binary Interface (ABI)</a> </li>
+<li>
+<a href="#man">Manifest</a> </li>
+<li>
+<a href="#and">Android.mk</a> </li>
+<li>
+<a href="#app">Application.mk</a> </li>
+</ul>
+<a href="#fl">Flow</a> </li>
+</ul>
+</li>
+<li>
+<p class="startli"><a href="#naa">Native Activities and Applications</a></p>
+<p><a class="anchor" id="bb"></a> </p>
+<h2>Before Beginning</h2>
+<p></p>
+<p>This guide assumes that you are:</p>
+<ul>
+<li>Already familiar with concepts inherent in native programming, and in <a
+href="http://developer.android.com">development of Android apps</a>.</li>
+<li>Working in <a href="http://developer.android.com/sdk/index.html">Eclipse,
+and using the Android Development Tools ("ADT")</a>, except where otherwise
+noted.</li>
+</ul>
+<p><a class="anchor" id="intro"></a> </p>
+<h2>Introduction</h2>
+<p></p>
+<p>This section provides a high-level explanation of how the NDK works. The
+Android NDK is a set of tools allowing you to embed C or C++ (“native
+code”) into your Android apps. The ability to use native code in Android apps
+can be particularly useful to developers who wish to do one or more of the
+following:</p>
+<ul>
+<li>Port their apps between platforms.</li>
+<li>Use existing libraries created by other developers (or provide their own
+libraries to others).</li>
+<li>Increase performance in certain cases, particularly computationally
+intensive ones like games.</li>
+</ul>
+<p><br/>
+ </p>
+<b>Important Notes:</b> The Android NDK can only be used to target Android
+system images running Android 1.5 (API Level 3) or later.
+
+The NDK only provides system headers for a very limited set of native
+APIs and libraries supported by the Android platform. While a typical
+Android system image includes many native shared libraries, you should
+consider them an implementation detail that might change drastically
+between platform releases. If the NDK headers do not explicitly support an
+Android system library, then apps should not depend on its being
+available; otherwise, the next over-the-air (“OTA”) system update may
+break them.
+<p><br/>
+</p>
+<p><a class="anchor" id="hiw">Main Components and Flow</a> </p>
+<h2>Process</h2>
+<p>This section introduces the main components used in building a native
+application for Android, and goes on to describe the flow of building and
+packaging.</p>
+<p><a class="anchor" id="mc"></a> </p>
+<h3>Main components</h3>
+<p></p>
+<p>You should have an understanding of the following components, as you build
+your app:</p>
+<p><a class="anchor" id="ndk"></a></p>
+<ul>
+<li>ndk-build: The ndk-build script launches the build scripts at the heart of
+the NDK. These scripts:<ul>
+<li>Automatically probe your development system and app project file to
+determine what to build.</li>
+<li>Generate binaries.</li>
+<li>Copy the binaries to your app's project path.</li>
+</ul>
+</li>
+</ul>
+<p>For more information, see the <a
+href="./md_3__key__topics__building__chapter_1-section_8_ndk-build.html">ndk-bui
+ld</a> section of this guide.</p>
+<p><a class="anchor" id="jav"></a></p>
+<ul>
+<li>Java: From your Java source, the Android build process generates
+<code>.dex</code> ("Dalvik EXecutable") files, which are what the Android OS
+runs in the Dalvik Virtual Machine (“DVM”). Even if your app contains no
+Java source code at all, the build process still generates a <code>.dex</code>
+executable file within which the native component runs.</li>
+</ul>
+<p>When developing Java components, use the <code>native</code> keyword to
+indicate methods implemented as native code. For example, the following
+function declaration tells the compiler that the implementation is in a native
+library:</p>
+<pre class="fragment">public native int add(int x, int y);
+</pre><p><a class="anchor" id="nshl"></a></p>
+<ul>
+<li>Native shared libraries: The NDK builds these libraries, or
+<code>.so</code> files, from your native source code.</li>
+</ul>
+<br>
+<b>Note:</b> If two libraries implement the same method, with the same name, a
+link
+error occurs.
+</pre><p><a class="anchor" id="nstl"></a></p>
+<ul>
+<li>Native static libraries: The NDK can also build static libraries, or
+<code>.a</code> files, which you can link against other libraries.</li>
+</ul>
+<p><a class="anchor" id="jni"></a></p>
+<ul>
+<li>Java Native Interface ("JNI"): The JNI is the interface via which the Java
+and C++ components talk to one another. This guide assumes knowledge of the
+JNI; for information about it, consult the <a
+href="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html
+">Java Native Interface Specification</a>.</li>
+</ul>
+<p><a class="anchor" id="abi"></a></p>
+<ul>
+<li>Application Binary Interface ("ABI"): The ABI defines exactly how your
+app's machine code is expected to interact with the system at runtime. The NDK
+builds <code>.so</code> files against these definitions. Different ABIs
+correspond to different architectures: The NDK includes ABI support for ARMEABI
+(default), MIPS, and x86. For more information, see <a
+href="./md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html">Sup
+ported ABIs</a>.</li>
+</ul>
+<p><a class="anchor" id="man"></a></p>
+<ul>
+<li>Manifest: If you are writing an app with no Java component to it, you must
+declare the NativeActivity class in the <a
+href="http://developer.android.com/guide/topics/manifest/manifest-intro.html">ma
+nifest</a>. The <a href=#naa>Native Activity</a> section provides more detail
+on how to do this, under “Using the native-activity.h interface.”</li>
+</ul>
+<br>
+<b>Note:</b> The following two items only apply in cases in which you are using
+the
+toolchains provided with the Android NDK as standalone compilers.
+<p><a class="anchor" id="and"></a></p>
+<ul>
+<li><code>Android.mk</code>: You must create an <code>Android.mk</code>
+configuration file inside your <code>jni</code> folder. The ndk-build script
+looks at this file, which defines the module and its name, the source files to
+be compiled, build flags and libraries to link. For more information, see the
+<a
+href="./md_3__key__topics__building__chapter_1-section_8__android_8mk.html">Andr
+oid.mk</a> section of this document.</li>
+</ul>
+<p><a class="anchor" id="app"></a></p>
+<ul>
+<li><code>Application.mk</code>: You may optionally create an Application.mk
+file. This file enumerates and describes the modules that your app requires.
+This information includes:<ul>
+<li>ABIs used to compile for specific platforms.</li>
+<li>Toolchains.</li>
+<li>Standard libraries to include (static and dynamic STLport or default
+system).</li>
+</ul>
+</li>
+</ul>
+<p>For more information, see the <a
+href="./md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html">Applicatio
+n.mk</a> section.</p>
+<p><a class="anchor" id="fl"></a> </p>
+<h3>Flow</h3>
+<p></p>
+<p>The general flow for developing a native app for Android is as follows:</p>
+<ol type="1">
+<li>Design your app, deciding which parts to implement in Java, and which parts
+to implement as native code.
+
+<br>
+<b>Note:</b> While it is possible to completely avoid Java, you are likely to
+find
+the Android Java framework useful for tasks including controlling the
+display and UI.</li>
+<li>Create an Android app Project in Eclipse as you would for any other Android
+project.</li>
+<li>If you are writing a native-only app, declare the NativeActivity class in
+AndroidManifest.xml. You can do so from the Eclipse/ADT Android Manifest
+Editor, or by hand-editing the file. For more information, see the <a
+href=#naa>Native Activity</a> section.</li>
+<li>Create an Android.mk file describing the native library, including name,
+flags, linked libraries and source files to be compiled in the ‘JNI’
+directory.</li>
+<li>OPTIONAL: Create an <code>Application.mk</code> file configuring the target
+ABIs, toolchain, release/debug mode, and STL. For any of these that you do not
+specify, the following default values are used, respectively: <ul>
+<li>
+ABI: armeabi<br/>
+ </li>
+<li>
+Toolchain: GCC 4.6<br/>
+ </li>
+<li>
+Mode: Release<br/>
+ </li>
+<li>
+STL: system </li>
+</ul>
+</li>
+<li>Place your native source under the project's <code>jni</code>
+directory.</li>
+<li>Use ndk-build to compile the native (<code>.so</code>, <code>.a</code>)
+libraries.</li>
+<li>Build the Java component, producing the executable <code>.dex</code>
+file.</li>
+<li>Package everything into an APK file, containing <code>.so</code>,
+<code>.dex</code>, and other files needed for your app to run.</li>
+</ol>
+<p>Note that Eclipse can perform steps 7. through 9. in a single operation.</p>
+<p><a class="anchor" id="naa"></a> </p>
+<h2>Native Activities and Applications</h2>
+<p></p>
+<p>The Android SDK provides a helper class, <code>NativeActivity</code>, that
+allows you to write a completely native activity. <code>NativeActivity</code>
+handles the communication between the Android framework and your native code,
+so you do not have to subclass it or call its methods. All you need to do is
+declare your application to be native in your <code>AndroidManifest.xml</code>
+file, and begin creating your native application.</p>
+<p>An Android application using <code>NativeActivity</code> still runs in its
+own virtual machine, sandboxed from other applications. You can therefore still
+access Android framework APIs through the JNI. In certain cases,
+however&ndash;such as for sensors, input events, and assets&ndash;the NDK
+provides native interfaces that you can use instead of having to call across
+the JNI. For more information about such support, see
+<code>STABLE-APIS.HTML</code>.</p>
+<p>Regardless of whether or not you are developing a native activity, we
+recommend that you create your projects with the usual Android build tools.
+Doing so helps ensure building and packaging of Android applications with the
+correct structure.</p>
+<p>The Android NDK provides you with two choices to implement your native
+activity:</p>
+<ul>
+<li>The <code>native_activity.h</code> header defines the native version of the
+NativeActivity class. It contains the callback interface and data structures
+that you need to create your native activity. Because the main thread of your
+application handles the callbacks, your callback implementations must not be
+blocking. If they block, you might receive ANR (Application Not Responding)
+errors because your main thread is unresponsive until the callback returns.</li>
+<li>The android_native_app_glue.h file defines a static helper library built on
+top of the <code>native_activity.h</code> interface. It spawns another thread,
+which handles things such as callbacks or input events in an event loop. Moving
+these events to a separate thread prevents any callbacks from blocking your
+main thread.</li>
+</ul>
+<p>The
+<code>&lt;ndk_root&gt;/sources/android/native_app_glue/android_native_app_glue.c
+</code> source is also available, allowing you to modify the implementation.</p>
+<p>For more information on how to use this static library, examine the
+native-activity sample application, and its documentation. Further reading is
+also available in the comments in the
+<code>&lt;ndk_root&gt;/sources/android/native_app_glue/android_native_app_glue.h
+</code> file.</p>
+<p><a class="anchor" id="na"></a> </p>
+<h3>Using the <code>native-activity.h</code> interface</h3>
+<p></p>
+<p>To implement a native activity with the <code>native-activity.h</code>
+interface:</p>
+<ol type="1">
+<li>Create a <code>jni/</code> directory in your project's root directory. This
+directory stores all of your native code.</li>
+<li>Declare your native activity in the <code>AndroidManifest.xml</code>
+file.</li>
+
+<p>Because your application has no Java code, set <code>android:hasCode</code>
+to <code>false</code>.</p>
+<pre class="fragment"> &lt;application android:label="@string/app_name"
+android:hasCode="false"&gt;
+</pre><p>The <code>android:name</code> attribute of the activity tag must be
+set to <code>android.app.NativeActivity</code>.</p>
+<pre class="fragment"> &lt;activity
+android:name="android.app.NativeActivity"
+ android:label="@string/app_name"
+
+</pre>
+<b>Note:</b> You can subclass <code>NativeActivity</code>. If you do, use the
+name of the subclass instead of <code>NativeActivity</code>.
+<p>The <code>android:value</code> attribute of the <code>meta-data</code> tag
+specifies the name of the shared library containing the entry point to the
+application (e.g., C/C++ <code>main</code>), omitting the <code>lib</code>
+prefix and <code>.so</code> suffix from the library name.</p>
+<pre class="fragment"> &lt;meta-data
+android:name="android.app.lib_name"
+ android:value="native-activity" /&gt;
+ &lt;intent-filter&gt;
+ &lt;action android:name="android.intent.action.MAIN" /&gt;
+ &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
+ &lt;/intent-filter&gt;
+ &lt;/activity&gt;
+ &lt;/application&gt;
+ &lt;/manifest&gt;
+</pre>
+<li>Create a file for your native activity, and implement the
+<code>ANativeActivity_onCreate()</code> function, which the app calls when the
+native activity starts. This function, analogous to <code>main</code> in C/C++,
+receives a pointer to an <code>ANativeActivity</code> structure, which contains
+function pointers to the various callback implementations that you need to
+write. Set the applicable callback function pointers in
+<code>ANativeActivity-&gt;;callbacks</code> to the implementations of your
+callbacks.</li>
+<li>Set the <code>ANativeActivity-&gt;;instance</code> field to the address of
+any instance of specific data that you want to use.</li>
+<li>Implement anything else that you want your activity to do upon
+starting.</li>
+<li>Implement the rest of the callbacks that you set in
+<code>ANativeActivity-&gt;;callbacks</code>. For more information on when the
+callbacks are called, see the <a
+href="http://developer.android.com/training/basics/activity-lifecycle/index.html
+">SDK documentation for Activity Lifecycles</a>.</li>
+<li>Develop the rest of your application.</li>
+<li>Create an <code>Android.mk file</code> in the <code>jni/</code> directory
+of your project to describe your native module to the build system. For more
+information, see the <a
+href="./md_3__key__topics__building__chapter_1-section_8__android_8mk.html">Andr
+oid.mk section.</a>.</li>
+<li>Once you have an <code>Android.mk</code> file, compile your native code
+using the <code>ndk-build</code> command.</li>
+
+<pre class="fragment">$ cd &lt;path&gt;/&lt;to&gt;/&lt;project&gt;
+$ &lt;ndk&gt;/ndk-build
+</pre>
+<li>Build and install your Android project as usual, using Ant or Eclipse. If
+your native code is in the <code>jni/</code> directory, the build script
+automatically packages the <code>.so</code> file(s) built from it into the
+APK.</li>
+</ol>
+<p class="endli">You can find further information on using
+<code>native-activity.h</code> in the comments in the
+<code>&lt;ndk_root&gt;/platforms/android-9/arch-arm/usr/include/android/native_a
+ctivity.h</code> file. </p>
+</li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Sun Jun 22 2014 15:25:44 for NDK
+Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_2__samples__samples.html b/docs/Programmers_Guide/html/md_2__samples__samples.html
new file mode 100644
index 000000000..0a0719fac
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_2__samples__samples.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Samples</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_2__samples__samples.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Samples </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This section explains several of the sample apps
+provided with the NDK. It assumes that you already have a working knowledge of
+programming in Java and native code, and focuses on issues particular to
+working with the NDK.</p>
+<p>It discusses the following samples:</p>
+<ul>
+<li><a href="./md_2__samples_sample--hellojni.html">hello-jni</a>: A very basic
+app that illustrates core workings of the NDK.</li>
+<li><a href="./md_2__samples_sample--nativeactivity.html">native-activity</a>:
+An app that shows the fundamentals of how to construct a purely native app. It
+places particular emphasis on the android_native_app_glue library.</li>
+<li><a href="./md_2__samples_samples-teapot.html">Teapot</a>: A simple OpenGL
+demo, showcasing the <code>ndk_helper</code> class. </li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK
+Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_2__samples_sample--hellojni.html b/docs/Programmers_Guide/html/md_2__samples_sample--hellojni.html
new file mode 100644
index 000000000..c518ded4c
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_2__samples_sample--hellojni.html
@@ -0,0 +1,139 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: hello-jni</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_2__samples_sample--hellojni.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">hello-jni </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This sample provides a bare-bones look at a minimal
+application built with the NDK.</p>
+<h3>Android.mk</h3>
+<p>The following two lines provide the name of the native source file, along
+with the name of the shared library to build. The full name of the built
+library is <code>libhello-jni.so</code>, but you should omit the
+<code>lib</code> prefix and the <code>.so</code> extension.</p>
+<pre class="fragment">LOCAL_SRC_FILES := hello-jni.c
+LOCAL_MODULE := hello-jni
+</pre><p>For more information on what this file does, and how to use it, see
+the <a
+href="./md_3__key__topics__building__chapter_1-section_8__android_8mk.html">Andr
+oid.mk</a> section.</p>
+<h3>Application.mk</h3>
+<p>This line tells the build system the architecture against which to build. If
+you don't specify anything, the build system defaults to armeabi.</p>
+<pre class="fragment">APP_ABI := all
+</pre><p>For more information on what this file does, and how to use it, see
+the <a
+href="./md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html">Applicatio
+n.mk</a> section.</p>
+<h3>Java-side implementation</h3>
+<p>This file calls a function to retrieve a string from the native side, then
+displays it on the screen.</p>
+<p>The source code contains three lines of particular interest to the NDK user.
+They are presented here in the order in which they are used, rather than by
+line order.</p>
+<p>This function call loads the <code>.so</code> file upon application
+startup.</p>
+<pre class="fragment">System.loadLibrary("hello-jni");
+</pre><p>The <code>native</code> keyword in this method declaration tells the
+DVM that the function is in the shared library (i.e., implemented on the native
+side).</p>
+<pre class="fragment">public native String stringFromJNI();
+</pre><p>The Android framework calls the function loaded and declared in the
+previous steps, displaying the string on the screen.</p>
+<pre class="fragment">tv.setText( stringFromJNI() );
+</pre><h3>C-side implementation</h3>
+<p>This file contains a function that returns a string that the Java side
+requested (see "Java-side implementation"). The function declaration is as
+follows:</p>
+<pre class="fragment">jstring Java_com_example_hellojni_HelloJni_stringFromJNI(
+JNIEnv* env,
+ jobject x )
+</pre><p>This declaration corresponds to the native function declared in the
+Java source code. The return type, <code>jstring</code>, is a data type defined
+in the <a
+href="http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html
+">Java Native Interface Specification</a>. It is not actually a string, but a
+pointer to a Java string.</p>
+<p>After <code>jstring</code> comes the function name, which is based on the
+Java function name and and the path to the file containing it. Construct it
+according to the following rules:</p>
+<ul>
+<li>Prepend <code>Java_</code> to it.</li>
+<li>Describe the filepath relative to the top-level source directory.</li>
+<li>Use underscores in place of forward slashes.</li>
+<li>Omit the <code>.java</code> file extension.</li>
+<li>After the last underscore, append the function name.</li>
+</ul>
+<p>Thus, in this example, the function name
+<code>Java_com_example_hellojni_HelloJni_stringFromJNI</code> refers to a Java
+function called <code>stringFromJNI()</code>, which resides in
+<code>hellojni/src/com/example/hellojni/HelloJni.java</code>.</p>
+<p>Finally, <code>JNIEnv*</code> is the pointer to the VM, and
+<code>jobject</code> is a pointer to the implicit “this” object passed from
+the Java side.</p>
+<p>The following line calls the VM API (*env), and passes it a return value:
+that is, the string that the function on the Java side had requested. </p>
+<pre class="fragment">return (*env)-&gt;NewStringUTF(env, "Hello from JNI !
+Compiled with ABI " ABI "."); </pre> </div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK
+Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_2__samples_sample--nativeactivity.html b/docs/Programmers_Guide/html/md_2__samples_sample--nativeactivity.html
new file mode 100644
index 000000000..609a5ac9e
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_2__samples_sample--nativeactivity.html
@@ -0,0 +1,235 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: native-activity</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_2__samples_sample--nativeactivity.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">native-activity </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This is a very simple example of a purely native
+application, with no Java source code. In the absence of any Java source, the
+Java compiler still creates an executable stub for the Dalvik Virtual Machine
+("DVM") to run. The stub serves as a wrapper for the actual, native program,
+which lives in the .so file.</p>
+<p>The application itself simply renders a color onto the entire screen, and
+then changes the color partly in response to detected movement.</p>
+<h3>AndroidManifest.xml</h3>
+<p>Make sure not to specify an Android API level lower than 9.</p>
+<pre class="fragment">&lt;uses-sdk android:minSdkVersion="9" /&gt;
+</pre><p>Because this application has only native code, specify
+<code>android:hasCode</code> as <code>false</code>.</p>
+<pre class="fragment">&lt;application android:label="@string/app_name"
+android:hasCode="false"&gt;
+</pre><p>Declare the <code>NativeActivity</code> class.</p>
+<pre class="fragment"> &lt;activity android:name="android.app.NativeActivity"
+</pre><p>For <code>android:value</code>, provide the name of the shared library
+to be built, minus the initial <code>lib</code> and the <code>.so</code>
+extension. This value must be the same as the one you described for
+<code>LOCAL_MODULE</code> in <code>Android.mk</code>.</p>
+<pre class="fragment"> &lt;meta-data android:name="android.app.lib_name"
+ android:value="native-activity" /&gt;
+</pre><h3>Android.mk</h3>
+<p>This file tells the build system the following information:</p>
+<p>The name of the shared library to generate.</p>
+<pre class="fragment">LOCAL_MODULE := native-activity
+</pre><p>The name of the native source-code file.</p>
+<pre class="fragment">LOCAL_SRC_FILES := main.c
+</pre><p>A list of external libraries that will be used in building the binary,
+each preceded by the <code>-l</code> (link-against) option.</p>
+<ul>
+<li>log is a logging library.</li>
+<li>android encompasses the standard Android support APIs for NDK. The
+[“Stable APIs”])(./md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html)
+section discusses these in more detail.</li>
+<li>EGL, standardized by Khronos, corresponds to the platform-specific portion
+of the graphics API.</li>
+<li>OpenGL ES, the version of OpenGL for Android, depends on EGL.</li>
+</ul>
+<p>Note that, for each library:</p>
+<ul>
+<li>The actual file name starts with <code>lib</code>, and ends with the
+<code>.so</code> extension. For example, the actual file name for the
+<code>log</code> library is <code>liblog.so</code>.</li>
+<li>The library lives in the following directory, relative to the NDK root:
+<code>&lt;ndk&gt;/platforms/android-&lt;sdk_version&gt;/arch-&lt;abi&gt;/usr/lib
+/</code>.</li>
+</ul>
+<pre class="fragment">LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM
+</pre><p>A static library, <code>android_native_app_glue</code>, that the
+application uses to manage <code>NativeActivity</code> lifecycle events, along
+with touch input.</p>
+<pre class="fragment">LOCAL_STATIC_LIBRARIES := android_native_app_glue
+</pre><p>The final line tells the build system to build this static library.
+<code>ndk-build</code> places the built library
+(<code>libandroid_native_app_glue.a</code>) into the <code>obj</code> directory
+generated during the build process. The next sample discusses the
+android_native_app_glue in more detail.</p>
+<pre class="fragment">$(call import-module,android/native_app_glue)
+</pre><p>For more information about the Application.mk file, consult the <a
+href="./md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html">Applicatio
+n.mk section</a> of this guide.</p>
+<h3><code>Application.mk</code></h3>
+<p>This line defines the minimum level of Android API Level support.</p>
+<pre class="fragment">APP_PLATFORM := android-10
+</pre><p>Because there is no ABI definition, the build system defaults to
+building only for armeabi.</p>
+<h3>main.c</h3>
+<p>This file essentially contains the entire progam.</p>
+<p>The following includes correspond to the libraries, both shared and static,
+enumerated in <code>Android.mk</code>.</p>
+<pre class="fragment">#include &lt;EGL/egl.h&gt;
+#include &lt;GLES/gl.h&gt;
+
+
+#include &lt;android/sensor.h&gt;
+#include &lt;android/log.h&gt;
+#include &lt;android_native_app_glue&gt;
+</pre><p><code>android_native_app_glue</code> calls the following function,
+passing it a predefined state structure. It also serves as a wrapper that
+simplifies handling of <code>NativeActivity</code> callbacks.</p>
+<pre class="fragment">void android_main(struct android_app* state) {
+</pre><p>Next, the program handles events queued by the glue library. The event
+handler follows the state structure.</p>
+<pre class="fragment">struct engine engine;
+
+
+// Make sure glue isn't stripped by suppressing link-time optimization that
+removes unreferenced code.
+app_dummy();
+
+
+memset(&amp;engine, 0, sizeof(engine));
+state-&gt;userData = &amp;engine;
+state-&gt;onAppCmd = engine_handle_cmd;
+state-&gt;onInputEvent = engine_handle_input;
+engine.app = state;
+</pre><p>The application prepares to start monitoring the sensors, using the
+APIs in <code>sensor.h</code>.</p>
+<pre class="fragment"> engine.sensorManager = ASensorManager_getInstance();
+ engine.accelerometerSensor =
+ ASensorManager_getDefaultSensor(engine.sensorManager,
+ ASENSOR_TYPE_ACCELEROMETER);
+ engine.sensorEventQueue =
+ ASensorManager_createEventQueue(engine.sensorManager,
+ state-&gt;looper, LOOPER_ID_USER, NULL, NULL);
+</pre><p>Now, a loop begins, in which the application polls the system for
+messages (sensor events). It sends messages to
+<code>android_native_app_glue</code>, which checks to see whether they match
+any <code>onAppCmd</code> events defined in <code>android_main</code>. When a
+match occurs, the message is sent to the handler for execution.</p>
+<pre class="fragment">while (1) {
+ // Read all pending events.
+ int ident;
+ int events;
+ struct android_poll_source* source;
+
+
+ // If not animating, we will block forever waiting for events.
+ // If animating, we loop until all events are read, then continue
+ // to draw the next frame of animation.
+ while ((ident=ALooper_pollAll(engine.animating ? 0 : -1, NULL,
+&amp;events,
+ (void**)&amp;source)) &gt;= 0) {
+
+
+ // Process this event.
+ if (source != NULL) {
+ source-&gt;process(state, source);
+ }
+
+
+ // If a sensor has data, process it now.
+ if (ident == LOOPER_ID_USER) {
+ if (engine.accelerometerSensor != NULL) {
+ ASensorEvent event;
+ while (ASensorEventQueue_getEvents(engine.sensorEventQueue,
+ &amp;event, 1) &gt; 0) {
+ LOGI("accelerometer: x=%f y=%f z=%f",
+ event.acceleration.x, event.acceleration.y,
+ event.acceleration.z);
+ }
+ }
+ }
+
+
+ // Check if we are exiting.
+ if (state-&gt;destroyRequested != 0) {
+ engine_term_display(&amp;engine);
+ return;
+ }
+ }
+</pre><p>Once the queue is empty, and the program exits the polling loop, the
+program calls OpenGL to draw the screen.</p>
+<pre class="fragment"> if (engine.animating) {
+ // Done with events; draw next animation frame.
+ engine.state.angle += .01f;
+ if (engine.state.angle &gt; 1) {
+ engine.state.angle = 0;
+ }
+
+
+ // Drawing is throttled to the screen update rate, so there
+ // is no need to do timing here.
+ engine_draw_frame(&amp;engine);
+ }
+} </pre> </div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK
+Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_2__samples_samples-teapot.html b/docs/Programmers_Guide/html/md_2__samples_samples-teapot.html
new file mode 100644
index 000000000..d8f7673a4
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_2__samples_samples-teapot.html
@@ -0,0 +1,276 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Teapot</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_2__samples_samples-teapot.html','')
+;});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Teapot </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This sample uses the OpenGL library to render the
+iconic <a
+href="http://math.hws.edu/bridgeman/courses/324/s06/doc/opengl.html#basic">Utah
+teapot</a>. It particularly showcases the <code>ndk_helper</code> helper class,
+a collection of native helper functions required for implementing games and
+similar applications as native applications. This class provides:</p>
+<ul>
+<li>an abstraction layer that handles certain NDK-specific behaviors (e.g.,
+<code>GLContext</code>).</li>
+<li>some helper functions that are useful but not present in the NDK, itself
+(e.g., tap detection).</li>
+<li>wrappers for JNI calls for certain platform features (e.g., texture
+loading).</li>
+</ul>
+<h3>AndroidManifest.xml</h3>
+<p>The activity declaration here is not <code>NativeActivity</code> itself, but
+a sublass: <code>TeapotNativeActivity</code>.</p>
+<pre class="fragment"> &lt;activity
+android:name="com.sample.teapot.TeapotNativeActivity"
+ android:label="@string/app_name"
+ android:configChanges="orientation|keyboardHidden"&gt;
+</pre><p>The name of the <code>.so</code> file is
+<code>libTeapotNativeActivity.so</code>; the <code>lib</code> and
+<code>.so</code> are stripped off from the value assigned to
+<code>android:value</code>.</p>
+<pre class="fragment"> &lt;meta-data android:name="android.app.lib_name"
+ android:value="TeapotNativeActivity" /&gt;
+</pre><h3><code>Application.mk</code></h3>
+<p>Define the minimum level of Android API Level support.</p>
+<pre class="fragment">APP_PLATFORM := android-9
+</pre><p>Build for all supported architectures.</p>
+<pre class="fragment">APP_ABI := all
+</pre><p>Specify the <a
+href="./md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html">C++
+ runtime support library</a> to use. </p>
+<pre class="fragment">APP_STL := stlport_static
+</pre><h3>Java-side implementation: TeapotNativeActivity.java</h3>
+<p>This file handles activity lifecycle events, as well as displaying text on
+the screen.</p>
+<pre class="fragment">// Our popup window, you will call it from your C/C++
+code later
+
+
+void setImmersiveSticky() {
+ View decorView = getWindow().getDecorView();
+ decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
+ | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+ | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+ | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+}
+</pre><h3>Native-side implementation: <code>TeapotRenderer.h/.cpp</code></h3>
+<p>This code does the actual rendering of the teapot. It uses
+<code>ndk_helper</code> for matrix calculation, and to reposition the camera
+based on where the user taps:</p>
+<pre class="fragment">ndk_helper::Mat4 mat_projection_;
+ndk_helper::Mat4 mat_view_;
+ndk_helper::Mat4 mat_model_;
+
+
+ndk_helper::TapCamera* camera_;
+</pre><h3>Native-side implementation: <code>TeapotNativeActivity.cpp</code></h3>
+<p>Include <code>ndk_helper</code> in your native source file, and define the
+helper-class name:</p>
+<pre class="fragment">#include "NDKHelper.h"
+
+
+//-------------------------------------------------------------------------
+//Preprocessor
+//-------------------------------------------------------------------------
+#define HELPER_CLASS_NAME "com/sample/helper/NDKHelper" //Class name of helper
+function
+</pre><p>The first use of the <code>ndk_helper</code> class is to handle the
+EGL-related lifecycle, associating EGL context states (created/lost) with
+Android lifecycle events. It enables the application to preserve context
+information so that a destroyed activity can be restored. This is useful, for
+example, when the target machine is rotated (causing an activity to be
+destroyed, then immediately restored in the new orientation), or when the lock
+screen appears.</p>
+<pre class="fragment">ndk_helper::GLContext* gl_context_; // handles
+EGL-related lifecycle.
+</pre><p>Next, <code>ndk_helper</code> provides touch control.</p>
+<pre class="fragment">ndk_helper::DoubletapDetector doubletap_detector_;
+ndk_helper::PinchDetector pinch_detector_;
+ndk_helper::DragDetector drag_detector_;
+ndk_helper::PerfMonitor monitor_;
+</pre><p>And camera control (openGL view frustum).</p>
+<pre class="fragment">ndk_helper::TapCamera tap_camera_;
+</pre><p>As in the native-activity sample, the application prepares to use the
+sensors, using the native APIs provided in the NDK.</p>
+<pre class="fragment">ASensorManager* sensor_manager_;
+const ASensor* accelerometer_sensor_;
+ASensorEventQueue* sensor_event_queue_;
+</pre><p>The following functions are called in response to various Android
+lifecycle events and EGL context state changes, using various functionalities
+provided by <code>ndk_helper</code> via the <code>Engine</code> class.</p>
+<pre class="fragment">void LoadResources();
+void UnloadResources();
+void DrawFrame();
+void TermDisplay();
+void TrimMemory();
+bool IsReady();
+</pre><p>This function calls back to the Java side to update the UI display.</p>
+<pre class="fragment">void Engine::ShowUI()
+{
+ JNIEnv *jni;
+ app_-&gt;activity-&gt;vm-&gt;AttachCurrentThread( &amp;jni, NULL );
+
+
+ //Default class retrieval
+ jclass clazz = jni-&gt;GetObjectClass( app_-&gt;activity-&gt;clazz );
+ jmethodID methodID = jni-&gt;GetMethodID( clazz, "showUI", "()V" );
+ jni-&gt;CallVoidMethod( app_-&gt;activity-&gt;clazz, methodID );
+
+
+ app_-&gt;activity-&gt;vm-&gt;DetachCurrentThread();
+ return;
+}
+</pre><p>And this one calls back to the Java side to draw a text box
+superimposed on the screen rendered on the native side, and showing frame
+count.</p>
+<pre class="fragment">void Engine::UpdateFPS( float fFPS )
+{
+ JNIEnv *jni;
+ app_-&gt;activity-&gt;vm-&gt;AttachCurrentThread( &amp;jni, NULL );
+
+
+ //Default class retrieval
+ jclass clazz = jni-&gt;GetObjectClass( app_-&gt;activity-&gt;clazz );
+ jmethodID methodID = jni-&gt;GetMethodID( clazz, "updateFPS", "(F)V" );
+ jni-&gt;CallVoidMethod( app_-&gt;activity-&gt;clazz, methodID, fFPS );
+
+
+ app_-&gt;activity-&gt;vm-&gt;DetachCurrentThread();
+ return;
+}
+</pre><p>The application gets the system clock and supplies it to the renderer
+for time-based animation based on real-time clock. For example, calculating
+momentum, where speed declines as a function of time.</p>
+<pre class="fragment">renderer_.Update( monitor_.GetCurrentTime() );
+</pre><p>Having earlier been set up to preserve context information, the
+application now checks whether <code>GLcontext</code> is still valid. If not,
+<code>ndk-helper</code> swaps the buffer, reinstantiating the GL context.</p>
+<pre class="fragment">if( EGL_SUCCESS != gl_context_-&gt;Swap() ) // swaps
+buffer.
+</pre><p>The program passes touch-motion events to the gesture detector defined
+in the <code>ndk_helper</code> class. The gesture detector tracks multitouch
+gestures, such as pinch-and-drag, and sends a notification when triggered by
+any of these events.</p>
+<pre class="fragment">if( AInputEvent_getType( event ) ==
+AINPUT_EVENT_TYPE_MOTION )
+{
+ ndk_helper::GESTURE_STATE doubleTapState =
+eng-&gt;doubletap_detector_.Detect( event );
+ ndk_helper::GESTURE_STATE dragState = eng-&gt;drag_detector_.Detect( event
+);
+ ndk_helper::GESTURE_STATE pinchState = eng-&gt;pinch_detector_.Detect(
+event );
+
+
+ //Double tap detector has a priority over other detectors
+ if( doubleTapState == ndk_helper::GESTURE_STATE_ACTION )
+ {
+ //Detect double tap
+ eng-&gt;tap_camera_.Reset( true );
+ }
+ else
+ {
+ //Handle pinch state
+ if( pinchState &amp; ndk_helper::GESTURE_STATE_START )
+ {
+ //Start new pinch
+ ndk_helper::Vec2 v1;
+ ndk_helper::Vec2 v2;
+ eng-&gt;pinch_detector_.GetPointers( v1, v2 );
+</pre><p><code>ndk_helper</code> also provides access to a vector-math library
+(<code>vecmath.h</code>), using it here to transform touch coordinates.</p>
+<pre class="fragment">void Engine::TransformPosition( ndk_helper::Vec2&amp; vec
+) { vec = ndk_helper::Vec2( 2.0f, 2.0f ) * vec / ndk_helper::Vec2(
+gl_context_-&gt;GetScreenWidth(), gl_context_-&gt;GetScreenHeight() )
+
+ndk_helper::Vec2( 1.f, 1.f ); }</li></pre>
+</ul>
+<p><code>HandleCmd()</code> handles commands posted from the
+android_native_app_glue library. For more information about what the messages
+mean, refer to the comments in the <code>android_native_app_glue.h</code> and
+<code>.c</code> source files.</p>
+
+<pre class="fragment">void Engine::HandleCmd( struct android_app* app, int32_t
+cmd ) { Engine* eng = (Engine*) app-&gt;userData; switch( cmd ) { case
+APP_CMD_SAVE_STATE: break; case APP_CMD_INIT_WINDOW: // The window is being
+shown, get it ready. if( app-&gt;window != NULL )</li></pre>
+
+<p><code>ndk_helper</code> posts APP_CMD_INIT_WINDOW when android_app_glue
+receives an <code>onNativeWindowCreated()</code> callback from the system.
+Applications can normally perform window initializations, such as EGL
+initialization. They do this outside of the activity lifecycle, since the
+activity is not yet ready.</p>
+<pre class="fragment">ndk_helper::JNIHelper::Init( state-&gt;activity,
+HELPER_CLASS_NAME );
+
+
+state-&gt;userData = &amp;g_engine;
+state-&gt;onAppCmd = Engine::HandleCmd;
+state-&gt;onInputEvent = Engine::HandleInput; </pre> </div></div><!-- contents
+-->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK
+Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html b/docs/Programmers_Guide/html/md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html
new file mode 100644
index 000000000..ab780b917
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html
@@ -0,0 +1,180 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: &lt;code&gt;Application.mk&lt;/code&gt;</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title"><code>Application.mk</code> </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h2>Introduction</h2>
+<p>This document describes the syntax of <code>Application.mk</code> build file written to describe the native modules required by your Android application. To understand what follows, it is assumed that you have read the <a href="md_1__concepts__concepts.html">Concepts</a> and <a href="./md_3__key__topics__building__chapter_1-section_8__android_8mk.html">Android.mk</a> sections of this document.</p>
+<h2>Overview</h2>
+<p>The purpose of <code>Application.mk</code> is to describe which native 'modules' (i.e. static/shared libraries) are needed by your application.</p>
+<p>An <code>Application.mk</code> file is usually placed under <code>$PROJECT/jni/Application.mk</code>, where <code>$PROJECT</code> points to your application's project directory.</p>
+<p>Another alternative is to place it under a sub-directory of the top-level <code>$NDK/apps</code> directory, e.g.: </p>
+<pre class="fragment"> $NDK/apps/&lt;myapp&gt;/`Application.mk`
+</pre><p>Where &lt;myapp&gt; is a short name used to describe your 'application' to the NDK build system (this name doesn't go into your generated shared libraries or your final packages).</p>
+<p>The <code>Application.mk</code> is really a tiny GNU Makefile fragment that must define a few variables:</p>
+<h3><code>APP_PROJECT_PATH</code></h3>
+<p>This variable should give the <em>absolute</em> path to your Application's project root directory. This is used to copy/install stripped versions of the generated JNI shared libraries to a specific location known to the APK-generating tools.</p>
+<p>Note that it is optional for <code>$PROJECT/jni/Application.mk</code>, but <em>mandatory</em> for <code>$NDK/apps/&lt;myapp/Application.mk</code></p>
+<h3><code>APP_MODULES</code></h3>
+<p>If this variable is defined, it tells <code>ndk-build</code> to only list the corresponding modules and those that they depend on. It must be a space-separated list of module names as they appear in the LOCAL_MODULE definition of Android.mk files.</p>
+<p>It the variable is undefined, <code>ndk-build</code> looks for the list of all <em>installable</em> top-level modules, i.e. those listed by your Android.mk and any file it includes directly. Imported modules are <em>not</em> top-level though.</p>
+<p>An installable module is either a shared library or executable, which will generate a file in <code>libs/$ABI/</code>.</p>
+<p>If the variable is undefined, and there are no installable top-level modules in your project, then <code>ndk-build</code> will build all top-level static libraries and their dependencies instead. However, these libraries will be placed at the usual location under <code>obj/</code> or <code>obj-debug/</code>.</p>
+<p>NOTE: This variable's behaviour changed in NDK r4. Before that:</p>
+<ul>
+<li>the variable was mandatory in your <code>Application.mk</code></li>
+<li>all required modules had to be listed explicitly.</li>
+</ul>
+<h3><code>APP_OPTIM</code></h3>
+<p>This optional variable can be defined to either '<code>release</code>' or '<code>debug</code>'. This is used to alter the optimization level when building your application's modules.</p>
+<p>A 'release' mode is the default, and will generate highly optimized binaries. The 'debug' mode will generate un-optimized binaries which are much easier to debug.</p>
+<p>Note that if your application is debuggable (i.e. if your manifest sets the <code>android:debuggable</code> attribute to "`true`" in its <code>&lt;application&gt;</code> tag), the default will be 'debug' instead of 'release'. This can be overridden by setting APP_OPTIM to '<code>release</code>'.</p>
+<p>Note that it is possible to debug both 'release' and 'debug' binaries, but the 'release' builds tend to provide less information during debugging sessions: some variables are optimized out and can't be inspected, code re-ordering can make stepping through the code difficult, stack traces may not be reliable, etc...</p>
+<h3><code>APP_CFLAGS</code></h3>
+<p>A set of C compiler flags passed when compiling any C or C++ source code of any of the modules. This can be used to change the build of a given module depending on the application that needs it, instead of modifying the Android.mk file itself. </p>
+<pre class="fragment"> IMPORTANT WARNING: +++++++++++++++++++++++++++++++++++++++++++++++++++
+ +
+ + All paths in these flags should be relative to the top-level NDK
+ + directory. For example, if you have the following setup:
+ +
+ + sources/foo/Android.mk
+ + sources/bar/Android.mk
+ +
+ + To specify in foo/Android.mk that you want to add the path to the
+ + 'bar' sources during compilation, you should use:
+ +
+ + APP_CFLAGS += -Isources/bar
+ +
+ + Or alternatively:
+ +
+ + APP_CFLAGS += -I$(LOCAL_PATH)/../bar
+ +
+ + Using '-I../bar' will *NOT* work since it will be equivalent to
+ + '-I$NDK_ROOT/../bar' instead.
+ +
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+</pre><p>NOTE: In android-ndk-1.5_r1, this only applied to C sources, not C++ ones. This has been corrected to match the full Android build system.</p>
+<h3><code>APP_CXXFLAGS</code></h3>
+<p>An alias for APP_CPPFLAGS, to be considered obsolete as it may disappear in a future release of the NDK.</p>
+<h3><code>APP_CPPFLAGS</code></h3>
+<p>A set of C++ compiler flags passed when building C++ sources <em>only</em>.</p>
+<p>NOTE: In android-ndk-1.5_r1, this applied to both C and C++ sources. This has been corrected to match the full Android build system. You can now use APP_CFLAGS for flags that shall apply to C and C++ sources.</p>
+<h3><code>APP_LDFLAGS</code></h3>
+<p>A set of linker flags passed when linking application. This only applies when building shared libraries and executables, these flags are ignored when building static libraries.</p>
+<h3><code>APP_BUILD_SCRIPT</code></h3>
+<p>By default, the NDK build system will look for a file named Android.mk under <code>/jni</code>, i.e. for the file: </p>
+<pre class="fragment"> $(APP_PROJECT_PATH)/jni/Android.mk
+</pre><p>If you want to override this behaviour, you can define APP_BUILD_SCRIPT to point to an alternate build script. A non-absolute path will always be interpreted as relative to the NDK's top-level directory.</p>
+<h3><code>APP_ABI</code></h3>
+<p>By default, the NDK build system will generate machine code for the '<code>armeabi</code>' ABI. This corresponds to an ARMv5TE based CPU with software floating point operations. You can use APP_ABI to select a different ABI.</p>
+<p>For example, to support hardware FPU instructions on ARMv7 based devices, use: </p>
+<pre class="fragment"> APP_ABI := armeabi-v7a
+</pre><p>Or to support ARMv8 AArch64 instruction set, use: </p>
+<pre class="fragment"> APP_ABI := arm64-v8a
+</pre><p>Or to support the IA-32 instruction set, use: </p>
+<pre class="fragment"> APP_ABI := x86
+</pre><p>Or to support the Intel64 instruction set (r1), use: </p>
+<pre class="fragment"> APP_ABI := x86_64
+</pre><p>Or to support the MIPS32 instruction set, use: </p>
+<pre class="fragment"> APP_ABI := mips
+</pre><p>Or to support the MIPS64 instruction set (r6), use: </p>
+<pre class="fragment"> APP_ABI := mips64
+</pre><p>Or to support all at the same time, use: </p>
+<pre class="fragment"> APP_ABI := armeabi armeabi-v7a x86 mips arm64-v8a x86_64 mips64
+</pre><p>Or even better, since NDK r7, you can also use the special value '<code>all</code>' which means "all ABIs supported by this NDK release": </p>
+<pre class="fragment"> APP_ABI := all
+</pre><p>For the list of all supported ABIs and details about their usage and limitations, refer to the <a href="./md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html">Android Native CPU ABI Management</a> section.</p>
+<h3><code>APP_PLATFORM</code></h3>
+<p>Name the target Android platform. For example, '<code>android-3</code>' correspond to Android 1.5 system images. For a complete list of platform names and corresponding Android system images, see the <a href="file:///usr/local/google/internal-master/master/ndk/docs/Programmers_Guide/html/./md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html">Android NDK Stable APIs</a> section.</p>
+<h3><code>APP_STL</code></h3>
+<p>By default, the NDK build system provides C++ headers for the minimal C++ runtime library (<code>/system/lib/libstdc++.so</code>) provided by the Android system.</p>
+<p>However, the NDK comes with alternative C++ implementations that you can use or link to in your own applications. Define APP_STL to select one of them. Examples are: </p>
+<pre class="fragment"> APP_STL := stlport_static --&gt; static STLport library
+ APP_STL := stlport_shared --&gt; shared STLport library
+ APP_STL := system --&gt; default C++ runtime library
+</pre><p>For more information on this subject, see the <a href="./md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html">C++ Support</a> section.</p>
+<h3><code>APP_GNUSTL_FORCE_CPP_FEATURES</code></h3>
+<p>In prior NDK versions, the simple fact of using the GNU libstdc++ runtime (i.e. by setting APP_STL to either '<code>gnustl_static</code>' or '<code>gnustl_shared</code>') enforced the support for exceptions and RTTI in all generated machine code. This could be problematic in specific, but rare, cases, and also generated un-necessarily bigger code for projects that don't require these features.</p>
+<p>This bug was fixed in NDK r7b, but this means that if your code requires exceptions or RTTI, it should now explicitly say so, either in your APP_CPPFLAGS, or your LOCAL_CPPFLAGS / LOCAL_CPP_FEATURES definitions.</p>
+<p>To make it easier to port projects to NDK r7b and later, one can optionally defined APP_GNUSTL_CPP_FEATURES to contain one or more of the following values: </p>
+<pre class="fragment"> exceptions -&gt; to enforce exceptions support for all modules.
+ rtti -&gt; to enforce rtti support for all modules.
+</pre><p>For example, to get the exact same behaviour than NDK r7: </p>
+<pre class="fragment"> APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti
+</pre><p>IMPORTANT: This variable is provided here as a convenience to make it easier to transition to a newer version of the NDK. It will be removed in a future revision. We thus encourage all developers to modify the module definitions properly instead of relying on it here.</p>
+<h3><code>APP_SHORT_COMMANDS</code></h3>
+<p>The equivalent of LOCAL_SHORT_COMMANDS for your whole project. See the documentation for this variable in the <a href="./md_3__key__topics__building__chapter_1-section_8__android_8mk.html">Android.mk</a> section.</p>
+<h3><code>NDK_TOOLCHAIN_VERSION</code></h3>
+<p>Define this variable to either 4.6, 4.7 or 4.8 to select version of the GCC compiler. 4.6 is the default</p>
+<h3><code>APP_PIE</code></h3>
+<p>Starting from Jelly Bean (4.1), Android's dynamic linker supports position-independent executables (PIE), which are built with <code>-fPIE</code>. This flag makes it harder to exploit memory corruption bugs by randomization the location of the code. By default, <code>ndk-build</code> will automatically set this value to '<code>true</code>' if your project targets <code>android-16</code> or higher. You may set it manually to either '<code>true</code>' or '<code>false</code>'.</p>
+<p>IMPORTANT: PIE executables <em>cannot</em> run on Android releases prior to 4.1.</p>
+<p>Note that this only applies to executables. It has no effect when building shared or static libraries.</p>
+<h3><code>APP_THIN_ARCHIVE</code></h3>
+<p>Sets the default value of LOCAL_THIN_ARCHIVE for all static library modules in this project. For more information, see the documentation for LOCAL_THIN_ARCHIVE in the <a href="./md_3__key__topics__building__chapter_1-section_8__android_8mk.html">Android.mk</a> section.</p>
+<hr/>
+<p> A trivial <code>Application.mk</code> file would be: </p>
+<pre class="fragment"> -------------- cut here -------------------------
+ APP_PROJECT_PATH := &lt;path to project&gt;
+ -------------- cut here -------------------------</pre> </div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__building__chapter_1-section_8__android_8mk.html b/docs/Programmers_Guide/html/md_3__key__topics__building__chapter_1-section_8__android_8mk.html
new file mode 100644
index 000000000..c7d94476e
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__building__chapter_1-section_8__android_8mk.html
@@ -0,0 +1,713 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: &lt;code&gt;Android.mk&lt;/code&gt;</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__building__chapter_1-section_8__android_8mk.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title"><code>Android.mk</code> </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p><a href="#intro">Introduction</a><br/>
+ <a href="#over">Overview</a><br/>
+ <a href="#se">Simple example</a><br/>
+ <a href="#reference">Reference</a><br/>
+ <a href="#npv">NDK-provided variables</a><br/>
+ <a href="#npfm">NDK-provided function macros</a><br/>
+ <a href="#mdv">Module-description variables</a><br/>
+</p>
+<p><a class="anchor" id="intro"></a> </p>
+<h2>Introduction</h2>
+<p>This section describes the syntax of <code>Android.mk</code> build file,
+which describes your C and C++ source files to the Android NDK.</p>
+<p><a class="anchor" id="over"></a> </p>
+<h2>Overview</h2>
+<p>The <code>Android.mk</code> file describes your sources to the build system.
+More specifically:</p>
+<ul>
+<li>The file is really a tiny GNU Makefile fragment that the build system
+parses once or more. As such, you should try to minimize the variables you
+declare there. Also, do not assume that anything is not defined during
+parsing.</li>
+<li>The file syntax is designed to allow you to group your sources into
+“modules”. A module is one of the following:<ul>
+<li>A static library.</li>
+<li>A shared library.</li>
+<li>A standalone executable.</li>
+</ul>
+</li>
+</ul>
+<p>The build system only installs/copies shared libraries into your application
+package. In addition, static libraries can generate shared libraries.</p>
+<p>You can define one or more modules in each <code>Android.mk</code> file, and
+you can use the same source file in multiple modules.</p>
+<ul>
+<li>The build system handles many details for you. For example, you don't need
+to list header files or explicit dependencies between generated files in your
+<code>Android.mk</code>. The NDK build system computes these automatically for
+you.</li>
+</ul>
+<p>This also means that, when updating to newer releases of the NDK, you should
+be able to benefit from new toolchain/platform support without having to touch
+your <code>Android.mk</code> files.</p>
+<p>Note that the syntax is <em>very</em> close to the one used in
+<code>Android.mk</code> files distributed with the full <a
+href="https://source.android.com">Android Open Source Project</a>. While the
+build system implementation that uses them is different, their similarity is an
+intentional design decision aimed at making it easier for application
+developers to reuse source code for “external” libraries.</p>
+<p><a class="anchor" id="se"></a> </p>
+<h2>Simple example</h2>
+<p>Before describing the syntax in detail, it is useful to consider the
+Android.mk used in the Hello-JNI sample.</p>
+<p>The <code>jni/Android.mk</code> file describes the shared library to the NDK
+build system. Its content is: </p>
+<pre class="fragment"> ---------- cut here ------------------
+ LOCAL_PATH := $(call my-dir)
+
+ include $(CLEAR_VARS)
+
+ LOCAL_MODULE := hello-jni
+ LOCAL_SRC_FILES := hello-jni.c
+
+ include $(BUILD_SHARED_LIBRARY)
+ ---------- cut here ------------------
+</pre><p>Now, let's explain these lines: </p>
+<pre class="fragment"> LOCAL_PATH := $(call my-dir)
+</pre><p>An <code>Android.mk</code> file must begin with the definition of the
+LOCAL_PATH variable. It is used to locate source files in the development tree.
+In this example, the macro function 'my-dir', provided by the build system, is
+used to return the path of the current directory (i.e. the directory containing
+the <code>Android.mk</code> file itself). </p>
+<pre class="fragment"> include $(CLEAR_VARS)
+</pre><p>The CLEAR_VARS variable is provided by the build system and points to
+a special GNU Makefile that will clear many LOCAL_XXX variables for you (e.g.
+LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, etc...), with the
+exception of LOCAL_PATH. This is needed because all build control files are
+parsed in a single GNU Make execution context where all variables are global.
+</p>
+<pre class="fragment"> LOCAL_MODULE := hello-jni
+</pre><p>The LOCAL_MODULE variable must be defined to identify each module you
+describe in your <code>Android.mk</code>. The name must be <em>unique</em> and
+not contain any spaces. Note that the build system will automatically add
+proper prefix and suffix to the corresponding generated file. In other words, a
+shared library module named 'foo' will generate 'libfoo.so'.</p>
+<p>IMPORTANT NOTE: If you name your module 'libfoo', the build system will not
+add another 'lib' prefix and will generate libfoo.so as well. This is to
+support <code>Android.mk</code> files that originate from the Android platform
+sources, would you need to use these. </p>
+<pre class="fragment"> LOCAL_SRC_FILES := hello-jni.c
+</pre><p>The LOCAL_SRC_FILES variables must contain a list of C and/or C++
+source files that will be built and assembled into a module. Note that you
+should not list header and included files here, because the build system will
+compute dependencies automatically for you; just list the source files that
+will be passed directly to a compiler, and you should be good.</p>
+<p>Note that the default extension for C++ source files is '.cpp'. It is
+however possible to specify a different one by defining the variable
+LOCAL_CPP_EXTENSION. Don't forget the initial dot (i.e. '.cxx' will work, but
+not 'cxx'). </p>
+<pre class="fragment"> include $(BUILD_SHARED_LIBRARY)
+</pre><p>The BUILD_SHARED_LIBRARY is a variable provided by the build system
+that points to a GNU Makefile script that is in charge of collecting all the
+information you defined in LOCAL_XXX variables since the latest 'include ' and
+determine what to build, and how to do it exactly. There is also
+BUILD_STATIC_LIBRARY to generate a static library.</p>
+<p>There are more complex examples in the samples directories, with commented
+<code>Android.mk</code> files that you can look at.</p>
+<p><a class="anchor" id="reference"></a> </p>
+<h2>Reference</h2>
+<p>This is the list of variables you should either rely on or define in an
+<code>Android.mk</code>. You can define other variables for your own usage, but
+the NDK build system reserves the following variable names:</p>
+<ul>
+<li>Names that begin with LOCAL_ (e.g. LOCAL_MODULE)</li>
+<li>Names that begin with PRIVATE_, NDK_ or APP_ (used internally)</li>
+<li>Lower-case names (used internally, e.g. <code>my-dir</code>)</li>
+</ul>
+<p>If you need to define your own convenience variables in an
+<code>Android.mk</code> file, we recommend using the MY_ prefix, for a trivial
+example: </p>
+<pre class="fragment"> ---------- cut here ------------------
+ MY_SOURCES := foo.c
+ ifneq ($(MY_CONFIG_BAR),)
+ MY_SOURCES += bar.c
+ endif
+
+ LOCAL_SRC_FILES += $(MY_SOURCES)
+ ---------- cut here ------------------
+</pre><p>So, here we go:</p>
+<p><a class="anchor" id="npv"></a> </p>
+<h2>NDK-provided variables</h2>
+<p>These GNU Make variables are defined by the build system before your
+<code>Android.mk</code> file is parsed. Note that under certain circumstances
+the NDK might parse your <code>Android.mk</code> several times, each with
+different definition for some of these variables.</p>
+<h3><code>CLEAR_VARS</code></h3>
+<p>Points to a build script that undefines nearly all LOCAL_XXX variables
+listed in the "Module-description" section below. You must include the script
+before starting a new module, e.g.: </p>
+<pre class="fragment"> include $(CLEAR_VARS)
+</pre><h3><code>BUILD_SHARED_LIBRARY</code></h3>
+<p>Points to a build script that collects all the information about the module
+you provided in LOCAL_XXX variables and determines how to build a target shared
+library from the sources you listed. Note that you must have LOCAL_MODULE and
+LOCAL_SRC_FILES defined, at a minimum before including this file. Example
+usage: </p>
+<pre class="fragment"> include $(BUILD_SHARED_LIBRARY)
+</pre><p>note that this will generate a file named <code>lib.so</code>.</p>
+<h3><code>BUILD_STATIC_LIBRARY</code></h3>
+<p>A variant of BUILD_SHARED_LIBRARY that is used to build a target static
+library instead. Static libraries are not copied into your project/packages but
+can be used to build shared libraries (see LOCAL_STATIC_LIBRARIES and
+LOCAL_WHOLE_STATIC_LIBRARIES described below). Example usage: </p>
+<pre class="fragment"> include $(BUILD_STATIC_LIBRARY)
+</pre><p>Note that this will generate a file named <code>lib.a</code>.</p>
+<h3><code>PREBUILT_SHARED_LIBRARY</code></h3>
+<p>Points to a build script used to specify a prebuilt shared library. Unlike
+BUILD_SHARED_LIBRARY and BUILD_STATIC_LIBRARY, the value of LOCAL_SRC_FILES
+must be a single path to a prebuilt shared library (e.g.
+<code>foo/libfoo.so</code>), instead of a source file.</p>
+<p>You can reference the prebuilt library in another module using the
+LOCAL_PREBUILTS variable (see <a
+href="md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html">NDK Prebuilt
+Library Support</a> for more information).</p>
+<h3><code>PREBUILT_STATIC_LIBRARY</code></h3>
+<p>This is the same as PREBUILT_SHARED_LIBRARY, but for a static library file
+instead. See <a href="md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html">NDK
+Prebuilt library support</a> for more.</p>
+<h3><code>TARGET_ARCH</code></h3>
+<p>Name of the target CPU architecture as it is specified by the Android Open
+Source Project. This is <code>arm</code> for any ARM-compatible build,
+independent of the CPU architecture revision.</p>
+<h3><code>TARGET_PLATFORM</code></h3>
+<p>Name of the target Android platform when this <code>Android.mk</code> is
+parsed. For example, <code>android-3</code> corresponds to Android 1.5 system
+images. For a complete list of platform names and corresponding Android system
+images, read <a
+href="md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html">Android NDK
+Stable APIs</a>.</p>
+<h3><code>TARGET_ARCH_ABI</code></h3>
+<p>Name of the target CPU+ABI when this <code>Android.mk</code> is parsed. You
+can specify one or more of the following values: </p>
+<pre class="fragment"> armeabi
+ For ARMv5TE
+
+ armeabi-v7a
+ For ARMv7
+
+ arm64-v8a
+ For ARMv8 AArch64
+
+ x86
+ For i686
+
+ x86_64
+ For x86-64
+
+ mips
+ For mips32 (r1)
+
+ mips64
+ For mips64 (r6)
+</pre><p>NOTE: Up to Android NDK 1.6_r1, this variable was simply defined as
+'<code>arm</code>'. However, the value has been redefined to better match what
+is used internally by the Android platform.</p>
+<p>For more details about architecture ABIs and corresponding compatibility
+issues, please read <a
+href="./md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html">And
+roid Native CPU ABI Management</a></p>
+<p>Other target ABIs will be introduced in future releases of the NDK and will
+have a different name. Note that all ARM-based ABIs will have 'TARGET_ARCH'
+defined to '<code>arm</code>', but may have different 'TARGET_ARCH_ABI'</p>
+<h3><code>TARGET_ABI</code></h3>
+<p>The concatenation of target platform and ABI, it really is defined as
+<code>-</code> and is useful when you want to test against a specific target
+system image for a real device.</p>
+<p>By default, this will be '<code>android-3-armeabi</code>'</p>
+<p>(Up to Android NDK 1.6_r1, this used to be '<code>android-3-arm</code>' by
+default)</p>
+<p><a class="anchor" id="npfm"></a> </p>
+<h2>NDK-provided function macros</h2>
+<p>The following are GNU Make 'function' macros, and must be evaluated by using
+'$(call &lt;function&gt;)'. They return textual information.</p>
+<h3><code>my-dir</code></h3>
+<p>Returns the path of the last included Makefile, which typically is the
+current <code>Android.mk</code>'s directory. This is useful to define
+LOCAL_PATH at the start of your <code>Android.mk</code> as with: </p>
+<pre class="fragment"> LOCAL_PATH := $(call my-dir)
+</pre><p>IMPORTANT NOTE: Due to the way GNU Make works, this really returns the
+path of the <em>last</em> <em>included</em> <em>Makefile</em> during the
+parsing of build scripts. Do not call <code>my-dir</code> after including
+another file.</p>
+<p>For example, consider the following example: </p>
+<pre class="fragment"> LOCAL_PATH := $(call my-dir)
+
+ ... declare one module
+
+ include $(LOCAL_PATH)/foo/`Android.mk`
+
+ LOCAL_PATH := $(call my-dir)
+
+ ... declare another module
+</pre><p>The problem here is that the second call to <code>my-dir</code> will
+define LOCAL_PATH to <code>$PATH/foo</code> instead of <code>$PATH</code>, due
+to the include that was performed before that.</p>
+<p>For this reason, it's better to put additional includes after everything
+else in an <code>Android.mk</code>, as in: </p>
+<pre class="fragment"> LOCAL_PATH := $(call my-dir)
+
+ ... declare one module
+
+ LOCAL_PATH := $(call my-dir)
+
+ ... declare another module
+
+ # extra includes at the end of the `Android.mk`
+ include $(LOCAL_PATH)/foo/`Android.mk`
+</pre><p>If this is not convenient, save the value of the first
+<code>my-dir</code> call into another variable, for example: </p>
+<pre class="fragment"> MY_LOCAL_PATH := $(call my-dir)
+
+ LOCAL_PATH := $(MY_LOCAL_PATH)
+
+ ... declare one module
+
+ include $(LOCAL_PATH)/foo/`Android.mk`
+
+ LOCAL_PATH := $(MY_LOCAL_PATH)
+
+ ... declare another module
+</pre><h3><code>all-subdir-makefiles</code></h3>
+<p>Returns a list of <code>Android.mk</code> located in all sub-directories of
+the current 'my-dir' path. For example, consider the following hierarchy: </p>
+<pre class="fragment"> sources/foo/Android.mk
+ sources/foo/lib1/Android.mk
+ sources/foo/lib2/Android.mk
+</pre><p>If sources/foo/<code>Android.mk</code> contains the single line: </p>
+<pre class="fragment"> include $(call all-subdir-makefiles)
+</pre><p>Then it will include automatically
+sources/foo/lib1/<code>Android.mk</code> and
+sources/foo/lib2/<code>Android.mk</code></p>
+<p>This function can be used to provide deep-nested source directory
+hierarchies to the build system. Note that by default, the NDK will only look
+for files in sources/*/<code>Android.mk</code></p>
+<h3><code>this-makefile</code></h3>
+<p>Returns the path of the current Makefile (i.e. where the function is
+called).</p>
+<h3><code>parent-makefile</code></h3>
+<p>Returns the path of the parent Makefile in the inclusion tree, i.e. the path
+of the Makefile that included the current one.</p>
+<h3><code>grand-parent-makefile</code></h3>
+<p>Guess what...</p>
+<h3><code>import-module</code></h3>
+<p>A function that allows you to find and include the <code>Android.mk</code>
+of another module by name. A typical example is: </p>
+<pre class="fragment"> $(call import-module,&lt;name&gt;)
+</pre><p>And this will look for the module tagged &lt;name&gt; in the list of
+directories referenced by your NDK_MODULE_PATH environment variable, and
+include its <code>Android.mk</code> automatically for you.</p>
+<p>Read <a href="md_4__additional__info__i_m_p_o_r_t-_m_o_d_u_l_e.html">Andoid
+Module Paths (Sharing Code Made Easy)</a> for more details.</p>
+<p><a class="anchor" id="mdv"></a> </p>
+<h2>Module-description variables</h2>
+<p>The following variables are used to describe your module to the build
+system. You should define some of them between an '<code>include </code>' and
+an '<code>include </code>'. As written previously, is a script that will
+undefine/clear all of these variables, unless explicitly noted in their
+description.</p>
+<h3><code>LOCAL_PATH</code></h3>
+<p>This variable is used to give the path of the current file. You MUST define
+it at the start of your <code>Android.mk</code>, which can be done with: </p>
+<pre class="fragment"> LOCAL_PATH := $(call my-dir)
+</pre><p>This variable is <em>not</em> cleared by so only one definition per
+<code>Android.mk</code> is needed (in case you define several modules in a
+single file).</p>
+<h3><code>LOCAL_MODULE</code></h3>
+<p>This is the name of your module. It must be unique among all module names,
+and shall not contain any space. You MUST define it before including any
+script.</p>
+<p>By default, the module name determines the name of generated files, e.g.
+lib&lt;foo&gt;.so for a shared library module named &lt;foo&gt;. However you
+should only refer to other modules with their 'normal' name (e.g. &lt;foo&gt;)
+in your NDK build files (either <code>Android.mk</code> or Application.mk)</p>
+<p>You can override this default with LOCAL_MODULE_FILENAME (see below)</p>
+<h3><code>LOCAL_MODULE_FILENAME</code></h3>
+<p>This variable is optional, and allows you to redefine the name of generated
+files. By default, module &lt;foo&gt; will always generate a static library
+named lib&lt;foo&gt;.a or a shared library named lib&lt;foo&gt;.so, which are
+standard Unix conventions.</p>
+<p>You can override this by defining LOCAL_MODULE_FILENAME, For example: </p>
+<pre class="fragment"> LOCAL_MODULE := foo-version-1
+ LOCAL_MODULE_FILENAME := libfoo
+</pre><p>*NOTE(: You should not put a path or file extension in your
+LOCAL_MODULE_FILENAME, these will be handled automatically by the build
+system.</p>
+<h3><code>LOCAL_SRC_FILES</code></h3>
+<p>This is a list of source files that will be built for your module. Only list
+the files that will be passed to a compiler, since the build system
+automatically computes dependencies for you.</p>
+<p>Note that source files names are relative to LOCAL_PATH and you can use path
+components, e.g.: </p>
+<pre class="fragment"> LOCAL_SRC_FILES := foo.c \
+ toto/bar.c
+</pre><p>Absolute file paths are also supported: </p>
+<pre class="fragment"> LOCAL_SRC_FILES := /home/user/mysources/foo.c
+</pre><p>or on Windows: </p>
+<pre class="fragment"> LOCAL_SRC_FILES := c:/Users/user/sources/foo.c
+</pre><p>Avoiding absolute file paths is recommended, this makes your
+<code>Android.mk</code> easy to reuse on a different machine / system.</p>
+<p>NOTE: Always use Unix-style forward slashes (/) in build files.
+Windows-style back-slashes will not be handled properly.</p>
+<h3><code>LOCAL_CPP_EXTENSION</code></h3>
+<p>This is an optional variable that can be defined to indicate the file
+extension(s) of C++ source files. They must begin with a dot. The default is
+'.cpp' but you can change it. For example: </p>
+<pre class="fragment"> LOCAL_CPP_EXTENSION := .cxx
+</pre><p>Since NDK r7, you can list several extensions in this variable, as in:
+</p>
+<pre class="fragment"> LOCAL_CPP_EXTENSION := .cxx .cpp .cc
+</pre><h3><code>LOCAL_CPP_FEATURES</code></h3>
+<p>This is an optional variable that can be defined to indicate that your code
+relies on specific C++ features. To indicate that your code uses RTTI (RunTime
+Type Information), use the following: </p>
+<pre class="fragment"> LOCAL_CPP_FEATURES := rtti
+</pre><p>To indicate that your code uses C++ exceptions, use: </p>
+<pre class="fragment"> LOCAL_CPP_FEATURES := exceptions
+</pre><p>You can also use both of them with (order is not important): </p>
+<pre class="fragment"> LOCAL_CPP_FEATURES := rtti features
+</pre><p>The effect of this variable is to enable the right compiler/linker
+flags when building your modules from sources. For prebuilt binaries, this also
+helps declare which features the binary relies on to ensure the final link
+works correctly.</p>
+<p>It is recommended to use this variable instead of enabling
+<code>-frtti</code> and <code>-fexceptions</code> directly in your
+LOCAL_CPPFLAGS definition.</p>
+<h3><code>LOCAL_C_INCLUDES</code></h3>
+<p>An optional list of paths, relative to the NDK <em>root</em> directory,
+which will be appended to the include search path when compiling all sources
+(C, C++ and Assembly). For example: </p>
+<pre class="fragment"> LOCAL_C_INCLUDES := sources/foo
+</pre><p>Or even: </p>
+<pre class="fragment"> LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo
+</pre><p>These are placed before any corresponding inclusion flag in
+LOCAL_CFLAGS / LOCAL_CPPFLAGS</p>
+<p>The LOCAL_C_INCLUDES path are also used automatically when launching native
+debugging with ndk-gdb.</p>
+<h3><code>LOCAL_CFLAGS</code></h3>
+<p>An optional set of compiler flags that will be passed when building C
+<em>and</em> C++ source files.</p>
+<p>This can be useful to specify additional macro definitions or compile
+options.</p>
+<p><b>IMPORTANT</b>: Try not to change the optimization/debugging level in your
+<code>Android.mk</code>, this can be handled automatically for you by
+specifying the appropriate information in your Application.mk, and will let the
+NDK generate useful data files used during debugging.</p>
+<p>NOTE: In android-ndk-1.5_r1, the corresponding flags only applied to C
+source files, not C++ ones. This has been corrected to match the full Android
+build system behaviour. (You can use LOCAL_CPPFLAGS to specify flags for C++
+sources only now).</p>
+<p>It is possible to specify additional include paths with LOCAL_CFLAGS +=
+-I&lt;path&gt;, however, it is better to use LOCAL_C_INCLUDES for this, since
+the paths will then also be used during native debugging with ndk-gdb.</p>
+<h3><code>LOCAL_CXXFLAGS</code></h3>
+<p>An alias for LOCAL_CPPFLAGS. Note that use of this flag is obsolete as it
+may disappear in future releases of the NDK.</p>
+<h3><code>LOCAL_CPPFLAGS</code></h3>
+<p>An optional set of compiler flags that will be passed when building C++
+source files <em>only</em>. They will appear after the LOCAL_CFLAGS on the
+compiler's command-line.</p>
+<p>NOTE: In android-ndk-1.5_r1, the corresponding flags applied to both C and
+C++ sources. This has been corrected to match the full Android build system.
+(You can use LOCAL_CFLAGS to specify flags for both C and C++ sources now).</p>
+<h3><code>LOCAL_STATIC_LIBRARIES</code></h3>
+<p>The list of static libraries modules that the current module depends on.</p>
+<p>If the current module is a shared library or an executable, this will force
+these libraries to be linked into the resulting binary.</p>
+<p>If the current module is a static library, this simply tells that another
+other module that depends on the current one will also depend on the listed
+libraries.</p>
+<h3><code>LOCAL_SHARED_LIBRARIES</code></h3>
+<p>The list of shared libraries <em>modules</em> this module depends on at
+runtime. This is necessary at link time and to embed the corresponding
+information in the generated file.</p>
+<h3><code>LOCAL_WHOLE_STATIC_LIBRARIES</code></h3>
+<p>A variant of LOCAL_STATIC_LIBRARIES used to express that the corresponding
+library module should be used as "whole archives" to the linker. See the GNU
+linker's documentation for the <code>--whole-archive</code> flag.</p>
+<p>This is generally useful when there are circular dependencies between
+several static libraries. Note that when used to build a shared library, this
+will force all object files from your whole static libraries to be added to the
+final binary. This is not true when generating executables though.</p>
+<h3><code>LOCAL_LDLIBS</code></h3>
+<p>The list of additional linker flags to be used when building your shared
+library or executable. This is useful to pass the name of specific system
+libraries with the '<code>-l</code>' prefix. For example, the following will
+tell the linker to generate a module that links to
+<code>/system/lib/libz.so</code> at load time: </p>
+<pre class="fragment"> LOCAL_LDLIBS := -lz
+</pre><p>See <a
+href="md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html">Android NDK
+Stable APIs</a> for the list of exposed system libraries you can linked against
+with this NDK release.</p>
+<p>NOTE: This is ignored for static libraries, and ndk-build will print a
+warning if you define it in such a module.</p>
+<h3><code>LOCAL_LDFLAGS</code></h3>
+<p>The list of other linker flags to be used when building your shared library
+or executable. For example, the following will use the <code>ld.bfd</code>
+linker on ARM/X86 GCC 4.6+ where <code>ld.gold</code> is the default </p>
+<pre class="fragment"> LOCAL_LDFLAGS += -fuse-ld=bfd
+</pre><p>NOTE: This is ignored for static libraries, and ndk-build will print a
+warning if you define it in such a module.</p>
+<h3><code>LOCAL_ALLOW_UNDEFINED_SYMBOLS</code></h3>
+<p>By default, any undefined reference encountered when trying to build a
+shared library will result in an "undefined symbol" error. This is a great help
+to catch bugs in your source code.</p>
+<p>However, if for some reason you need to disable this check, set this
+variable to '<code>true</code>'. Note that the corresponding shared library may
+fail to load at runtime.</p>
+<p><em>NOTE</em>: This is ignored for static libraries, and ndk-build will
+print a warning if you define it in such a module.</p>
+<h3><code>LOCAL_ARM_MODE</code></h3>
+<p>By default, ARM target binaries are generated in 'thumb' mode, where each
+instruction are 16-bit wide, and linked with /thumb STL libraries. You can
+define this variable to '<code>arm</code>' if you want to force the generation
+of the module's object files in 'arm' (32-bit instructions) mode. E.g.: </p>
+<pre class="fragment"> LOCAL_ARM_MODE := arm
+</pre><p>Note that you can also instruct the build system to only build
+specific sources in ARM mode by appending an '<code>.arm</code>' suffix to its
+source file name. For example, with: </p>
+<pre class="fragment"> LOCAL_SRC_FILES := foo.c bar.c.arm
+</pre><p>Tells the build system to always compile '<code>bar.c</code>' in ARM
+mode, and to build <code>foo.c</code> according to the value of
+LOCAL_ARM_MODE.</p>
+<p>NOTE: Setting APP_OPTIM to '<code>debug</code>' in your
+<code>Application.mk</code> will also force the generation of ARM binaries as
+well. This is due to bugs in the toolchain debugger that don't deal too well
+with thumb code.</p>
+<h3><code>LOCAL_ARM_NEON</code></h3>
+<p>Defining this variable to '<code>true</code>' allows the use of ARM Advanced
+SIMD (a.k.a. NEON) GCC intrinsics in your C and C++ sources, as well as NEON
+instructions in Assembly files.</p>
+<p>You should only define it when targeting the '<code>armeabi-v7a</code>' ABI
+that corresponds to the ARMv7 instruction set. Note that not all ARMv7 based
+CPUs support the NEON instruction set extensions and that you should perform
+runtime detection to be able to use this code at runtime safely. To learn more
+about this, please read the documentation at <a
+href="md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html">Android
+NDK &amp; ARM NEON Instruction Set Extension Support</a> and <a
+href="md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html">Android
+NDK CPU Features detection library</a>.</p>
+<p>Alternatively, you can also specify that only specific source files may be
+compiled with NEON support by using the '<code>.neon</code>' suffix, as in: </p>
+<pre class="fragment"> LOCAL_SRC_FILES = foo.c.neon bar.c zoo.c.arm.neon
+</pre><p>In this example, '<code>foo.c</code>' will be compiled in thumb+neon
+mode, '<code>bar.c</code>' will be compiled in 'thumb' mode, and
+'<code>zoo.c</code>' will be compiled in 'arm+neon' mode.</p>
+<p>Note that the '<code>.neon</code>' suffix must appear after the
+'<code>.arm</code>' suffix if you use both (i.e. <code>foo.c.arm.neon</code>
+works, but not <code>foo.c.neon.arm</code> !)</p>
+<h3><code>LOCAL_DISABLE_NO_EXECUTE</code></h3>
+<p>Android NDK r4 added support for the "NX bit" security feature. It is
+enabled by default, but you can disable it if you <em>really</em> need to by
+setting this variable to 'true'.</p>
+<p>NOTE: This feature does not modify the ABI and is only enabled on kernels
+targeting ARMv6+ CPU devices. Machine code generated with this feature enabled
+will run unmodified on devices running earlier CPU architectures.</p>
+<p>For more information, see:</p>
+<ul>
+<li><a href="http://en.wikipedia.org/wiki/NX_bit">Wikipedia: NX bit</a></li>
+<li><a href="http://www.gentoo.org/proj/en/hardened/gnu-stack.xml">The GNU
+stack kickstart</a></li>
+</ul>
+<h3><code>LOCAL_DISABLE_RELRO</code></h3>
+<p>By default, NDK compiled code is built with read-only relocations and GOT
+protection. This instructs the runtime linker to mark certain regions of memory
+as being read-only after relocation, making certain security exploits (such as
+GOT overwrites) harder to perform.</p>
+<p>It is enabled by default, but you can disable it if you <em>really</em> need
+to by setting this variable to '<code>true</code>'.</p>
+<p>NOTE: These protections are only effective on newer Android devices ("Jelly
+Bean" and beyond). The code will still run on older versions (albeit without
+memory protections).</p>
+<p>For more information, see:</p>
+<ul>
+<li><a
+href="http://isisblogs.poly.edu/2011/06/01/relro-relocation-read-only/">RELRO:
+RELocation Read-Only</a></li>
+<li><a href="http://www.akkadia.org/drepper/nonselsec.pdf">Security
+enhancements in RedHat Enterprise Linux (section 6)</a></li>
+</ul>
+<h3><code>LOCAL_DISABLE_FORMAT_STRING_CHECKS</code></h3>
+<p>By default, NDK compiled code is compiled with format string protection.
+This forces a compiler error if a non-constant format string is used in a
+printf style function.</p>
+<p>It is enabled by default, but you can disable it if you <em>really</em> need
+to by setting this variable to '<code>true</code>'.</p>
+<h3><code>LOCAL_EXPORT_CFLAGS</code></h3>
+<p>Define this variable to record a set of C/C++ compiler flags that will be
+added to the LOCAL_CFLAGS definition of any other module that uses this one
+with LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES.</p>
+<p>For example, consider the module '<code>foo</code>' with the following
+definition: </p>
+<pre class="fragment"> include $(CLEAR_VARS)
+ LOCAL_MODULE := foo
+ LOCAL_SRC_FILES := foo/foo.c
+ LOCAL_EXPORT_CFLAGS := -DFOO=1
+ include $(BUILD_STATIC_LIBRARY)
+</pre><p>And another module, named '<code>bar</code>' that depends on it as:
+</p>
+<pre class="fragment"> include $(CLEAR_VARS)
+ LOCAL_MODULE := bar
+ LOCAL_SRC_FILES := bar.c
+ LOCAL_CFLAGS := -DBAR=2
+ LOCAL_STATIC_LIBRARIES := foo
+ include $(BUILD_SHARED_LIBRARY)
+</pre><p>Then, the flags '<code>-DFOO=1</code> <code>-DBAR=2</code>' will be
+passed to the compiler when building <code>bar.c</code>.</p>
+<p>Exported flags are prepended to your module's LOCAL_CFLAGS so you can easily
+override them. They are also transitive: if '<code>zoo</code>' depends on
+'<code>bar</code>' which depends on '<code>foo</code>', then '<code>zoo</code>'
+will also inherit all flags exported by '<code>foo</code>'.</p>
+<p>Finally, exported flags are <em>not</em> used when building the module that
+exports them. In the above example, <code>-DFOO=1</code> would not be passed to
+the compiler when building <code>foo/foo.c</code>.</p>
+<h3><code>LOCAL_EXPORT_CPPFLAGS</code></h3>
+<p>Same as LOCAL_EXPORT_CFLAGS, but for C++ flags only.</p>
+<h3><code>LOCAL_EXPORT_C_INCLUDES</code></h3>
+<p>Same as LOCAL_EXPORT_CFLAGS, but for C include paths. This can be useful if
+'bar.c' wants to include headers that are provided by module 'foo'.</p>
+<h3><code>LOCAL_EXPORT_LDFLAGS</code></h3>
+<p>Same as LOCAL_EXPORT_CFLAGS, but for linker flags.</p>
+<h3><code>LOCAL_EXPORT_LDLIBS</code></h3>
+<p>Same as LOCAL_EXPORT_CFLAGS, but for passing the name of specific system
+libraries with the '<code>-l</code>' prefix. Note that the imported linker
+flags will be appended to your module's LOCAL_LDLIBS though, due to the way
+Unix linkers work.</p>
+<p>This is typically useful when module '<code>foo</code>' is a static library
+and has code that depends on a system library. LOCAL_EXPORT_LDLIBS can then be
+used to export the dependency. For example: </p>
+<pre class="fragment"> include $(CLEAR_VARS)
+ LOCAL_MODULE := foo
+ LOCAL_SRC_FILES := foo/foo.c
+ LOCAL_EXPORT_LDLIBS := -llog
+ include $(BUILD_STATIC_LIBRARY)
+
+ include $(CLEAR_VARS)
+ LOCAL_MODULE := bar
+ LOCAL_SRC_FILES := bar.c
+ LOCAL_STATIC_LIBRARIES := foo
+ include $(BUILD_SHARED_LIBRARY)
+</pre><p>There, <code>libbar.so</code> will be built with a <code>-llog</code>
+at the end of the linker command to indicate that it depends on the system
+logging library, because it depends on '<code>foo</code>'.</p>
+<h3><code>LOCAL_SHORT_COMMANDS</code></h3>
+<p>Set this variable to '<code>true</code>' when your module has a very high
+number of sources and/or dependent static or shared libraries. This forces the
+build system to use an intermediate list file, and use it with the library
+archiver or static linker with the <code>@</code> syntax.</p>
+<p>This can be useful on Windows, where the command-line only accepts a maximum
+of 8191 characters, which can be too small for complex projects.</p>
+<p>This also impacts the compilation of individual source files, placing nearly
+all compiler flags inside list files too.</p>
+<p>Note that any other value than '<code>true</code>' will revert to the
+default behaviour. You can also define APP_SHORT_COMMANDS in your
+Application.mk to force this behaviour for all modules in your project.</p>
+<p><em>NOTE</em>: We do not recommend enabling this feature by default, since
+it makes the build slower.</p>
+<h3><code>LOCAL_THIN_ARCHIVE</code></h3>
+<p>Set this variable to '<code>true</code>' when building static libraries.
+This will generate a 'thin archive', i.e. a library file (e.g.
+<code>libfoo.a</code>) which doesn't contain object files, but simply file
+paths to the actual objects that it should normally contain.</p>
+<p>This is useful to reduce the size of your build output. The drawback is that
+such libraries <em>cannot</em> be moved to a different location (all paths
+inside them are relative).</p>
+<p>Valid values are '<code>true</code>', '<code>false</code>' or empty. A
+default value can be set in your Application.mk through APP_THIN_ARCHIVE.</p>
+<p><em>NOTE</em>: This is ignored for non-static library modules, or prebuilt
+static library ones.</p>
+<h3><code>LOCAL_FILTER_ASM</code></h3>
+<p>Define this variable to a shell command that will be used to filter the
+assembly files from, or generated from, your LOCAL_SRC_FILES.</p>
+<p>When it is defined, the following happens:</p>
+<ul>
+<li>Any C or C++ source file is generated into a temporary assembly file
+(instead of being compiled into an object file).</li>
+<li>Any temporary assembly file, and any assembly file listed in
+LOCAL_SRC_FILES is sent through the LOCAL_FILTER_ASM command to generate
+<em>another</em> temporary assembly file.</li>
+<li>These filtered assembly files are compiled into object file.</li>
+</ul>
+<p>In other words, If you have: </p>
+<pre class="fragment"> LOCAL_SRC_FILES := foo.c bar.S
+ LOCAL_FILTER_ASM := myasmfilter
+
+ foo.c --1--&gt; $OBJS_DIR/foo.S.original --2--&gt; $OBJS_DIR/foo.S
+--3--&gt; $OBJS_DIR/foo.o
+ bar.S --2--&gt; $OBJS_DIR/bar.S
+--3--&gt; $OBJS_DIR/bar.o
+</pre><p>Were "1" corresponds to the compiler, "2" to the filter, and "3" to
+the assembler. The filter must be a standalone shell command that takes the
+name of the input file as its first argument, and the name of the output file
+as the second one, as in: </p>
+<pre class="fragment"> myasmfilter $OBJS_DIR/foo.S.original
+$OBJS_DIR/foo.S
+ myasmfilter bar.S $OBJS_DIR/bar.S</pre> </div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK
+Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__building__chapter_1-section_8_ndk-build.html b/docs/Programmers_Guide/html/md_3__key__topics__building__chapter_1-section_8_ndk-build.html
new file mode 100644
index 000000000..c472a43c7
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__building__chapter_1-section_8_ndk-build.html
@@ -0,0 +1,247 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: ndk-build</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__building__chapter_1-section_8_ndk-build.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">ndk-build </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p><a href="#int">Internals</a><br/>
+ <a href="#ifc">Invoking from the Command Line</a><br/>
+ <a href="#ife">Invoking from Eclipse</a><br/>
+ <a href="#6432">64-bit and 32-bit toolchains</a><br/>
+ <a href="#req">Requirements</a><br/>
+</p>
+<p><a class="anchor" id="int"></a> </p>
+<h2>Internals</h2>
+<p>ndk-build is a tiny shell script introduced in Android NDK r4. Its purpose
+is simply to invoke the right NDK build script; it is equivalent to: </p>
+<pre class="fragment">$GNUMAKE -f &lt;ndk&gt;/build/core/build-local.mk
+&lt;parameters&gt;
+</pre><p><code>$GNUMAKE</code> points to GNU Make 3.81 or later, and
+<code>&lt;ndk&gt;</code> points to your NDK installation directory. You can use
+this information to invoke ndk-build from other shell scripts, or even your own
+make files.</p>
+<p><a class="anchor" id="ifc"></a> </p>
+<h2>Invoking from the Command Line</h2>
+<p>ndk-build lives in the top-level directory of the NDK. To run it from the
+command line, invoke it while in or under your application project directory.
+For example: </p>
+<pre class="fragment">cd &lt;project&gt;
+&lt;ndk&gt;/ndk-build
+</pre><p>In this example, <code>&lt;project&gt;</code> points to your
+project’s root directory, and <code>&lt;ndk&gt;</code> is the directory where
+you installed the NDK. Per “Getting Started,” you can add $NDK to your PATH
+to avoid having to type the whole filepath every time you use ndk-build.
+Alternatively, you can create an alias.</p>
+<p><a class="anchor" id="options"></a> </p>
+<h3>Options</h3>
+<p>All parameters to ndk-build are passed directly to the underlying GNU Make
+command that runs the NDK build scripts. Combine <code>ndk-build</code> and
+options in the form <code>ndk-build &lt;option&gt;</code>. For example: </p>
+<pre class="fragment">$ ndk-build clean
+</pre><p>The following options are available:</p>
+<ul>
+<li><code>clean</code><ul>
+<li>Clean all generated binaries.</li>
+</ul>
+</li>
+<li><code>V=1</code><ul>
+<li>Launch build, and display build commands.</li>
+</ul>
+</li>
+<li><code>-B</code><ul>
+<li>Force a complete rebuild.</li>
+</ul>
+</li>
+<li><code>-B V=1</code><ul>
+<li>Force a complete rebuild and display build commands.</li>
+</ul>
+</li>
+<li><code>NDK_LOG=1</code><ul>
+<li>Display internal NDK log messages (used for debugging the NDK itself).</li>
+</ul>
+</li>
+<li><code>NDK_DEBUG=1</code><ul>
+<li>Force a debuggable build (<a href="#dvr">see below</a>).</li>
+</ul>
+</li>
+<li><code>NDK_DEBUG=0</code><ul>
+<li>Force a release build (<a href="#dvr">see below</a>).</li>
+</ul>
+</li>
+<li><code>NDK_HOST_32BIT=1</code><ul>
+<li>Always use toolchain in 32-bit mode (see below).</li>
+</ul>
+</li>
+<li><code>NDK_APPLICATION_MK=&lt;file&gt;</code><ul>
+<li>Build, using a specific <code>Application.mk</code> file pointed to by the
+<code>NDK_APPLICATION_MK</code> variable.</li>
+</ul>
+</li>
+<li><code>-C &lt;project&gt;</code><ul>
+<li>Build the native code for the project path located at
+<code>&lt;project&gt;</code>. Useful if you don't want to <code>cd</code> to it
+in your terminal.</li>
+</ul>
+</li>
+</ul>
+<p><a class="anchor" id="ife"></a> </p>
+<h2>Invoking from Eclipse</h2>
+<p>To build from Eclipse, make sure that you have configured it as described in
+<a href="../../Getting_Started/html/index.html">"Getting Started."</a> If you
+wish to build using the default <code>ndk-build</code> command, with no
+options, you can just build your project just as you would any Android project.
+To add the options described above to the <code>ndk-build</code> command that
+Eclipse issues, follow these steps:</p>
+<ol type="1">
+<li>Right-click your project.</li>
+<li>Select <code>Preferences</code>.</li>
+<li>Click next to <code>C/C++ Build</code>.</li>
+<li>Uncheck <code>Use default build command</code>.</li>
+<li>Enter the entire build string as if you were typing it on the command
+line.</li>
+<li>Click <code>OK</code>.</li>
+</ol>
+Figure 1 shows the string as typed in the <b>Build command</b> field.<br>
+<br>
+<div class="image">
+<img src="./images/NDK_build_string.png" alt="setting where NDK lives"
+align="left" width="660"/>
+</div>
+<p style="clear:both"><b>Figure 1.</b> Specifying a debug build from within
+Eclipse</p>
+<p><a class="anchor" id="dvr"></a> </p>
+<h3>Debuggable versus Release builds</h3>
+<p>Use the <code>NDK_DEBUG</code> parameter in conjunction with
+AndroidManifest.xml to control whether to perform a debug or release build,
+optimization-related behavior, and inclusion of symbols. Table 1 shows the
+results of each possible combination of settings.</p>
+<p><em>Table 1.</em> Results of <code>NDK_DEBUG</code> (command line) and
+<code>android:debuggable</code> (manifest) combinations.</p>
+<table class="doxtable">
+<tr>
+<th></th><th>NDK_DEBUG=0 </th><th>NDK_DEBUG=1</th><th>NDK_DEBUG not specified
+</th></tr>
+<tr>
+<td>android:debuggble="true" </td><td>Debug; Symbols; Optimized*1
+</td><td>Debug; Symbols; Not optimized*2 </td><td>(same as NDK_DEBUG=1)
+</td></tr>
+<tr>
+<td>android:debuggable="false"</td><td>Release; Symbols; Optimized
+</td><td>Release; Symbols; Not optimized</td><td>Release; No symbols;
+Optimized*3 </td></tr>
+</table>
+<p>*1: Useful for profiling.<br/>
+ *2: Default for running ndk-gdb.<br/>
+ *3: Default mode.<br/>
+ </p>
+<pre class="fragment">Note
+
+NDK_DEBUG=1 is the equivalent of APP_OPTIM= debug in Application.mk, and
+complies with the GCC -O0 option. NDK_DEBUG=0 is the equivalent of APP_OPTIM=
+release, and complies with GCC -O2. For more information about `APP_OPTIM`, see
+the Application.mk section.
+</pre><p>The syntax on the command line is, for example: </p>
+<pre class="fragment">$ ndk-build NDK_DEBUG=1
+</pre><p>In the <code>AndroidManifest.xml file</code>, the syntax resembles the
+following: </p>
+<pre class="fragment">&lt;application android:label="@string/app_name"
+android:debuggable="true"&gt;
+</pre><p> <span><br/>
+</span> </p>
+<pre class="fragment">Important Note:
+If you use the build tools of SDK r8 (or higher), you need not need touch your
+AndroidManifest.xml file at all: Building a debug package (e.g. with ant debug
+or the corresponding option of the ADT plugin) causes the tool automatically to
+pick the native debug files generated with NDK_DEBUG=1.
+</pre><p><a class="anchor" id="6432"></a> </p>
+<h2>64-bit and 32-bit toolchains</h2>
+<p>Some toolchains come with both 64-bit and 32-bit versions. For example,
+directories <code>&lt;ndk&gt;/toolchain/&lt;name&gt;/prebuilt/</code> and
+<code>&lt;ndk&gt;/prebuilt/</code> may contain both <code>linux-x86</code> and
+<code>linux-x86_64</code> folders for Linux tools in 32-bit and 64-bit modes,
+respectively. The ndk-build script automatically chooses a 64-bit version of
+the toolchain if the host OS supports it. You can force the use of a 32-bit
+toolchain by using <code>NDK_HOST_32BIT=1</code> either in your environment or
+on the <code>ndk-build</code> command line.</p>
+<p>Note that 64-bit tools utilize host resources better (faster, handle larger
+programs, etc), and they can still generate 32-bit binaries for Android.</p>
+<p><a class="anchor" id="req"></a> </p>
+<h2>Requirements</h2>
+<p>You need GNU Make 3.81 or later to use 'ndk-build' or the NDK in general.
+The build scripts will detect a non-compliant Make tool, and generate an error
+message.</p>
+<p>If you have GNU Make 3.81 installed, but the default <code>make</code>
+command doesn’t launch it, define GNUMAKE in your environment to point to it
+before launching 'ndk-build'. For example: </p>
+<pre class="fragment">$ export GNUMAKE=/usr/local/bin/gmake
+$ ndk-build
+</pre><p>Adapt to your shell and GNU Make 3.81 installation location.</p>
+<p>You may override other host prebuilt tools in $NDK/prebuilt/&lt;OS&gt;/bin/
+with the following environment variables: </p>
+<pre class="fragment">$ export NDK_HOST_AWK=&lt;path-to-awk&gt;
+
+$ export NDK_HOST_ECHO=&lt;path-to-echo&gt;
+
+$ export NDK_HOST_CMP=&lt;path-to-cmp&gt; </pre> </div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Sun Jun 22 2014 15:25:44 for NDK
+Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html b/docs/Programmers_Guide/html/md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html
new file mode 100644
index 000000000..215f3c5a2
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html
@@ -0,0 +1,213 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Standalone Toolchain</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Standalone Toolchain </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>It is now possible to use the toolchains provided with the Android NDK as standalone compilers. This can be useful if you already have your own build system, and only need to ability to invoke the cross-compiler to add support to Android for it.</p>
+<p>A typical use case if invoking the 'configure' script of an open-source library that expects a cross-compiler in the CC environment variable.</p>
+<p>This document explains how to do that:</p>
+<h2>Selecting your toolchain</h2>
+<p>Before anything else, you need to decide whether your standalone toolchain is going to target ARM-based devices, x86-based, or MIPS-based one. Each architecture corresponds to a different toolchain name. For example:</p>
+<ul>
+<li>arm-linux-androideabi-4.6 =&gt; targeting ARM-based Android devices</li>
+<li>x86-4.6 =&gt; targeting x86-based Android devices</li>
+<li>mipsel-linux-android-4.6 =&gt; targeting MIPS-based Android devices</li>
+</ul>
+<h2>Selecting your sysroot</h2>
+<p>The second thing you need to know is which Android native API level you want to target. Each one of them provides a different various APIs, which are documented under doc/STABLE-APIS.html, and correspond to the sub-directories of $NDK/platforms.</p>
+<p>This allows you to define the path to your 'sysroot', a GCC term for a directory containing the system headers and libraries of your target. Usually, this will be something like: </p>
+<pre class="fragment"> SYSROOT=$NDK/platforms/android-&lt;level&gt;/arch-&lt;arch&gt;/
+</pre><p>Where &lt;level&gt; is the API level number, and &lt;arch&gt; is the architecture ("arm", "x86", and "mips" are the supported values). For example, if you're targeting Android 2.2 (a.k.a. Froyo), you would use: </p>
+<pre class="fragment"> SYSROOT=$NDK/platforms/android-8/arch-arm
+</pre><p>IMPORTANT: Note that X86 and MIPS architectures are only supported at android-9 and later.</p>
+<h2>Invoking the compiler (the hard way)</h2>
+<p>Invoke the compiler using the &ndash;sysroot option to indicate where the system files for the platform you're targeting are located. For example, do: </p>
+<pre class="fragment"> export CC="$NDK/toolchains/&lt;name&gt;/prebuilt/&lt;system&gt;/bin/&lt;prefix&gt;gcc --sysroot=$SYSROOT"
+ $CC -o foo.o -c foo.c
+</pre><p>Where &lt;name&gt; is the toolchain's name, &lt;system&gt; is the host tag for your system, and &lt;prefix&gt; is a toolchain-specific prefix. For example, if you are on Linux using the NDK r5 toolchain, you would use: </p>
+<pre class="fragment"> export CC="$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT"
+</pre><p>As you can see, this is rather verbose, but it works!</p>
+<p>IMPORTANT NOTE:</p>
+<p>Using the NDK toolchain directly has a serious limitation: You won't be able to use any C++ STL (STLport, libc++, or the GNU libstdc++) with it. Also no exceptions and no RTTI.</p>
+<p>For clang, you need to add correct "-target" for given architecture, and add "-gcc-toolchain" to path of GNU-based toolchain for "as" and "ld", eg.</p>
+<ol type="1">
+<li>Add "-target armv7-none-linux-androideabi" for armeabi-v7a, "-target armv5te-none-linux-androideabi" for armeabi, "-target i686-none-linux-android" for x86, "-target mipsel-none-linux-android" for mips, and</li>
+<li>Add "-gcc-toolchain $NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64"</li>
+</ol>
+<h2>Invoking the compiler (the easy way)</h2>
+<p>The NDK allows you to create a "customized" toolchain installation to make life easier. For example, consider the following command: </p>
+<pre class="fragment"> $NDK/build/tools/make-standalone-toolchain.sh --platform=android-5 --install-dir=/tmp/my-android-toolchain
+</pre><p>This will create a directory named /tmp/my-android-toolchain containing a copy of the android-5/arch-arm sysroot, and of the toolchain binaries.</p>
+<p>Note that by default, the 32-bit ARM-based GCC 4.6 toolchain will be selected by the script. Use the '&ndash;arch=x86' option to specify the x86 GCC 4.6, or add '&ndash;arch=mips' option to specify the MIPS GCC 4.6, or alternatively '&ndash;toolchain=&lt;name&gt;'. For example: </p>
+<pre class="fragment"> --toolchain=x86-4.8 # select x86 GCC 4.8 compiler
+ --toolchain=arm-linux-androideabi-4.7 # select ARM GCC 4.7 compiler
+ --toolchain=mipsel-linux-android-4.6 # select MIPS GCC 4.6 compiler, same as --arch=mips
+</pre><p>If you wish, add '&ndash;llvm-version=3.3' to also copy clang/llvm 3.3, or use &ndash;toolchain with '-clang3.3' suffix. For example: </p>
+<pre class="fragment"> --toolchain=arm-linux-androideabi-clang3.3 # same as --arch=arm --llvm-version=3.3
+</pre><p>You may specify &ndash;system=linux-x86_64 on 64-bit Linux or &ndash;system=darwin-x86_64 on 64-bit MacOSX to make 64-bit host toolchain instead of the 32-bit one (default). See IV of NDK-BUILD.html</p>
+<p>You may specify &ndash;stl=stlport to copy libstlport instead of libgnustl. Note that to link against the shared library, you will have to explicitely use -lstlport_shared in this case, just like you need to use -lgnustl_shared for the GNU libstdc++ case. Static linking doesn't require anything special.</p>
+<p>Likewise you may specify &ndash;stl=libc++ to copy LLVM libc++ headers and libraries. Note that to link against the shared library, you will have to explicitely use -lc++_shared.</p>
+<p>You can later use it directly with something like: </p>
+<pre class="fragment"> export PATH=/tmp/my-android-toolchain/bin:$PATH
+ export CC=arm-linux-androideabi-gcc # or export CC=clang
+ export CXX=arm-linux-androideabi-g++ # or export CXX=clang++
+</pre><p>Note that without the &ndash;install-dir option, make-standalone-toolchain.sh will create a tarball in /tmp/ndk/&lt;toolchain-name&gt;.tar.bz2. This allows you to archive and redistribute the binaries easily.</p>
+<p>Another important benefit is that this standalone toolchain will contain a working copy of a C++ STL library, with working exceptions and RTTI support.</p>
+<p>Use &ndash;help for more options and details.</p>
+<p>IMPORTANT<br/>
+ The toolchain binaries do not depend or contain host-specific paths, in other words, they can be installed in any location, or even moved if you need to.</p>
+<p>NOTE<br/>
+ You can still use the &ndash;sysroot option with the new toolchain, but it is now simply optional!</p>
+<h2>About Clang</h2>
+<p>It is possible to also install Clang binaries in the standalone installation by using the &ndash;llvm-version=&lt;version&gt; option, where &lt;version&gt; is a LLVM/Clang version number (e.g. <code>3.2</code> or <code>3.3</code>). E.g.: </p>
+<pre class="fragment"> build/tools/make-standalone-toolchain.sh \
+ --install-dir=/tmp/mydir \
+ --toolchain=arm-linux-androideabi-4.7 \
+ --llvm-version=3.3
+</pre><p>Note that Clang binaries are copied in addition to the GCC ones, because they rely on the same assembler, linker, headers, libraries and C++ STL implementation.</p>
+<p>This also installs two scripts under &lt;install-dir&gt;/bin/ named '<code>clang</code>' and '<code>clang++</code>' which invoke the real clang binary with default target architecture flags. In other words, they should "just work" and you should be able to use them in your own builds by setting CC and CXX environment variables to point to them.</p>
+<p>The rest of this section gives more detail about how these work, in case you encounter some unexpected problems.</p>
+<p>For example, in an ARM standalone installation built with <code>--llvm-version=3.3</code>, <code>clang</code> is a one-liner that looks like this on Unix: </p>
+<pre class="fragment"> `dirname $0`/clang31 -target armv5te-none-linux-androideabi "$@"
+</pre><p>And <code>clang++</code> invokes <code>clang++31</code> in the same way.</p>
+<p>Note that for ARM, <code>clang</code> will change target based on the presence of subsequent option "`-march=armv7-a`" and/or "`-mthumb`". ie.</p>
+<ol type="1">
+<li>With "`-march=armv7-a`", -target becomes <code>armv7-none-linux-androideabi</code>.</li>
+<li>With "`-mthumb`", -target becomes <code>thumb-none-linux-androideabi</code>.</li>
+<li>With both, -target becomes <code>thumbv7-none-linux-androideabi</code>.</li>
+</ol>
+<p>You may override with your own -target if you wish.</p>
+<p>There is no need for "-gcc-toolchain" because clang locates "as" and "ld" in predefined relative location in standalone package.</p>
+<p>Extra efforts have been made to make clang/clang++ easier drop-in replacements for gcc/g++ in Makefile. When in doubt, use the following common techniques to check:</p>
+<ol type="1">
+<li>Add option "`-v`" to dump commands compiler driver issues</li>
+<li>Add option "`-###`" to dump command line options, including those implicitly predefined.</li>
+<li>Use "`-x c` `/dev/null` `-dM` `-E`" to dump predefined preprocessor definitions</li>
+<li>Add option "`-save-temps`" and compare the preprocessed files <code>*.i</code> or <code>*.ii</code></li>
+</ol>
+<p>See <a href="http://clang.llvm.org/">http://clang.llvm.org/</a> , especially the GCC compatibility section.</p>
+<h2>ABI Compatibility</h2>
+<p>The machine code generated by the ARM toolchain should be compatible with the official Android 'armeabi' ABI (see docs/CPU-ARCH-ABIS.html) by default.</p>
+<p>It is recommended to use the -mthumb compiler flag to force the generation of 16-bit Thumb-1 instructions (the default being 32-bit ARM ones).</p>
+<p>If you want to target the 'armeabi-v7a' ABI, you will need ensure that the following flags are being used: </p>
+<pre class="fragment"> CFLAGS='-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16'
+</pre><p>Note: The first flag enables Thumb-2 instructions, and the second one enables H/W FPU instructions while ensuring that floating-point parameters are passed in core registers, which is critical for ABI compatibility. Do <em>not</em> use these flags separately before NDK r9b!</p>
+<p>If you want to use Neon instructions, you will need to change the -mfpu compiler flag: </p>
+<pre class="fragment"> CFLAGS='-march=armv7-a -mfloat-abi=softfp -mfpu=neon'
+</pre><p>Note that this forces the use of VFPv3-D32, as per the ARM specification.</p>
+<p>Also, make sure the following two flags are provided to linker: </p>
+<pre class="fragment"> LDFLAGS='-march=armv7-a -Wl,--fix-cortex-a8'
+</pre><p>Note: The first flag instructs linker to pick libgcc.a, libgcov.a and crt*.o tailored for armv7-a. The 2nd flag is <em>required</em> to route around a CPU bug in some Cortex-A8 implementations:</p>
+<p>Since NDK r9b, all Android native APIs taking or returning double/float has <b>attribute</b>((pcs("aapcs"))) for ARM. It's possible to compile user code in -mhard-float (which implies -mfloat-abi=hard) and still link with Android native APIs which follow softfp ABI. Please see tests/device/hard-float/jni/Android.mk for details.</p>
+<p>If you want to use Neon intrinsics on x86 they can be translated to the native x86 SSE ones using special C/C++ language header with the same name as standard arm neon intrinsics header "arm_neon.h".</p>
+<p>By default x86 ABI supports SIMD up to SSE3 and the header covers ~83% NEON functions (1551 of total 1872). It is recommended to use the -mssse3 compiler flag which extends SIMD up to SSSE3 and in this case the header will cover ~98% NEON functions (1827 of total 1872): </p>
+<pre class="fragment"> CFLAGS='-mssse3'
+</pre><p>To learn more about it, see docs/CPU-X86.html</p>
+<p>If none of the above makes sense to you, it's probably better not to use the standalone toolchain, and stick to the NDK build system instead, which will handle all the details for you.</p>
+<p>You don't have to use any specific compiler flag when targeting the MIPS ABI.</p>
+<h2>Warnings and Limitations</h2>
+<h3>Windows support</h3>
+<p>The Windows binaries do <em>not</em> depend on Cygwin. The good news is that they are thus faster, the bad news is that they do not understand the Cygwin path specification like <code>/cygdrive/c/foo/bar</code> (instead of <code>C:/foo/bar</code>).</p>
+<p>The NDK build system ensures that all paths passed to the compiler from Cygwin are automatically translated, and deals with other horrors for you. If you have a custom build system, you may need to deal with the problem yourself.</p>
+<p>NOTE: There is no plan to support Cygwin / MSys at the moment, but contributions are welcome. Contact the android-ndk forum for details.</p>
+<h3><code>wchar_t</code> support</h3>
+<p>As documented, the Android platform did not really support wchar_t until Android 2.3. What this means in practical terms is that:</p>
+<ul>
+<li>If you target platform android-9 or higher, the size of wchar_t is 4 bytes, and most wide-char functions are available in the C library (with the exception of multi-byte encoding/decoding functions and wsprintf/wsscanf).</li>
+<li>If you target any prior API level, the size of wchar_t will be 1 byte and none of the wide-char functions will work anyway.</li>
+</ul>
+<p>We recommend any developer to get rid of any dependencies on the wchar_t type and switch to better representations. The support provided in Android is only there to help you migrate existing code.</p>
+<h3>Exceptions, RTTI, and STL</h3>
+<p>The toolchain binaries <em>do</em> support C++ exceptions and RTTI by default. They are enabled by default, so use -fno-exceptions and -fno-rtti if you want to disable them when building sources with them (e.g. to generate smaller machine code).</p>
+<p>NOTE: If you use the GNU libstdc++, you will need to explicitly link with libsupc++ if you use these features. To do this, use -lsupc++ when linking binaries, as in: </p>
+<pre class="fragment"> arm-linux-androideabi-g++ .... -lsupc++
+</pre><p>This is not needed when using the STLport or libc++ library.</p>
+<h3>C++ STL support</h3>
+<p>The standalone toolchain includes a copy of a C++ Standard Template Library implementation, either the GNU libstdc++, STLport, or libc++, determined by your use of the &ndash;stl=&lt;name&gt; option described previously. To use this STL implementation, you however need to link your project with the proper library:</p>
+<ul>
+<li><p class="startli">Use -lstdc++ to link against the <em>static</em> library version of any implementation. This ensures that all required C++ STL code is included into your final binary. This is ideal if you are only generating a <b>single</b> shared library or executable.</p>
+<p class="startli">This is the recommended way to do it.</p>
+</li>
+<li><p class="startli">Use -lgnustl_shared to link against the <em>shared</em> library version of GNU libstdc++. If you use this option, you need to ensure that <code>libgnustl_shared.so</code> is also copied to your device for your code to load properly. The file is at: </p>
+<pre class="fragment">$TOOLCHAIN/arm-linux-androideabi/lib/ for ARM toolchains.
+$TOOLCHAIN/i686-linux-android/lib/ for x86 ones.
+$TOOLCHAIN/mipsel-linux-android/lib/ for MIPS toolchains.
+</pre><p class="startli">IMPORTANT: The GNU libstdc++ is licensed under the <b>GPLv3</b> with a linking exception. See the following URL for details:</p>
+</li>
+</ul>
+<blockquote class="doxtable">
+<p><a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01s02.html">http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01s02.html</a></p>
+<p></p>
+</blockquote>
+<blockquote class="doxtable">
+<p>If you cannot comply with its requirements, i.e. you cannot redistribute</p>
+<p></p>
+</blockquote>
+<p>the shared library, do not use it in your project.</p>
+<ul>
+<li>Use -lstlport_shared to link against the <em>shared</em> library version of STLport. If you use this option, you need to ensure that <code>libstlport_shared.so</code> is also copied to your device for your code to load properly. They are found at the same locations than those for <code>gnustl_shared</code>.</li>
+</ul>
+<p><b>VERY</b> <b>IMPORTANT</b> <b>NOTE</b>: If your project contains <em>multiple</em> shared libraries or executables, you <b>must</b> link against a shared library STL implementation. Otherwise, some global variables won't be defined uniquely, which can result in all kind of weird behaviour at runtime, like crashes, exceptions not being caught properly, and more surprises.</p>
+<p>The reason the shared version of the libraries is not simply called <code>libstdc++.so</code> is not called libstdc++.so is because this would conflict at runtime with the system's own minimal C++ runtime, which is <code>/system/lib/libstdc++.so</code>. This enforces a new name for the GNU ELF library. This is not a problem for the static library. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__building_building.html b/docs/Programmers_Guide/html/md_3__key__topics__building_building.html
new file mode 100644
index 000000000..2f9957b66
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__building_building.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Building</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__building_building.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Building </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This section explains, in detail, how to use the NDK to build your project. It comprises the following topics:</p>
+<ul>
+<li><a href="./md_3__key__topics__building__chapter_1-section_8_ndk-build.html">ndk-build</a><ul>
+<li>How to use the shell script that invokes the tools to build your shared libraries.</li>
+</ul>
+</li>
+<li><a href="./md_3__key__topics__building__chapter_1-section_8__android_8mk.html">Android.mk</a><ul>
+<li>Syntax for the file that describes your build sources to the build system.</li>
+</ul>
+</li>
+<li><a href="./md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html">Application.mk</a><ul>
+<li>Syntax for the file that describes the native modules that your application requires.</li>
+</ul>
+</li>
+<li><a href="./md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html">Standalone Toolchain</a><ul>
+<li>How to integrate the NDK into your existing build system. </li>
+</ul>
+</li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html
new file mode 100644
index 000000000..bf97e6488
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Neon</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Neon </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h2>Introduction</h2>
+<p>Android NDK r3 added support for the new 'armeabi-v7a' ARM-based ABI that allows native code to use two useful instruction set extensions:</p>
+<ul>
+<li>Thumb-2, which provides performance comparable to 32-bit ARM instructions with similar compactness to Thumb-1</li>
+<li><p class="startli">VFPv3, which provides hardware FPU registers and computations, to boost floating point performance significantly.</p>
+<p class="startli">More specifically, by default 'armeabi-v7a' only supports VFPv3-D16 which only uses/requires 16 hardware FPU 64-bit registers.</p>
+</li>
+</ul>
+<p>More information about this can be read in docs/CPU-ARCH-ABIS.html</p>
+<p>The ARMv7 Architecture Reference Manual also defines another optional instruction set extension known as "ARM Advanced SIMD", nick-named "NEON". It provides:</p>
+<ul>
+<li>A set of interesting scalar/vector instructions and registers (the latter are mapped to the same chip area as the FPU ones), comparable to MMX/SSE/3DNow! in the x86 world.</li>
+<li>VFPv3-D32 as a requirement (i.e. 32 hardware FPU 64-bit registers, instead of the minimum of 16).</li>
+</ul>
+<p>Not all ARMv7-based Android devices will support NEON, but those that do may benefit in significant ways from the scalar/vector instructions.</p>
+<p>The NDK supports the compilation of modules or even specific source files with support for NEON. What this means is that a specific compiler flag will be used to enable the use of GCC ARM Neon intrinsics and VFPv3-D32 at the same time. The intrinsics are described here:</p>
+<p><a href="http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html">http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html</a></p>
+<h2><code>Using LOCAL_ARM_NEON</code></h2>
+<p>Define LOCAL_ARM_NEON to 'true' in your module definition, and the NDK will build all its source files with NEON support. This can be useful if you want to build a static or shared library that specifically contains NEON code paths.</p>
+<h2>Using the <code>.neon</code> suffix:</h2>
+<p>When listing sources files in your LOCAL_SRC_FILES variable, you now have the option of using the .neon suffix to indicate that you want to corresponding source(s) to be built with Neon support. For example: </p>
+<pre class="fragment"> LOCAL_SRC_FILES := foo.c.neon bar.c
+</pre><p>Will only build 'foo.c' with NEON support.</p>
+<p>Note that the .neon suffix can be used with the .arm suffix too (used to specify the 32-bit ARM instruction set for non-NEON instructions), but must appear after it.</p>
+<p>In other words, 'foo.c.arm.neon' works, but 'foo.c.neon.arm' does NOT.</p>
+<h2>Build Requirements</h2>
+<p>Neon support only works when targeting the 'armeabi-v7a' or 'x86' ABI, otherwise the NDK build scripts will complain and abort. Neon is partially supported on x86 via translation header (To learn more about it, see docs/CPU-X86.html). It is important to use checks like the following in your Android.mk: </p>
+<pre class="fragment"> # define a static library containing our NEON code
+ ifeq ($(TARGET_ARCH_ABI),$(filter $(TARGET_ARCH_ABI), armeabi-v7a x86))
+ include $(CLEAR_VARS)
+ LOCAL_MODULE := mylib-neon
+ LOCAL_SRC_FILES := mylib-neon.c
+ LOCAL_ARM_NEON := true
+ include $(BUILD_STATIC_LIBRARY)
+ endif # TARGET_ARCH_ABI == armeabi-v7a || x86
+</pre><h2>Runtime Detection</h2>
+<p>As said previously, NOT ALL ARMv7-BASED ANDROID DEVICES WILL SUPPORT NEON ! It is thus crucial to perform runtime detection to know if the NEON-capable machine code can be run on the target device.</p>
+<p>To do that, use the cpufeatures library that comes with this NDK. To learn more about it, see docs/CPU-FEATURES.html.</p>
+<p>You should explicitly check that android_getCpuFamily() returns ANDROID_CPU_FAMILY_ARM, and that android_getCpuFeatures() returns a value that has the ANDROID_CPU_ARM_FEATURE_NEON flag set, as in: </p>
+<pre class="fragment"> #include &lt;cpu-features.h&gt;
+
+ ...
+ ...
+
+ if (android_getCpuFamily() == ANDROID_CPU_FAMILY_ARM &amp;&amp;
+ (android_getCpuFeatures() &amp; ANDROID_CPU_ARM_FEATURE_NEON) != 0)
+ {
+ // use NEON-optimized routines
+ ...
+ }
+ else
+ {
+ // use non-NEON fallback routines instead
+ ...
+ }
+
+ ...
+</pre><h2>Sample code</h2>
+<p>Look at the source code for the "hello-neon" sample in this NDK for an example on how to use the 'cpufeatures' library and Neon intrinsics at the same time.</p>
+<p>This implements a tiny benchmark for a FIR filter loop using a C version, and a NEON-optimized one for devices that support it. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html
new file mode 100644
index 000000000..e996477b9
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: CPU Features</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">CPU Features </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This NDK provides a small library named "`cpufeatures`" that can be used at runtime to detect the target device's CPU family and the optional features it supports.</p>
+<h2>Usage</h2>
+<p>The library is available as an import module. To use it, you must:</p>
+<ul>
+<li>List '<code>cpufeatures</code>' in your list of static library dependencies, as in: <pre class="fragment">LOCAL_STATIC_LIBRARIES := cpufeatures
+</pre></li>
+<li>At the end of your Android.mk, import the '<code>android/cpufeatures</code>' module, as in: <pre class="fragment">$(call import-module,android/cpufeatures)
+</pre></li>
+<li>In your source code, include the header named <code>&lt;cpu-features.h&gt;</code></li>
+</ul>
+<p>Here is a simple example: </p>
+<pre class="fragment"> &lt;project-path&gt;/jni/Android.mk:
+ LOCAL_PATH := $(call my-dir)
+
+ include $(CLEAR_VARS)
+ LOCAL_MODULE := &lt;your-module-name&gt;
+ LOCAL_SRC_FILES := &lt;your-source-files&gt;
+ LOCAL_STATIC_LIBRARIES := cpufeatures
+ include $(BUILD_SHARED_LIBRARY)
+
+ $(call import-module,android/cpufeatures)
+</pre><h2>Features</h2>
+<p>Two functions are provided for now: </p>
+<pre class="fragment"> AndroidCpuFamily android_getCpuFamily();
+</pre><p>Returns a value matching the CPU family/architecture supported by the current process as an enum. Currently, the following families are defined:</p>
+<ul>
+<li><code>ANDROID_CPU_FAMILY_ARM</code></li>
+<li><code>ANDROID_CPU_FAMILY_X86</code></li>
+<li><code>ANDROID_CPU_FAMILY_MIPS</code></li>
+<li><code>ANDROID_CPU_FAMILY_ARM64</code></li>
+<li><code>ANDROID_CPU_FAMILY_X86_64</code></li>
+<li><code>ANDROID_CPU_FAMILY_MIPS64</code></li>
+</ul>
+<p>Note that when running a 32-bit executable on a 64-bit system, this function will return the 32-bit family value only.</p>
+<p>Secondly:</p>
+<pre class="fragment"> uint64_t android_getCpuFeatures();
+</pre><p>Returns the set of optional features supported by the device's CPU. The result is a set of bit-flags, each corresponding to one CPU Family-specific optional feature.</p>
+<p>Currently, only the following flags are defined, for the 32-bit ARM CPU Family:</p>
+<ul>
+<li><code>ANDROID_CPU_ARM_FEATURE_VFPv2</code><br/>
+ Indicates that the device's CPU supports VFPv2 instruction set. Most ARMv6 CPUs support these.</li>
+<li><code>ANDROID_CPU_ARM_FEATURE_ARMv7</code><br/>
+ Indicates that the device's CPU supports the ARMv7-A instruction set as supported by the "armeabi-v7a" abi (see CPU-ARCH-ABIS.html). This corresponds to Thumb-2 and VFPv3-D16 instructions.</li>
+<li><p class="startli"><code>ANDROID_CPU_ARM_FEATURE_VFPv3</code><br/>
+ Indicates that the device's CPU supports the VFPv3 hardware FPU instruction set extension. Due to the definition of 'armeabi-v7a', this will always be the case if ANDROID_CPU_ARM_FEATURE_ARMv7 is returned.</p>
+<p class="startli">Note that this corresponds to the minimum profile VFPv3-D16 that <em>only</em> provides 16 hardware double-precision FP registers.</p>
+</li>
+<li><code>ANDROID_CPU_ARM_FEATURE_VFP_D32</code><br/>
+ Indicates that the device's CPU supports 32 hardware double-precision FP registers instead of 16. Note that there are still only 32 single- precision registers mapped to the same register banks.</li>
+<li><code>ANDROID_CPU_ARM_FEATURE_NEON</code><br/>
+ Indicates that the device's CPU supports the ARM Advanced SIMD (a.k.a. NEON) vector instruction set extension. Note that ARM mandates that such CPUs also implement VFPv3-D32, which provides 32 hardware FP registers (shared with the NEON unit).</li>
+<li><code>ANDROID_CPU_ARM_FEATURE_VFP_FP16</code><br/>
+ Indicates that the device's CPU supports instructions to perform floating-point operations on 16-bit registers. This is part of the VFPv4 specification.</li>
+<li><code>ANDROID_CPU_ARM_FEATURE_VFP_FMA</code><br/>
+ Indicates that the device's CPU supports fused multiply-accumulate VFP instructions extension. Also part of the VFPv4 specification.</li>
+<li><code>ANDROID_CPU_ARM_FEATURE_NEON_FMA</code><br/>
+ Indicates that the device's CPU supports fused multiply-accumulate NEON instructions extension. Also part of the VFPv4 specification.</li>
+<li><code>ANDROID_CPU_ARM_FEATURE_IDIV_ARM</code><br/>
+ Indicates that the device's CPU supports Integer division in ARM mode. Only available on recent CPUs (e.g. Cortex-A15).</li>
+<li><code>ANDROID_CPU_ARM_FEATURE_IDIV_THUMB2</code><br/>
+ Indicates that the device's CPU supports Integer division in Thumb-2 mode. Only available on recent CPUs (e.g. Cortex-A15).</li>
+<li><code>ANDROID_CPU_ARM_FEATURE_iWMMXt</code><br/>
+ Indicates that the device's CPU supports extension that adds MMX registers and instructions. This is only available on a few XScale- based CPU.</li>
+<li><code>ANDROID_CPU_ARM_FEATURE_LDREX_STREX</code><br/>
+ Indicates that the device's CPU supports LDREX and STREX instructions available since ARMv6. Together they provide atomic update on memory with the help of exclusive monitor.</li>
+</ul>
+<p>And the following flags for the 32-bit x86 CPU Family:</p>
+<ul>
+<li><code>ANDROID_CPU_X86_FEATURE_SSSE3</code><br/>
+ Indicates that the device's CPU supports the SSSE3 instruction extension set. Note that this is unlike SSE3 which is required by the x86 NDK ABI.</li>
+<li><code>ANDROID_CPU_X86_FEATURE_POPCNT</code><br/>
+ Indicates that the device's CPU supports the POPCNT instruction.</li>
+<li><code>ANDROID_CPU_X86_FEATURE_MOVBE</code><br/>
+ Indicates that the device's CPU supports the MOVBE instruction. This one is specific to some Intel IA-32 CPUs, like the Atom.</li>
+</ul>
+<p>Other CPU families do not have extensions listed at the moment, which means that android_getCpuFeatures() will return 0 for them.</p>
+<p>The following function is also defined to return the max number of CPU cores on the target device: </p>
+<pre class="fragment"> int android_getCpuCount(void);
+</pre><h2>Important Note</h2>
+<p>The cpufeatures library will be updated to support more CPU families and optional features in the future. It is designed to work as-is on all official Android platform versions.</p>
+<h2>Change History</h2>
+<p>Please see the comments in <code>$NDK/sources/android/cpufeatures/cpu-features.c</code> for the complete change history for this library. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_m_i_p_s.html b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_m_i_p_s.html
new file mode 100644
index 000000000..70547843a
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_m_i_p_s.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Mips</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__c_p_u__support__c_p_u-_m_i_p_s.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Mips </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h2>Introduction</h2>
+<p>Android NDK r8 added support for the 'mips' ABI, that allows native code to run on Android-based devices running on CPUs supporting the MIPS32 instruction set.</p>
+<p>The Android 'mips' ABI itself is fully specified in d/CPU-ARCH-ABIS.</p>
+<h2>Overview</h2>
+<p>Generating mips machine code is simple: just add 'mips' to your APP_ABI definition in your Application.mk file, for example: </p>
+<pre class="fragment"> APP_ABI := armeabi armeabi-v7a mips
+</pre><p>Alternatively, since NDK r7, you can use: </p>
+<pre class="fragment"> APP_ABI := all
+</pre><p>will generate machine code for all supported ABIs with this NDK. Doing so will ensure that your application package contains libraries for all target ABIs. Note that this has an impact on package size, since each ABI will correspond to its own set of native libraries built from the same sources.</p>
+<p>As you would expect, generated libraries will go into $PROJECT/libs/mips/, and will be embedded into your .apk under /lib/mips/.</p>
+<p>And just like other ABIs, the Android package manager will extract these libraries on a <em>compatible</em> mips-based device automatically at install time, to put them under <code>&lt;dataPath&gt;/lib</code>, where <code>&lt;dataPath&gt;</code> is the application's private data directory.</p>
+<p>Similarly, the Android Market server is capable of filtering applications based on the native libraries they embed and your device's target CPU.</p>
+<p>Debugging with ndk-gdb should work exactly as described under docs/NDK-GDB.html.</p>
+<h2>Standalone-toolchain</h2>
+<p>It is possible to use the mips toolchain with NDK r8 in stand-alone mode. See docs/STANDALONE-TOOLCHAIN.html for more details. Briefly speaking, it is now possible to run: </p>
+<pre class="fragment"> $NDK/build/tools/make-standalone-toolchain.sh --arch=mips --install-dir=&lt;path&gt;
+</pre><p>The toolchain binaries have the mipsel-linux-android- prefix.</p>
+<h2>Compatibility</h2>
+<p>The minimal native API level provided by official Android mips platform builds is 9, which corresponds to all the native APIs provided by Android 2.3, i.e. Gingerbread (note also that no new native APIs were introduced by Honeycomb).</p>
+<p>You won't have to change anything to your project files if you target an older API level: the NDK build script will automatically select the right set of native platform headers/libraries for you. For mips, this still corresponds to API level 9 and higher. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_x86-64.html b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_x86-64.html
new file mode 100644
index 000000000..2dc68f5bf
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_x86-64.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: x86-64</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__c_p_u__support__c_p_u-_x86-64.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">x86-64 </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h2>Introduction</h2>
+<p>Android NDK r10 added support for the '<code>x86-64</code>' ABI, that allows native code to run on Android-based devices running on CPUs supporting the x86-64 instruction set.</p>
+<p>The Android x86-64 ABI itself is fully specified in docs/CPU-ARCH-ABIS.html.</p>
+<h2>Overview</h2>
+<p>Generating machine code is simple: just add 'x86-64' to your APP_ABI definition in your Application.mk file, for example: </p>
+<pre class="fragment"> APP_ABI := armeabi armeabi-v7a x86 x86-64
+</pre><p>Alternatively, you can use: </p>
+<pre class="fragment"> APP_ABI := all
+</pre><p>will generate machine code for all supported ABIs with this NDK. Doing so will ensure that your application package contains libraries for all target ABIs. Note that this has an impact on package size, since each ABI will correspond to its own set of native libraries built from the same sources.</p>
+<p>The default ABI is still '<code>armeabi</code>', if unspecified in your project.</p>
+<p>As you would expect, generated libraries will go into <code>$PROJECT/libs/x86-64/</code>, and will be embedded into your .apk under <code>/lib/x86-64/</code>.</p>
+<p>And just like other ABIs, the Android package manager will extract these libraries on a <em>compatible</em> x86-64 based device automatically at install time, to put them under &lt;dataPath&gt;/lib, where &lt;dataPath&gt; is the application's private data directory.</p>
+<p>Similarly, the Google Play server is capable of filtering applications based on the native libraries they embed and your device's target CPU.</p>
+<p>Debugging with ndk-gdb should work exactly as described under docs/NDK-GDB.html.</p>
+<h2>Standalone-toolchain</h2>
+<p>It is possible to use the x86-64 toolchain with NDK in stand-alone mode. See docs/STANDALONE-TOOLCHAIN.html for more details. Briefly speaking, it is now possible to run: </p>
+<pre class="fragment"> $NDK/build/tools/make-standalone-toolchain.sh --arch=x86_64 --install-dir=&lt;path&gt;
+</pre><p>The toolchain binaries have the <code>x86_64-linux-android- prefix</code>.</p>
+<h2>Compatibility</h2>
+<p>The minimal native API level provided by official Android x86-64 platform builds is the Android L-Preview release, which corresponds to all the native APIs provided by Android API Level L.</p>
+<p>You won't have to change anything to your project files if you target an older API level: the NDK build script will automatically select the right set of native platform headers/libraries for you. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_x86.html b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_x86.html
new file mode 100644
index 000000000..ea27fb695
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__c_p_u-_x86.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: x86</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__c_p_u__support__c_p_u-_x86.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">x86 </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h2>Introduction</h2>
+<p>Android NDK r6 added support for the '<code>x86</code>' ABI, that allows native code to run on Android-based devices running on CPUs supporting the IA-32 instruction set.</p>
+<p>The Android x86 ABI itself is fully specified in docs/CPU-ARCH-ABIS.html.</p>
+<h2>Overview</h2>
+<p>Generating x86 machine code is simple: just add 'x86' to your APP_ABI definition in your Application.mk file, for example: </p>
+<pre class="fragment"> APP_ABI := armeabi armeabi-v7a x86
+</pre><p>Alternatively, since NDK r7, you can use: </p>
+<pre class="fragment"> APP_ABI := all
+</pre><p>will generate machine code for all supported ABIs with this NDK. Doing so will ensure that your application package contains libraries for all target ABIs. Note that this has an impact on package size, since each ABI will correspond to its own set of native libraries built from the same sources.</p>
+<p>The default ABI is still '<code>armeabi</code>', if unspecified in your project.</p>
+<p>As you would expect, generated libraries will go into <code>$PROJECT/libs/x86/</code>, and will be embedded into your .apk under <code>/lib/x86/</code>.</p>
+<p>And just like other ABIs, the Android package manager will extract these libraries on a <em>compatible</em> x86-based device automatically at install time, to put them under &lt;dataPath&gt;/lib, where &lt;dataPath&gt; is the application's private data directory.</p>
+<p>Similarly, the Google Play server is capable of filtering applications based on the native libraries they embed and your device's target CPU.</p>
+<p>Debugging with ndk-gdb should work exactly as described under docs/NDK-GDB.html.</p>
+<h2>ARM NEON intrinsics support</h2>
+<p>The solution is shaped as C/C++ language header with the same name as standard arm neon intrinsics header "arm_neon.h" which is also available in all NDK x86 toolchains. It translates neon intrinsics to native x86 SSE ones.</p>
+<p>By default SSE up to SSE3 is used for porting ARM NEON to Intel SSE.</p>
+<p>Current solution covers by default ~41% NEON functions (889 of total 1884) and 47% when -mssse3 is enabled. It is highly recommended to use the -mssse3 compiler flag for more coverage and performance.</p>
+<p>If currently provided coverage is not enough to port application please look into next version preview (up to 98% NEON instrinsics covered) <a href="http://software.intel.com/en-us/blogs/2012/12/12/from-arm-neon-to-intel-mmxsse-automatic-porting-solution-tips-and-tricks">here</a></p>
+<p>The solution</p>
+<ul>
+<li>Redefines ARM NEON 128 bit vectors as the corresponding x86 SIMD data.</li>
+<li>Redefines some functions from ARM NEON to Intel SSE if 1:1 correspondence exists.</li>
+<li>Implements some ARM NEON functions using Intel SIMD if the performance effective implementation is possible.</li>
+<li>Implements some of the remaining NEON functions using the serial solution and issuing the corresponding "low performance" compiler warning.</li>
+</ul>
+<h3>Performance:</h3>
+<p>For the major number of cases it is expected to obtain the similar to ARM NEON native perfomance gain for vectorized vs. serial code.</p>
+<h3>Porting considerations and best known methods are:</h3>
+<ul>
+<li>Use 16-byte data alignment for faster load and store</li>
+<li>Avoid NEON functions working with constants. It produces performance penalty for constants load. If constants usage is necessary try to move constants initialization out of hotspot loops and if applicable replace it with logical and compare operations.</li>
+<li>Try to avoid functions marked as "serialy implemented" because they need to store data from registers to memory, process them serialy and load them again. Probably you could change the data type or algorithm used to make the whole port vectorized not a serial one.</li>
+</ul>
+<p>To learn more about it, see <a href="http://software.intel.com/en-us/blogs/2012/12/12/from-arm-neon-to-intel-mmxsse-automatic-porting-solution-tips-and-tricks">here</a>.</p>
+<h3>Sample code:</h3>
+<p>In your project add 'x86' to APP_ABI definition and make sure "arm_neon.h" header is included. Your code will be ported to x86 without any other changes necessary.</p>
+<h2>Standalone-toolchain</h2>
+<p>It is possible to use the x86 toolchain with NDK r6 in stand-alone mode. See docs/STANDALONE-TOOLCHAIN.html for more details. Briefly speaking, it is now possible to run: </p>
+<pre class="fragment"> $NDK/build/tools/make-standalone-toolchain.sh --arch=x86 --install-dir=&lt;path&gt;
+</pre><p>The toolchain binaries have the <code>i686-linux-android- prefix</code>.</p>
+<h2>Compatibility</h2>
+<p>The minimal native API level provided by official Android x86 platform builds is 9, which corresponds to all the native APIs provided by Android 2.3, i.e. Gingerbread (note also that no new native APIs were introduced by Honeycomb).</p>
+<p>You won't have to change anything to your project files if you target an older API level: the NDK build script will automatically select the right set of native platform headers/libraries for you. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html
new file mode 100644
index 000000000..9858ca995
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html
@@ -0,0 +1,477 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: ABI Management</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">ABI Management </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p><a href="#intro">Introduction</a><br/>
+ <a href="#sa">Supported ABIs</a><br/>
+ <a href="#gc">Generating code for a Specific ABI</a><br/>
+ <a href="#am">ABI management on the Android Platform</a><br/>
+</p>
+<p><a class="anchor" id="intro"></a> </p>
+<h2>Introduction</h2>
+<p>Every piece of native code generated with the Android NDK matches a given
+application binary interface ("ABI") that defines exactly how your
+application's machine code is expected to interact with the system at
+runtime.</p>
+<p>A typical ABI describes things in <em>excruciating</em> detail, and
+typically includes the following information:</p>
+<ul>
+<li>The CPU instruction set that the machine code should use.</li>
+<li>The endianness of memory stores and loads at runtime.</li>
+<li>The format of executable binaries (shared libraries, programs, etc.), and
+the types of content they support.</li>
+<li>Various conventions used to pass data between your code and the system.
+These include alignment constraints, as well as how registers and/or the stack
+are used when functions are called.</li>
+<li>Alignment and size constraints for enum types, structure fields, and
+arrays.</li>
+<li>The list of function symbols available to your machine code at runtime,
+generally from a very specifically selected set of libraries.</li>
+</ul>
+<p>This document lists the exact ABIs supported by the Android NDK and the
+official Android platform releases.</p>
+<p><a class="anchor" id="sa"></a> </p>
+<h2>Supported ABIs</h2>
+<h3>Overview</h3>
+<p>Table 1 provides an at-a-glance overview of each ABI's supported instruction
+sets and capabilities.</p>
+<table class="doxtable">
+<tr>
+<th></th><th>Instruction Set(s) </th><th>Notes </th></tr>
+<tr>
+<td><a href="#armeabi">armeabi</a> </td><td>ARMV5TE and later<br/>
+Thumb-1 </td><td><b>No</b> hard float.</td></tr>
+<tr>
+<td><a href="#v7a">armeabi-v7a</a> </td><td>armeabi<br/>
+Thumb-2<br/>
+VFPv3-D16<br/>
+other optional </td><td>Hard float when specified as
+<code>armeabi-v7a-hard</code>.<br/>
+Incompatible with ARMv5, v6 devices.</td></tr>
+<tr>
+<td><a href="#arm64-v8a">arm64-v8a</a> </td><td>AArch-64</td><td></td></tr>
+<tr>
+<td><a href="#x86">x86</a> </td><td>x86 (IA-32)<br/>
+MMX<br/>
+SSE/2/3<br>
+SSSE3</td><td>No support for MOVBE or SSE4.</td></tr>
+<tr>
+<td><a href="#86-64">x86-64</a> </td><td>x86-64<br/>
+MMX<br/>
+SSE/2/3<br>
+SSSE3<br>
+SSE4.1, 4.2<br>
+POPCNT</td><td></td></tr>
+<tr>
+<td><a href="#mips">mips</a></td><td>MIPS32r1 and later</td><td>Hard
+float.</td></tr>
+<tr>
+<td><a href="#mips64">mips 64</a></td><td>MIPS64r6</td><td></td></tr>
+</table>
+<p><b>Table 1.</b> Respective ABI capabilities</p>
+<p>More detailed information about each ABI appears below.</p>
+<p><a class="anchor" id="armeabi"></a> </p>
+<h3>armeabi</h3>
+<p>This is the name of an ABI for ARM-based CPUs that support <em>at least</em>
+the ARMv5TE instruction set. Please refer to the following documentation for
+more details:</p>
+<ul>
+<li><a href="https://www.scss.tcd.ie/~waldroj/3d1/arm_arm.pdf">ARM Architecture
+Reference Manual</a> ("ARMARM")</li>
+<li><a
+href="http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042e/IHI0042E_aapcs.p
+df">Procedure Call Standard for the ARM Architecture</a> ("AAPCS")</li>
+<li><a
+href="http://infocenter.arm.com/help/topic/com.arm.doc.dui0101a/DUI0101A_Elf.pdf
+">ARM ELF File Format</a> ("ARMELF")</li>
+<li><a
+href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.swdev.a
+bi/index.html">Application Binary Interface (ABI) for the ARM Architecture</a>
+("BSABI")</li>
+<li><a
+href="http://infocenter.arm.com/help/topic/com.arm.doc.ihi0037c/IHI0037C_bpabi.p
+df">Base Platform ABI for the ARM Architecture</a> ("BPABI")</li>
+<li><a
+href="http://infocenter.arm.com/help/topic/com.arm.doc.ihi0039c/IHI0039C_clibabi
+.pdf">C Library ABI for the ARM Architecture</a> ("CLIABI")</li>
+<li><a
+href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0041d/index
+.html">C++ ABI for the ARM Architecture</a> ("CPPABI")</li>
+<li><a
+href="http://infocenter.arm.com/help/topic/com.arm.doc.ihi0043d/IHI0043D_rtabi.p
+df">Run-time ABI for the ARM Architecture</a> ("RTABI")</li>
+<li><a href="http://www.sco.com/developers/gabi/2001-04-24/contents.html">ELF
+System V Application Binary Interface</a> (DRAFT 2001)</li>
+<li><a href="http://mentorembedded.github.com/cxx-abi/abi.html">Generic C++
+ABI</a></li>
+</ul>
+<p>Note that the AAPCS standard defines EABI as a <em>family</em> of similar
+but distinct ABIs. Also, Android follows the little-endian ARM GNU/Linux ABI as
+documented in the <a
+href="http://sourcery.mentor.com/sgpp/lite/arm/portal/kbattach142/arm_gnu_linux_
+abi.pdf">ARM GNU/Linux Application Binary Interface Supplement</a></p>
+<p>This ABI does <em>not</em> support hardware-assisted floating point
+computations. Instead, all floating-point operations use software helper
+functions from the compiler's <code>libgcc.a</code> static library.</p>
+<p>The armeabi ABI supports ARM’s <a
+href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0210c/CACBC
+AAE.html">Thumb (a.k.a. Thumb-1) instruction set</a>. The NDK generates Thumb
+code by default unless you specify different behavior using the
+<code>LOCAL_ARM_MODE</code> variable in your <code>Android.mk</code> file (see
+the <a
+href="./md_3__key__topics__building__chapter_1-section_8__android_8mk.html">Andr
+oid.mk section</a> for details).</p>
+<p><a class="anchor" id="v7a"></a> </p>
+<h3>armeabi-v7a (armeabi-v7a-hard)</h3>
+<p>armeabi-v7a <em>extends</em> armeabi to include a few CPU instruction set
+extensions as described in the following document:</p>
+<ul>
+<li><a
+href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406c/index
+.html">ARM Architecture v7-a Reference Manual</a></li>
+</ul>
+<p>The instruction extensions supported by this Android-specific ABI are:</p>
+<ul>
+<li>The Thumb-2 instruction set extension.</li>
+<li>The VFP hardware FPU instructions. More specifically, VFPv3-D16, which
+corresponds to 16 dedicated 64-bit floating point registers provided by the
+CPU.</li>
+</ul>
+<p>Other extensions described by the v7-a ARM, like <a
+href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388f/Beijf
+cja.html">Advanced SIMD</a> (a.k.a. NEON), VFPv3-D32, or ThumbEE are optional
+to this ABI. This means that developers should check <em>at runtime</em>
+whether the extensions are available. If not, they must use alternative code
+paths. This check is similar to the one typically performed to check/use <a
+href="http://en.wikipedia.org/wiki/MMX_(instruction_set">MMX</a>), <a
+href="http://en.wikipedia.org/wiki/SSE2">SSE2</a> and other specialized
+instruction sets on x86 CPUs.</p>
+<p>For information about how to perform these runtime checks, refer to <a
+href="./md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html">CPU
+Features</a>. Also, for information about the NDK's support for building
+NEON-capable machine code, see <a
+href="md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html">CPU-ARM-NEO
+N</a>.</p>
+<p>Note that armeabi-v7a uses the <code>-mfloat-abi=softfp</code> switch to
+enforce the rule that all double values must be passed during function calls in
+"core" register pairs, instead of dedicated FP ones. All internal computations
+can be performed, however, with the FP registers, which speeds them up
+greatly.</p>
+<p>Although this constraint results in a modest performance hit, it ensures
+compatibility with all existing armeabi binaries. If you need the additional
+performance, you can specify your ABI as armeabi-v7a-hard instead. Doing so
+allows you to use hard floats, while still linking with Android native APIs
+that use <code>softfp</code>. For more information, look inside the
+<code>Android.mk</code> file in <code>/tests/device/hard-float/jni/</code>.</p>
+<p><b>NOTE:</b> The armeabi-v7a machine code does <em>not</em> run on ARMv5 or
+ARMv6 based devices.</p>
+<p><b>NOTE:</b> You cannot specify <code>APP_ABI</code> as both armeabi-v7a and
+armeabi-v7a-hard. In either case, the build system places the shared libraries
+in the <code>armeabi-v7a/</code> directory.</p>
+<p><a class="anchor" id="hard"></a> </p>
+<h3>armeabi-v7a-hard</h3>
+<p>This variant of the armeabi-v7a ABI is unique to the NDK. The NDK build
+system adds the following flags in addition to those that it uses for the
+armeabi-v7a ABI. </p>
+<pre class="fragment">TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1
+TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard
+</pre><p>All code is compiled with hard-float and linked with libm_hard.a. This
+is the same math library as libm.a, except that it follows hard-float ABI
+conventions. The generated shared libraries are stored in
+<code>lib/armeabi-v7a/</code>.</p>
+<p><a class="anchor" id="arm64-v8a"></a> </p>
+<h3>arm64-v8a</h3>
+<p>This ABI is for ARMv8-based CPUs that support AArch64.</p>
+<p>For more information, see the <a
+href="http://www.arm.com/files/downloads/ARMv8_Architecture.pdf">ARMv8
+Technology Preview</a>, and contact ARM for further details.</p>
+<p><a class="anchor" id="x86"></a> </p>
+<h3>x86</h3>
+<p>This is the name of an ABI for CPUs supporting the instruction set commonly
+referred to as "x86" or "IA-32". Characteristics of this ABI include:</p>
+<ul>
+<li>instructions normally generated by GCC with the following compiler
+flags:</li>
+</ul>
+<pre class="fragment">-march=i686 -mtune=intel -mstackrealign -mssse3
+-mfpmath=sse -m32
+</pre><p>These flags target the the Pentium Pro instruction set, along with the
+the MMX, <a
+href="http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions">SSE</a>, SSE2, <a
+href="http://en.wikipedia.org/wiki/SSE3">SSE3</a>, and <a
+href="http://en.wikipedia.org/wiki/SSSE3">SSSE3</a> instruction set extensions.
+The generated code is a balanced optimization across the top Intel 32-bit
+CPUs.</p>
+<p><b>NOTE:</b> The compiler flags shown above do not represent a comprehensive
+list. In particular, they do not include compiler optimization options used by
+default and/or recommended for x86 performance improvement. For performance
+optimization hints on x86 GCC, refer to Intel's article titled <a
+href="http://software.intel.com/blogs/2012/09/26/gcc-x86-performance-hints">GCC
+x86 Performance</a>. Also, to investigate what other flags may be useful,
+especially <code>-f*</code> and <code>-m</code>, see <a
+href="https://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html#i386-and-x
+86-64-Options">GCC online documentation: Intel 386 and AMD x86-64
+Options</a>.</p>
+<ul>
+<li>Use of the standard Linux x86 32-bit calling convention, as opposed to the
+SVR4 one. (For more information, see section 6, "Register Usage" of <a
+href="http://www.agner.org/optimize/calling_conventions.pdf">Calling
+conventions for different C++ compilers and operating systems</a>.)</li>
+</ul>
+<p>The ABI does <em>not</em> include any other optional IA-32 instruction set
+extensions, including, but not limited to:</p>
+<ul>
+<li>The MOVBE instruction.</li>
+<li>Any variant of SSE4.</li>
+</ul>
+<p>You can still use these, as long as you use runtime feature-probing to
+enable them, and provide fallbacks for devices that do not support them.</p>
+<p>Please refer to the following documents for more details:</p>
+<ul>
+<li><a
+href="https://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html#i386-and-x
+86-64-Options">GCC online documentation: Intel 386 and AMD x86-64
+Options</a></li>
+<li><a href="http://www.agner.org/optimize/calling_conventions.pdf">Calling
+conventions for different C++ compilers and operating systems</a></li>
+<li><a
+href="http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-
+32-architectures-software-developer-instruction-set-reference-manual-325383.pdf"
+>Intel IA-32 Intel Architecture Software Developer's Manual, Volume 2:
+Instruction Set Reference</a></li>
+<li><a
+href="http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-
+32-architectures-software-developer-system-programming-manual-325384.pdf">Intel
+IA-32 Intel Architecture Software Developer's Manual, Volume 3: System
+Programming Guide</a></li>
+<li>Amendment to System V Application Binary Interface: Intel386 Processor
+Architecture Supplement</li>
+</ul>
+<p><a class="anchor" id="86-64"></a> </p>
+<h3>x86-64</h3>
+<p>This ABI is for CPUs supporting the instruction set commonly referred to as
+"x86-64." It supports instructions normally generated by GCC with the following
+compiler flags: </p>
+<pre class="fragment">-march=x86-64 -msse4.2 -mpopcnt -m64 -mtune=intel
+</pre><p>These flags target the x86-64 instruction set, according to the GCC
+documentation. along with the MMX, SSE, SSE2, SSE3, SSSE3, <a
+href="http://en.wikipedia.org/wiki/SSE4">SSE4.1</a>,SSE4.2, and POPCNT
+instruction-set extensions. The generated code is a balanced optimization
+across the top Intel 64-bit CPUs.</p>
+<p><b>NOTE:</b> The compiler flags shown above do not represent a comprehensive
+list. In particular, they do not include compiler optimization options used by
+default and/or recommended for x86-64 performance improvement. For performance
+optimization hints on x86-64 GCC, refer to Intel's article titled <a
+href="http://software.intel.com/blogs/2012/09/26/gcc-x86-performance-hints">GCC
+x86 Performance</a>.</p>
+<p>The ABI does <em>not</em> include any other optional x86-64 instruction set
+extensions, including, but not limited to:</p>
+<ul>
+<li>the MOVBE instruction</li>
+<li>the SHA instruction</li>
+<li>the AVX extension</li>
+<li>the AVX2 extension</li>
+</ul>
+<p>You can still use these, as long as you use runtime feature probing to
+enable them, and provide fallbacks for devices that do not support them.</p>
+<p>Please refer to the following documents for more details:</p>
+<ul>
+<li><a href="http://www.agner.org/optimize/calling_conventions.pdf">Calling
+conventions for different C++ compilers and operating systems</a></li>
+<li><a
+href="http://www.intel.com/content/www/us/en/processors/architectures-software-d
+eveloper-manuals.html?iid=tech_vt_tech+64-32_manuals">Intel64 and IA-32
+Architectures Software Developer's Manual, Volume 2: Instruction Set
+Reference</a></li>
+<li><a
+href="http://www.intel.com/content/www/us/en/processors/architectures-software-d
+eveloper-manuals.html?iid=tech_vt_tech+64-32_manuals">Intel64 and IA-32 Intel
+Architecture Software Developer's Manual Volume 3: System Programming</a></li>
+<li>Amendment to System V Application Binary Interface AMD64 Processor
+Architecture Supplement</li>
+</ul>
+<p><a class="anchor" id="mips"></a> </p>
+<h3>mips</h3>
+<p>This ABI is for MIPS-based CPUs that support <b>at least</b> the MIPS32r1
+instruction set. It includes the following features:</p>
+<ul>
+<li>MIPS32 revision 1 ISA</li>
+<li>Little-endian</li>
+<li>O32</li>
+<li>Hard-float</li>
+<li><p class="startli">No DSP application-specific extensions</p>
+<p class="startli">For more information, please refer to the following
+documentation.</p>
+</li>
+<li>ELF for the MIPS Architecture ("MIPSELF")</li>
+<li>FAQ for MIPS Toolchains ("MIPSFAQ")</li>
+<li>Toolchain Specifics ("MIPSTOOL")</li>
+<li>SDE Library ("MIPSSDE")</li>
+<li>Instruction Set Quick Reference ("MIPSISA")</li>
+<li>Architecture for Programmers ("MIPSARCH")</li>
+<li><a href="https://refspecs.linuxbase.org/elf/gabi4+/contents.html">ELF
+System V Application Binary Interface: DRAFT - 24 April 2001</a></li>
+<li><p class="startli"><a
+href="http://sourcery.mentor.com/public/cxx-abi/abi.html">Generic C++
+ABI</a></p>
+<p class="startli">The MIPS-specific documentation is available <a
+href="http://www.imgtec.com/mips/architectures/mips32.asp">here</a>, with
+further information <a
+href="https://sourcery.mentor.com/sgpp/lite/mips/portal/target_arch?@action=faq&
+amp;target_arch=MIPS">here</a>.</p>
+</li>
+</ul>
+<p><b>NOTE::</b> This ABI assumes a CPU:FPU clock ratio of 2:1 for maximum
+compatibility.</p>
+<p><b>NOTE::</b> Neither MIPS16 nor micromips is provided.</p>
+<p><a class="anchor" id="mips64"></a> </p>
+<h3>mips64</h3>
+<p>This ABI is for MIPS64 R6.</p>
+<p><a class="anchor" id="gc"></a> </p>
+<h2>Generating code for a specific ABI</h2>
+<p>By default, the NDK generates machine code for the armeabi ABI. You can
+generate ARMv7-a-compatible machine code, instead, by adding the following line
+to your <code>Application.mk</code> file.</p>
+<pre class="fragment"> APP_ABI := armeabi-v7a
+</pre><p>It is also possible to build machine code for two or more distinct
+ABIs, using spaces as delimiters. For example:</p>
+<pre class="fragment"> APP_ABI := armeabi armeabi-v7a
+</pre><p>This instructs the NDK to build two versions of your machine code: one
+for each ABI listed on this line. The build system copies the libraries to your
+application project path, and ultimately packages them into your APK, creating
+a <a href="http://en.wikipedia.org/wiki/Fat_binary">fat binary</a>.</p>
+<p>At installation time, the package manager unpacks only the most appropriate
+machine code for the target device. For details, see <a href="#aen">Automatic
+extraction of native code at install time</a>.</p>
+<p>You can also generate machine code for all NDK-supported ABIs:</p>
+<pre class="fragment"> APP_ABI := all
+</pre><p>Doing so will ensure that your app package contains libraries for all
+target ABIs. The tradeoff is that a fat binary is larger than one for a single
+system.</p>
+<p><a class="anchor" id="am"></a> </p>
+<h2>ABI Management on the Android platform</h2>
+<p>This section provides details about how the Android platform manages native
+code in APKs.</p>
+<h3>Native code in app packages</h3>
+<p>Both the Play Store and Package Manager expect to find NDK-generated
+libraries on filepaths inside the APK matching the following pattern:</p>
+<pre class="fragment"> lib/&lt;abi&gt;/lib&lt;name&gt;.so
+</pre><p>&lt;abi&gt; is one of the ABI names listed in the <a
+href="#sa">Supported ABIs</a> section of this document, and &lt;name&gt; is the
+name that the app uses to load the library from the VM. For example:</p>
+<pre class="fragment"> System.loadLibrary("&lt;name&gt;");
+</pre><p>Since APK files are just zip files, it is trivial to examine them and
+confirm that the shared native libraries are where they belong.</p>
+<p>If the native shared libraries are not where the system expects to find
+them, it can't do anything with them. In such a case, the app itself has to
+copy the libraries over, and perform <code>dlopen()</code>.</p>
+<p>Multiple libraries can be placed into a fat binary. For example:</p>
+<pre class="fragment"> lib/armeabi/libfoo.so
+ lib/armeabi-v7a/libfoo.so
+ lib/arm64-v8a/libfoo.so
+ lib/x86/libfoo.so
+ lib/x86-64/libfoo.so
+ lib/mips/libfoo.so
+ lib/mips64/libfoo.so
+</pre><p><b>NOTE::</b> ARMv7-based Android devices running 4.0.3 or earlier
+install native libraries from the 'armeabi' directory instead of the
+'armeabi-v7a' directory if both exist. <code>lib/armeabi</code> is listed after
+<code>lib/armeabi-v7a</code> in APK. This issue is fixed from 4.0.4.</p>
+<h3>Android Platform ABI support</h3>
+<p>The Android system knows at runtime which ABI(s) it supports, because either
+one or two build-specific system properties indicate:</p>
+<ul>
+<li>The "primary" ABI for the device, corresponding to the machine code used in
+the system image itself.</li>
+<li>An optional "secondary" ABI, corresponding to another ABI that is also
+supported by the system image.</li>
+</ul>
+<p>To achieve the best performance for your NDK component, you should compile
+directly for the primary ABI.</p>
+<p>For example, a typical ARMv5TE-based device would only define the primary
+ABI: armeabi. By contrast, a typical ARMv7-based device would define the
+primary ABI as armeabi-v7a and the secondary one as armeabi, since it can run
+application native binaries generated for each of them.</p>
+<p>Many x86-based devices can also run armeabi-v7a and armeabi NDK binaries,
+and defining the primary ABI as x86 and the secondary one as armeabi-v7a.</p>
+<p>A typical MIPS-based device only defines a primary abi: mips.</p>
+<p><a class="anchor" id="aen"></a> </p>
+<h3>Automatic extraction of native code at install time</h3>
+<p>When installing an application, the package manager service scans the APK,
+and looks for any shared library of the form:</p>
+<pre class="fragment"> lib/&lt;primary-abi&gt;/lib&lt;name&gt;.so
+</pre><p>If none is found, and a secondary ABI is defined, the service scans
+for shared libraries of the form: </p>
+<pre class="fragment"> lib/&lt;secondary-abi&gt;/lib&lt;name&gt;.so
+</pre><p>When it finds libraries that it's looking for, the package manager
+copies them to <code>/lib/lib&lt;name&gt;.so</code>, under the application's
+data directory (<code>/data/data/&lt;package_name&gt;/lib/</code>). If there is
+no <code>.so</code> file, the application builds and installs, but crashes at
+runtime.</p>
+<p>This mechanism ensures that the system extracts the best machine code from
+the package at installation time. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK
+Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__instruction_sets_and__c_p_us.html b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__instruction_sets_and__c_p_us.html
new file mode 100644
index 000000000..a7907b8e0
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__c_p_u__support__instruction_sets_and__c_p_us.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Architectures and CPUs</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__c_p_u__support__instruction_sets_and__c_p_us.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Architectures and CPUs </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This section includes detailed information about ABIs and detailed information on support for respective instruction sets. It includes these topics:</p>
+<ul>
+<li><a href="./md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html">ABI Management</a><ul>
+<li>Different ABIs support different CPUs and processing capabilities.</li>
+</ul>
+</li>
+<li><a href="./md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html">Neon</a><ul>
+<li>Details about targeting devices whose CPUs support Neon, or Advanced SIMD. Neon is an optional extensio of the armv7 architecture.</li>
+</ul>
+</li>
+<li><a href="./md_3__key__topics__c_p_u__support__c_p_u-_m_i_p_s.html">Mips</a><ul>
+<li>Details about targeting devices with CPUs supporting the MIPS32 instruction set.</li>
+</ul>
+</li>
+<li><a href="./md_3__key__topics__c_p_u__support__c_p_u-_x86.html">x86</a><ul>
+<li>Details about targeting devices with CPUs supporting the IA-32 instruction set.</li>
+</ul>
+</li>
+<li><a href="./md_3__key__topics__c_p_u__support__c_p_u-_x86-64.html">x86-64</a><ul>
+<li>Details about targeting devices whose CPUs support the x86-64 instruction set.</li>
+</ul>
+</li>
+<li><a href="./md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html">CPU Features</a><ul>
+<li>A small library that detects the target device's CPU family and supported features. </li>
+</ul>
+</li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__debugging__n_d_k-_g_d_b.html b/docs/Programmers_Guide/html/md_3__key__topics__debugging__n_d_k-_g_d_b.html
new file mode 100644
index 000000000..a9a4fe998
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__debugging__n_d_k-_g_d_b.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: &lt;code&gt;ndk-gdb&lt;/code&gt; and &lt;code&gt;ndk-gdb-py&lt;/code&gt;</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__debugging__n_d_k-_g_d_b.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title"><code>ndk-gdb</code> and <code>ndk-gdb-py</code> </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>IMPORTANT: IF YOU ARE DEBUGGING THREADED PROGRAMS, PLEASE READ THE SECTION BELOW TITLED 'Thread Support'.</p>
+<h2>Usage</h2>
+<p>The Android NDK r4 introduced a helper shell script named 'ndk-gdb' to easily launch a native debugging session for your NDK-generated machine code.</p>
+<p>The script is located at the top-level directory of the NDK, and shall be invoked from the command-line when in your application project directory, or any of its sub-directories. For example: </p>
+<pre class="fragment"> cd $PROJECT
+ $NDK/ndk-gdb
+</pre><p>Where $NDK points to your NDK installation path. You can also create an alias or add $NDK to your PATH to avoid typing it every time.</p>
+<p>IMPORTANT: Native debugging can only work if <em>all</em> these conditions are met:</p>
+<ol type="1">
+<li><p class="startli">Your application is built with the 'ndk-build' script:</p>
+<p class="startli">Building with the legacy "make APP=&lt;name&gt;" method is not supported by ndk-gdb.</p>
+</li>
+<li><p class="startli">Your application is debuggable:</p>
+<p class="startli">In other words, your AndroidManifest.xml has an &lt;application&gt; element that sets the android:debuggable attribute to "true"</p>
+</li>
+<li><p class="startli">You are running your application on Android 2.2 (or higher):</p>
+<p class="startli">ndk-gdb will not work if you try to run your application on previous versions of the system. That does not mean that your application should target the Android 2.2. API level, just that the debugging session should happen on a 2.2+ device or emulator system image.</p>
+<p class="startli">IMPORTANT IMPORTANT IMPORTANT !!</p>
+<p class="startli">If you are using the ADT Eclipse plug-in to build your application, make sure you're using version 0.9.7 or later.</p>
+<p class="startli">If you are using the 'ant' build tool, make sure that you have the latest revision of the SDK Platform components. The following minimal revisions are required: </p>
+<pre class="fragment"> Android 1.5 r4
+ Android 1.6 r3
+ Android 2.1 r2
+ Android 2.2 r1
+</pre><p class="startli">These should be available through the SDK updater.</p>
+<p class="startli">If these conditions are not met, the generated .apk will not contain required support files and native debugging will not be possible.</p>
+</li>
+</ol>
+<p>'ndk-gdb' handles many error conditions and will dump an informative error message if it finds a problem. For example, it:</p>
+<ul>
+<li>checks that adb is in your path.</li>
+<li>checks that your application is declared debuggable in its manifest.</li>
+<li>checks that, on the device, the installed application with the same package name is also debuggable.</li>
+</ul>
+<p>By default, ndk-gdb will search for an already-running application process, and will dump an error if it doesn't find one. You can however use the &ndash;start or &ndash;launch=&lt;name&gt; option to automatically start your activity before the debugging session.</p>
+<p>When it successfully attaches to your application process, ndk-gdb will give you a normal GDB prompt, after setting up the session to properly look for your source files and symbol/debug versions of your generated native libraries.</p>
+<p>You can set breakpoints with 'b &lt;location&gt;' and resume execution with 'c' (for 'continue'). See the GDB manual for a list of commands.</p>
+<p>IMPORTANT: When quitting the GDB prompt, your debugged application process will be stopped! This is a gdb limitation.</p>
+<p>IMPORTANT: The GDB prompt will be preceded by a long list of error messages, where gdb complains that it cannot find various system libraries (e.g. libc.so, libstdc++.so, liblog.so, libcutils.so, etc...)</p>
+<p>This is normal, because there are no symbol/debug versions of these libraries corresponding to your target device on your development machine. You can safely ignore these messages.</p>
+<h2>Options</h2>
+<p>To see a list of options, type 'ndk-gdb &ndash;help'. Notable ones are:</p>
+<h3><code>--verbose</code><br/>
+</h3>
+<p>Print verbose information about the native debugging session setup. Only needed to debug problems when you can't connect and that the error messages printed by ndk-gdb are not enough.</p>
+<p><code>--force</code><br/>
+ By default, ndk-gdb aborts if it finds that another native debugging session is running on the same device. Using &ndash;force will kill the session, and replace it with a new one. Note that the debugged program is <em>not</em> killed and will be stopped again.</p>
+<p><code>--start</code><br/>
+ By default, ndk-gdb will try to attach to an existing running instance of your application on the target device. You can use &ndash;start to explicitly launch your application before the debugging session.</p>
+<p>NOTE: This launches the first launchable activity listed from your application manifest. Use <code>--launch=&lt;name&gt;</code> to start another one. See <code>--launch-list</code> to dump the list of such activities.</p>
+<p><code>--launch=&lt;name&gt;</code><br/>
+ This is similar to &ndash;start, except that it allows you to start a specific activity from your application. This is only useful if your manifest defines several launchable activities.</p>
+<p><code>--launch-list</code><br/>
+ Convenience option that prints the list of all launchable activity names found in your application manifest. The first one will be used by &ndash;start</p>
+<p><code>--project=&lt;path&gt;</code><br/>
+ Specify application project directory. Useful if you want to launch the script without cd-ing to the directory before that.</p>
+<p><code>--port=&lt;port&gt;</code><br/>
+ By default, ndk-gdb will use local TCP port 5039 to communicate with the debugged application. By using a different port, it is possible to natively debug programs running on different devices/emulators connected to the same development machine.</p>
+<p><code>--adb=&lt;file&gt;</code><br/>
+ Specify the adb tool executable, in case it is not in your path.</p>
+<p><code>-d</code>, <code>-e</code>, <code>-s &lt;serial&gt;</code><br/>
+ These flags are similar to the ADB ones and allow you to handle the case where you have several devices/emulators connected to your development machine. </p>
+<pre class="fragment"> -d: Connect to a single physical device
+ -e: Connect to a single emulator device
+ -s &lt;serial&gt;: Connect to a specific device or emulator
+ where &lt;serial&gt; is the device's name as listed
+ by the "adb devices" command.
+</pre><p>Alternatively, you can define the ADB_SERIAL environment variable to list a specific device, without the need for a specific option.</p>
+<p><code>--exec=&lt;file&gt;</code><br/>
+ <code>-x &lt;file&gt;</code><br/>
+ After connecting to the debugged process, run the GDB initialization commands found in &lt;file&gt;. This is useful if you want to do something repeatedly, e.g. setting up a list of breakpoints then resuming execution automatically.</p>
+<p><code>--nowait</code><br/>
+ Disable pausing the Java code until GDB connects. Passing this option may cause early breakpoints to be missed.</p>
+<p><code>--tui</code><br/>
+ <code>-t</code><br/>
+ Enable Text User Interface if GDB was built with it. [ndk-gdb-py only]</p>
+<p><code>--gnumake-flag=&lt;flag&gt;</code><br/>
+ Extra flag(s) to pass to the ndk-build system when querying it for project information. Multiple instances can be used. [ndk-gdb-py only]</p>
+<p><code>--stdcxx-py-pr={auto|none|gnustdcxx[-GCCVER]|stlport}</code><br/>
+ Use specified Python pretty-printers for displaying types in the Standard C++ Library. 'auto' mode works by looking at the .so files for a libstdc++ library, and as such only works in the shared scenario. When linking statically to a libstdc++ library, the required printers must be specified. The default is 'none'. [ndk-gdb-py only]</p>
+<h2>Requirements</h2>
+<p>'ndk-gdb' requires a Unix shell to run. This means that Cygwin is required to run it on Windows. An experimental Python re-implementation called 'ndk-gdb-py' is also provided, removing this restriction and providing some new features.</p>
+<p>The other NDK requirements apply: e.g. GNU Make 3.81 or higher.</p>
+<h2>Thread Support</h2>
+<p>If your application runs on a platform older than Android 2.3, ndk-gdb will not be able to debug native threads properly. Instead, the debugger will only be able to put breakpoints on the main thread, completely ignoring the execution of other ones.</p>
+<p>The root of the problem is complex, but is essentially due to a very unfortunate bug in the platform, which was only discovered lately.</p>
+<p>The gdbserver binary that comes with this NDK has special code to detect this condition at runtime and adapt its behaviour automatically (in other words, you don't have anything special to do when building your code).</p>
+<p>In practical terms, this means:</p>
+<ul>
+<li>If you are on Android 2.3, or a prior platform release which has had the platform bug-fix back-ported to it, you will be able to debug native threads automatically.</li>
+<li>If you are not, you will only be able to debug the main thread (as in previous NDK releases). You will also see the following message when launching ndk-gdb (just before the gdb prompt): <pre class="fragment"> Thread debugging is unsupported on this Android platform!
+</pre></li>
+</ul>
+<p>If you place a breakpoint on a function executed on a non-main thread, the program will exit with the following message in GDB: </p>
+<pre class="fragment"> Program terminated with signal SIGTRAP, Trace/breakpoint trap.
+ The program no longer exists.</pre> </div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__debugging__n_d_k-_s_t_a_c_k.html b/docs/Programmers_Guide/html/md_3__key__topics__debugging__n_d_k-_s_t_a_c_k.html
new file mode 100644
index 000000000..8c433646e
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__debugging__n_d_k-_s_t_a_c_k.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: &lt;code&gt;ndk-stack&lt;/code&gt;</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__debugging__n_d_k-_s_t_a_c_k.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title"><code>ndk-stack</code> </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h2>Introduction</h2>
+<p>This document describes the 'ndk-stack' tool that is distributed with the Android NDK, since release r6.</p>
+<h2>Overview</h2>
+<p>'ndk-stack' is a simple tool that allows you to filter stack traces as they appear in the output of '<code>adb logcat</code>' and replace any address inside a shared library with the corresponding &lt;source-file&gt;:&lt;line-number&gt; values.</p>
+<p>In a nutshell, it will translate something like: </p>
+<pre class="fragment"> I/DEBUG ( 31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+ I/DEBUG ( 31): Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys'
+ I/DEBUG ( 31): pid: 351, tid: 351 %gt;%gt;%gt; /data/local/ndk-tests/crasher &lt;&lt;&lt;
+ I/DEBUG ( 31): signal 11 (SIGSEGV), fault addr 0d9f00d8
+ I/DEBUG ( 31): r0 0000af88 r1 0000a008 r2 baadf00d r3 0d9f00d8
+ I/DEBUG ( 31): r4 00000004 r5 0000a008 r6 0000af88 r7 00013c44
+ I/DEBUG ( 31): r8 00000000 r9 00000000 10 00000000 fp 00000000
+ I/DEBUG ( 31): ip 0000959c sp be956cc8 lr 00008403 pc 0000841e cpsr 60000030
+ I/DEBUG ( 31): #00 pc 0000841e /data/local/ndk-tests/crasher
+ I/DEBUG ( 31): #01 pc 000083fe /data/local/ndk-tests/crasher
+ I/DEBUG ( 31): #02 pc 000083f6 /data/local/ndk-tests/crasher
+ I/DEBUG ( 31): #03 pc 000191ac /system/lib/libc.so
+ I/DEBUG ( 31): #04 pc 000083ea /data/local/ndk-tests/crasher
+ I/DEBUG ( 31): #05 pc 00008458 /data/local/ndk-tests/crasher
+ I/DEBUG ( 31): #06 pc 0000d362 /system/lib/libc.so
+ I/DEBUG ( 31):
+</pre><p>Into the more readable output: </p>
+<pre class="fragment"> ********** Crash dump: **********
+ Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys'
+ pid: 351, tid: 351 &gt;&gt;&gt; /data/local/ndk-tests/crasher &lt;&lt;&lt;
+ signal 11 (SIGSEGV), fault addr 0d9f00d8
+ Stack frame #00 pc 0000841e /data/local/ndk-tests/crasher : Routine zoo in /tmp/foo/crasher/jni/zoo.c:13
+ Stack frame #01 pc 000083fe /data/local/ndk-tests/crasher : Routine bar in /tmp/foo/crasher/jni/bar.c:5
+ Stack frame #02 pc 000083f6 /data/local/ndk-tests/crasher : Routine my_comparison in /tmp/foo/crasher/jni/foo.c:9
+ Stack frame #03 pc 000191ac /system/lib/libc.so
+ Stack frame #04 pc 000083ea /data/local/ndk-tests/crasher : Routine foo in /tmp/foo/crasher/jni/foo.c:14
+ Stack frame #05 pc 00008458 /data/local/ndk-tests/crasher : Routine main in /tmp/foo/crasher/jni/main.c:19
+ Stack frame #06 pc 0000d362 /system/lib/libc.so
+</pre><h2>Usage</h2>
+<p>To do this, you will first need a directory containing symbolic versions of your application's shared libraries. If you use the NDK build system (i.e. ndk-build), then these are always located under <code>$PROJECT_PATH/obj/local/&lt;abi&gt;</code>, where <code>&lt;abi&gt;</code> stands for your device's ABI (i.e. '<code>armeabi</code>' by default).</p>
+<p>You can feed the logcat text either as direct input to the program, e.g.: </p>
+<pre class="fragment"> adb logcat | $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi
+</pre><p>Or you can use the -dump option to specify the logcat as an input file, e.g.: </p>
+<pre class="fragment"> adb logcat &gt; /tmp/foo.txt
+ $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump foo.txt
+</pre><p>** IMPORTANT **:</p>
+<blockquote class="doxtable">
+<p>The tool looks for the initial line containing starts in the logcat output,</p>
+<p></p>
+</blockquote>
+<p>i.e. something that looks like: </p>
+<pre class="fragment"> *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+</pre><p>When copy/pasting traces, don't forget this line from the traces, or ndk-stack won't work correctly.</p>
+<h2>TODO</h2>
+<p>A future version of '<code>ndk-stack</code>' will try to launch '<code>adb logcat</code>' and select the library path automatically. For now, you'll have to do these steps manually.</p>
+<p>As of now, ndk-stack doesn't handle libraries that don't have debug information in them. It may be useful to try to detect the nearest function entry point to a given PC address (e.g. as in the libc.so example above). </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__debugging_debugging.html b/docs/Programmers_Guide/html/md_3__key__topics__debugging_debugging.html
new file mode 100644
index 000000000..7dcbeb8fb
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__debugging_debugging.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Debugging</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__debugging_debugging.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Debugging </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This section introduces you to debugging with the NDK. It includes:</p>
+<ul>
+<li><a href="./md_3__key__topics__debugging__n_d_k-_g_d_b.html">ndk-gdb and ndk-gdb-py</a><ul>
+<li>The helper shell script named <code>ndk-gdb</code>, which allows you to launch a native debugging session for your NDK-generated machine code.</li>
+</ul>
+</li>
+<li><a href="./md_3__key__topics__debugging__n_d_k-_s_t_a_c_k.html">ndk-stack</a><ul>
+<li>A tool that helps you use ADB <code>logcat</code> in your debugging. </li>
+</ul>
+</li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html b/docs/Programmers_Guide/html/md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html
new file mode 100644
index 000000000..b3d37a87b
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html
@@ -0,0 +1,197 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: C++ Support</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">C++ Support </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>The Android platform provides a very minimal C++ runtime support library (/system/lib/libstdc++) and corresponding headers for it in the NDK.</p>
+<p>By default, this 'system' runtime does <em>not</em> provide the following:</p>
+<ul>
+<li>Standard C++ Library support (except a few trivial headers).</li>
+<li>C++ exceptions support</li>
+<li>RTTI support</li>
+</ul>
+<p>However, the NDK provides various "helper C++ runtimes" which can provide them, or a subset of these features.</p>
+<p>To select the runtime you want to use, define APP_STL inside your Application.mk to one of the following values: </p>
+<pre class="fragment"> system -&gt; Use the default minimal system C++ runtime library.
+ gabi++_static -&gt; Use the GAbi++ runtime as a static library.
+ gabi++_shared -&gt; Use the GAbi++ runtime as a shared library.
+ stlport_static -&gt; Use the STLport runtime as a static library.
+ stlport_shared -&gt; Use the STLport runtime as a shared library.
+ gnustl_static -&gt; Use the GNU STL as a static library.
+ gnustl_shared -&gt; Use the GNU STL as a shared library.
+ c++_static -&gt; Use the LLVM libc++ as a static library.
+ c++_shared -&gt; Use the LLVM libc++ as a shared library.
+</pre><p>The 'system' runtime is the default if there is no APP_STL definition in your Application.mk. As an example, to use the static GNU STL, add a line like: </p>
+<pre class="fragment"> APP_STL := gnustl_static
+</pre><p>To your Application.mk. You can only select a single C++ runtime that all your code will depend on. It is not possible to mix shared libraries compiled against different C++ runtimes.</p>
+<p>IMPORTANT: Defining APP_STL in Android.mk has no effect!</p>
+<p>If you are not using the NDK build system, you can still use STLport, libc++ or GNU STL via "make-standalone-toolchain.sh --stl=". see <a href="md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html">Standalone Toolchain</a> for more details.</p>
+<p>The capabilities of the various runtimes vary. See this table: </p>
+<pre class="fragment"> C++ C++ Standard
+ Exceptions RTTI Library
+
+ system no no no
+ gabi++ yes yes no
+ stlport yes yes yes
+ gnustl yes yes yes
+ libc++ yes yes yes
+</pre><p>#</p>
+<h2>Runtimes</h2>
+<h3>System runtime</h3>
+<p>The system runtime only provides a very small number of C++ standard headers.</p>
+<p>This corresponds to the actual C++ runtime provided by the Android platform. If you use it, your C++ binaries will automatically be linked against the system libstdc++.</p>
+<p>The only headers provided here are the following: </p>
+<pre class="fragment"> cassert cctype cerrno cfloat climits cmath csetjmp csignal cstddef
+ cstdint cstdio cstdlib cstring ctime cwchar new stl_pair.h typeinfo
+ utility
+</pre><p>Anything else is <em>not</em> supported, including std::string or std::vector.</p>
+<h3>GAbi++ runtime</h3>
+<p>This is a new minimalistic runtime that provides the same headers than the system one, with the addition of RTTI (RunTime Type Information) and exception handling support.</p>
+<p>If you insist on using it, read the "RTTI Support" and "Static runtime considerations" sections below.</p>
+<h3>STLport runtime</h3>
+<p>This is a port of STLport (<a href="http://www.stlport.org">http://www.stlport.org</a>) that can be used on Android. It will provide you with a complete set of C++ standard library headers, with RTTI and exception handling support.</p>
+<p>That's because the library embeds its own copy of GAbi++.</p>
+<p>Available as both both static and shared libraries. To use it, use either one of these two lines in your Application.mk: </p>
+<pre class="fragment"> APP_STL := stlport_shared
+ APP_STL := stlport_static
+</pre><p>Note that 'stlport_shared' is preferred, for reasons explained in "Static runtime considerations". The shared library file is named libstlport_shared.so instead of "libstdc++.so" as on other platforms.</p>
+<h3>GNU STL runtime</h3>
+<p>This is the GNU Standard C++ Library (a.k.a. libstdc++-v3), providing the more features. Note that the shared library file is named "libgnustl_shared.so".</p>
+<p>If you want to use it, please read the "C++ Exceptions support", "RTTI Support" and "Static runtime considerations" sections below.</p>
+<h3>libC++ runtime:</h3>
+<p>This is a port of LLVM libc++: <a href="http://libcxx.llvm.org/">http://libcxx.llvm.org/</a>. Note that the shared library file is named "libc++_shared.so".</p>
+<p>Please read the "C++ Exceptions support", "RTTI Support" and "Static runtime considerations" sections below.</p>
+<h2>II. Important Considerations</h2>
+<h3>C++ Exceptions support</h3>
+<p>The NDK toolchain supports C++ exceptions, since NDK r5, however all C++ sources are compiled with -fno-exceptions support by default, for compatibility reasons with previous releases.</p>
+<p>To enable it, use the new LOCAL_CPP_FEATURES variable in your Android.mk, as in: </p>
+<pre class="fragment"> LOCAL_CPP_FEATURES += exceptions
+</pre><p>See docs/ANDROID-MK.html for more details about this variable.</p>
+<p>Another way to do the same is to define it in your LOCAL_CPPFLAGS definition (but using LOCAL_CPP_FEATURES is preferred), as in: </p>
+<pre class="fragment"> LOCAL_CPPFLAGS += -fexceptions
+</pre><p>More simply, add a single line to your Application.mk, the setting will automatically apply to all your project's NDK modules: </p>
+<pre class="fragment"> APP_CPPFLAGS += -fexceptions
+</pre><p>IMPORTANT: You <em>will</em> have to select a C++ runtime that supports exceptions to be able to link / run your code.</p>
+<h3>RTTI support</h3>
+<p>Similarly, the NDK toolchain supports C++ RTTI (RunTime Type Information) since NDK r5, but all C++ sources are built with -fno-rtti by default for compatibility reasons. To enable it, add the following to your module declarations: </p>
+<pre class="fragment"> LOCAL_CPP_FEATURES += rtti
+</pre><p>This will be equivalent to: </p>
+<pre class="fragment"> LOCAL_CPPFLAGS += -frtti
+</pre><p>Or more simply to your Application.mk: </p>
+<pre class="fragment"> APP_CPPFLAGS += -frtti
+</pre><h3>Static runtimes</h3>
+<p>Please keep in mind that the static library variant of a given C++ runtime SHALL ONLY BE LINKED INTO A SINGLE BINARY for optimal conditions.</p>
+<p>What this means is that if your project consists of a single shared library, you can link against, e.g., stlport_static, and everything will work correctly.</p>
+<p>On the other hand, if you have two shared libraries in your project (e.g. libfoo.so and libbar.so) which both link against the same static runtime, each one of them will include a copy of the runtime's code in its final binary image. This is problematic because certain global variables used/provided internally by the runtime are duplicated.</p>
+<p>This is likely to result in code that doesn't work correctly, for example:</p>
+<ul>
+<li>memory allocated in one library, and freed in the other would leak or even corrupt the heap.</li>
+<li>exceptions raised in libfoo.so cannot be caught in libbar.so (and may simply crash the program).</li>
+<li>the buffering of std::cout not working properly</li>
+</ul>
+<p>This problem also happens if you want to link an executable and a shared library to the same static library.</p>
+<p>In other words, if your project requires several shared library modules, then use the shared library variant of your C++ runtime.</p>
+<h3>Shared runtimes</h3>
+<p>If you use the shared library variant of a given C++ runtime, keep in mind that you must load it before any library that depends on it when your application starts.</p>
+<p>As an example, let's consider the case where we have the following modules</p>
+<ul>
+<li>libfoo.so</li>
+<li>libbar.so which is used by libfoo.so</li>
+<li>libstlport_shared.so, used by both libfoo and libbar</li>
+</ul>
+<p>You will need to load the libraries in reverse dependency order, as in: </p>
+<pre class="fragment"> static {
+ System.loadLibrary("stlport_shared");
+ System.loadLibrary("bar");
+ System.loadLibrary("foo");
+ }
+</pre><p>Note that you shouldn't use the 'lib' prefix when calling System.loadLibrary(), unless you specify the full path as in: </p>
+<pre class="fragment">System.loadLibrary("/path/to/libstlport_shared.so")
+</pre><p>Which is not recommended, since this hard-codes the path in your code.</p>
+<h2>III. EXTRAS</h2>
+<h3>STLport-specific issues</h3>
+<p>This NDK provides prebuilt static and shared libraries for STLport, but you can force it to be rebuilt from sources by defining the following in your environment or your Application.mk before building: </p>
+<pre class="fragment"> STLPORT_FORCE_REBUILD := true
+</pre><p>STLport is licensed under a BSD-style open-source license. See sources/cxx-stl/stlport/README for more details about the library.</p>
+<h3>GNU libstdc++ license is GPLv3 + linking exception</h3>
+<p>Be aware that the GNU libstdc++ is covered by the GPLv3 license (and <em>not</em> the LGPLv2 or LGPLv3 as some assume), full details available here: </p>
+<pre class="fragment"> http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html
+</pre><p>Be sure that you comply with all clauses of this license.</p>
+<h3>libc++-specific issues:</h3>
+<p>"-std=c++11" is turned on by default.</p>
+<p>Similiar to GNU libstdc++, you need to explicitly turns on exceptions or rtti support in "LOCAL_CPP_FEATURES" if you wish.</p>
+<p>It's likely that you need libatomic if you #include &lt;atomic&gt;. Add "LOCAL_LDLIBS += -latomic" for ndk-build, and "-latomic" for standalone toolchain. Note that -latomic is only available in gcc4.8, not gcc4.6. Clang3.4/3.3 use gcc4.8's as/ld/headers/libraries so they get -latomic too. The version of libatomic in gcc4.8 <em>may</em> work for gcc4.6, although it's not tested and you have to copy them manually.</p>
+<p>This NDK provides prebuilt static and shared libraries for libc++ compiled by clang3.4, but you can force it to be rebuilt from sources by defining the following in your environment or your Application.mk before building: </p>
+<pre class="fragment"> LIBCXX_FORCE_REBUILD := true
+</pre><p>Around 99% of current 4640 tests passes when compiling libc++ with clang3.4 for all supported ABIs. The remaining fails are mostly in the areas of wchar_t and locale Android bionic don't support. Switching locale from the default produces the following warning in logcat </p>
+<pre class="fragment"> newlocale() WARNING: Trying to set locale to en_US.UTF-8 other than "", "C" or "POSIX"
+</pre><p>Initial support at r9d uses gabi++ as run-time also causes some issues in the nested exception and propagation too. Almost all are fixed after switching to libc++abi.</p>
+<p>Header include/atomic is fixed for gcc which doesn't support <em>Atomic in c++ mode. A dozen more fails when compiling libc++ with gcc4.8/gcc4.9 mostly in is_trivially</em>* tests.</p>
+<p>Using libc++ with gcc4.6 is not recommended (at least not tested at this moment) because its c++11 support isn't great</p>
+<p>See "black_list*" in tests/device/test-libc++-shared-full/jni/Android.mk for tests which fail to compile, and tests/device/test-libc++-shared-full/BROKEN_RUN for tests which fails to run correctly.</p>
+<h3>Future Plans:</h3>
+<ul>
+<li>uSTL support? </li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html b/docs/Programmers_Guide/html/md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html
new file mode 100644
index 000000000..ca825ab03
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Prebuilt Libraries</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Prebuilt Libraries </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>Android NDK r5 introduced support for prebuilt libraries (shared and static), i.e. the ability to include and use, in your applications, prebuilt version of libraries.</p>
+<p>This feature can be useful for two things:</p>
+<ol type="1">
+<li>You want to distribute your own libraries to third-party NDK developers without distributing your sources.</li>
+<li>You want to use a prebuilt version of your own libraries to speed up your build.</li>
+</ol>
+<p>This document explains how this support works.</p>
+<h2>Declaring a prebuilt library module</h2>
+<p>Each prebuilt library must be declared as a <em>single</em> independent module to the build system. Here is a trivial example where we assume that the file "libfoo.so" is located in the same directory than the Android.mk below: </p>
+<pre class="fragment"> LOCAL_PATH := $(call my-dir)
+
+ include $(CLEAR_VARS)
+ LOCAL_MODULE := foo-prebuilt
+ LOCAL_SRC_FILES := libfoo.so
+ include $(PREBUILT_SHARED_LIBRARY)
+</pre><p>Notice that, to declare such a module, you really only need the following:</p>
+<ol type="1">
+<li>Give the module a name (here '<code>foo-prebuilt</code>'). This does not need to correspond to the name of the prebuilt library itself.</li>
+<li><p class="startli">Assign to LOCAL_SRC_FILES the path to the prebuilt library you are providing. As usual, the path is relative to your LOCAL_PATH.</p>
+<p class="startli">IMPORTANT: You <em>must</em> ensure that the prebuilt library corresponds to the target ABI you are using. More on this later.</p>
+</li>
+<li>Include PREBUILT_SHARED_LIBRARY, instead of BUILD_SHARED_LIBRARY, if you are providing a shared, library. For static ones, use PREBUILT_STATIC_LIBRARY.</li>
+</ol>
+<p>A prebuilt module does not build anything. However, a copy of your prebuilt shared library will be copied into $PROJECT/obj/local, and another will be copied and stripped into <code>$PROJECT/libs/&lt;abi&gt;</code>.</p>
+<h2>Referencing the prebuilt library in other modules</h2>
+<p>Simply list your prebuilt module's name in the LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES declaration in the Android.mk of any module that depends on them.</p>
+<p>For example, a naive example of a module using libfoo.so would be: </p>
+<pre class="fragment"> include $(CLEAR_VARS)
+ LOCAL_MODULE := foo-user
+ LOCAL_SRC_FILES := foo-user.c
+ LOCAL_SHARED_LIBRARIES := foo-prebuilt
+ include $(BUILD_SHARED_LIBRARY)
+</pre><h2>Exporting headers for prebuilt libraries</h2>
+<p>The example above was called 'naive' because, in practice, the code in foo-user.c is going to depend on specific declarations that are normally found in a header file distributed with the prebuilt library (e.g. "foo.h").</p>
+<p>In other words, foo-user.c is going to have a line like: </p>
+<pre class="fragment"> #include &lt;foo.h&gt;
+</pre><p>And you need to provide the header and its include path to the compiler when building the foo-user module.</p>
+<p>A simple way to deal with that is to use exports in the prebuilt module definition. For example, assuming that a file "foo.h" is located under the 'include' directory relative to the prebuilt module, we can write: </p>
+<pre class="fragment"> include $(CLEAR_VARS)
+ LOCAL_MODULE := foo-prebuilt
+ LOCAL_SRC_FILES := libfoo.so
+ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
+ include $(PREBUILT_SHARED_LIBRARY)
+</pre><p>The LOCAL_EXPORT_C_INCLUDES definition here ensures that any module that depends on the prebuilt one will have its LOCAL_C_INCLUDES automatically prepended with the path to the prebuilt's include directory, and will thus be able to find headers inside that.</p>
+<h2>Debugging prebuilt binaries</h2>
+<p>We recommend you to provide prebuilt shared libraries that contain debug symbols. The version that is installed into <code>$PROJECT/libs/&lt;abi&gt;/</code> is always stripped by the NDK build system, but the debug version will be used for debugging purposes with ndk-gdb.</p>
+<h2>ABI Selection of prebuilt binaries</h2>
+<p>As said previously, it is crucial to provide a prebuilt shared library that is compatible with the targeted ABI during the build. To do that, check for the value of TARGET_ARCH_ABI, its value will be: </p>
+<pre class="fragment"> armeabi =&gt; when targeting ARMv5TE or higher CPUs
+ armeabi-v7a =&gt; when targeting ARMv7 or higher CPUs
+ x86 =&gt; when targeting x86 CPUs
+ mips =&gt; when targeting MIPS CPUs
+</pre><p>Note that armeabi-v7a systems can run armeabi binaries just fine.</p>
+<p>Here's an example where we provide two versions of a prebuilt library and select which one to copy based on the target ABI: </p>
+<pre class="fragment"> include $(CLEAR_VARS)
+ LOCAL_MODULE := foo-prebuilt
+ LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libfoo.so
+ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
+ include $(PREBUILT_SHARED_LIBRARY)
+</pre><p>Here. we assume that the prebuilt libraries to copy are under the following directory hierarchy: </p>
+<pre class="fragment"> Android.mk --&gt; the file above
+ armeabi/libfoo.so --&gt; the armeabi prebuilt shared library
+ armeabi-v7a/libfoo.so --&gt; the armeabi-v7a prebuilt shared library
+ include/foo.h --&gt; the exported header file
+</pre><p>NOTE: Remember that you don't need to provide an armeabi-v7a prebuilt library, since an armeabi one can easily run on the corresponding devices. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html b/docs/Programmers_Guide/html/md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html
new file mode 100644
index 000000000..cd8eefd33
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html
@@ -0,0 +1,238 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Stable APIs</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Stable APIs </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This is the list of stable APIs/ABIs exposed by the Android NDK.</p>
+<h2>Purpose</h2>
+<p>Each API corresponds to a set of headers files, and a shared library file that contains the corresponding implementation, and which must be linked against by your native code.</p>
+<p>For example, to use system library "Foo", you would include a header like &lt;foo.h&gt; in your code, then tell the build system that your native module needs to link to /system/lib/libfoo.so at load-time by adding the following line to your Android.mk file:</p>
+<p>LOCAL_LDLIBS := -lfoo</p>
+<p>Note that the build system automatically links the C library, the Math library and the C++ support library to your native code, there is no need to list them in a LOCAL_LDLIBS line.</p>
+<p>There are several "API Levels" defined. Each API level corresponds to a given Android system platform release. The following levels are currently supported: </p>
+<pre class="fragment"> android-3 -&gt; Official Android 1.5 system images
+ android-4 -&gt; Official Android 1.6 system images
+ android-5 -&gt; Official Android 2.0 system images
+ android-6 -&gt; Official Android 2.0.1 system images
+ android-7 -&gt; Official Android 2.1 system images
+ android-8 -&gt; Official Android 2.2 system images
+ android-9 -&gt; Official Android 2.3 system images
+ android-14 -&gt; Official Android 4.0 system images
+ android-18 -&gt; Official Android 4.3 system images
+</pre><p>Note that android-6 and android-7 are the same as android-5 for the NDK, i.e. they provide exactly the same native ABIs!</p>
+<p>IMPORTANT<br/>
+ The headers corresponding to a given API level are now located under <code>$NDK/platforms/android-&lt;level&gt;/arch-arm/usr/include</code></p>
+<h2>Android-3 Stable Native APIs</h2>
+<p>All the APIs listed below are available for developing native code that runs on Android 1.5 system images and above.</p>
+<h3>The C Library</h3>
+<p>The C library headers, as they are defined on Android 1.5 are available through their standard names (&lt;stdlib.h&gt;, &lt;stdio.h&gt;, etc...). If one header is not there at build time, it's because its implementation is not available on a 1.5 system image.</p>
+<p>The build system automatically links your native modules to the C library, you don't need to add it to LOCAL_LDLIBS.</p>
+<p>Note that the Android C library includes support for pthread (&lt;pthread.h&gt;), so "LOCAL_LIBS := -lpthread" is not needed. The same is true for real-time extensions (-lrt on typical Linux distributions).</p>
+<pre class="fragment">** VERY IMPORTANT NOTE: ******************************************************
+*
+* The kernel-specific headers in &lt;linux/...&gt; and &lt;asm/...&gt; are not considered
+* stable at this point. Avoid including them directly because some of them
+* are likely to change in future releases of the platform. This is especially
+* true for anything related to specific hardware definitions.
+*
+******************************************************************************
+</pre><h3>The Math Library</h3>
+<p><code>&lt;math.h&gt;</code> is available, and the math library is automatically linked to your native modules at build time, so there is no need to list "`-lm`" through LOCAL_LDLIBS.</p>
+<h3>C++ Library</h3>
+<p>An <em>extremely</em> minimal C++ support API is available. For Android 1.5, this is currently limited to the following headers: </p>
+<pre class="fragment"> &lt;cstddef&gt;
+ &lt;new&gt;
+ &lt;utility&gt;
+ &lt;stl_pair.h&gt;
+</pre><p>They may not contain all definitions required by the standard. Notably, support for C++ exceptions and RTTI is not available with Android 1.5 system images.</p>
+<p>The C++ support library (-lstdc++) is automatically linked to your native modules too, so there is no need to list it through LOCAL_LDLIBS</p>
+<h3>Android-specific Log Support</h3>
+<p><code>&lt;android/log.h&gt;</code> contains various definitions that can be used to send log messages to the kernel from your native code. Please have a look at its content in (<code>platforms/android-3/arch-arm/usr/include/android/log.h</code>), which contain many informative comments on how to use it.</p>
+<p>You should be able to write helpful wrapper macros for your own usage to access this facility.</p>
+<p>If you use it, your native module should link to /system/lib/liblog.so with: </p>
+<pre class="fragment"> LOCAL_LDLIBS := -llog
+</pre><h3>ZLib Compression Library</h3>
+<p><code>&lt;zlib.h&gt;</code> and <code>&lt;zconf.h&gt;</code> are available and can be used to use the ZLib compression library. Documentation for it is at the ZLib page:</p>
+<p><a href="http://www.zlib.net/manual.html">http://www.zlib.net/manual.html</a></p>
+<p>If you use it, your native module should link to /system/lib/libz.so with: </p>
+<pre class="fragment"> LOCAL_LDLIBS := -lz
+</pre><h3>Dynamic Linker Library</h3>
+<p><code>&lt;dlfcn.h&gt;</code> is available and can be used to use the dlopen()/dlsym()/dlclose() functions provided by the Android dynamic linker. You will need to link against /system/lib/libdl.so with: </p>
+<pre class="fragment"> LOCAL_LDLIBS := -ldl
+</pre><h2>Android-4 Stable Native APIs</h2>
+<p>All the APIs listed below are available for developing native code that runs on Android 1.6 system images and above,</p>
+<h3>The OpenGL ES 1.x Library</h3>
+<p>The standard OpenGL ES headers <code>&lt;GLES/gl.h&gt;</code> and <code>&lt;GLES/glext.h&gt;</code> contain the declarations needed to perform OpenGL ES 1.x rendering calls from native code.</p>
+<p>If you use them, your native module should link to /system/lib/libGLESv1_CM.so as in: </p>
+<pre class="fragment"> LOCAL_LDLIBS := -lGLESv1_CM
+</pre><p>The '1.x' here refers to both versions 1.0 and 1.1 of the OpenGL ES APIs. Please note that:</p>
+<ul>
+<li>OpenGL ES 1.0 is supported on <em>all</em> Android-based devices.</li>
+<li>OpenGL ES 1.1 is fully supported only on specific devices that have the corresponding GPU.</li>
+</ul>
+<p>This is because Android comes with a 1.0-capable software renderer that can be used on GPU-less devices.</p>
+<p>Developers should query the OpenGL ES version string and extension string to know if the current device supports the features they need. See the description of glGetString() in the specification to see how to do that:</p>
+<p><a href="http://www.khronos.org/opengles/sdk/1.1/docs/man/glGetString.xml">http://www.khronos.org/opengles/sdk/1.1/docs/man/glGetString.xml</a></p>
+<p>Additionally, developers must put a <code>&lt;uses-feature&gt;</code> tag in their manifest file to indicate which version of OpenGL ES their application requires. See the documentation linked below for details:</p>
+<p><a href="http://developer.android.com/guide/topics/manifest/uses-feature-element.html">http://developer.android.com/guide/topics/manifest/uses-feature-element.html</a></p>
+<p>Please note that EGL APIs are only available starting from API level 9. You can however perform the corresponding operations (surface creation and flipping) by using the VM. For example, with a GLSurfaceView as described here:</p>
+<p><a href="http://android-developers.blogspot.com/2009/04/introducing-glsurfaceview.html">http://android-developers.blogspot.com/2009/04/introducing-glsurfaceview.html</a></p>
+<p>The "san-angeles" sample application shows how you can do that, while rendering each frame in native code. This is a small Android port of the excellent "San Angeles Observation" demo program. For more information about it, see:</p>
+<p><a href="http://jet.ro/visuals/san-angeles-observation/">http://jet.ro/visuals/san-angeles-observation/</a></p>
+<h2>Android-5 Stable Native APIs</h2>
+<p>All the APIs listed below are available for developing native code that runs on Android 2.0 system images and above.</p>
+<h3>The OpenGL ES 2.0 Library:</h3>
+<p>The standard OpenGL ES 2.0 headers <code>&lt;GLES2/gl2.h&gt;</code> and <code>&lt;GLES2/gl2ext.h&gt;</code> contain the declarations needed to perform OpenGL ES 2.0 rendering calls from native code. This includes the ability to define and use vertex and fragment shaders using the GLSL language.</p>
+<p>If you use them, your native module should link to /system/lib/libGLESv2.so as in: </p>
+<pre class="fragment"> LOCAL_LDLIBS := -lGLESv2
+</pre><p>Not all devices support OpenGL ES 2.0, developers should thus query the implementation's version and extension strings, and put a <code>&lt;uses-feature&gt;</code> tag in their Android manifest. See Section III above for details.</p>
+<p>Please note that EGL APIs are only available starting from API level 9.</p>
+<p>The "hello-gl2" sample application demonstrate this. It is used to draw a very simple triangle with the help of a vertex and fragment shaders.</p>
+<p>IMPORTANT NOTE<br/>
+ The Android emulator does not support OpenGL ES 2.0 hardware emulation at this time. Running and testing code that uses this API requires a real device with such capabilities.</p>
+<h2>IV. Android-8 Stable Native APIs</h2>
+<p>All the APIs listed below are available for developing native code that runs on Android 2.2 system images and above.</p>
+<h3>The 'jnigraphics' Library:</h3>
+<p>This is a tiny library that exposes a stable, C-based interface that allows native code to reliably access the pixel buffers of Java bitmap objects.</p>
+<p>To use it, include the <code>&lt;android/bitmap.h&gt;</code> header in your source code, and and link to the jnigraphics library as in: </p>
+<pre class="fragment"> LOCAL_LDLIBS += -ljnigraphics
+</pre><p>For details, read the source header at the following location: </p>
+<pre class="fragment"> platforms/android-8/arch-arm/usr/include/android/bitmap.h
+</pre><p>Briefly, typical usage should look like:</p>
+<ol type="1">
+<li>Use <code>AndroidBitmap_getInfo()</code> to retrieve information about a given bitmap handle from JNI (e.g. its width/height/pixel format)</li>
+<li>Use <code>AndroidBitmap_lockPixels()</code> to lock the pixel buffer and retrieve a pointer to it. This ensures the pixels will not move until <code>AndroidBitmap_unlockPixels()</code> is called.</li>
+<li>Modify the pixel buffer, according to its pixel format, width, stride, etc.., in native code.</li>
+<li>Call <code>AndroidBitmap_unlockPixels()</code> to unlock the buffer.</li>
+</ol>
+<h2>Android-9 Stable Native APIs</h2>
+<p>All the APIs listed below are available for developing native code that runs on Android &gt; 2.3 system images and above.</p>
+<h3>The EGL graphics library:</h3>
+<p>EGL provides a native platform interface to allocate and manage OpenGLES surfaces. For more information about its features, please see:</p>
+<p><a href="http://www.khronos.org/egl">http://www.khronos.org/egl</a></p>
+<p>In a nutshell, this will allow you to do the following directly from native code:</p>
+<ul>
+<li>List supported EGL configurations</li>
+<li>Allocate and release OpenGLES surfaces</li>
+<li>Swap/Flip surfaces for display (eglSwapBuffers)</li>
+</ul>
+<p>This is provided through the following headers: </p>
+<pre class="fragment"> &lt;EGL/egl.h&gt; -&gt; Main EGL API definitions
+ &lt;EGL/eglext.h&gt; -&gt; EGL extension-related definitions
+</pre><p>You cal link against the system's EGL library by adding the following to your NDK module definition: </p>
+<pre class="fragment"> LOCAL_LDLIBS += -lEGL
+</pre><h3>The OpenSL ES native audio Library:</h3>
+<p>Android native audio is based on Khronos Group OpenSL ES&amp;#0153; 1.0.1.</p>
+<p>The standard OpenSL ES headers <code>&lt;SLES/OpenSLES.h&gt;</code> and <code>&lt;SLES/OpenSLES_Platform.h&gt;</code> contain the declarations needed to perform audio input and output from the native side of Android.</p>
+<p>NOTE: Despite the fact that the OpenSL ES 1.0.1 specification uses <code>&lt;OpenSLES.h&gt;</code> to include these headers, Khronos has modified later versions of the document to recommend <code>&lt;SLES/OpenSLES.h&gt;</code> instead, hence the later approach was adopted for Android.</p>
+<p>This API level also provides Android-specific extensions, see the content of <code>&lt;SLES/OpenSLES_Android.h&gt;</code> and <code>&lt;SLES/OpenSLES_AndroidConfiguration.h&gt;</code> for details.</p>
+<p>The system library named "libOpenSLES.so" implements the public native audio functions. Use the following to link your modules against it: </p>
+<pre class="fragment"> LOCAL_LDLIBS += -lOpenSLES
+</pre><p>For more information about this topic, please read the document docs/opensles/index.html.</p>
+<h3>The Android native application APIs:</h3>
+<p>Starting from API level 9, it is possible to entirely write an Android application with native code (i.e. without any Java). That does not mean that your code does not run inside a VM though, and most of the features of the platform will still need to be accessed through JNI.</p>
+<p>For more information about this topic, please read the dedicated document named docs/NATIVE-ACTIVITY.html</p>
+<p>The following headers correspond to these new native APIs (see comments inside them for more details):</p>
+<ul>
+<li><code>&lt;android/native_activity.h&gt;</code> Activity lifecycle management (and general entry point)</li>
+<li><code>&lt;android/looper.h&gt;</code><br/>
+ <code>&lt;android/input.h&gt;</code><br/>
+ <code>&lt;android/keycodes.h&gt;</code><br/>
+ <code>&lt;android/sensor.h&gt;</code> To Listen to input events and sensors directly from native code.</li>
+<li><code>&lt;android/rect.h&gt;</code><br/>
+ <code>&lt;android/window.h&gt;</code><br/>
+ <code>&lt;android/native_window.h&gt;</code><br/>
+ <code>&lt;android/native_window_jni.h&gt;</code> Window management, including the ability to lock/unlock the pixel buffer to draw directly into it.</li>
+<li><code>&lt;android/configuration.h&gt;</code><br/>
+ <code>&lt;android/asset_manager.h&gt;</code><br/>
+ <code>&lt;android/storage_manager.h&gt;</code><br/>
+ <code>&lt;android/obb.h&gt;</code><br/>
+</li>
+</ul>
+<p>Direct (read-only) access to assets embedded in your .apk. or the Opaque Binary Blob (OBB) files, a new feature of Android X.X that allows one to distribute large amount of application data outside of the .apk (useful for game assets, for example).</p>
+<p>All the corresponding functions are provided by the "libandroid.so" library version that comes with API level 9. To use it, use the following: </p>
+<pre class="fragment"> LOCAL_LDLIBS += -landroid
+</pre><h2>Android-14 Stable Native APIs</h2>
+<p>All the APIs listed below are available for developing native code that runs on Android &gt; 4.0 system images and above.</p>
+<h3>The OpenMAX AL native multimedia library:</h3>
+<p>Android native multimedia is based on Khronos Group OpenMAX AL&amp;#0153; 1.0.1.</p>
+<p>The standard OpenMAX AL headers <code>&lt;OMXAL/OpenMAXAL.h&gt;</code> and <code>&lt;OMXAL/OpenMAXAL_Platform.h&gt;</code> contain the declarations needed to perform multimedia output from the native side of Android.</p>
+<p>NOTE<br/>
+ Despite the fact that the OpenMAX AL 1.0.1 specification uses <code>&lt;OpenMAXAL.h&gt;</code> to include these headers, Khronos has modified later versions of the document to recommend <code>&lt;OMXAL/OpenMAXAL.h&gt;</code> instead, hence the later approach was adopted for Android.</p>
+<p>This API level also provides Android-specific extensions, see the content of <code>&lt;OMXAL/OpenMAXAL_Android.h&gt;</code> for details.</p>
+<p>The system library named "`libOpenMAXAL.so`" implements the public native multimedia functions. Use the following to link your modules against it: </p>
+<pre class="fragment"> LOCAL_LDLIBS += -lOpenMAXAL
+</pre><p>For more information about this topic, please read the document docs/openmaxal/index.html.</p>
+<h3>The OpenSL ES native audio library:</h3>
+<p>Native audio APIs based on OpenSL ES were added in API level 9. Starting with API level 14, the native audio API was extended to support decoding to PCM. See section "The OpenSL ES native audio Library" above for a high-level summary of how to use OpenSL ES, and the details in docs/opensles/index.html.</p>
+<h2>Android-18 Stable Native APIs</h2>
+<p>All the APIs listed below are available for developing native code that runs on Android 4.3 system images and above.</p>
+<h3>The OpenGL ES 3.0 Library:</h3>
+<p>The standard OpenGL ES 3.0 headers <code>&lt;GLES3/gl3.h&gt;</code> and <code>&lt;GLES3/gl3ext.h&gt;</code> contain the declarations needed to perform OpenGL ES 3.0 rendering calls from native code.</p>
+<p>If you use them, your native module should link to /system/lib/libGLESv3.so as in:</p>
+<p>LOCAL_LDLIBS := -lGLESv3</p>
+<p>Not all devices support OpenGL ES 3.0, developers should thus query the implementation's version and extension strings, and put a <code>&lt;uses-feature&gt;</code> tag in their Android manifest. See Section III above for details.</p>
+<p>The "gles3jni" sample application demonstrates this.</p>
+<p>IMPORTANT NOTE: The Android emulator does not support OpenGL ES 3.0 hardware emulation at this time. Running and testing code that uses this API requires a real device with such capabilities. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_3__key__topics__libraries_libraries.html b/docs/Programmers_Guide/html/md_3__key__topics__libraries_libraries.html
new file mode 100644
index 000000000..a0b6185e6
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_3__key__topics__libraries_libraries.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Libraries</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_3__key__topics__libraries_libraries.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Libraries </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This section discusses libraries included with the NDK, as well as how to use other people's libraries and modules in your own application. It discusses:</p>
+<ul>
+<li><a href="./md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html">Stable APIs</a><ul>
+<li>This section discusses the stable APIs exposed by the NDK.</li>
+</ul>
+</li>
+<li><a href="./md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html">Prebuilt Libraries</a><ul>
+<li>How to include and use prebuilt libraries in your own application.</li>
+</ul>
+</li>
+<li><a href="./md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html">C++ Support</a><br/>
+<ul>
+<li>Information about the NDK's C++ runtime support library and corresponding header files. </li>
+</ul>
+</li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_4__additional__info__a_n_d_r_o_i_d-_a_t_o_m_i_c_s.html b/docs/Programmers_Guide/html/md_4__additional__info__a_n_d_r_o_i_d-_a_t_o_m_i_c_s.html
new file mode 100644
index 000000000..f4f30aaea
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_4__additional__info__a_n_d_r_o_i_d-_a_t_o_m_i_c_s.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Atomics</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_4__additional__info__a_n_d_r_o_i_d-_a_t_o_m_i_c_s.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Atomics </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h2>The problem: </h2>
+<p>If your application native code was generated with a NDK release older than r7b and uses any of the following functions defined in the <code>&lt;sys/atomics.h&gt;</code> header:</p>
+<ul>
+<li><code>__atomic_cmpxchg</code></li>
+<li><code>__atomic_inc</code></li>
+<li><code>__atomic_dec</code></li>
+<li><code>__atomic_swap</code></li>
+</ul>
+<p>Then the corresponding machine code is not guaranteed to work properly on some multi-core Android ARM-based devices (x86 ones are not affected).</p>
+<h2>The solution: </h2>
+<p>The <code>&lt;sys/atomics.h&gt;</code> header has been updated in NDK r7b. Simply recompiling your <em>unmodified</em> sources with this version of the NDK should be enough to completely eliminate the problem.</p>
+<p>If you can't use NDK r7b or later for some reason, read the section below.</p>
+<h2>More details: </h2>
+<p>The main issue is that the implementation of these functions, as provided by the C library, did not provide any associated memory barriers. This is by design, because the platform code that uses them does insert explicit barriers around these operations.</p>
+<p>The functions were only exposed through the NDK by mistake, they were not supposed to be used from applications. Any application code that use them without inserting its own barriers may experiment incorrect behaviour, which can result in bugs that are very hard to reproduce and diagnose.</p>
+<p>Not all multi-core devices are affected though. Certain OEMs enforce a policy where all threads of a single process are forced to run on the same core. In this case, the bug cannot occur, unless you're directly accessing shared memory between two processes.</p>
+<p>The problem is only likely to be seen on devices running Android 3.0 to Android 4.1. The C library implementation in 4.1 has been updated to provide full memory barriers as well. This ensures existing native code keeps working correctly on this platform and future ones, even if they were not recompiled.</p>
+<p>We still strongly recommend recompiling your native code to ensure you'll never have to debug this issue (life is short). In the case where this would not be possible (e.g. you're using an older version of the NDK for some reason, or a custom build system / toolchain), we recommend stopping from using these functions entirely. Very fortunately, GCC provides handy intrinsics functions that work with very reasonable performance and always provide a <em>full</em> <em>barrier</em>.</p>
+<ul>
+<li><code>__sync_fetch_and_add</code> instead of <code>__atomic_inc</code></li>
+<li><code>__sync_fetch_and_sub</code> instead of <code>__atomic_sub</code></li>
+<li><code>__sync_val_compare_and_swap</code> instead of <code>__atomic_cmpxchg</code></li>
+</ul>
+<p>See the content of <code>platforms/android-3/arch-arm/usr/include/sys/atomics.h</code> to see how these can be used.</p>
+<p>See the <a href="http://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html#_005f_005fsync-Builtins">GCC documentation about __sync_ functions</a> for more information: </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_4__additional__info__additional__info.html b/docs/Programmers_Guide/html/md_4__additional__info__additional__info.html
new file mode 100644
index 000000000..c3237cb81
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_4__additional__info__additional__info.html
@@ -0,0 +1,95 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Additional Information</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_4__additional__info__additional__info.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Additional Information </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h2>Introduction</h2>
+<p>This section provides additional information of interest to the NDK developer. It includes:</p>
+<ul>
+<li><a href="./md_4__additional__info__a_n_d_r_o_i_d-_a_t_o_m_i_c_s.html">Atomics</a><br/>
+<ul>
+<li>If you're working with native code generated by a pre-r7b version of the NDK, this section contains important information.</li>
+</ul>
+</li>
+<li><a href="./md_4__additional__info__i_m_p_o_r_t-_m_o_d_u_l_e.html">Importing Modules (Sharing Code Made Easy)</a><br/>
+<ul>
+<li>How to take advantage of modules other people have created with the NDK.</li>
+</ul>
+</li>
+<li><a href="./md_4__additional__info__n_d_k-_d_e_p_e_n_d_s.html">ndk-depends</a><br/>
+<ul>
+<li>This tool allows you to eliminate ELF dependencies.</li>
+</ul>
+</li>
+<li><a href="./md_4__additional__info__s_y_s_t_e_m-_i_s_s_u_e_s.html">Android System Image Issues</a><br/>
+<ul>
+<li>Known system issues to watch out for.</li>
+</ul>
+</li>
+<li><a href="./md_4__additional__info__l_i_c_e_n_s_e_s.html">Licenses</a><ul>
+<li>Licensing information about the content of the NDK. </li>
+</ul>
+</li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_4__additional__info__i_m_p_o_r_t-_m_o_d_u_l_e.html b/docs/Programmers_Guide/html/md_4__additional__info__i_m_p_o_r_t-_m_o_d_u_l_e.html
new file mode 100644
index 000000000..746bfbcf6
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_4__additional__info__i_m_p_o_r_t-_m_o_d_u_l_e.html
@@ -0,0 +1,193 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Importing Modules (Sharing Code Made Easy)</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_4__additional__info__i_m_p_o_r_t-_m_o_d_u_l_e.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Importing Modules (Sharing Code Made Easy) </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>Starting from r5, the Android NDK comes with a cool feature that allows you to share and reuse other people's modules more easily.</p>
+<h2>Overview:</h2>
+<p>The main idea behind this feature are:</p>
+<ul>
+<li>You can install NDK modules outside of your main project source tree.</li>
+<li>You can easily 'import' them into your project with a one-line command.</li>
+</ul>
+<p>In practice, here's how this works:</p>
+<ol type="1">
+<li><p class="startli">Your NDK_MODULE_PATH environment variable will contain a list of search paths on your system to lookup for modules.</p>
+<p class="startli">It is up to you to set the variable, and to copy other modules to the directories you listed in it.</p>
+</li>
+<li><p class="startli">To import a module, place a line like the following to, preferably at the <em>end</em> of, your Android.mk: </p>
+<pre class="fragment"> $(call import-module,&lt;tag&gt;)
+</pre><p class="startli">This will look for &lt;tag&gt;/Android.mk under any of the directories listed in your NDK_MODULE_PATH.</p>
+<p class="startli">(The reason why it must be at the end is to avoid messing with the results of the 'my-dir' function. See its description in docs/ANDROID-MK.html for details).</p>
+</li>
+<li>Declare that your project's modules depend on the imported one by listing them in either your LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES. For example: <pre class="fragment"> LOCAL_STATIC_LIBRARIES += &lt;tag&gt;
+</pre></li>
+<li><p class="startli">Rebuild!</p>
+<p class="startli">Remember that NDK r5 also added the ability for a module to "export" declarations to other modules that depend on it (for example, see the definition of LOCAL_EXPORT_CFLAGS in docs/ANDROID-MK.html).</p>
+<p class="startli">A well-written module will correctly export all the things its dependees need, et voila.</p>
+</li>
+</ol>
+<p>Now for the full details:</p>
+<h2><code>NDK_MODULE_PATH</code></h2>
+<p>The NDK_MODULE_PATH variable must contain a list of directories.</p>
+<ul>
+<li>Due to GNU Make limitations, NDK_MODULE_PATH must not contain any space. The NDK will complain if this is not the case.</li>
+<li>Use ':' as the path separator.</li>
+<li>On Windows, use '/' as the directory separator.</li>
+</ul>
+<p>The directories of NDK_MODULE_PATH will be searched in order. The first &lt;path&gt;/&lt;tag&gt;/Android.mk file that is found during the lookup will be included automatically.</p>
+<p>As a convenience, $NDK/sources is appended to your NDK_MODULE_PATH definition by the NDK build system. This allows you to easily import the helper libraries that come with it (see docs/CPU-FEATURES.html for a practical example).</p>
+<h2>Writing an import module</h2>
+<p>Writing an import module is trivial and very similar to what you do when writing project modules:</p>
+<ol type="1">
+<li><p class="startli">Create a sub-directory from one of your NDK_MODULE_PATH directories.</p>
+<p class="startli">For example, if NDK_MODULE_PATH is defined to /home/user/ndk-modules, then create the directory /home/user/ndk-modules/my-module/</p>
+</li>
+<li><p class="startli">Place an Android.mk and eventual source code there.</p>
+<p class="startli">Just like you would for a project module, where these files normally go to $PROJECT_PATH/Android.mk. In the example above, this would go to /home/user/ndk-modules/my-module/Android.mk</p>
+<p class="startli">NOTE: Any Application.mk file here will be ignored.</p>
+</li>
+<li>Any module that depends on your new module, would import by calling the import-module function. For example: <pre class="fragment"> $(call import-module,my-first-module)
+</pre></li>
+</ol>
+<p>Import modules <em>can</em> import other modules, but circular dependencies are not permitted and will be detected. Dependencies are transitive and the build system will compute all the things that need to be built for you.</p>
+<p>The NDK build system will not place object files or executables in your import module directory (they will all be placed under the project's build directory, e.g. $PROJECT_PATH/obj/).</p>
+<p>You can however distribute prebuilt binaries in your import module with the new PREBUILT_STATIC_LIBRARIES or PREBUILT_SHARED_LIBRARIES feature (see docs/ANDROID-MK.html).</p>
+<p>This makes it easy to package and redistribute your import module directory to third-parties.</p>
+<h2>Naming an import module</h2>
+<p>It is important to understand a few things related to the naming of your import module:</p>
+<ul>
+<li><p class="startli">What 'import-module' does is really search for a file named Android.mk using the list provided by NDK_MODULE_PATH, then include while performing very little bit of house-keeping.</p>
+<p class="startli">Your imported Android.mk can define any number of modules, with any name. As a consequence, there is no direct relationship between &lt;name&gt; in the following line: </p>
+<pre class="fragment"> $(call import-module,&lt;tag&gt;/&lt;name&gt;)
+</pre><p class="startli">And the names of the modules defined under &lt;tag&gt;/&lt;name&gt;/Android.mk.</p>
+<p class="startli">IN CASE OF DOUBT, KEEP IT SIMPLE!</p>
+<p class="startli">If you only plan to provide one import module, just name it like the base import directory.</p>
+<p class="startli">On the other hand, you may want to provide a static and a shared version of your module: use distinct names under the same top-level Android.mk. Consider the following build script: </p>
+<pre class="fragment">$NDK_MODULE_PATH/foo/bar/Android.mk:
+
+ LOCAL_PATH := $(call my-dir)
+
+ # Static version of the library is named 'bar_static'
+ include $(CLEAR_VARS)
+ LOCAL_MODULE := bar_static
+ LOCAL_SRC_FILES := bar.c
+ # Ensure our dependees can include &lt;bar.h&gt; too
+ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
+ include $(BUILD_STATIC_LIBRARY)
+
+ # Shared version of the library is named 'bar_shared'
+ LOCAL_MODULE := bar_shared
+ LOCAL_SRC_FILES := bar.c
+ LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
+ include $(BUILD_SHARED_LIBRARY)
+</pre><p class="startli">Another module would refer to it by doing the following: </p>
+<pre class="fragment"> 1. Import 'foo/bar', as in:
+
+ $(call import-module,foo/bar)
+
+ 2. To use the static library:
+
+ ...
+ LOCAL_STATIC_LIBRARIES := bar_static
+
+ 3. Or to use the shared library:
+
+ ...
+ LOCAL_SHARED_LIBRARIES := bar_shared
+</pre><ul>
+<li><p class="startli">The module namespace is flat, so try to give your modules names that are likely to not collide with other. Note that your can use LOCAL_MODULE_FILENAME to give the name of your module's binary file, independently from its LOCAL_MODULE (see docs/ANDROID-MK.html for definition and usage). For example: </p>
+<pre class="fragment"> include $(CLEAR_VARS)
+ LOCAL_MODULE := super_foo
+ LOCAL_MODULE_FILENAME := foo # will give libfoo.so
+ LOCAL_SRC_FILES := foo-src.c
+ LOCAL_CFLAGS := -DVOLUME=11
+ include $(BUILD_SHARED_LIBRARY)
+
+ include $(CLEAR_VARS)
+ LOCAL_MODULE := normal_foo
+ LOCAL_MODULE_FILENAME := foo # will also give libfoo.so
+ LOCAL_SRC_FILES := foo-src.c
+ include $(BUILD_SHARED_LIBRARY)
+</pre><p class="startli">Defines two modules named "super_foo" and "normal_foo" which both produce a shared library named 'libfoo.so'</p>
+<p class="startli">As a consequence, only one of them can be used by your project or a conflict will happen at build time. This allows you to select either the normal or optimized version in your NDK build scripts, while keeping the same simple loading instruction in your Java sources as: </p>
+<pre class="fragment"> static {
+ System.loadLibrary("foo");
+ }
+</pre></li>
+</ul>
+</li>
+</ul>
+<h2>Tips &amp; Recommendations</h2>
+<ul>
+<li>You don't need to import a module before you can reference it!</li>
+<li>Use import-module at the <em>end</em> of your Android.mk to avoid messing with the result of 'my-dir'. See the description of this function in docs/ANDROID-MK.html to understand why.</li>
+<li><p class="startli">It is <em>strongly</em> suggested to use a subdirectory for your import tags, that describes its origin, as in: </p>
+<pre class="fragment"> $(call import-module,gtk/glib)
+</pre><p class="startli">or something like: </p>
+<pre class="fragment"> $(call import-module,com.example/awesomelib)
+</pre><p class="startli">IMPORTANT: THE 'android' IMPORT DIRECTORY, AND ANY OF ITS SUB-DIRECTORIES IS <em>RESERVED</em> FOR NDK USAGE. FEEL FREE TO ORGANIZE YOUR OTHER IMPORT MODULES AS YOU WANT OTHERWISE. </p>
+</li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_4__additional__info__l_i_c_e_n_s_e_s.html b/docs/Programmers_Guide/html/md_4__additional__info__l_i_c_e_n_s_e_s.html
new file mode 100644
index 000000000..661306553
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_4__additional__info__l_i_c_e_n_s_e_s.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Licenses</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_4__additional__info__l_i_c_e_n_s_e_s.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Licenses </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>The content of the Android NDK is covered by various open-source licenses. See the copyright disclaimers in each respective file for details.</p>
+<p>Note that the public Android NDK release packages also contain prebuilt binaries for the compiler, linker, archiver, etc... The source code for the toolchain is available at android.googlesource.com (you can use the script under build/tools/download-toolchain-sources.sh to download it automatically).</p>
+<p>The prebuilt binaries are covered by either the GNU General Public License (GPL), or the GNU Lesser General Public License (LGPL). For details, see the files COPYING and COPYING.LIB under <code>build/prebuilt/&lt;system&gt;/&lt;toolchain&gt;</code>. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_4__additional__info__n_d_k-_d_e_p_e_n_d_s.html b/docs/Programmers_Guide/html/md_4__additional__info__n_d_k-_d_e_p_e_n_d_s.html
new file mode 100644
index 000000000..654d90831
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_4__additional__info__n_d_k-_d_e_p_e_n_d_s.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: &lt;code&gt;ndk-depends&lt;/code&gt; Tool</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_4__additional__info__n_d_k-_d_e_p_e_n_d_s.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title"><code>ndk-depends</code> Tool </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h2>Introduction</h2>
+<p>The <code>ndk-depends</code> tool that comes with this Android NDK allows you to dump the ELF dependencies of a given ELF shared library or executable.</p>
+<p>With the &ndash;print-java option, it can also be used to generate a Java source fragment to load your native library and its dependencies in the correct order (see example below).</p>
+<p>Use '<code>ndk-depends --help</code>' for complete usage information.</p>
+<p>This tool is designed to support:</p>
+<ul>
+<li>Either 32-bit or 64-bit ELF binaries.</li>
+<li>Either little-endian or big-endian ELF binaries.</li>
+<li>Unicode file paths, on Windows.</li>
+</ul>
+<p>Note: The Windows binary will NOT work with Cygwin paths !</p>
+<h2>Examples</h2>
+<ul>
+<li><code>ndk-depends path/to/libfoo.so</code> Dump all dependencies of libfoo.so, in topological order, so that any library listed in the result appears before any other library it depends on.</li>
+<li><code>ndk-depends --print-paths path/to/libfoo.so</code> Same as above, but also prints the path of the libraries on your host file system.</li>
+<li><code>ndk-depends -L some/other/path path/to/libfoo.so</code> Append 'some/other/path' to the search path for depending libraries when looking at the dependencies for 'libfoo.so'</li>
+<li><code>ndk-depends --print-direct path/to/libfoo.so</code> Only print the <em>direct</em> dependencies of libfoo.so, and nothing else, in the order they appear in the file.</li>
+<li><code>ndk-depends path/to/libfoo.so --print-java</code> Prints a Java source fragment that corresponds to the load of 'libfoo' with System.loadLibrary(). This lists all libraries in reverse order, and ignores system libraries (e.g. libc.so).</li>
+<li><code>ndk-depends path/to/libfoo.so --print-dot | dot -Tpng -o /tmp/graph.png</code> Prints the dependency graph as Graphviz .dot file, then generate a PNG image for it.</li>
+<li><code>ndk-depends --help</code> Print complete usage details.</li>
+</ul>
+<p>Let's assume your project has the several libraries: </p>
+<pre class="fragment"> libfoo.so -&gt; depends on libbar.so and libzoo.so
+ libbar.so -&gt; depends on the system's liblog.so
+ libzoo.so -&gt; depends on libbar.so
+</pre><p>Then '<code>ndk-depends libs/armeabi/libfoo.so</code>' will typically print: </p>
+<pre class="fragment"> libfoo.so
+ libzoo.so
+ libbar.so
+ liblog.so
+</pre><p>And '<code>ndk-depends --print-java libs/armeabi/libfoo.so</code>' will print: </p>
+<pre class="fragment"> System.loadLibrary("bar");
+ System.loadLibrary("zoo");
+ System.loadLibrary("foo");
+</pre><p>This is handy to avoid computing the reverse library order yourself for complex projects.</p>
+<p>For more details, see the output of '<code>ndk-depends --help</code>'. </p>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md_4__additional__info__s_y_s_t_e_m-_i_s_s_u_e_s.html b/docs/Programmers_Guide/html/md_4__additional__info__s_y_s_t_e_m-_i_s_s_u_e_s.html
new file mode 100644
index 000000000..3fea52f71
--- /dev/null
+++ b/docs/Programmers_Guide/html/md_4__additional__info__s_y_s_t_e_m-_i_s_s_u_e_s.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Android System Image Issues</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('md_4__additional__info__s_y_s_t_e_m-_i_s_s_u_e_s.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Android System Image Issues </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><p>This document contains a list of known issues in existing Android system images that NDK developers should be aware of.</p>
+<h2>Android 1.5 System Issues</h2>
+<p>The following issues correspond to the official Android 1.5 system images:</p>
+<h2>C++ Runtime Support</h2>
+<p>The Android C++ system runtime only provides very little support for C++ features (i.e. RTTI, exceptions and Standard Library). However, the NDK provides more advanced runtimes that can be linked into your application, if you need them.</p>
+<p>See docs/CPLUSPLUS-SUPPORT.html for more details.</p>
+<h2>C Library limitations</h2>
+<p>The C library doesn't try to implement every feature under the sun. Most notably, pthread cancellation is not supported. A detailed overview of the C library and its design is available in docs/system/libc/OVERVIEW.html</p>
+<h2>No SysV IPCs in C library</h2>
+<p>Unix System V Inter-Process Communication APIs (e.g. semget()) are intentionally not available from the C library, to avoid denial-of-service issues. See docs/system/libc/SYSV-IPC.html for details.</p>
+<h2>C Library bug: getservbyname() returns port number in incorrect order:</h2>
+<p>The Android 1.5 C library function getservbyname() returns the port number corresponding to a given network service in incorrect order. The function stores its result in a 'struct servent' structure, and the port number in its 's_port' field.</p>
+<p>The standard mandates that this value is stored in network order (and thus should be converted to host order through ntohs()). However, the 1.5 implementation is buggy and returns the number.</p>
+<p>This bug is fixed in later releases of the platform, and applications should not depend on the wrong behaviour in the future. Avoid using this function if possible; if this is not possible, try to use a small wrapper like the following one: </p>
+<pre class="fragment"> static struct servent*
+ my_getservbyname(const char* name, const char* proto)
+ {
+ static int has_bug = -1;
+ struct servent* ret;
+
+ if (has_bug &amp;lt; 0) {
+ ret = getservbyname("http",NULL);
+ has_bug = (ret == NULL || ret-&amp;gt;s_port == 80);
+ }
+
+ ret = getservbyname(name, proto);
+ if (has_bug)
+ ret-&amp;gt;s_port = htons(ret-&amp;gt;s_port);
+ }
+</pre><p>(the returned struct servent is thread-local and can be modified by the caller. It will be over-written on the next call to the function though).</p>
+<h2>Dynamic Linker limitations</h2>
+<p>The Android dynamic linker in 1.5 has many important limitations:</p>
+<ul>
+<li>No support for LD_LIBRARY_PATH, LD_PRELOAD, RTLD_LOCAL and many other options.</li>
+<li>Static C++ constructors in executables are called twice due to a bug in the C library initialization sequence. However, static C++ constructors in shared libraries are only called once.</li>
+<li>Static destructors are never called at the moment, either at program exit, or when dlclose() is called.</li>
+<li>dlerror() reporting is very limited and only provides a few generic error messages that make it difficult to know why a dynamic load/link operation failed. Most of the time, the culprit is a missing symbol.</li>
+<li>A bug prevents one application shared library from depending on another one. For example, if you build both libfoo.so and libbar.so for your application, and list libfoo.so as a dependency for libbar.so in bar/Android.mk (with LOCAL_SHARED_LIBRARIES := foo), then loading libbar.so will always fail, even if you have already loaded libfoo.so in your process. </li>
+</ul>
+</div></div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md__t_o_c.html b/docs/Programmers_Guide/html/md__t_o_c.html
new file mode 100644
index 000000000..2fa7af06c
--- /dev/null
+++ b/docs/Programmers_Guide/html/md__t_o_c.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: TOC</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">TOC </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><ul style="list-style: none; ">
+<li>
+<a href="./md_1__concepts__concepts.html">1. Concepts</a> <ul style="list-style: none; ">
+<li>
+<a href="./md_1__concepts__concepts.html#intro">Introduction</a> </li>
+<li>
+<a href="./md_1__concepts__concepts.html#hiw">How it works</a> <ul style="list-style: none; ">
+<li>
+<a href="./md_1__concepts__concepts.html#mc">Main components</a> </li>
+<li>
+<a href="./md_1__concepts__concepts.html#fl">Flow</a> </li>
+</ul>
+</li>
+</ul>
+</li>
+<li>
+<a href="./md_2__samples__samples.html">2. Samples</a> <ul style="list-style: none; ">
+<li>
+<a href="./md_2__samples__samples.html#intro">Introduction</a> </li>
+<li>
+<a href="./md_2__samples__samples.html#jni">Hello-JNI</a> </li>
+<li>
+<a href="./md_2__samples__samples.html#na">Native Activity</a> </li>
+<li>
+<a href="./md_2__samples__samples.html#tea">Teapot</a> </li>
+</ul>
+</li>
+<li>
+<a href="./md_3__key__topics__key__topics.html">3. Key Topics</a> <ul style="list-style: none; ">
+<li>
+Building <ul style="list-style: none; ">
+<li>
+<a href="././">ndk-build</a> </li>
+<li>
+<a href="././">Android.mk</a> </li>
+<li>
+<a href="././">Application.mk</a> </li>
+<li>
+<a href="././">Standalone toolchain</a> </li>
+</ul>
+</li>
+<li>
+<a href="././">Native Activity</a> </li>
+<li>
+CPU support <ul style="list-style: none; ">
+<li>
+<a href="././">Supported ABIs</a> </li>
+<li>
+<a href="././">Neon</a> </li>
+<li>
+<a href="././">Mips</a> </li>
+<li>
+<a href="././">x86</a> </li>
+<li>
+<a href="././">CPU Features</a> </li>
+</ul>
+</li>
+<li>
+Library support <ul style="list-style: none; ">
+<li>
+<a href="././">CPLUSPLUS</a> </li>
+<li>
+<a href="././">STABLE-APIs</a> </li>
+<li>
+<a href="././">Import-Module</a> </li>
+<li>
+<a href="././">Prebuilts</a> </li>
+</ul>
+</li>
+<li>
+Debugging <ul style="list-style: none; ">
+<li>
+<a href="././">NDK-GDB</a> </li>
+<li>
+<a href="././">NDK-Stack</a> </li>
+</ul>
+</li>
+</ul>
+</li>
+<li>
+<a href="././">4. Additional Information</a> <ul style="list-style: none; ">
+<li>
+<a href="././">Atomics</a> </li>
+<li>
+<a href="././">Import-Module</a> </li>
+<li>
+<a href="././">NDK-Depends tool</a> </li>
+<li>
+<a href="././">System Issues</a> </li>
+</ul>
+</li>
+</ul>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jun 13 2014 21:49:55 for NDK Programmer&#39;s Guide by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/md__t_o_c_new.html b/docs/Programmers_Guide/html/md__t_o_c_new.html
new file mode 100644
index 000000000..37909695e
--- /dev/null
+++ b/docs/Programmers_Guide/html/md__t_o_c_new.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: TOC_new</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">TOC_new </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><ul style="list-style: none; ">
+<li>
+<a href="./md_1__concepts__concepts.html">1. Concepts</a> <ul style="list-style: none; ">
+<li>
+Introduction </li>
+<li>
+How it works </li>
+</ul>
+</li>
+<li>
+<a href="./md_2__samples__samples.html">2. Samples</a> <ul style="list-style: none; ">
+<li>
+Introduction </li>
+<li>
+Hello-JNI </li>
+<li>
+Native Activity </li>
+<li>
+Teapot </li>
+</ul>
+</li>
+<li>
+<a href="./md_3__key__topics__key__topics.html">3. Key Topics</a> <ul style="list-style: none; ">
+<li>
+Building </li>
+<li>
+Native Activity </li>
+<li>
+CPU support </li>
+<li>
+Library support </li>
+<li>
+Debugging </li>
+</ul>
+</li>
+<li>
+<a href="./md_4__additional__info__additional__info.html">4. Additional Information</a> <ul style="list-style: none; ">
+<li>
+Atomics </li>
+<li>
+Import-Module </li>
+<li>
+NDK-Depends tool </li>
+<li>
+System Issues </li>
+</ul>
+</li>
+</ul>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Sat Jun 14 2014 11:14:23 for NDK Programmer&#39;s Guide by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.5
+</small></address>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/nav_f.png b/docs/Programmers_Guide/html/nav_f.png
new file mode 100644
index 000000000..72a58a529
--- /dev/null
+++ b/docs/Programmers_Guide/html/nav_f.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/nav_g.png b/docs/Programmers_Guide/html/nav_g.png
new file mode 100644
index 000000000..2093a237a
--- /dev/null
+++ b/docs/Programmers_Guide/html/nav_g.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/nav_h.png b/docs/Programmers_Guide/html/nav_h.png
new file mode 100644
index 000000000..33389b101
--- /dev/null
+++ b/docs/Programmers_Guide/html/nav_h.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/navtree.css b/docs/Programmers_Guide/html/navtree.css
new file mode 100644
index 000000000..3b16de13b
--- /dev/null
+++ b/docs/Programmers_Guide/html/navtree.css
@@ -0,0 +1,142 @@
+#nav-tree .children_ul {
+ margin:0;
+ padding:4px;
+}
+
+#nav-tree ul {
+ list-style:none outside none;
+ margin:0px;
+ padding:0px;
+}
+
+#nav-tree li {
+ white-space:nowrap;
+ margin:0px;
+ padding:0px;
+}
+
+#nav-tree .plus {
+ margin:0px;
+}
+
+#nav-tree .selected {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
+
+#nav-tree img {
+ margin:0px;
+ padding:0px;
+ border:0px;
+ vertical-align: middle;
+}
+
+#nav-tree a {
+ text-decoration:none;
+ padding:0px;
+ margin:0px;
+ outline:none;
+}
+
+#nav-tree .label {
+ margin:0px;
+ padding:0px;
+ font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+#nav-tree .label a {
+ padding:2px;
+}
+
+#nav-tree .selected a {
+ text-decoration:none;
+ color:#fff;
+}
+
+#nav-tree .children_ul {
+ margin:0px;
+ padding:0px;
+}
+
+#nav-tree .item {
+ margin:0px;
+ padding:0px;
+}
+
+#nav-tree {
+ padding: 0px 0px;
+ background-color: #FAFAFF;
+ font-size:14px;
+ overflow:auto;
+}
+
+#doc-content {
+ overflow:auto;
+ display:block;
+ padding:0px;
+ margin:0px;
+ -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#side-nav {
+ padding:0 6px 0 0;
+ margin: 0px;
+ display:block;
+ position: absolute;
+ left: 0px;
+ width: 250px;
+}
+
+.ui-resizable .ui-resizable-handle {
+ display:block;
+}
+
+.ui-resizable-e {
+ background:url("ftv2splitbar.png") repeat scroll right center transparent;
+ cursor:e-resize;
+ height:100%;
+ right:0;
+ top:0;
+ width:6px;
+}
+
+.ui-resizable-handle {
+ display:none;
+ font-size:0.1px;
+ position:absolute;
+ z-index:1;
+}
+
+#nav-tree-contents {
+ margin: 6px 0px 0px 0px;
+}
+
+#nav-tree {
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#nav-sync {
+ position:absolute;
+ top:5px;
+ right:24px;
+ z-index:0;
+}
+
+#nav-sync img {
+ opacity:0.3;
+}
+
+#nav-sync img:hover {
+ opacity:0.9;
+}
+
+@media print
+{
+ #nav-tree { display: none; }
+ div.ui-resizable-handle { display: none; position: relative; }
+}
diff --git a/docs/Programmers_Guide/html/navtree.js b/docs/Programmers_Guide/html/navtree.js
new file mode 100644
index 000000000..83af4d67c
--- /dev/null
+++ b/docs/Programmers_Guide/html/navtree.js
@@ -0,0 +1,559 @@
+var NAVTREE =
+[
+ [ "NDK Programmer's Guide", "index.html", [
+ [ "Concepts", "md_1__concepts__concepts.html", null ],
+ [ "- Before Beginning", "md_1__concepts__concepts.html#bb", null ],
+ [ "- Introduction", "md_1__concepts__concepts.html#intro", null ],
+ [ "- How it Works", "md_1__concepts__concepts.html#hiw", null ],
+ [ "- Native Activities and Applications", "md_1__concepts__concepts.html#naa", null ],
+ [ "Samples", "md_2__samples__samples.html", null ],
+ [ "- hello-jni", "md_2__samples_sample--hellojni.html", null ],
+ [ "- native-activity", "md_2__samples_sample--nativeactivity.html", null ],
+ [ "- Teapot", "md_2__samples_samples-teapot.html", null ],
+ [ "Building", "md_3__key__topics__building_building.html", null ],
+ [ "- ndk-build", "md_3__key__topics__building__chapter_1-section_8_ndk-build.html", null ],
+ [ "- Android.mk", "md_3__key__topics__building__chapter_1-section_8__android_8mk.html", null ],
+ [ "- Application.mk", "md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html", null ],
+ [ "- Standalone Toolchain", "md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html", null ],
+ [ "Debugging", "md_3__key__topics__debugging_debugging.html", null ],
+ [ "- ndk-gdb and ndk-gdb-py", "md_3__key__topics__debugging__n_d_k-_g_d_b.html", null ],
+ [ "- ndk-stack", "md_3__key__topics__debugging__n_d_k-_s_t_a_c_k.html", null ],
+ [ "Architectures and CPUs", "md_3__key__topics__c_p_u__support__instruction_sets_and__c_p_us.html", null ],
+ [ "- ABI Management", "md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html", null ],
+ [ "- Neon", "md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html", null ],
+ [ "- Mips", "md_3__key__topics__c_p_u__support__c_p_u-_m_i_p_s.html", null ],
+ [ "- x86", "md_3__key__topics__c_p_u__support__c_p_u-_x86.html", null ],
+ [ "- x86-64", "md_3__key__topics__c_p_u__support__c_p_u-_x86-64.html", null ],
+ [ "- CPU Features", "md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html", null ],
+ [ "Libraries", "md_3__key__topics__libraries_libraries.html", null ],
+ [ "- Stable APIs", "md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html", null ],
+ [ "- C++ Support", "md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html", null ],
+ [ "- Prebuilt Libraries", "md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html", null ],
+ [ "Additional Information", "md_4__additional__info__additional__info.html", null ],
+ [ "- Atomics", "md_4__additional__info__a_n_d_r_o_i_d-_a_t_o_m_i_c_s.html", null ],
+ [ "- Importing Modules (Sharing Code Made Easy)", "md_4__additional__info__i_m_p_o_r_t-_m_o_d_u_l_e.html", null ],
+ [ "- ndk-depends", "md_4__additional__info__n_d_k-_d_e_p_e_n_d_s.html", null ],
+ [ "- Android System Image Issues", "md_4__additional__info__s_y_s_t_e_m-_i_s_s_u_e_s.html", null ],
+ [ "- Licenses", "md_4__additional__info__l_i_c_e_n_s_e_s.html", null ]
+ ] ]
+];
+
+var NAVTREEINDEX =
+[
+"index.html"
+];
+
+var SYNCONMSG = 'click to disable panel synchronisation';
+var SYNCOFFMSG = 'click to enable panel synchronisation';
+var SYNCONMSG = 'click to disable panel synchronisation';
+var SYNCOFFMSG = 'click to enable panel synchronisation';
+var navTreeSubIndices = new Array();
+
+function getData(varName)
+{
+ var i = varName.lastIndexOf('/');
+ var n = i>=0 ? varName.substring(i+1) : varName;
+ return eval(n.replace(/\-/g,'_'));
+}
+
+function stripPath(uri)
+{
+ return uri.substring(uri.lastIndexOf('/')+1);
+}
+
+function stripPath2(uri)
+{
+ var i = uri.lastIndexOf('/');
+ var s = uri.substring(i+1);
+ var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/);
+ return m ? uri.substring(i-6) : s;
+}
+
+function localStorageSupported()
+{
+ try {
+ return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem;
+ }
+ catch(e) {
+ return false;
+ }
+}
+
+
+function storeLink(link)
+{
+ if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) {
+ window.localStorage.setItem('navpath',link);
+ }
+}
+
+function deleteLink()
+{
+ if (localStorageSupported()) {
+ window.localStorage.setItem('navpath','');
+ }
+}
+
+function cachedLink()
+{
+ if (localStorageSupported()) {
+ return window.localStorage.getItem('navpath');
+ } else {
+ return '';
+ }
+}
+
+function getScript(scriptName,func,show)
+{
+ var head = document.getElementsByTagName("head")[0];
+ var script = document.createElement('script');
+ script.id = scriptName;
+ script.type = 'text/javascript';
+ script.onload = func;
+ script.src = scriptName+'.js';
+ if ($.browser.msie && $.browser.version<=8) {
+ // script.onload does not work with older versions of IE
+ script.onreadystatechange = function() {
+ if (script.readyState=='complete' || script.readyState=='loaded') {
+ func(); if (show) showRoot();
+ }
+ }
+ }
+ head.appendChild(script);
+}
+
+function createIndent(o,domNode,node,level)
+{
+ var level=-1;
+ var n = node;
+ while (n.parentNode) { level++; n=n.parentNode; }
+ if (node.childrenData) {
+ var imgNode = document.createElement("img");
+ imgNode.style.paddingLeft=(16*level).toString()+'px';
+ imgNode.width = 16;
+ imgNode.height = 22;
+ imgNode.border = 0;
+ node.plus_img = imgNode;
+ node.expandToggle = document.createElement("a");
+ node.expandToggle.href = "javascript:void(0)";
+ node.expandToggle.onclick = function() {
+ if (node.expanded) {
+ $(node.getChildrenUL()).slideUp("fast");
+ node.plus_img.src = node.relpath+"ftv2pnode.png";
+ node.expanded = false;
+ } else {
+ expandNode(o, node, false, false);
+ }
+ }
+ node.expandToggle.appendChild(imgNode);
+ domNode.appendChild(node.expandToggle);
+ imgNode.src = node.relpath+"ftv2pnode.png";
+ } else {
+ var span = document.createElement("span");
+ span.style.display = 'inline-block';
+ span.style.width = 16*(level+1)+'px';
+ span.style.height = '22px';
+ span.innerHTML = '&nbsp;';
+ domNode.appendChild(span);
+ }
+}
+
+var animationInProgress = false;
+
+function gotoAnchor(anchor,aname,updateLocation)
+{
+ var pos, docContent = $('#doc-content');
+ if (anchor.parent().attr('class')=='memItemLeft' ||
+ anchor.parent().attr('class')=='fieldtype' ||
+ anchor.parent().is(':header'))
+ {
+ pos = anchor.parent().position().top;
+ } else if (anchor.position()) {
+ pos = anchor.position().top;
+ }
+ if (pos) {
+ var dist = Math.abs(Math.min(
+ pos-docContent.offset().top,
+ docContent[0].scrollHeight-
+ docContent.height()-docContent.scrollTop()));
+ animationInProgress=true;
+ docContent.animate({
+ scrollTop: pos + docContent.scrollTop() - docContent.offset().top
+ },Math.max(50,Math.min(500,dist)),function(){
+ if (updateLocation) window.location.href=aname;
+ animationInProgress=false;
+ });
+ }
+}
+
+function newNode(o, po, text, link, childrenData, lastNode)
+{
+ var node = new Object();
+ node.children = Array();
+ node.childrenData = childrenData;
+ node.depth = po.depth + 1;
+ node.relpath = po.relpath;
+ node.isLast = lastNode;
+
+ node.li = document.createElement("li");
+ po.getChildrenUL().appendChild(node.li);
+ node.parentNode = po;
+
+ node.itemDiv = document.createElement("div");
+ node.itemDiv.className = "item";
+
+ node.labelSpan = document.createElement("span");
+ node.labelSpan.className = "label";
+
+ createIndent(o,node.itemDiv,node,0);
+ node.itemDiv.appendChild(node.labelSpan);
+ node.li.appendChild(node.itemDiv);
+
+ var a = document.createElement("a");
+ node.labelSpan.appendChild(a);
+ node.label = document.createTextNode(text);
+ node.expanded = false;
+ a.appendChild(node.label);
+ if (link) {
+ var url;
+ if (link.substring(0,1)=='^') {
+ url = link.substring(1);
+ link = url;
+ } else {
+ url = node.relpath+link;
+ }
+ a.className = stripPath(link.replace('#',':'));
+ if (link.indexOf('#')!=-1) {
+ var aname = '#'+link.split('#')[1];
+ var srcPage = stripPath($(location).attr('pathname'));
+ var targetPage = stripPath(link.split('#')[0]);
+ a.href = srcPage!=targetPage ? url : "javascript:void(0)";
+ a.onclick = function(){
+ storeLink(link);
+ if (!$(a).parent().parent().hasClass('selected'))
+ {
+ $('.item').removeClass('selected');
+ $('.item').removeAttr('id');
+ $(a).parent().parent().addClass('selected');
+ $(a).parent().parent().attr('id','selected');
+ }
+ var anchor = $(aname);
+ gotoAnchor(anchor,aname,true);
+ };
+ } else {
+ a.href = url;
+ a.onclick = function() { storeLink(link); }
+ }
+ } else {
+ if (childrenData != null)
+ {
+ a.className = "nolink";
+ a.href = "javascript:void(0)";
+ a.onclick = node.expandToggle.onclick;
+ }
+ }
+
+ node.childrenUL = null;
+ node.getChildrenUL = function() {
+ if (!node.childrenUL) {
+ node.childrenUL = document.createElement("ul");
+ node.childrenUL.className = "children_ul";
+ node.childrenUL.style.display = "none";
+ node.li.appendChild(node.childrenUL);
+ }
+ return node.childrenUL;
+ };
+
+ return node;
+}
+
+function showRoot()
+{
+ var headerHeight = $("#top").height();
+ var footerHeight = $("#nav-path").height();
+ var windowHeight = $(window).height() - headerHeight - footerHeight;
+ (function (){ // retry until we can scroll to the selected item
+ try {
+ var navtree=$('#nav-tree');
+ navtree.scrollTo('#selected',0,{offset:-windowHeight/2});
+ } catch (err) {
+ setTimeout(arguments.callee, 0);
+ }
+ })();
+}
+
+function expandNode(o, node, imm, showRoot)
+{
+ if (node.childrenData && !node.expanded) {
+ if (typeof(node.childrenData)==='string') {
+ var varName = node.childrenData;
+ getScript(node.relpath+varName,function(){
+ node.childrenData = getData(varName);
+ expandNode(o, node, imm, showRoot);
+ }, showRoot);
+ } else {
+ if (!node.childrenVisited) {
+ getNode(o, node);
+ } if (imm || ($.browser.msie && $.browser.version>8)) {
+ // somehow slideDown jumps to the start of tree for IE9 :-(
+ $(node.getChildrenUL()).show();
+ } else {
+ $(node.getChildrenUL()).slideDown("fast");
+ }
+ if (node.isLast) {
+ node.plus_img.src = node.relpath+"ftv2mlastnode.png";
+ } else {
+ node.plus_img.src = node.relpath+"ftv2mnode.png";
+ }
+ node.expanded = true;
+ }
+ }
+}
+
+function glowEffect(n,duration)
+{
+ n.addClass('glow').delay(duration).queue(function(next){
+ $(this).removeClass('glow');next();
+ });
+}
+
+function highlightAnchor()
+{
+ var aname = $(location).attr('hash');
+ var anchor = $(aname);
+ if (anchor.parent().attr('class')=='memItemLeft'){
+ var rows = $('.memberdecls tr[class$="'+
+ window.location.hash.substring(1)+'"]');
+ glowEffect(rows.children(),300); // member without details
+ } else if (anchor.parents().slice(2).prop('tagName')=='TR') {
+ glowEffect(anchor.parents('div.memitem'),1000); // enum value
+ } else if (anchor.parent().attr('class')=='fieldtype'){
+ glowEffect(anchor.parent().parent(),1000); // struct field
+ } else if (anchor.parent().is(":header")) {
+ glowEffect(anchor.parent(),1000); // section header
+ } else {
+ glowEffect(anchor.next(),1000); // normal member
+ }
+ gotoAnchor(anchor,aname,false);
+}
+
+function selectAndHighlight(hash,n)
+{
+ var a;
+ if (hash) {
+ var link=stripPath($(location).attr('pathname'))+':'+hash.substring(1);
+ a=$('.item a[class$="'+link+'"]');
+ }
+ if (a && a.length) {
+ a.parent().parent().addClass('selected');
+ a.parent().parent().attr('id','selected');
+ highlightAnchor();
+ } else if (n) {
+ $(n.itemDiv).addClass('selected');
+ $(n.itemDiv).attr('id','selected');
+ }
+ if ($('#nav-tree-contents .item:first').hasClass('selected')) {
+ $('#nav-sync').css('top','30px');
+ } else {
+ $('#nav-sync').css('top','5px');
+ }
+ showRoot();
+}
+
+function showNode(o, node, index, hash)
+{
+ if (node && node.childrenData) {
+ if (typeof(node.childrenData)==='string') {
+ var varName = node.childrenData;
+ getScript(node.relpath+varName,function(){
+ node.childrenData = getData(varName);
+ showNode(o,node,index,hash);
+ },true);
+ } else {
+ if (!node.childrenVisited) {
+ getNode(o, node);
+ }
+ $(node.getChildrenUL()).css({'display':'block'});
+ if (node.isLast) {
+ node.plus_img.src = node.relpath+"ftv2mlastnode.png";
+ } else {
+ node.plus_img.src = node.relpath+"ftv2mnode.png";
+ }
+ node.expanded = true;
+ var n = node.children[o.breadcrumbs[index]];
+ if (index+1<o.breadcrumbs.length) {
+ showNode(o,n,index+1,hash);
+ } else {
+ if (typeof(n.childrenData)==='string') {
+ var varName = n.childrenData;
+ getScript(n.relpath+varName,function(){
+ n.childrenData = getData(varName);
+ node.expanded=false;
+ showNode(o,node,index,hash); // retry with child node expanded
+ },true);
+ } else {
+ var rootBase = stripPath(o.toroot.replace(/\..+$/, ''));
+ if (rootBase=="index" || rootBase=="pages" || rootBase=="search") {
+ expandNode(o, n, true, true);
+ }
+ selectAndHighlight(hash,n);
+ }
+ }
+ }
+ } else {
+ selectAndHighlight(hash);
+ }
+}
+
+function removeToInsertLater(element) {
+ var parentNode = element.parentNode;
+ var nextSibling = element.nextSibling;
+ parentNode.removeChild(element);
+ return function() {
+ if (nextSibling) {
+ parentNode.insertBefore(element, nextSibling);
+ } else {
+ parentNode.appendChild(element);
+ }
+ };
+}
+
+function getNode(o, po)
+{
+ var insertFunction = removeToInsertLater(po.li);
+ po.childrenVisited = true;
+ var l = po.childrenData.length-1;
+ for (var i in po.childrenData) {
+ var nodeData = po.childrenData[i];
+ po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],
+ i==l);
+ }
+ insertFunction();
+}
+
+function gotoNode(o,subIndex,root,hash,relpath)
+{
+ var nti = navTreeSubIndices[subIndex][root+hash];
+ o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]);
+ if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index
+ navTo(o,NAVTREE[0][1],"",relpath);
+ $('.item').removeClass('selected');
+ $('.item').removeAttr('id');
+ }
+ if (o.breadcrumbs) {
+ o.breadcrumbs.unshift(0); // add 0 for root node
+ showNode(o, o.node, 0, hash);
+ }
+}
+
+function navTo(o,root,hash,relpath)
+{
+ var link = cachedLink();
+ if (link) {
+ var parts = link.split('#');
+ root = parts[0];
+ if (parts.length>1) hash = '#'+parts[1];
+ else hash='';
+ }
+ if (hash.match(/^#l\d+$/)) {
+ var anchor=$('a[name='+hash.substring(1)+']');
+ glowEffect(anchor.parent(),1000); // line number
+ hash=''; // strip line number anchors
+ //root=root.replace(/_source\./,'.'); // source link to doc link
+ }
+ var url=root+hash;
+ var i=-1;
+ while (NAVTREEINDEX[i+1]<=url) i++;
+ if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index
+ if (navTreeSubIndices[i]) {
+ gotoNode(o,i,root,hash,relpath)
+ } else {
+ getScript(relpath+'navtreeindex'+i,function(){
+ navTreeSubIndices[i] = eval('NAVTREEINDEX'+i);
+ if (navTreeSubIndices[i]) {
+ gotoNode(o,i,root,hash,relpath);
+ }
+ },true);
+ }
+}
+
+function showSyncOff(n,relpath)
+{
+}
+
+function showSyncOn(n,relpath)
+{
+}
+
+function toggleSyncButton(relpath)
+{
+ var navSync = $('#nav-sync');
+ if (navSync.hasClass('sync')) {
+ navSync.removeClass('sync');
+ showSyncOff(navSync,relpath);
+ storeLink(stripPath2($(location).attr('pathname'))+$(location).attr('hash'));
+ } else {
+ navSync.addClass('sync');
+ showSyncOn(navSync,relpath);
+ deleteLink();
+ }
+}
+
+function initNavTree(toroot,relpath)
+{
+ var o = new Object();
+ o.toroot = toroot;
+ o.node = new Object();
+ o.node.li = document.getElementById("nav-tree-contents");
+ o.node.childrenData = NAVTREE;
+ o.node.children = new Array();
+ o.node.childrenUL = document.createElement("ul");
+ o.node.getChildrenUL = function() { return o.node.childrenUL; };
+ o.node.li.appendChild(o.node.childrenUL);
+ o.node.depth = 0;
+ o.node.relpath = relpath;
+ o.node.expanded = false;
+ o.node.isLast = true;
+ o.node.plus_img = document.createElement("img");
+ o.node.plus_img.src = relpath+"ftv2pnode.png";
+ o.node.plus_img.width = 16;
+ o.node.plus_img.height = 22;
+
+ if (localStorageSupported()) {
+ var navSync = $('#nav-sync');
+ if (cachedLink()) {
+ showSyncOff(navSync,relpath);
+ navSync.removeClass('sync');
+ } else {
+ showSyncOn(navSync,relpath);
+ }
+ navSync.click(function(){ toggleSyncButton(relpath); });
+ }
+
+ $(window).load(function(){
+ navTo(o,toroot,window.location.hash,relpath);
+ showRoot();
+ });
+
+ $(window).bind('hashchange', function(){
+ if (window.location.hash && window.location.hash.length>1){
+ var a;
+ if ($(location).attr('hash')){
+ var clslink=stripPath($(location).attr('pathname'))+':'+
+ $(location).attr('hash').substring(1);
+ a=$('.item a[class$="'+clslink+'"]');
+ }
+ if (a==null || !$(a).parent().parent().hasClass('selected')){
+ $('.item').removeClass('selected');
+ $('.item').removeAttr('id');
+ }
+ var link=stripPath2($(location).attr('pathname'));
+ navTo(o,link,$(location).attr('hash'),relpath);
+ } else if (!animationInProgress) {
+ $('#doc-content').scrollTop(0);
+ $('.item').removeClass('selected');
+ $('.item').removeAttr('id');
+ navTo(o,toroot,window.location.hash,relpath);
+ }
+ })
+}
diff --git a/docs/Programmers_Guide/html/navtreeindex0.js b/docs/Programmers_Guide/html/navtreeindex0.js
new file mode 100644
index 000000000..3cae3bdf1
--- /dev/null
+++ b/docs/Programmers_Guide/html/navtreeindex0.js
@@ -0,0 +1,35 @@
+var NAVTREEINDEX0 =
+{
+"index.html":[],
+"md_1__concepts__concepts.html":[0],
+"md_2__samples__samples.html":[5],
+"md_2__samples_sample--hellojni.html":[6],
+"md_2__samples_sample--nativeactivity.html":[7],
+"md_2__samples_samples-teapot.html":[8],
+"md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html":[12],
+"md_3__key__topics__building__chapter_1-section_8__android_8mk.html":[11],
+"md_3__key__topics__building__chapter_1-section_8_ndk-build.html":[10],
+"md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html":[13],
+"md_3__key__topics__building_building.html":[9],
+"md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html":[19],
+"md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html":[23],
+"md_3__key__topics__c_p_u__support__c_p_u-_m_i_p_s.html":[20],
+"md_3__key__topics__c_p_u__support__c_p_u-_x86-64.html":[22],
+"md_3__key__topics__c_p_u__support__c_p_u-_x86.html":[21],
+"md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html":[18],
+"md_3__key__topics__c_p_u__support__instruction_sets_and__c_p_us.html":[17],
+"md_3__key__topics__debugging__n_d_k-_g_d_b.html":[15],
+"md_3__key__topics__debugging__n_d_k-_s_t_a_c_k.html":[16],
+"md_3__key__topics__debugging_debugging.html":[14],
+"md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html":[26],
+"md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html":[27],
+"md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html":[25],
+"md_3__key__topics__libraries_libraries.html":[24],
+"md_4__additional__info__a_n_d_r_o_i_d-_a_t_o_m_i_c_s.html":[29],
+"md_4__additional__info__additional__info.html":[28],
+"md_4__additional__info__i_m_p_o_r_t-_m_o_d_u_l_e.html":[30],
+"md_4__additional__info__l_i_c_e_n_s_e_s.html":[33],
+"md_4__additional__info__n_d_k-_d_e_p_e_n_d_s.html":[31],
+"md_4__additional__info__s_y_s_t_e_m-_i_s_s_u_e_s.html":[32],
+"pages.html":[]
+};
diff --git a/docs/Programmers_Guide/html/open.png b/docs/Programmers_Guide/html/open.png
new file mode 100644
index 000000000..30f75c7ef
--- /dev/null
+++ b/docs/Programmers_Guide/html/open.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/pages.html b/docs/Programmers_Guide/html/pages.html
new file mode 100644
index 000000000..4b9da3b27
--- /dev/null
+++ b/docs/Programmers_Guide/html/pages.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.5"/>
+<title>NDK Programmer&#39;s Guide: Related Pages</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+ $(window).load(resizeHeight);
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">NDK Programmer&#39;s Guide
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.5 -->
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('pages.html','');});
+</script>
+<div id="doc-content">
+<div class="header">
+ <div class="headertitle">
+<div class="title">Related Pages</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_1__concepts__concepts.html" target="_self">Concepts</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_2__samples_sample--hellojni.html" target="_self">hello-jni</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_2__samples_sample--nativeactivity.html" target="_self">native-activity</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_2__samples_samples-teapot.html" target="_self">Teapot</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_2__samples__samples.html" target="_self">Samples</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__building__a_p_p_l_i_c_a_t_i_o_n-_m_k.html" target="_self">&lt;code&gt;Application.mk&lt;/code&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_6_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__building_building.html" target="_self">Building</a></td><td class="desc"></td></tr>
+<tr id="row_7_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__building__chapter_1-section_8__android_8mk.html" target="_self">&lt;code&gt;Android.mk&lt;/code&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__building__chapter_1-section_8_ndk-build.html" target="_self">ndk-build</a></td><td class="desc"></td></tr>
+<tr id="row_9_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__building__s_t_a_n_d_a_l_o_n_e-_t_o_o_l_c_h_a_i_n.html" target="_self">Standalone Toolchain</a></td><td class="desc"></td></tr>
+<tr id="row_10_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is.html" target="_self">ABI Management</a></td><td class="desc"></td></tr>
+<tr id="row_11_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__c_p_u__support__c_p_u-_a_r_m-_n_e_o_n.html" target="_self">Neon</a></td><td class="desc"></td></tr>
+<tr id="row_12_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__c_p_u__support__c_p_u-_f_e_a_t_u_r_e_s.html" target="_self">CPU Features</a></td><td class="desc"></td></tr>
+<tr id="row_13_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__c_p_u__support__c_p_u-_m_i_p_s.html" target="_self">Mips</a></td><td class="desc"></td></tr>
+<tr id="row_14_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__c_p_u__support__c_p_u-_x86-64.html" target="_self">x86-64</a></td><td class="desc"></td></tr>
+<tr id="row_15_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__c_p_u__support__c_p_u-_x86.html" target="_self">x86</a></td><td class="desc"></td></tr>
+<tr id="row_16_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__c_p_u__support__instruction_sets_and__c_p_us.html" target="_self">Architectures and CPUs</a></td><td class="desc"></td></tr>
+<tr id="row_17_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__debugging_debugging.html" target="_self">Debugging</a></td><td class="desc"></td></tr>
+<tr id="row_18_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__debugging__n_d_k-_g_d_b.html" target="_self">&lt;code&gt;ndk-gdb&lt;/code&gt; and &lt;code&gt;ndk-gdb-py&lt;/code&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_19_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__debugging__n_d_k-_s_t_a_c_k.html" target="_self">&lt;code&gt;ndk-stack&lt;/code&gt;</a></td><td class="desc"></td></tr>
+<tr id="row_20_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__libraries__c_p_l_u_s_p_l_u_s-_s_u_p_p_o_r_t.html" target="_self">C++ Support</a></td><td class="desc"></td></tr>
+<tr id="row_21_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__libraries_libraries.html" target="_self">Libraries</a></td><td class="desc"></td></tr>
+<tr id="row_22_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__libraries__p_r_e_b_u_i_l_t_s.html" target="_self">Prebuilt Libraries</a></td><td class="desc"></td></tr>
+<tr id="row_23_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_3__key__topics__libraries__s_t_a_b_l_e-_a_p_i_s.html" target="_self">Stable APIs</a></td><td class="desc"></td></tr>
+<tr id="row_24_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_4__additional__info__additional__info.html" target="_self">Additional Information</a></td><td class="desc"></td></tr>
+<tr id="row_25_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_4__additional__info__a_n_d_r_o_i_d-_a_t_o_m_i_c_s.html" target="_self">Atomics</a></td><td class="desc"></td></tr>
+<tr id="row_26_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_4__additional__info__i_m_p_o_r_t-_m_o_d_u_l_e.html" target="_self">Importing Modules (Sharing Code Made Easy)</a></td><td class="desc"></td></tr>
+<tr id="row_27_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_4__additional__info__l_i_c_e_n_s_e_s.html" target="_self">Licenses</a></td><td class="desc"></td></tr>
+<tr id="row_28_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a class="el" href="md_4__additional__info__n_d_k-_d_e_p_e_n_d_s.html" target="_self">&lt;code&gt;ndk-depends&lt;/code&gt; Tool</a></td><td class="desc"></td></tr>
+<tr id="row_29_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a class="el" href="md_4__additional__info__s_y_s_t_e_m-_i_s_s_u_e_s.html" target="_self">Android System Image Issues</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="footer">Generated on Wed Jun 25 2014 00:51:19 for NDK Programmer&#39;s Guide by
+ <a href="http://www.doxygen.org/index.html">
+ <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.5 </li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/docs/Programmers_Guide/html/resize.js b/docs/Programmers_Guide/html/resize.js
new file mode 100644
index 000000000..2bb916900
--- /dev/null
+++ b/docs/Programmers_Guide/html/resize.js
@@ -0,0 +1,91 @@
+var cookie_namespace = 'doxygen';
+var sidenav,navtree,content,header;
+
+function readCookie(cookie)
+{
+ var myCookie = cookie_namespace+"_"+cookie+"=";
+ if (document.cookie)
+ {
+ var index = document.cookie.indexOf(myCookie);
+ if (index != -1)
+ {
+ var valStart = index + myCookie.length;
+ var valEnd = document.cookie.indexOf(";", valStart);
+ if (valEnd == -1)
+ {
+ valEnd = document.cookie.length;
+ }
+ var val = document.cookie.substring(valStart, valEnd);
+ return val;
+ }
+ }
+ return 0;
+}
+
+function writeCookie(cookie, val, expiration)
+{
+ if (val==undefined) return;
+ if (expiration == null)
+ {
+ var date = new Date();
+ date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week
+ expiration = date.toGMTString();
+ }
+ document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/";
+}
+
+function resizeWidth()
+{
+ var windowWidth = $(window).width() + "px";
+ var sidenavWidth = $(sidenav).outerWidth();
+ content.css({marginLeft:parseInt(sidenavWidth)+"px"});
+ writeCookie('width',sidenavWidth, null);
+}
+
+function restoreWidth(navWidth)
+{
+ var windowWidth = $(window).width() + "px";
+ content.css({marginLeft:parseInt(navWidth)+6+"px"});
+ sidenav.css({width:navWidth + "px"});
+}
+
+function resizeHeight()
+{
+ var headerHeight = header.outerHeight();
+ var footerHeight = footer.outerHeight();
+ var windowHeight = $(window).height() - headerHeight - footerHeight;
+ content.css({height:windowHeight + "px"});
+ navtree.css({height:windowHeight + "px"});
+ sidenav.css({height:windowHeight + "px",top: headerHeight+"px"});
+}
+
+function initResizable()
+{
+ header = $("#top");
+ sidenav = $("#side-nav");
+ content = $("#doc-content");
+ navtree = $("#nav-tree");
+ footer = $("#nav-path");
+ $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } });
+ $(window).resize(function() { resizeHeight(); });
+ var width = readCookie('width');
+ if (width) { restoreWidth(width); } else { resizeWidth(); }
+ resizeHeight();
+ var url = location.href;
+ var i=url.indexOf("#");
+ if (i>=0) window.location.hash=url.substr(i);
+ var _preventDefault = function(evt) { evt.preventDefault(); };
+ $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
+ $(document).bind('touchmove',function(e){
+ try {
+ var target = e.target;
+ while (target) {
+ if ($(target).css('-webkit-overflow-scrolling')=='touch') return;
+ target = target.parentNode;
+ }
+ e.preventDefault();
+ } catch(err) {
+ e.preventDefault();
+ }
+ });
+}
diff --git a/docs/Programmers_Guide/html/sync_off.png b/docs/Programmers_Guide/html/sync_off.png
new file mode 100644
index 000000000..3b443fc62
--- /dev/null
+++ b/docs/Programmers_Guide/html/sync_off.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/sync_on.png b/docs/Programmers_Guide/html/sync_on.png
new file mode 100644
index 000000000..e08320fb6
--- /dev/null
+++ b/docs/Programmers_Guide/html/sync_on.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/tab_a.png b/docs/Programmers_Guide/html/tab_a.png
new file mode 100644
index 000000000..3b725c41c
--- /dev/null
+++ b/docs/Programmers_Guide/html/tab_a.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/tab_b.png b/docs/Programmers_Guide/html/tab_b.png
new file mode 100644
index 000000000..e2b4a8638
--- /dev/null
+++ b/docs/Programmers_Guide/html/tab_b.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/tab_h.png b/docs/Programmers_Guide/html/tab_h.png
new file mode 100644
index 000000000..fd5cb7054
--- /dev/null
+++ b/docs/Programmers_Guide/html/tab_h.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/tab_s.png b/docs/Programmers_Guide/html/tab_s.png
new file mode 100644
index 000000000..ab478c95b
--- /dev/null
+++ b/docs/Programmers_Guide/html/tab_s.png
Binary files differ
diff --git a/docs/Programmers_Guide/html/tabs.css b/docs/Programmers_Guide/html/tabs.css
new file mode 100644
index 000000000..9cf578f23
--- /dev/null
+++ b/docs/Programmers_Guide/html/tabs.css
@@ -0,0 +1,60 @@
+.tabs, .tabs2, .tabs3 {
+ background-image: url('tab_b.png');
+ width: 100%;
+ z-index: 101;
+ font-size: 13px;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+.tabs2 {
+ font-size: 10px;
+}
+.tabs3 {
+ font-size: 9px;
+}
+
+.tablist {
+ margin: 0;
+ padding: 0;
+ display: table;
+}
+
+.tablist li {
+ float: left;
+ display: table-cell;
+ background-image: url('tab_b.png');
+ line-height: 36px;
+ list-style: none;
+}
+
+.tablist a {
+ display: block;
+ padding: 0 20px;
+ font-weight: bold;
+ background-image:url('tab_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color: #283A5D;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+ outline: none;
+}
+
+.tabs3 .tablist a {
+ padding: 0 10px;
+}
+
+.tablist a:hover {
+ background-image: url('tab_h.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+ text-decoration: none;
+}
+
+.tablist li.current a {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
diff --git a/docs/Start_Here.html b/docs/Start_Here.html
new file mode 100644
index 000000000..55063cb71
--- /dev/null
+++ b/docs/Start_Here.html
@@ -0,0 +1,171 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
+<style>
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote {
+ margin: 0;
+ padding: 0;
+}
+body {
+ font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", Arial, sans-serif;
+ font-size: 13px;
+ line-height: 18px;
+ color: #737373;
+ background-color: white;
+ margin: 10px 13px 10px 13px;
+}
+table {
+ margin: 10px 0 15px 0;
+ border-collapse: collapse;
+}
+td,th {
+ border: 1px solid #ddd;
+ padding: 3px 10px;
+}
+th {
+ padding: 5px 10px;
+}
+
+a {
+ color: #0069d6;
+}
+a:hover {
+ color: #0050a3;
+ text-decoration: none;
+}
+a img {
+ border: none;
+}
+p {
+ margin-bottom: 9px;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ color: #404040;
+ line-height: 36px;
+}
+h1 {
+ margin-bottom: 18px;
+ font-size: 30px;
+}
+h2 {
+ font-size: 24px;
+}
+h3 {
+ font-size: 18px;
+}
+h4 {
+ font-size: 16px;
+}
+h5 {
+ font-size: 14px;
+}
+h6 {
+ font-size: 13px;
+}
+hr {
+ margin: 0 0 19px;
+ border: 0;
+ border-bottom: 1px solid #ccc;
+}
+blockquote {
+ padding: 13px 13px 21px 15px;
+ margin-bottom: 18px;
+ font-family:georgia,serif;
+ font-style: italic;
+}
+blockquote:before {
+ content:"\201C";
+ font-size:40px;
+ margin-left:-10px;
+ font-family:georgia,serif;
+ color:#eee;
+}
+blockquote p {
+ font-size: 14px;
+ font-weight: 300;
+ line-height: 18px;
+ margin-bottom: 0;
+ font-style: italic;
+}
+code, pre {
+ font-family: Monaco, Andale Mono, Courier New, monospace;
+}
+code {
+ background-color: #fee9cc;
+ color: rgba(0, 0, 0, 0.75);
+ padding: 1px 3px;
+ font-size: 12px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+pre {
+ display: block;
+ padding: 14px;
+ margin: 0 0 18px;
+ line-height: 16px;
+ font-size: 11px;
+ border: 1px solid #d9d9d9;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+pre code {
+ background-color: #fff;
+ color:#737373;
+ font-size: 11px;
+ padding: 0;
+}
+sup {
+ font-size: 0.83em;
+ vertical-align: super;
+ line-height: 0;
+}
+* {
+ -webkit-print-color-adjust: exact;
+}
+@media screen and (min-width: 914px) {
+ body {
+ width: 854px;
+ margin:10px auto;
+ }
+}
+@media print {
+ body,code,pre code,h1,h2,h3,h4,h5,h6 {
+ color: black;
+ }
+ table, pre {
+ page-break-inside: avoid;
+ }
+}
+</style>
+<title>Native Development Kit ("NDK") Documentation</title>
+
+</head>
+<body>
+<h1>Native Development Kit ("NDK") Documentation</h1>
+
+<p>This directory contains the documentation for the NDK. Here, you'll find the following documents:</p>
+
+<ul>
+<li><a href="Getting_Started/html/index.html">Getting Started with the NDK</a></li>
+<li><a href="Programmers_Guide/html/index.html">NDK Programmer's Guide</a></li>
+<li>Additional documentation for libraries often used with the NDK</li>
+</ul>
+Copyright 2014, Google, Inc.
+All rights reserved.
+</body>
+</html>
diff --git a/docs/sidenav.html b/docs/sidenav.html
deleted file mode 100644
index 6dce96717..000000000
--- a/docs/sidenav.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<html>
-<body>
-
-<code>
-<h3>Android NDK Dev Guide</h3>
-<ul>
-<li><a href="OVERVIEW.html" target="content">Android NDK Overview</a></li>
-<li><a href="INSTALL.html" target="content">Installation Guide</a></li>
-</ul>
-
-<ul>
-<li><a href="DEVELOPMENT.html" target="content">Development</a></li>
-<li><a href="HOWTO.html" target="content">How To</a></li>
-<li><a href="ANDROID-MK.html" target="content">Android.mk File</a></li>
-<li><a href="APPLICATION-MK.html" target="content">Application.mk File</a></li>
-<li><a href="CPLUSPLUS-SUPPORT.html" target="content">C++ Support</a></li>
-<li><a href="CPU-ARCH-ABIS.html" target="content">CPU Arch ABIs</a></li>
-<li><a href="CPU-ARM-NEON.html" target="content">CPU ARM Neon</a></li>
-<li><a href="CPU-X86.html" target="content">CPU X86</a></li>
-<li><a href="CPU-MIPS.html" target="content">CPU MIPS</a></li>
-<li><a href="CPU-FEATURES.html" target="content">CPU Features</a></li>
-<li><a href="IMPORT-MODULE.html" target="content">Import Module</a></li>
-<li><a href="NATIVE-ACTIVITY.html" target="content">Native Activity</a></li>
-<li><a href="NDK-BUILD.html" target="content">NDK Build</a></li>
-<li><a href="NDK-DEPENDS.html" target="content">ndk-depends</a></li>
-<li><a href="NDK-GDB.html" target="content">NDK GDB</a></li>
-<li><a href="NDK-STACK.html" target="content">ndk-stack</a></li>
-<li><a href="PREBUILTS.html" target="content">Prebuilts</a></li>
-<li><a href="STABLE-APIS.html" target="content">Stable APIs</a></li>
-<li><a href="STANDALONE-TOOLCHAIN.html" target="content">Standalone Toolchain</a></li>
-</ul>
-
-<ul>
-<li><a href="system/libc/OVERVIEW.html" target="content">Bionic Overview</a></li>
-<li><a href="system/libc/SYSV-IPC.html" target="content">SYSV IPC</a></li>
-</ul>
-
-<ul>
-<li><a href="renderscript/index.html" target="content">RenderScript</a></li>
-</ul>
-
-<ul>
-<li><a href="CHANGES.html" target="content">NDK Changes</a></li>
-<li><a href="system/libc/CHANGES.html" target="content">Bionic Changes</a></li>
-<li><a href="SYSTEM-ISSUES.html" target="content">System Issues</a></li>
-<li><a href="LICENSES.html" target="content">Licenses</a></li>
-</ul>
-</code>
-
-</body>
-</html> \ No newline at end of file
diff --git a/docs/text/ANDROID-ATOMICS.text b/docs/text/ANDROID-ATOMICS.text
deleted file mode 100644
index f57365b4f..000000000
--- a/docs/text/ANDROID-ATOMICS.text
+++ /dev/null
@@ -1,67 +0,0 @@
-ANDROID ATOMICS OPERATIONS
-
-The problem:
-------------
-
-If your application native code was generated with a NDK release older than r7b
-and uses any of the following functions defined in the `<sys/atomics.h>`
-header:
-
-* `__atomic_cmpxchg`
-* `__atomic_inc`
-* `__atomic_dec`
-* `__atomic_swap`
-
-Then the corresponding machine code is not guaranteed to work properly on
-some multi-core Android ARM-based devices (x86 ones are not affected).
-
-The solution:
--------------
-
-The `<sys/atomics.h>` header has been updated in NDK r7b. Simply recompiling
-your _unmodified_ sources with this version of the NDK should be enough to
-completely eliminate the problem.
-
-If you can't use NDK r7b or later for some reason, read the section below.
-
-More details:
--------------
-
-The main issue is that the implementation of these functions, as provided
-by the C library, did not provide any associated memory barriers. This is
-by design, because the platform code that uses them does insert explicit
-barriers around these operations.
-
-The functions were only exposed through the NDK by mistake, they were not
-supposed to be used from applications. Any application code that use them
-without inserting its own barriers may experiment incorrect behaviour,
-which can result in bugs that are very hard to reproduce and diagnose.
-
-Not all multi-core devices are affected though. Certain OEMs enforce a
-policy where all threads of a single process are forced to run on the same
-core. In this case, the bug cannot occur, unless you're directly accessing
-shared memory between two processes.
-
-The problem is only likely to be seen on devices running Android 3.0 to
-Android 4.1. The C library implementation in 4.1 has been updated to provide
-full memory barriers as well. This ensures existing native code keeps
-working correctly on this platform and future ones, even if they were not
-recompiled.
-
-We still strongly recommend recompiling your native code to ensure you'll
-never have to debug this issue (life is short). In the case where this would
-not be possible (e.g. you're using an older version of the NDK for some
-reason, or a custom build system / toolchain), we recommend stopping from
-using these functions entirely. Very fortunately, GCC provides handy
-intrinsics functions that work with very reasonable performance and always
-provide a *full* *barrier*.
-
- * `__sync_fetch_and_add` instead of `__atomic_inc`
- * `__sync_fetch_and_sub` instead of `__atomic_sub`
- * `__sync_val_compare_and_swap` instead of `__atomic_cmpxchg`
-
-See the content of `platforms/android-3/arch-arm/usr/include/sys/atomics.h`
-to see how these can be used.
-
-See the [GCC documentation about __sync_ functions](http://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html#_005f_005fsync-Builtins) for more information:
-
diff --git a/docs/text/ANDROID-MK.text b/docs/text/ANDROID-MK.text
deleted file mode 100644
index cb2168fc1..000000000
--- a/docs/text/ANDROID-MK.text
+++ /dev/null
@@ -1,879 +0,0 @@
-`Android.mk` file syntax specification
-
-Introduction:
--------------
-
-This document describes the syntax of `Android.mk` build file
-written to describe your C and C++ source files to the Android
-NDK. To understand what follows, it is assumed that you have
-read the [OVERVIEW](OVERVIEW.html) file that explains their role and
-usage.
-
-Overview:
----------
-
-An `Android.mk` file is written to describe your sources to the
-build system. More specifically:
-
-- The file is really a tiny GNU Makefile fragment that will be
- parsed one or more times by the build system. As such, you
- should try to minimize the variables you declare there and
- do not assume that anything is not defined during parsing.
-
-- The file syntax is designed to allow you to group your
- sources into 'modules'. A module is one of the following:
-
- - A static library.
- - A shared library.
- - A standalone executable.
-
- Only shared libraries will be installed/copied to your
- application package. Static libraries can be used to generate
- shared libraries though.
-
- You can define one or more modules in each `Android.mk` file,
- and you can use the same source file in several modules.
-
-- The build system handles many details for you. For example, you
- don't need to list header files or explicit dependencies between
- generated files in your `Android.mk`. The NDK build system will
- compute these automatically for you.
-
- This also means that, when updating to newer releases of the NDK,
- you should be able to benefit from new toolchain/platform support
- without having to touch your `Android.mk` files.
-
-Note that the syntax is *very* close to the one used in `Android.mk` files
-distributed with the full open-source Android platform sources. While
-the build system implementation that uses them is different, this is
-an intentional design decision made to allow reuse of 'external' libraries'
-source code easier for application developers.
-
-Simple example:
----------------
-
-Before describing the syntax in details, let's consider the simple
-"hello JNI" example, i.e. the files under:
-
-> `samples/hello-jni`
-
-Here, we can see:
-
- - The `src` directory containing the Java sources for the
- sample Android project.
-
- - The `jni` directory containing the native source for
- the sample, i.e. `jni/hello-jni.c`
-
- This source file implements a simple shared library that
- implements a native method that returns a string to the
- VM application.
-
- - The `jni/Android.mk` file that describes the shared library
- to the NDK build system. Its content is:
-
-#
-
- ---------- cut here ------------------
- LOCAL_PATH := $(call my-dir)
-
- include $(CLEAR_VARS)
-
- LOCAL_MODULE := hello-jni
- LOCAL_SRC_FILES := hello-jni.c
-
- include $(BUILD_SHARED_LIBRARY)
- ---------- cut here ------------------
-
-Now, let's explain these lines:
-
- LOCAL_PATH := $(call my-dir)
-
-
-An `Android.mk` file must begin with the definition of the LOCAL_PATH variable.
-It is used to locate source files in the development tree. In this example,
-the macro function 'my-dir', provided by the build system, is used to return
-the path of the current directory (i.e. the directory containing the
-`Android.mk` file itself).
-
- include $(CLEAR_VARS)
-
-The CLEAR_VARS variable is provided by the build system and points to a
-special GNU Makefile that will clear many LOCAL_XXX variables for you
-(e.g. LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, etc...),
-with the exception of LOCAL_PATH. This is needed because all build
-control files are parsed in a single GNU Make execution context where
-all variables are global.
-
- LOCAL_MODULE := hello-jni
-
-The LOCAL_MODULE variable must be defined to identify each module you
-describe in your `Android.mk`. The name must be *unique* and not contain
-any spaces. Note that the build system will automatically add proper
-prefix and suffix to the corresponding generated file. In other words,
-a shared library module named 'foo' will generate 'libfoo.so'.
-
-IMPORTANT NOTE:
-If you name your module 'libfoo', the build system will not
-add another 'lib' prefix and will generate libfoo.so as well.
-This is to support `Android.mk` files that originate from the
-Android platform sources, would you need to use these.
-
- LOCAL_SRC_FILES := hello-jni.c
-
-The LOCAL_SRC_FILES variables must contain a list of C and/or C++ source
-files that will be built and assembled into a module. Note that you should
-not list header and included files here, because the build system will
-compute dependencies automatically for you; just list the source files
-that will be passed directly to a compiler, and you should be good.
-
-Note that the default extension for C++ source files is '.cpp'. It is
-however possible to specify a different one by defining the variable
-LOCAL_CPP_EXTENSION. Don't forget the initial dot (i.e. '.cxx' will
-work, but not 'cxx').
-
- include $(BUILD_SHARED_LIBRARY)
-
-The BUILD_SHARED_LIBRARY is a variable provided by the build system that
-points to a GNU Makefile script that is in charge of collecting all the
-information you defined in LOCAL_XXX variables since the latest
-'include $(CLEAR_VARS)' and determine what to build, and how to do it
-exactly. There is also BUILD_STATIC_LIBRARY to generate a static library.
-
-There are more complex examples in the samples directories, with commented
-`Android.mk` files that you can look at.
-
-Reference:
-----------
-
-This is the list of variables you should either rely on or define in
-an `Android.mk`. You can define other variables for your own usage, but
-the NDK build system reserves the following variable names:
-
-- Names that begin with LOCAL_ (e.g. LOCAL_MODULE)
-- Names that begin with PRIVATE_, NDK_ or APP_ (used internally)
-- Lower-case names (used internally, e.g. `my-dir`)
-
-If you need to define your own convenience variables in an `Android.mk`
-file, we recommend using the MY_ prefix, for a trivial example:
-
- ---------- cut here ------------------
- MY_SOURCES := foo.c
- ifneq ($(MY_CONFIG_BAR),)
- MY_SOURCES += bar.c
- endif
-
- LOCAL_SRC_FILES += $(MY_SOURCES)
- ---------- cut here ------------------
-
-So, here we go:
-
-
-NDK-provided variables:
------------------------
-
-These GNU Make variables are defined by the build system before
-your `Android.mk` file is parsed. Note that under certain circumstances
-the NDK might parse your `Android.mk` several times, each with different
-definition for some of these variables.
-
-- - - - - - - - - - -
-CLEAR_VARS
-> Points to a build script that undefines nearly all LOCAL_XXX variables
-> listed in the "Module-description" section below. You must include
-> the script before starting a new module, e.g.:
-
- include $(CLEAR_VARS)
-
-- - - - - - - - - - -
-BUILD_SHARED_LIBRARY
-> Points to a build script that collects all the information about the
-> module you provided in LOCAL_XXX variables and determines how to build
-> a target shared library from the sources you listed. Note that you
-> must have LOCAL_MODULE and LOCAL_SRC_FILES defined, at a minimum before
-> including this file. Example usage:
-
- include $(BUILD_SHARED_LIBRARY)
-
-> note that this will generate a file named `lib$(LOCAL_MODULE).so`.
-
-- - - - - - - - - - -
-BUILD_STATIC_LIBRARY
-> A variant of BUILD_SHARED_LIBRARY that is used to build a target static
-> library instead. Static libraries are not copied into your
-> project/packages but can be used to build shared libraries (see
-> LOCAL_STATIC_LIBRARIES and LOCAL_WHOLE_STATIC_LIBRARIES described below).
-> Example usage:
-
- include $(BUILD_STATIC_LIBRARY)
-
-> Note that this will generate a file named `lib$(LOCAL_MODULE).a`.
-
-- - - - - - - - - - -
-PREBUILT_SHARED_LIBRARY
-> Points to a build script used to specify a prebuilt shared library.
-> Unlike BUILD_SHARED_LIBRARY and BUILD_STATIC_LIBRARY, the value
-> of LOCAL_SRC_FILES must be a single path to a prebuilt shared
-> library (e.g. `foo/libfoo.so`), instead of a source file.
-
-> You can reference the prebuilt library in another module using
-> the LOCAL_PREBUILTS variable (see [PREBUILTS](PREBUILTS.html) for more
-> information).
-
-- - - - - - - - - - -
-PREBUILT_STATIC_LIBRARY
-> This is the same as PREBUILT_SHARED_LIBRARY, but for a static library
-> file instead. See [PREBUILTS](PREBUILTS.html) for more.
-
-- - - - - - - - - - -
-TARGET_ARCH
-> Name of the target CPU architecture as it is specified by the
-> full Android open-source build. This is 'arm' for any ARM-compatible
-> build, independent of the CPU architecture revision.
-
-- - - - - - - - - - -
-TARGET_PLATFORM
-> Name of the target Android platform when this `Android.mk` is parsed.
-> For example, 'android-3' correspond to Android 1.5 system images. For
-> a complete list of platform names and corresponding Android system
-> images, read [STABLE APIS](STABLE-APIS.html).
-
-- - - - - - - - - - -
-TARGET_ARCH_ABI
-> Name of the target CPU+ABI when this `Android.mk` is parsed.
-> Four values are supported at the moment:
-
- armeabi
- For ARMv5TE
-
- armeabi-v7a
- For ARMv7
-
- x86
- For i686
-
- x86_64
- For x86-64
-
- mips
- For mips32 (r1)
-
-> NOTE: Up to Android NDK 1.6_r1, this variable was simply defined
-> as '`arm`'. However, the value has been redefined to better
-> match what is used internally by the Android platform.
-
-> For more details about architecture ABIs and corresponding
-> compatibility issues, please read [CPU ARCH ABIS](CPU-ARCH-ABIS.html)
-
-> Other target ABIs will be introduced in future releases of the NDK
-> and will have a different name. Note that all ARM-based ABIs will
-> have 'TARGET_ARCH' defined to '`arm`', but may have different
-> 'TARGET_ARCH_ABI'
-
-- - - - - - - - - - -
-TARGET_ABI
-> The concatenation of target platform and ABI, it really is defined
-> as `$(TARGET_PLATFORM)-$(TARGET_ARCH_ABI)` and is useful when you want
-> to test against a specific target system image for a real device.
-
-> By default, this will be '`android-3-armeabi`'
-
-> (Up to Android NDK 1.6_r1, this used to be '`android-3-arm`' by default)
-
-NDK-provided function macros:
------------------------------
-
-The following are GNU Make 'function' macros, and must be evaluated
-by using '$(call <function>)'. They return textual information.
-
-- - - -
-my-dir
-> Returns the path of the last included Makefile, which typically is
-> the current `Android.mk`'s directory. This is useful to define
-> LOCAL_PATH at the start of your `Android.mk` as with:
-
- LOCAL_PATH := $(call my-dir)
-
-> IMPORTANT NOTE: Due to the way GNU Make works, this really returns
-> the path of the *last* *included* *Makefile* during the parsing of
-> build scripts. Do not call `my-dir` after including another file.
-
-> For example, consider the following example:
-
- LOCAL_PATH := $(call my-dir)
-
- ... declare one module
-
- include $(LOCAL_PATH)/foo/`Android.mk`
-
- LOCAL_PATH := $(call my-dir)
-
- ... declare another module
-
-> The problem here is that the second call to `my-dir` will define
-> LOCAL_PATH to `$PATH/foo` instead of `$PATH`, due to the include that
-> was performed before that.
-
-> For this reason, it's better to put additional includes after
-> everything else in an `Android.mk`, as in:
-
- LOCAL_PATH := $(call my-dir)
-
- ... declare one module
-
- LOCAL_PATH := $(call my-dir)
-
- ... declare another module
-
- # extra includes at the end of the `Android.mk`
- include $(LOCAL_PATH)/foo/`Android.mk`
-
-> If this is not convenient, save the value of the first `my-dir` call
-> into another variable, for example:
-
- MY_LOCAL_PATH := $(call my-dir)
-
- LOCAL_PATH := $(MY_LOCAL_PATH)
-
- ... declare one module
-
- include $(LOCAL_PATH)/foo/`Android.mk`
-
- LOCAL_PATH := $(MY_LOCAL_PATH)
-
- ... declare another module
-
-
-- - - -
-all-subdir-makefiles
-> Returns a list of `Android.mk` located in all sub-directories of
-> the current 'my-dir' path. For example, consider the following
-> hierarchy:
-
- sources/foo/Android.mk
- sources/foo/lib1/Android.mk
- sources/foo/lib2/Android.mk
-
-> If sources/foo/`Android.mk` contains the single line:
-
- include $(call all-subdir-makefiles)
-
-> Then it will include automatically sources/foo/lib1/`Android.mk` and
-> sources/foo/lib2/`Android.mk`
-
-> This function can be used to provide deep-nested source directory
-> hierarchies to the build system. Note that by default, the NDK
-> will only look for files in sources/*/`Android.mk`
-
-- - - -
-this-makefile
-> Returns the path of the current Makefile (i.e. where the function
-> is called).
-
-- - - -
-parent-makefile
-> Returns the path of the parent Makefile in the inclusion tree,
-> i.e. the path of the Makefile that included the current one.
-
-- - - -
-grand-parent-makefile
-> Guess what...
-
-- - - -
-import-module
-> A function that allows you to find and include the `Android.mk`
-> of another module by name. A typical example is:
-
- $(call import-module,<name>)
-
-> And this will look for the module tagged <name> in the list of
-> directories referenced by your NDK_MODULE_PATH environment
-> variable, and include its `Android.mk` automatically for you.
->
-> Read [IMPORT-MODULE](IMPORT-MODULE.html) for more details.
-- - - -
-
-
-Module-description variables:
------------------------------
-
-The following variables are used to describe your module to the build
-system. You should define some of them between an '`include $(CLEAR_VARS)`'
-and an '`include $(BUILD_XXXXX)`'. As written previously, $(CLEAR_VARS) is
-a script that will undefine/clear all of these variables, unless explicitly
-noted in their description.
-
-- - - -
-LOCAL_PATH
-> This variable is used to give the path of the current file.
-> You MUST define it at the start of your `Android.mk`, which can
-> be done with:
-
- LOCAL_PATH := $(call my-dir)
-
-> This variable is *not* cleared by $(CLEAR_VARS) so only one
-> definition per `Android.mk` is needed (in case you define several
-> modules in a single file).
-
-- - - -
-LOCAL_MODULE
-> This is the name of your module. It must be unique among all
-> module names, and shall not contain any space. You MUST define
-> it before including any $(BUILD_XXXX) script.
->
-> By default, the module name determines the name of generated files,
-> e.g. lib<foo>.so for a shared library module named <foo>. However
-> you should only refer to other modules with their 'normal'
-> name (e.g. <foo>) in your NDK build files (either `Android.mk`
-> or Application.mk)
->
-> You can override this default with LOCAL_MODULE_FILENAME (see below)
-
-- - - -
-LOCAL_MODULE_FILENAME
-> This variable is optional, and allows you to redefine the name of
-> generated files. By default, module <foo> will always generate a
-> static library named lib<foo>.a or a shared library named lib<foo>.so,
-> which are standard Unix conventions.
->
-> You can override this by defining LOCAL_MODULE_FILENAME, For example:
-
- LOCAL_MODULE := foo-version-1
- LOCAL_MODULE_FILENAME := libfoo
-
-> *NOTE(: You should not put a path or file extension in your
-> LOCAL_MODULE_FILENAME, these will be handled automatically by the
-> build system.
-
-- - - -
-LOCAL_SRC_FILES
-> This is a list of source files that will be built for your module.
-> Only list the files that will be passed to a compiler, since the
-> build system automatically computes dependencies for you.
->
-> Note that source files names are relative to LOCAL_PATH and
-> you can use path components, e.g.:
-
- LOCAL_SRC_FILES := foo.c \
- toto/bar.c
-
-> Absolute file paths are also supported:
-
- LOCAL_SRC_FILES := /home/user/mysources/foo.c
-
-> or on Windows:
-
- LOCAL_SRC_FILES := c:/Users/user/sources/foo.c
-
-> Avoiding absolute file paths is recommended, this makes your
-> `Android.mk` easy to reuse on a different machine / system.
->
-> NOTE: Always use Unix-style forward slashes (/) in build files.
-> Windows-style back-slashes will not be handled properly.
-
-- - - -
-LOCAL_CPP_EXTENSION
-> This is an optional variable that can be defined to indicate
-> the file extension(s) of C++ source files. They must begin with a dot.
-> The default is '.cpp' but you can change it. For example:
-
- LOCAL_CPP_EXTENSION := .cxx
-
-> Since NDK r7, you can list several extensions in this variable, as in:
-
- LOCAL_CPP_EXTENSION := .cxx .cpp .cc
-
-- - - -
-LOCAL_CPP_FEATURES
-> This is an optional variable that can be defined to indicate
-> that your code relies on specific C++ features. To indicate that
-> your code uses RTTI (RunTime Type Information), use the following:
-
- LOCAL_CPP_FEATURES := rtti
-
-> To indicate that your code uses C++ exceptions, use:
-
- LOCAL_CPP_FEATURES := exceptions
-
-> You can also use both of them with (order is not important):
-
- LOCAL_CPP_FEATURES := rtti features
-
-> The effect of this variable is to enable the right compiler/linker
-> flags when building your modules from sources. For prebuilt binaries,
-> this also helps declare which features the binary relies on to ensure
-> the final link works correctly.
->
-> It is recommended to use this variable instead of enabling `-frtti` and
-> `-fexceptions` directly in your LOCAL_CPPFLAGS definition.
-
-- - - -
-LOCAL_C_INCLUDES
-> An optional list of paths, relative to the NDK *root* directory,
-> which will be appended to the include search path when compiling
-> all sources (C, C++ and Assembly). For example:
-
- LOCAL_C_INCLUDES := sources/foo
-
-> Or even:
-
- LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo
-
-> These are placed before any corresponding inclusion flag in
-> LOCAL_CFLAGS / LOCAL_CPPFLAGS
->
-> The LOCAL_C_INCLUDES path are also used automatically when
-> launching native debugging with ndk-gdb.
-
-
-- - - -
-LOCAL_CFLAGS
-> An optional set of compiler flags that will be passed when building
-> C *and* C++ source files.
->
-> This can be useful to specify additional macro definitions or
-> compile options.
->
-> **IMPORTANT**: Try not to change the optimization/debugging level in
-> your `Android.mk`, this can be handled automatically for
-> you by specifying the appropriate information in
-> your Application.mk, and will let the NDK generate
-> useful data files used during debugging.
->
-> NOTE: In android-ndk-1.5_r1, the corresponding flags only applied
-> to C source files, not C++ ones. This has been corrected to
-> match the full Android build system behaviour. (You can use
-> LOCAL_CPPFLAGS to specify flags for C++ sources only now).
->
-> It is possible to specify additional include paths with
-> LOCAL_CFLAGS += -I<path>, however, it is better to use LOCAL_C_INCLUDES
-> for this, since the paths will then also be used during native
-> debugging with ndk-gdb.
-
-
-- - - -
-LOCAL_CXXFLAGS
-> An alias for LOCAL_CPPFLAGS. Note that use of this flag is obsolete
-> as it may disappear in future releases of the NDK.
-
-- - - -
-LOCAL_CPPFLAGS
-> An optional set of compiler flags that will be passed when building
-> C++ source files *only*. They will appear after the LOCAL_CFLAGS
-> on the compiler's command-line.
->
-> NOTE: In android-ndk-1.5_r1, the corresponding flags applied to
-> both C and C++ sources. This has been corrected to match the
-> full Android build system. (You can use LOCAL_CFLAGS to specify
-> flags for both C and C++ sources now).
-
-- - - -
-LOCAL_STATIC_LIBRARIES
-> The list of static libraries modules that the current module depends
-> on.
->
-> If the current module is a shared library or an executable, this will
-> force these libraries to be linked into the resulting binary.
->
-> If the current module is a static library, this simply tells that
-> another other module that depends on the current one will also
-> depend on the listed libraries.
-
-- - - -
-LOCAL_SHARED_LIBRARIES
-> The list of shared libraries *modules* this module depends on at runtime.
-> This is necessary at link time and to embed the corresponding information
-> in the generated file.
->
-
-- - - -
-LOCAL_WHOLE_STATIC_LIBRARIES
-> A variant of LOCAL_STATIC_LIBRARIES used to express that the corresponding
-> library module should be used as "whole archives" to the linker. See the
-> GNU linker's documentation for the `--whole-archive` flag.
->
-> This is generally useful when there are circular dependencies between
-> several static libraries. Note that when used to build a shared library,
-> this will force all object files from your whole static libraries to be
-> added to the final binary. This is not true when generating executables
-> though.
-
-- - - -
-LOCAL_LDLIBS
-> The list of additional linker flags to be used when building your
-> shared library or executable. This is useful to pass the name of
-> specific system libraries with the '`-l`' prefix. For example, the
-> following will tell the linker to generate a module that links to
-> `/system/lib/libz.so` at load time:
-
- LOCAL_LDLIBS := -lz
-
-> See [STABLE-APIS](STABLE-APIS.html) for the list of exposed system libraries you
-> can linked against with this NDK release.
->
-> NOTE: This is ignored for static libraries, and ndk-build will print
-> a warning if you define it in such a module.
-
-- - - -
-LOCAL_LDFLAGS
-> The list of other linker flags to be used when building your shared
-> library or executable. For example, the following will use the `ld.bfd`
-> linker on ARM/X86 GCC 4.6+ where `ld.gold` is the default
-
- LOCAL_LDFLAGS += -fuse-ld=bfd
-
-> NOTE: This is ignored for static libraries, and ndk-build will print
-> a warning if you define it in such a module.
-
-- - - -
-LOCAL_ALLOW_UNDEFINED_SYMBOLS
-> By default, any undefined reference encountered when trying to build
-> a shared library will result in an "undefined symbol" error. This is a
-> great help to catch bugs in your source code.
->
-> However, if for some reason you need to disable this check, set this
-> variable to '`true`'. Note that the corresponding shared library may fail
-> to load at runtime.
->
-> *NOTE*: This is ignored for static libraries, and ndk-build will print
-> a warning if you define it in such a module.
-
-- - - -
-LOCAL_ARM_MODE
-> By default, ARM target binaries will be generated in 'thumb' mode, where
-> each instruction are 16-bit wide. You can define this variable to '`arm`'
-> if you want to force the generation of the module's object files in
-> 'arm' (32-bit instructions) mode. E.g.:
-
- LOCAL_ARM_MODE := arm
-
-> Note that you can also instruct the build system to only build specific
-> sources in ARM mode by appending an '`.arm`' suffix to its source file
-> name. For example, with:
-
- LOCAL_SRC_FILES := foo.c bar.c.arm
-
-> Tells the build system to always compile '`bar.c`' in ARM mode, and to
-> build `foo.c` according to the value of LOCAL_ARM_MODE.
->
-> NOTE: Setting APP_OPTIM to '`debug`' in your `Application.mk` will also force
-> the generation of ARM binaries as well. This is due to bugs in the
-> toolchain debugger that don't deal too well with thumb code.
-
-- - - -
-LOCAL_ARM_NEON
-> Defining this variable to '`true`' allows the use of ARM Advanced SIMD
-> (a.k.a. NEON) GCC intrinsics in your C and C++ sources, as well as
-> NEON instructions in Assembly files.
->
-> You should only define it when targeting the '`armeabi-v7a`' ABI that
-> corresponds to the ARMv7 instruction set. Note that not all ARMv7
-> based CPUs support the NEON instruction set extensions and that you
-> should perform runtime detection to be able to use this code at runtime
-> safely. To learn more about this, please read the documentation at
-> [CPU-ARM-NEON](CPU-ARM-NEON.html) and [CPU-FEATURES](CPU-FEATURES.html).
->
-> Alternatively, you can also specify that only specific source files
-> may be compiled with NEON support by using the '`.neon`' suffix, as
-> in:
-
- LOCAL_SRC_FILES = foo.c.neon bar.c zoo.c.arm.neon
-
-> In this example, '`foo.c`' will be compiled in thumb+neon mode,
-> '`bar.c`' will be compiled in 'thumb' mode, and '`zoo.c`' will be
-> compiled in 'arm+neon' mode.
->
-> Note that the '`.neon`' suffix must appear after the '`.arm`' suffix
-> if you use both (i.e. `foo.c.arm.neon` works, but not `foo.c.neon.arm` !)
-
-- - - -
-LOCAL_DISABLE_NO_EXECUTE
-> Android NDK r4 added support for the "NX bit" security feature.
-> It is enabled by default, but you can disable it if you *really*
-> need to by setting this variable to 'true'.
->
-> NOTE: This feature does not modify the ABI and is only enabled on
-> kernels targeting ARMv6+ CPU devices. Machine code generated
-> with this feature enabled will run unmodified on devices
-> running earlier CPU architectures.
->
-> For more information, see:
->
-> * [Wikipedia: NX bit](http://en.wikipedia.org/wiki/NX_bit)
-> * [The GNU stack kickstart](http://www.gentoo.org/proj/en/hardened/gnu-stack.xml)
-
-- - - -
-LOCAL_DISABLE_RELRO
-> By default, NDK compiled code is built with read-only relocations
-> and GOT protection. This instructs the runtime linker to mark
-> certain regions of memory as being read-only after relocation,
-> making certain security exploits (such as GOT overwrites) harder
-> to perform.
->
-> It is enabled by default, but you can disable it if you *really*
-> need to by setting this variable to '`true`'.
->
-> NOTE: These protections are only effective on newer Android devices
-> ("Jelly Bean" and beyond). The code will still run on older
-> versions (albeit without memory protections).
->
-> For more information, see:
->
-> * [RELRO: RELocation Read-Only](http://isisblogs.poly.edu/2011/06/01/relro-relocation-read-only/)
-> * [Security enhancements in RedHat Enterprise Linux (section 6)](http://www.akkadia.org/drepper/nonselsec.pdf)
-
-- - - -
-LOCAL_DISABLE_FORMAT_STRING_CHECKS
-> By default, NDK compiled code is compiled with format string
-> protection. This forces a compiler error if a non-constant format
-> string is used in a printf style function.
->
-> It is enabled by default, but you can disable it if you *really*
-> need to by setting this variable to '`true`'.
-
-- - - -
-LOCAL_EXPORT_CFLAGS
-> Define this variable to record a set of C/C++ compiler flags that will
-> be added to the LOCAL_CFLAGS definition of any other module that uses
-> this one with LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES.
->
-> For example, consider the module '`foo`' with the following definition:
-
- include $(CLEAR_VARS)
- LOCAL_MODULE := foo
- LOCAL_SRC_FILES := foo/foo.c
- LOCAL_EXPORT_CFLAGS := -DFOO=1
- include $(BUILD_STATIC_LIBRARY)
-
-> And another module, named '`bar`' that depends on it as:
-
- include $(CLEAR_VARS)
- LOCAL_MODULE := bar
- LOCAL_SRC_FILES := bar.c
- LOCAL_CFLAGS := -DBAR=2
- LOCAL_STATIC_LIBRARIES := foo
- include $(BUILD_SHARED_LIBRARY)
-
-> Then, the flags '`-DFOO=1` `-DBAR=2`' will be passed to the compiler when
-> building `bar.c`.
->
-> Exported flags are prepended to your module's LOCAL_CFLAGS so you can
-> easily override them. They are also transitive: if '`zoo`' depends on
-> '`bar`' which depends on '`foo`', then '`zoo`' will also inherit all flags
-> exported by '`foo`'.
->
-> Finally, exported flags are *not* used when building the module that
-> exports them. In the above example, `-DFOO=1` would not be passed to the
-> compiler when building `foo/foo.c`.
-
-- - - -
-LOCAL_EXPORT_CPPFLAGS
-> Same as LOCAL_EXPORT_CFLAGS, but for C++ flags only.
-
-- - - -
-LOCAL_EXPORT_C_INCLUDES
-> Same as LOCAL_EXPORT_CFLAGS, but for C include paths.
-> This can be useful if 'bar.c' wants to include headers
-> that are provided by module 'foo'.
-
-- - - -
-LOCAL_EXPORT_LDFLAGS
-> Same as LOCAL_EXPORT_CFLAGS, but for linker flags.
-
-- - - -
-LOCAL_EXPORT_LDLIBS
-> Same as LOCAL_EXPORT_CFLAGS, but for passing the name of specific
-> system libraries with the '`-l`' prefix. Note that the
-> imported linker flags will be appended to your module's LOCAL_LDLIBS
-> though, due to the way Unix linkers work.
->
-> This is typically useful when module '`foo`' is a static library and has
-> code that depends on a system library. LOCAL_EXPORT_LDLIBS can then be
-> used to export the dependency. For example:
-
- include $(CLEAR_VARS)
- LOCAL_MODULE := foo
- LOCAL_SRC_FILES := foo/foo.c
- LOCAL_EXPORT_LDLIBS := -llog
- include $(BUILD_STATIC_LIBRARY)
-
- include $(CLEAR_VARS)
- LOCAL_MODULE := bar
- LOCAL_SRC_FILES := bar.c
- LOCAL_STATIC_LIBRARIES := foo
- include $(BUILD_SHARED_LIBRARY)
-
-> There, `libbar.so` will be built with a `-llog` at the end of the linker
-> command to indicate that it depends on the system logging library,
-> because it depends on '`foo`'.
-
-- - - -
-LOCAL_SHORT_COMMANDS
-> Set this variable to '`true`' when your module has a very high number of
-> sources and/or dependent static or shared libraries. This forces the
-> build system to use an intermediate list file, and use it with the
-> library archiver or static linker with the `@$(listfile)` syntax.
-
-> This can be useful on Windows, where the command-line only accepts
-> a maximum of 8191 characters, which can be too small for complex
-> projects.
-
-> This also impacts the compilation of individual source files, placing
-> nearly all compiler flags inside list files too.
-
-> Note that any other value than '`true`' will revert to the default
-> behaviour. You can also define APP_SHORT_COMMANDS in your
-> Application.mk to force this behaviour for all modules in your
-> project.
-
-> *NOTE*: We do not recommend enabling this feature by default, since it
-> makes the build slower.
-
-- - - -
-LOCAL_THIN_ARCHIVE
-> Set this variable to '`true`' when building static libraries. This will
-> generate a 'thin archive', i.e. a library file (e.g. `libfoo.a`) which
-> doesn't contain object files, but simply file paths to the actual
-> objects that it should normally contain.
-
-> This is useful to reduce the size of your build output. The drawback
-> is that such libraries _cannot_ be moved to a different location
-> (all paths inside them are relative).
-
-> Valid values are '`true`', '`false`' or empty. A default value can be
-> set in your Application.mk through APP_THIN_ARCHIVE.
-
-> *NOTE*: This is ignored for non-static library modules, or prebuilt
-> static library ones.
-
-- - - -
-LOCAL_FILTER_ASM
-> Define this variable to a shell command that will be used to filter
-> the assembly files from, or generated from, your LOCAL_SRC_FILES.
->
-> When it is defined, the following happens:
->
-> - Any C or C++ source file is generated into a temporary assembly
-> file (instead of being compiled into an object file).
->
-> - Any temporary assembly file, and any assembly file listed in
-> LOCAL_SRC_FILES is sent through the LOCAL_FILTER_ASM command
-> to generate _another_ temporary assembly file.
->
-> - These filtered assembly files are compiled into object file.
->
-> In other words, If you have:
-
- LOCAL_SRC_FILES := foo.c bar.S
- LOCAL_FILTER_ASM := myasmfilter
-
- foo.c --1--> $OBJS_DIR/foo.S.original --2--> $OBJS_DIR/foo.S --3--> $OBJS_DIR/foo.o
- bar.S --2--> $OBJS_DIR/bar.S --3--> $OBJS_DIR/bar.o
-
-> Were "1" corresponds to the compiler, "2" to the filter, and "3" to the
-> assembler. The filter must be a standalone shell command that takes the
-> name of the input file as its first argument, and the name of the output
-> file as the second one, as in:
-
- myasmfilter $OBJS_DIR/foo.S.original $OBJS_DIR/foo.S
- myasmfilter bar.S $OBJS_DIR/bar.S
diff --git a/docs/text/APPLICATION-MK.text b/docs/text/APPLICATION-MK.text
deleted file mode 100644
index 367e95e5c..000000000
--- a/docs/text/APPLICATION-MK.text
+++ /dev/null
@@ -1,283 +0,0 @@
-`Application.mk` file syntax specification
-
-Introduction:
--------------
-
-This document describes the syntax of `Application.mk` build files
-written to describe the native modules required by your Android
-application. To understand what follows, it is assumed that you have
-read the [OVERVIEW](OVERVIEW.html) file that explains their role and
-usage.
-
-Readers of this document should have read [OVERVIEW](OVERVIEW.html) and
-[ANDROID-MK](ANDROID-MK.html).
-
-
-Overview:
----------
-
-The purpose of `Application.mk` is to describe which native
-'modules' (i.e. static/shared libraries) are needed by your
-application.
-
-An `Application.mk` file is usually placed under `$PROJECT/jni/Application.mk`,
-where `$PROJECT` points to your application's project directory.
-
-Another alternative is to place it under a sub-directory of the top-level
-`$NDK/apps` directory, e.g.:
-
- $NDK/apps/<myapp>/`Application.mk`
-
-Where <myapp> is a short name used to describe your 'application'
-to the NDK build system (this name doesn't go into your generated
-shared libraries or your final packages).
-
-The `Application.mk` is really a tiny GNU Makefile fragment that must
-define a few variables:
-
-- - - -
-APP_PROJECT_PATH
-> This variable should give the *absolute* path to your
-> Application's project root directory. This is used to copy/install
-> stripped versions of the generated JNI shared libraries to a
-> specific location known to the APK-generating tools.
->
-> Note that it is optional for `$PROJECT/jni/Application.mk`, but
-> *mandatory* for `$NDK/apps/<myapp>/Application.mk`
-
-- - - -
-APP_MODULES
-> If this variable is defined, it tells `ndk-build` to only list the
-> corresponding modules and those that they depend on. It must be a
-> space-separated list of module names as they appear in the
-> LOCAL_MODULE definition of Android.mk files.
->
-> It the variable is undefined, `ndk-build` looks for the list of all
-> _installable_ top-level modules, i.e. those listed by your Android.mk
-> and any file it includes directly. Imported modules are _not_ top-level
-> though.
->
-> An installable module is either a shared library or executable, which
-> will generate a file in `libs/$ABI/`.
->
-> If the variable is undefined, and there are no installable top-level
-> modules in your project, then `ndk-build` will build all top-level
-> static libraries and their dependencies instead. However, these
-> libraries will be placed at the usual location under `obj/` or
-> `obj-debug/`.
->
-> NOTE: This variable's behaviour changed in NDK r4. Before that:
->
-> - the variable was mandatory in your `Application.mk`
-> - all required modules had to be listed explicitly.
-
-- - - -
-APP_OPTIM
-> This optional variable can be defined to either '`release`' or
-> '`debug`'. This is used to alter the optimization level when
-> building your application's modules.
->
-> A 'release' mode is the default, and will generate highly
-> optimized binaries. The 'debug' mode will generate un-optimized
-> binaries which are much easier to debug.
->
-> Note that if your application is debuggable (i.e. if your manifest
-> sets the `android:debuggable` attribute to "`true`" in its `<application>`
-> tag), the default will be 'debug' instead of 'release'. This can
-> be overridden by setting APP_OPTIM to '`release`'.
->
-> Note that it is possible to debug both 'release' and 'debug'
-> binaries, but the 'release' builds tend to provide less information
-> during debugging sessions: some variables are optimized out and
-> can't be inspected, code re-ordering can make stepping through
-> the code difficult, stack traces may not be reliable, etc...
-
-- - - -
-APP_CFLAGS
-> A set of C compiler flags passed when compiling any C or C++ source code
-> of any of the modules. This can be used to change the build of a given
-> module depending on the application that needs it, instead of modifying
-> the Android.mk file itself.
->
- IMPORTANT WARNING: +++++++++++++++++++++++++++++++++++++++++++++++++++
- +
- + All paths in these flags should be relative to the top-level NDK
- + directory. For example, if you have the following setup:
- +
- + sources/foo/Android.mk
- + sources/bar/Android.mk
- +
- + To specify in foo/Android.mk that you want to add the path to the
- + 'bar' sources during compilation, you should use:
- +
- + APP_CFLAGS += -Isources/bar
- +
- + Or alternatively:
- +
- + APP_CFLAGS += -I$(LOCAL_PATH)/../bar
- +
- + Using '-I../bar' will *NOT* work since it will be equivalent to
- + '-I$NDK_ROOT/../bar' instead.
- +
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-> NOTE: In android-ndk-1.5_r1, this only applied to C sources, not C++ ones.
-> This has been corrected to match the full Android build system.
-
-- - - -
-APP_CXXFLAGS
-> An alias for APP_CPPFLAGS, to be considered obsolete as it may disappear
-> in a future release of the NDK.
-
-- - - -
-APP_CPPFLAGS
-> A set of C++ compiler flags passed when building C++ sources *only*.
->
-> NOTE: In android-ndk-1.5_r1, this applied to both C and C++ sources.
-> This has been corrected to match the full Android build system.
-> You can now use APP_CFLAGS for flags that shall apply to C and
-> C++ sources.
-
-- - - -
-APP_LDFLAGS
-> A set of linker flags passed when linking application. This only
-> applies when building shared libraries and executables, these
-> flags are ignored when building static libraries.
-
-- - - -
-APP_BUILD_SCRIPT
-> By default, the NDK build system will look for a file named Android.mk
-> under `$(APP_PROJECT_PATH)/jni`, i.e. for the file:
-
- $(APP_PROJECT_PATH)/jni/Android.mk
-
-> If you want to override this behaviour, you can define APP_BUILD_SCRIPT
-> to point to an alternate build script. A non-absolute path will always
-> be interpreted as relative to the NDK's top-level directory.
-
-- - - -
-APP_ABI
-> By default, the NDK build system will generate machine code for the
-> '`armeabi`' ABI. This corresponds to an ARMv5TE based CPU with software
-> floating point operations. You can use APP_ABI to select a different
-> ABI.
->
-> For example, to support hardware FPU instructions on ARMv7 based devices,
-> use:
-
- APP_ABI := armeabi-v7a
-
-> Or to support the IA-32 instruction set, use:
-
- APP_ABI := x86
-
-> Or to support the Intel64 instruction set, use:
-
- APP_ABI := x86-64
-
-> Or to support the MIPS instruction set, use:
-
- APP_ABI := mips
-
-> Or to support all at the same time, use:
-
- APP_ABI := armeabi armeabi-v7a x86 mips x86-64
-
-> Or even better, since NDK r7, you can also use the special value
-> '`all`' which means "all ABIs supported by this NDK release":
-
- APP_ABI := all
-
-> For the list of all supported ABIs and details about their usage and
-> limitations, please read [CPU-ARCH-ABIS](CPU-ARCH-ABIS.html).
-
-- - - -
-APP_PLATFORM
-> Name the target Android platform. For example, '`android-3`' correspond
-> to Android 1.5 system images. For a complete list of platform names and
-> corresponding Android system images, read [STABLE-APIS](STABLE-APIS.html).
-
-- - - -
-APP_STL
-> By default, the NDK build system provides C++ headers for the minimal
-> C++ runtime library (`/system/lib/libstdc++.so`) provided by the Android
-> system.
->
-> However, the NDK comes with alternative C++ implementations that you can
-> use or link to in your own applications. Define APP_STL to select one of
-> them. Examples are:
-
- APP_STL := stlport_static --> static STLport library
- APP_STL := stlport_shared --> shared STLport library
- APP_STL := system --> default C++ runtime library
-
-> For more information on the subject, please read [CPLUSPLUS-SUPPORT](CPLUSPLUS-SUPPORT.html).
-
-- - - -
-APP_GNUSTL_FORCE_CPP_FEATURES
-> In prior NDK versions, the simple fact of using the GNU libstdc++
-> runtime (i.e. by setting APP_STL to either '`gnustl_static`' or
-> '`gnustl_shared`') enforced the support for exceptions and RTTI in all
-> generated machine code. This could be problematic in specific, but rare,
-> cases, and also generated un-necessarily bigger code for projects that
-> don't require these features.
->
-> This bug was fixed in NDK r7b, but this means that if your code requires
-> exceptions or RTTI, it should now explicitly say so, either in your
-> APP_CPPFLAGS, or your LOCAL_CPPFLAGS / LOCAL_CPP_FEATURES definitions.
->
-> To make it easier to port projects to NDK r7b and later, one can
-> optionally defined APP_GNUSTL_CPP_FEATURES to contain one or more of the
-> following values:
-
- exceptions -> to enforce exceptions support for all modules.
- rtti -> to enforce rtti support for all modules.
-
-> For example, to get the exact same behaviour than NDK r7:
-
- APP_GNUSTL_FORCE_CPP_FEATURES := exceptions rtti
-
-> IMPORTANT: This variable is provided here as a convenience to make it
-> easier to transition to a newer version of the NDK. It will
-> be removed in a future revision. We thus encourage all
-> developers to modify the module definitions properly instead
-> of relying on it here.
-
-- - - -
-APP_SHORT_COMMANDS
-> The equivalent of LOCAL_SHORT_COMMANDS for your whole project. See the
-> documentation for this variable in [ANDROID-MK](ANDROID-MK.html).
-
-- - - -
-NDK_TOOLCHAIN_VERSION
-> Define this variable to either 4.6, 4.7 or 4.8 to select version of
-> the GCC compiler. 4.6 is the default
-
-- - - -
-APP_PIE
-> Starting from Jelly Bean (4.1), Android's dynamic linker supports
-> position-independent executables (PIE), which are built with `-fPIE`.
-> This flag makes it harder to exploit memory corruption bugs by
-> randomization the location of the code.
-> By default, `ndk-build` will automatically set this value to '`true`' if
-> your project targets `android-16` or higher. You may set it manually
-> to either '`true`' or '`false`'.
->
-> IMPORTANT: PIE executables *cannot* run on Android releases prior to 4.1.
->
-> Note that this only applies to executables. It has no effect when
-> building shared or static libraries.
-
-- - - -
-APP_THIN_ARCHIVE
-> Sets the default value of LOCAL_THIN_ARCHIVE for all static library
-> modules in this project. For more information, see the documentation
-> for LOCAL_THIN_ARCHIVE in [ANDROID-MK](ANDROID-MK.html).
-
-- - - -
-A trivial `Application.mk` file would be:
-
- -------------- cut here -------------------------
- APP_PROJECT_PATH := <path to project>
- -------------- cut here -------------------------
-
diff --git a/docs/text/CHANGES.text b/docs/text/CHANGES.text
deleted file mode 100644
index e16b58353..000000000
--- a/docs/text/CHANGES.text
+++ /dev/null
@@ -1,2860 +0,0 @@
-Android NDK ChangeLog:
-
-----------------------------------------------------------------------------
-android-ndk-r9d
-===
-
-IMPORTANT CHANGES:
----
-
-- Added Clang 3.4; NDK_TOOLCHAIN_VERSION=clang now picks Clang 3.4.
- GCC 4.6 remains the default.
-
-- For ARM: Added APP_ABI=armeabi-v7a-hard. All ARM toolchain are rebuilt with
- additional multilib option -mfloat-abi=hard. With "APP_ABI=armeabi-v7a-hard",
-> 1. ndk-build add "TARGET_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1" and
- "TARGET_LDFLAGS += -Wl,--no-warn-mismatch -lm_hard" on top of the existing
- flags for armeabi-v7a. The final library is installed at libs/armeabi-v7a,
- (ie. can't coexist with armeabi-v7a in the same APP_ABI). Also note that APP_ABI=all
- expands to "armeabi armeabi-v7a x86 mips" as before.
-> 2. make-standalone-toolchain.sh copies additional libaries under /hard directories.
- Add the above CFLAGS and LFLAGS in your makefile for GCC/clang to link with
- libraries in /hard
-
-- For X86: Added yasm and LOCAL_ASMFLAGS/EXPORT_ASMFLAGS.
- ndk-build use prebuilts/*/bin/yasm* to compile source specified in LOCAL_SRC_FILES
- with .asm extension
-
-- Updated mclinker to 2.6.0 with -gc-sections support
-
-- Added experimental libc++ support (upstream r201101). To use it:
-> 1. Add "APP_STL := c++_static" or "APP_STL := c++_shared" in Application.mk.
- You may rebuild from source via "LIBCXX_FORCE_REBUILD := true"
-> 2. "make-standalone-toolchain.sh --stl=libc++" to create standalone
- toolchain with libc++ headers/lib
- See b.android.com/36496 and CPLUSPLUS-SUPPORT.html
-
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed GCC 4.6/4.8 ARM EABI uncaught throw from unexpected exception
- handler.
- See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59392
-
-- Fixed GCC 4.8 not correctly resolve partial specialization of template with
- dependent non-type template argument.
- See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59052
-
-- Added more modules to prebuilt python
-> 1. linux: zlib, nis, crypt, _curses and _curses_panel
-> 2. darwin: zlib, bz2, _curses, _curses_panel, _hashlib, _ssl
-> See b.android.com/59902
-
-- Fixed X86/MIPS' gdbserver event_getmsg_helper
-
-- Fixed numerous issues in the RenderScript NDK toolchain, including issues with
- compatibility across older devices and C++ reflection.
-
-
-OTHER BUG FIXES:
----
-
-- Fixed headers
-> 1. Fixed typo in sources/android/support/include/iconv.h.
- See http://b.android.com/63806
-> 2. Fixed missing #include <sys/types.h> in android/asset_manager.h for API >= 13
- See http://b.android.com/64988
-> 3. Fixed missing #include <stdint.h> in android/rect_manager.h for API >= 14
-> 4. Added JNICALL to JNI_OnLoad and JNI_OnUnload in jni.h. Note that JNICALL
- is defined to __NDK_FPABI__ (see sys/cdefs.h)
-> 5. Fixed the following headers to be inclued alone: android/tts.h, EGL/eglext.h,
- fts.h GLES/glext.h, GLES2/gl2ext.h, OMXAL/OpenMAXSL_Android.h, SLES/OpenSLES_Android.h,
- sys/prctl.h, sys/utime.h. See http://b.android.com/64679
-> 6. Added sys/cachectl.h for all archs. Only has effect to mips, but
- developers no longer need to put #ifdef __mips__ around it
-> 7. Fixed platforms/android-18/include/android/input.h by adding
- __NDK_FPABI__ to functions taking/returning float/double.
-> 8. Fixed MIPS' "struct stat" which was incorrectly set to its 64-bit
- counterpart for API>=12 (regression in the last r9c release)
-> 9. Define __PTHREAD_MUTEX_INIT_VALUE, __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE,
- and __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE for API < 9
-> 10. Added scalbln, scalblnf, and scalblnl to x86's libm.so for API >= 18
-
-- Fixed gabi++ std::unexpected() to call std::terminate() so that
- user-defined std::terminate() handler have chance to run
-
-- Fixed gabi++ to catch std::nullptr
-
-- Fixed samples Teapot and MoreTeapots to
-> 1. Rendering issue in Tegra2/3. Now having medium precision for specular
- variable, so that specular power can be <1.0
-> 2. Workaround an issue where SYSTEM_UI_FLAG_IMMERSIVE_STICKY is invalidated
- when a volume button is pressed. Issue remains: Immersive mode still does
- not recover when the screen has been rotated, due to onSystemUiVisibilityChange
- is not triggered when screen is rotated.
-
-- Fixed ndk-build to add -rpath-link=$SYSROOT/usr/lib and -rpath-link=$TARGET_OUT
- for linking executable with ld.bfd. See b.android.com/64266
-
-- Removed -Bsymbolic from all STL build
-
-- Fixed ndk-gdb-py.cmd by setting SHELL as env. var. instead of passing it to
- python.exe which can't understand it.
- See b.android.com/63054
-
-- Fixed "make-standalone-toolchain.sh --stl=stlport" to copy instead of symlink
- gabi++ headers, otherwise the one created in cygwin wont' be understood by
- cmd.exe and MinGW shell
-
-
-OTHER CHANGES:
----
-
-- "chmod a+x" all *cmd scripts previously intended for use in CMD.exe only,
- in case developers prefer to use ndk-build.cmd in cygwin instead of the
- recommended ndk-build
-
-- Speed up make-standalone-toolchain.sh by moving instead of copying if
- destination directory (eg. --install-dir=<dir>) doesn't exist.
-
-
-----------------------------------------------------------------------------
-android-ndk-r9c
-===
-
-IMPORTANT CHANGES:
----
-
-- This is a bug-fix-only release.
-
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed GCC 4.8 ARM where stack pointer is restored too early than access
- to varaible in stack frame via frame pointer.
- See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854
-
-- Fixed GCC 4.8 libstdc++ where the generated code random segfault on std::nth_element
- See http://b.android.com/62910
-
-- Fixed GCC 4.8 ICE in cc1/cc1plus with -fuse-ld=mcld. Message reads:
-> cc1: internal compiler error: in common_handle_option, at opts.c:1774
-
-- Fixed -mhard-float support for __builtin math functions.
- See http://b.android.com/62496. Please track comment of http://b.android.com/61784
- for on-going fixes for -mhard-float with STL
-
-
-OTHER BUG FIXES:
----
-
-- Fixed headers
-> 1. Fixed prototype of poll to poll(struct pollfd *, nfds_t, int); in poll.h
-> 2. Added utimensat and futimens to libc.so to API level >=12 and >=19, respectively.
-> 3. Added missing clock_settime() and clock_nanosleep() in time.h for API>=8.
-> 4. Added CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE,
- CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM, and CLOCK_BOOTTIME_ALARM in time.h.
- Removed obsolete CLOCK_REALTIME_HR and CLOCK_MONOTONIC_HR.
-
-- Refactored samples Teapot, MoreTeapots and source/android/ndk_helper.
- Use hard float-abi for armeabi-v7a, added immersive mode in android-19, etc.
- Also fix crash on X86 device in /system/lib/libdvm.so Check_ReleaseStringUTFChars
-
-- Fixed ndk-build fails in cygwin if NDK package is referenced via symlink
-
-- Fixed ndk-build.cmd fails in windows cmd.exe if LOCAL_SRC_FILES
- contain absolute path.
- See https://android-review.googlesource.com/#/c/69992
-
-- Fixed ndk-stack to proceed even when it can't parse a frame due to
- unable to locate routine, filename, or line number, in which case "??"
- is printed.
-
-- Fixed ndk-stack windows-x64_64 erroneously matches frame line with in "stack:"
- section even when the line has no word "pc", "eip", or "ip" in it, eg.
-> I/DEBUG ( 1151): #00 5f09db68 401f01c4 /system/lib/libc.so
-
-- Fixed gabi++ to not use malloc() to allocate C++ thread-local
- objects, and avoid dead-lock in gabi++ when libc.debug.malloc is non-zero in
- userdebug/eng Android platform builds
-
-
-OTHER CHANGES:
----
-
-- Added LOCAL_EXPORT_LDFLAGS
-
-- Introducing NDK_PROJECT_PATH=null for use in an integrated build system
- where options are explicitly passed to ndk-build. With it ndk-build
- make no attempt to look for NDK_PROJECT_PATH, and as a result the following
- variables depending on NDK_PROJECT_PATH to be explicitly specified
- (since they can on longer derive default value from NDK_PROJECT_PATH when it's null):
- NDK_OUT, NDK_LIBS_OUT, APP_BUILD_SCRIPT, NDK_DEBUG (optional, default to 0),
- and other APP_* used to be in Application.mk
-
-- Allow APP_ABI to be comma-delimited list, eg. APP_ABI := "armeabi,armeabi-v7a"
-
-- Rebuild all STL with debugging info (ie. "-g") in separate optional package
- android-ndk-r9c-cxx-stl-libs-with-debugging-info.zip.
- This helps ndk-stack to provide better stack dump across STL.
- The code/size of the final stripped shouldn't be affected.
-
-- Enhanced hello-jni samples to report APP_ABI at compilation
-
-- Static libraries are built with Deterministic (option D) mode of ar
- tool. See http://b.android.com/60705
-
-
-----------------------------------------------------------------------------
-android-ndk-r9b
-===
-
-IMPORTANT CHANGES:
----
-
-- Updated include/android/*h and math.h for all API up to 18, add API level 13,
- 15, 16 and 17 in the process.
- See commit message in https://android-review.googlesource.com/#/c/68012
- and https://android-review.googlesource.com/#/c/68014 for added APIs.
- Issues http://b.android.com/47150, http://b.android.com/58528, and
- http://b.android.com/38423
-
-- Added API19 for Renderscript binding support
-
-- Supported -mhard-float in the existing "armeabi-v7a" ABI. See
- tests/device/hard-float/jni/Android.mk for details and current
- restriction on Clang.
-
-- Rebased GCC 4.8 to 4.8.2, and add diagnostic color support. To enable
- it, set -fdiagnostics-color=auto or -fdiagnostics-color=always, or
- simply export GCC_COLORS, eg.
-> export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
-
-> See http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html
-
-- Added two new samples to demostrate OpenGL ES3 features: Teapot and MoreTeapots.
- Run on devices with API>=16 (Don't run on emulator)
-
-- Both GCC 4.7 and Clang 3.2 are deprecated, and will be removed from the next release.
-
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed ARM GCC 4.6 thumb2 fails to generate 16bit relative jump table.
- See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48328
-
-- Fixed GCC 4.8 ICE on g++.dg/cpp0x/lambda/lambda-defarg3.C
- See https://android-review.googlesource.com/#/c/62770 and http://gcc.gnu.org/ml/gcc/2013-07/msg00424.html
-
-- Fixed Windows 32-bit *-gdb.exe fail to launch.
- See http://b.android.com/58975
-
-- Fixed GCC 4.8 ICE when building bullet library with error message reads:
-> internal compiler error: verify_flow_info failed
-
-> See http://b.android.com/58916 and http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58165
-
-- Fixed GDB/ARM to skip ARM.exidx data for unwinding in prologue code.
- Add a command "set arm exidx-unwinding" to control exidx-based stack
- unwinding.
- See http://b.android.com/55826
-
-- Fixed Clang 3.3 MIPS where HI and LO registers are incorrectly reused.
-
-- Fixed MIPS 4.7 ICE with erro reads:
-> external/icu4c/i18n/decimfmt.cpp:1322:1: internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
-
-> See http://gcc.gnu.org/ml/gcc-patches/2012-12/msg00830.html
-
-
-OTHER BUG FIXES:
----
-
-- Fixed headers
-> 1. Fixed ARM's WCHAR_MIN / WCHAR_MAX to be unsigned according to spec. (X86/MIPS'
- are signed). Define _WCHAR_IS_ALWAYS_SIGNED to restore old behavior.
- See http://b.android.com/57749
-> 2. Fixed include/netinet/tcp.h to contain TCP_INFO state enum.
- See http://b.android.com/38881
-> 3. Fixed cdefs_elh.h _C_LABEL_STRING macro which causes warnings with gcc 4.8 toolchain in c++11 mode.
- See http://b.android.com/58135, http://b.android.com/58652
-> 4. Removed non-existence functions imaxabs and imaxdiv from header inttypes.h
-> 5. Marked pthread_exit() as __noreturn, and pthread_self() as __pure2.
- See http://b.android.com/60686
-> 6. Added missing mkdtemp() already exists in bionic in stdlib.h
-
-- Fixed samples/gles3jni build with Clang at android-11
-
-- Fixed mclinker to allow mulitple occurrences of the following options: -gc-sections and --eh-frame-hdr.
-
-- Fixed mclinker to accept --no-warn-mismatch
-
-- Fixed cpu-features not to assume all VFPv4 devices support IDIV.
- Now it only adds IDIV to white-listed devices (Nexus 4 at this moment)
- http://b.android.com/57637
-
-- Fixed android_native_app_glue.c to stop errors being logged erroneously on event predispatch
-
-- Fixed all operations on gabi++ terminate and unexpected_handler to be thread-safe
-
-- More fixes on Clang -integrated-as to pass tests ssax-instructions and fenv
-
-- Fixed GCC 4.6/4.7/4.8 to pass linker option --eh-frame-hdr even for
- static executable. See http://gcc.gnu.org/ml/gcc-patches/2012-09/msg00969.html
-
-- Fixed extra apostrophe in docs/CPU-ARCH-ABIS.html
- See docs/NDK-DEPENDS.html, http://b.android.com/60142
-
-- Fixed extra quotes in ndk-build output on Windows
- See http://b.android.com/60649
-
-- Fixed Clang 3.3 to compile ARM atomic builtin __atomic_fetch_add/sub/or/...
-
-- Fixed Clang 3.3 ICE on customized vfprintf. See
- http://llvm.org/bugs/show_bug.cgi?id=16344
-
-
-OTHER CHANGES:
----
-
-- Enabled OpenMP for all GCC: Add the following flags: "LOCAL_CFLAGS += -fopenmp"
- and "LOCAL_LDFLAGS += -fopenmp".
- Please find examples in tests/device/test-openmp
-
-- Significantly reduced the size of ld.mcld (1.5MB vs. ld.bfd 3.5MB and ld.gold 7.5MB)
- and result in ~20% speed up too.
-
-- Added LOCAL_CONLYFLAGS and APP_CONLYFLAGS to specify options applicable to C only
- but not C++. The reason being that the existing LOCAL_CFLAGS and APP_CFLAGS are
- also used for C++ compilation (to save trouble of specifying most options twice),
- option like -std=gnu99 may fail g++ (warning) and clang++ (error).
-
-- Added gabi++ array helper functions
-
-- All libgcc.a in gcc are built with -funwind-tables to allow stack to unwind past __aeabi_idiv0
- for example
-
-- Added Ingenic MXU support in MIPS GCC 4.6/4.7/4.8 with new option -mmxu
-
-- Extended MIPS GCC 4.6/4.7/4.8 -mldc1-sdc1 to control ldxc1/sdxc1 too
-
-- Added crazy linker. See sources/android/crazy_linker/README.TXT
-
-- Fixed bitmap-plasma to draw on full screen rather than 200x200
-
-- Reduced linux and darwin toolchain size by 25% (by symlink to
- identical files)
-
-
-----------------------------------------------------------------------------
-android-ndk-r9
-===
-
-IMPORTANT CHANGES:
----
-
-- Added GLES3 headers/libraries and new API level 18.
- See docs/STABLE-APIS.html and the new samples/gles3jni/README
-
-- Added GCC 4.8 compiler. Since GCC 4.6 is still the default,
- you need to explicitly enable it:
-> 1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=4.8 or add it
- in Application.mk.
-> 2. For standalone: Use "--toolchain=" option in make-standalone-toolchain.sh.
- eg. "--toolchain=arm-linux-androideabi-4.8"
-
-> Note that:
-
-> 1. -Wunused-local-typedefs is enabled by -Wall. Be sure to add "\__attribute__((unused))"
- if you use compile-time assert like sources/cxx-stl/stlport/stlport/stl/config/features.h
- line #311.
- See https://android-review.googlesource.com/#/c/55460
-> 2. Since 4.7 -munaligned-access is default for ARMv6+. You may
- compile with -mno-unaligned-access for kernel not supporting it.
-
-- Added Clang 3.3; NDK_TOOLCHAIN_VERSION=clang now picks Clang 3.3.
-
-- Both GCC 4.4.3 and Clang 3.1 are deprecated, and will be removed
- from the next release.
-
-- Gdb is now built with python 2.7.5 support.
-
-- Added mclinker for Windows host. Since ld.gold is the default
- where available, you need to add -fuse-ld=mcld in LOCAL_LDFLAGS or
- APP_LDFLAGS to explicitly enable it.
-
-- New tool ndk-depends to print ELF library dependencies.
- See docs/NDK-DEPENDS.html, http://b.android.com/53486
-
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed potential event handling issue in android_native_app_glue.
- See http://b.android.com/41755
-
-- Fixed ARM/GCC-4.7 to generates sufficient alignment for NEON
- instruction vst/vld.
- See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57271
-
-- Fixed GCC 4.4.3/4.6/4.7 ICE at const negative index to string literal
- See http://b.android.com/54623
-
-- Fixed GCC 4.7 segfault on const init to object address.
- See http://b.android.com/56508
-
-- Fixed GCC 4.6 ARM broken -Os on boost 1.52.0.
- See http://b.android.com/42891
-
-- Fixed libc.so and libc.a to contain wait4 already exist in header.
- See http://b.android.com/19854
-
-- Fixed x86's libc.so and libc.a to contain clone()
-
-- Fixed LOCAL_SHORT_COMMANDS bug where linker.list file is empty and not
- used.
- See http://b.android.com/57105
-
-- Fixed GCC MIPS on darwin to use CFI directives. Without this,
- "ld.mcld --eh-frame-hdr" fail very often.
-
-- Fixed Clang 3.2 X86/MIPS ICE in llvm/lib/VMCore/Value.cpp.
- See https://android-review.googlesource.com/#/c/59021
-
-- Fixed GCC 4.7 64-bit Windows assembler crash with error message reads:
- "out of memory allocating 4294967280 bytes"
-
-- ndk-gdb "--start" or "--launch" now has application waits for gdbserver to
- attach, which allows breakpoints set in early execution path (eg. JNI) to
- be hit more reliably. It does needs jdb and produces warning about pending
- breakpoints. You may specify "--nowait" to restore previous behavior.
- See http://b.android.com/41278
-
-- Fixed GDB crashes when library list is empty
-
-- Fixed GDB crashes when "stepi" past a "bx pc" or "blx pc" Thumb instruction
- See http://b.android.com/56962 and http://b.android.com/36149
-
-- Fixed MIPS gdbserver to look for DT_MIPS_RLD_MAP instead of DT_DEBUG.
- See http://b.android.com/56586
-
-- Fixed ndk-build circular dependency, eg. A->B, B->B, then B was dropped from build.
- See http://b.android.com/56690
-
-
-OTHER BUG FIXES:
----
-
-- Fixed ndk-build to be able to replace NDK_TOOLCHAIN_VERSION=clang specified at
- commandline to clang3.2. (Fine if it's specified in environment variable).
- Error message reads
-
- ... ndk/toolchains/arm-linux-androideabi-clang/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc
- Command not found
-
-- Fixed gabi++ sizeof(_Unwind_Exception) to be 24 for MIPS in Clang.
- See https://android-review.googlesource.com/#/c/54141
-
-- Fixed ndk-build to ensure that built libraries actually are removed on
- ndk-build clean, from projects that include prebuilt static libraries.
- See See http://b.android.com/53527,
- https://android-review.googlesource.com/#/c/54461/ and
- https://android-review.googlesource.com/#/c/54480
-
-- Fixed NDK_ANALYZE=1 to be less verbose
-
-- Fixed gnu-libstdc++/Android.mk to include /backward path.
- Error message reads:
-
- sources/cxx-stl/gnu-libstdc++/4.6/include/ext/hash_map:61:30: fatal
- error: backward_warning.h: No such file or directory
-
-> See http://b.android.com/53404
-
-- Fixed stlport new somtimes return randon values
-
-- Fixed ndk-gdb to match in the order of CPU_ABIS, not APP_ABIS.
- See http://b.android.com/54033
-
-- Fixed NDK 64-bit on MacOSX choses wrong path for compiler.
- See http://b.android.com/53769
-
-- Fixed to detect 64-bit Windows Vista.
- See http://b.android.com/54485
-
-- Fixed X86 ntonl/swap32. Error message reads:
- error: invalid 'asm': operand number out of range"
-
-> See http://b.android.com/54465 and
- https://android-review.googlesource.com/#/c/57242
-
-- Fixed ld.gold to merge string literals
-
-- Fixed ld.gold to handle large symbol alignemnt
-
-- Fixed ld.gold to enable "--sort-section=name" option
-
-- Fixed GCC 4.4.3/4.6/4.7 to supress -export-dynamic for statically linked
- programs. GCC no longer adds .interp section for statically linked programs.
-
-- Fixed GCC 4.4.3 stlport compilation error about inconsistent typedef of
- _Unwind_Control_Block.
- See https://android-review.googlesource.com/#/c/54426
-
-- Fixed awk scripts to handle AndroidManifest.xml created on Windows
- which may contain trailing \r, and cause error message reads.
- See http://b.android.com/42548
-
-> __gmsl:512: *** non-numeric second argument to wordlist' function: ''. Stop.
-
-> Invalid attribute name:
-> package
-
-- Fixed make-standalone-toolchain.sh to probe the prebuilts/ dir to detect the
- appropriate default host bitness.
-
-- Fixed clang3.2 -integrated-as
-
-- Fixed clang3.2 ARM EHABI compact model pr1/pr2 handlerdata
-
-- Fixed clang error with option "-mllvm -arm-enable-ehabi" which reads
-
-> clang: for the -arm-enable-ehabi option: may only occur zero or one times!
-
-- Fixed NDK fails to build if there's no uses-sdk element in AndroidManifest.xml.
- See http://b.android.com/57015
-
-
-OTHER CHANGES:
----
-
-- Fixed headers
-> 1. \__set_errno in errno.h is deprecated, and libc.so no longer exports it.
- To be compatible in the meantime, __set_errno becomes an inlined function in header
-> 2. \#include "stdint.h" in elf.h.
- See http://b.android.com/55443
-> 3. Fixed sys/un.h to be included on its own.
- See http://b.android.com/53646
-> 4. Fixed MotionEvent_getHistorical family of APIs in usr/include/android/input.h to
- all take const AInputEvent* motion_event.
- See http://b.android.com/55873
-> 5. Fixed malloc_usable_size to take "const void*".
- See http://b.android.com/55725
-> 6. Fixed stdint.h to be more compatible with C99.
- See https://android-review.googlesource.com/#/c/46821
-> 7. Fixed wchar.h not to redefine WCHAR_MAX/WCHAR_MIN
-> 8. Fixed <inttypes.h> declaration for pointer-related PRI/SCN macros.
- See http://b.android.com/57218
-> 9. Changed sys/cdefs.h so __WCHAR_TYPE__ is 32-bit even for API < 9,
- ie. wchat_t is 32-bit for all API level.
- Define _WCHAR_IS_8BIT to restore old behavior.
- See http://b.android.com/57267
-
-- Added more fomatting in NDK docs/, and misc docs/ fixes including callbacks/threads and others.
-
-- Support "thin-archive" for building static libraries.
- See http://b.android.com/40303 and ANDROID-MK.html
-
-- Script make-standalone-toolchain.sh now supports stlport
- in addition to gnustl, with --stl=stlport.
- See http://b.android.com/53472 and STANDALONE-TOOLCHAIN.html
-
-- Script make-standalone-toolchain.sh --llvm-version= now also
- creates scripts $TOOLCHAIN_PREFIX-clang and $TOOLCHAIN_PREFIX-clang++
- in addition to clang and clang++, to avoid using host's clang/clang++
- by accident.
-
-- Added two flags to re-enable two optimizations in upstream Clang
- but disabled in NDK for better compatibility with code used to be
- compiled by GCC:
-> 1. Added a flags -fcxx-missing-return-semantics to re-enable "missing
- return semantics" in clang 3.2+. Normally for a value-returning
- function all paths should terminate with a return statment. If not,
- clang inserts undefined instruction (or trap in debug mode) at path
- w/o return statement. If you are sure your code is correct, use
- this flag for optimizer to take advantage of the undefined behavior.
- If you are not sure, don't use this flag. The caller may still receiver
- random incorrect value, but optimizer won't exploit it and make thing
- even worse to debug.
-> 2. Added a flag -fglobal-ctor-const-promotion to re-enable promoting
- global variables with static constructor to constant. With this
- flag, the global variable optimization pass of LLVM will try to
- evalutate the global variables with static constructors, and promote
- the global constants. Although this optimization is correct, it may
- cause some incompatability with code compiled by gcc. For example,
- code may do const_cast to cast the constant to mutable and modify it.
- In GCC the variable is in read-write and the code run by accident. But
- in Clang the const variable will be in read-only memory and crash
-
-- Added -mldc1-sdc1 to MIPS GCC and Clang compilers. By default
- compilers align 8-byte objects properly and emit instructions
- ldc1/sdc1 to move them around. If your app use custom allocator
- which doesn't always align new object 8-byte boundary like the default
- one does, your app may crashes due to ldc1/sdc1 on unaligned memory.
- In this case you may use -mno-ldc1-sdc1 to workaround.
-
-- Downgrade warning to "info" if APP_PLATFORM_LEVEL is larger than APP_MIN_PLATFORM_LEVEL.
- APP_PLATFORM_LEVEL may be lower than APP_PLATFORM in jni/Application.mk
- because NDK doesn't have headers for all level, and the actual level is
- shifted downward. APP_MIN_PLATFORM_LEVEL is retrieved from android:minSdkVersion
- in AndroidManifest.xml.
- See http://b.android.com/39752
-
-- cpu-features.c: add android_getCpuIdArm() and android_setCpuArm()
- This allows retrieving the ARM CPUID information easily.
- See http://b.android.com/53689
-
-- Clang now compiles with GCC 4.8's as/ld in ndk-build.
- Note that from GCC 4.7, "monotonic_clock" and "is_monotonic" are
- renamed to "steady_clock" and "is_steady", respectively
-
-- Added new warnings in ndk-build:
-> 1. if LOCAL_LDLIBS/LDFLAGS are used in static library modules
-> 2. if there is no module to build
-> 3. non-system libraries used in LOCAL_LDLIBS/LDFLAGS of shared library
- or executable modules
-
-- Updated ndk-build so that if APP_MODULES is not defined and only static libraries
- are listed in Android.mk, force-build all of them.
- See http://b.android.com/53502
-
-- ndk-build now supports absolute paths in LOCAL_SRC_FILES
-
-- Executable "`*-gdbtui", which is equivalent to "`*-gdb -tui", is removed for the sake of space.
-
-- Issue warning when EDG front-end turns _STLP_HAS_INCLUDE_NEXT
- back on.
- See http://b.android.com/53646
-
-- Added NDK_LIBS_OUT to override path for libraries/gdbserver from the default
- $PROJECT/libs. See OVERVIEW.html
-
-- Changed ndk-build defaults to compile code with format string protection
- "-Wformat -Werror=format-security". You may set
- LOCAL_DISABLE_FORMAT_STRING_CHECKS=true to disable it.
- See ANDROID-MK.html
-
-- Added STL pretty-print support in ndk-gdb-py.
- See NDK-GDB.html
-
-- Misc build/test
-> - Added tests based on googletest frameworks
-> - toolchain build script warns if shell isn't bash
-
-
--------------------------------------------------------------------------------
-android-ndk-r8e
-===
-
-IMPORTANT CHANGES:
----
-
-- NDK now delivers additional 64-bit host toolchain set (package name suffix
- `*-x86_64.*`)
-
-> 1. The ndk-build script uses 64-bit toolchain if it's present and your OS
- supports it. If you install both 32-bit and 64-bit toolchain on 64-bit
- OS, you may export NDK_HOST_32BIT=1 or add it to the command-line to
- always use the 32-bit host toolchain.
-
-> 2. For standalone: add to make-standalone-toolchain.sh "--system=linux-x86_64"
- on Linux or "--system=darwin-x86_64" on MacOSX to generate 64-bit host
- toolchain instead of the default 32-bit
-
-> See NDK-BUILD.html
-
-- Added Clang 3.2 compiler. Since GCC 4.6 is still the default, you need to
- explicitly enable it:
-
-> 1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.2 (or
- NDK_TOOLCHAIN_VERSION=clang which picks the most recent among the
- clang compilers in the package) or add it in Application.mk.
-
-> 2. For standalone: Add "--llvm-version=3.2" to make-standalone-toolchain.sh
- and replace CC and CXX in your makefile with <tool-path>/bin/clang
- and <tool-path>/bin/clang++.
-
-- Added static code analyzer for Linux/MacOSX hosts
-
-> 1. For ndk-build, either export NDK_ANALYZE=1 or add it to the command-line.
-
-> 2. For standalone, please refer to ndk-build for example to run scan-build
- using /path/to/standalone/bin/<arch>/analyzer.
-
-> This feature is experimental now but welcome to try and report issues.
-
-- Added MCLinker for Linux/MacOSX hosts. Since ld.gold is the default
- where available, you need to add -fuse-ld=mcld in LOCAL_LDFLAGS or
- APP_LDFLAGS to explicitly enable it.
-
-> This feature is experimental now but welcome to try and report issues.
- Please find project page: https://code.google.com/p/mclinker/
-
-- ndk-build now uses topological sort for module dependencies, ie.
- it automatically sorts out the order of libraries specified in
- LOCAL_STATIC_LIBRARIES, LOCAL_WHOLE_STATIC_LIBRARIES and
- LOCAL_SHARED_LIBRARIES.
-
-> See http://b.android.com/39378 and an example in tests/build/topological-sort.
-
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed build script to build all toolchains in -O2. Toolchains
- in previous releases were incorrectly built without optimization.
-
-- Fixed build script which unconditionally builds Clang/llvm for MacOSX
- in 64-bit
-
-- Fixed GCC 4.6/4.7 ICE gen_thumb_movhi_clobber at config/arm/arm.md:5832.
- See http://b.android.com/52732
-
-- Fixed GCC/ARM 4.6/4.7 fails to link code using 64-bit atomic built-in
- functions.
- See http://b.android.com/41297
-
-- Fixed GCC 4.7 linker error reads like
- .../arm-linux-androideabi/bin/ld: error: DIV usage mismatch between
- out/target/product/generic/obj/STATIC_LIBRARIES/ds_intermediates/ds.a(ak.o)
- and output.
-
-> See http://sourceware.org/ml/binutils/2012-12/msg00202.html
-
-- Fixed GCC 4.7 ICE in build_data_member_initialization, at
- cp/semantics.c:5790
-
-- Fixed GCC 4.7 ICE in redirect_eh_edge_1, at tree-eh.c:2214.
- See http://b.android.com/52909
-
-- Fixed a GCC 4.7 segfault.
- See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55245
-
-- Fixed to <chrono> clock resolution and enable steady_clock.
- See http://b.android.com/39680
-
-- Fixed to enable _GLIBCXX_HAS_GTHREADS for GCC 4.7 libstdc++.
- See http://b.android.com/41770 and http://b.android.com/41859
-
-- Fixed X86 MXX/SSE code fails to link due to missing posix_memalign.
- See https://android-review.googlesource.com/#/c/51872
-
-- Fixed GCC4.7/X86 segfault in i386.c distance_non_agu_define_in_bb().
- See https://android-review.googlesource.com/#/c/50383
-
-- Fixed GCC4.7/X86 to resotre earlier cmov behavior.
- See http://gcc.gnu.org/viewcvs?view=revision&revision=193554
-
-- More fixes to handle NULL return value of setlocale() in
- libstdc++/GCC4.7.
- See http://b.android.com/46718
-
-- Fixed ld.gold runtime undefined reference to __exidx_start/_end.
- See https://android-review.googlesource.com/#/c/52134
-
-- Fixed Clang3.1 ICE using Eigen library.
- See http://b.android.com/41246
-
-- Fixed Clang3.1 ICE including <chrono> in C++11 mode.
- See http://b.android.com/39600
-
-- Fixed Clang3.1 ICE when generating object code for a method
- call to a uniform initialized rvalue.
- See http://b.android.com/41387
-
-- Fixed Clang3.1/X86 stack realignment.
- See https://android-review.googlesource.com/#/c/52154
-
-- Fixed GDB SIGILL when debugging on platform 4.1.2.
- See http://b.android.com/40941
-
-- Fixed GDB cannot set "source:line" breakpoints when symbols contain
- frankenpaths.
- See http://b.android.com/42448
-
-- Fixed GDB read_program_header for MIPS PIE executables.
- See https://android-review.googlesource.com/#/c/49592
-
-- Fixed STLport segfault in uncaught_exception().
- See https://android-review.googlesource.com/#/c/50236
-
-- Fixed STLport Bus error in exception handling due
- to unaligned access of DW_EH_PE_udata2, 4 and 8.
-
-- Fixed Gabi++ nothrow new[] infinite recursion.
- See http://b.android.com/52833
-
-- Fixed Gabi++ wrong offset to EH pointer.
- See https://android-review.googlesource.com/#/c/53446
-
-- Removed Gabi++ redundant free on exception object.
- See https://android-review.googlesource.com/#/c/53447
-
-
-OTHER BUG FIXES:
----
-
-- Fix NDK headers
-
-> 1. Remove redundant definitions of size_t, ssize_t, and ptrdiff_t
-> 2. Fixed MIPS and ARM fenv.h
-> 3. Fixed stddef.h to not re-define offsetof already exists
- in toolchain
-> 4. Fixed elf.h to contain Elf32_auxv_t and Elf64_auxv_t.
- See http://b.android.com/38441
-> 5. Fixed the #ifdef C++ in OpenSLES_AndroidConfiguration.h.
- See http://b.android.com/53163
-
-- Fixed STLport to abort after OOM instead of (silent) exit
-
-- Fixed 'system' and 'Gabi++' headers to be able to compile
- with API level < 9
-
-- Fixed cpufeatures to not parse /proc/self/auxv.
- See http://b.android.com/43055
-
-- Fixed ld.gold to not depending on host libstdc++, and in case
- of windows, library libgcc_sjlj_1.dll
-
-- Fixed Clang3.1 which emits inconsistent register list in .vsave
- and fails assembler. eg.
- .vsave {d8, d9, d10, d11, d12, d13, d14, s20, s21, s22}
- See https://android-review.googlesource.com/#/c/49930
-
-- Fixed Clang3.1 to be able to compile libgabi++ and pass test-stlport
- on MIPS.
- See https://android-review.googlesource.com/#/c/51961
-
-- Fixed Clang3.1 to only enable exception by default for C++,
- not for C
-
-- Misc fixes in Clang3.1 to pass most GNU exception tests
-
-- Fixed script clang/clang++ in standalone NDK compiler to
- detect -cc1 and don't specify "-target" when found
-
-- Fixed ndk-build to observe NDK_APP_OUT set in Application.mk
- See http://b.android.com/42477
-
-- Fixed X86 libc.so/lib.a missing sigsetjmp/siglongjmp already
- declared in setjmp.h.
- See http://b.android.com/19851
-
-- Patched GCC 4.4.3/4.6/4.7 libstdc++ to work with Clang in C++11.
- See http://clang.llvm.org/cxx_status.html
-
-- Fixed cygwin path in argument passed to HOST_AWK
-
-- Fixed ndk-build warning in windows when running from project's jni/
- directory.
- See http://b.android.com/40192
-
-- Fixed ndk-build won't build if makefile has tailing whitespace in
- LOCAL_PATH definition.
- See http://b.android.com/42841
-
-
-OTHER CHANGES:
----
-
-- Enabled threading support in GCC/MIPS toolchain
-
-- Unhided GCC EH helpers __cxa_begin_cleanup and __cxa_type_match
- in GNU libstdc++.
-
-> See tests/build/b8247455-hidden-cxa/jni/Android.mk
-
-- Gabi++ and STLport static libraries are now built with hidden
- visibility except for EH helpers
-
-- STLport in ARM is now built in thumb mode
-
-- Added support for std::set_new_handler in Gabi++.
- See http://b.android.com/52805
-
-- Enabled FUTEX in GNU libstdc++
-
-- ndk-build no longer copies prebuilt static library to project's
- obj/local/<abi>/directory.
- See http://b.android.com/40302
-
-- Removed __ARM_ARCH_5*__ from ARM toolchains/*/setup.mk.
- See http://b.android.com/21132
-
-- Built additional GNU libstdc++ libaries in thumb mode for ARM
-
-- Enabled MIPS floating-point madd/msub/nmadd/nmsub/recip/rsqrt
- instructions with 32-bit FPU
-
-- Enabled graphite in GCC 4.6 and 4.7. Allow more loop optimizations:
- -fgraphite, -fgraphite-identity, -floop-block, -floop-flatten,
- -floop-interchange, -floop-strip-mine, -floop-parallelize-all,
- and -ftree-loop-linear.
-
-> See http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
-
-- Enabled polly for clang3.1/3.2 on Linux/MacOSX 32-bit hosts which analyzes
- and optimizes memory access pattern.
-
-> See http://polly.llvm.org
-
-- Enabled -flto in GCC 4.7, 4.6, clang3.2 and Clang3.1 on linux (Clang LTO
- via LLVMgold.so, ie. no MIPS because it doesn't have ld.gold)
-
-- Enabled --plugin and --plugin-opt for ld.gold in GCC 4.6/4.7
-
-- Enabled --text-reorder for ld.gold in GCC 4.7
-
-- GNU libstdc++ is now configured with _GLIBCXX_USE_C99_MATH which will undef
- isinf, etc (*1), in bionic header. If you have code which does the following
-
- #include <math.h>
- ... use isinf
- #include <cmath>
- #include <math.h>
- ... use isinf // fails
-
-> The 2nd use of isinf may fail because cmath undefined isinf
-
- (*1) Math macro in bionic undefined by cmath: fpclassify, isfinite, isinf,
- isnan, isnormal, isgreater, isgreaterequal, isless, islessequal,
- islessgreater, isunordered, signbit
-
-- Added APP_LDFLAGS. See ANDROID-MK.html.
-
-- Allow NDK_LOG=0, NDK_HOST_32BIT=0 to disable NDK_LOG and host 32-bit toolchain,
- respectively.
-
-- Changed the default GCC/X86 -march=/-mtune= from pentiumpro/generic to i686/atom
-
-- Misc toolchain build script enhancements:
-
-> 1. Fixed a race condition in build-gcc.sh mingw build which used to prevent
- high degree of parallel build
-> 2. build-gabi++.sh and build-stlport.sh can now run from NDK package.
- See http://b.android.com/52835
-> 3. Fixed run-tests.sh in MSys
-> 4. Better 64-bit host toolchain and canadian build supports
-> 5. Updated build-mingw64-toolchain.sh for modern versions
-> 6. Option to build libgnustl_static.a and stlport_static.a without hidden
- visibility
-
-
--------------------------------------------------------------------------------
-android-ndk-r8d
-===
-
-IMPORTANT CHANGES:
----
-
-- Added GCC 4.7 compiler. Since GCC 4.6 is still the default,
- you need to explicitly enable it:
-
-> 1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=4.7 or add it
- in Application.mk.
-> 2. For standalone: Use "--toolchain=" option in make-standalone-toolchain.sh.
- eg. "--toolchain=arm-linux-androideabi-4.7"
-
-> This feature is experimental now but welcome to try and report issues.
-
-- Added stlport exception support via gabi++. Note that the new gabi++
- depends on dlopen, etc, meaning that:
-
-> 1. libstlport_static.a can no longer be used in "static" executable (-static,
- only possible with standalone toolchain). "dynamic" executable (eg.
- include $(BUILD_EXECUTABLE)) can link fine because compiler impliciently adds -ldl
-> 2. If your project links with "-nostdlib -Wl,--no-undefined", you need to provide
- your own -ldl
-
-> See CPLUSPLUS-SUPPORT.html.
-
-> This feature is experimental now and works better with GCC 4.6/4.7
- than with GCC 4.4.3 and clang3.1. Welcome to try and report issues.
-
-- Add -mstack-protector-guard= option for x86 to choose between "global"
- (default, compatible with older bionic) and "tls" (new %gs:20) for
- -fstack-protector, -fstack-protector-all, and -fstack-protector-strong
- (GCC 4.6+). Note that this alone doesn't enable any -fstack-protector*
-
-- Add android_setCpu() to sources/android/cpufeatures/cpu-features.c
- when auto-detection via /proc isn't possible in and after JB.
- See http://code.google.com/p/chromium/issues/detail?id=164154
-
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed un-needed rebuild of object files via ndk-build.
- See http://code.google.com/p/android/issues/detail?id=39810
-
-- Fixed r8c linker fail in MacOSX 10.6.x with error reads:
-
- dyld: lazy symbol binding failed: Symbol not found: _memmem
- Referenced from: ...../arm-linux-androideabi/bin/ld
- Expected in: /usr/lib/libSystem.B.dylib
-
-> r8c was packaged on 10.7 machine which produced binaries not
- compatible with 10.6 SDK/NDK still supports. Will build it
- on 10.6 from now on.
-
-- Removed '-x c++' from clang++ in standalone.
- See http://code.google.com/p/android/issues/detail?id=39089
-
-- Fixed issues using NDK_TOOLCHAIN_VERSION=clang3.1 in cygwin.
- See http://code.google.com/p/android/issues/detail?id=39585
-
-- Fixed make-standalone-toolchain.sh to create standalone toolchain
- on cygwin and MinGW, which works for all cygwin, MingGW, and CMD.exe.
- See http://code.google.com/p/android/issues/detail?id=39915 and
- http://code.google.com/p/android/issues/detail?id=39585 (again)
-
-- Added missing SL_IID_ANDROIDBUFFERQUEUESOURCE in android-14 for
- ARM/X86.
- See http://code.google.com/p/android/issues/detail?id=40625
-
-- Fixed x86 cpu detection for MOVBE.
- See http://code.google.com/p/android/issues/detail?id=39317
-
-- Fixed an issue preventing STL dependencies to C++ sources not
- in .cpp extension.
-
-- Fixed GCC 4.6 ARM ICE at reload1.c:1061.
- See http://code.google.com/p/android/issues/detail?id=20862
-
-- Fixed GCC 4.4.3 ARM ICE at emit-rtl.c:1954.
- See http://code.google.com/p/android/issues/detail?id=22336
-
-- Fixed GCC 4.4.3 ARM ICE at postreload.c:396.
- See http://code.google.com/p/android/issues/detail?id=22345
-
-- Fixed GCC 4.6/4.7 elides lambdas.
- See http://code.google.com/p/android/issues/detail?id=35933
-
-
-OTHER BUG FIXES:
----
-
-- Fixed NDK headers
-
-> 1. Fixed __WINT_TYPE__ and wint_t to be the same type
-> 2. Corrected typo in <android/bitmap.h>.
- See http://code.google.com/p/android/issues/detail?id=15134
-> 3. Corrected typo in <errno.h>.
- See http://code.google.com/p/android/issues/detail?id=15134
-> 4. Check the presence of __STDC_VERSION__ in <sys/cdefs.h>.
- See http://code.google.com/p/android/issues/detail?id=14627
-> 5. Re-org headers byteswap.h and dirent.h
-> 6. Fixed limits.h to include page.h which provides PAGE_SIZE.
- See http://code.google.com/p/android/issues/detail?id=39983
-> 7. Fixed return type of glGetAttribLocation and glGetUniformLocation
- from int to GLint.
-> 8. Fixed __BYTE_ORDER for x86.
- See http://code.google.com/p/android/issues/detail?id=39824
-
-- Fixed ndk-build to not overwrite -Os with -O2 in ARM
-
-- Fixed to allow overwriting HOST_AWK, HOST_SED, and HOST_MAKE.
-
-- Fixed ld.gold issue on fsck_msdos build linking objects built by ICC
-
-- Fixed ARM EHABI support in clang conforming to spec.
-
-- Fixed GDB to shorten the time spending on walking target's link map upon
- solib events.
- See http://code.google.com/p/android/issues/detail?id=38402
-
-- Fixed missing libgcc.a when linking shared libraries
-
-
-OTHER CHANGES:
-
-- Backported 64-bit built-in atomic functions for ARM to GCC 4.6
-
-- Documentation for audio output latency, other misc docs/ fixes
-
-- Non-void functions in debug build by Clang now raise SIGILL on path w/o
- return statement
-
-- make-standalone-toolchain.sh now accepts surffix "-clang3.1" which is
- equivalent to adding "--llvm-version=3.1" on GCC 4.6 toolchain.
-
-- Changed GCC and Clang bug report URL to http://source.android.com/source/report-bugs.html
-
-- Added ARM ELF support to llvm-objdump.
-
-- Suppressed warning "treating c input as c++" in clang.
-
-- Only 32-bit of libiberty.a is built (placed at lib32/)
-
-
--------------------------------------------------------------------------------
-android-ndk-r8c
-===
-
-IMPORTANT CHANGES:
----
-
-- Added Clang 3.1 compiler. Since GCC 4.6 is still the default,
- you need to explicitly enable it:
- 1. For ndk-build: Either export NDK_TOOLCHAIN_VERSION=clang3.1 or add it
- in Application.mk.
- 2. For standalone: Add "--llvm-version=3.1" to make-standalone-toolchain.sh
- and replace CC and CXX in your makefile with <tool-path>/bin/clang
- and <tool-path>/bin/clang++.
-
-> See STANDALONE-TOOLCHAIN.html for details.
- This feature is experimental now but welcome to try and report issues.
-
-- Gold linker ld.gold is now available in Windows toolchain. Gold is also the
- default linker for ARM/X86 on all hosts. You may override it to use ld.bfd
- linker by adding LOCAL_LDFLAGS += -fuse-ld=bfd in Android.mk, or pass
- -fuse-ld=bfd to g++/clang++ commandline which does the linking.
-
-- ndk-build[.cmd] and ndk-gdb now check and bail out if NDK path contains space.
-
-- Changes in API level
- 1. Projects with android-10 .. 13 specified in APP_PLATFORM, project.properties or
- default.properties will link against android-9 instead of android-14.
- 2. Executable in project with android-16 (Jelly Bean) or higher is compiled
- with -fPIE (position-independent executables). A new APP_PIE allow manual control
- of this behavior. See APPLICATION-MK.html for details. Note that all API level
- above 14 still link against platforms/android-14. ie. no new platforms/android-N
- is added.
- 3. ndk-build now warns about the adjusted API level is larger than android:minSdkVersion
- in project's AndroidManifest.xml.
-
-- ARM: Updated 'cpu-features' helper library to include 9 more ARM-specific features.
-
-> See sources/android/cpufeatures/cpu-features.h for details.
-
-- X86: long double is still a distinct type but it's 8-byte in size now (same as double)
-
-- APP_ABI=armeabi-v7a:
- 1. -march=armv7-a is also passed to linker to link v7-specific libraries and crt*.o
- 2. -mfpu=vfpv3-d16 is added by ndk-build instead of -mfpu=vfp in the previous releases.
-
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed an issue when make-standalone-toolchain.sh is run under root privilege resulting
- in standalone toolchain inaccessible to some.
- 1. All files/executables attributes in NDK release package are set to readable/executable to all
- 2. The ownership/group of file libstdc++.a is now preserved when copied
-
-> See http://code.google.com/p/android/issues/detail?id=35279
-
-- Removed redundant \r from Windows prebuilt echo.exe. The redundant \r in gdb.setup fails
- GDB because it incorrectly becomes part of the path.
-
-> See http://code.google.com/p/android/issues/detail?id=36054
-
-- Fixed windows parallel builds that sometimes failed due to timing issues in the host-mkdir
- implementation.
-
-> See http://code.google.com/p/android/issues/detail?id=25875
-
-- Fixed GCC 4.4.3 GNU libstdc++ to NOT merge typeinfo names by default.
-
-> See toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo,
- http://code.google.com/p/android/issues/detail?id=22165, and
- https://groups.google.com/forum/#!msg/android-ndk/FlnuAOIKHOo/kLEwaBso7KYJ%5B1-25%5D
-
-- Fixed crash on null context in GCC 4.6 cp/mangle.c::write_unscoped_name, where gcc
- may crash when context == NULL and dereferenced in TREE_CODE
-
-- Fixed GCC 4.4.3 crashes on NEON specific typedef for float
-
-> See http://code.google.com/p/android/issues/detail?id=34613
-
-- Fixed the STLport internal _IteWrapper::operator*() implementation where stale
- stack location holding the dereferenced value is returned and leads to runtime crashes
-
-> See http://code.google.com/p/android/issues/detail?id=38630
-
-- ARM: Fixed ARM GCC 4.4.3/4.6 g++ to not warn about "the mangling of <va_list> has
- changed in GCC 4.4". Switch -Wno-psabi is no longer needed to workaround.
-
-- ARM: Fix an issue when project with .arm/.neon suffixes in LOCAL_SRC_FILES also
- uses APP_STL. With APP_STL, ndk-build searches for C++ file in LOCAL_SRC_FILES before
- adding STL header/lib paths to compilation. Fix ndk-build to filter out .arm and .neon
- suffixes before the search, otherwise item in LOCAL_SRC_FILESfile like myfile.cpp.arm.neon
- won't be considered C++.
-
-- ARM: Fixed binutils-2.21/ld.bfd to be capable of linking object from older binutils w/o
- tag_FP_arch, which used to produce error message reads
-
- BFD (GNU Binutils) 2.21 assertion fail
- ...../binutils/binutils-2.21/bfd/elf32-arm.c:10190
-
-> The root cause is that ARM's binutils-2.21/ld.bfd performs sanity check and asserts
- when "tag_FP_arch==0 && tag_ABI_HardFP_use !=0". This can happen in object using FP
- linked by older binutils when tag_FP_arch isn't produced at all (thus gets the default
- "zero" in new linker).
-
-> See http://code.google.com/p/android/issues/detail?id=35209
-
-- ARM: Removed warning when binutils-2.19/ld links prebuilt object by newer binutils-2.21
- which reads
-
- Unknown EABI object attribute 44
-
-> The reason is that all prebuilt crt*.o and C++ STL are built with later GCC 4.6/binutils-2.21
- and contain new tag "DIV_use" with value set to "Not allowed". This tag can be safely ignored
- by the original GCC4.4.3/binutils-2.19 toolchain since it is only for sanity check.
-
-- ARM: Fixed an issue in GNU stdc++ compilation with both -mthumb and -march=armv7-a, by
- making make-standalone-toolchain.sh to also populate headers/libs in sub-directory
- "armv7-a/thumb".
-
-> See http://code.google.com/p/android/issues/detail?id=35616
-
-- ARM: Fix error: unresolvable R_ARM_THM_CALL relocation
-
-> See http://code.google.com/p/android/issues/detail?id=35342 and
- https://groups.google.com/forum/?fromgroups#!topic/android-ndk/HaLycHImqL8
-
-- ARM: Fixed internal compiler error at "reload1.c:3633". The reason is that ARM back-end
- expects wrong operand type when sign-extend from char.
-
-> Back port fix from http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50099
-
-- ARM: Fixed internal compiler error with negative shift amount.
- int foo(int a, int b)
- {
- return a | (b << -3);
- }
-
-> See http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00594.html
-
-- X86: Fixed -fstack-protector, which is also the default for ndk-build x86 ABI
-
-- MIPS: Fixed stlport endianess by setting _STLP_LITTLE_ENDIAN to 1 when compiling
- MIPS' libstlport_*
-
-- MIPS: Fixed GCC __builtin_unreachable issue compiling LLVM
-
-> See Bug 54369: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54369
-
-- MIPS: Backport fix to bug 50380: cc1 hangs eating 100% CPU
-
-> See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50380 and
- http://gcc.gnu.org/viewcvs/trunk/gcc/cse.c?r1=177852&r2=182498&pathrev=182498
-
-- GDB: Disable python support in gdb-7.x at build, otherwise gdb-7.x/configure may
- pick up whatever python in host and build gdb with hard-wired dependency to specific
- version of python.
-
-> See http://code.google.com/p/android/issues/detail?id=36120
-
-- GDB: Fixed ndk-gdb when APP_ABI contains "all" and matches none of known architecture
-
-> See http://code.google.com/p/android/issues/detail?id=35392
-
-- GDB: Fixed Windows pathname support. Keep ':' if it looks like it could be part of
- a Windows path starting with a drive letter.
-
-> See http://sourceware.org/ml/gdb/2011-06/msg00030.html and
- http://sourceware.org/bugzilla/show_bug.cgi?id=12843
-
-- GDB: Fixed add HW breakpoint support for ARM in gdbserver
-
-> See http://sourceware.org/ml/gdb-patches/2011-09/msg00200.html
-
-- GDB: Fixed to only read current solibs when linker is consistent. Speeds up solib
- event handling.
-
-> See http://code.google.com/p/android/issues/detail?id=37677
-
-- GDB: Fixed to make repeated attempts to find solib breakpoint. GDB will retry enable_break()
- during every call to svr4_current_sos() until it succeeds.
-
-> See https://android-review.googlesource.com/#/c/43563
-
-- GDB: Fixed an issue where gdb cannot stop on breakpoints placed on dlopen-ed
- libraries.
-
-> See http://code.google.com/p/android/issues/detail?id=34856
-
-- GDB: Fixed SIGILL in dynamic linker when calling dlopen(), on system
- where /system/bin/linker is stripped of symbols and rtld_db_dlactivity()
- is implemented as Thumb, due to not preserving LSB of sym_addr
-
-> See http://code.google.com/p/android/issues/detail?id=37147
-
-
-OTHER BUG FIXES:
----
-
-- Fixed NDK headers
- 1. Fixed arch-mips/include/asm/* previously incorrectly cleaned from original kernel
- See https://android-review.googlesource.com/#/c/43335
- 2. Replace struct member data "`__unused`" with "`__linux_unused`" in linux/sysctl.h
- and linux/icmp.h to avoid conflict with "#define __unused" in sys/cdefs.h
- 3. Fixed fenv.h to enclosed C functions with __BEGIN_DECLS/__END_DECLS
- 4. Removed unimplemented functions in malloc.h
- 5. Fixed stdint.h. See http://code.google.com/p/android/issues/detail?id=1952
- 6. Fixed preprocessor macros in <arch>/include/machine/*
- 7. Replaced link.h for mips with new version for all platforms
- 8. Remove linux-unistd.h
- 9. Move GLibc-specific macros LONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX from
- <pthread.h> to <limits.h>.
-
-- Fixed a buffer overflow in ndk-stack-parser.
-
-- Fixed _STLP_USE_EXCEPTIONS, when not defined, to omit all declarations
- and uses of __Named_exception. Compile and use __Named_exception only
- when STLport is being allowed to use exceptions.
-
-- Fixed to build Linux-only NDK packages (invoked as follow) w/o also building windows
-
- ./build/tools/make-release.sh --force --systems=linux-x86
-
-- Fixed libc.so to not export atexit() and __do_handler. These symbols are exported
- on ARM by the system version of the C library to support legacy native libraries.
- NDK-generated should never reference them directly. Instead, each shared library or
- executable should embed its own version of these symbols, provided by crtbegin_*.o
-
-> If your project is linked with "-nostdlib -Wl,--no-undefined", you need to provide
- your own __dso_handle because crtbegin_so.o isn't linked. The content of __dso_handle
- doesn't matter. eg.
-
- extern "C" {
- extern void *__dso_handle __attribute__((__visibility__ ("hidden")));
- void *__dso_handle;
- }
-
-- ARM: Fixed symbol decoder (used in objdump) for plt entries to generate more
- readable form function@plt
-
-- X86: Removed the following symbols introduced in GCC 4.6/libgcc.a from X86's libc.so:
- __aeabi_idiv0, __aeabi_ldiv0, __aeabi_unwind_cpp_pr1, and __aeabi_unwind_cpp_pr2
-
-- MIPS: Removed unused .ctors, .dtors, and .eh_frame in MIPS crt*_so.S.
-
-- GDB: ndk-gdb now only takes the last line of output for ndk-build DUMP_XXXX. This
- ensures that if Application.mk or Android.mk do print something with $(info ...),
- it doesn't get injected into the result of DUMP_XXX.
-
-> See https://groups.google.com/d/msg/android-ndk/-/ew0lTWGr1UEJ
-
-
-OTHER CHANGES:
----
-
-- Removed arch-x86 and arch-mips headers from platforms/android-{3,4,5,8}.
- Those headers are incomplete to begin with, since both X86 and MIPS ABIs are only
- supported at API &ge; 9
-
-- Simplified c++ include path in standalone package, eg. change
-
- <path>/arm-linux-androideabi/include/c++/4.6.x-google
- to
- <path>/include/c++/4.6/
-
-> See http://code.google.com/p/android/issues/detail?id=35279
-
-- Enhanced ndk-build to recognize more C++ file extensions by default:
-
- .cc .cp .cxx .cpp .CPP .c++ .C
-
-> You may still use LOCAL_CPP_EXTENSION to override it
-
-- Fixed an issue in samples/san-angeles about black/freeze frame
- at re-launch.
-
-- Replaced deprecated APIs in NDK samples
- 1. hello-gl2 from android-5 to android-7
- 2. native-activity from android-9 to android-10
- 3. native-audio from android-9 to android-10
- 4. native-plasma from android-9 to android-10
-
-> See http://code.google.com/p/android/issues/detail?id=20017
-
-- Added new branding for Android executables with a simpler scheme in section
- .note.android.ident (defined in crtbegin_static/dynamic.o) so that debugging
- tools can act accordingly.
-
-> The structure member and values are defined as follows:
-
- static const struct {
- int32_t namesz; /* = 8, sizeof ("Android") */
- int32_t descsz; /* = 1 * sizeof(int32_t) */
- int32_t type; /* = 1, ABI_NOTETYPE */
- char name[sizeof "Android"]; /* = "Android" */
- int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */
- }
-
-> Previous branding in section .note.ABI-tag is deprecated.
-
-- Added a new script run-tests-all.sh which calls run-tests.sh and standalone/run.sh
- with various conditions. Script run-tests.sh w/o --abi is also enhanced to compile
- most of tests for all supported ABI and run on all attached devices
-
-
--------------------------------------------------------------------------------
-android-ndk-r8b
-===
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed LOCAL_SHORT_COMMANDS issues on darwin-x86 and windows cygwin environment
- and for static libraries. List file generation is sped up, and it is no longer
- regenerated and causes whole project to be rebuilt every time.
-
-- Fixed several issues in ndk-gdb
-
- * to pass flags "-e", "-d", "-s" to adb more consistently
-
- * to accept device serial name containing space
-
- * to also pull /system/bin/link, so gdb on host can set a breakpoint in
- __dl_rtld_db_dlactivity and be aware of linker activity (eg. rescan solib symbols
- when dlopen() is called)
-
-- Fixed "ndk-build clean" in windows which failed to remove ./libs/\*/lib\*.so
-
-- Fixed ndk-build.cmd to return non-zero ERRORLEVEL when make fails
-
-- Fixed libc.so to no longer incorrectly export __exidx_start and __exidx_end symbols
-
-- Fixed SEGV when unwinding stack pasts __libc_init for ARM and MIPS.
-
-- Fixed \__start (in crtbegin_dynamic/static.o) to "call __libc_init" instead of
- "jump __libc_init", otherwise stack unwinding past __libc_init may get wrong return
- address and crash the program or do wield things. With "call", return address is pushed
- on stack and unwinding stops correctly at _start. Note that __libc_init never returns, so
- this fix wonʼt affect normal program execution. But just in case it "does" return,
- jump to address 0 and halt.
-
-
-IMPORTANT CHANGES:
----
-
-- GCC 4.6 toolchain
-
- Add GCC 4.6 toolchain (binutils 2.21 with gold + GDB 7.3.x) to co-exists with
- the original GCC 4.4.3 toolchain (binutils 2.19 + GDB 6.6). Note:
-
- * GCC 4.6 is the default. You may set NDK_TOOLCHAIN_VERSION=4.4.3 in Application.mk
- to select the original one.
-
- * Gold linker support is only available for ARM and x86 architectures on linux-86
- and darwin-x86 hosts. It's not turned on by default. Add
- "LOCAL_LDFLAGS += -fuse-ld=gold" in Android.mk to enable it.
-
- * You will need the new GDB to debug program compiled with -fPIE (including
- binaries in Jelly Bean image)
-
- * The binutils 2.21 ld also contain back-port of fixes from 2.22
-
- * Fixed "ld --gc-sections" which incorrectly retain zombie references to external
- libraries. See http://sourceware.org/bugzilla/show_bug.cgi?id=13177 for detail.
-
- * Fixed ARM "strip" to preserve the original p_align and p_flags in GNU_RELRO section
- if they are valid. Otherwise program built with -fPIE can't be debugged.
- http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&r1=1.552&r2=1.553
-
- * Sincos optimization is not enabled for compatibility with old platforms which don't have
- it.
-
-- NX and relro/bind_now protections are enabled by default
-
- Add "--noexecstack" for assembler and "-z noexecstack" for linker to enable NX
- protection against buffer overflow attacks by enabling NX bit on stack and heap.
-
- Add "-z relro -z now" for linker to harden internal data sections after linking
- against security vulnerabilities due to memory corruption. See
-
- http://www.akkadia.org/drepper/nonselsec.pdf (section 6)
- http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html
-
- For those who really needs it, these features can be disabled by
- 1. Passing "--execstack" to assembler and "-z execstack" to linker to
- disable NX protection.
- Passing "-z norelro -z lazy" to linker to disable second protection.
- 2. In NDK jni/Android.mk, set the following
- LOCAL_DISABLE_NO_EXECUTE=true: to disable "--noexecstack" and "-z noexecstack"
- LOCAL_DISABLE_RELRO=true: to disable "-z relro -z now"
- see $NDK/docs/ANDROID-MK.html for details
-
-- Brand executables with .note.ABI-tag section
-
- Brand Android executable with .note.ABI-tag (in crtbegin_static/dynamic.o) for debugging
- tools to act accordingly. The structure member and values are defined as follow.
-
- static const struct {
- int32_t namesz; /* = 4, sizeof ("GNU") */
- int32_t descsz; /* = 6 * sizeof(int32_t) */
- int32_t type; /* = 1 */
- char name[sizeof "GNU"]; /* = "GNU" */
- int32_t os; /* = 0 */
- int32_t major; /* = 2 */
- int32_t minor; /* = 6 */
- int32_t teeny; /* = 15 */
- int32_t os_variant; /* = 1 */
- int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */
- }
-
-
-OTHER BUG FIXES:
----
-
-- Backport several patches to fix MIPS issues.
-
- * http://sourceware.org/bugzilla/show_bug.cgi?id=12637
- mips-linux-gnu: relocation truncated to fit: R_MIPS_TLS_LDM
-
- * http://sourceware.org/bugzilla/show_bug.cgi?id=12845
- ld segfaults when using --gc-sections
-
- * http://sourceware.org/ml/binutils/2011-05/msg00198.html
- Refix MIPS GOT_PAGE counting
-
- * Follow warning symbol link in mips_elf_count_got_symbols.
-
- * Follow warning symbol link in mips_elf_allocate_lazy_stub.
-
- * Move MIPS .dynamic to the data segment, so that it is writable.
- Replace hard-coded 4096 with symbols for correct segment sizes for MIPS.
-
- * Remove -mno-shared as default in MIPS toolchain. -fPIC (or -fpic if supported)
- is default for Android toolchain. Without explicitly specifying one of
- -mshared, -fpic, -fPIC, -fpie, or -fPIE, MIPS compiler adds -mno-shared
- which turns off PIC. Fixed it not to add -mno-shared as default.
-
-- Fixed wrong package names in samples hello-jni and two-libs so tests project
- underneath can compile
-
-
-OTHER CHANGES:
----
-
-- New binaries locations
-
- * gdbserver is moved from toolchain/<arch-os-ver>/prebuilt/gdbserver to
- prebuilt/android-<arch>/gdbserver/gdbserver
-
- * x86 toolchain prefix is renamed from i686-android-linux- to i686-linux-android-
-
- * sources/cxx-stl/gnu-libstdc++/include and lib are moved to
- sources/cxx-stl/gnu-libstdc++/4.4.3 when compiled with 4.4.3 GCC, or
- sources/cxx-stl/gnu-libstdc++/4.6 when compiled with 4.6 GCC
-
- * libbfd.a and libintl.a are moved from lib/ to lib32/
-
-- Header if_dl.h is removed from all platforms and architectures. AF_LINK and sockaddr_dl
- it describes are specpfic to BSD (ie. don't exist in Linux)
-
-- Various scripts to rebuild/test NDK toolchain
-
- * Add build-mingw64-toolchain.sh to generate a new Linux-hosted toolchain that generates
- Win32 and Win64 executables.
-
- * Speed up download-toolchain-sources.sh by "clone" but only "checkout" the directories
- that we need to build the NDK toolchain binaries.
-
- * New build-host-gcc.sh and build-host-gdb.sh
-
- * Add tests/check-release.sh to check the content of a given NDK installation directory,
- or an existing NDK package.
-
- * Rewrite standalone tests: tests/standalone/run.sh
-
-
--------------------------------------------------------------------------------
-android-ndk-r8
-===
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed a typo in GAbi++ implementation where result of dynamic_cast<D>(b)
- of base class object 'b' to derived class D is adjusted wrong
- (in the opposite direction from base class). See
- http://code.google.com/p/android/issues/detail?id=28721
-
-- Fixed an issue in make-standalone-toolchain.sh which fails to copy
- libsupc++.*.
-
-
-IMPORTANT CHANGES:
----
-
-- Added support for the mips ABI.
-
-> This release of the Android NDK contains support for 'mips' ABI.
- To generate machine runs on MIPS-based Android devices, please add 'mips' to
- APP_ABI definition in your Application.mk, or 'all' to generate binaries for
- all currently supported ABI. See docs/CPU-MIPS.html for details.
-
-- You can build a standalone mips toolchain using the
- --toolchain=mipsel-linux-android-4.4.3 option when calling
- make-standalone-toolchain.sh. See docs/STANDALONE-TOOLCHAIN.html for more details.
-
-
-OTHER BUG FIXES:
----
-
-- Fixed ndk-build.cmd to ensure that ndk-build.cmd works correctly even if
- the user has redefined the SHELL environment variable (which can happen under
- the hood when installing a variety of development tools on Windows)
-
-
--------------------------------------------------------------------------------
-android-ndk-r7c
-===
-
-This release of the NDK includes an important fix for Tegra2-based devices,
-and a few additional fixes and improvements:
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed GNU STL armeabi-v7a binaries to not crash on non-NEON devices.
- The files provided with NDK r7b where not configured properly, resulting
- in crashes on Tegra2-based devices and others when trying to use certain
- floating-point functions (e.g., cosf, sinf, expf).
-
-
-IMPORTANT CHANGES:
----
-
-- Added support for custom output directories through the NDK_OUT
- environment variable. When defined, this variable is used to store all
- intermediate generated files, instead of $PROJECT_PATH/obj.
-
- The variable is also recognized by ndk-gdb.
-
-- Added support for building modules with hundreds or even thousand of source
- files by defining LOCAL_SHORT_COMMANDS to true in your Android.mk.
-
- This change forces the NDK build system to put most linker or archiver
- options into list files, to work-around command-line length limitations
- (particularly on Windows). See docs/ANDROID-MK.html for details.
-
-
-OTHER BUG FIXES:
----
-
-- Fixed android_getCpuCount() implementation in the cpufeatures helper
- library. The previous implementation only listed the cores that were
- active the first time the function was called. This behavior could
- provide results that were too low on devices that disable and enable
- cores dynamically.
-
--------------------------------------------------------------------------------
-android-ndk-r7b
-===
-
-IMPORTANT BUG FIXES:
----
-
-- Updated <sys/atomics.h> to avoid correctness issues on some multi-core
- ARM-based devices. Rebuild your unmodified sources with this version of the
- NDK and this problem should completely be eliminated. For more details, read
- docs/ANDROID-ATOMICS.html.
-
-- Reverted to binutils 2.19 to try to fix debugging issues that
- appeared in NDK r7 (which switched to binutils 2.20.1).
-
-- Fixed ndk-build on 32-bit Linux. A packaging error put a 64-bit version
- of the 'awk' executable under prebuilt/linux-x86/bin in NDK r7.
-
-- Fixed native Windows build (ndk-build.cmd). Other build modes were not
- affected. The fixes include:
-
- * Removed an infinite loop / stack overflow bug that happened when trying
- to call ndk-build.cmd from a directory that was _not_ the top of your
- project path (e.g. any sub-directory of it).
-
- * Fixed a problem where the auto-generated dependency files were ignored.
- This meant that updating a header didn't trigger recompilation of sources
- that included it.
-
- * Fixed a problem where special characters in files or paths, other than
- spaces and quotes, were not correctly handled.
-
-- Fixed the standalone toolchain to generate proper binaries when using
- -lstdc++ (i.e. linking against the GNU libstdc++ C++ runtime). You should
- use -lgnustl_shared if you want to link against the shared library
- version or -lstdc++ for the static version.
-
- See docs/STANDALONE-TOOLCHAIN.html for more details about this fix.
-
-- Fixed gnustl_shared on Cygwin. The linker complained that it couldn't find
- libsupc++.a while the file was at the right location.
-
-- Fixed cygwin C++ link when not using any specific C++ runtime through
- APP_STL.
-
-OTHER CHANGES:
----
-
-- When your application uses the GNU libstdc++ runtime, the compiler will
- no longer forcibly enable exceptions and RTTI. This change results in smaller
- code. If you need these features, you need to do either one of these:
-
- 1/ Enable exceptions and/or RTTI explicitly in your modules or
- Application.mk. (recommended)
-
- 2/ Define APP_GNUSTL_FORCE_CPP_FEATURES to 'exceptions', 'rtti' or both
- in your Application.mk. See docs/APPLICATION-MK.html for more details.
-
-- ndk-gdb now works properly when your application has private services
- running in independent processes. It debugs the main application process,
- instead of the first process listed by 'ps', which is usually a service
- process.
-
-- Fixed a rare bug where NDK r7 would fail to honor the LOCAL_ARM_MODE value
- and always compile certain source files (but not all) to 32-bit instructions.
-
-- stlport: Refresh the sources to match the Android platform version. This
- update fixes a few minor bugs:
-
- - Fixed instantiation of an incomplete type.
- - Fixed minor == versus = typo
- - Use memmove instead of memcpy in string::assign
- - Added better handling of IsNANorINF, IsINF, IsNegNAN, etc..
-
- For complete details, see the commit log.
-
-- stlport: Removed 5 un-necessary static initializers from the library.
-
-- The GNU libstdc++ libraries for armeabi-v7a were mistakenly compiled for
- armeabi instead. This had no impact on correctness, but using the right
- ABI should provide for slightly better performance.
-
-- the 'cpu-features' helper library was updated to report three optional
- x86 CPU features (SSSE3, MOVBE and POPCNT). See docs/CPU-FEATURES.html
- for more details.
-
-- docs/NDK-BUILD.html was updated to mention NDK_APPLICATION_MK instead
- of NDK_APP_APPLICATION_MK to select a custom Application.mk file.
-
-- cygwin: ndk-build no longer creates an empty "NUL" file in the current
- directory when invoked.
-
-- cygwin: better automatic dependency detection. It previously didn't work
- properly in the following case:
-
- - When the cygwin drive prefix was not /cygdrive
- - When using drive-less mounts, e.g. when Cygwin would translate /home
- to \\server\subdir instead of C:\Some\Dir.
-
-- cygwin: ndk-build does not try to use the native Windows tools under
- $NDK/prebuilt/windows/bin with certain versions of Cygwin and/or
- GNU Make.
-
--------------------------------------------------------------------------------
-android-ndk-r7
-===
-
-IMPORTANT CHANGES:
----
-
-- New official NDK APIs for Android 4.0 (a.k.a. API level 14),
- which adds the following native features to the platform:
-
- - Native multimedia API based on the Khronos Group OpenMAX AL&#0153;
- 1.0.1 Standard. New headers <OMXAL/OpenMAXAL.h> and
- <OMXAL/OpenMAXAL_Android.h> are provided to allow
- applications targeting this API level to perform multimedia output
- directly from native code using a new Android-specific buffer
- queue interface. For more details, see docs/openmaxal/index.html
- and http://www.khronos.org/openmax/.
-
- - Updated the native audio API based on the Khronos Group OpenSL ES
- 1.0.1&#0153; Standard. API Level 14 can now decode compressed
- audio (e.g. MP3, AAC, Vorbis) to PCM. For more details, see
- docs/opensles/index.html and http://www.khronos.org/opensles/.
-
-- CCache support. To speed up large rebuilds, simply define the NDK_CCACHE
- environment variable to 'ccache' (or the path to your ccache binary), as in:
-
- export NDK_CCACHE=ccache
-
- The NDK build system will automatically use it when compiling any source
- file. For more information about CCache, see http://ccache.samba.org
-
-- You can now set your APP_ABI to 'all' to indicate that you want to build
- your NDK modules for all the ABIs supported by your given NDK release.
-
- This means that either one of these two lines in your Application.mk are
- equivalent with this release:
-
- APP_ABI := all
- APP_ABI := armeabi armeabi-v7a x86
-
- This also works if you define APP_ABI on the command-line, as in:
-
- ndk-build APP_ABI=all
-
- Which is a quick way to check that your project builds for all supported
- ABIs without changing its Application.mk file.
-
-- Shorter paths to source and object files used in build commands.
- When invoking $NDK/ndk-build from your project path, the paths to the
- source, object and binary files passed to the build commands will be
- significantly shorter now because they are now passed relative to the
- current directory.
-
- This is useful when building projects with a lot of source files, to
- avoid limits on the maximum command line length supported by your host
- operating system.
-
- The behaviour is unchanged if you invoked ndk-build from a sub-directory
- of your project tree, or if you define NDK_PROJECT_PATH to point to a
- specific directory.
-
-- New LOCAL_CPP_FEATURES variable in Android.mk, used to declare which C++
- features (RTTI or Exceptions) your module uses. This is especially handy
- if you have prebuilt modules that depend on them since this will ensure
- the final link will work correctly.
-
- See docs/ANDROID-MK.html and docs/CPLUSPLUS-SUPPORT.html for more details
-
-- WARNING: VERY EXPERIMENTAL!!
-
- You can now build your NDK sources on Windows *without* Cygwin.
- Simply call the script 'ndk-build.cmd' from the Windows cmd.exe
- command-line, when in your project path.
-
- The script takes exactly the same arguments than the original
- ndk-build one.
-
- Note that the Windows NDK package comes with its own prebuilt
- binaries for GNU Make, Awk and other tools required by the build,
- i.e. you shouldn't need to install anything else to get a working
- build system.
-
- IMPORTANT: ndk-gdb doesn't work. You still need Cygwin to debug
- at the moment!
-
- This feature is still very experimental, but feel free to try it
- and report issues on the public forum (android-ndk@googlegroups.com)
- or the public bug database (http://b.android.com).
-
- Note that all samples and unit tests successfully compile with it.
-
-IMPORTANT BUG FIXES:
----
-
-- Imported shared libraries are now installed by default to the target
- installation location (i.e. libs/%lt;abi%gt;) if APP_MODULES is not
- defined in your Application.mk.
-
- This means that if a top-level module "foo" imports a module "bar", then
- both libfoo.so and libbar.so will be copied to the install location.
-
- Previously, only libfoo.so was, unless you listed 'bar' in your APP_MODULES
- too.
-
- If you define APP_MODULES explicitly, the behaviour is unchanged.
-
-- Static library imports are now properly transitive. If top-level module
- 'foo' imports static library 'bar' which imports static library 'zoo',
- the libfoo.so will now be linked against both libbar.a and libzoo.a.
-
-- ndk-gdb now works correctly for activities with multiple categories
- in their MAIN intent filters.
-
-OTHER CHANGES:
----
-
-- docs/STABLE-APIS.html: Added missing documentation listing EGL
- as a supported stable API, starting from API level 9.
-
-- Add a new C++ support runtime named "gabi++". More details about it
- are available in the updated docs/CPLUSPLUS-SUPPORT.html.
-
-- The STLport C++ runtimes now support RTTI (no exceptions yet though).
-
-- Add a new C++ support runtime named "gnustl_shared" corresponding to the
- shared library version of GNU libstdc++ v3 (GPLv3 license). See more
- info at docs/CPLUSPLUS-SUPPORT.html
-
-- You can now list several file extensions in LOCAL_CPP_EXTENSION. As in:
-
- LOCAL_CPP_EXTENSION := .cpp .cxx
-
- To compile both foo.cpp and bar.cxx as C++ sources.
-
-- Refreshed the EGL and OpenGLES Khronos headers to support more extensions.
- Note that this does *not* change the NDK ABIs for the corresponding
- libraries, since each extension must be probed at runtime by the client
- application.
-
- Which extensions are available depends on your actual device (and GPU
- drivers), not the version of the platform it provides.
-
- The header changes simply add new constants and types to make it easier
- to use the extensions why they have been probed with eglGetProcAddress() or
- glGetProcAddress(). Here is the list of newly supported extensions:
-
- GLES 1.x
- --------
- GL_OES_vertex_array_object
- GL_OES_EGL_image_external
- GL_APPLE_texture_2D_limited_npot
- GL_EXT_blend_minmax
- GL_EXT_discard_framebuffer
- GL_EXT_multi_draw_arrays
- GL_EXT_read_format_bgra
- GL_EXT_texture_filter_anisotropic
- GL_EXT_texture_format_BGRA8888
- GL_EXT_texture_lod_bias
- GL_IMG_read_format
- GL_IMG_texture_compression_pvrtc
- GL_IMG_texture_env_enhanced_fixed_function
- GL_IMG_user_clip_plane
- GL_IMG_multisampled_render_to_texture
- GL_NV_fence
- GL_QCOM_driver_control
- GL_QCOM_extended_get
- GL_QCOM_extended_get2
- GL_QCOM_perfmon_global_mode
- GL_QCOM_writeonly_rendering
- GL_QCOM_tiled_rendering
-
- GLES 2.0
- --------
- GL_OES_element_index_uint
- GL_OES_get_program_binary
- GL_OES_mapbuffer
- GL_OES_packed_depth_stencil
- GL_OES_texture_3D
- GL_OES_texture_float
- GL_OES_texture_float_linear
- GL_OES_texture_half_float_linear
- GL_OES_texture_npot
- GL_OES_vertex_array_object
- GL_OES_EGL_image_external
- GL_AMD_program_binary_Z400
- GL_EXT_blend_minmax
- GL_EXT_discard_framebuffer
- GL_EXT_multi_draw_arrays
- GL_EXT_read_format_bgra
- GL_EXT_texture_format_BGRA8888
- GL_EXT_texture_compression_dxt1
- GL_IMG_program_binary
- GL_IMG_read_format
- GL_IMG_shader_binary
- GL_IMG_texture_compression_pvrtc
- GL_IMG_multisampled_render_to_texture
- GL_NV_coverage_sample
- GL_NV_depth_nonlinear
- GL_QCOM_extended_get
- GL_QCOM_extended_get2
- GL_QCOM_writeonly_rendering
- GL_QCOM_tiled_rendering
-
- EGL:
- ----
- EGL_ANDROID_recordable
- EGL_NV_system_time
-
-- docs/NATIVE-ACTIVITY.HTML: Fixed typo, the minimum API level
- should be 9, not 8 for native activities.
-
-- removed many unwanted exported symbols from the link-time shared
- system libraries provided by the NDK. This ensures that code generated
- with the standalone toolchain doesn't risk to accidentally depend
- on a non-stable ABI symbol (e.g. any libgcc.a symbol that changes
- each time the toolchain used to build the platform is changed).
-
-- download-toolchain-sources.sh: Script was updated to download the toolchain
- sources from android.googlesource.com, the new location for AOSP servers.
-
--------------------------------------------------------------------------------
-android-ndk-r6b
-===
-
-This is a bug-fix release for NDK r6, no new features are provided.
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed the multi-architecture build, i.e. when using APP_ABI="armeabi x86"
-
-- Fixed location of prebuilt STLport binaries in the NDK release package.
- (A bug in the packaging script placed them in the wrong location).
-
-- Fixed atexit() usage in shared libraries with the x86 standalone toolchain.
-
-- Fixed make-standalone-toolchain.sh --arch=x86 (it failed to copy the
- proper GNU libstdc++ binaries to the right location).
-
-- Fixed standalone toolchain linker warnings about missing definition and
- size for '__dso_handle' symbol (arm only).
-
-- Fixed the inclusion order of $(SYSROOT)/usr/include for x86 builds,
- see http://code.google.com/p/android/issues/detail?id=18540
-
-- Fixed the definitions of ptrdiff_t and size_t in x86-specific system
- when used with the x86 standalone toolchain.
-
--------------------------------------------------------------------------------
-android-ndk-r6
-===
-
-IMPORTANT CHANGES:
----
-
-- Official support for the x86 ABI.
-
- This release of the Android NDK now provides support for the 'x86' ABI.
- This allows you to generate machine code that runs on future x86-based
- Android devices.
-
- Note that by default, code is still generated for ARM-based devices.
- You can however add 'x86' to your APP_ABI definition in your
- Application.mk. For example, the following line instructs ndk-build
- to build your code for three distinct ABIs:
-
- APP_ABI := armeabi armeabi-v7a x86
-
- Unless you rely on ARM-based assembly sources, you shouldn't need to touch
- your Android.mk files to build x86 machine code.
-
- For all details regarding x86 support, please read the new documentation
- file named docs/CPU-X86.html.
-
- Don't hesitate to file NDK bugs related to x86 at http://b.android.com
-
-- You can build a standalone x86 toolchain using the --toolchain=x86-4.4.3
- option when calling make-standalone-toolchain.sh. See
- docs/STANDALONE-TOOLCHAIN.html for more details.
-
-- The new 'ndk-stack' tool can be used to translate stack traces
- (as reported by adb logcat in case of crash in native code) into
- something more readable, i.e. containing function / source file /
- line number information corresponding to each stack frame.
-
- For more information and usage example, see the new documentation
- file docs/NDK-STACK.html
-
-OTHER FIXES &amp; CHANGES:
----
-
-- The arm-eabi-4.4.0, which had been deprecated since NDK r5, has been
- finally removed from the NDK distribution.
-
-- Support a project.properties file in the application's directory
- instead of default.properties. This is in preparation for future SDK Tools
- changes.
-
--------------------------------------------------------------------------------
-android-ndk-r5c
-===
-
-This release fixes a few bugs in r5b. There are no new features.
-
-IMPORTANT BUG FIXES:
----
-
-- Fixed a typo that prevented LOCAL_WHOLE_STATIC_LIBRARIES to work correctly
- with the new toolchain. Also properly document this variable in
- docs/ANDROID-MK.html.
-
-- Fixed a bug where code linked against gnustl_static would crash when run
- on Android platform releases older than 2.2.
-
-- <android/input.h>: Two functions in this header file, introduced
- by API level 9 (a.k.a. 2.3) were incorrect and have been fixed. While
- this breaks the source API, the binary interface to the system is
- unchanged.
-
- The functions missing a third 'history_index' parameter. They correct
- definition is now:
-
- float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event,
- size_t pointer_index,
- size_t history_index);
-
- float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event,
- size_t pointer_index,
- size_t history_index);
-
-- Updated the android-9 C library arm binary to correctly expose at link time
- new functions that were added to it in Gingerbread (e.g. pthread_rwlock_init).
-
-- Fixed a bug that made gdbserver crash on misc. Honeycomb devices (e.g.
- the Motorola Xoom).
-
-OTHER FIXES &amp; CHANGES:
----
-
-- Object files are now always linked in the order they appear in
- LOCAL_SRC_FILES. This was not the case previously because the files
- were grouped by source extensions instead.
-
-- download-toolchain-sources.sh: Fixed a silly bug that prevented the
- --git-date option to work properly when downloading the master branch.
-
-- Fix an issue where a module could import itself, resulting in an infinite
- loop in GNU Make.
-
-- When import-module fails, it now prints the list of directories
- that were searched. This is useful to check that the NDK_MODULE_PATH
- definition used by the build system is correct.
-
-- When import-module succeeds, it now prints the directory where the module
- was found to the log (visible with NDK_LOG=1).
-
-- <pthread.h>: Fixed the definition of PTHREAD_RWLOCK_INITIALIZER for
- android-9 API level and higher.
-
-- Fixed a bug where LOCAL_ARM_NEON was defined to true would make the build
- fail (typo in build/core/build-binary.mk)
-
-- Fixed a bug that prevented the compilation of .s assembly files
- (.S files were ok).
-
-- Speed-up the build of debuggable applications when there is a very
- large number of include directories in a project.
-
-- ndk-gdb: Better detection of 'adb shell' failures (improves error messages).
-
-- ndk-build: Fix a rare bug that appeared when trying to perform parallel
- builds of debuggable projects.
-
-
--------------------------------------------------------------------------------
-android-ndk-r5b
-===
-
-This release fixes a few bugs in r5. There are no new features.
-
-IMPORTANT BUG FIXES:
----
-
-- Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain.
- The previous binary generated invalid thumb instruction sequences when
- dealing with signed chars. This problem was first reported on the
- android-ndk forum and fixed by the following change in the toolchain
- sources:
-
- https://review.source.android.com/#change,19474
-
-- docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the
- "gnustl_static" value for APP_STL, that allows you to link against
- a static library version of GNU libstdc++.
-
-- ndk-build: Fix a bug that created inconsistent dependency files when a
- compilation error occurred on Windows, preventing building properly after
- the error was fixed in the source code.
-
-- ndk-build: Fix a Cygwin-specific bug where using very short paths for
- the Android NDK installation or the project path could lead to the
- generation of invalid dependency files, making incremental builds
- impossible.
-
-- Fix a typo that prevented the cpufeatures library to work correctly
- with the new NDK toolchain.
-
-- Linux toolchain binaries now run on Ubuntu 8.04 or higher.
- More specifically, the r5 binaries did require GLibc 2.11 on the host
- system, and refused to run with previous releases due to an ABI mismatch
- in the GNU C Library. The r5b binaries are generated with a special
- toolchain that instead targets GLibc 2.7 or higher.
-
-- GNU libstdc++ will not crash anymore when printing floating-point values
- through i/o streams.
-
-OTHER FIXES &amp; CHANGES:
-
-- ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m"
- from GNU Make for each and every source or object file. This was a problem
- for users with very large source trees.
-
- In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your
- environment to use 'cygpath -m' as usual.
-
- Also, if 'cygpath' is not in your path, completely ignore it
- (seems to be enough to run the NDK under MSys).
-
-- ndk-build: Handle installation paths containing spaces when checking
- cygwin installation. Before that, the script complained that the user
- was using an incorrect version of GNU Make (even if he had the right one).
-
-- Fixed a typo that prevented several NDK_MODULE_PATH to work properly when
- it contained multiple directories separated with ":"
-
-- prebuilt-common.sh: Make the script check the compiler directly for 64-bit
- generated machine code, instead of relying on the host tag. That should
- allow the 32-bit toolchain to rebuild properly on Snow Leopard.
-
-- prebuilt-common.sh: Fix the toolchain rebuild scripts to work when
- using a 32-bit host toolchain.
-
-- <netinet/in.h>: Add missing declaration for INET_ADDRSTRLEN
-- <netinet/in6.h>: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL
- and IN6_IS_ADDR_MC_GLOBAL.
-
-- <asm/byteorder.>: Replaced 'asm' with '__asm__' to allow compilation
- with -std=c99. See https://review.source.android.com/#change,20076
-
-- standalone toolchain: The -fpic flag is now the default for the
- arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance
- degradation when compared to the old android-eabi configuration.
-
- This only affects users of the standalone toolchain. The NDK build script
- always enforced -fpic implicitly.
-
--------------------------------------------------------------------------------
-android-ndk-r5
-===
-
-IMPORTANT BUG FIXES:
----
-
-- Allow dlclose() to properly call static C++ destructors when unloading
- a shared library. This requires changes in both the C library and the
- build system. IMPORTANT: This feature is only available for API level 9.
-
-- Fix packaging error for system libraries of level 5 and 8. The libraries
- bundled with the NDK and used at link time were not the correct version,
- and this prevented linking against certain symbols appropriately.
-
-- ndk-gdb: do not start activity unless --start or --launch is used.
- (the documentation was correct, the implementation wrong)
-
-- The system headers for all API levels have been cleaned up and will
- not provide the declarations of functions that are not available in
- the corresponding system libraries.
-
-IMPORTANT CHANGES:
----
-
-- Support for API level 9, (a.k.a. Android 2.3) which adds the following
- native features to the platform:
-
- - Native audio API based on the Khronos Group OpenSL ES&#0153; 1.0.1 Standard.
- New headers <SLES/OpenSLES.h> and <SLES/OpenSLES_Android.h>
- are provided to allow applications targeting this API level to perform
- audio input, output and processing directly from native code.
-
- - Native activity support, i.e. the ability to build applications that
- are coded entirely in C or C++. More precisely, such applications still
- run inside a VM, and will have to access most of the platform's features
- using JNI (i.e. native code calling VM methods). However, this also
- comes with a series of headers and libraries to implement the following
- directly from native code:
-
- - activity lifecycle management.
- - user input handling (touch, keyboard, trackball, ...).
- - window management (including accessing the pixel buffer).
- - sensor listeners (e.g. accelerometer, compass, ...).
- - hardware configuration management.
- - easily reading assets out of an APK from native code.
- - access to the storage manager, a new feature of Android X.X
- that allows one to provide Opaque Binary Objects containing
- large amounts of data outside of the APK.
-
- See the documentation in docs/STABLE-APIS.html for more details.
-
- Note that most of these new features are targeted at game developers.
-
-- Improved gdbserver binary to allow debugging _threaded_ programs properly
- with ndk-gdb (the previous binary could only set breakpoints on the main
- thread).
-
- IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER.
-
- The root cause of the problem is a platform bug that was only fixed in
- 2.3. If you try to debug on a previous platform, the gdbserver binary
- will only be able to set breakpoints on the main thread.
-
- For more information, see the specific section in docs/NDK-GDB.html.
-
-- Easier debuggable builds: just invoke ndk-build while defining the
- NDK_DEBUG variable to 1, as in:
-
- $NDK/ndk-build NDK_DEBUG=1
-
- This will have the same result that setting the android:debuggable="true"
- in the <application> element of your AndroidManifest.xml file. See the
- file docs/NDK-BUILD.html for more details.
-
- Note that you will need to use the SDKr8 build tools to use this feature
- properly!
-
-- Refresh of system C++ headers:
-
- - Headers have been moved out of the platform directory hierarchy.
- This is to prevent conflicts with other STLs like STLport or the
- GNU libstdc++ which provide their own version of the headers, but
- does not affect your builds.
-
- - The list of headers has grown to include the following:
-
- cassert, cctype, cerrno, cfloat, climits, cmath,
- csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib,
- cstring, ctime, cwchar, new, typeinfo, utility
-
- Note that they still correspond to our minimal C++ runtime, no new feature
- was introduced here.
-
-- Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for
- all details (and limitations).
-
-- STLport implementation: Add sources and prebuilt binaries for a port of
- the STLport C++ Standard Library (www.stlport.org), and an easy way to use
- it at build time by defining APP_STL in your Application.mk. See
- docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details.
-
-- GNU libstdc++ implementation: Available as a static library that you can
- select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html
- for all details.
-
-- Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and
- PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation
- file named docs/PREBUILTS.html for explanations and usage examples.
-
-- Support for module exports: A module can now define a set of compiler or
- linker flags that will be automatically 'imported' by any other module that
- depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES.
-
- This is achieved with the help of new Android.mk variables named
- LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and
- LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and
- a 'samples/module-exports' for a sample project that uses this.
-
-- Add support to specify a different file name for generated files, through
- the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an
- example.
-
-- Add support for module imports, through the NDK_MODULE_PATH environment
- variable and the new 'import-module' function. This allows you to avoid
- hard-coding the path of third-party modules into your project files.
-
- See docs/IMPORT-MODULE.html for details.
-
-- Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging
- easier. Also fixes an issue that prevented clean parallel builds of
- debuggable applications to work correctly. This fixes an error message that
- said:
-
- /bin/sh: <project>/libs/armeabi/gdb.setup: No such file or directory
-
- When doing a "ndk-build -j<number>", with <number> bigger than 1.
-
-- Add support for assembly-level source filtering. See the description of
- LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful
- for certain kinds of obfuscation tasks.
-
-- This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3)
- which provides many benefits, including:
-
- - Better code generation than the previous one (gcc-4.4.0)
- - On Windows, the binaries do not depend on Cygwin anymore.
- - The ability to use it as a stand-alone cross-compiler
- (see docs/STANDALONE-TOOLCHAIN.html for all details).
-
- The binaries for gcc-4.4.0 are still provided for backwards compatibility.
- Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage.
- Note that it is now deprecated and will be removed in a future NDK release.
-
- IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI,
- STLport and GNU libstdc++.
-
- The binaries for the already-deprecated gcc-4.2.1 have been removed.
-
-- The 'cpufeatures' library has been updated to provide better architecture
- and features detection (including a work-around for buggy ARMv6 kernels
- which report an architecture version of 7).
-
- The library is now also available as an import module, to simplify its
- usage in your build scripts. See the updated docs/CPU-FEATURES.html file
- for details.
-
- NOTE: Please update your Android.mk to use module imports as soon as
- possible. The location $NDK/source/cpufeatures/ is deprecated
- and will be removed in a future NDK release. Avoid referencing
- it directly in your build scripts!
-
-OTHER FIXES AND CHANGES:
----
-
-- Reduced the size of generated binaries by using --strip-unneeded
- instead of --strip-debug. This gets rid of mor symbol table entries
- in release shared libraries and executables, without impacting
- runtime execution.
-
-- Fix bad automatic dependency tracking when using multiple source
- sub-directories.
-
-- The path to system headers is now included last in the compilation command
- line. This prevents conflicts with source code that define their own headers
- with similar names (e.g. a custom "err.h" was ignored, because the system
- <err.h> was used instead).
-
-- Update documentation for 'my-dir' function to explain that, due to the
- way GNU Make works, it really returns the path of the last included
- Makefile (instead of the current one). Also provide examples on how
- to deal with it.
-
-- make-release.sh: Now has an --out-dir=<path> option to specify the
- output directory where the packages are going to be copied. Also
- ensure that generated packages have go+r permissions.
-
-- ndk-build will now properly escape arguments. This means that something
- like this:
-
- ndk-build MY_CFLAGS="-DFOO -DBAR"
-
- will now work correctly.
-
-- Add --git-http option to download-toolchain-sources.sh and
- rebuild-all-prebuilt.sh in order to download sources from
- android.git.kernel.org through HTTP.
-
-- ndk-gdb: properly launch activities for which name does not contain any dot.
-
-- ndk-gdb: add --delay=<timeout> option to specify a delay in seconds
- between activity launch and gdbserver attach. This is needed because certain
- activities can take a long time to properly launch. The default delay is
- also increased to 2 seconds (instead of 1).
-
-- build/tools/build-gcc.sh: copy the sysroot to the build directory. This
- avoids the generated toolchain binaries from hard-coding host build paths.
-
-- Platform files are now under $NDK/platforms instead of $NDK/build/platforms
-
-- Toolchain files are now under $NDK/toolchains instead of
- $NDK/build/toolchains and $NDK/build/prebuilt.
-
-- Release and debug objects are stored under two different directories now
- (i.e. obj/local/<abi>/objs and obj/local/<abi>/objs-debug). This
- prevents rebuilding *everything* when you switch between these two modes,
- which can be a real time-saver for complex projects.
-
-- Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command
- when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true'
-
--------------------------------------------------------------------------------
-android-ndk-r4b
-===
-
-This release fixes a few bugs in r4 scripts. There are no new features.
-
-OTHER FIXES &amp; CHANGES:
----
-
-- build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'.
- Fix the script (and others in the same directory) to do that properly.
-
-- ndk-gdb: check the target device's API level, and dump an error message if
- it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly
- remove control characters like '\r' from adb shell's output. Also fix
- script to work properly with OS X's BSD awk.
-
-- ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try
- to look for jni/Android.mk if no manifest is found. If you don't use this,
- you can also define NDK_PROJECT_PATH to point to your tree.
-
- Also, on Windows, check that a Cygwin-compatible make executable is being
- used, and dump a readable help message to solve the issue if this is not
- the case.
-
-- Place generated binaries under $PROJECT_PATH/obj/ instead of
- $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned
- by the JDT, resulting in the inability to properly load symbol versions
- of the shared libraries when running ndk-gdb.
-
-- Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES.
- Previous behaviour was to silently ignore them.
-
-- Set the optimization mode to 'debug' automatically if the manifest sets
- android:debuggable to 'true'. You can override this by using
- 'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to
- your LOCAL_CFLAGS.
-
- Note that even in release mode, the NDK build scripts will produce
- binaries with symbols under obj/local/<abi>/ that will be used for
- debugging with gdb. However, the debugger will have a harder time to
- print proper local variable values that have been optimized out or
- even set breakpoints properly.
-
--------------------------------------------------------------------------------
-android-ndk-r4
-===
-
-IMPORTANT BUG FIXES:
----
-
-- The <fenv.h> header was not placed in the correct location and could not
- be found by normal builds.
-
-IMPORTANT CHANGES:
----
-
-- On Windows, Cygwin 1.7 or higher is now required. The NDK will not
- work properly with Cygwin 1.5 which is now officially obsolete
- anyway.
-
-- Simplified build system: You no longer need to run build/host-setup.sh
- or modify anything under $NDK_ROOT/apps/. Instead, just invoke the
- new 'ndk-build' script from your application's project directory, or
- one of its sub-directories.
-
- See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details.
-
- NOTE: For compatibility purpose, you can still define projects
- through $NDK_ROOT/apps/<name> though.
-
- However, not that sample applications have moved from
- 'apps/<name>/project' to 'samples/<name>' and now must
- be built with 'ndk-build'. The source code of pre-existing
- samples didn't change though.
-
-- Easy native debugging support when running debuggable applications
- on Android 2.2 or higher, through the new 'ndk-gdb' helper script.
- See docs/NDK-GDB.html for details.
-
-- Support for hardware FPU. This is through the new 'armeabi-v7a' ABI
- corresponding to ARMv7-a class devices.
-
- Note that by default, the NDK will still generate machine code for the old
- 'armeabi' ABI (ARMv5TE based) which is supported by all official Android
- system images to date.
-
- You will need to define APP_ABI in your Application.mk file to change this.
- See docs/APPLICATION-MK.html
-
- More details about ABIs is now available in docs/CPU-ARCH-ABIS.html
-
-- A small static library named 'cpufeatures' is provided with source code
- and can be used at runtime to determine the CPU features supported by the
- target device. It should run on all Android platforms, starting from 1.5.
-
- For more information, see docs/CPU-FEATURES.html
-
-- Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set
- extension through the use the LOCAL_ARM_NEON variable in Android.mk, or
- the '.neon' suffix when listing source files.
-
- Neon is an *optional* instruction set extension, and not all Android ARMv7
- devices will support it. You will need to use the 'cpufeatures' library to
- determine if such code can be used at runtime, and provide alternate code
- paths if this is not the case. This is similar to MMX/SSE/3DNow on x86
- platforms.
-
- For more information, see docs/CPU-ARM-NEON.html
-
-- Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures'
- and NEON intrinsics and build support.
-
-- Added <android/bitmap.h>, a new stable API available from android-8
- (a.k.a. Android 2.2) to reliably access the pixel buffer of an
- android.graphics.Bitmap object from native code. See docs/STABLE-API.html
- and the new sample program under 'samples/bitmap-plasma' for details
- and usage example.
-
-- Support the NX (No Execute) security feature, where special sections
- are added to the generated shared libraries to instruct the kernel
- that code shall not be executed from the heap and stack by default.
-
- See docs/ANDROID-MK.html to see how to disable this, plus reference
- links for more information.
-
-OTHER FIXES AND CHANGES:
----
-
-- support the .s extension for raw assembly sources (.S is already supported
- but the input files are parsed by the C-preprocessor before being sent to
- the assembler).
-
-- build/host-setup.sh has been removed. There is no need for a 'setup' step
- when using the NDK for the first time. All host-specific autodetection and
- basic tool sanity checking have been moved to the build scripts themselves.
-
-- APP_MODULES in Application.mk is now optional. If not defined, the NDK
- will simply build _all_ the modules that are declared from your Android.mk.
-
- You can still use APP_MODULES to restrict the set of modules you want to
- build. Note that the NDK now computes the transitive dependencies of these
- modules for you now. See docs/APPLICATION-MK.html for details.
-
-- docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library
- (libdl.so). It is actually supported by all API levels.
-
-- build/tools/download-toolchain-sources.sh: Use 'master' branch by default
- instead of the 'eclair' one.
-
-- build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding
- them. This is primarily to ease development. All you need to do is put a patch
- under build/tools/toolchain-patches/<foo>/<name>.patch, and it will be applied
- with 'patch -p1' into the <foo> directory of the unpacked toolchain sources
- before the configure step.
-
-- docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI.
-
-- build/core/mkdeps.sh: Removed obsolete script.
-
-- the NDK build script now only parses the Application.mk and Android.mk of
- the applications listed by APP. The error messages when APP is empty or
- malformed have also been improved.
-
-- removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4'
- warning when building with GCC 4.4.0 for ARM.
-
-- C Library header fixes:
-
- For all platforms:
-
- - <arpa/inet.h>: no longer includes <netinet/in6.h>.
- - <ctype.h>: better inlining with -ansi option.
- - <mntent.h>: add missing include for <stdio.h>.
- - <netinet/in.h>: include <netinet/in6.h> and define in6addr_any +
- in6addr_loopback.
- - <netinet/in6.h>: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP,
- IN6ADDR_ANY_INIT, ipv6mr_interface.
- - <sys/epoll.h>: add missing C++ inclusion guards.
- - <sys/resource.h>: add missing rlim_t declaration.
- - <sys/system_properties.h>: add missing C++ inclusion guards.
- - <time64.h>: add missing C++ inclusion guards.
- - <netdb.h>: move h_errno declaration inside C++ inclusion guards.
-
-- C Library changes:
-
- For android-8 (a.k.a. Android 2.2):
-
- - <dlfcn.h>: add DL_info and dladdr().
- - <err.h>: add err(), warn() and other variants.
- - <regex.h>, <fts.h>, <sys/queue.h>: added
- - <pthread.h>: add pthread_condattr_t
- - <sched.h>: added proper clone() declaration (and implementation).
- - <signal.h>: added killpg().
- - <stdio.h>: add fdprintf() and vfdprintf().
- - <stdlib.h>: fix ptsname_r() signature in declaration. previous
- implementation was broken anyway.
- - <unistd.h>: add getusershell(), setusershell(), endusershell(),
- ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature
- (now returns int).
- - <wchar.h>: add fake mbstowcs() and wcstombs().
-
- More details available under docs/system/libc/CHANGES.html
-
--------------------------------------------------------------------------------
-android-ndk-r3
-===
-
-IMPORTANT BUG FIXES:
----
-
-- Fix build/host-setup.sh to execute as a Bourne shell script (again)
-
-- Make target shared libraries portable to systems that don't use the exact
- same toolchain. This is needed due to differences in libgcc.a implementations
- between gcc 4.2.1 and 4.4.0. This change ensures that generated machine
- code doesn't depend on helper functions provided by the Android platform
- runtime.
-
-
-IMPORTANT CHANGES:
----
-
-- GCC 4.4.0 is now used by default by the NDK. It generates better code than
- GCC 4.2.1, which was used in previous releases. However, the compiler's C++
- frontend is also a lot more pedantic regarding certain template constructs
- and will even refuse to build some of them.
-
- For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and
- you can force its usage by defining NDK_TOOLCHAIN in your environment to
- the value 'arm-eabi-4.2.1'. For example:
-
- export NDK_TOOLCHAIN=arm-eabi-4.2.1
- make APP=hello-jni
-
- Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We
- recommend switching to 4.2.1 *only* if you encounter compilation problems
- with 4.4.0.
-
- The 4.2.1 prebuilt binaries will probably be removed from a future release
- of the Android NDK, we thus *strongly* invite you to fix your code if such
- problems happen.
-
-- Support for OpenGL ES 2.0. This is through the new 'android-5' platform to
- reflect Android 2.0 (previously the Eclair branch). This is merely a copy
- of android-4 that also includes headers and libraries for OpenGL ES 2.0.
-
- See the sample named "hello-gl2" for a *very* basic demonstration. Note that
- OpenGL ES 2.0 is currently *not* available from Java, and must be used
- through native code exclusively.
-
- IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this
- time. Running/testing any native code that depends on it thus
- requires a real device.
-
-- The NDK build script will now remove installed binaries from the application
- project's path before starting the build. This ensures that:
-
- - if the build fails for some reason, a stale/obsolete file is not left in
- your application project tree by mistake.
-
- - if you change the target ABI, a stale/obsolete file is not left into the
- folder corresponding to the old ABI.
-
-
-- Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0
- issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and
- 2.0 on specific devices only, need for <uses-feature> tag in manifest).
-
-
-OTHER FIXES AND CHANGES:
----
-
-- Actually use the awk version detected by host-setup.sh during the build.
-
-- Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set
- to 'true', just like the documentation says it works. Also fix a typo
- in CLEAR_VARS that prevented this variable from being cleared properly.
-
-- Simplified build/tools/make-release.sh, the --prebuilt-dir option is
- gone, and --help will dump a clearer description of expected options
- and input files.
-
-- Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to
- package a new experimental NDK package archive from the current source tree
- plus the toolchain binaries of an existing NDK release package. E.g.:
-
- build/tools/make-release.sh \
- --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip
-
- will generate a new NDK package in /tmp/ndk-release that contains the most
- up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which
- are not in the git repository).
-
- Also added the --no-git option to collect all sources from the current
- NDK root directory, instead of the list given by 'git ls-files'. This can
- be useful if you don't want to checkout the whole 'platform/development'
- project from repo and still work on the NDK.
-
- This change is to help people easily package experimental NDK releases to
- test and distribute fixes and improvements.
-
-- Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to
- build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04)
-
-- Remove bash-ism from build/tools/build-ndk-sysroot.sh
-
-- Refresh C library headers for all platforms:
-
- - make <endian.h> simply include <sys/endian.h>
- - make <stdint.h> properly declare 64-bit integer types with a C99 compiler
- - add missing <sys/types.h> to <strings.h>
- - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
- st_ctimensec) to <stat.h>
- - add missing declaration for tzset() in <time.h>
-
-- Added build/tools/download-toolchain-sources.sh, a script that allows you
- to download the toolchain sources from the official open-source repository
- at android.git.kernel.org and nicely package them into a tarball that can
- later be used by build/tools/build-toolchain.sh to rebuild the prebuilt
- binaries for your system.
-
-- Updated build/tools/build-toolchain.sh to support the tarballs generated
- by download-toolchain-sources.sh with the --package=<file> option. This
- also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to
- gcc 4.4.0.
-
--------------------------------------------------------------------------------
-android-ndk-1.6_r1
-===
-
-IMPORTANT BUG FIXES:
----
-
-- Fix build/host-setup.sh to:
- * execute as a Bourne shell script
- * remove unused host gcc dependency
- * improve Windows host auto-detection
- * add GNU Make version check
- * add Nawk/Gawk check
- * ensure that the script is run from $NDKROOT as build/host-setup.sh
- * add --help, --verbose, --no-awk-check and --no-make-check options
-
-- Properly add sysroot library search path at build time. This makes a line
- in Android.mk like:
-
- LOCAL_LDLIBS := -lz
-
- Actually work correctly, instead of having the linker complaining that it
- could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
- in $(CLEAR_VARS) script.
-
-
-IMPORTANT CHANGES:
----
-
-- The 'sources' directory is gone. The NDK build system now looks for
- $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with
- the new APP_BUILD_SCRIPT variable in Application.mk
-
- For example, the 'hello-jni' sample uses the following files:
-
- apps/hello-jni/project/jni/Android.mk
- apps/hello-jni/project/jni/hello-jni.c
-
- The 'apps/<name>' directory is still needed in this release though.
-
-- Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build
- system. This means that:
-
- - LOCAL_CFLAGS is now used for *both* C and C++ sources (was only for C)
- - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++)
- - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete.
- (will disappear in next release)
-
- Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly.
-
-- Rename build/platforms/android-1.5 to build/platforms/android-3 to match
- the Android API level instead of the marketing speak.
-
- Also add a new build/platforms/android-4, and make the build system select
- which platform to use based on the content of the project file named
- $(APP_PROJECT_PATH)/default.properties.
-
-- Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs.
- (NOTE: they are *not* available for android-3)
-
- Also provide a small port of the "San Angeles Observation" demo to show
- how to make a simple Android application that uses them.
-
-
-OTHER FIXES AND CHANGES
----
-
-- Ensure that the __ANDROID__ macro is always defined when building code
- with the NDK. Normally, the macro must be defined by the toolchain
- automatically to indicate that you're targeting the Android runtime.
-
- This works for the new arm-linux-androideabi toolchain, but there is
- a bug in the way we built the arm-eabi one, so add the flag manually
- through the NDK build script for it.
-
- Note that the ANDROID macro, is now deprecated. While it is still defined
- by the NDK, you should modify your code to test against __ANDROID__ instead!
-
-- Generate thumb binaries by default.
-
-- Add support for LOCAL_ARM_MODE in Android.mk.
-
-- Add support for the '.arm' suffix in source file names to force the
- compilation of a single source in ARM (32-bit) mode.
-
-- Generate proper unoptimized versions of binaries when APP_OPTIM := debug
-
-- Add support for LOCAL_C_INCLUDES in Android.mk
-
-- Fix compilation of assembler files (e.g. foo.S)
-
--------------------------------------------------------------------------------
-android-ndk-1.5_r1 released.
-===
diff --git a/docs/text/CPLUSPLUS-SUPPORT.text b/docs/text/CPLUSPLUS-SUPPORT.text
deleted file mode 100644
index 0f31294fa..000000000
--- a/docs/text/CPLUSPLUS-SUPPORT.text
+++ /dev/null
@@ -1,302 +0,0 @@
-C++ support with the Android NDK
-================================
-
-
-The Android platform provides a very minimal C++ runtime support library
-(/system/lib/libstdc++) and corresponding headers for it in the NDK.
-
-By default, this 'system' runtime does *not* provide the following:
-
- - Standard C++ Library support (except a few trivial headers).
- - C++ exceptions support
- - RTTI support
-
-However, the NDK provides various "helper C++ runtimes" which can provide them,
-or a subset of these features.
-
-To select the runtime you want to use, define APP_STL inside your
-Application.mk to one of the following values:
-
- system -> Use the default minimal system C++ runtime library.
- gabi++_static -> Use the GAbi++ runtime as a static library.
- gabi++_shared -> Use the GAbi++ runtime as a shared library.
- stlport_static -> Use the STLport runtime as a static library.
- stlport_shared -> Use the STLport runtime as a shared library.
- gnustl_static -> Use the GNU STL as a static library.
- gnustl_shared -> Use the GNU STL as a shared library.
- c++_static -> Use the LLVM libc++ as a static library.
- c++_shared -> Use the LLVM libc++ as a shared library.
-
-The 'system' runtime is the default if there is no APP_STL definition in
-your Application.mk. As an example, to use the static GNU STL, add a line like:
-
- APP_STL := gnustl_static
-
-To your Application.mk. You can only select a single C++ runtime that all
-your code will depend on. It is not possible to mix shared libraries compiled
-against different C++ runtimes.
-
-IMPORTANT: Defining APP_STL in Android.mk has no effect!
-
-If you are not using the NDK build system, you can still use on of
-STLport, libc++ or GNU STL via "make-standalone-toolchain.sh --stl=".
-see docs/STANDALONE-TOOLCHAIN.html for more details.
-
-The capabilities of the various runtimes vary. See this table:
-
- C++ C++ Standard
- Exceptions RTTI Library
-
- system no no no
- gabi++ yes yes no
- stlport yes yes yes
- gnustl yes yes yes
- libc++ yes yes yes
-
-#
-
-- - - -
-I. Runtimes overview:
----------------------
-
-### I.1. System runtime:
-
-The system runtime only provides a very small number of C++ standard headers.
-
-This corresponds to the actual C++ runtime provided by the Android platform.
-If you use it, your C++ binaries will automatically be linked against the
-system libstdc++.
-
-The only headers provided here are the following:
-
- cassert cctype cerrno cfloat climits cmath csetjmp csignal cstddef
- cstdint cstdio cstdlib cstring ctime cwchar new stl_pair.h typeinfo
- utility
-
-Anything else is _not_ supported, including std::string or std::vector.
-
-
-### I.2. GAbi++ runtime:
-
-This is a new minimalistic runtime that provides the same headers than
-the system one, with the addition of RTTI (RunTime Type Information) and
-exception handling support.
-
-If you insist on using it, read the "RTTI Support" and
-"Static runtime considerations" sections below.
-
-
-### I.3. STLport runtime:
-
-This is a port of STLport (http://www.stlport.org) that can be used on
-Android. It will provide you with a complete set of C++ standard library
-headers, with RTTI and exception handling support.
-
-That's because the library embeds its own copy of GAbi++.
-
-Available as both both static and shared libraries. To use it, use either
-one of these two lines in your Application.mk:
-
- APP_STL := stlport_shared
- APP_STL := stlport_static
-
-Note that 'stlport_shared' is preferred, for reasons explained in
-"Static runtime considerations". The shared library file is named
-libstlport_shared.so instead of "libstdc++.so" as on other platforms.
-
-
-### I.4. GNU STL runtime:
-
-This is the GNU Standard C++ Library (a.k.a. libstdc++-v3), providing the
-more features. Note that the shared library file is named "libgnustl_shared.so".
-
-
-### I.5. libC++ runtime:
-
-This is a port of LLVM libc++: http://libcxx.llvm.org/. Note that the shared library
-file is named "libc++_shared.so".
-
-
-Please read the "C++ Exceptions support", "RTTI Support" and
-"Static runtime considerations" sections below.
-
-
-- - - -
-II. Important Considerations:
------------------------------
-
-### II.1. C++ Exceptions support:
-
-The NDK toolchain supports C++ exceptions, since NDK r5, however all C++
-sources are compiled with -fno-exceptions support by default, for
-compatibility reasons with previous releases.
-
-To enable it, use the new LOCAL_CPP_FEATURES variable in your Android.mk,
-as in:
-
- LOCAL_CPP_FEATURES += exceptions
-
-See docs/ANDROID-MK.html for more details about this variable.
-
-Another way to do the same is to define it in your LOCAL_CPPFLAGS definition
-(but using LOCAL_CPP_FEATURES is preferred), as in:
-
- LOCAL_CPPFLAGS += -fexceptions
-
-More simply, add a single line to your Application.mk, the setting will
-automatically apply to all your project's NDK modules:
-
- APP_CPPFLAGS += -fexceptions
-
-IMPORTANT: You *will* have to select a C++ runtime that supports
- exceptions to be able to link / run your code.
-
-
-### II.2. RTTI support:
-
-Similarly, the NDK toolchain supports C++ RTTI (RunTime Type Information)
-since NDK r5, but all C++ sources are built with -fno-rtti by default for
-compatibility reasons. To enable it, add the following to your module
-declarations:
-
- LOCAL_CPP_FEATURES += rtti
-
-This will be equivalent to:
-
- LOCAL_CPPFLAGS += -frtti
-
-Or more simply to your Application.mk:
-
- APP_CPPFLAGS += -frtti
-
-
-### II.3. Static runtimes:
-
-Please keep in mind that the static library variant of a given C++ runtime
-SHALL ONLY BE LINKED INTO A SINGLE BINARY for optimal conditions.
-
-What this means is that if your project consists of a single shared
-library, you can link against, e.g., stlport_static, and everything will
-work correctly.
-
-On the other hand, if you have two shared libraries in your project
-(e.g. libfoo.so and libbar.so) which both link against the same static
-runtime, each one of them will include a copy of the runtime's code in
-its final binary image. This is problematic because certain global
-variables used/provided internally by the runtime are duplicated.
-
-This is likely to result in code that doesn't work correctly, for example:
-
- - memory allocated in one library, and freed in the other would leak
- or even corrupt the heap.
-
- - exceptions raised in libfoo.so cannot be caught in libbar.so (and may
- simply crash the program).
-
- - the buffering of std::cout not working properly
-
-This problem also happens if you want to link an executable and a shared
-library to the same static library.
-
-In other words, if your project requires several shared library modules,
-then use the shared library variant of your C++ runtime.
-
-
-### II.4. Shared runtimes:
-
-If you use the shared library variant of a given C++ runtime, keep in mind
-that you must load it before any library that depends on it when your
-application starts.
-
-As an example, let's consider the case where we have the following modules
-
- * libfoo.so
- * libbar.so which is used by libfoo.so
- * libstlport_shared.so, used by both libfoo and libbar
-
-You will need to load the libraries in reverse dependency order, as in:
-
- static {
- System.loadLibrary("stlport_shared");
- System.loadLibrary("bar");
- System.loadLibrary("foo");
- }
-
-Note that you shouldn't use the 'lib' prefix when calling
-System.loadLibrary(), unless you specify the full path as in:
-
- System.loadLibrary("/path/to/libstlport_shared.so")
-
-Which is not recommended, since this hard-codes the path in your code.
-
-- - - -
-III. EXTRAS:
-------------
-
-### III.1. STLport-specific issues:
-
-This NDK provides prebuilt static and shared libraries for STLport,
-but you can force it to be rebuilt from sources by defining the following
-in your environment or your Application.mk before building:
-
- STLPORT_FORCE_REBUILD := true
-
-STLport is licensed under a BSD-style open-source license. See
-sources/cxx-stl/stlport/README for more details about the library.
-
-
-### III.2. GNU libstdc++ license is GPLv3 + linking exception!
-
-Be aware that the GNU libstdc++ is covered by the GPLv3 license (and *not*
-the LGPLv2 or LGPLv3 as some assume), full details available here:
-
- http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html
-
-Be sure that you comply with all clauses of this license.
-
-
-### III.3. libc++-specific issues:
-
-"-std=c++11" is turned on by default.
-
-Similiar to GNU libstdc++, you need to explicitly turns on exceptions or rtti
-support in "LOCAL_CPP_FEATURES" if you wish.
-
-It's likely that you need libatomic if you #include <atomic>. Add
-"LOCAL_LDLIBS += -latomic" for ndk-build, and "-latomic" for standalone toolchain.
-Note that -latomic is only available in gcc4.8, not gcc4.6. Clang3.4/3.3 use gcc4.8's
-as/ld/headers/libraries so they get -latomic too. The version of libatomic in gcc4.8
-*may* work for gcc4.6, although it's not tested and you have to copy them manually.
-
-This NDK provides prebuilt static and shared libraries for libc++
-compiled by clang, but you can force it to be rebuilt from sources by defining
-the following in your environment or your Application.mk before building:
-
- LIBCXX_FORCE_REBUILD := true
-
-Around 98% of current 4645 tests passes when compiling libc++ with
-clang for all supported ABIs. The remaining fails are mostly in the areas
-of wchar_t and locale Android bionic don't support. Switching locale
-from the default produces the following warning in logcat
-
- newlocale() WARNING: Trying to set locale to en_US.UTF-8 other than "", "C" or "POSIX"
-
-Using gabi++ as run-time also causes some issues in the nested exception and propagation too,
-which will be addressed when libc++ switches to use libc++abi in the future.
-
-More fails when compiling libc++ with gcc4.8 mostly because the lack of support
-in _Atomic (ETA: gcc 4.9). See platform/ndk.git
-29d9f88ef5a33cd65b4b9977aed628bc195facf3 for details
-
-Using libc++ with gcc4.6 is not recommended (at least not tested at
-this moment) because its c++11 support isn't great
-
-See "black_list*" in
-tests/device/test-libc++-shared-full/jni/Android.mk for tests which fail to
-compile, and tests/device/test-libc++-shared-full/BROKEN_RUN for tests
-which fails to run correctly.
-
-### IV. Future Plans:
-
- - uSTL support?
-
diff --git a/docs/text/CPU-ARCH-ABIS.text b/docs/text/CPU-ARCH-ABIS.text
deleted file mode 100644
index 353e37645..000000000
--- a/docs/text/CPU-ARCH-ABIS.text
+++ /dev/null
@@ -1,402 +0,0 @@
-Android Native CPU ABI Management
-
-
-Introduction:
-=============
-
-Every piece of native code generated with the Android NDK matches a given
-"Application Binary Interface" (ABI) that defines exactly how your
-application's machine code is expected to interact with the system at
-runtime.
-
-A typical ABI describes things in *excruciating* details, and will typically
-include the following information:
-
- - the CPU instruction set that the machine code should use
-
- - the endianness of memory stores and loads at runtime
-
- - the format of executable binaries (shared libraries, programs, etc...)
- and what type of content is allowed/supported in them.
-
- - various conventions used to pass data between your code and
- the system (e.g. how registers and/or the stack are used when functions
- are called, alignment constraints, etc...)
-
- - alignment and size constraints for enum types, structure fields and
- arrays.
-
- - the list of function symbols available to your machine code at runtime,
- generally from a very specific selected set of libraries.
-
-This document lists the exact ABIs supported by the Android NDK and the
-official Android platform releases.
-
-
-- - - -
-I. Supported ABIs:
-==================
-
-Each supported ABI is identified by a unique name.
-
-
-I.1. 'armeabi'
---------------
-
- This is the name of an ABI for ARM-based CPUs that support *at* *least*
- the ARMv5TE instruction set. Please refer to following documentation for
- more details:
-
- - ARM Architecture Reference manual (a.k.a ARMARM)
- - Procedure Call Standard for the ARM Architecture (a.k.a. AAPCS)
- - ELF for the ARM Architecture (a.k.a. ARMELF)
- - ABI for the ARM Architecture (a.k.a. BSABI)
- - Base Platform ABI for the ARM Architecture (a.k.a. BPABI)
- - C Library ABI for the ARM Architecture (a.k.a. CLIABI)
- - C++ ABI for the ARM Architecture (a.k.a. CPPABI)
- - Runtime ABI for the ARM Architecture (a.k.a. RTABI)
-
- - ELF System V Application Binary Interface
- (DRAFT - 24 April 2001)
-
- - Generic C++ ABI (http://mentorembedded.github.com/cxx-abi/abi.html)
-
- Note that the AAPCS standard defines 'EABI' as a moniker used to specify
- a _family_ of similar but distinct ABIs. Android follows the little-endian
- ARM GNU/Linux ABI as documented in the following document:
-
-> http://sourcery.mentor.com/sgpp/lite/arm/portal/kbattach142/arm_gnu_linux_abi.pdf
-
- With the exception that wchar_t is only one byte. This should not matter
- in practice since wchar_t is simply *not* really supported by the Android
- platform anyway.
-
- This ABI does *not* support hardware-assisted floating point computations.
- Instead, all FP operations are performed through software helper functions
- that come from the compiler's libgcc.a static library.
-
- Thumb (a.k.a. Thumb-1) instructions are supported. Note that the NDK
- will generate thumb code by default, unless you define LOCAL_ARM_MODE
- in your Android.mk (see docs/ANDROID-MK.html for all details).
-
-
-I.2. 'armeabi-v7a'
-------------------
-
- This is the name of another ARM-based CPU ABI that *extends* 'armeabi' to
- include a few CPU instruction set extensions as described in the following
- document:
-
- - ARM Architecture v7-a Reference Manual
-
- The instruction extensions supported by this Android-specific ABI are:
-
- - The Thumb-2 instruction set extension.
- - The VFP hardware FPU instructions.
-
- More specifically, VFPv3-D16 is being used, which corresponds to 16
- dedicated 64-bit floating point registers provided by the CPU.
-
- Other extensions described by the v7-a ARM like Advanced SIMD (a.k.a. NEON),
- VFPv3-D32 or ThumbEE are optional to this ABI, which means that developers
- should check *at* *runtime* whether the extensions are available and provide
- alternative code paths if this is not the case.
-
- (Just like one typically does on x86 systems to check/use MMX/SSE2/etc...
- specialized instructions).
-
- You can check docs/CPU-FEATURES.html to see how to perform these runtime
- checks, and docs/CPU-ARM-NEON.html to learn about the NDK's support for
- building NEON-capable machine code too.
-
- IMPORTANT NOTE: This ABI enforces that all double values are passed during
- function calls in 'core' register pairs, instead of dedicated FP ones, via
- switch -mfloat-abi=softfp. However, all internal computations can be performed
- with the FP registers and will be greatly sped up.
-
- This little constraint, while resulting in a slight decrease of
- performance, ensures binary compatibility with all existing 'armeabi'
- binaries.
-
- Starting from r9b, it's possible to compile code in -mhard-float and still link
- with Android native APIs which follow softfp. Please see
- tests/device/hard-float/jni/Android.mk for details
-
- IMPORTANT NOTE: The 'armeabi-v7a' machine code will *not* run on ARMv5 or
- ARMv6 based devices.
-
-
-I.3. 'x86'
-----------
-
- This is the name of an ABI for CPUs supporting the instruction set
- commonly named 'x86' or 'IA-32'. More specifically, this ABI corresponds
- to the following:
-
- - instructions normally generated by GCC with the following compiler
- flags:
-
- -march=i686 -mtune=intel -mstackrealign -mssse3 -mfpmath=sse -m32
-
- which targets Pentium Pro instruction set, according to the GCC
- documentation, plus the MMX, SSE, SSE2, SSE3, SSSE3 instruction set
- extensions. Generated code is a balanced optimization across top Intel
- 32-bit CPUs.
-
- IMPORTANT NOTE: Flags above are not optimization guide. Compiler
- optimization options which are used by default and/or recommended for
- performance boost on x86 are not included. For performance optimization
- hints on x86 GCC please refer to the following article:
-
-> http://software.intel.com/blogs/2012/09/26/gcc-x86-performance-hints
-
- - using the standard Linux x86 32-bit calling convention (e.g. section 6,
- "Register Usage" of the "Calling conventions..." document below), not
- the SVR4 one.
-
- The ABI does *not* include any other optional IA-32 instruction set
- extension, including, but not limited to:
-
- - the MOVBE instruction
- - any variant of "SSE4"
-
- You can still use these, as long as you use runtime feature probing to
- enable them, and provide fallbacks for devices that do not support them.
-
- Please refer to the following documents for more details:
-
- * http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html
-
- * Calling conventions for different C++ compilers and operating systems:
-> http://www.agner.org/optimize/calling_conventions.pdf
-
- * Intel IA-32 Intel Architecture Software Developer's Manual
- volume 2: Instruction Set Reference
-
- * Intel IA-32 Intel Architecture Software Developer's Manual
- volume 3: System Programming
-
- * Amendment to System V Application Binary Interface
- Intel386 Processor Architecture Supplement
-
-
-I.4. 'mips'
------------
-
- This is the name of an ABI for MIPS-based CPUs that support *at* *least*
- the MIPS32r1 instruction set. The ABI includes the following features:
-
- - MIPS32 revision 1 ISA
- - Little-Endian
- - O32
- - Hard-Float
- - no DSP application specific extensions
-
- Please refer to following documentation for more details:
-
- - ELF for the MIPS Architecture (a.k.a. MIPSELF)
- - FAQ for MIPS Toolchains (a.k.a. MIPSFAQ)
- - Toolchain Specifics (a.k.a. MIPSTOOL)
- - SDE Library (a.k.a. MIPSSDE)
- - Instruction Set Quick Reference (a.k.a. MIPSISA)
- - Architecture for Programmers (a.k.a. MIPSARCH)
- - ELF System V Application Binary Interface
- (DRAFT - 24 April 2001)
- - Generic C++ ABI (http://sourcery.mentor.com/public/cxx-abi/abi.html)
-
- The MIPS specific documentation is available at:
-> http://www.mips.com/products/product-materials/processor/mips-architecture/
-
-> https://sourcery.mentor.com/sgpp/lite/mips/portal/target_arch?@action=faq&target_arch=MIPS
-
- Note: This ABI assumes a CPU:FPU clock ratio of 2:1 for maximum
- compatibility.
-
- Note: that MIPS16 support is not provided, nor is micromips.
-
-
-I.5. 'x86-64'
-----------
-
- This is the name of an ABI for CPUs supporting the instruction set
- commonly named 'x86-64'. More specifically, this ABI corresponds
- to the following:
-
- - instructions normally generated by GCC with the following compiler
- flags:
-
- -march=x86-64 -msse4.2 -mpopcnt -m64 -mtune=intel
-
- which targets x86-64 instruction set, according to the GCC
- documentation, plus the MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
- SSE4.2 and POPCNT instruction set extensions. Generated code is a balanced
- optimization across top Intel 64-bit CPUs.
-
- IMPORTANT NOTE: Flags above are not optimization guide. Compiler
- optimization options which are used by default and/or recommended for
- performance boost on x86-64 are not included. For performance
- optimization hints on x86-64 GCC please refer to the following
- article:
-
-> http://software.intel.com/blogs/2012/09/26/gcc-x86-performance-hints
-
- The ABI does *not* include any other optional x86-64 instruction set
- extension, including, but not limited to:
-
- - the MOVBE instruction
- - the SHA instruction
- - the AVX extension
- - the AVX2 extension
-
- You can still use these, as long as you use runtime feature probing to
- enable them, and provide fallbacks for devices that do not support them.
-
- Please refer to the following documents for more details:
-
- * http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html
-
- * Calling conventions for different C++ compilers and operating systems:
-> http://www.agner.org/optimize/calling_conventions.pdf
-
- * Intel64 and IA-32 Intel Architecture Software Developer's Manual
- volume 2: Instruction Set Reference
-
- * Intel64 and IA-32 Intel Architecture Software Developer's Manual
- volume 3: System Programming
-
- * Amendment to System V Application Binary Interface
- AMD64 Processor Architecture Supplement
-
-- - - -
-II. Generating code for a specific ABI:
-=======================================
-
-By default, the NDK will generate machine code for the 'armeabi' ABI.
-You can however add the following line to your Application.mk to generate
-ARMv7-a compatible machine code instead:
-
- APP_ABI := armeabi-v7a
-
-It is also possible to build machine code for two or more distinct ABIs,
-for example:
-
- APP_ABI := armeabi armeabi-v7a
-
-This will instruct the NDK to build two versions of your machine code: one for
-each ABI listed on this line. Both libraries will be copied to your application
-project path and will be ultimately packaged into your .apk.
-
-Such a package is called a "fat binary" in Android speak since it contains
-machine code for more than one CPU architecture. At installation time, the
-package manager will only unpack the most appropriate machine code for the
-target device. See below for details.
-
-Also you can use:
-
- APP_ABI := all
-
-which will generate machine code for all supported ABIs with this NDK. Doing so
-will ensure that your application package contains libraries for all target ABIs.
-Note that this has an impact on package size, since each ABI will correspond to
-its own set of native libraries built from the same sources.
-
-
-- - - -
-III. ABI Management on the Android platform:
-============================================
-
-This section provides specific details about how the Android platform manages
-native code in application packages.
-
-
-III.1. Native code in Application Packages:
--------------------------------------------
-
-It is expected that shared libraries generated with the NDK are stored in
-the final application package (.apk) at locations of the form:
-
- lib/<abi>/lib<name>.so
-
-Where <abi> is one of the ABI names listed in section II above, and <name>
-is a name that can be used when loading the shared library from the VM
-as in:
-
- System.loadLibrary("<name>");
-
-Since .apk files are just zip files, you can trivially list their content
-with a command like:
-
- unzip -l <apk>
-
-to verify that the native shared libraries you want are indeed at the
-proper location. You can also place native shared libraries at other
-locations within the .apk, but they will be ignored by the system, or more
-precisely by the steps described below; you will need to extract/install
-them manually in your application.
-
-In the case of a "fat" binary, up to four distinct libraries can be placed
-in the .apk, for example at:
-
- lib/armeabi/libfoo.so
- lib/armeabi-v7a/libfoo.so
- lib/x86/libfoo.so
- lib/x86-64/libfoo.so
- lib/mips/libfoo.so
-
-IMPORTANT NOTE: ARMv7-based Android device running 4.0.3 or before installs native
-library from the 'armeabi' directory instead of 'armeabi-v7a' directory if both
-exist and 'lib/armeabi' is listed after 'lib/armeabi-v7a' in apk. This issue is
-fixed in 4.0.4 or later.
-
-
-III.2. Android Platform ABI support:
-------------------------------------
-
-The Android system knows at runtime which ABI(s) it supports. More
-precisely, up to two build-specific system properties are used to
-indicate:
-
-- the 'primary' ABI for the device, corresponding to the machine
- code used in the system image itself.
-
-- an optional 'secondary' ABI, corresponding to another ABI that
- is also supported by the system image.
-
-To achieve the best performance for your NDK component, you should compile
-directly for the primary ABI.
-
-For example, a typical ARMv5TE-based device would only define
-the primary ABI as '`armeabi`' and not define a secondary one.
-
-On the other hand, a typical ARMv7-based device would define the
-primary ABI to '`armeabi-v7a`' and the secondary one to '`armeabi`'
-since it can run application native binaries generated for both
-of them.
-
-Many x86-based devices can also run armeabi-v7a and armeabi NDK
-binaries and define the primary ABI to '`x86`' and the secondary
-one to '`armeabi-v7a`'.
-
-A typical MIPS-based device only defines a primary abi named '`mips`'.
-
-III.3. Automatic extraction of native code at install time:
------------------------------------------------------------
-
-When installing an application, the package manager service will scan
-the .apk and look for any shared library of the form:
-
- lib/<primary-abi>/lib<name>.so
-
-If one is found, then it is copied under `$APPDIR/lib/lib<name>.so`,
-where `$APPDIR` corresponds to the application's specific data directory.
-
-If none is found, and a secondary ABI is defined, the service will
-then scan for shared libraries of the form:
-
- lib/<secondary-abi>/lib<name>.so
-
-If anything is found, then it is copied under `$APPDIR/lib/lib<name>.so`
-
-This mechanism ensures that the best machine code for the target
-device is automatically extracted from the package at installation
-time.
diff --git a/docs/text/CPU-ARM-NEON.text b/docs/text/CPU-ARM-NEON.text
deleted file mode 100644
index 9a0c89538..000000000
--- a/docs/text/CPU-ARM-NEON.text
+++ /dev/null
@@ -1,127 +0,0 @@
-Android NDK & ARM NEON instruction set extension support
-
-Introduction:
-====
-
-Android NDK r3 added support for the new 'armeabi-v7a' ARM-based ABI
-that allows native code to use two useful instruction set extensions:
-
-- Thumb-2, which provides performance comparable to 32-bit ARM
- instructions with similar compactness to Thumb-1
-
-- VFPv3, which provides hardware FPU registers and computations,
- to boost floating point performance significantly.
-
- More specifically, by default 'armeabi-v7a' only supports
- VFPv3-D16 which only uses/requires 16 hardware FPU 64-bit registers.
-
-More information about this can be read in docs/CPU-ARCH-ABIS.html
-
-The ARMv7 Architecture Reference Manual also defines another optional
-instruction set extension known as "ARM Advanced SIMD", nick-named
-"NEON". It provides:
-
-- A set of interesting scalar/vector instructions and registers
- (the latter are mapped to the same chip area as the FPU ones),
- comparable to MMX/SSE/3DNow! in the x86 world.
-
-- VFPv3-D32 as a requirement (i.e. 32 hardware FPU 64-bit registers,
- instead of the minimum of 16).
-
-Not all ARMv7-based Android devices will support NEON, but those that
-do may benefit in significant ways from the scalar/vector instructions.
-
-The NDK supports the compilation of modules or even specific source
-files with support for NEON. What this means is that a specific compiler
-flag will be used to enable the use of GCC ARM Neon intrinsics and
-VFPv3-D32 at the same time. The intrinsics are described here:
-
-> http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html
-
-
-Using LOCAL_ARM_NEON:
----------------------
-
-Define LOCAL_ARM_NEON to 'true' in your module definition, and the NDK
-will build all its source files with NEON support. This can be useful if
-you want to build a static or shared library that specifically contains
-NEON code paths.
-
-
-Using the .neon suffix:
------------------------
-
-When listing sources files in your LOCAL_SRC_FILES variable, you now have
-the option of using the .neon suffix to indicate that you want to
-corresponding source(s) to be built with Neon support. For example:
-
- LOCAL_SRC_FILES := foo.c.neon bar.c
-
-Will only build 'foo.c' with NEON support.
-
-Note that the .neon suffix can be used with the .arm suffix too (used to
-specify the 32-bit ARM instruction set for non-NEON instructions), but must
-appear after it.
-
-In other words, 'foo.c.arm.neon' works, but 'foo.c.neon.arm' does NOT.
-
-
-Build Requirements:
-------------------
-
-Neon support only works when targeting the 'armeabi-v7a' or 'x86' ABI, otherwise
-the NDK build scripts will complain and abort. Neon is partially supported on
-x86 via translation header (To learn more about it, see docs/CPU-X86.html).
-It is important to use checks like the following in your Android.mk:
-
- # define a static library containing our NEON code
- ifeq ($(TARGET_ARCH_ABI),$(filter $(TARGET_ARCH_ABI), armeabi-v7a x86))
- include $(CLEAR_VARS)
- LOCAL_MODULE := mylib-neon
- LOCAL_SRC_FILES := mylib-neon.c
- LOCAL_ARM_NEON := true
- include $(BUILD_STATIC_LIBRARY)
- endif # TARGET_ARCH_ABI == armeabi-v7a || x86
-
-
-Runtime Detection:
-------------------
-
-As said previously, NOT ALL ARMv7-BASED ANDROID DEVICES WILL SUPPORT NEON !
-It is thus crucial to perform runtime detection to know if the NEON-capable
-machine code can be run on the target device.
-
-To do that, use the 'cpufeatures' library that comes with this NDK. To learn
-more about it, see docs/CPU-FEATURES.html.
-
-You should explicitly check that android_getCpuFamily() returns
-ANDROID_CPU_FAMILY_ARM, and that android_getCpuFeatures() returns a value
-that has the ANDROID_CPU_ARM_FEATURE_NEON flag set, as in:
-
- #include <cpu-features.h>
-
- ...
- ...
-
- if (android_getCpuFamily() == ANDROID_CPU_FAMILY_ARM &&
- (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0)
- {
- // use NEON-optimized routines
- ...
- }
- else
- {
- // use non-NEON fallback routines instead
- ...
- }
-
- ...
-
-Sample code:
-------------
-
-Look at the source code for the "hello-neon" sample in this NDK for an example
-on how to use the 'cpufeatures' library and Neon intrinsics at the same time.
-
-This implements a tiny benchmark for a FIR filter loop using a C version, and
-a NEON-optimized one for devices that support it.
diff --git a/docs/text/CPU-FEATURES.text b/docs/text/CPU-FEATURES.text
deleted file mode 100644
index c00d67fbd..000000000
--- a/docs/text/CPU-FEATURES.text
+++ /dev/null
@@ -1,196 +0,0 @@
-Android NDK CPU Features detection library:
-====
-
-This NDK provides a small library named "`cpufeatures`" that can be used at
-runtime to detect the target device's CPU family and the optional features
-it supports.
-
-Usage:
-------
-
-The library is available as an import module. To use it, you must:
-
- * List '`cpufeatures`' in your list of static library dependencies, as in:
-
- LOCAL_STATIC_LIBRARIES := cpufeatures
-
- * At the end of your Android.mk, import the '`android/cpufeatures`' module,
- as in:
-
- $(call import-module,android/cpufeatures)
-
- * In your source code, include the header named `<cpu-features.h>`
-
-
-Here is a simple example:
-
- <project-path>/jni/Android.mk:
- LOCAL_PATH := $(call my-dir)
-
- include $(CLEAR_VARS)
- LOCAL_MODULE := <your-module-name>
- LOCAL_SRC_FILES := <your-source-files>
- LOCAL_STATIC_LIBRARIES := cpufeatures
- include $(BUILD_SHARED_LIBRARY)
-
- $(call import-module,android/cpufeatures)
-
-
-Features:
----------
-
-Two functions are provided for now:
-
- AndroidCpuFamily android_getCpuFamily();
-
-Returns a value matching the CPU family/architecture supported by the
-current process as an enum. Currently, the following families are defined:
-
- * `ANDROID_CPU_FAMILY_ARM`
-
- * `ANDROID_CPU_FAMILY_X86`
-
- * `ANDROID_CPU_FAMILY_MIPS`
-
- * `ANDROID_CPU_FAMILY_ARM64`
-
- * `ANDROID_CPU_FAMILY_X86_64`
-
- * `ANDROID_CPU_FAMILY_MIPS64`
-
-Note that when running a 32-bit executable on a 64-bit system, this function
-will return the 32-bit family value only.
-
-Secondly:
-
- uint64_t android_getCpuFeatures();
-
-Returns the set of optional features supported by the device's CPU.
-The result is a set of bit-flags, each corresponding to one CPU
-Family-specific optional feature.
-
-Currently, only the following flags are defined, for the 32-bit ARM CPU
-Family:
-
- * `ANDROID_CPU_ARM_FEATURE_VFPv2`
-> Indicates that the device's CPU supports VFPv2 instruction set.
- Most ARMv6 CPUs support these.
-
- * `ANDROID_CPU_ARM_FEATURE_ARMv7`
-> Indicates that the device's CPU supports the ARMv7-A instruction
- set as supported by the "armeabi-v7a" abi (see CPU-ARCH-ABIS.html).
- This corresponds to Thumb-2 and VFPv3-D16 instructions.
-
- * `ANDROID_CPU_ARM_FEATURE_VFPv3`
-> Indicates that the device's CPU supports the VFPv3 hardware FPU
- instruction set extension. Due to the definition of 'armeabi-v7a',
- this will always be the case if ANDROID_CPU_ARM_FEATURE_ARMv7 is
- returned.
-
- Note that this corresponds to the minimum profile VFPv3-D16 that
- _only_ provides 16 hardware double-precision FP registers.
-
- * `ANDROID_CPU_ARM_FEATURE_VFP_D32`
-> Indicates that the device's CPU supports 32 hardware double-precision
- FP registers instead of 16. Note that there are still only 32 single-
- precision registers mapped to the same register banks.
-
- * `ANDROID_CPU_ARM_FEATURE_NEON`
-> Indicates that the device's CPU supports the ARM Advanced SIMD
- (a.k.a. NEON) vector instruction set extension. Note that ARM
- mandates that such CPUs also implement VFPv3-D32, which provides
- 32 hardware FP registers (shared with the NEON unit).
-
- * `ANDROID_CPU_ARM_FEATURE_VFP_FP16`
-> Indicates that the device's CPU supports instructions to perform
- floating-point operations on 16-bit registers. This is part of the
- VFPv4 specification.
-
- * `ANDROID_CPU_ARM_FEATURE_VFP_FMA`
-> Indicates that the device's CPU supports fused multiply-accumulate
- VFP instructions extension. Also part of the VFPv4 specification.
-
- * `ANDROID_CPU_ARM_FEATURE_NEON_FMA`
-> Indicates that the device's CPU supports fused multiply-accumulate
- NEON instructions extension. Also part of the VFPv4 specification.
-
- * `ANDROID_CPU_ARM_FEATURE_IDIV_ARM`
-> Indicates that the device's CPU supports Integer division in ARM mode.
- Only available on recent CPUs (e.g. Cortex-A15).
-
- * `ANDROID_CPU_ARM_FEATURE_IDIV_THUMB2`
-> Indicates that the device's CPU supports Integer division in Thumb-2
- mode. Only available on recent CPUs (e.g. Cortex-A15).
-
- * `ANDROID_CPU_ARM_FEATURE_iWMMXt`
-> Indicates that the device's CPU supports extension that adds MMX
- registers and instructions. This is only available on a few XScale-
- based CPU.
-
- * `ANDROID_CPU_ARM_FEATURE_LDREX_STREX`
-> Indicates that the device's CPU supports LDREX and STREX instructions
- available since ARMv6. Together they provide atomic update on memory
- with the help of exclusive monitor.
-
-And the following flags for the 32-bit x86 CPU Family:
-
- * `ANDROID_CPU_X86_FEATURE_SSSE3`
-> Indicates that the device's CPU supports the SSSE3 instruction
- extension set. Note that this is unlike SSE3 which is required
- by the x86 NDK ABI.
-
- * `ANDROID_CPU_X86_FEATURE_POPCNT`
-> Indicates that the device's CPU supports the POPCNT instruction.
-
- * `ANDROID_CPU_X86_FEATURE_MOVBE`
-> Indicates that the device's CPU supports the MOVBE instruction.
- This one is specific to some Intel IA-32 CPUs, like the Atom.
-
-And the following flags for the 64-bit ARM CPU Family:
-
- * `ANDROID_CPU_ARM64_FEATURE_FP`
-> Indicates that the device's CPU has Floating Point (FP) unit.
- All Android ARM64 devices are required to support this feature.
-
- * `ANDROID_CPU_ARM64_FEATURE_ASIMD`
-> Indicates that the device's CPU has Advanced SIMD (ASIMD) unit.
- All Android ARM64 devices are required to support this feature.
-
- * `ANDROID_CPU_ARM64_FEATURE_AES`
-> Indicates that the device's CPU supports AES instructions.
-
- * `ANDROID_CPU_ARM64_FEATURE_CRC32`
-> Indicates that the device's CPU supports CRC32 instructions.
-
- * `ANDROID_CPU_ARM64_FEATURE_SHA1`
-> Indicates that the device's CPU supports SHA1 instructions.
-
- * `ANDROID_CPU_ARM64_FEATURE_SHA2`
-> Indicates that the device's CPU supports SHA2 instructions.
-
- * `ANDROID_CPU_ARM64_FEATURE_PMULL`
-> Indicates that the device's CPU supports 64-bit PMULL and PMULL2
- instructions.
-
-Other CPU families do not have extensions listed at the moment, which
-means that android_getCpuFeatures() will return 0 for them.
-
-The following function is also defined to return the max number of
-CPU cores on the target device:
-
- int android_getCpuCount(void);
-
-
-Important Note:
----------------
-
-The cpufeatures library will be updated to support more CPU families and
-optional features in the future. It is designed to work as-is on all
-official Android platform versions.
-
-
-Change History:
----------------
-
-Please see the comments in `$NDK/sources/android/cpufeatures/cpu-features.c`
-for the complete change history for this library.
diff --git a/docs/text/CPU-MIPS.text b/docs/text/CPU-MIPS.text
deleted file mode 100644
index 89ac1e92a..000000000
--- a/docs/text/CPU-MIPS.text
+++ /dev/null
@@ -1,65 +0,0 @@
-Android NDK MIPS32 instruction set support
-===
-
-Introduction:
--------------
-
-Android NDK r8 added support for the 'mips' ABI, that allows native code to
-run on Android-based devices running on CPUs supporting the MIPS32 instruction
-set.
-
-The Android 'mips' ABI itself is fully specified in d/CPU-ARCH-ABIS.
-
-Overview:
----------
-
-Generating mips machine code is simple: just add 'mips' to your APP_ABI
-definition in your Application.mk file, for example:
-
- APP_ABI := armeabi armeabi-v7a mips
-
-Alternatively, since NDK r7, you can use:
-
- APP_ABI := all
-
-will generate machine code for all supported ABIs with this NDK. Doing so
-will ensure that your application package contains libraries for all target
-ABIs. Note that this has an impact on package size, since each ABI will
-correspond to its own set of native libraries built from the same sources.
-
-As you would expect, generated libraries will go into $PROJECT/libs/mips/, and
-will be embedded into your .apk under /lib/mips/.
-
-And just like other ABIs, the Android package manager will extract these
-libraries on a *compatible* mips-based device automatically at install time,
-to put them under `<dataPath>/lib`, where `<dataPath>` is the
-application's private data directory.
-
-Similarly, the Android Market server is capable of filtering applications
-based on the native libraries they embed and your device's target CPU.
-
-Debugging with ndk-gdb should work exactly as described under docs/NDK-GDB.html.
-
-Standalone-toolchain:
----------------------
-
-It is possible to use the mips toolchain with NDK r8 in stand-alone mode.
-See docs/STANDALONE-TOOLCHAIN.html for more details. Briefly speaking,
-it is now possible to run:
-
- $NDK/build/tools/make-standalone-toolchain.sh --arch=mips --install-dir=<path>
-
-The toolchain binaries have the mipsel-linux-android- prefix.
-
-Compatibility:
---------------
-
-The minimal native API level provided by official Android mips platform builds
-is 9, which corresponds to all the native APIs provided by Android 2.3, i.e.
-Gingerbread (note also that no new native APIs were introduced by Honeycomb).
-
-You won't have to change anything to your project files if you target an older
-API level: the NDK build script will automatically select the right set of
-native platform headers/libraries for you. For mips, this still corresponds
-to API level 9 and higher.
-
diff --git a/docs/text/CPU-X86-64.text b/docs/text/CPU-X86-64.text
deleted file mode 100644
index d40522600..000000000
--- a/docs/text/CPU-X86-64.text
+++ /dev/null
@@ -1,66 +0,0 @@
-Android NDK x86-64 instruction set support
-===
-
-Introduction:
--------------
-
-Android NDK r[TBD] added support for the '`x86-64`' ABI, that allows native code to
-run on Android-based devices running on CPUs supporting the x86-64 instruction
-set.
-
-The Android x86-64 ABI itself is fully specified in docs/CPU-ARCH-ABIS.html.
-
-Overview:
----------
-
-Generating machine code is simple: just add 'x86-64' to your APP_ABI
-definition in your Application.mk file, for example:
-
- APP_ABI := armeabi armeabi-v7a x86 x86-64
-
-Alternatively, you can use:
-
- APP_ABI := all
-
-will generate machine code for all supported ABIs with this NDK. Doing so
-will ensure that your application package contains libraries for all target
-ABIs. Note that this has an impact on package size, since each ABI will
-correspond to its own set of native libraries built from the same sources.
-
-The default ABI is still '`armeabi`', if unspecified in your project.
-
-As you would expect, generated libraries will go into `$PROJECT/libs/x86-64/`,
-and will be embedded into your .apk under `/lib/x86-64/`.
-
-And just like other ABIs, the Android package manager will extract these
-libraries on a *compatible* x86-64 based device automatically at install
-time, to put them under <dataPath>/lib, where <dataPath> is the
-application's private data directory.
-
-Similarly, the Google Play server is capable of filtering applications
-based on the native libraries they embed and your device's target CPU.
-
-Debugging with ndk-gdb should work exactly as described under docs/NDK-GDB.html.
-
-Standalone-toolchain:
----------------------
-
-It is possible to use the x86-64 toolchain with NDK in stand-alone mode.
-See docs/STANDALONE-TOOLCHAIN.html for more details. Briefly speaking,
-it is now possible to run:
-
- $NDK/build/tools/make-standalone-toolchain.sh --arch=x86_64 --install-dir=<path>
-
-The toolchain binaries have the `x86_64-linux-android- prefix`.
-
-
-Compatibility:
---------------
-
-The minimal native API level provided by official Android x86-64 platform
-builds is [TBD], which corresponds to all the native APIs provided by
-Android [TBD], i.e. [TBD]-desert.
-
-You won't have to change anything to your project files if you target an older
-API level: the NDK build script will automatically select the right set of
-native platform headers/libraries for you.
diff --git a/docs/text/CPU-X86.text b/docs/text/CPU-X86.text
deleted file mode 100644
index d432a375e..000000000
--- a/docs/text/CPU-X86.text
+++ /dev/null
@@ -1,128 +0,0 @@
-Android NDK x86 (a.k.a. IA-32) instruction set support
-===
-
-Introduction:
--------------
-
-Android NDK r6 added support for the '`x86`' ABI, that allows native code to
-run on Android-based devices running on CPUs supporting the IA-32 instruction
-set.
-
-The Android x86 ABI itself is fully specified in docs/CPU-ARCH-ABIS.html.
-
-Overview:
----------
-
-Generating x86 machine code is simple: just add 'x86' to your APP_ABI
-definition in your Application.mk file, for example:
-
- APP_ABI := armeabi armeabi-v7a x86
-
-Alternatively, since NDK r7, you can use:
-
- APP_ABI := all
-
-will generate machine code for all supported ABIs with this NDK. Doing so
-will ensure that your application package contains libraries for all target
-ABIs. Note that this has an impact on package size, since each ABI will
-correspond to its own set of native libraries built from the same sources.
-
-The default ABI is still '`armeabi`', if unspecified in your project.
-
-As you would expect, generated libraries will go into `$PROJECT/libs/x86/`, and
-will be embedded into your .apk under `/lib/x86/`.
-
-And just like other ABIs, the Android package manager will extract these
-libraries on a *compatible* x86-based device automatically at install time,
-to put them under <dataPath>/lib, where <dataPath> is the
-application's private data directory.
-
-Similarly, the Google Play server is capable of filtering applications
-based on the native libraries they embed and your device's target CPU.
-
-Debugging with ndk-gdb should work exactly as described under docs/NDK-GDB.html.
-
-ARM NEON intrinsics support:
-----------------------------
-
-The solution is shaped as C/C++ language header with the same name as standard
-arm neon intrinsics header "arm_neon.h" which is also available in all NDK x86
-toolchains. It translates neon intrinsics to native x86 SSE ones.
-
-By default SSE up to SSE3 is used for porting ARM NEON to Intel SSE.
-
-Current solution covers by default ~41% NEON functions (889 of total 1884) and
-47% when -mssse3 is enabled. It is highly recommended to use the -mssse3 compiler
-flag for more coverage and performance.
-
-If currently provided coverage is not enough to port application please look
-into next version preview (up to 98% NEON instrinsics covered) at
-
-> http://software.intel.com/en-us/blogs/2012/12/12/from-arm-neon-to-intel-mmxsse-automatic-porting-solution-tips-and-tricks
-
-The solution
-
- - Redefines ARM NEON 128 bit vectors as the corresponding x86 SIMD data.
-
- - Redefines some functions from ARM NEON to Intel SSE if 1:1 correspondence
- exists.
-
- - Implements some ARM NEON functions using Intel SIMD if the performance
- effective implementation is possible.
-
- - Implements some of the remaining NEON functions using the serial solution
- and issuing the corresponding "low performance" compiler warning.
-
-### Performance:
-
-For the major number of cases it is expected to obtain the similar to ARM NEON
-native perfomance gain for vectorized vs. serial code.
-
-### Porting considerations and best known methods are:
-
- - Use 16-byte data alignment for faster load and store
-
- - Avoid NEON functions working with constants. It produces performance
- penalty for constants load\propagation.
- If constants usage is necessary try to move constants initialization out of
- hotspot loops and if applicable replace it with logical and compare
- operations.
-
- - Try to avoid functions marked as "serialy implemented" because they need to
- store data from registers to memory, process them serialy and load them again.
- Probably you could change the data type or algorithm used to make the whole
- port vectorized not a serial one.
-
-To learn more about it, see
-
-> http://software.intel.com/en-us/blogs/2012/12/12/from-arm-neon-to-intel-mmxsse-automatic-porting-solution-tips-and-tricks
-
-### Sample code:
-
-In your project add 'x86' to APP_ABI definition and make sure "arm_neon.h"
-header is included.
-Your code will be ported to x86 without any other changes necessary.
-
-
-Standalone-toolchain:
----------------------
-
-It is possible to use the x86 toolchain with NDK r6 in stand-alone mode.
-See docs/STANDALONE-TOOLCHAIN.html for more details. Briefly speaking,
-it is now possible to run:
-
- $NDK/build/tools/make-standalone-toolchain.sh --arch=x86 --install-dir=<path>
-
-The toolchain binaries have the `i686-linux-android- prefix`.
-
-
-Compatibility:
---------------
-
-The minimal native API level provided by official Android x86 platform builds
-is 9, which corresponds to all the native APIs provided by Android 2.3, i.e.
-Gingerbread (note also that no new native APIs were introduced by Honeycomb).
-
-You won't have to change anything to your project files if you target an older
-API level: the NDK build script will automatically select the right set of
-native platform headers/libraries for you.
diff --git a/docs/text/DEVELOPMENT.text b/docs/text/DEVELOPMENT.text
deleted file mode 100644
index fbc1b542f..000000000
--- a/docs/text/DEVELOPMENT.text
+++ /dev/null
@@ -1,295 +0,0 @@
-NDK Development:
-====
-
-This document describes how one can modify the NDK and generate
-new experimental release packages for it.
-
-I. Getting the sources:
----
-
-The sources live under the "ndk" and "development/ndk" directories in
-the Android source tree:
-
- - "ndk" contains the main build scripts and documentation
- - "development/ndk" contains platform-specific headers and samples
-
-If you have downloaded the full Android source tree through the "repo"
-tool, you can start directly there. Otherwise, you can just get these
-two repositories with the following:
-
- mkdir workdir
- cd workdir
- git clone https://android.googlesource.com/platform/ndk.git ndk
- git clone https://android.googlesource.com/platform/development.git development
- export NDK=`pwd`/ndk
-
-
-II. Building the platforms tree:
----
-
-You need to do that once if you want to use the content of $NDK to build
-samples, tests or anything else:
-
- $NDK/build/tools/gen-platforms.sh
-
-What the script does is populate the $NDK/platforms and $NDK/samples
-directories from the content of development/ndk.
-
-What is under development/ndk is segregated by API level. This makes it
-easier to add a new platform to the tree, but is not well-suited to building
-stuff. The gen-platforms.sh script will gather all files appropriately
-and place the result inside $NDK/platforms and $NDK/samples.
-
-Note: These directories are listed by $NDK/.gitignore, so they won't appear
- on your git status. You can remove them if you want by running:
-
- $NDK/build/tools/dev-cleanup.sh
-
-which also removes all intermediate files and directories from $NDK.
-
-
-III. Prebuilt binaries:
----
-
-The NDK requires several prebuilt binary executables to work properly, these
-include the following:
-
- - toolchain binaries for the cross-compiler and associated tools
- - gdbserver binaries required for native debugging
-
-These are not provided in the NDK's git repositories. However, there are
-several ways to get them:
-
-### 1. From a previous NDK release package:
-
-By far the easiest thing to do is to copy the binaries from a previous
-NDK installation. You can do that with a command like the following one:
-
- cp -r $PREVIOUS_NDK/toolchains/* $NDK/toolchains/
-
-NOTE: The binaries are listed in $NDK/.gitignore and will not appear
- in your git status.
-
-
-### 2. Download and rebuild directly from the internet:
-
-IMPORTANT: This is *very* long.
-
-The NDK comes with several scripts that can be used to rebuild the
-binaries from scratch, after downloading their sources from
-android.googlesource.com.
-
-There are several ways to do that, the most naive one, which will
-always work but will be *very* long (expect a few hours on a typical
-dual-core machine) is to do the following:
-
- $NDK/build/tools/rebuild-all-prebuilt.sh
-
-This will perform all the steps required to rebuild the binaries,
-which include:
-
- - downloading the sources from android.googlesource.com
- - patching them with appropriate changes, if needed
- - rebuilding everything from scratch
- - copying the generated binaries to the proper location under $NDK
-
-You will need about 30G of free space in your /tmp directory to be
-able to do that, and *plenty* of free time.
-
-IMPORTANT: If you plan to generate NDK release packages, even
-experimental ones, we strongly suggest you to use the individual
-steps described in 3/ below.
-
-IMPORTANT:
-Since NDK r5, Windows binaries can be built on Linux by using the
---mingw option, which requires that you have the "mingw32" package
-installed on your system. For example:
-
- $NDK/build/tools/rebuild-all-prebuilt.sh --mingw
-
-We do not officially support building these binaries directly on
-Windows (either through Cygwin or MSys) anymore, due to the vast
-number of problems these environments create when trying to do so.
-
-
-
-### 3. Download, rebuild, package, install in separate steps:
-
-If you plan to generate your own NDK release packages, it is better
-to rebuild your binaries using separate steps, as in:
-
- - Download the sources from the Internet, patch them, then
- package the result in a simple tarball.
-
- - For every target system (linux-x86, darwin-x86 and windows),
- rebuild the binaries from the same source tarball.
-
- - Package and collect all prebuilt binaries into a single
- directory that will be used when packaging NDK releases.
-
-Here are more details on how to do that:
-
-#### 3.a/ Download + patching + packaging sources:
-
-Use the following command to download, patch and package the
-sources:
-
- $NDK/build/tools/download-toolchain-sources.sh --package
-
-This will create a large tarball containing all sources ready to be
-used by the following step. The generated file path will be dumped at
-the script when it completes its operation and should be something
-like:
-
- /tmp/android-ndk-toolchain-<date>.tar.bz2
-
-Note that if you don't use the --package option, you will need to
-provide the name of a directory where the patched sources will be
-copied instead, as in:
-
- $NDK/build/tools/download-toolchain-sources.sh <target-src-dir>
-
-
-#### 3.b/ Build the binaries:
-
-Use the following command to rebuild the binaries from the source
-tarball that was created in the previous section with the --package
-option:
-
- $NDK/build/tools/rebuild-all-prebuilt.sh --toolchain-pkg=<file>
-
-Where <file> points to the package generated by the
-download-toolchain-sources.sh script.
-
-In the case where you downloaded the sources to a directory instead,
-use the --toolchain-src-dir option instead, as with:
-
- $NDK/build/tools/rebuild-all-prebuilt.sh --toolchain-src-dir=<path>
-
-This will rebuild all the prebuilt binaries for your host platforms
-and place them in a directory named:
-
- /tmp/ndk-prebuilt/prebuilt-<date>/
-
-These binary packages include the following:
-
- - host-specific toolchain binaries. e.g.
- `arm-linux-androideabi-4.6-linux-x86.tar.bz2`.
-
- - toolchain specific device binaries, e.g.
- `arm-gdbserver.tar.bz2`.
-
-IMPORTANT:
-To generate Windows binaries on Windows, install the "mingw32"
-package on your system, then use the --mingw option, as in:
-
- $NDK/build/tools/rebuild-all-prebuilt.sh --mingw --toolchain-pkg=<file>
-
-Note that device-specific binaries (e.g. gdbserver) cannot be
-rebuilt with this option.
-
-#### 3.c/ Copy the binaries to your NDK tree:
-
-Simply go to your NDK tree, and unpack the binary tarballs in place,
-for example:
-
- cd $NDK
- tar xjf <path>/*.tar.bz2
-
-Where <path> is a directory containing all the tarballs (e.g. it
-could be simply /tmp/ndk-prebuilt/prebuilt-<date>)
-
-This will put the corresponding files at the correct location.
-
-#### 3.c/
-
-It is a good idea to save the generated toolchain binaries into
-an archive. To do that, use the --package option, as in:
-
- $NDK/build/tools/rebuild-all-prebuilt.sh --package
-
-This will generate a package file containing all the prebuilts, that
-can be unpacked directly into your $NDK directory. The package name is
-printed at the end, e.g."android-ndk-prebuild-<date>-<system>.tar.bz2".
-
-Where <date> is the current date, and <system> is your system name.
-Then, to unpack:
-
- cd $NDK
- tar xjf /tmp/android-ndk-prebuilt-<date>-<system>.tar.bz2
-
-
-The generated package can easily be shared with other people.
-
-
-IV. Generate new package releases:
----
-
-You can generate new experimental NDK release packages once you're satisfied
-with your changes, in order to share them with other people. There are two
-ways to do that:
-
-### 1. Using the 'make-release.sh' script:
-
-The simplest, and also the slowest way, to generate a new NDK release
-is to invoke this script, with:
-
- $NDK/build/tools/make-release.sh
-
-NOTE: THIS WILL BE VERY VERY LONG. The script will do all the steps
- described in section III *from* scratch, and this can take several
- hours on a dual-core machine.
-
-You should only use it in case of desperation, or if you don't want
-to deal with all the details exposed in section III or below.
-
-
-### 2. Using a previous NDK release package:
-
-This is the second simplest way to generate a new package, and it will
-be extremely quick because it will pick the prebuilt binaries directly
-from the previous package.
-
-Do the following:
-
- cd $NDK
- build/tools/package-release.sh --prebuilt-ndk=<file>
-
-Where <file> points to a previous NDK package (i.e. archive file).
-
-NOTE: This method can only be used to generate a single release package
- for the current host system.
-
-### 3. Using prebuilt tarballs:
-
-If you have generated prebuilt binary tarballs with the steps described
-in section III.3 above, you can use these to generate release packages
-as well.
-
-Assuming that you have collected prebuilt tarballs for all three supported
-host systems (i.e. linux-x86, darwin-x86 and windows) under a directory,
-do the following:
-
- cd $NDK
- build/tools/package-release.sh --prebuilt-dir=<path>
-
-The generated NDK package release will have a name that looks like:
-
- /tmp/ndk-release/android-ndk-<release>-<system>.zip
-
-Where <release> is by default the current date in ISO format
-(e.g. 20100915), and <system> corresponds to the host system where the
-NDK release is supposed to run.
-
-The script 'package-release.sh' provides a few additional options:
-
- --release=<name> Change the name of the release
-
- --systems=<list> Change the list of host systems to package for
-
- --platforms=<list> List of API levels to package in the NDK
-
- --out-dir=<path> Specify a different output directory for the
- final packages (instead of /tmp/ndk-release)
-
-Use --help to list them all.
diff --git a/docs/text/HOWTO.text b/docs/text/HOWTO.text
deleted file mode 100644
index 544bb3056..000000000
--- a/docs/text/HOWTO.text
+++ /dev/null
@@ -1,117 +0,0 @@
-Android NDK How-To:
-===================
-
-A collection of tips and tricks for NDK users
-
-
-How to force the display of build commands:
--------------------------------------------
-
-Do "ndk-build V=1" and actual build commands will be
-displayed. This can be used to verify that things are compiled
-as you expect them to, and check for bugs in the NDK build system.
-
-(The V=1 trick comes from the Linux kernel build system)
-
-
-How to force a rebuild of all your sources:
--------------------------------------------
-
-Use GNU Make's "-B" option, as in:
-
- ndk-build -B
-
-
-How to store your native sources in a location other than $PROJECT/jni:
------------------------------------------------------------------------
-
-First, you can simply tell your $PROJECT/jni/Android.mk to include
-another Android.mk that are located in different places.
-
-Alternatively, you can define APP_BUILD_SCRIPT in your Application.mk
-to point to an alternative Android.mk file.
-
-
-How to build a project's native files without cd-ing to it:
------------------------------------------------------------
-
-Sometimes, you may need to rebuild a project's native file without
-being able to cd to its top-level path from the command-line. This
-is do-able by using the GNU-Make '-C &lt;path&gt;' option, as in:
-
- ndk-build -C &lt;project-path&gt;
-
-
-How to store your Application.mk in a location other than $PROJECT/jni:
------------------------------------------------------------------------
-
-Starting with NDK r4, you can simply place the file under $PROJECT/jni/
-and launch the 'ndk-build' script from your project tree.
-
-If you want to use 'ndk-build' but place the file to a different location,
-use a GNU Make variable override as:
-
- ndk-build NDK_APPLICATION_MK=/path/to/your/Application.mk
-
-If you're using the legacy $NDK/apps/&lt;name&gt; build method, you can create
-a symbolic link to your final Application.mk there. For example, imagine
-that you wrote:
-
- $PROJECT/foo/Application.mk
-
-You can create a symlink like with a command like:
-
- ln -s $PROJECT/foo $NDK/apps/&lt;name&gt;
-
-This will make $NDK/apps/&lt;name&gt;/Application.mk point directly to
-$PROJECT/jni/Application.mk
-
-Note that generated files will still go under $NDK/out/apps/&lt;name&gt; though.
-
-Windows users: The NDK is only supported on Cygwin, which implements
-symbolic links through the "ln -s" command, as in:
-
- ln -s &lt;target&gt; &lt;link&gt;
-
-
-How to properly add include directories to your module declaration:
--------------------------------------------------------------------
-
-If you define several modules, it is common to need to include one
-module's header while compiling another one. For example, consider
-the following example:
-
- $PROJECT/jni/foo/
- Android.mk
- foo.h
- foo.c
-
- $PROJECT/jni/bar/
- Android.mk
- bar.c
-
-Where the 'bar.c' uses '#include &lt;foo.h&gt;'. You will need to add the
-path to the 'foo' module in jni/bar/Android.mk to build it properly.
-
-One is tempted to use the following:
-
- LOCAL_C_INCLUDES := ../foo
-
-However this will not work because all compilation happens from the
-directory where 'ndk-build' is invoked, and include files must be
-relative to it.
-
-The correct line is instead:
-
- LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo
-
-Which uses a path relative to $(LOCAL_PATH), in the case where you would
-need to move 'foo' and 'bar' to a deeper level in the 'sources' hierarchy.
-
-In case you absolutely need it, you can also use NDK_APP_PROJECT_PATH to
-point to your project directory:
-
- LOCAL_C_INCLUDES := $(NDK_APP_PROJECT_PATH)/jni/foo
-
-However, we don't recommend using this, paths relative to $(LOCAL_PATH)
-being better.
diff --git a/docs/text/IMPORT-MODULE.text b/docs/text/IMPORT-MODULE.text
deleted file mode 100644
index c6719c5a3..000000000
--- a/docs/text/IMPORT-MODULE.text
+++ /dev/null
@@ -1,236 +0,0 @@
-Android module paths (sharing code made easy):
-==============================================
-
-Starting from r5, the Android NDK comes with a cool feature that allows
-you to share and reuse other people's modules more easily.
-
-I. Overview:
-------------
-
-The main idea behind this feature are:
-
- - You can install NDK modules outside of your main project source tree.
- - You can easily 'import' them into your project with a one-line command.
-
-In practice, here's how this works:
-
- 1. Your NDK_MODULE_PATH environment variable will contain a list
- of search paths on your system to lookup for modules.
-
- It is up to you to set the variable, and to copy other modules
- to the directories you listed in it.
-
-
- 2. To import a module, place a line like the following to, preferably at
- the *end* of, your Android.mk:
-
- $(call import-module,<tag>)
-
- This will look for <tag>/Android.mk under any of the directories
- listed in your NDK_MODULE_PATH.
-
- (The reason why it must be at the end is to avoid messing with
- the results of the 'my-dir' function. See its description in
- docs/ANDROID-MK.html for details).
-
-
- 3. Declare that your project's modules depend on the imported one by
- listing them in either your LOCAL_STATIC_LIBRARIES or
- LOCAL_SHARED_LIBRARIES. For example:
-
- LOCAL_STATIC_LIBRARIES += <tag>
-
-
- 4. Rebuild!
-
- Remember that NDK r5 also added the ability for a module to "export"
- declarations to other modules that depend on it (for example, see the
- definition of LOCAL_EXPORT_CFLAGS in docs/ANDROID-MK.html).
-
- A well-written module will correctly export all the things its
- dependees need, et voila.
-
-
-Now for the full details:
-
-I. NDK_MODULE_PATH:
--------------------
-
-The NDK_MODULE_PATH variable must contain a list of directories.
-
- * Due to GNU Make limitations, NDK_MODULE_PATH must not contain any space.
- The NDK will complain if this is not the case.
-
- * Use ':' as the path separator.
-
- * On Windows, use '/' as the directory separator.
-
-The directories of NDK_MODULE_PATH will be searched in order. The first
-<path>/<tag>/Android.mk file that is found during the lookup will be
-included automatically.
-
-
-As a convenience, $NDK/sources is appended to your NDK_MODULE_PATH
-definition by the NDK build system. This allows you to easily import
-the helper libraries that come with it (see docs/CPU-FEATURES.html for
-a practical example).
-
-
-II. Writing an import module:
------------------------------
-
-Writing an import module is trivial and very similar to what you do when
-writing project modules:
-
- 1. Create a sub-directory from one of your NDK_MODULE_PATH directories.
-
- For example, if NDK_MODULE_PATH is defined to /home/user/ndk-modules,
- then create the directory /home/user/ndk-modules/my-module/
-
-
- 2. Place an Android.mk and eventual source code there.
-
- Just like you would for a project module, where these files normally
- go to $PROJECT_PATH/Android.mk. In the example above, this would go
- to /home/user/ndk-modules/my-module/Android.mk
-
- NOTE: Any Application.mk file here will be ignored.
-
-
- 3. Any module that depends on your new module, would import by calling
- the import-module function. For example:
-
- $(call import-module,my-first-module)
-
-
-Import modules *can* import other modules, but circular dependencies are
-not permitted and will be detected. Dependencies are transitive and the build
-system will compute all the things that need to be built for you.
-
-The NDK build system will not place object files or executables in your
-import module directory (they will all be placed under the project's
-build directory, e.g. $PROJECT_PATH/obj/).
-
-You can however distribute prebuilt binaries in your import module with
-the new PREBUILT_STATIC_LIBRARIES or PREBUILT_SHARED_LIBRARIES feature
-(see docs/ANDROID-MK.html).
-
-This makes it easy to package and redistribute your import module directory
-to third-parties.
-
-
-III. Naming an import module:
------------------------------
-
-It is important to understand a few things related to the naming of
-your import module:
-
- - What 'import-module' does is really search for a file named Android.mk
- using the list provided by NDK_MODULE_PATH, then include while performing
- very little bit of house-keeping.
-
- Your imported Android.mk can define any number of modules, with
- any name. As a consequence, there is no direct relationship between
- <name> in the following line:
-
- $(call import-module,<tag>/<name>)
-
- And the names of the modules defined under <tag>/<name>/Android.mk.
-
- IN CASE OF DOUBT, KEEP IT SIMPLE!
-
- If you only plan to provide one import module, just name it like the
- base import directory.
-
- On the other hand, you may want to provide a static and a shared
- version of your module: use distinct names under the same top-level
- Android.mk. Consider the following build script:
-
- $NDK_MODULE_PATH/foo/bar/Android.mk:
-
- LOCAL_PATH := $(call my-dir)
-
- # Static version of the library is named 'bar_static'
- include $(CLEAR_VARS)
- LOCAL_MODULE := bar_static
- LOCAL_SRC_FILES := bar.c
- # Ensure our dependees can include <bar.h> too
- LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
- include $(BUILD_STATIC_LIBRARY)
-
- # Shared version of the library is named 'bar_shared'
- LOCAL_MODULE := bar_shared
- LOCAL_SRC_FILES := bar.c
- LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
- include $(BUILD_SHARED_LIBRARY)
-
- Another module would refer to it by doing the following:
-
- 1. Import 'foo/bar', as in:
-
- $(call import-module,foo/bar)
-
- 2. To use the static library:
-
- ...
- LOCAL_STATIC_LIBRARIES := bar_static
-
- 3. Or to use the shared library:
-
- ...
- LOCAL_SHARED_LIBRARIES := bar_shared
-
-
- - The module namespace is flat, so try to give your modules names that
- are likely to not collide with other. Note that your can use
- LOCAL_MODULE_FILENAME to give the name of your module's binary
- file, independently from its LOCAL_MODULE (see docs/ANDROID-MK.html
- for definition and usage). For example:
-
- include $(CLEAR_VARS)
- LOCAL_MODULE := super_foo
- LOCAL_MODULE_FILENAME := foo # will give libfoo.so
- LOCAL_SRC_FILES := foo-src.c
- LOCAL_CFLAGS := -DVOLUME=11
- include $(BUILD_SHARED_LIBRARY)
-
- include $(CLEAR_VARS)
- LOCAL_MODULE := normal_foo
- LOCAL_MODULE_FILENAME := foo # will also give libfoo.so
- LOCAL_SRC_FILES := foo-src.c
- include $(BUILD_SHARED_LIBRARY)
-
- Defines two modules named "super_foo" and "normal_foo"
- which both produce a shared library named 'libfoo.so'
-
- As a consequence, only one of them can be used by your project or
- a conflict will happen at build time. This allows you to select either
- the normal or optimized version in your NDK build scripts, while
- keeping the same simple loading instruction in your Java sources as:
-
- static {
- System.loadLibrary("foo");
- }
-
-
-IV. Tips & Recommendations:
----------------------------
-
-* You don't need to import a module before you can reference it!
-
-* Use import-module at the *end* of your Android.mk to avoid messing with
- the result of 'my-dir'. See the description of this function in
- docs/ANDROID-MK.html to understand why.
-
-* It is *strongly* suggested to use a subdirectory for your import tags,
- that describes its origin, as in:
-
- $(call import-module,gtk/glib)
-
-> or something like:
-
- $(call import-module,com.example/awesomelib)
-
- IMPORTANT: THE 'android' IMPORT DIRECTORY, AND ANY OF ITS SUB-DIRECTORIES
- IS *RESERVED* FOR NDK USAGE. FEEL FREE TO ORGANIZE YOUR OTHER
- IMPORT MODULES AS YOU WANT OTHERWISE.
diff --git a/docs/text/INSTALL.text b/docs/text/INSTALL.text
deleted file mode 100644
index 8dbd8057d..000000000
--- a/docs/text/INSTALL.text
+++ /dev/null
@@ -1,58 +0,0 @@
-Android NDK Installation
-
-Introduction:
--------------
-
-Please read docs/OVERVIEW.html to understand what the Android NDK is and is not.
-This file gives instructions on how to properly setup your NDK.
-
-
-I. Requirements:
-----------------
-
-The Android NDK currently requires a Linux, OS X or Windows host operating system.
-
-Windows users will need to install Cygwin 1.7 or later (http://www.cygwin.com) to
-use the NDK. Note that running it under MSys or Cygwin 1.5 is not supported.
-
-You will need to have the Android SDK and its dependencies installed. The NDK
-cannot generate final application packages (.apk files), only the shared library
-files that can go into them.
-
-
-IMPORTANT:
- The Android NDK can only be used to target system images using
- the Cupcake (1.5) or later releases of the platform.
-
- This is due to subtle toolchain and ABI related changed that make
- it incompatible with 1.0 and 1.1 system images.
-
-The NDK requires GNU Make 3.81 or later being available on your development
-system. Earlier versions of GNU Make might work but have not been tested.
-
-You can check this by running 'make -v' from the command-line. The output
-should look like:
-
- GNU Make 3.81
- Copyright (C) 2006 Free Software Foundation, Inc.
- ...
-
-On certain systems, GNU Make might be available through a different command like
-'gmake' or 'gnumake'. For these systems, replace 'make' by the appropriate command
-when invoking the NDK build system as described in the documentation. You might
-also want to define the GNUMAKE environment variable to point to it.
-
-The NDK also requires a Nawk or GNU Awk executable being available on your
-development system. Note that the original 'awk' program doesn't implement
-the 'match' and 'substr' functions used by the NDK build system.
-
-
-II. Preparing your installation prebuilt cross-toolchain binaries:
-------------------------------------------------------------------
-
-Previous releases required you to run the 'build/host-setup.sh' script to
-configure the NDK. However, this step has been removed in release 4 (a.k.a. r4).
-
-The auto-detection and sanity checks that were performed by the script have
-been moved into the NDK makefiles (and are now performed each time you invoke
-GNU Make).
diff --git a/docs/text/LICENSES.text b/docs/text/LICENSES.text
deleted file mode 100644
index 7a6a6cb58..000000000
--- a/docs/text/LICENSES.text
+++ /dev/null
@@ -1,11 +0,0 @@
-The content of the Android NDK is covered by various open-source licenses.
-See the copyright disclaimers in each respective file for details.
-
-Note that the public Android NDK release packages also contain prebuilt binaries
-for the compiler, linker, archiver, etc... The source code for the toolchain is
-available at android.googlesource.com (you can use the script under
-build/tools/download-toolchain-sources.sh to download it automatically).
-
-The prebuilt binaries are covered by either the GNU General Public License (GPL),
-or the GNU Lesser General Public License (LGPL). For details, see the files
-COPYING and COPYING.LIB under '`build/prebuilt/<system>/<toolchain>`'
diff --git a/docs/text/NATIVE-ACTIVITY.text b/docs/text/NATIVE-ACTIVITY.text
deleted file mode 100644
index 90e595c96..000000000
--- a/docs/text/NATIVE-ACTIVITY.text
+++ /dev/null
@@ -1,132 +0,0 @@
-Native Activities and Applications:
-===
-
-I. Overview
-===========
-The Android SDK provides a helper class, `NativeActivity`, that allows you to write a completely
-native activity. With a native activity, it is possible to write a completely native application.
-NativeActivity handles the communication between the Android framework and your
-native code, so you do not have to subclass it or call its methods. All you need to do is declare
-your application to be native in your `AndroidManifest.xml` file and begin creating your native
-application.
-
-Native activities do not change the fact that Android applications still run in their own virtual
-machine, sandboxed from other applications. Because of this, you can still access Android framework
-APIs through the JNI. There are, however, native interfaces to access things such as sensors, input
-events, and assets that you can use. For more information about what is supported, see the
-docs/STABLE-APIS.HTML.
-
-If you are developing a native activity, you should still create your projects with Eclipse or the
-"android create project" command. You still build and package native applications with the usual
-Android build tools, so the build system can only build Android projects that have the correct
-structure. Using the android tool or Eclipse helps ensure that.
-
-The Android NDK provides you with two choices to implement your native activity:
-
- - The native_activity.h header defines the native version of the NativeActivity class. It
- contains the callback interface and data structures that you need to create your native
- activity. Because the main thread of your application handles the callbacks, your callback
- implementations must not be blocking. If they block, you might receive ANR (Application Not
- Responding) errors because your main thread will be unresponsive until the callback returns.
- Read the comments in the
- `<ndk_root>/platforms/android-9/arch-arm/usr/include/android/native_activity.h` file for
- more information.
-
- - The android_native_app_glue.h file defines a static helper library built on top of the
- native_activity.h interface. It spawns another thread to handle things such as callbacks or
- input events. This prevents any callbacks from blocking your main thread and adds some
- flexibility in how you implement the callbacks, so you might find this programming model a bit
- easier to implement. The `<ndk_root>/sources/android/native_app_glue/android_native_app_glue.c`
- source is also available to you, so you can modify the implementation if you need. Read the
- comments in the `<ndk_root>/sources/android/native_app_glue/android_native_app_glue.h` file
- for more information.
-
-II. Using the native-activity.h interface:
-==========================================
-
-You can use the native-activity.h interface to implement a completely native activity. If you use
-this interface you must ensure that your callback implementations do not block the main UI thread.
-For more information on how to use this interface, see
-`<ndk_root>/platforms/android-9/arch-arm/usr/include/android/native_activity.h`.
-
-You might find it easier to use the native_app_glue static helper library that handles the
-callbacks in an event loop in another thread. See the native-activity sample application for more
-information on how to use this static library.
-
-To implement a native activity with the native-activity.h interface:
-
- 1. Create a project with the "android create project" command or from Eclipse. Create a jni/
- directory in the project's root directory. This directory stores all of your native code.
-
- 2. Declare your native activity in the AndroidManifest.xml file. An example is shown below:
-
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.native_activity"
- android:versionCode="1"
- android:versionName="1.0">
-
- <uses-sdk android:minSdkVersion="9" />
-
- <application android:label="@string/app_name" android:hasCode="false">
-
- <activity android:name="android.app.NativeActivity"
- android:label="@string/app_name"
- android:configChanges="orientation|keyboardHidden">
-
- <meta-data android:name="android.app.lib_name"
- android:value="native-activity" />
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- </manifest>
-
- The main things to note are:
-
- - The android:name attribute of the activity tag must be set to android.app.NativeActivity.
- It is possible to subclass the NativeActivity, however, so if you do, specify the name of
- that class instead.
- - The android:name attribute of the meta-data tag must be in the form of android.app.lib_name
- where lib_name is the name of the module without the lib prefix and .so suffix.
-
- 3. Create a file for your native activity and implement the ANativeActivity_onCreate() function,
- which is called when your native activity starts. This function receives a pointer to an
- ANativeActivity structure, which contains function pointers to the various callback
- implementations that you need to write. Set the applicable callback function pointers in
- ANativeActivity->callbacks to the implementations of your callbacks.
-
- 4. Set the ANativeActivity->instance field to the address of any instance specific data that
- you want to use.
-
- 5. Implement any other things that you want your activity to do upon starting.
-
- 6. Implement the rest of the callbacks that you set in ANativeActivity->callbacks. For more
- information on when the callbacks are called, see the SDK documentation for Activity
- Lifecycles. Remember that your callback implementations must not be blocking, or you might get
- ANR (Application Not Responding) errors because the main UI thread is waiting for the callbacks
- to return.
-
- 7. Develop the rest of your application.
-
- 8. Create an Android.mk file in the jni/ directory of your project to describe your native module
- to the build system. An Android.mk file is essentially a snippet of a GNU Make file. For
- example:
-
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE := my_native_module
- LOCAL_SRC_FILES := my_native_code.c
- include $(BUILD_SHARED_LIBRARY)
-
- For more information on how to create an Android.mk file and what the variables mean,
- see the <ndk_root>/docs/ANDROID-MK.TXT file.
-
- 9. Once you have an Android.mk file, compile your native code using the "ndk-build" command.
-
- cd path/to/project
- <ndk_root>/ndk-build
-
- 10. Build and install your Android project as usual, using Ant or Eclipse. The build automatically
- packages your native code into the .apk file if it is present in the jni/ directory.
diff --git a/docs/text/NDK-BUILD.text b/docs/text/NDK-BUILD.text
deleted file mode 100644
index 2c6936f9a..000000000
--- a/docs/text/NDK-BUILD.text
+++ /dev/null
@@ -1,143 +0,0 @@
-'ndk-build' Overview
-===
-
-I. Usage:
----------
-
-The Android NDK r4 introduced a new tiny shell script, named 'ndk-build',
-to simplify building machine code.
-
-The script is located at the top-level directory of the NDK, and shall
-be invoked from the command-line when in your application project
-directory, or any of its sub-directories. For example:
-
- cd $PROJECT
- $NDK/ndk-build
-
-Where $NDK points to your NDK installation path. You can also create an
-alias or add $NDK to your PATH to avoid typing it every time.
-
-
-II. Options:
-------------
-
-All parameters to 'ndk-build' are passed directly to the underlying GNU Make
-command that runs the NDK build scripts. Notable uses include:
-
- ndk-build --> rebuild required machine code.
- ndk-build clean --> clean all generated binaries.
-
- ndk-build NDK_DEBUG=1 --> generate debuggable native code.
-
- ndk-build V=1 --> launch build, displaying build commands.
-
- ndk-build -B --> force a complete rebuild.
-
- ndk-build -B V=1 --> force a complete rebuild and display build
- commands.
-
- ndk-build NDK_LOG=1 --> display internal NDK log messages
- (used for debugging the NDK itself).
-
- ndk-build NDK_DEBUG=1 --> force a debuggable build (see below)
- ndk-build NDK_DEBUG=0 --> force a release build (see below)
-
- ndk-build NDK_HOST_32BIT=1 --> Always use toolchain in 32-bit (see below)
-
- ndk-build NDK_APPLICATION_MK=<file>
- --> rebuild, using a specific Application.mk pointed to by
- the NDK_APPLICATION_MK command-line variable.
-
- ndk-build -C <project> --> build the native code for the project
- path located at <project>. Useful if you
- don't want to 'cd' to it in your terminal.
-
-
-III. Debuggable versus Release builds:
---------------------------------------
-
-In NDK r5, ndk-build has been modified to make it easier to switch between
-release and debug builds. This is done by using the NDK_DEBUG variable.
-For example:
-
- $NDK/ndk-build NDK_DEBUG=1 => forces the generation of debug binaries
- $NDK/ndk-build NDK_DEBUG=0 => forces the generation of release binaries
-
-If you don't specify NDK_DEBUG, ndk-build will keep its default behaviour,
-which is to inspect the AndroidManifest.xml, if any, and see if its
-<application> element has android:debuggable="true".
-
-> IMPORTANT:
-If you use the build tools of SDK r8 (or higher), you
-won't need to touch your AndroidManifest.xml file at all!
-
-> That's because if you build a debug package (e.g. with
-"ant debug" or the corresponding option of the ADT plugin),
-the tool will automatically pick the native debug files
-generated with NDK_DEBUG=1.
-
-Also, as a convenience, the release and debug object files generated by the
-NDK are now stored in different directories (e.g. obj/local/<abi>/objs and
-obj/local/<abi>/objs-debug). This avoids having to recompile all your sources
-when you switch between these two modes (even when you only modified one or
-two source files).
-
-
-IV. 64-bit and 32-bit toolchains:
----------------------------------
-
-Some toolchains come with both 64-bit and 32-bit versions. For example,
-directories `$NDK/toolchain/<name>/prebuilt` and `$NDK/prebuilt` may contains both
-"`linux-x86`" and "`linux-x86_64`" folders for Linux tools in 32-bit and 64-bit modes,
-respectively. The ndk-build script automatically chooses a 64-bit version of the
-toolchain if the host OS supports it. You can force the use of a 32-bit toolchain by
-using NDK_HOST_32BIT=1 either in your envorinment or on the ndk-build command-line.
-
-Note that 64-bit tools utilize host resources better (faster, handle larger
-programs, etc) and they should function identically to their 32-bit counterparts.
-Ie. 64-bit toolchains still generate 32-bit binaries for Android.
-
-
-V. Requirements:
-----------------
-
-You need GNU Make 3.81 or later to use 'ndk-build' or the NDK in general.
-The build scripts will detect that you're using a non-compliant Make tool
-and will complain with an error message.
-
-If you have GNU Make 3.81 installed, but that it is not launched by the
-default 'make' command, define GNUMAKE in your environment to point to it
-before launching 'ndk-build'. For example:
-
- GNUMAKE=/usr/local/bin/gmake ndk-build
-
-Or to make the change more permanent:
-
- export GNUMAKE=/usr/local/bin/gmake
- ndk-build
-
-Adapt to your shell and GNU Make 3.81 installation location.
-
-You may override other host prebuilt tools in $NDK/prebuilt/<OS>/bin
-with the following environment variables
-
- NDK_HOST_AWK=<path-to-awk>
-
- NDK_HOST_ECHO=<path-to-echo>
-
- NDK_HOST_CMP=<path-to-cmp>
-
-
-VI. Internals:
---------------
-
-'ndk-build' itself is a tiny wrapper around GNU Make, its purpose is simply
-to invoke the right NDK build script, it is equivalent to;
-
- $GNUMAKE -f $NDK/build/core/build-local.mk [parameters]
-
-Where '$GNUMAKE' points to GNU Make 3.81 or later, and $NDK points to your
-NDK installation directory.
-
-Use this knowledge if you want to invoke the NDK build script from other
-shell scripts (or even your own Makefiles).
diff --git a/docs/text/NDK-DEPENDS.text b/docs/text/NDK-DEPENDS.text
deleted file mode 100644
index 16005c4c6..000000000
--- a/docs/text/NDK-DEPENDS.text
+++ /dev/null
@@ -1,79 +0,0 @@
-'ndk-depends' Overview
-===
-
-Introduction:
--------------
-
-The `ndk-depends` tool that comes with this Android NDK allows you to dump
-the ELF dependencies of a given ELF shared library or executable.
-
-With the --print-java option, it can also be used to generate a Java
-source fragment to load your native library and its dependencies in the
-correct order (see example below).
-
-Use '`ndk-depends --help`' for complete usage information.
-
-This tool is designed to support:
-
- - Either 32-bit or 64-bit ELF binaries.
- - Either little-endian or big-endian ELF binaries.
- - Unicode file paths, on Windows.
-
-Note: The Windows binary will NOT work with Cygwin paths !
-
-Examples:
----------
-
-* `ndk-depends path/to/libfoo.so`
-> Dump all dependencies of libfoo.so, in topological order, so
- that any library listed in the result appears before any other
- library it depends on.
-
-* `ndk-depends --print-paths path/to/libfoo.so`
-> Same as above, but also prints the path of the libraries on
- your host file system.
-
-* `ndk-depends -L some/other/path path/to/libfoo.so`
-> Append 'some/other/path' to the search path for depending libraries
- when looking at the dependencies for 'libfoo.so'
-
-* `ndk-depends --print-direct path/to/libfoo.so`
-> Only print the _direct_ dependencies of libfoo.so, and nothing
- else, in the order they appear in the file.
-
-* `ndk-depends path/to/libfoo.so --print-java`
-> Prints a Java source fragment that corresponds to the load
- of 'libfoo' with System.loadLibrary(). This lists all libraries
- in reverse order, and ignores system libraries (e.g. libc.so).
-
-* `ndk-depends path/to/libfoo.so --print-dot | dot -Tpng -o /tmp/graph.png`
-> Prints the dependency graph as Graphviz .dot file, then generate
- a PNG image for it.
-
-* `ndk-depends --help`
-> Print complete usage details.
-
-Let's assume your project has the several libraries:
-
- libfoo.so -> depends on libbar.so and libzoo.so
- libbar.so -> depends on the system's liblog.so
- libzoo.so -> depends on libbar.so
-
-Then '`ndk-depends libs/armeabi/libfoo.so`' will typically print:
-
- libfoo.so
- libzoo.so
- libbar.so
- liblog.so
-
-And '`ndk-depends --print-java libs/armeabi/libfoo.so`' will print:
-
- System.loadLibrary("bar");
- System.loadLibrary("zoo");
- System.loadLibrary("foo");
-
-This is handy to avoid computing the reverse library order yourself
-for complex projects.
-
-For more details, see the output of '`ndk-depends --help`'.
-
diff --git a/docs/text/NDK-GDB.text b/docs/text/NDK-GDB.text
deleted file mode 100644
index e2f88abd2..000000000
--- a/docs/text/NDK-GDB.text
+++ /dev/null
@@ -1,229 +0,0 @@
-'ndk-gdb' and 'ndk-gdb-py' Overview
-===
-
-IMPORTANT: IF YOU ARE DEBUGGING THREADED PROGRAMS, PLEASE READ THE
- SECTION BELOW TITLED 'Thread Support'.
-
-I. Usage:
----------
-
-The Android NDK r4 introduced a helper shell script named 'ndk-gdb' to
-easily launch a native debugging session for your NDK-generated machine code.
-
-The script is located at the top-level directory of the NDK, and shall
-be invoked from the command-line when in your application project
-directory, or any of its sub-directories. For example:
-
- cd $PROJECT
- $NDK/ndk-gdb
-
-Where $NDK points to your NDK installation path. You can also create an
-alias or add $NDK to your PATH to avoid typing it every time.
-
-IMPORTANT: Native debugging can only work if *all* these conditions are met:
-
- 1. Your application is built with the 'ndk-build' script:
-
- Building with the legacy "make APP=<name>" method is not
- supported by ndk-gdb.
-
- 2. Your application is debuggable:
-
- In other words, your AndroidManifest.xml has an <application>
- element that sets the android:debuggable attribute to "true"
-
- 3. You are running your application on Android 2.2 (or higher):
-
- ndk-gdb will not work if you try to run your application on
- previous versions of the system. That does not mean that your
- application should target the Android 2.2. API level, just
- that the debugging session should happen on a 2.2+ device or
- emulator system image.
-
- IMPORTANT IMPORTANT IMPORTANT !!
-
- If you are using the ADT Eclipse plug-in to build your
- application, make sure you're using version 0.9.7 or
- later.
-
- If you are using the 'ant' build tool, make sure that you
- have the latest revision of the SDK Platform components.
- The following minimal revisions are required:
-
- Android 1.5 r4
- Android 1.6 r3
- Android 2.1 r2
- Android 2.2 r1
-
- These should be available through the SDK updater.
-
- If these conditions are not met, the generated .apk will
- not contain required support files and native debugging
- will not be possible.
-
-'ndk-gdb' handles many error conditions and will dump an informative error
-message if it finds a problem. For example, it:
-
- - checks that adb is in your path.
-
- - checks that your application is declared debuggable in its manifest.
-
- - checks that, on the device, the installed application with the same
- package name is also debuggable.
-
-
-By default, ndk-gdb will search for an already-running application process,
-and will dump an error if it doesn't find one. You can however use the --start
-or --launch=<name> option to automatically start your activity before the
-debugging session.
-
-When it successfully attaches to your application process, ndk-gdb will give
-you a normal GDB prompt, after setting up the session to properly look for
-your source files and symbol/debug versions of your generated native
-libraries.
-
-You can set breakpoints with 'b <location>' and resume execution with 'c'
-(for 'continue'). See the GDB manual for a list of commands.
-
-IMPORTANT: When quitting the GDB prompt, your debugged application process
- will be stopped! This is a gdb limitation.
-
-IMPORTANT: The GDB prompt will be preceded by a long list of error messages,
- where gdb complains that it cannot find various system libraries
- (e.g. libc.so, libstdc++.so, liblog.so, libcutils.so, etc...)
-
- This is normal, because there are no symbol/debug versions of
- these libraries corresponding to your target device on your
- development machine. You can safely ignore these messages.
-
-II. Options:
-------------
-
-To see a list of options, type 'ndk-gdb --help'. Notable ones are:
-
- `--verbose`:
-> Print verbose information about the native debugging session setup.
- Only needed to debug problems when you can't connect and that the
- error messages printed by ndk-gdb are not enough.
-
- `--force`:
-> By default, ndk-gdb aborts if it finds that another native debugging
- session is running on the same device. Using --force will kill the
- session, and replace it with a new one. Note that the debugged program
- is *not* killed and will be stopped again.
-
- `--start`:
-> By default, ndk-gdb will try to attach to an existing running instance
- of your application on the target device. You can use --start to
- explicitly launch your application before the debugging session.
-
-> NOTE: This launches the first launchable activity listed from your
- application manifest. Use `--launch=<name>` to start another one.
- See `--launch-list` to dump the list of such activities.
-
- `--launch=<name>`:
-> This is similar to --start, except that it allows you to start a specific
- activity from your application. This is only useful if your manifest
- defines several launchable activities.
-
- `--launch-list`:
-> Convenience option that prints the list of all launchable activity names
- found in your application manifest. The first one will be used by --start
-
- `--project=<path>`:
-> Specify application project directory. Useful if you want to launch
- the script without cd-ing to the directory before that.
-
- `--port=<port>`:
-> By default, ndk-gdb will use local TCP port 5039 to communicate with
- the debugged application. By using a different port, it is possible
- to natively debug programs running on different devices/emulators
- connected to the same development machine.
-
- `--adb=<file>`:
-> Specify the adb tool executable, in case it is not in your path.
-
- `-d`, `-e`, `-s <serial>`:
-> These flags are similar to the ADB ones and allow you to handle the
- case where you have several devices/emulators connected to your
- development machine.
-
- -d: Connect to a single physical device
- -e: Connect to a single emulator device
- -s <serial>: Connect to a specific device or emulator
- where <serial> is the device's name as listed
- by the "adb devices" command.
-
-> Alternatively, you can define the ADB_SERIAL environment variable
- to list a specific device, without the need for a specific option.
-
- `--exec=<file>`:
- `-x <file>`:
-> After connecting to the debugged process, run the GDB initialization
- commands found in <file>. This is useful if you want to do something
- repeatedly, e.g. setting up a list of breakpoints then resuming
- execution automatically.
-
- `--nowait`:
-> Disable pausing the Java code until GDB connects. Passing this option
- may cause early breakpoints to be missed.
-
- `--tui`:
- `-t`:
-> Enable Text User Interface if GDB was built with it. [ndk-gdb-py only]
-
- `--gnumake-flag=<flag>`:
-> Extra flag(s) to pass to the ndk-build system when querying it for
- project information. Multiple instances can be used. [ndk-gdb-py only]
-
- `--stdcxx-py-pr={auto|none|gnustdcxx[-GCCVER]|stlport}`:
-> Use specified Python pretty-printers for displaying types in the
- Standard C++ Library. 'auto' mode works by looking at the .so files
- for a libstdc++ library, and as such only works in the shared scenario.
- When linking statically to a libstdc++ library, the required printers
- must be specified. The default is 'none'. [ndk-gdb-py only]
-
-
-III. Requirements:
-------------------
-
-'ndk-gdb' requires a Unix shell to run. This means that Cygwin is required
-to run it on Windows. An experimental Python re-implementation called
-'ndk-gdb-py' is also provided, removing this restriction and providing
-some new features.
-
-The other NDK requirements apply: e.g. GNU Make 3.81 or higher.
-
-
-IV. Thread Support:
--------------------
-
-If your application runs on a platform older than Android 2.3, ndk-gdb will
-not be able to debug native threads properly. Instead, the debugger will only
-be able to put breakpoints on the main thread, completely ignoring the
-execution of other ones.
-
-The root of the problem is complex, but is essentially due to a very unfortunate
-bug in the platform, which was only discovered lately.
-
-The gdbserver binary that comes with this NDK has special code to detect this
-condition at runtime and adapt its behaviour automatically (in other words,
-you don't have anything special to do when building your code).
-
-What this means in practical terms are:
-
-- If you are on Android 2.3, or a prior platform release which has had the
- platform bug-fix back-ported to it, you will be able to debug native
- threads automatically.
-
-- If you are not, you will only be able to debug the main thread
- (as in previous NDK releases). You will also see the following message
- when launching ndk-gdb (just before the gdb prompt):
-
- Thread debugging is unsupported on this Android platform!
-
-> If you place a breakpoint on a function executed on a non-main thread, the
- program will exit with the following message in GDB:
-
- Program terminated with signal SIGTRAP, Trace/breakpoint trap.
- The program no longer exists.
diff --git a/docs/text/NDK-STACK.text b/docs/text/NDK-STACK.text
deleted file mode 100644
index 5f85d0476..000000000
--- a/docs/text/NDK-STACK.text
+++ /dev/null
@@ -1,86 +0,0 @@
-Android ndk-stack tool
-====
-
-Introduction:
--------------
-
-This document describes the 'ndk-stack' tool that is distributed with
-the Android NDK, since release r6.
-
-Overview:
----------
-
-'ndk-stack' is a simple tool that allows you to filter stack traces as they
-appear in the output of '`adb logcat`' and replace any address inside a shared
-library with the corresponding <source-file>:<line-number> values.
-
-In a nutshell, it will translate something like:
-
- I/DEBUG ( 31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
- I/DEBUG ( 31): Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys'
- I/DEBUG ( 31): pid: 351, tid: 351 %gt;%gt;%gt; /data/local/ndk-tests/crasher <<<
- I/DEBUG ( 31): signal 11 (SIGSEGV), fault addr 0d9f00d8
- I/DEBUG ( 31): r0 0000af88 r1 0000a008 r2 baadf00d r3 0d9f00d8
- I/DEBUG ( 31): r4 00000004 r5 0000a008 r6 0000af88 r7 00013c44
- I/DEBUG ( 31): r8 00000000 r9 00000000 10 00000000 fp 00000000
- I/DEBUG ( 31): ip 0000959c sp be956cc8 lr 00008403 pc 0000841e cpsr 60000030
- I/DEBUG ( 31): #00 pc 0000841e /data/local/ndk-tests/crasher
- I/DEBUG ( 31): #01 pc 000083fe /data/local/ndk-tests/crasher
- I/DEBUG ( 31): #02 pc 000083f6 /data/local/ndk-tests/crasher
- I/DEBUG ( 31): #03 pc 000191ac /system/lib/libc.so
- I/DEBUG ( 31): #04 pc 000083ea /data/local/ndk-tests/crasher
- I/DEBUG ( 31): #05 pc 00008458 /data/local/ndk-tests/crasher
- I/DEBUG ( 31): #06 pc 0000d362 /system/lib/libc.so
- I/DEBUG ( 31):
-
-Into the more readable output:
-
- ********** Crash dump: **********
- Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys'
- pid: 351, tid: 351 >>> /data/local/ndk-tests/crasher <<<
- signal 11 (SIGSEGV), fault addr 0d9f00d8
- Stack frame #00 pc 0000841e /data/local/ndk-tests/crasher : Routine zoo in /tmp/foo/crasher/jni/zoo.c:13
- Stack frame #01 pc 000083fe /data/local/ndk-tests/crasher : Routine bar in /tmp/foo/crasher/jni/bar.c:5
- Stack frame #02 pc 000083f6 /data/local/ndk-tests/crasher : Routine my_comparison in /tmp/foo/crasher/jni/foo.c:9
- Stack frame #03 pc 000191ac /system/lib/libc.so
- Stack frame #04 pc 000083ea /data/local/ndk-tests/crasher : Routine foo in /tmp/foo/crasher/jni/foo.c:14
- Stack frame #05 pc 00008458 /data/local/ndk-tests/crasher : Routine main in /tmp/foo/crasher/jni/main.c:19
- Stack frame #06 pc 0000d362 /system/lib/libc.so
-
-Usage:
-------
-
-To do this, you will first need a directory containing symbolic versions of your
-application's shared libraries. If you use the NDK build system (i.e. ndk-build),
-then these are always located under `$PROJECT_PATH/obj/local/<abi>`, where
-`<abi>` stands for your device's ABI (i.e. '`armeabi`' by default).
-
-You can feed the logcat text either as direct input to the program, e.g.:
-
- adb logcat | $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi
-
-Or you can use the -dump option to specify the logcat as an input file, e.g.:
-
- adb logcat > /tmp/foo.txt
- $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump foo.txt
-
-
-** IMPORTANT **:
-
-> The tool looks for the initial line containing starts in the logcat output,
- i.e. something that looks like:
-
- *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
-
-When copy/pasting traces, don't forget this line from the traces, or
-ndk-stack won't work correctly.
-
-TODO:
------
-
-A future version of '`ndk-stack`' will try to launch '`adb logcat`' and select the
-library path automatically. For now, you'll have to do these steps manually.
-
-As of now, ndk-stack doesn't handle libraries that don't have debug information
-in them. It may be useful to try to detect the nearest function entry point to
-a given PC address (e.g. as in the libc.so example above).
diff --git a/docs/text/OVERVIEW.text b/docs/text/OVERVIEW.text
deleted file mode 100644
index 9aba1291d..000000000
--- a/docs/text/OVERVIEW.text
+++ /dev/null
@@ -1,350 +0,0 @@
-Android NDK Overview
-===
-
-Introduction:
----
-
-The Android NDK is a set of tools that allows Android application developers
-to embed native machine code compiled from C and/or C++ source files into
-their application packages.
-
-IMPORTANT:
-> The Android NDK can only be used to target Android system images
- running Cupcake (a.k.a 1.5) or later versions of the platform.
-
-> 1.0 and 1.1 system images are specifically *not* supported due to
- subtle ABI and toolchain changes that happened for the 1.5 release.
-
-
-I. Android NDK Goals:
----------------------
-
-The Android VM allows your application's source code to call methods
-implemented in native code through the JNI. In a nutshell, this means that:
-
- - Your application's source code will declare one or more methods
- with the 'native' keyword to indicate that they are implemented through
- native code. E.g.:
-
- native byte[] loadFile(String filePath);
-
- - You must provide a native shared library that contains the
- implementation of these methods, which will be packaged into your
- application's .apk. This library must be named according to standard
- Unix conventions as lib<something>.so, and shall contain a standard JNI
- entry point (more on this later). For example:
-
- libFileLoader.so
-
- - Your application must explicitly load the library. For example, to load
- it at application start-up, simply add the following to its source code:
-
- static {
- System.loadLibrary("FileLoader");
- }
-
- Note that you should not use the 'lib' prefix and '.so' suffix here.
-
-
-The Android NDK is a complement to the Android SDK that helps you to:
-
- - Generate JNI-compatible shared libraries that can run on the Android
- 1.5 platform (and later) running on ARM CPUs.
-
- - Copy the generated shared libraries to a proper location of your
- application project path, so they will be automatically added to your
- final (and signed) .apks
-
- - In later revisions of the NDK, we intend to provide tools that help
- debug your native code through a remote gdb connection and as much
- source/symbol information as possible.
-
-Moreover, the Android NDK provides:
-
- - A set of cross-toolchains (compilers, linkers, etc..) that can
- generate native ARM binaries on Linux, OS X and Windows (with Cygwin)
-
- - A set of system headers corresponding to the list of stable native APIs
- supported by the Android platform. This corresponds to definitions that
- are guaranteed to be supported in all later releases of the platform.
-
- They are documented in the file docs/STABLE-APIS.html
-
- IMPORTANT:
- Keep in mind that most of the native system libraries in Android system
- images are not frozen and might changed drastically, or even deleted,
- in later updates and releases of the platform.
-
- - A build system that allow developers to only write very short build files
- to describe which sources need to be compiled, and how. The build system
- deals with all the hairy toolchain/platform/CPU/ABI specifics. Moreover,
- later updates of the NDK can add support for more toolchains, platforms,
- system interfaces without requiring changes in the developer's build
- files (more on this later).
-
-
-II. Android NDK Non-Goals:
---------------------------
-
-The NDK is *not* a good way to write generic native code that runs on Android
-devices. In particular, your applications should still be written in the Java
-programming language, handle Android system events appropriately to avoid the
-"Application Not Responding" dialog or deal with the Android application
-life-cycle.
-
-Note however that is is possible to write a sophisticated application in
-native code with a small "application wrapper" used to start/stop it
-appropriately.
-
-A good understanding of JNI is highly recommended, since many operations
-in this environment require specific actions from the developers, that are
-not necessarily common in typical native code. These include:
-
- - Not being able to directly access the content of VM objects through
- direct native pointers. E.g. you cannot safely get a pointer to a
- String object's 16-bit char array to iterate over it in a loop.
-
- - Requiring explicit reference management when the native code wants to
- keep handles to VM objects between JNI calls.
-
-
-The NDK only provides system headers for a very limited set of native
-APIs and libraries supported by the Android platform. While a typical
-Android system image includes many native shared libraries, these should
-be considered an implementation detail that might change drastically between
-updates and releases of the platform.
-
-If an Android system library is not explicitly supported by the NDK
-headers, then applications should not depend on it being available, or
-they risk breaking after the next over-the-air system update on various
-devices.
-
-Selected system libraries will gradually be added to the set of stable NDK
-APIs.
-
-
-III. NDK development in practice:
----------------------------------
-
-Here's a very rough overview of how you can develop native code with the
-Android NDK:
-
- 1. Place your native sources under `$PROJECT/jni/`...
-
- 2. Write `$PROJECT/jni/Android.mk` to describe your sources
- to the NDK build system
-
- 3. Optional: write `$PROJECT/jni/Application.mk` to describe your
- project in more details to the build system. You don't need
- one to get started though, but this allows you to target
- more than one CPU or override compiler/linker flags
- (see `docs/APPLICATION-MK.html` for all details).
-
- 4. Build your native code by running "`$NDK/ndk-build`" from your
- project directory, or any of its sub-directories.
-
-The last step will copy, in case of success, the stripped shared libraries
-your application needs to your application's root project directory. You
-will then need to generate your final .apk through the usual means.
-
-Now, for a few more details:
-
-
-### III.1/ Configuring the NDK:
-
-
-Previous releases required that you run the 'build/host-setup.sh'
-script to configure your NDK. This step has been removed completely
-in release 4 (a.k.a. NDK r4).
-
-
-### III.2/ Placing C and C++ sources:
-
-Place your native sources under the following directory:
-
- $PROJECT/jni/
-
-Where `$PROJECT` corresponds to the path of your Android application
-project.
-
-You are pretty free to organize the content of 'jni' as you want,
-the directory names and structure here will not influence the final
-generated application packages, so you don't have to use pseudo-unique
-names like `com.<mycompany>.<myproject>` as is the case for application
-package names.
-
-Note that C and C++ sources are supported. The default C++ file extensions
-supported by the NDK is '.cpp', but other extensions can be handled as well
-(see docs/ANDROID-MK.html for details).
-
-It is possible to store your sources in a different location by adjusting
-your Android.mk file (see below).
-
-
-### III.3/ Writing an Android.mk build script:
-
-An Android.mk file is a small build script that you write to describe your
-sources to the NDK build system. Its syntax is described in details in
-the file docs/ANDROID-MK.html.
-
-In a nutshell, the NDK groups your sources into "modules", where each module
-can be one of the following:
-
- - a static library
- - a shared library
-
-You can define several modules in a single Android.mk, or you can write
-several Android.mk files, each one defining a single module.
-
-Note that a single Android.mk might be parsed several times by the build
-system so don't assume that certain variables are not defined in them.
-By default, the NDK will look for the following build script:
-
- $PROJECT/jni/Android.mk
-
-If you want to define Android.mk files in sub-directories, you should
-include them explicitly in your top-level Android.mk. There is even
-a helper function to do that, i.e. use:
-
- include $(call all-subdir-makefiles)
-
-This will include all Android.mk files in sub-directories of the current
-build file's path.
-
-
-### III.4/ Writing an Application.mk build file (optional):
-
-While an Android.mk file describes your modules to the build system, the
-Application.mk file describes your application itself. See the
-docs/APPLICATION-MK.html document to understand what this file allows you
-to do. This includes, among others:
-
- - The exact list of modules required by your application.
-
- - The CPU architecture(s) to generate machine code for.
-
- - Optional information, like whether you want a release or debug
- build, specific C or C++ compiler flags and others that should
- apply to all modules being built.
-
-This file is optional: by default the NDK will provide one that simply
-builds *all* the modules listed from your Android.mk (and all the makefiles
-it includes) and target the default CPU ABI (armeabi).
-
-There are two ways to use an Application.mk:
-
- - Place it under `$PROJECT/jni/Application.mk`, and it will be picked
- up automatically by the 'ndk-build' script (more on this later)
-
- - Place it under `$NDK/apps/<name>/Application.mk`, where $NDK
- points to your NDK installation path. After that, launch
- "`make APP=<name>`" from the NDK directory.
-
- This was the way this file was used before Android NDK r4.
- It is still supported for compatibility reasons, but we strongly
- encourage you to use the first method instead, since it is much
- simpler and doesn't need modifying / changing directories of the
- NDK installation tree.
-
-Again, see docs/APPLICATION-MK.html for a complete description of its
-content.
-
-
-### III.5/ Invoke the NDK build system:
-
-The preferred way to build machine code with the NDK is to use the
-'ndk-build' script introduced with Android NDK r4. You can also use
-a second, legacy, method that depends on creating a '$NDK/apps' subdirectory.
-
-In both cases, a successful build will copy the final stripped binary modules
-(i.e. shared libraries) required by your application to your application's
-project path (Note that unstripped versions are kept for debugging
-purposes, there is no need to copy unstripped binaries to a device).
-
-
-### 1: Using the 'ndk-build' command:
-
-The 'ndk-build' script, located at the top of the NDK installation path
-can be invoked directly from your application project directory (i.e. the
-one where your AndroidManifest.xml is located) or any of its sub-directories.
-For example:
-
- cd $PROJECT
- $NDK/ndk-build
-
-This will launch the NDK build scripts, which will automatically probe your
-development system and application project file to determine what to build.
-
-For example:
-
- ndk-build
- ndk-build clean --> clean generated binaries
- ndk-build -B V=1 --> force complete rebuild, showing commands
-
-By default, it expects an optional file under $PROJECT/jni/Application.mk,
-and a required $PROJECT/jni/Android.mk.
-
-On success, this will copy the generated binary modules (i.e. shared
-libraries) to the appropriate location in your project tree. You can later
-rebuild the full Android application package either through the usual
-'ant' command, or the ADT Eclipse plug-in.
-
-See docs/NDK-BUILD.html for a more complete description of what this script
-does and which options it can take.
-
-
-### III.6/ Specifying custom output directories:
-
-By default, ndk-build places all intermediate generated files under
-$PROJECT/obj. You can however select a different location by defining
-the NDK_OUT environment variable to point to a different directory.
-
-When defined, this variable has two effects:
-
- 1. It ensures that all files that normally go under $PROJECT/obj are
- stored in $NDK_OUT instead
-
- 2. It tells ndk-gdb to look into $NDK_OUT, instead of $PROJECT/obj for
- any symbolized (i.e. unstripped) versions of the generated binaries.
-
-Similarly you can override the default $PROJECT/libs (for libraries and
-gdbserver, etc) by defining NDK_LIBS_OUT to a new path. This is rarely
-done since build system expects the default $PROJECT/libs/
-
-
-### IV. Rebuild your application package:
-
-After generating the binaries with the NDK, you need to rebuild your
-Android application package files (.apk) using the normal means, i.e.
-either using the 'ant' command or the ADT Eclipse plug-in.
-
-See the Android SDK documentation for more details. The new .apk will
-embed your shared libraries, and they will be extracted automatically
-at installation time by the system when you install the package on a
-target device.
-
-
-### V. Debugging support:
-
-The NDK provides a helper script, named 'ndk-gdb' to very easily launch
-a native debugging session of your applications.
-
-Native debugging can *ONLY* be performed on production devices running
-Android 2.2 or higher, and does not require root or privileged access, as
-long as your application is debuggable.
-
-For more information, read docs/NDK-GDB.html. In a nutshell, native debugging
-follows this simple scheme:
-
- 1. Ensure your application is debuggable (e.g. set android:debuggable
- to "true" in your AndroidManifest.xml)
-
- 2. Build your application with 'ndk-build', then install it on your
- device/emulator.
-
- 3. Launch your application.
-
- 4. Run 'ndk-gdb' from your application project directory.
-
-You will get a gdb prompt. See the GDB User Manual for a list of useful
-commands.
diff --git a/docs/text/PREBUILTS.text b/docs/text/PREBUILTS.text
deleted file mode 100644
index 6f2bc01f6..000000000
--- a/docs/text/PREBUILTS.text
+++ /dev/null
@@ -1,141 +0,0 @@
-NDK Prebuilt library support:
-===
-
-Android NDK r5 introduced support for prebuilt libraries (shared and
-static), i.e. the ability to include and use, in your applications,
-prebuilt version of libraries.
-
-This feature can be useful for two things:
-
-1. You want to distribute your own libraries to third-party NDK developers
- without distributing your sources.
-
-2. You want to use a prebuilt version of your own libraries to speed up
- your build.
-
-This document explains how this support works.
-
-
-I. Declaring a prebuilt library module:
----------------------------------------
-
-Each prebuilt library must be declared as a *single* independent module to
-the build system. Here is a trivial example where we assume that the file
-"libfoo.so" is located in the same directory than the Android.mk below:
-
- LOCAL_PATH := $(call my-dir)
-
- include $(CLEAR_VARS)
- LOCAL_MODULE := foo-prebuilt
- LOCAL_SRC_FILES := libfoo.so
- include $(PREBUILT_SHARED_LIBRARY)
-
-Notice that, to declare such a module, you really only need the following:
-
-1. Give the module a name (here '`foo-prebuilt`'). This does not need to
- correspond to the name of the prebuilt library itself.
-
-2. Assign to LOCAL_SRC_FILES the path to the prebuilt library you are
- providing. As usual, the path is relative to your LOCAL_PATH.
-
- IMPORTANT: You *must* ensure that the prebuilt library corresponds
- to the target ABI you are using. More on this later.
-
-3. Include PREBUILT_SHARED_LIBRARY, instead of BUILD_SHARED_LIBRARY, if
- you are providing a shared, library. For static ones, use
- PREBUILT_STATIC_LIBRARY.
-
-A prebuilt module does not build anything. However, a copy of your prebuilt
-shared library will be copied into $PROJECT/obj/local, and another will be
-copied and stripped into `$PROJECT/libs/<abi>`.
-
-II. Referencing the prebuilt library in other modules:
-------------------------------------------------------
-
-Simply list your prebuilt module's name in the LOCAL_STATIC_LIBRARIES or
-LOCAL_SHARED_LIBRARIES declaration in the Android.mk of any module that
-depends on them.
-
-For example, a naive example of a module using libfoo.so would be:
-
- include $(CLEAR_VARS)
- LOCAL_MODULE := foo-user
- LOCAL_SRC_FILES := foo-user.c
- LOCAL_SHARED_LIBRARIES := foo-prebuilt
- include $(BUILD_SHARED_LIBRARY)
-
-
-III. Exporting headers for prebuilt libraries:
-----------------------------------------------
-
-The example above was called 'naive' because, in practice, the code in
-foo-user.c is going to depend on specific declarations that are normally
-found in a header file distributed with the prebuilt library (e.g. "foo.h").
-
-In other words, foo-user.c is going to have a line like:
-
- #include <foo.h>
-
-And you need to provide the header and its include path to the compiler
-when building the foo-user module.
-
-A simple way to deal with that is to use exports in the prebuilt module
-definition. For example, assuming that a file "foo.h" is located under
-the 'include' directory relative to the prebuilt module, we can write:
-
- include $(CLEAR_VARS)
- LOCAL_MODULE := foo-prebuilt
- LOCAL_SRC_FILES := libfoo.so
- LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
- include $(PREBUILT_SHARED_LIBRARY)
-
-The LOCAL_EXPORT_C_INCLUDES definition here ensures that any module that
-depends on the prebuilt one will have its LOCAL_C_INCLUDES automatically
-prepended with the path to the prebuilt's include directory, and will thus
-be able to find headers inside that.
-
-
-IV. Debugging prebuilt binaries:
---------------------------------
-
-We recommend you to provide prebuilt shared libraries that contain debug
-symbols. The version that is installed into `$PROJECT/libs/<abi>/` is always
-stripped by the NDK build system, but the debug version will be used for
-debugging purposes with ndk-gdb.
-
-
-V. ABI Selection of prebuilt binaries:
---------------------------------------
-
-As said previously, it is crucial to provide a prebuilt shared library
-that is compatible with the targeted ABI during the build. To do that,
-check for the value of TARGET_ARCH_ABI, its value will be:
-
- armeabi => when targeting ARMv5TE or higher CPUs
- armeabi-v7a => when targeting ARMv7 or higher CPUs
- x86 => when targeting x86 CPUs
- mips => when targeting MIPS CPUs
-
-Note that armeabi-v7a systems can run armeabi binaries just fine.
-
-Here's an example where we provide two versions of a prebuilt library
-and select which one to copy based on the target ABI:
-
- include $(CLEAR_VARS)
- LOCAL_MODULE := foo-prebuilt
- LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libfoo.so
- LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
- include $(PREBUILT_SHARED_LIBRARY)
-
-Here. we assume that the prebuilt libraries to copy are under the
-following directory hierarchy:
-
- Android.mk --> the file above
- armeabi/libfoo.so --> the armeabi prebuilt shared library
- armeabi-v7a/libfoo.so --> the armeabi-v7a prebuilt shared library
- include/foo.h --> the exported header file
-
-NOTE: Remember that you don't need to provide an armeabi-v7a prebuilt
- library, since an armeabi one can easily run on the corresponding
- devices.
-
diff --git a/docs/text/STABLE-APIS.text b/docs/text/STABLE-APIS.text
deleted file mode 100644
index c3b3be1fd..000000000
--- a/docs/text/STABLE-APIS.text
+++ /dev/null
@@ -1,432 +0,0 @@
-Android NDK Stable APIs:
-========================
-
-This is the list of stable APIs/ABIs exposed by the Android NDK.
-
-I. Purpose:
------------
-
-Each API corresponds to a set of headers files, and a shared library file
-that contains the corresponding implementation, and which must be linked
-against by your native code.
-
-For example, to use system library "Foo", you would include a header
-like <foo.h> in your code, then tell the build system that your native
-module needs to link to /system/lib/libfoo.so at load-time by adding
-the following line to your Android.mk file:
-
- LOCAL_LDLIBS := -lfoo
-
-Note that the build system automatically links the C library, the Math
-library and the C++ support library to your native code, there is no
-need to list them in a LOCAL_LDLIBS line.
-
-There are several "API Levels" defined. Each API level corresponds to
-a given Android system platform release. The following levels are
-currently supported:
-
- android-3 -> Official Android 1.5 system images
- android-4 -> Official Android 1.6 system images
- android-5 -> Official Android 2.0 system images
- android-6 -> Official Android 2.0.1 system images
- android-7 -> Official Android 2.1 system images
- android-8 -> Official Android 2.2 system images
- android-9 -> Official Android 2.3 system images
- android-14 -> Official Android 4.0 system images
- android-18 -> Official Android 4.3 system images
-
-Note that android-6 and android-7 are the same as android-5 for the NDK,
-i.e. they provide exactly the same native ABIs!
-
-IMPORTANT:
-> The headers corresponding to a given API level are now located
- under $NDK/platforms/android-<level>/arch-arm/usr/include
-
-
-II. Android-3 Stable Native APIs:
----------------------------------
-
-All the APIs listed below are available for developing native code that
-runs on Android 1.5 system images and above.
-
-### The C Library:
-
-The C library headers, as they are defined on Android 1.5 are available
-through their standard names (<stdlib.h>, <stdio.h>, etc...). If one header
-is not there at build time, it's because its implementation is not available
-on a 1.5 system image.
-
-The build system automatically links your native modules to the C library,
-you don't need to add it to LOCAL_LDLIBS.
-
-Note that the Android C library includes support for pthread (<pthread.h>),
-so "LOCAL_LIBS := -lpthread" is not needed. The same is true for real-time
-extensions (-lrt on typical Linux distributions).
-
-
- ** VERY IMPORTANT NOTE: ******************************************************
- *
- * The kernel-specific headers in <linux/...> and <asm/...> are not considered
- * stable at this point. Avoid including them directly because some of them
- * are likely to change in future releases of the platform. This is especially
- * true for anything related to specific hardware definitions.
- *
- ******************************************************************************
-
-
-### The Math Library:
-
-`<math.h>` is available, and the math library is automatically linked to your
-native modules at build time, so there is no need to list "`-lm`" through
-LOCAL_LDLIBS.
-
-
-
-### C++ Library:
-
-An *extremely* minimal C++ support API is available. For Android 1.5, this is
-currently limited to the following headers:
-
- <cstddef>
- <new>
- <utility>
- <stl_pair.h>
-
-They may not contain all definitions required by the standard. Notably,
-support for C++ exceptions and RTTI is not available with Android 1.5 system
-images.
-
-The C++ support library (-lstdc++) is automatically linked to your native
-modules too, so there is no need to list it through LOCAL_LDLIBS
-
-
-
-### Android-specific Log Support:
-
-`<android/log.h>` contains various definitions that can be used to send log
-messages to the kernel from your native code. Please have a look at its
-content in (`platforms/android-3/arch-arm/usr/include/android/log.h`), which
-contain many informative comments on how to use it.
-
-You should be able to write helpful wrapper macros for your own usage to
-access this facility.
-
-If you use it, your native module should link to /system/lib/liblog.so with:
-
- LOCAL_LDLIBS := -llog
-
-
-### ZLib Compression Library:
-
-`<zlib.h>` and `<zconf.h>` are available and can be used to use the ZLib
-compression library. Documentation for it is at the ZLib page:
-
-> http://www.zlib.net/manual.html
-
-If you use it, your native module should link to /system/lib/libz.so with:
-
- LOCAL_LDLIBS := -lz
-
-
-### Dynamic Linker Library:
-
-`<dlfcn.h>` is available and can be used to use the dlopen()/dlsym()/dlclose()
-functions provided by the Android dynamic linker. You will need to link
-against /system/lib/libdl.so with:
-
- LOCAL_LDLIBS := -ldl
-
-
-III. Android-4 Stable Native APIs:
-----------------------------------
-
-All the APIs listed below are available for developing native code that runs
-on Android 1.6 system images and above,
-
-
-### The OpenGL ES 1.x Library:
-
-The standard OpenGL ES headers `<GLES/gl.h>` and `<GLES/glext.h>` contain the
-declarations needed to perform OpenGL ES 1.x rendering calls from native
-code.
-
-If you use them, your native module should link to /system/lib/libGLESv1_CM.so
-as in:
-
- LOCAL_LDLIBS := -lGLESv1_CM
-
-
-The '1.x' here refers to both versions 1.0 and 1.1 of the OpenGL ES APIs.
-Please note that:
-
- - OpenGL ES 1.0 is supported on *all* Android-based devices.
- - OpenGL ES 1.1 is fully supported only on specific devices that
- have the corresponding GPU.
-
-This is because Android comes with a 1.0-capable software renderer that can
-be used on GPU-less devices.
-
-Developers should query the OpenGL ES version string and extension string
-to know if the current device supports the features they need. See the
-description of glGetString() in the specification to see how to do that:
-
-> http://www.khronos.org/opengles/sdk/1.1/docs/man/glGetString.xml
-
-Additionally, developers must put a `<uses-feature>` tag in their manifest
-file to indicate which version of OpenGL ES their application requires. See
-the documentation linked below for details:
-
-> http://developer.android.com/guide/topics/manifest/uses-feature-element.html
-
-Please note that EGL APIs are only available starting from API level 9. You
-can however perform the corresponding operations (surface creation and flipping)
-by using the VM. For example, with a GLSurfaceView as described here:
-
-> http://android-developers.blogspot.com/2009/04/introducing-glsurfaceview.html
-
-The "san-angeles" sample application shows how you can do that, while
-rendering each frame in native code. This is a small Android port of the
-excellent "San Angeles Observation" demo program. For more information about
-it, see:
-
-> http://jet.ro/visuals/san-angeles-observation/
-
-
-IV. Android-5 Stable Native APIs:
-----------------------------------
-
-All the APIs listed below are available for developing native code that runs
-on Android 2.0 system images and above.
-
-
-### The OpenGL ES 2.0 Library:
-
-The standard OpenGL ES 2.0 headers `<GLES2/gl2.h>` and `<GLES2/gl2ext.h>` contain the
-declarations needed to perform OpenGL ES 2.0 rendering calls from native code.
-This includes the ability to define and use vertex and fragment shaders using the
-GLSL language.
-
-If you use them, your native module should link to /system/lib/libGLESv2.so
-as in:
-
- LOCAL_LDLIBS := -lGLESv2
-
-Not all devices support OpenGL ES 2.0, developers should thus query the
-implementation's version and extension strings, and put a `<uses-feature>`
-tag in their Android manifest. See Section III above for details.
-
-Please note that EGL APIs are only available starting from API level 9.
-
-The "hello-gl2" sample application demonstrate this. It is used to draw a very
-simple triangle with the help of a vertex and fragment shaders.
-
-IMPORTANT NOTE:
-> The Android emulator does not support OpenGL ES 2.0 hardware emulation
- at this time. Running and testing code that uses this API requires a
- real device with such capabilities.
-
-
-IV. Android-8 Stable Native APIs:
-----------------------------------
-
-All the APIs listed below are available for developing native code that runs
-on Android 2.2 system images and above.
-
-
-### The 'jnigraphics' Library:
-
-This is a tiny library that exposes a stable, C-based, interface that allows
-native code to reliably access the pixel buffers of Java bitmap objects.
-
-To use it, include the `<android/bitmap.h>` header in your source code, and
-and link to the jnigraphics library as in:
-
- LOCAL_LDLIBS += -ljnigraphics
-
-For details, read the source header at the following location:
-
- platforms/android-8/arch-arm/usr/include/android/bitmap.h
-
-Briefly, typical usage should look like:
-
- 1. Use `AndroidBitmap_getInfo()` to retrieve information about a
- given bitmap handle from JNI (e.g. its width/height/pixel format)
-
- 2. Use `AndroidBitmap_lockPixels()` to lock the pixel buffer and
- retrieve a pointer to it. This ensures the pixels will not move
- until `AndroidBitmap_unlockPixels()` is called.
-
- 3. Modify the pixel buffer, according to its pixel format, width,
- stride, etc.., in native code.
-
- 4. Call `AndroidBitmap_unlockPixels()` to unlock the buffer.
-
-
-V. Android-9 Stable Native APIs:
---------------------------------
-
-All the APIs listed below are available for developing native code that runs
-on Android > 2.3 system images and above.
-
-### The EGL graphics library:
-
-EGL provides a native platform interface to allocate and manage OpenGLES
-surfaces. For more information about its features, please see:
-
-> http://www.khronos.org/egl
-
-In a nutshell, this will allow you to do the following directly from
-native code:
-
- - List supported EGL configurations
- - Allocate and release OpenGLES surfaces
- - Swap/Flip surfaces for display (eglSwapBuffers)
-
-This is provided through the following headers:
-
- <EGL/egl.h> -> Main EGL API definitions
- <EGL/eglext.h> -> EGL extension-related definitions
-
-You cal link against the system's EGL library by adding the following
-to your NDK module definition:
-
- LOCAL_LDLIBS += -lEGL
-
-
-### The OpenSL ES native audio Library:
-
-Android native audio is based on Khronos Group OpenSL ES&#0153; 1.0.1.
-
-The standard OpenSL ES headers `<SLES/OpenSLES.h>` and `<SLES/OpenSLES_Platform.h>`
-contain the declarations needed to perform audio input and output from the
-native side of Android.
-
-NOTE: Despite the fact that the OpenSL ES 1.0.1 specification uses
- `<OpenSLES.h>` to include these headers, Khronos has modified later versions of
- the document to recommend `<SLES/OpenSLES.h>` instead, hence the later
- approach was adopted for Android.
-
-This API level also provides Android-specific extensions, see the content
-of `<SLES/OpenSLES_Android.h>` and `<SLES/OpenSLES_AndroidConfiguration.h>` for
-details.
-
-The system library named "libOpenSLES.so" implements the public native audio
-functions. Use the following to link your modules against it:
-
- LOCAL_LDLIBS += -lOpenSLES
-
-For more information about this topic, please read the document docs/opensles/index.html.
-
-
-### The Android native application APIs:
-
-Starting from API level 9, it is possible to entirely write an Android
-application with native code (i.e. without any Java). That does not mean
-that your code does not run inside a VM though, and most of the features
-of the platform will still need to be accessed through JNI.
-
-For more information about this topic, please read the dedicated
-document named docs/NATIVE-ACTIVITY.html
-
-The following headers correspond to these new native APIs (see comments
-inside them for more details):
-
- * `<android/native_activity.h>`
-> Activity lifecycle management (and general entry point)
-
- * `<android/looper.h>`<br>
- `<android/input.h>`<br>
- `<android/keycodes.h>`<br>
- `<android/sensor.h>`
-> To Listen to input events and sensors directly from native code.
-
- * `<android/rect.h>`<br>
- `<android/window.h>`<br>
- `<android/native_window.h>`<br>
- `<android/native_window_jni.h>`
-> Window management, including the ability to lock/unlock the pixel
- buffer to draw directly into it.
-
- * `<android/configuration.h>`<br>
- `<android/asset_manager.h>`<br>
- `<android/storage_manager.h>`<br>
- `<android/obb.h>`
-> Direct (read-only) access to assets embedded in your .apk. or
- the Opaque Binary Blob (OBB) files, a new feature of Android X.X
- that allows one to distribute large amount of application data
- outside of the .apk (useful for game assets, for example).
-
-All the corresponding functions are provided by the "libandroid.so" library
-version that comes with API level 9. To use it, use the following:
-
- LOCAL_LDLIBS += -landroid
-
-
-VI. Android-14 Stable Native APIs:
-----------------------------------
-
-All the APIs listed below are available for developing native code that runs
-on Android > 4.0 system images and above.
-
-### The OpenMAX AL native multimedia library:
-
-Android native multimedia is based on Khronos Group OpenMAX AL&#0153; 1.0.1.
-
-The standard OpenMAX AL headers `<OMXAL/OpenMAXAL.h>` and `<OMXAL/OpenMAXAL_Platform.h>`
-contain the declarations needed to perform multimedia output from the
-native side of Android.
-
-NOTE: Despite the fact that the OpenMAX AL 1.0.1 specification uses
- `<OpenMAXAL.h>` to include these headers, Khronos has modified later versions of
- the document to recommend `<OMXAL/OpenMAXAL.h>` instead, hence the later
- approach was adopted for Android.
-
-This API level also provides Android-specific extensions, see the content
-of `<OMXAL/OpenMAXAL_Android.h>` for details.
-
-The system library named "`libOpenMAXAL.so`" implements the public native multimedia
-functions. Use the following to link your modules against it:
-
- LOCAL_LDLIBS += -lOpenMAXAL
-
-For more information about this topic, please read the document docs/openmaxal/index.html.
-
-
-### The OpenSL ES native audio library:
-
-Native audio APIs based on OpenSL ES were added in API level 9.
-Starting with API level 14, the native audio API was extended to support
-decoding to PCM. See section "The OpenSL ES native audio Library"
-above for a high-level summary of how to use OpenSL ES, and the details
-in docs/opensles/index.html.
-
-
-
-V. Android-18 Stable Native APIs:
-----------------------------------
-
-All the APIs listed below are available for developing native code that runs
-on Android 4.3 system images and above.
-
-
-### The OpenGL ES 3.0 Library:
-
-The standard OpenGL ES 3.0 headers `<GLES3/gl3.h>` and `<GLES3/gl3ext.h>` contain the
-declarations needed to perform OpenGL ES 3.0 rendering calls from native code.
-
-If you use them, your native module should link to /system/lib/libGLESv3.so
-as in:
-
- LOCAL_LDLIBS := -lGLESv3
-
-Not all devices support OpenGL ES 3.0, developers should thus query the
-implementation's version and extension strings, and put a `<uses-feature>`
-tag in their Android manifest. See Section III above for details.
-
-The "gles3jni" sample application demonstrate this.
-
-IMPORTANT NOTE:
-> The Android emulator does not support OpenGL ES 3.0 hardware emulation
- at this time. Running and testing code that uses this API requires a
- real device with such capabilities.
-
diff --git a/docs/text/STANDALONE-TOOLCHAIN.text b/docs/text/STANDALONE-TOOLCHAIN.text
deleted file mode 100644
index b2b2a2ec1..000000000
--- a/docs/text/STANDALONE-TOOLCHAIN.text
+++ /dev/null
@@ -1,355 +0,0 @@
-USING THE ANDROID TOOLCHAIN AS A STANDALONE COMPILER
-======================================================
-
-It is now possible to use the toolchains provided with the Android NDK as
-standalone compilers. This can be useful if you already have your own build
-system, and only need to ability to invoke the cross-compiler to add support
-to Android for it.
-
-A typical use case if invoking the 'configure' script of an open-source
-library that expects a cross-compiler in the CC environment variable.
-
-
-This document explains how to do that:
-
-1/ Selecting your toolchain:
-----------------------------
-
-Before anything else, you need to decide whether your standalone toolchain
-is going to target ARM-based devices, x86-based, or MIPS-based one.
-Each architecture corresponds to a different toolchain name. For example:
-
- * arm-linux-androideabi-4.6 => targeting ARM-based Android devices
- * x86-4.6 => targeting x86-based Android devices
- * mipsel-linux-android-4.6 => targeting MIPS-based Android devices
-
-2/ Selecting your sysroot:
---------------------------
-
-The second thing you need to know is which Android native API level you want
-to target. Each one of them provides a different various APIs, which are
-documented under doc/STABLE-APIS.html, and correspond to the sub-directories
-of $NDK/platforms.
-
-This allows you to define the path to your 'sysroot', a GCC term for a
-directory containing the system headers and libraries of your target.
-Usually, this will be something like:
-
- SYSROOT=$NDK/platforms/android-<level>/arch-<arch>/
-
-Where <level> is the API level number, and <arch> is the architecture
-("arm", "x86", and "mips" are the supported values). For example, if you're
-targeting Android 2.2 (a.k.a. Froyo), you would use:
-
- SYSROOT=$NDK/platforms/android-8/arch-arm
-
-IMPORTANT: Note that X86 and MIPS architectures are only supported at android-9 and later.
-
-3/ Invoking the compiler (the hard way):
-----------------------------------------
-
-Invoke the compiler using the --sysroot option to indicate where the system
-files for the platform you're targeting are located. For example, do:
-
- export CC="$NDK/toolchains/<name>/prebuilt/<system>/bin/<prefix>gcc --sysroot=$SYSROOT"
- $CC -o foo.o -c foo.c
-
-Where <name> is the toolchain's name, <system> is the host tag for your system,
-and <prefix> is a toolchain-specific prefix. For example, if you are on Linux
-using the NDK r5 toolchain, you would use:
-
- export CC="$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT"
-
-As you can see, this is rather verbose, but it works!
-
-IMPORTANT NOTE:
-
-> Using the NDK toolchain directly has a serious limitation:
- You won't be able to use any C++ STL (STLport, libc++,
- the GNU libstdc++) with it. Also no exceptions and no RTTI.
-
-> For clang, you need to add correct "-target" for given architecture, and add
- "-gcc-toolchain" to path of GNU-based toolchain for "as" and "ld", eg.
-
- 1. Add "-target armv7-none-linux-androideabi" for armeabi-v7a, "-target armv5te-none-linux-androideabi"
- for armeabi, "-target i686-none-linux-android" for x86, "-target mipsel-none-linux-android" for mips, and
- 2. Add "-gcc-toolchain $NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64"
-
-
-4/ Invoking the compiler (the easy way):
-----------------------------------------
-
-The NDK allows you to create a "customized" toolchain installation to make
-life easier. For example, consider the following command:
-
- $NDK/build/tools/make-standalone-toolchain.sh --platform=android-5 --install-dir=/tmp/my-android-toolchain
-
-This will create a directory named /tmp/my-android-toolchain containing a
-copy of the android-5/arch-arm sysroot, and of the toolchain binaries.
-
-Note that by default, the 32-bit ARM-based GCC 4.6 toolchain will be selected by the script.
-Use the '--arch=x86' option to specify the x86 GCC 4.6, or add '--arch=mips' option
-to specify the MIPS GCC 4.6, or alternatively
-'--toolchain=<name>'. For example:
-
- --toolchain=x86-4.8 # select x86 GCC 4.8 compiler
- --toolchain=arm-linux-androideabi-4.7 # select ARM GCC 4.7 compiler
- --toolchain=mipsel-linux-android-4.6 # select MIPS GCC 4.6 compiler, same as --arch=mips
-
-If you wish, add '--llvm-version=3.3' to also copy clang/llvm 3.3, or
-use --toolchain with '-clang3.3' suffix. For example:
-
- --toolchain=arm-linux-androideabi-clang3.3 # same as --arch=arm --llvm-version=3.3
-
-You may specify --system=linux-x86_64 on 64-bit Linux or --system=darwin-x86_64 on 64-bit
-MacOSX to make 64-bit host toolchain instead of the 32-bit one (default).
-See IV of NDK-BUILD.html
-
-You may specify --stl=stlport to copy libstlport instead of libgnustl. Note that
-to link against the shared library, you will have to explicitely use -lstlport_shared
-in this case, just like you need to use -lgnustl_shared for the GNU libstdc++ case.
-Static linking doesn't require anything special.
-
-Likewise you may specify --stl=libc++ to copy LLVM libc++ headers and libraries. Note that
-to link against the shared library, you will have to explicitely use -lc++_shared.
-
-You can later use it directly with something like:
-
- export PATH=/tmp/my-android-toolchain/bin:$PATH
- export CC=arm-linux-androideabi-gcc # or export CC=clang
- export CXX=arm-linux-androideabi-g++ # or export CXX=clang++
-
-Note that without the --install-dir option, make-standalone-toolchain.sh will
-create a tarball in /tmp/ndk/<toolchain-name>.tar.bz2. This allows you to
-archive and redistribute the binaries easily.
-
-Another important benefit is that this standalone toolchain will contain a
-working copy of a C++ STL library, with working exceptions and RTTI support.
-
-Use --help for more options and details.
-
-> IMPORTANT: The toolchain binaries do not depend or contain host-specific paths,
- in other words, they can be installed in any location, or even
- moved if you need to.
-
-> NOTE: You can still use the --sysroot option with the new toolchain, but it
- is now simply optional!
-
-
-5/ About Clang
----------------------
-
-It is possible to also install Clang binaries in the standalone
-installation by using the --llvm-version=<version> option, where
-<version> is a LLVM/Clang version number (e.g. `3.2` or `3.3`). E.g.:
-
- build/tools/make-standalone-toolchain.sh \
- --install-dir=/tmp/mydir \
- --toolchain=arm-linux-androideabi-4.7 \
- --llvm-version=3.3
-
-Note that Clang binaries are copied in addition to the GCC ones, because
-they rely on the same assembler, linker, headers, libraries and C++
-STL implementation.
-
-This also installs two scripts under <install-dir>/bin/ named '`clang`'
-and '`clang++`' which invoke the real clang binary with default
-target architecture flags. In other words, they should "just work" and
-you should be able to use them in your own builds by setting CC and CXX
-environment variables to point to them.
-
-The rest of this section gives more detail about how these work, in case
-you encounter some unexpected problems.
-
-For example, in an ARM standalone installation built with
-`--llvm-version=3.3`, `clang` is a one-liner that looks like this on Unix:
-
- `dirname $0`/clang31 -target armv5te-none-linux-androideabi "$@"
-
-And `clang++` invokes `clang++31` in the same way.
-
-Note that for ARM, `clang` will change target based on the presence of
-subsequent option "`-march=armv7-a`" and/or "`-mthumb`". ie.
-
- 1. With "`-march=armv7-a`", -target becomes `armv7-none-linux-androideabi`.
- 2. With "`-mthumb`", -target becomes `thumb-none-linux-androideabi`.
- 3. With both, -target becomes `thumbv7-none-linux-androideabi`.
-
-You may override with your own -target if you wish.
-
-There is no need for "-gcc-toolchain" because clang locates "as" and "ld" in
-predefined relative location in standalone package.
-
-Extra efforts have been made to make clang/clang++ easier drop-in
-replacements for gcc/g++ in Makefile. When in doubt, use the following
-common techniques to check:
-
- 1. Add option "`-v`" to dump commands compiler driver issues
- 2. Add option "`-###`" to dump command line options, including those
- implicitly predefined.
- 3. Use "`-x c` `/dev/null` `-dM` `-E`" to dump predefined preprocessor definitions
- 4. Add option "`-save-temps`" and compare the preprocessed files `*.i` or `*.ii`
-
-See http://clang.llvm.org/ , especially the GCC compatibility section.
-
-
-6/ ABI Compatibility:
----------------------
-
-The machine code generated by the ARM toolchain should be compatible with
-the official Android 'armeabi' ABI (see docs/CPU-ARCH-ABIS.html) by default.
-
-It is recommended to use the -mthumb compiler flag to force the generation
-of 16-bit Thumb-1 instructions (the default being 32-bit ARM ones).
-
-If you want to target the 'armeabi-v7a' ABI, you will need ensure that the
-following flags are being used:
-
- CFLAGS='-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16'
-
-Note: The first flag enables Thumb-2 instructions, and the second one
- enables H/W FPU instructions while ensuring that floating-point
- parameters are passed in core registers, which is critical for
- ABI compatibility. Do *not* use these flags separately before
- NDK r9b!
-
-If you want to use Neon instructions, you will need to change the -mfpu
-compiler flag:
-
- CFLAGS='-march=armv7-a -mfloat-abi=softfp -mfpu=neon'
-
-Note that this forces the use of VFPv3-D32, as per the ARM specification.
-
-Also, make sure the following two flags are provided to linker:
-
- LDFLAGS='-march=armv7-a -Wl,--fix-cortex-a8'
-
-Note: The first flag instructs linker to pick libgcc.a, libgcov.a and
- crt*.o tailored for armv7-a. The 2nd flag is *required* to route
- around a CPU bug in some Cortex-A8 implementations:
-
-Since NDK r9b, all Android native APIs taking or returning double/float
-has __attribute__((pcs("aapcs"))) for ARM. It's possible to compile
-user code in -mhard-float (which implies -mfloat-abi=hard) and still
-link with Android native APIs which follow softfp ABI. Please see
-tests/device/hard-float/jni/Android.mk for details.
-
-If you want to use Neon intrinsics on x86 they can be translated to the native
-x86 SSE ones using special C/C++ language header with the same name as
-standard arm neon intrinsics header "arm_neon.h".
-By default x86 ABI supports SIMD up to SSE3 and the header covers ~83% NEON
-functions (1551 of total 1872). It is recommended to use the -mssse3 compiler
-flag which extends SIMD up to SSSE3 and in this case the header will cover
-~98% NEON functions (1827 of total 1872):
-
- CFLAGS='-mssse3'
-
-To learn more about it, see docs/CPU-X86.html
-
-If none of the above makes sense to you, it's probably better not to use
-the standalone toolchain, and stick to the NDK build system instead, which
-will handle all the details for you.
-
-You don't have to use any specific compiler flag when targeting the MIPS ABI.
-
-7/ Warnings and Limitations:
---------------------------
-
-### 7.1/ Windows support:
-
-The Windows binaries do *not* depend on Cygwin. The good news is that they
-are thus faster, the bad news is that they do not understand the Cygwin
-path specification like `/cygdrive/c/foo/bar` (instead of `C:/foo/bar`).
-
-The NDK build system ensures that all paths passed to the compiler from Cygwin
-are automatically translated, and deals with other horrors for you. If you have
-a custom build system, you may need to deal with the problem yourself.
-
-NOTE: There is no plan to support Cygwin / MSys at the moment, but
- contributions are welcome. Contact the android-ndk forum for details.
-
-
-### 7.2/ wchar_t support:
-
-As documented, the Android platform did not really support wchar_t until
-Android 2.3. What this means in practical terms is that:
-
- - If you target platform android-9 or higher, the size of wchar_t is
- 4 bytes, and most wide-char functions are available in the C library
- (with the exception of multi-byte encoding/decoding functions and
- wsprintf/wsscanf).
-
- - If you target any prior API level, the size of wchar_t will be 1 byte
- and none of the wide-char functions will work anyway.
-
-We recommend any developer to get rid of any dependencies on the wchar_t type
-and switch to better representations. The support provided in Android is only
-there to help you migrate existing code.
-
-
-### 7.3/ Exceptions, RTTI and STL:
-
-The toolchain binaries *do* support C++ exceptions and RTTI by default.
-They are enabled by default, so use -fno-exceptions and -fno-rtti if you
-want to disable them when building sources with them (e.g. to generate
-smaller machine code).
-
-NOTE: If you use the GNU libstdc++, you will need to explicitly link with
-libsupc++ if you use these features. To do this, use -lsupc++ when
-linking binaries, as in:
-
- arm-linux-androideabi-g++ .... -lsupc++
-
-This is not needed when using the STLport or libc++ library.
-
-
-### 7.4/ C++ STL support:
-
-The standalone toolchain includes a copy of a C++ Standard Template Library
-implementation, either the GNU libstdc++, STLport, or libc++, determined by your
-use of the --stl=<name> option described previously. To use this STL
-implementation, you however need to link your project with the proper
-library:
-
- * Use -lstdc++ to link against the _static_ library version of any
- implementation. This ensures that all required C++ STL code is
- included into your final binary. This is ideal if you are only
- generating a **single** shared library or executable.
-
- This is the recommended way to do it.
-
- * Use -lgnustl_shared to link against the _shared_ library version of
- GNU libstdc++. If you use this option, you need to ensure that
- `libgnustl_shared.so` is also copied to your device for your code to
- load properly. The file is at:
-
- $TOOLCHAIN/arm-linux-androideabi/lib/ for ARM toolchains.
- $TOOLCHAIN/i686-linux-android/lib/ for x86 ones.
- $TOOLCHAIN/mipsel-linux-android/lib/ for MIPS toolchains.
-
- IMPORTANT: The GNU libstdc++ is licensed under the **GPLv3** with a
- linking exception. See the following URL for details:
-
-> http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01s02.html
-
-> If you cannot comply with its requirements, i.e. you cannot redistribute
- the shared library, do not use it in your project.
-
- * Use -lstlport_shared to link against the _shared_ library version of
- STLport. If you use this option, you need to ensure that
- `libstlport_shared.so` is also copied to your device for your code
- to load properly. They are found at the same locations than those
- for `gnustl_shared`.
-
-**VERY** **IMPORTANT** **NOTE**:
-If your project contains _multiple_ shared libraries or
-executables, you **must** link against a shared library STL implementation.
-Otherwise, some global variables won't be defined uniquely, which can
-result in all kind of weird behaviour at runtime, like crashes, exceptions
-not being caught properly, and more surprises.
-
-The reason the shared version of the libraries is not simply called
-`libstdc++.so` is not called libstdc++.so is because this would conflict
-at runtime with the system's own minimal C++ runtime, which is
-`/system/lib/libstdc++.so`. This enforces a new name for the GNU ELF
-library. This is not a problem for the static library.
diff --git a/docs/text/SYSTEM-ISSUES.text b/docs/text/SYSTEM-ISSUES.text
deleted file mode 100644
index 3bca42ff5..000000000
--- a/docs/text/SYSTEM-ISSUES.text
+++ /dev/null
@@ -1,102 +0,0 @@
-Android System Image Issues
-===========================
-
-This document contains a list of known issues in existing Android
-system images that NDK developers should be aware of.
-
-I. Android 1.5 System Issues:
------------------------------
-
-The following issues correspond to the official Android 1.5
-system images:
-
-
-C++ Runtime Support:
---------------------
-
-The Android C++ system runtime only provides very little support for
-C++ features (i.e. RTTI, exceptions and Standard Library). However,
-the NDK provides more advanced runtimes that can be linked into your
-application, if you need them.
-
-See docs/CPLUSPLUS-SUPPORT.html for more details.
-
-
-C Library limitations:
-----------------------
-
-The C library doesn't try to implement every feature under the sun.
-Most notably, pthread cancellation is not supported. A detailed overview
-of the C library and its design is available in docs/system/libc/OVERVIEW.html
-
-
-No SysV IPCs in C library:
---------------------------
-
-Unix System V Inter-Process Communication APIs (e.g. semget()) are
-intentionally not available from the C library, to avoid denial-of-service
-issues. See docs/system/libc/SYSV-IPC.html for details.
-
-
-C Library bug: getservbyname() returns port number in incorrect order:
-----------------------------------------------------------------------
-
-The Android 1.5 C library function getservbyname() returns the port number
-corresponding to a given network service in incorrect order. The function
-stores its result in a 'struct servent' structure, and the port number in
-its 's_port' field.
-
-The standard mandates that this value is stored in network order (and thus
-should be converted to host order through ntohs()). However, the 1.5
-implementation is buggy and returns the number.
-
-This bug is fixed in later releases of the platform, and applications
-should not depend on the wrong behaviour in the future. Avoid using this
-function if possible; if this is not possible, try to use a small wrapper
-like the following one:
-
- static struct servent*
- my_getservbyname(const char* name, const char* proto)
- {
- static int has_bug = -1;
- struct servent* ret;
-
- if (has_bug &lt; 0) {
- ret = getservbyname("http",NULL);
- has_bug = (ret == NULL || ret-&gt;s_port == 80);
- }
-
- ret = getservbyname(name, proto);
- if (has_bug)
- ret-&gt;s_port = htons(ret-&gt;s_port);
- }
-
-(the returned struct servent is thread-local and can be modified by the
- caller. It will be over-written on the next call to the function though).
-
-
-Dynamic Linker limitations:
----------------------------
-
-The Android dynamic linker in 1.5 has many important limitations:
-
-- No support for LD_LIBRARY_PATH, LD_PRELOAD, RTLD_LOCAL and many
- other options.
-
-- Static C++ constructors in executables are called twice due to a bug
- in the C library initialization sequence. However, static C++
- constructors in shared libraries are only called once.
-
-- Static destructors are never called at the moment, either at program
- exit, or when dlclose() is called.
-
-- dlerror() reporting is very limited and only provides a few generic
- error messages that make it difficult to know why a dynamic load/link
- operation failed. Most of the time, the culprit is a missing symbol.
-
-- A bug prevents one application shared library from depending on another
- one. For example, if you build both libfoo.so and libbar.so for your
- application, and list libfoo.so as a dependency for libbar.so in
- bar/Android.mk (with LOCAL_SHARED_LIBRARIES := foo), then loading
- libbar.so will always fail, even if you have already loaded libfoo.so
- in your process.
diff --git a/docs/tools/README b/docs/tools/README
deleted file mode 100644
index 9779905d9..000000000
--- a/docs/tools/README
+++ /dev/null
@@ -1,67 +0,0 @@
-This directory contains the following documentation-related tools:
-
-ndk-markdown-substitutions.py:
- A filter that takes Markdown text as input, and produces Markdown
- test as output, but applies a few useful substitution.
-
- Use with --run-checks to run the unit test suite.
-
- For full list of substitutions, see the script, here's a quick summary:
-
- * Links to documentation:
- d/ANDROID-MK -> [ANDROID-MK](ANDROID-MK.html)
-
- To minimize changes to existing documentation, this also detects the
- following in the input text and produces the same output:
-
- ANDROID-MK.html
- docs/ANDROID-MK.html
- $NDK/docs/ANDROID-MK.html
-
- * Links to bug entries:
-
- b/<number> -> [b/<number>](http://b.android.com/<number>)
-
- To minimize changes, also detects and rewrites:
-
- http://b.android.com/<number>
- http://http://code.google.com/p/android/issues/detail?id=<number>
-
- * Links to gerrit patches:
-
- r/<number> -> [r/<number>](https://https://android-review.googlesource.com/#/c/<number>)
-
- To minimize changes, also detects and rewrites:
-
- https://android-review.googlesource.com/#/c/<number>
-
- * Auto-formatting of various things to <code> format, e.g.:
-
- LOCAL_XXX -> `LOCAL_XXX`
- APP_XXX -> `APP_XXX`
- script-name.sh -> `script-name.sh`
- -Option -> `-Option`
- -Option=value -> `-Option=value`
- __ANDROID__ -> `__ANDROID__`
- __cxa_xxxx -> `__cxa_xxxx`
-
- * Automatic linkification:
-
- http://example.com -> <http://example.com>
-
-
-Important note:
- The script does not apply these subtitutions to line that begin with 8
- spaces. This is to avoid modifying what will end up into code blocks in
- the final
-
- In other words, use 8, not 4 spaces to begin code blocks. This will
- also shift them 4 spaces to the right in the HTML output, but this
- is a good thing for readability anyway.
-
-
-Apart from that, the input format of NDK .text file is regular Markdown
-for now. In the future, using the Python Markdown Extensions API might
-result in a completely different script that could allow for more custom
-markup and/or better HTML output, but the current state is pretty good
-and lends itself to CSS-ification.
diff --git a/docs/tools/ndk-markdown-substitutions.py b/docs/tools/ndk-markdown-substitutions.py
deleted file mode 100755
index 4ae3de24b..000000000
--- a/docs/tools/ndk-markdown-substitutions.py
+++ /dev/null
@@ -1,238 +0,0 @@
-#!/usr/bin/env python
-
-# A tiny Python script to perform substitutions in the NDK documentation
-# .text input files before processing them with Markdown.
-#
-
-import re
-import argparse
-import sys
-
-class Filter:
- def __init__(self,pattern,replacement):
- self.pattern = re.compile(pattern)
- self.replacement = replacement
-
- def process(self, line):
- return self.pattern.sub(self.replacement, line)
-
-all_filters = []
-all_filter_tests = []
-
-def add_filter(pattern, replacement):
- global all_filters
- filter = Filter(pattern, replacement)
- all_filters.append(filter)
-
-def add_filter_test(input, expected):
- global all_filter_tests
- all_filter_tests.append((input, expected))
-
-def run_all_tests():
- global all_filter_tests
- count = 0
- failed_tests = []
- for input_string, expected in all_filter_tests:
- string = input_string
- print "Testing: '%s'" % input_string,
- for f in all_filters:
- string = f.process(string)
- if string != expected:
- failed_tests.append((input_string, expected, string))
- print " KO!"
- print " Got : '%s'" % string
- print " Expected: '%s'" % expected
- else:
- print "ok."
- count += 1
-
- return count, failed_tests
-
-# Auto-linkify documentation
-#
-# d/NDK-BUILD
-# -> [NDK-BUILD](NDK-BUILD.html)
-#
-add_filter(r"(^|\s+)d/([^\s.]+)", r"\1[\2](\2.html)")
-
-add_filter_test("d/NDK-BUILD", "[NDK-BUILD](NDK-BUILD.html)")
-add_filter_test("aa d/NDK-BUILD", "aa [NDK-BUILD](NDK-BUILD.html)")
-add_filter_test("ad/NDK-BUILD", "ad/NDK-BUILD")
-add_filter_test("d/NDK-BUILD.", "[NDK-BUILD](NDK-BUILD.html).")
-
-# Auto-linkify documentation
-# NDK-BUILD.html
-# -> [NDK-BUILD](NDK-BUILD.html)
-#
-add_filter(r"(^|\s+)([A-Z0-9-]+)\.html", r"\1[\2](\2.html)")
-add_filter_test("NDK-BUILD.html", "[NDK-BUILD](NDK-BUILD.html)")
-add_filter_test("NDK-BUILD.html.", "[NDK-BUILD](NDK-BUILD.html).")
-add_filter_test("aa NDK-BUILD.html", "aa [NDK-BUILD](NDK-BUILD.html)")
-
-add_filter(r"(^|\s+)(\$NDK/docs/|docs/)([A-Z0-9_-]+)\.html", r"\1[\3](\3.html)")
-add_filter_test("$NDK/docs/ANDROID-MK.html", "[ANDROID-MK](ANDROID-MK.html)")
-add_filter_test("See docs/ANDROID-MK.html.", "See [ANDROID-MK](ANDROID-MK.html).")
-
-# Auto quote script file.
-# make-standalone-toolchain.sh
-# -> `make-standalone-toolchain.sh`
-add_filter(r"(^|\s+)([^\s]+\.sh)", r"\1`\2`")
-add_filter_test("make-standalone-toolchain.sh", "`make-standalone-toolchain.sh`")
-
-# Auto-linkify bug entries:
-#
-# http://b.android.com/<number>
-# or http://code.google.com/p/android/issues/detail?id=<number>
-# -> [b/<number>](http://b.android.com/<number>)
-#
-add_filter(
- r"http://(code\.google\.com/p/android/issues/detail\?id=|b\.android\.com/)([0-9]+)",
- r"[b/\2](http://b.android.com/\2)")
-add_filter_test(r"See http://b.android.com/12345", r"See [b/12345](http://b.android.com/12345)")
-add_filter_test(r"See http://code.google.com/p/android/issues/detail?id=12345", r"See [b/12345](http://b.android.com/12345)")
-
-# Auto-linkify bug shortcuts like b/1000
-#
-# b/<number> after space or start of line
-# -> [b/<number>](http://b.android.com/<number>)
-add_filter(
- r"(^|\s+)(b/([0-9]+))",
- r"\1[\2](http://b.android.com/\3)")
-add_filter_test(r"b/12345", r"[b/12345](http://b.android.com/12345)")
-add_filter_test(r"See b/12345.", r"See [b/12345](http://b.android.com/12345).")
-add_filter_test(r"[b/12345](....)", r"[b/12345](....)")
-
-# Auto-linkify patch entries.
-# https://android-review.googlesource.com/#/c/<number>
-# -> [r/<number>](https://android-review.googlesource.com/#/c/<number>)
-add_filter(
- r"(^|\s+)(https://android-review\.googlesource\.com/\#/c/([0-9]+))",
- r"\1[r/\3](\2)")
-add_filter_test(r"https://android-review.googlesource.com/#/c/12345", r"[r/12345](https://android-review.googlesource.com/#/c/12345)")
-
-# Auto-linkify anything
-# http://www.example.com
-# -> <http://www.example.com>
-add_filter(r"(^|\s+)((ssh|http|https|ftp)://[^\s]+)", r"\1<\2>")
-add_filter_test("http://example.com", "<http://example.com>")
-
-
-# r/<number> not followed by (...)
-# -> [r/<number>](https://android-review.googlesource.com/#/c/<number>)
-add_filter(
- r"(^|\s+)(r/([0-9]+))",
- r"\1[\2](https://android-review.googlesource.com/#/c/\3)")
-add_filter_test(
- r"r/12345",
- r"[r/12345](https://android-review.googlesource.com/#/c/12345)")
-
-# Auto format __ANDROID__, __ARM_ARCH*__, etc..
-# __XXX__
-# -> `__XXX__`
-add_filter(r"(__[A-Z][^\s]*)", r"`\1`")
-add_filter_test(r"__ANDROID__", r"`__ANDROID__`")
-add_filter_test(r"__ARM_ARCH_5*__", r"`__ARM_ARCH_5*__`")
-
-# Auto-format compiler/linker flags:
-# -O2
-# -> `-O2`
-add_filter(r"(^|\s+)(\-[\w][^\s]+)", r"\1`\2`")
-add_filter_test(r"-O2", r"`-O2`")
-add_filter_test(r" -fPIC", r" `-fPIC`")
-add_filter_test(r" -mfpu=neon xxx", r" `-mfpu=neon` xxx")
-add_filter_test(r" -mfpu=vfpd3-d16", r" `-mfpu=vfpd3-d16`")
-
-# Auto-format LOCAL_XXX, APP_XXX and NDK_XXX variables
-# as well as assignments.
-add_filter(r"(^|\s+)([A-Z_0-9]+=[^\s]+)", r"\1`\2`")
-add_filter_test("Use NDK_DEBUG=release", "Use `NDK_DEBUG=release`")
-add_filter_test("NDK_HOST_32BIT=1", "`NDK_HOST_32BIT=1`")
-
-add_filter(r"(^|\s+)((APP_|NDK_|LOCAL_)[A-Z0-9_]*)", r"\1`\2`")
-add_filter_test("LOCAL_MODULE", "`LOCAL_MODULE`")
-
-# Auto-format __cxa_xxxxx and other prefixes.
-#
-add_filter(r"(^|\s+)((__cxa_|__dso_|__aeabi_|__atomic_|__sync_)[A-Za-z0-9_]+)", r"\1`\2`")
-add_filter_test("__cxa_begin_cleanup", "`__cxa_begin_cleanup`")
-add_filter_test("__dso_handle", "`__dso_handle`")
-add_filter_test("__aeabi_idiv2", "`__aeabi_idiv2`")
-add_filter_test("See __cxa_cleanup.", "See `__cxa_cleanup`.")
-
-re_blockquote = re.compile(r"^ ")
-
-def process(input_file, output_file):
- # Process lines, we need to take care or _not_ processing
- # block-quoted lines. For our needs, these begin with 8 spaces.
- #
- in_list = False
- margins = [ 0 ]
- margin_index = 0
- for line in input_file:
- do_process = True
- if len(line.strip()):
- if not re_blockquote.match(line):
- for f in all_filters:
- line = f.process(line)
- output_file.write(line)
-
-def main():
- parser = argparse.ArgumentParser(description='''
- Perform .text substitution before Markdown processing.''')
-
- parser.add_argument( '-o', '--output',
- help="Specify output file, stdout otherwise.",
- dest='output',
- default=None )
-
- parser.add_argument( '--run-checks',
- help="Run internal unit tests.",
- action='store_true',
- dest='run_checks',
- default=False )
-
- parser.add_argument( 'input_file',
- help="Input file, stdin if not specified.",
- nargs="?",
- default=None )
-
- args = parser.parse_args()
-
- if args.run_checks:
- count, failed_tests = run_all_tests()
- if failed_tests:
- sys.stderr.write("ERROR: %d tests out of %d failed:\n" % (len(failed_tests), count))
- for failed in failed_tests:
- sys.stderr.write(" '%s' -> '%s' (expected '%s')\n" % (failed[0], failed[2], failed[1]))
- sys.exit(1)
- else:
- print "%d tests passed. Congratulations!" % count
- sys.exit(0)
-
- if args.input_file:
- try:
- in_file = open(args.input_file, "rt")
- except:
- sys.stderr.write("Error: Can't read input file: %s: %s\n" % args.input_file, repr(e))
- sys.exit(1)
- else:
- in_file = sys.stdin
-
- if args.output:
- try:
- out_file = open(args.output, "wt")
- except:
- sys.stderr.write("Error: Can't open output file: %s: %s\n" % args.output, repr(e))
- sys.exit(1)
- else:
- out_file = sys.stdout
-
- process(in_file, out_file)
-
- out_file.close()
- in_file.close()
- sys.exit(0)
-
-if __name__ == '__main__':
- main()
-